You are on page 1of 134

UNIVERSIDAD NACIONAL DE INGENIERIA

FACULTAD DE INGENIERIA DE PETROLEO, GAS NATURAL Y


PETROQUIMICA

“MANUAL DE ALGORITMOS Y
LENGUAJE DE PROGRAMACIÓN”

 Docente: MSC. Eyzaguirre Gorvenia, Luz


 Editor: Muñoz Gaona, Gustavo Adolfo
 Revisión: 03

2015
CONTENIDO

1
1. INTRODUCCIÓN (5)

2. OBJETIVO (5)

3. DEFINICIÓN DE UN ALGORITMO (5)

4. CONCEPTO BÁSICO DE UN ALGORITMO (6)

5. REPRESENTACIÓN DE UN ALGORITMO (6)


5.1. Lenguaje natural (6)
5.2. Diagramas de flujo (6)
5.3. Pseudocodigo/Pseudolenguage (PSeInt) (7)

6. LENGUAJE DE PROGRAMACIÓN (8)


6.1. Lenguaje de maquina (8)
6.2. Lenguaje de ensamblador (8)
6.3. Lenguaje de alto nivel (8)

7. PSeInt (9)
7.1. Historia de PSeInt (9)
7.2. ¿Qué es PSeInt? (9)
7.3. Características (11)
7.4. Funcionalidades (11)
7.5. Forma general de un algoritmo en pseudocodigo (12)
7.6. Tipos de variable (12)
7.6.1.Simples (12)
7.6.2.Constantes (13)
7.6.3.Arreglos (13)
7.6.4.Definiciones de variables (13)
7.7. Expresiones (15)
7.7.1.Operadores (15)
7.7.2.Funciones (16)
7.7.3.Expresiones coloquiales (16)
7.8. Procesos (17)
7.9. Estructuras de control (18)
7.9.1.De asignación (18)
7.9.2.Condicional o selectivas (18)
7.9.3.Repetitiva (20)
7.10. Sentencias- resumen (22)
7.11. Funciones/Subprocesos (23)
7.12. Notaciones (23)
7.13. Personalización del lenguaje (24)

8. EJERCICIOS RESUELTOS EN PSeInt (27)


8.1. Estructuras asignativas y selectivas (27)

2
8.2. Estructuras repetitivas (36)
8.3. Arreglos: Listas o Vectores y matrices o tablas (47)

9. BORLAND C++ (56)


9.1. Programación en Borland C++ (56)
9.2. Etapas para la elaboración de un programa (56)
9.2.1.Análisis de un problema (56)
9.2.2.Diseño de un algoritmo (57)
9.2.3.Codificación del programa (57)
9.2.4.Compilación y ejecución del programa (57)
9.2.5.Verificación y mantenimiento del programa (58)
9.3. Estructura del programa en borland C++ (58)
9.3.1.Directivas definidas (59)
9.3.2.La función principal Main () (59)
9.3.3.La sentencia (59)
9.4. Tipos de datos en C++ (61)
9.4.1.Variable (62)
9.4.2.Constantes (63)
9.5. Tipos de operadores (63)
9.5.1.Operadores aritméticos (63)
9.5.2.Operadores de relación (65)
9.5.3.Operadores lógicos (65)
9.5.4.Operadores de crecimiento y decrecimiento (65)
9.6. Entradas y salidas básicas (66)
9.6.1.Entradas básicas (66)
9.6.2.Salidas básicas (66)
9.7. Secuencia de escape (67)
9.7.1.Manipulación del formato de salida (68)
9.7.2.La función goto(x,y) (69)
9.8. Sentencia de asignación (69)
9.8.1.Variable de asignación (70)
9.9. Funciones comunes de C++ (70)
9.10. Procesos de control (71)
9.10.1. Procesos secuenciales (71)
9.10.2. Procesos selectivos (72)
9.10.3. Procesos repetitivos (76)
9.11. Estructura de datos - Arreglos (79)
9.11.1. Introducción a la estructura de datos (79)
9.11.2. Arreglos unidimensionales: vector o lista (79)
9.11.3. Arreglos bidimensionales: matriz o tabla (86)
9.12. Funciones y procedimientos (89)
9.12.1. Introducción (89)
9.12.2. Funciones predefinidas (90)
9.12.3. Funciones definidas por el usuario (91)
9.12.4. Definición de una función (93)

3
10. EJERCIOCIOS RESUELTOS EN BORLAND C++ (99)
10.1. Estructuras asignativas y selectivas (99)
10.2. Estructuras repetitivas (114)
10.3. Arreglos (Vectores o listas y matrices o tablas) (123)

1. INTRODUCCION

4
Este documento es una recopilación de las diferentes presentaciones de los alumnos del curso
Algoritmos y Lenguaje de Programación del ciclo 2014-II, con el propósito de facilitar su
aprendizaje.

2. OBJETIVO

El alumno será capaz de utilizar conceptos de algoritmos para diseñar sus propios programas y
relacionarlos con sus respectivas carreras.

3. DEFINICION DE UN ALGORITMO
 Un algoritmo es una lista definida y ordenada de operaciones o acciones. para poder
encontrar la solución a un problema.
 Está compuesto por operaciones, métodos y variables
 Entre las operaciones se conocen las matemáticas: +, -, /, *.
 Los métodos son las funciones disponibles: Mostrar en pantalla.
 Los algoritmos son independientes de los lenguajes de programación. En cada
problema el algoritmo puede escribirse y luego ejecutarse en un diferente lenguaje de
programación.
 Las variables pueden ser de diversos tipos:

Tipo de dato (Variables) Representa


Num (Variable entera) Cualquier número.
Ejemplo: -1, 2, 3, etc.
BOOL (Variable lógica) De “Booleano”, posee solo los
valores VERDADERO o FALSO.
Char (Variable tipo carácter) Representa un carácter.
Ejemplo: “Hola”, “Insertar”
Arreglo Lista estática de elementos. Se debe
señalar el tipo de dato y la cantidad
de elementos que almacena.
String (Variable tipo cadena) Secuencia de Caracteres.
Ejemplo: a, b, $, etc.
Nada Ausencia de parámetros (para la
Entrada y/o para la salida).

“Para la solución de un problema exige el diseño de un algoritmo que resuelva el problema


propuesto y se dispone de 3 pasos: operaciones, métodos y variables.”

5
4. CONCEPTOS BASICOS DE UN ALGORITMO
 Finito: La ejecución de un algoritmo acaba en un tiempo finito; unprocedimiento
que falla en la propiedad de la finitud es simplemente un procedimiento de
cálculo.
 Preciso: Cada instrucción de un algoritmo debe ser precisa; debe teneren
cuenta un rigor y no la ambigüedad. Cada frase tiene un significado concreto.
 Posee entradas: La entrada se toma como un conjunto especifico devalores
que inicializan el algoritmo.
 Posee salidas: Todo algoritmo posee una o más salidas; la salida es
latransformación de la entrada.
 Efectivo: Un algoritmo es efectivo cuando las operaciones se efectúande un
modo exacto y en un tiempo finito aun usando métodos manuales.

+
5. REPRESENTACIONES DE UN ALGORITMO

5.1. Lenguaje normal


 Lenguaje que tiene sonidos adscritos a cada símbolo, creado por un grupo
humano con el fin de comunicarse entre ellos. Por ejemplo: quechua,
alemán.
 Una de sus características es que el sentido de las palabras puede ser
diverso: polisemia.
 Es ambiguo y extenso.

5.2. Diagramas de flujo

Son representaciones gráficas de algoritmos, usan símbolos conectados con


flechas para indicar la secuencia de instrucciones. Los símbolos han sido
normalizados por el Instituto Norteamericano de Normalización (ANSI) y regidos
por la organización Internacional de normalizacion (ISO).

Son usados para representar algoritmos y por su facilidad de lectura son usados
como introducción a los algoritmos, descripción de un lenguaje y descripción de
procesos a personas ajenas a la computación.

5.3. Pseudolenguaje/Pseudocodigo (PSeInt)

El prefijo pseudo significa falso; es decir, es falso lenguaje. Es una serie de normas
léxicas y gramaticales parecidas a la mayoría de los lenguajes de programación,
pero sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje coloquial.
El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje
común, instrucciones de programación y palabras clave que definen las estructuras
básicas.

6
Símbolos gráficos más utilizados para dibujar algoritmos por medio de diagramas
de flujo (Ordinograma)

6. LENGUAJES DE PROGRAMACION

Una vez que ya tenemos diseñado nuestro algoritmo, el siguiente paso es codificar ese
algoritmo que seguramente está en un lenguaje grafico o en un lenguaje natural a un lenguaje
que una maquina pueda ejecutar, es por esto que vamos a usar este conjunto de instrucciones
que una maquina pueda entender, y a este conjunto de instrucciones le llamamos LENGUAJE

7
DE PROGRAMACIÓN. Es un lenguaje formal creado para comunicar algoritmos a las máquinas,
entre ellas la computadora.

Tipos de lenguajes de programación:

 Lenguaje de primera generación: Consiste en hileras de números: 0 y 1, su sintaxis es


definida por el diseño del hardware.
 Lenguaje de segunda generación: Son simples procesadores de palabras, para crear
archivos fuente. Los archivos fuente contienen instrucciones para que la computadora
las ejecute.
 Lenguaje de tercera generación: Proporcionan estructuras explícitas para diseñar
procesos y ciclos. Ej.: C++, Visual Basic, Java.
 Lenguaje de cuarta generación (4GL): Se pueden usar para desarrollar prototipos de
una clase de aplicación específica rápidamente. Ejemplo: Visual Basic.
 Lenguaje de quinta generación: Tienen por finalidad pensar y anticipar las necesidades
de los usuarios, en lugar de solo ejecutar un conjunto de instrucciones.

6.1. Lenguaje de maquina


Ejemplo:

Instrucción Operados
0011 0000 0001
0101 0001 0011

6.2. Lenguaje de ensamblador


Ejemplo:

Instrucción Operandos
Add [0] [1]
Mul [1] [3]

6.3. Lenguaje de alto nivel


Ejemplo: Operación = (a+b)*c

7. PSeInt

7.1. Historia de PSeInt


 Teniendo en cuenta que el uso de lenguaje ANSI/ISO C++ para una materia inicial
de la programación presenta notorias dificultades para estudiantes inexpertos que
deben aprender varios conceptos relativos al diseño de algoritmos y

8
paralelamente lidiar con cuestiones de implementación de las soluciones
propuestas relativas a un lenguaje de programación: sintaxis, compilación,
mensajes de errores en inglés, depuración, etc.; se propuso la siguiente solución:
diseñar un pseudocódigo en español, con reglas sintácticas sencillas y básicas, que
permitiera concentrar al alumno en la lógica para la resolución de problemas
mediante el diseño y la construcción de algoritmos y facilitara el aprendizaje y uso
posterior de un lenguaje de alto nivel.
 La versión original, tenía cientos de errores latentes, sólo
corría bajo Windows y se limitaba a interpretar el algoritmo
o marcar sus errores de sintaxis.
 Finalmente, en octubre de 2006, se presentó el trabajo
“Desarrollo de un Software Intérprete de Pseudocódigo
para la Enseñanza de Fundamentos de Programación” en el
1er Encuentro de Jóvenes Investigadores de Universidades
de Santa Fe.

7.2. Descripción

Es una herramienta para aprender la lógica de programación, está pensado para asistir a
los estudiantes que se inician en la construcción de programas o algoritmos
computacionales mediante la utilización de un simple y limitado pseudo-lenguaje intuitivo
y en español, permite comenzar a comprender conceptos básicos y fundamentales de un
algoritmo computacional.

Nacido originalmente como un proyecto final para el curso de Programación I de la carrera


de Ingeniería Informática de la Facultad de Ingeniería y Ciencias Hídricas de la Universidad
Nacional del Litoral, es en realidad un software que interpreta pseudocódigo basado en
contenidos de la cátedra de Fundamentos de Programación de dicha carrera.

Sin duda alguna es una excelente herramienta para aquellos que se inician en este mundo
de la programación, cuya interfaz gráfica permite crear, almacenar, ejecutar y corregir
fácilmente programas en Pseudocódigo.

La interfaz y área de trabajo:

9
Barra de herramientas

Icono Descripción Icono Descripción


Abre un nuevo Corregir indentado.
documento.
Busca un fichero (archivo). Buscar.

Guardar y guardar como. Ejecutar el algoritmo.

Deshacer y Rehacer Ejecutar paso a paso.


respectivamente.
Cortar. Dibujar diagrama de
flujo.
Copiar y pegar. Ayuda/contiene algunos
ejemplos

7.3. Características

10
 Presenta herramientas de edición para escribir algoritmos en pseudocódigo en
español.
 Autocompletado.
 Ayudas Emergentes.
 Plantillas de Comandos.
 Coloreado de Sintaxis.
 Indentado inteligente, mover un bloque de texto hacia la derecha insertando
espacios o tabuladores.
 Permite generar y editar el diagrama de flujo del algoritmo.
 Permite la edición simultánea de múltiples algoritmos.
 La sintaxis del pseudolenguaje utilizado es configurable.
 Ofrece perfiles de configuración predefinidos para numerosas instituciones.

7.4. Funcionalidades
 Puede interpretar (ejecutar) los algoritmos escritos.
 Permite ejecutar el algoritmo paso a paso controlando la velocidad e
inspeccionando variables y expresiones.
 Puede confeccionar automáticamente una tabla de prueba de escritorio.
 Determina y marca claramente errores de sintaxis (mientras escribe) y en tiempo
de ejecución.
 Permite convertir el algoritmo de pseudocódigo a código C++ (Es independiente
del lenguaje de programación que se vaya a utilizar).
 Ofrece un sistema de ayuda integrado acerca del pseudocódigo y el uso del
programa.
 Incluye un conjunto de ejemplos de diferentes niveles de dificultad.
 Es multiplataforma (probado en Microsoft Windows 2000, XP y vista, GNU/Linux y
Mac OS X).
 Es una herramienta totalmente libre y gratuita.
 La sencillez del lenguaje Pseudocódigo lo hacen ideal para la enseñanza de la
programación.
 Permite escribir programas con instrucciones condicionales (Si-Entonces-Sino,
Según) y ciclos (Mientras, Hasta Que, Para), y también usar valores numéricos
(números decimales), lógicos, caracteres y arreglos.
 También provee funciones de entrada/salida y algunas funciones matemáticas.

11
7.5. Forma General de un algoritmo en Pseudocodigo

Todo algoritmo en Pseudocódigo de PSeInt tiene la siguiente estructura general:

 Cabecera: es la parte del


algoritmo que posee el
nombre de éste.
 Declaraciones: son las
variables y constantes
que utilizará el algoritmo
para resolver el
problema.
 Cuerpo: son los conjuntos de instrucciones o acciones que están entre el Inicio y el
Fin.

Comienza con la palabra clave Proceso seguida del nombre del programa, luego le sigue
una secuencia de acciones o instrucciones y finaliza con la palabra FinProceso. Una
secuencia de instrucciones es una lista de una o más instrucciones, cada una terminada en
punto y coma.

Las acciones incluyen operaciones de entrada y salida, asignaciones de variables,


instrucciones condicionales y ciclos.

Ejemplo:

Operaciones de entrada

Acción
Operación de salida

7.6. Tipos de variable

7.6.1.Simple

 Numérica

Números, tanto enteros como reales. Para separar decimales se utiliza el punto.
Ejemplos: 12; 2.3; -5.8; 3.14

 Lógico

Sólo puede tomar dos valores: VERDADERO o FALSO.

 Carácter

12
Caracteres o cadenas de caracteres encerrados entre comillas (pueden ser dobles
o simples). Ejemplos 'hola' "hola mundo" '123' 'FALSO' 'etc.'

“Los tipos de datos simples se determinan automáticamente cuando se crean las


variables. Las dos acciones que pueden crear una variable son la lectura (LEER) y la
asignación (<-). Por ejemplo, la asignación "A<-0;" está indicando implícitamente que
la variable A será una variable numérica.”

Opcionalmente, se puede declarar una variable numérica como entera con la


instrucción DEFINIR. En este caso, todo valor no entero que se lea o asigne a la misma
será truncado

7.6.2.Constantes

Las constantes representan a identificadores que no cambian su valor en el desarrollo


de un programa.

Ejemplo:

Constante

7.6.3.Arreglos

Los arreglos (arrays) son una estructura de datos que permite el almacenamiento
estático (tamaño definido) de una serie de elementos del mismo tipo (carácter,
numérico, Booleano) ordenados en fila. Su representación matemática es la de un
vector de 1 dimensión, por lo que podemos llegar a representar una matriz con
areeglos multidimensionales. Cada arreglo posee un índice (empieza en 0) que indica
la posición en la que está almacenado un elemento en el arreglo, esto se debe a que el
arreglo está segmentado.

13
Existen distintos tipos de arreglos dependiendo del tipo de dato que contengan.

 Arreglo numérico:
Ejemplo:

 Arreglo de carácter
Ejemplo:

Nota

En Pseint la sentencia para poder “definir” un arreglo es la siguiente:


Dimension< identificador> [tamaño]

Para poder “acceder” a un elemento del arreglo se utiliza el siguiente comando:


<Identificador> [posición elemento]

OBSERVACION: se empieza en 1 la posición en PSeInt.

De los ejemplos de arreglo numérico y de carácter, anteriores tenemos:

Dimension Lista [9]; donde podemos reconocer: Identificador = lista; y Tamaño = 9.

Accediendo a sus elementos de los ejemplos

Arreglo numérico Arreglo de carácter


Lista [1] = 3 Lista [1] = b
Lista [2] = 5 Lista [2] = c
Lista [3] = 7 Lista [3] = D

14
7.7. Expresiones

7.7.1.Operaciones

Este pseudolenguaje (pseudocodigo) dispone de un conjunto básico de operadores


que pueden ser utilizados para la construcción de expresiones más o menos
complejas.

La jerarquía de los operadores matemáticos es igual a la del álgebra, aunque puede


alterarse mediante el uso de paréntesis.

Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido:

15
7.7.2.Funciones

Las funciones en el pseudocódigo se utilizan de forma similar a otros lenguajes. Se


coloca su nombre seguido de los argumentos para la misma encerrados entre
paréntesis (por ejemplo TRUNC(x). Se pueden utilizar dentro de cualquier expresión, y
cuando se evalúe la misma, se reemplazará por el resultado correspondiente.
Actualmente, todas la funciones disponibles son matemáticas (es decir que devolverán
un resultado de tipo numérico) y reciben un sólo parámetro de tipo numérico. A
continuación se listan las funciones integradas disponibles:

7.7.3.Expresiones coloquiales

Si se encuentra habilitado el uso de “Condicionales en


lenguaje coloquial” en las opciones del lenguaje, se
pueden introducir algunas expresiones adicionales para
formar condiciones (Expresiones lógicas). La siguiente
tabla muestra ejemplos de estas, suponiendo que X e Y
son variables, junto con su equivalente en el lenguaje
formal.

La jerarquía de estas expresiones es mayor que la de los


operadores aritméticos. Por ejemplo, “X+3 ES IGUAL A
Y*2” equivale a “(X+3)= (Y*2)”.

Además, en todos los casos se puede obtener la


condición opuesta reemplazando “ES” por “NO ES”.
Ejemplo, “X NO ES IGUAL A Y” equivale a “NO (X=Y)”.

16
7.8. Procesos

 Leer

Nos permite recibir valores por teclado y guardarlos en variables.

Ejemplos:

a) Leer a; recibe el valor y lo almacena en a


b) Leer a, b, c; recibe 3 valores y los guarda en la variable que corresponda.

Analicemos lo siguiente:

Pueden incluirse una o más variables, por lo tanto el comando leerá uno o más
valores.

Esta instrucción toma N valores desde el teclado y los asigna a las N variables
mencionadas.

Si una variable donde se debe guardar el valor leído no existe, se crea durante la
lectura. Si la variable existe se pierde su valor anterior ya que tomará el valor nuevo,
razón por la cual se dice que la lectura es “destructiva” (destruye el valor que tenía
previamente la variable).

 Escribir

Esta instrucción informa al ambiente (en este caso


escribiendo en pantalla) los valores obtenidos de
evaluar N expresiones.

Dado que puede incluir una o más expresiones, mostrará uno o más valores. Si hay
más de una expresión, se escriben a continuación de la otra sin separación, por lo que
el algoritmo debe explicar los espacios necesarios para diferenciar dos resultados si así
lo requiere.

Si en algún punto de la línea se encuentran las palabras clave Sin Saltar o Sin Bajar los
valores se muestran en la pantalla, pero no se avanza a la línea siguiente, de modo que
la próxima acción de lectura o escritura continuará en la misma línea. En caso
contrario, se añade un salto de línea luego de las expresiones mostradas.

17
Ejemplos:

a) Escribir “hola mundo”;


b) Escribir “Introduzca el primer dato”;
c) Escribir “El valor introducido”, n,” es par”;

7.9. Sentencias

7.9.1.De asignación

Nos permite guardar un valor en una variable.

Ejemplo: c <- 2 // por lo tanto c=2.

7.9.2.Selectiva

 Selectiva simple y doble

Es una estructura de control que depende del valor de una condición lógica. Es
decir se debe evaluar una condición y si la cumple, deberá ejecutar todas las
acciones después del Entonces y si no las cumple debe ejecutar todas las acciones
después del Sino. La condición debe ser una expresión lógica, que al ser evaluada
retorna Verdadero o Falso.

La cláusula Entonces debe aparecer siempre, pero la cláusula Sino puede no estar.
En este caso, si la condición es falsa no se ejecuta ninguna instrucción y la
ejecución del programa continúa con la instrucción siguiente.

Representación:

Diagrama de flujo:

18
 Selectiva múltiple

La secuencia de instrucciones ejecutada por una instrucción Segun


depende del valor de una variable numérica.

Esta instrucción permite ejecutar opcionalmente varias acciones posibles,


dependiendo del valor almacenado en una variable de tipo numérico. Al
ejecutarse, se evalúa el contenido de la variable y se ejecuta la secuencia
de instrucciones asociada con dicho valor.

Cada opción está formada por uno o más números separados por comas,
dos puntos y una secuencia de instrucciones. Si una opción incluye varios
números, la secuencia de instrucciones asociada se debe ejecutar cuando
el valor de la variable es uno de esos números.

Opcionalmente, se puede agregar una opción final, denominada De Otro


Modo, cuya secuencia de instrucciones asociada se ejecutará sólo si el
valor almacenado en la variable no coincide con ninguna de las opciones
anteriores.

Representación:

Diagrama de flujo:

19
7.9.3. Selectiva repetitiva

 Mientras

Permite ejecutar una secuencia de instrucciones repetidamente hasta que


la condición no se cumpla.

Representación:

Diagrama de flujo:

 Para

Ejecuta una sentencia de instrucciones un número de veces. Al ingresar al bloque


la variable <variable> recibe el valor <inicial> y se ejecuta la secuencia de
instrucciones que forma el cuerpo del ciclo. Luego se incrementa la variable
<variable> en <paso> unidades y se evalúa si el valor almacenado en <variable>
superó el valor <final>. Si esto es falso se repite hasta que <variable> supere a
<final>. Si se omite la cláusula Con Paso<paso>, la variable <variable> se
incrementará en 1.

Representación:

20
Diagrama de flujo:

 Repetir

Esta estructura se ejecuta hasta que se cumpla una condición determinada que se
comprueba hasta el final del bucle. Se ejecuta al menos una vez. El bucle

Repetir – Hasta que se repite mientras el valor de la expresión booleana de la


condición sea falso, justo la opuesta de la sentencia Mientras.

Representación:

Diagrama de flujo:

21
7.10. Sentencias – Resumen

Sentencia Representación en PSeInt Representación en diagrama de


flujo
Sentencia de
selección
Selectiva
Simple

Doble

Múltiple

Repetitiva
Mientras

Para

Repetir

22
7.11. Funciones / Subprocesos

Si el perfil de lenguaje seleccionado lo permite (ver Opciones del Pseudocódigo), se


pueden declarar nuevas funciones o subprocesos en un algoritmo en Pseudocódigo. La
sintaxis para ello es la siguiente:

Comienza con la palabra clave SubProceso (o Función, son equivalentes) seguida de la


variable de retorno, el signo de asignación, el nombre del subproceso, y finalmente, la lista
de argumentos entre paréntesis. Existen variantes para esta estructura.

Si la función no retorna ningún valor, pueden omitirse el identificador variable_de_retorno


y el signo de asignación, es decir, colocar directamente el nombre y los argumentos a
continuación de la palabra clave Subproceso. Si el subproceso no recibe ningún valor
pueden colocarse los paréntesis vacíos u omitirse, finalizando la primer línea con el
nombre del subproceso. Las reglas para los nombres de subprocesos, variables de retorno
y argumentos son las mismas que para cualquier identificador en pseudocódigo.

Además, opcionalmente pueden agregarse las palabras claves Por Valor o Por Referencia
para indicar el tipo de pasaje en cada argumento. Si no se indica, los arreglos se pasan por
referencia, las demás expresiones por valor. El pasaje por referencia implica que si la
función modifica el argumento, se modificará en realidad la variable que se utilizó en la
llamada, mientras que el pasaje por valor implica que la función opera con una copia de la
variable (o el resultado de la expresión) que se utilizó en la llamada, por lo que las
modificaciones que aplique la función no se verán reflejadas fuera de la misma.

Para invocar a la función se debe utilizar su nombre y entre paréntesis los parámetros, que
podrán ser expresiones sólo si el tipo de pasaje es por referencia. Una llamada puede ser
en sí una instrucción, pero si la función retorna algún valor, también puede utilizarse como
operando dentro de una expresión.

7.12. Notaciones
 Se pueden introducir comentarios luego de una instrucción, o en líneas
separadas, mediante el uso de la doble barra (//). Todo lo que precede a //,
hasta el fin de la línea, no será tomado en cuenta al interpretar el algoritmo.
 Note que no puede haber instrucciones fuera del programa, aunque si
comentarios.

23
 Las estructuras no secuenciales pueden anidarse. Es decir, pueden contener
otras adentro, pero la estructura contenida debe comenzar y finalizar dentro
de la contenedora.
 Los identificadores, o nombres de variables, deben constar sólo de letras y
números, comenzando siempre con una letra.
 Las constantes de tipo carácter se escriben entre comillas (“).
 En las constantes numéricas, el punto (.) es el separador decimal.
 Las constantes lógicas son: Verdadero y Falso.

7.13. Personalización del lenguaje

Hay ciertas características del pseudocódigo que pueden personalizarse para adaptarse a
las preferencias de cada docente.

Por defecto, PSeInt utiliza la configuración más flexible y natural posible, pero ofrece una
lista de configuraciones predefinidas denominadas "perfiles". Se puede acceder a la lista
de perfiles desde el ítem "Opciones del Lenguaje..." del menú "Configurar".

Si ninguno de los perfiles resulta adecuado se puede utilizar el botón "Personalizar"


ubicado debajo de la lista de perfiles para definir una por una las siguientes posibles
personalizaciones:

 No permitir utilizar variables o posiciones de arreglos sin inicializar: Si esta


opción está deshabilitada se puede utilizar variables sin inicializar (que nunca
fueron leídas o asignadas en expresiones o para mostrar en pantalla. En este caso
asumen el valor por defecto 0, "", o FALSO según el tipo que corresponda. Si esta
opción está seleccionada escribir o evaluar una expresión que involucra una
variable sin inicializar genera un error en tiempo de ejecución.

 Obligar a definir los tipos de variables: Si esta opción está deshabilitada no se


puede utilizar una variable sin previamente definir su tipo. Para esto se debe
utilizar la palabra clave DEFINIR.

Ejemplo: "DEFINIR X COMO REAL".

Los tipos posibles son: ENTERO, NUMERICO/REAL, LOGICO, CARACTER/TEXTO.

 Controlar el uso de; al final de sentencias secuenciales: Siesta opción está


activada obliga a colocar punto y coma (;) al final de las instrucciones secuenciales,
si está desactivada el uso del punto y coma es opcional.

 Permitir concatenar variables de texto con el operador +: Siesta opción esta


activada se puede concatenar el contenido de dos variables de tipo carácter con el
operador +. Por ejemplo: NombreCompleto &- Nombre+" "+Apellido;

24
 Habilitar funciones para el manejo de cadenas: Esta opción habilita el uso de las
funciones Longitud, Subcadena, Mayúsculas, Minúsculas y Concatenar, que operan
sobre cadenas de caracteres. Vea funciones para una mejor descripción de las
mismas.

 Permitir las palabras Y, O, NO y MOD para los operadores &, |, ~ y %: Con esta
opción habilitada PSeInt acepta las palabras clave Y, O, NO, y MOD como
sinónimos de los operadores &, |, ~ y % respectivamente. Notar que en este caso
estas palabras serán palabras reservadas y no se podrán utilizar como nombres de
variables.

 Utilizar arreglos en base 0: Si esta opción esta activada, elprimer elemento de un


arreglo de N elementos será el 0 y el último el N-1, mientras que en caso contrario
el primero será el 1 y el último el N

 Permitir utilizar variables para dimensionar arreglos: Si esta opción está


seleccionada se puede utilizar una variable o una expresión que involucre variables
para dimensionar un arreglo (por ejemplo, se puede pedir al usuario del programa
el tamaño leyendo un número y utilizarlo luego para crear el arreglo). Este suele
ser el caso de los lenguajes interpretados, mientras que los lenguajes compilados
suelen exigir que el tamaño de los arreglos estáticos sea una constante (por
ejemplo, C y C++).

 Permitir asignar con el signo igual (=): Esta opción habilita laasignación con el
signo igual (Ejemplo: x=0;). En muchos casos esta sintaxis de asignación no se
permite, ya que en muchos lenguajes no se utiliza el mismo operador para asignar
y comparar, como sucede al activar esta opción. En cualquier caso, las otras dos
sintaxis de asignación (con <- y con :=) siguen siendo válidas.

 Permitir definir funciones/subprocesos: Esta opción habilita el uso de las palabras


claves SubProceso y Función (ambas completamente equivalentes) para permitir
definir nuevas funciones en pseudocódigo.

 Utilizar sintaxis flexible: Esta opción habilita variaciones opcionales en la sintaxis:


omitir la palabra HACER en un bucle MIENTRAS o PARA, utilizar la palabra DESDE
para indicar el valor de inicio de un ciclo PARA, separar la expresiones/variables en
una lectura/escritura con espacios en lugar de comas, agregar la palabra OPCION,
CASO o SI ES antes de un caso en un SEGUN, separar los valores para un mismo
caso en un según con la palabra O, utilizar la estructura REPETIR-MIENTRAS QUE
como variante de REPETIR-HASTA QUE, etc. Además, permite utilizar acentos y
eñes en los nombres de variables. Muchas de las variaciones de la sintaxis resultan
en construcciones más naturales en un verdadero pseudocódigo, pero no son
posibles o son incompletas en un lenguaje de programación real.

25
 Permitir condiciones en lenguaje coloquial: Esta opción permite expresar las
condiciones en un lenguaje más coloquial con construcciones como "X ES PAR", "X
NO ES MULTIPLO DE 5", "X ES IGUAL A Y", "X ES ENTERO", etc. Esta opción activa
además el uso de palabras clave para reemplazar operadores.

 Usar diagramas de Nassi-Schneiderman: Si esta opción estádeshabilitada el editor


de diagramas flujo graficará este tipo de diagramas en lugar de los diagramas de
flujo clásicos utilizados originalmente por PSeInt. Esta opción no modifica el
lenguaje, por lo que también se puede activar/desactivar directamente desde el
menú Configurar mediante el ítem Usar diagramas de Nassi-Schneiderman, de
forma que el usuario pueda alternar fácilmente entre uno y otro tipo de diagrama
si lo desea.

26
8. Ejercicios resueltos en PSeInt

8.1. Estructuras asignativas y selectivas

8.1.1. Escribir un algoritmo que permita leer tres valores y almacenarlos en las
variables a, b y c. El algoritmo debe determinar cuál es el mayor y menor
número, los tres datos ingresados deben ser diferentes y enviar un
mensaje si los datos son iguales.
Solución:

27
8.1.2.Evaluar las siguientes expresiones, asumiendo los valores iniciales y
declaraciones respectivas: dato <- 3, k <- 16, m <- 4
a) 13/3+m<- K
b) 2*3*2 – dato*3
c) k/5*2 + m /3
d) ((9+3)*5) / m mod 7 +1

Solución:

8.1.3.Escribir un algoritmo que muestre un mensaje con el nombre correspondiente de


la persona de acuerdo con su edad, así: niño, adolescente, joven o adulto,
dependiendo de su edad, según la siguiente información:

 Niño es menor que 14 años.


 Adolescente entre 14 y 18 años.
 Joven de 18 a 25 años.
 Mayor si es mayor de 25 años.

Solución:

28
8.1.4.Escribir un algoritmo que verifique si la fecha ingresada es correcta.

Solución:

8.1.5.Escribir un algoritmo que permita obtener las raíces de una ecuación cuadrática.

Solución:

29
8.1.6.Los empleados de una fábrica trabajan en dos turnos: diurno y nocturno. Se
desea escribir un algoritmo para calcular el jornal diario de acuerdo con los
siguientes puntos:
a) La tarifa de las horas diarias es de 500 pesetas.
b) Las tarifas de las horas nocturnas es de 800 pesetas.
c) La tarifa en caso de ser domingo:
• En el turno diurno incrementara en 200 pesetas.
• En el turno nocturno incrementara en 300 pesetas.

Solución:

8.1.7.Escribir un ALGORITMO que lea las coordenadas de dos puntos en el plano


cartesiano y muestre la ecuación general de la recta: ax + by + c = 0

Solución:

30
8.1.8.Ingresar dos números enteros por teclado. Elaborar un algoritmo que permita
indicar si los dos son pares o impares o si uno de ellos es par, indicando, en este
último caso, cual es par.

Solución:

8.1.9.Escribir un algoritmo para calcular la desviación estándar de tres números, según


la siguiente formula:
(𝑥1 −𝑚)2 +(𝑥2 −𝑚)2 +(𝑥3 −𝑚)2
Desviación estándar = √
3−1
Donde m es la media aritmética de los tres números ingresados desde el teclado.

Solución:

31
8.1.10. Escriba un algoritmo que muestre un mensaje con el nombre del nivel de
estudio de la persona de acuerdo con su edad, así:
Inicial De 3 a 5 años
Primaria De 6 a 11 años
Secundaria De 12 a 16 años
Universitario De 17 a 25 años
Maestría y Doctorado Mayor de 25 años

Solución:

8.1.11. Escribir un algoritmo que, dadas cuatro calificaciones de un alumno, calcule la


calificación promedio y muestre un mensaje indicando si el alumno es:
Excelente, cuando su promedio es mayor o igual a 18.
Bueno, cuando su promedio esta entre 15 y 17, inclusive.
Regular, si su promedio esta entre 11 y 14, inclusive.
Deficiente, si su promedio esta entre 8 y 10, inclusive.
Pésimo, si su promedio es inferior a 8

32
Solución:

8.1.12. Diseñar un algoritmo que imprima la suma de los N primeros números


naturales

Solución:

8.1.13. Construya un algoritmo, que dados como datos los sueldos de 10 trabajadores
de una empresa, obtenga el total de nómina de la misma.

Solución

33
8.1.14. Diseñar un algoritmo para identificar si un año es o no bisiesto, un año bisiesto
es aquel que es múltiplo de 4 y 100, pero no de 400.

Solución:

8.1.15. Escribir un algoritmo que permita leer un numero entero positivo de cuatro
dígitos y se desea redondear el número a la centena más próxima, por ejemplo si
el número es 2457, el resultado seria 2500.

Solución:

8.1.16. Desarrollar un algoritmo que lea un entero positivo N y efectué, los siguientes
cálculos:
 Si N terminar en 0, 1, 5 u 8 se cambia por el doble.
 Si N termina en 3 o 9, se cambia por la tercera parte.
 De otra manera mantiene su valor.

34
Solución:

35
8.2. Estructuras Repetitivas

8.2.1.Escribir un algoritmo controlado por un menú que permita calcular el área de un


cuadrado, círculo, rectángulo o triángulo de acuerdo a la opción seleccionada.
Implementar también una opción “finalizar” que permita abandonar el
algoritmo.

Solución:

36
8.2.2. Escribir un algoritmo para calcular el promedio de prácticas de un curso
de matemáticas. Considerar las siguientes actividades previamente:
- Leer las notas y publicar la última.
- Eliminar la nota menor.
- Calcular el promedio.
Solución:

8.2.3. Evaluar los resultados de la siguiente función matemática, para valores


enteros de X que varían desde 0 hasta 15. Mostrar los valores de X, de
cada término y de la función.

1 + 𝑋 (𝑋 + 2)2 𝑋 + 3
𝐹(𝑋) = + −
1 − 𝑋 (𝑋 − 2)2 𝑋 − 3

Solución:

37
8.2.4.Escribir un algoritmo que permita determinar si un número entero ingresado por
el usuario es capicúa. Se llama capicúa al número que de izquierda a derecha se
lee igual que de derecha a izquierda, por ejemplo 212, 3993, 1420241 etc.

Solución:

8.2.5.Escribir un algoritmo que lea un valor entero no negativo e imprima en líneas


separadas los dígitos pares e impares y los dígitos del valor entero de derecha a
izquierda.

Solución:

38
8.2.6.Diseñar un algoritmo que muestre todos los números primos encontrados entre
los 1000 primeros números enteros positivos.

Solución:

8.2.7.Diseñar un algoritmo para determinar la suma de los números cuya última cifra
es siete y que están comprendidos entre los números m y n ingresados por el
usuario.

Solución:

8.2.8.En unas elecciones se presentan cinco partidos políticos. Escriba un algoritmo


que determine el número de votantes que obtiene cada partido, sabiendo que
cada papeleta (voto) contiene un único dígito del 1 al 5. Si la papeleta contiene
un número 1 corresponde al partido 1, si contiene un número 2 corresponde al
partido 2, etc.

39
Solución:

8.2.9.Escribir un algoritmo que permita ingresar una cantidad de números enteros y


luego para cada número ingresado, mostrar su cantidad de dígitos pares y
cantidad de dígitos impares, la suma de dígitos pares e impares y el número
invertido. La entrada de datos debe ser controlada por un número negativo, es
decir sólo se permite el ingreso de números positivos.

40
Solución:

8.2.10. Determine el Máximo Común Divisor de dos números naturales. Para tal fin,
divida el mayor de los números entre el menor; a continuación divida el número
menor (el divisor) por el residuo; continúe este proceso (dividiendo el último
divisor por el residuo) hasta que la división sea exacta. El último divisor será el
MCD.

Solución:

41
8.2.11. Diseñar un algoritmo que permita calcular la suma acumulada de la siguiente
1
serie: ∑𝑛𝑋=1
𝑋2
Solución:

8.2.12. Escribir un algoritmo que dé como resultado el factorial de un número.

Solución:

8.2.13. Escribir un algoritmo que calcule la serie exponencial con tres dígitos exactos:
𝑛
𝑥
𝑋𝑖
𝑒 =∑
𝑖!
𝑖=0

42
Solución:

8.2.14. Escribir un algoritmo que permita el ingreso de 15 notas y determine el


promedio, la máxima y la mínima nota.

Solución:

8.2.15. Escribir un algoritmo para leer el sueldo de 10 trabajadores, calcular el


promedio de los sueldos, además reportar a cuánto asciende el sueldo mas alto.

43
Solución:

8.2.16. Escriba un algoritmo que permita leer una serie de enteros y contar el número
de valores ingresados y la suma de los cuadrados. Se utiliza un valor centinela
que determine el final de entrada de datos

Solución:

1
8.2.17. Elaborar un algoritmo que calcule la serie: ∑𝑋=𝑛
𝑋=1 𝑋

44
Solución:

8.2.18. Diseñar un algoritmo que permita ingresar solo numeros de 0 a 20 y nos


permita obtener el promedio de los dígitos del número ingresado.

Solución:

8.2.19. Diseñar un algoritmo que permita ingresar un numero entero compuesto por
más de un digito y luego mostrar:
 Suma de dígitos pares
 Sumar de dígitos impares
 Cantidad de dígitos impares
 Cantidad de dígitos pares
 Cantidad de dígitos totales

45
Solución:

46
8.3. Arreglos

8.3.1.Se cuenta con un archivo de datos que contiene n NOTAS positivos, a razón de
uno por línea. Escribir un algoritmo para encontrar la nota mayor y menor. Luego
determine el promedio eliminando la nota menor.

Solución:

8.3.2.Escribir un algoritmo que lee N datos enteros y los ordene en orden ascendente.

Solución:

47
8.3.3.Escribir un algoritmo que dé como resultado los n primeros términos de la serie
de Fibonacci. Así mismo, el programa debe mostrar la suma.

Solución:

8.3.4.Escribir un algoritmo que permita calcular la media de una serie de números


positivos y sus respectivas desviaciones estándar de cada número entero positivo
con respecto a su media, considerar un número igual a cero para finalizar el
ingreso de datos.

Solución:

48
8.3.5.Escribir un algoritmo que permita calcular la suma de los elementos de la
diagonal de una matriz.

Solución:

8.3.6.Escribir un algoritmo que permita obtener:


 Números pares y positivos.
 Números pares y negativos.

Solución:

8.3.7.Escribir un algoritmo que dé como resultado la cantidad de números capicúas


que hay dentro de un rango de números.

49
Solución:

8.3.8.Para un reinado popular se ha presentado una cantidad desconocida de


candidatas (se exige máximo 250 damas). La junta directiva del reinado decide
inscribirlas a todas, pero solo selecciona a aquellas cuya estatura oscila entre
1.65 y 1.85 cm de estatura, inclusive. Dicha junta pasa de dos listados una con los
nombres y otra con las estaturas dado que el jurado decide seleccionar de estas
damas a las más altas (las que están por encima del promedio). Haga un
programa que muestre ambos listados y muestre también la estatura promedio
de las candidatas seleccionadas por la junta.

50
Solución:

8.3.9.Diseñar un algoritmo donde se ingrese las temperaturas de 7 días y determine, la


temperatura promedio, los días con temperaturas menores a la temperatura
promedio y cuál fue el día más cálido.

51
Solución:

8.3.10. Diseñar un programa que permita ingresar una cantidad de números enteros y
luego para cada número ingresado mostrar su cantidad de dígitos.

Solución 1:

52
Solución 2:

8.3.11. Diseñar un algoritmo que permita ingresar una cantidad de números enteros y
luego para cada número ingresado, mostrar su cantidad de dígitos

Solución:

8.3.12. Escribir un algoritmo que permita ingresar un matriz de orden nxn y luego
mostrar:
 El elemento mayor de la matriz
 La suma de los elementos de la matriz
 La suma de la diagonal

53
Solución:

8.3.13. Escribir un algoritmo que permita ingresar N números y luego determinar la


cantidad de los números que se repiten y los que no repiten, además de
determinar la cantidad de veces que se repite un elemento.

8.3.14. Escribir un algoritmo que indique si un elemento de una matriz está repetido.

54
8.3.15. Hacer un programa que solicite la información de un paciente, que lo clasifique
como: paciente sin enfermedad, paciente pasa a medicina preventiva, paciente
pasa a consulta médica, paciente grave pasa a internarse o paciente muy graves
pasan directamente al hospital de especialidad. Para pacientes sin
enfermedades; Para ir a casa necesita (sin importar edad, sexo) que su
temperatura este entre 36.5 y 37.4 y no tenga síntomas de dolor, además su
presión este entre 90/60 y 120/80 y que tiene un peso no mayor a 5 kilos de su
peso normal. Sin embargo si el paciente tiene posibles síntomas de enfermedad
pasa a medicina preventiva (sin importar edad, sexo): su temperatura está entre
37.5 y 37.8 o tiene síntomas de algún dolor, o su presión está por debajo de
90/60 o arriba de 120/180, o tiene más de 7 kilos por abajo o por debajo o por
arriba de lo normal. Todo paciente con una señal clara de enfermedad pasa
directamente a consulta médica: si tiene temperatura entre 37.9 y 38.8, o tiene
dolor agudo o tiene presión muy baja o muy alta o pesa más o menos de 20 kilos
a lo normal. También pacientes con enfermedades graves pasa directamente a
internarse: si tiene temperatura mayor a 38.9 o tiene dolor agudo o tiene presión
muy baja o muy alta o pesa por más o menos 30 kilos a lo normal. Finalmente
pacientes con enfermedades muy graves pasa directamente al hospital de
especialidad, si tiene temperatura mayor a 38.9 o tiene dolor agudo y tiene
presión muy baja o muy alta a cualquier peso.

55
9. BORLAND C++

9.1. Programación con Borland C++

El lenguaje de programación C++ es un lenguaje de alto nivel que utiliza aplicaciones de


ingeniería como aplicaciones administrativas.

Borland C++ es un lenguaje de programación derivado de C++. Desarrollado por la


compañía Borland Software Corporación.

La evolución del C++ ha continuado con la aparición del Java, utilizada en la presente
década para realizar aplicaciones en internet.

9.2. Etapas para la elaboración de un programa


 El proceso de solución de un problema en la computadora conduce a a la escritura
y la ejecución del programa en la misma.
 La elaboración de un programa requiere un proceso creativo.
 La solución de un programa requiere las siguientes etapas.
- Análisis del problema
- Diseño del algoritmo (Diagramas de flujo - Pseudocodigo – Pseint)
- Codificación del programa
- Compilación y ejecución del programa
- Verificación y depuración del programa
- Documentación

Las dos primeras etapas conducen a un diseño detallado escrito en forma de algoritmo.

La tercera etapa (codificación) se implementa el algoritmo en un código escrito en un


lenguaje de programación, reflejando las ideas desarrolladas en las fases de análisis y
diseño.

La compilación y ejecución traduce y ejecuta el programa.

En la etapa de verificación y depuración el programador busca errores de las etapas


anteriores y los elimina.

Por último se realiza la documentación del programa.

9.2.1.Análisis del problema

Identificar los requerimientos internos y externos del problema:

 Requerimientos Internos (gestión de datos)

¿Qué debe hacer el programa?, ¿Qué datos de entrada y de salida intervienen en


el proceso?

 Requerimientos Externos (interacción con el usuario y con otras aplicaciones)

56
¿En qué máquina y sistema operativo se debe ejecutar?, ¿Quién será el usuario
de la aplicación?

9.2.2.Diseño de un algoritmo
 Buscar una solución informática del problema planteado
 Uso de algoritmos

Establece de manera genérica la secuencia de pasos o acciones que resuelve un


problema determinado.

Uso de herramientas para el diseño de algoritmos:

 Diagramas de flujo (ordinogramas)


 Pseudocódigo (lenguaje intermedio) - PSeint

9.2.3.Codificación de un programa

Las sentencias (acciones) definidas en el algoritmo se deben convertir a a instrucciones


(ordenes) a la computadora mediante un lenguaje de programación de alto nivel.

9.2.4.Compilación y ejecución de un programa

 Compilación ( Proceso de Traducción)

Es el proceso mediante el cual se lleva un programa escrito enlenguaje de alto


nivel a lenguaje de máquina.

Durante el proceso de compilación se determinan los errores de sintaxis del


programa informático. Si hay errores es preciso corregir los errores y volver a
compilar.

 Compilador

Es un programa que se encarga de la traducción del lenguaje simbólico al


lenguaje de máquina.

57
9.2.5.Verificación y mantenimiento del programa

La etapa de la – verificación – verifica el correcto funcionamiento del programa con


una amplia variedad de datos de entrada, llamados datos de prueba. Los datos de
prueba deben cubrir una amplia gama de posibilidades que incluye datos normales,
datos extremos y datos especiales.

El mantenimiento de los programas consiste en la actualización o corrección de los


programas no detectados en las fases anteriores.

9.3. Estructura de un programa con Borland C++

El esquema de un programa en Borland C++ se compone básicamente de las siguientes


partes:

 Directivas definidas.
 Una función principal main()
 Declaraciones y definiciones de funciones secundarias (sentencias), declaradas por
el usuario.

Estructuras básicas del programa

9.3.1.Directicas Definidas

Las directivas definidas son instrucciones especiales para el compilador del borland C
++

Las directivas son generalmente #include y #define (indica al compilador que incluya el
contenido del archivo referenciado).

Estos archivos se denominan archivos de cabecera y tienen una extensión .h

58
Ejemplos:

 #include<math.h> //incluye al archivo fuente C++ de las librerías matemáticas.


 #include<conio.h> // incluye al archivo fuente el manejo de
pantalla.
 #include<iostream.h> // proporciona la información necesaria sobre las
funciones de biblioteca, cin y cout.

9.3.2.La función principal MAIN()

Los programas de C++ contienen una función main() la cuales llamada función
principal y es el punto inicial de entrada al programa.

Las sentencias incluidas entre las llaves { } se denominan bloque y en el caso de la


Función main() estas sentencias se denominan cuerpo del programa.

9.3.3.La sentencia

Todas las sentencias de un programa en el lenguaje C++ deben finalizar en punto y


coma.

Las llaves agrupan sentencias (bloque de sentencias):

clrscr(); Cout<<“suma=“<< resultado;

getch();

Las comas separan elementos iguales: int x, m, n;

 Comentarios:

Los comentarios no generan código de máquina y son ignorados por el


compilador. Con fines de documentación sepueden añadir comentarios a un
programa.

Se consideran como comentarios:

- Al texto que sigue a los caracteres “//“ hasta el final de la línea.


- Al texto de una o más líneas encerrado entre “/ * “y “/ * “.

59
 Los identificadores

Los identificadores son nombres usados para identificar a las variables, las
constantes, tipos, funciones y etiquetas en un programa, etc.

Reglas para construir identificadores válidos:

- Primer carácter debe ser una letra o el carácter subrayado, los caracteres
siguientes pueden ser letras, números o símbolo de subrayado. No se
permiten espacios en blanco.
- La longitud máxima es de 32 caracteres (estándar).
- El nombre del identificador no puede ser una palabra reservada, como: do
o if.
- Las letras mayúsculas y las letras minúsculas se consideran como
diferentes, por ejemplo PROGRAMACION es diferente de Programación y a
la vez de proGraMacion; ya que para estas, el compilador entiende que
son variables diferentes y no iguales.

Más ejemplos de identificadores válidos:

Nota, nota, suma, area_triangulo, dias_mes

 Palabras reservadas

Las palabras reservada son palabras seleccionadas por el lenguaje de


programación para un propósito especial y sólo puede usarse en una forma
específica.

Las palabras reservadas del C++ se escriben en letras minúsculas.

60
9.4. Tipos de datos en C++

El objetivo de todos los programas es procesar datos, sean numéricos, alfabéticos o audio.
Es fundamental para este objetivo la clasificación de los datos en tipos específicos.

Tipo de dato se define como un conjunto de valores y un conjunto de operaciones que


pueden aplicarse a estos valores.

Los tipos de datos más comunes son: entero (int), real (float) y carácter (char), los tipos de
datos son usados para definir el tipo de variables, de constantes, etc.

Tipos de datos básicos:

Tipos de datos extendidos

61
9.4.1.Variable

La variable es una localización en la memoria del computador que guarda información


para ser procesada por la computadora.

Una variable tiene un nombre, un tipo, un valor y una dirección. Representan a


identificadores que cambian su valor durante la ejecución de un programa.

Nombre: Especifica la posición de memoria asignada

Tipo: Especifica si la variable contiene un número entero, número real, carácter u otro
tipo de dato.

Valor: Representa el contenido de la variable en un momento dado.

Dirección: Especifica el lugar donde se almacena la variable.

 Declaración de una variable

Una variable antes de ser utilizada debe ser creada en la memoria del
computador mediante su declaración.

Declaración de una variable: tipo_de_dato (nombre de Variable);

tipo_de_dato: Es una palabra reservada que indica el tipo de dato que va


almacenar una variable (char, int, float, etc).

nombreDeVariable: Es el nombre elegido para la variable.

Declaremos tres variables una entera “a", un carácter “respuesta” y una de


tipo real “b”.

Int a; char respuesta; float b;

Nota: Una variable también puede ser inicializada al momento de su


declaración, ejemplo:

tipo_de_datonombreDeVariable = valor_inicial;

Si las variables son del mismo tipo se pueden declarar en simultáneo pero
separadas por una coma.

 Declaración de Variables de cadena de caracteres

char cadena [tamaño]; Ejemplo: char nombre [35];

62
Cadena: Es el nombre arbitrario elegido para la variable de cadena.

Tamaño: Es el tamaño de la cadena (debe ser uno o más que el número


total de caracteres).Una cadena también puede ser inicializada al momento
de sudeclaración así: Char cadena [5] = “cobre”;

9.4.2.Constantes

Las constantes representan a identificadores que no cambian su valor en el desarrollo


de un programa.

En C++ se pueden declarar las denominas constantes usando el calificador “const” Las
constantes también se conocen como variables nombradas o variables de sólo lectura.

 Declaración de una constante

Const tipo_de_dato nombre = valor_constante;

- Tipo_de_dato es el tipo de la variable (int, float, char, etc)


- Nombre es el nombre identificado para la constante
- Valor_constante es el valor asignado a la constante

Ejemlos: Const int mes=30; const float pi=3.14; constcharrespuesta = ‘S’;

 Directiva #define

La directiva #define actualmente es poco usada en C++, en su lugar se usa const


para declarar las constantes que se van a utilizar en un programa.

#define nombreConstante valor

Ejemplos: #define pi 3.14; #define raya “------------”; #define saludos “Buenos


tardes”

9.5. Tipos de operadores

9.5.1.Operadores aritméticos

63
 Evaluación de expresiones

 Regla de jerarquía de operadores aritméticos

Reglas:

- Si existen paréntesis anidados, se evalúa primero la expresión en el


paréntesis más interno.
- Si varios operadores están en el mismo nivel de jerarquía, la evaluación
será de izquierda a derecha.

Ejemplos:

10 % 3 respuesta 1

8 / 2 * 3 – 2 respuesta es 10

8 + 5 * 7 % 2 * 4 respuesta es 12

64
9.5.2.Operadores de relación

9.5.3.Operadores de lógicos

9.5.4.Operadores de incremento o decrecimiento

Los casos en que una variable es incrementada o disminuida en uno, C++ proporciona
dos operadores unitarios.

El operador de incremento (++) y decremento (- -)

n = n + 1; se reemplaza por la expresión n++ o ++n

n = n - 1; se reemplaza por la expresión n- - o - -n

Ejemplo: numero = valor ++; // incrementa valor en 1

65
9.6. Entradas y salidas básicas

La información que necesita el compilador sobre cin y cout se encuentra en el archivo de


cabecera iostream.h que debe incluirse en todo programa.

#include<iostream.h>: Es un comando preprocesador que utiliza la palabra reservada


include con un signo de número (#) y ejecuta alguna acción antes que el compilador
traduzca el programa fuente a código de máquina.

La entrada y salida (input / output) en C++ se realiza utilizando los siguientes flujos: cin y
cout

9.6.1.Entradas básicas

El flujo cin, se usa para introducir datos en un programa mientras se está ejecutando,
cin es un flujo de datos que conecta el teclado con el programa.

Cualquier entrada desde el teclado es enviada primero al flujo cin, luego el programa
puede extraer (leer) datos desde este flujo.

La forma más simple de leer se efectúa mediante el símbolo de extracción: “>>”


(obtener de) cin>> variable;

Ejemplo: cin>> nota;

9.6.2.Salidas básicas:

El flujo cout, cuyo nombre deriva de Console OUT put, es un objeto de salida que
envía datos introducidos en él al dispositivo estándar de salida, este dispositivo de
salida es generalmente una pantalla de video.

La forma más simple de salida se efectúa mediante el símbolo deinserción: “<<”


(enviar a).

Ejemplos:

cout<< “es primo”;

cout<< “Hola Amigos”;

66
Ejercicio: Usaremos la entrada y salida básica

#include <iostream.h>

#include <conio.h>

void main ()

{ int a, b, suma resta producto;

clrscr ();

cout<<"ingrese a:" ; cin>>a;

cout<<"ingrese b:" ; cin>>b;

suma = a+b ; resta = a-b ; producto = a*b ;

cout<<"La suma es:" << suma << “\n”;

cout<< "La resta es:" << resta << “\n” ;

cout<< "El producto es:" << producto << “\n”;

getch() ;

9.7. Secuencia de escape

Las secuencias de escape proporcionan un determinado significado al enviar ciertos


caracteres especiales a la pantalla, o por ejemplo un archivo en disco a la impresora. Todas
las secuencias de escape comienzan con el carácter barra invertida “\ “.

67
Ejemple: cout<< “CALCULAR PROMEDIO DE NOTAS\n”;

La secuencia de escape \n presenta el cursor en la siguiente línea.

9.7.1.Manipulación y formato de los datos de salida

Con la finalidad de mejorar el aspecto de la salida de los programas debemos utilizar


los manipulares de salida, por ejemplo si se requiere especificar el número de
decimales de un número real o ajustar los datos a un ancho predeterminado.

Los manipulares manipulan las salidas de los datos de la forma que el usuario lo desee.

Estos manipuladores se usan dentro del cout y debe incluir el archivo


#include<iomanip.h> en el programa.

Tabla de manipuladores de flujo Entrada/Salida

68
Tabla de indicadores de formato para usarse con setiosflag

9.7.2.La función GOTOXY()

La función gotoxy (x,y) ubica el cursor en la posición x, y de una ventana de texto. La


coordenada X indica la columna a desplazar, la coordenada Y nos indica la fila hacia
donde se desplazará el cursor.

Ejemplo:

gotoxy(20,10); // desplaza el cursor a la columna 20, fila 10

La información que necesita el compilador para procesar dicha sentencia se encuentra


en el archivo de cabecera conio.h

9.8. Sentencia de asignación:

Las sentencias de asignación permiten a las variables almacenar el valor de una expresión.
La forma general de una sentencia de asignación es: variable = expresión;

Variable: Es el nombre de la variable que recibe la asignación. Expresión: Puede ser tan
simple como una constante o tan compleja como una combinación de operadores con
datos evaluados para producir un valor.

69
9.8.1.Variables de asignación

Las sentencias de asignación, que usan la misma variable en ambos lados del operador
de asignación, pueden escribirse usando los siguientes atajos de operadores de
asignación.

Ejemplos:

suma = suma + 10; es equivalente a suma += 10;

precio = precio * tasa; es equivalente precio *= tasa;

Operadores de asignación

9.9. Funciones Comunes en C++

70
9.10. Procesos de control

Se tratara la sintaxis de los principales procesos de control del Lenguaje de Programación


Borland C++, se escribe en módulos, se componen básicamente de algoritmos y
estructuras de datos que en su conjunto forman un programa. Los procesos de control
pueden ser:

 Procesos Secuenciales
 Procesos Selectivos
 Procesos Repetitivos

9.10.1. Procesos secuenciales

Definido como una secuencia finita de sentencias o instrucciones hasta obtener un


resultado coherente. Su ejecución se realiza en el orden en que se presentan las
SENTENCIAS, desde el inicio hasta el final del programa. En C++ estas son sentencias
simples que terminan en punto y como ( ; ).

<sentencia_1>;

<sentencia_2>;

- - - - - - - - - - - --

<sentencia _n >;

Un proceso secuencial está formada por una sola sentencia y se ejecutan en


secuencia, es decir una sentencia después de la otra, en el orden en que son
colocadas dentro del programa.

 Tipos de sentencias secuenciales:


 Sentencia de entrada: cin>>n ;
 Sentencia de salida: cout<<n ;
 Sentencia de asignación: n = n +1;

71
9.10.2. Procesos Selectivos

El proceso selectivo se utiliza para alterar el flujo de control secuencial de un


programa, mediante la evaluación de una expresión lógica.

Una expresión lógica es una asociación de datos con operadores de relacional y/o
lógico, donde cada dato puede ser una constante o una variable y los operadores
pueden ser de relación y/o lógicos.

Son ejemplos de expresiones de relaciones los siguientes:

(edad< 40) (indicador != n) (n == 818252)

 Proceso Selectivo Simple: Sentencia if (Una alternativa)

if(expresión lógica)
sentencia ;

- Sentencias If

La sentencia selectiva simple evalúa una (expresión lógica).La evaluación de la


expresión lógica representa un sólo valor Verdad o Falso.

o Si la expresión lógica es verdadera se ejecuta la sentencia_1 y luego


lasentencia_2.
o Si al evaluar la expresión lógica es falsa sólo se ejecuta la sentencia_2.

Ejemplo:

if (nota > 10)

cout<< “curso aprobado” ;

72
 Proceso Selectivo Doble: Sentencia if-else (Dos alternativas)

if (expresión lógica)
sentencia_1 ;
else
sentencia_2 ;

- Sentencia If-else

La sentencia selectiva doble evalúa una expresión lógica.

o Si la expresión lógica es verdadera se ejecuta la sentencia_1.


o Si la expresión lógica es evaluada como falsa se ejecuta la sentencia_2.

Ejemplo:

if (( numero%2)==0)

cout<< “El numero es par” ;

else

cout<< “El numero es impar” ;

- Observaciones

1. La expresión lógica es una expresión que será evaluada como verdadera o


falsa. La expresión puede ser simple (una condición) o compuesta, la cual está
formada por varias expresiones simples conectadas por los operadores lógicos.

2. Siempre se usa paréntesis encerrando a la expresión lógica a evaluarse.

3. Las estructuras if se pueden anidar, es decir; puede existir un proceso if


dentro de otro if.

- Sentencias If-else anidadaas

73
if(expresión lógica 1)
sentencia1;
else (expresión lógica 2)
sentencia2;
if (expresión lógica 3)
sentencia3;

 Proceso Selectivo Múltiple: Sentencia switch (Varias alternativas)


switch(selector) {

case valor_ 1: <sentencia_1>; break;

case valor_ 2: <sentencia_2>; break;

case valor_ n: <sentencia_n>; break;

default <sentencia_default> ;

- Sentencia switch

74
La sentencia selectiva switch se utiliza para seleccionar una de varias
alternativas. La sentencia switch se utiliza cuando la selección se basaen el
valor de una variable Simple o de una expresión Simple denominada
expresión de control o selector.

El valor del selector debe ser entero.

- Observaciones

Cuando se requiere realizar una misma acción para distintos valores de la


expresión evaluada, se escribe el programa de la siguiente forma:

Switch (a) {

case1:case2:case3: cout<<“sentencia para valor 1, 2 y 3”; break;

Case 4: cout<<“sentencia para valor 4”; break;

- Reglas de uso

1. La variable selector o expresión de control no puede ser: string o real.

2. La sentencia swith requiere un valor compatible con entero. El valor puede


ser variable, una constante, una llamada de función o una expresión.

3. El valor después de cada etiqueta case debe ser una constante.

4. El final de cada sentencia alternativa del case está marcado típicamente con
un break. Dicha sentencia permite que el programa abandone la estructura
switch omitiendo los demás casos.

5. La etiqueta default indica al programa lo mismo que la sentencia else en la


secuencia de if anidados, es decir; se ejecuta cuando el usuario edita un valor
que no está en la lista de valores.

75
Ejemplo:

Switch (día) {

case 1: cout<<“Lunes” ; break ;

case 2: cout<<“Martes” ; break ;

case 3: cout<<“Miercoles” ; break ;

case 4: cout<<“Jueves” ; break ;

case 5: cout<<“Viernes” ; break

case 6: cout<<“Sábado” ; break ;

case 7: cout<<“Domingo” ; break ;

default: cout<<“No es un día de la semana” ;

9.10.3. Procesos repetitivos

Corresponde a la ejecución repetida de una secuencia de sentencias, mientras se


cumple una determinada condició (expresión lógica). Poseen una sola entrada y una
sola salida.

Los procesos que repiten una secuencia de sentencias un número determinado de


veces se denomina bucle o lazos, y se llama ITERACCIÓN al hecho de repetir la
ejecución de una secuencia de sentencias.

En los procesos repetitivos se presentan las siguientes sentencias:

 Sentencia while (Bucle con entrada controlada)

while (condición) sea verdad


{
Sentencia (s) ;
}

76
- Sentencia while

La sentencia while permite evaluar una condición y ejecuta el cuerpo del


bucle si la condición (expresión lógica) es verdad.

Si la condición de control es falsa no se ejecuta el cuerpo del bucle.

 Sentencia do – while (Bucle con salida controlada)

do
{
sentencia_1;
sentencia_2;
sentencia _n;
} while (condición) (“sea verdad”)

- Sentencia do – while

La sentencias do - while evalúa una condición (expresión lógica) después de


ejecutar el cuerpo del blucle do, que se ejecutará en secuencia repetitiva
hasta que, la condición lógica tome un valor de verdad.

77
El cuerpo del bucle se ejecuta por lo menos una vez porque la condición se
evalúa después de la ejecución del bucle repetitivo.

 Sentencia for (Bucle con numero definido de iteraciones)

for (inicialización; <expresión lógica>; contador)


{
<sentencia_1>;
<sentencia_2>;

<sentencia_3>;
}

- Sentencia for

Inicialización:Indica las condiciones iniciales cuando se inicia el bucle.

<Condición>: Se evalúa antes de cada iteracción. Si es verdadera, se ejecuta el


bloque de instrucciones, en caso contrario se termina la estructura y se
transfiere el control a la sentencia siguiente.

Contador: Es la instrucción a ejecutarse cuando se termina cada iteración.

78
9.11. Estructura de datos – Arreglos

9.11.1. Introducción a las estructuras de datos

 Datos simple

Las variables utilizadas hasta hoy tienen una característica común: cada variable
sólo puede utilizarse para almacenar un sólo valor.

Estos tipos de variables se llaman variables escalares y son de tipo: entero,


real, boolean y carácter.

Son tipos de datos simples cuyo valor no se puede subdividir.

 Datos estructurales

DATOS ESTRUCTURADOS: ESTÁTICOS

- ARREGLOS (arreglos)
- CADENAS (char)
- REGISTRO (Struct)
- ARCHIVO (File)

9.11.2. Arreglos unidimensionales (vector o lista)

Es una estructura de datos en la que se almacenanuna colección de datos del mismo


tipo, con un único nombre de variable.

El tipo de elemento almacenado en el arreglo puede ser cualquier tipo válido de


C++.

 Características
- Todos sus elementos tienen un mismo nombre
- Los elementos están almacenados en posiciones contiguas de memoria,
estos a su vez se diferencian por un índice. En C++ el primer índice de un
arreglo es 0 y el último índice es igual al número de elementos – 1.

79
- Utilizando el índice se puede tener acceso directo a cualquier elemento
del arreglo.

 Los arreglos pueden clasificarse en


- Unidimensionales: un solo índice (lista o vectores)
- Bidimensionales: dos índices (tabla o matrices)
- Multidimensional: varios índices

El uso de los arreglos simplifica la programación ya que utiliza un solo nombre de


variable para almacenar varios datos. Si queremos utilizar una variable con 20
notas haremos la siguiente declaración nota[20] y accedemos a cada elemento
utilizando un índice.

Vector: Colección de datos compuestos de un número de elementos homogéneos


definidos.

Declaración de arreglos

Tipo nombre [tamaño]; Dónde:

- Tipo es el tipo de base del arreglo y puede ser un tipo incorporado (int,
float, char, double, etc) o un tipo abstracto (un tipo creado por el
programador como es el caso de una estructura).
- Nombre es el nombre del arreglo
- Tamaño indica cuantos elementos tiene el arreglo.

Tipo nombre [índice] ;

El primer índice es igual a 0 y el índice del último término es igual al tamaño-1.


Entonces para: intnota[ 5 ] ; Reserva espacio en memoria para 5 números
enteros ubicados en posiciones contiguas como puede observarse en la
siguiente representación gráfica.

Índice Elemento
0 nota[0]
1 nota[1]
2 nota[2]
3 nota[3]
4 nota[4]

Cada elemento del arreglo tiene el mismo nombre pero diferente


índice.

80
Iniciación de una arreglo unidimensional

Para utilizar un arreglo primero se deben asignar valores acada uno de los
elementos, para asignar valores a cada elemento se escribe las siguientes
sentencias:

nota[0] = 10; nota[1] = 5; nota[2] = 15; nota[3] = 7; nota[4] = 20;

Cada elemento individual es una variable indexada, ya que debe usarse


tanto un nombre de variable como un valor índice o subíndice para hacer
referencia al elemento. El valor índice da la posición del elemento en el
arreglo: nota[2] = 15;

Son ejemplos que utilizan los elementos del arreglo nota:

nota[0] = 19;

nota[1] = nota[0] + 5;

Suponiendo que i y j son variables enteras, las siguientes variables indexadas


son válidas: nota[2*i]; Nota [j-i];.

Cuando se desea inicializar un arreglo que tiene muchos elementos se utiliza


el siguiente formato: int nota[5] = {10,5,15,17,20};

Los elementos que conforman el arreglo se encierran entre llaves { }


separados por comas, el arreglo notas contiene 5 elementos.

Existe la posibilidad de dejar vacío los corchetes tal como se muestra a


continuación: int nota[ ] = {10,5,15,17,20};

Operaciones con arreglo unidimensional

Las operaciones con un arreglo unidimensional involucran un proceso


secuencial que va desde el primer elemento hasta el último elemento, lo que
implica el uso de las siguientes estructuras repetitivas: while, do..while y for
(recomendable).

- LECTURA DE LOS ELEMENTOS DE UN ARREGLO

Una vez declarado un arreglo, se puede ingresar cada uno de los elementos
del arreglo tal como se muestra a continuación: for (i=0; i< n; i++)

81
Ejemplo:

constint n=4;

intnotas [n]; // Ingreso de notas

for (i=0; i< n; i++)

cout<< “Ingrese notas : ”;

cin>> notas [i];

• PROCESOS UTILIZANDO ELEMENTOS DE UN ARREGLO

Una vez ingresados todos los elementos del arreglo se pueden realizar
cálculos, generar expresiones, calcular promedios, buscar un elemento del
arreglo y ordenar el arreglo, normalmente utilizando la estructura for.

Si consideramos un arreglo notas de tamaño N, en general, el recorrido


completo del arreglo unidimensional puede hacerse con el siguiente
fragmento de código:

for ( i=0; i < N; i++)

//sentencias con el elemento notas [i]

Conforme i vaya tomando los valores 0,1,2,3, ….… ,N-1 se estará


accediendo a los elementos notas[0], notas[1], notas[2],..., notas [N-
1]respectivamente.

- SALIDA DE LOS ELEMENTOS DE UN ARREGLO:

Se puede mostrar en pantalla los elementos de un arreglo tal como semuestra


a continuación:

clrscr( ); cout<<“\n\n Notas ingresadas” ;

for ( j=0; j < n; j++)

cout<< “\nNota [“<< j + 1 << “ ]” ; cout<< notas [ j ] ;

82
Técnicas de búsqueda

- Búsqueda lineal o secuencial

La búsqueda secuencial consiste en el recorrido de todo el arreglo, desde el


primer elemento hasta el último, y de uno en uno. La intención es obtener el
índice del elemento buscado dado que con el índice se puede acceder al
arreglo para obtener información sobre el elemento. Sin embargo, una
búsqueda lineal tiene ventajas:

o El algoritmo es simple
o La lista no necesita estar en ningún orden particular

Si tenemos un arreglo de notas de tamaño N, el pseudocódigo para la


búsqueda es la siguiente:

Índice Buscado = -1 /* devuelve -1 si el elemento buscado no se encuentra*/

PARA i = 0 MIENTRAS i < N CON INCREMENTO 1

SI elementos buscado = nota { i } ENTONCES

índiceBuscado = i

FIN_SI

FIN_PARA

Ejemplo: Supongamos que se tiene el arreglo:

notas= { 8,10,10,11,12,13,15,17,18,19}

Introducir la nota que se busca: 13. La nota es encontrada en la posición


índice 5

Introducir la nota que se busca: 20. La nota no es encontrada en la lista

- Búsqueda binaria

La búsqueda binaria es más eficiente para realizar búsquedas en un arreglo


que la búsqueda secuencial.

Una condición necesaria es que el arreglo este ordenado previamente. El


algoritmo consiste en dividir el arreglo en dos partes, luego se verifica en que
sección se ubica el número que se busca y repetir estos pasos hasta lograr el
éxito o fracaso en la búsqueda.

Se presentan tres posibilidades una vez que se realiza la comparación:

- Elemento buscado es igual al elemento intermedio. La búsqueda


ha sido exitosa

83
- Elemento buscado es mayor al elemento intermedio
- Elemento buscado debe estar en la segunda mitad de la lista
- Elemento buscado es menor al elemento intermedio
- Elemento buscado debe hallarse en la primera parte de la lista

Ejemplo: Supongamos que en el arreglo:

notas = { 8,10,10,11,12,13,15,17,18,19}, Se desea buscar la nota 18

1 Se asigna al primero = 0 y último = 10


2 Se define el término central = (primero + último)/2 = 0+10 = 5
3 A continuación se evalúa notas [central] = nota [5] = 13
4 Se pregunta si nota buscada es igual que notas [central], si es
verdadero se encontró el elemento buscado.
5 Si lo anterior es falso……
6 Se pregunta si la nota buscada es mayor que nota [central] (18 >
13), si es verdad.
7 Asignar a primero = central + 1, primero = 5 +1 = 6
8 Volver al paso 2 central = (primero + último)/2 = (6 + 10)/2 = 8.
Evaluar nota[8] este valor es 18. Al preguntar si nota buscada = nota
[central] es verdadero entonces se encontró el elemento.
9 Si el paso 6 es falso asignar a último = central -1 y regresar al punto
2. los pasos 2…9 se deben realizar mientras se cumpla primero <=
último y además encontrado sea falso (0).

 Métodos de ordenación

Para ordenar datos, existen dos categorías principales de técnicas de


ordenamiento, llamadas ordenamiento interno y externo.

Los ordenamientos internos se usan cuando las listas de datos no son grandes y
pueden ordenarse dentro de la memoria del computador, por lo general en un
arreglo.

Los ordenamientos externos se usan para conjuntos de datos mucho más grandes
que se almacenan en archivos de disco o cintas externas.

Ordenación por selección

Es una técnica de selección simple, donde el valor más pequeño se selecciona al


inicio de la lista completa de datos y se intercambia con el primer elemento en la
lista. Después de esta primera selección e intercambio, el siguiente elemento más
pequeño en las listas revisadas se selecciona e intercambia con el segundo
elemento en la lista. Dado que elemento más pequeño ya está en la primera
posición en la lista, este segundo recorrido sólo necesita considerar del segundo al
último elemento.

84
Para una lista con n elementos, este proceso se repite n – 1 veces, con cada
recorrido a lo largo de la lista se requiere una comparación menos que el recorrido
anterior.

Muestra de Ordenación por selección

Ordenación por intercambio

En un ordenamiento por intercambio, los elementos adyacentes de la lista son


intercambiados entre sí, de tal manera que la lista quede ordenada.

Sea un arreglo de notas de tamaño N. La técnica consiste en ejecutar n-1


recorridos a lo largo del arreglo, donde en cada recorrido se efectúan
comparaciones entre elementos adyacentes intercambiando sus valores si están
desordenados utilizando una variable temporal.

Ordenación por Intercambio (burbuja): PRIMER RECORRIDO

85
Ejemplo: Pseudocódigo para ordenamiento descendente:

PARA i = 0 MIENTRAS i < N-1 Incremento 1

PARA j = i + 1 MIENTRAS j < N Incremento 1

SI nota [i] es menor que nota [j] ENTONCES

Intercambiar nota [i] con nota [j]

FIN_SI

FIN_PARA

FIN_PARA

Ejemplo: Pseudocódigo para ordenamiento ascendente:

PARA i = 0 MIENTRAS i < N-1 Incremento 1

PARA j = i + 1 MIENTRAS j < N Incremento 1

SI nota [i] es mayor que nota [j] ENTONCES

Intercambiar nota [i] con nota [j]

FIN_SI

FIN_PARA

FIN_PARA

9.11.3. Arreglo bidimensional: Matriz o tabla

Matriz: Colección de datos compuestos por dos índices para ubicar los elementos de
las filas y las columnas de la matriz.

El siguiente arreglo de números, se llama arreglo bidimensional de números enteros y


consiste de dos filas y dos columnas, para reservar almacenamiento para este arreglo,
debe incluirse el número de filas y el número de columnas en la declaración del
arreglo.

Sea m una matriz de 2x2

86
Declaración de los arreglos bidimensionales

La forma general de declarar de un arreglo bidimensional es la siguiente:

Tipo nombre [número de filas] [número de columnas]; Dónde:

- Tipo: es el tipo de base del arreglo y puede ser un tipos escalar (int, float, char,
double, etc.) o un tipo abstracto (creado por el programador).
- Nombre: es el nombre del arreglo
- Número: de filas y número de columnas

Considerar, por ejemplo un arreglo bidimensional llamada matrizque consta de dos


filas y dos columnas, su declaración sería: int matriz [ 2] [2];

Esto reserva espacio de memoria para un total de 4 números enteros (2x2) cuya
distribución gráfica es

Operaciones con arreglos bidimensionales:

Para poder efectuar operaciones bidimensionales normalmentese sigue un recorrido


secuencial; del primero al último elemento.

Dos son los recorridos más usuales: recorrido por fila y recorridopor columna, en
ambos casos se requiere dos bucles anidados

(dos bucles for uno para la fila y otro para la columna).

- Recorrido por filas

Se procesan primero los elementos de la primera fila, y luego loselementos de la


segunda fila y así sucesivamente.

87
El recorrido completo por filas se realiza con el siguiente código:

for ( i = 0; f <numfila; f++)

for ( j = 0; c <numcolumna; c++)

// sentencias con el elemento arreglo [i][j]

- Recorrido por columnas

Se procesan primero los elementos de la primera columna, a continuación los


elementos de la segunda columna y así sucesivamente.

El recorrido completo por columnas se realiza con el siguiente código:

for ( c = 0; c <numcolumna; c++ )

for ( f = 0; f <numfila; f++)

// sentencias con el elemento arreglo [c][f]

Iniciación de arreglos bidimensionales

Un arreglo puede ser inicializado en el momento de sudeclaración. La forma general de


inicialización es:

Tipo nombre [numfila1] [numcolumna1] = {lista_de valores}; Dónde:

- La lista de valores: es una lista de valores separado por comas, para el caso de
arreglos bidimensionales los valores se colocan siguiendo el orden de las filas.

Si la lista de inicializaciones contiene menos elementos que los indicadospor el tamaño


del arreglo, los elementos restantes son inicializados a cero en forma automática.

88
- En una secuencia de inicialización de un arreglo puede omitirse el tamaño de los
arreglos unidimensionales y el número de filas en el caso de los arreglos
bidimensionales. Esto genera arreglos indeterminados y el compilador crea
automáticamente un arreglo suficientemente grande para contener todos los
inicializadores.

// Declara e inicializa un arreglo bidimensional indeterminado int c [][] =


{7,2,5,1,3,5,4,8,9}, el compilador crea un arreglo de 3 filas 3 columnas.

9.12. Funciones y procedimientos

9.12.1. Introducción:

Con la finalidad de facilitar la programación de aplicaciones con un gran


número de sentencias y/o Instrucciones, utilizaremos la programación modular. Dicha
programación consiste en dividir un programa en unidades de menor tamaño,
donde cada fragmento realiza una tarea explícita y única. Cada uno de esos
fragmentos recibe el nombre de módulo, en el lenguaje de programación C++ los
módulos se llaman función eso procedimientos.

Dichos módulos nos permite hacer pequeñas porciones de código reutilizable, que
pueden ser llamados desde el programa principal sin necesidad de volver a repetirlos.

 Programa modular

El funcionamiento del programa Modular, se basa en que el Programa Principal


llama, a una función por su nombre, la función procesa sus instrucciones y luego
devuelve al programa principal la tarea realizada por la función.

nombre de la función (datos transmitidos a la función)

- Nombre de la función: Esto identifica a la función llamada


- Datos transmitidos a la función: Esto transmite datos a la función

Asimismo, existe el concepto de procedimientos (proceso)el cual no especifica el


tipo de dato a devolver.

89
9.12.2. Funciones predefinidas

El lenguaje de programación Borland C++ cuenta con bibliotecas de funciones


predefinidas que podemos utilizar para la construcción de nuestros programas.

La función sin se usa para determinar el seno de un número

valor1 = sin(3.14159);

valor2 = sin(x) - cos(y);

valor3 = sin(theta)/(sin(delta) - sin(delta-theta));

 Funciones matemáticas predefinidas

90
 Funciones de biblioteca usadas en C++

9.12.3. Funciones definidas por el usuario

Una función es un módulo de programa (segmento de instrucciones) que realiza una


tarea específica. Si la función utiliza argumentos, debe declarar variables que acepten
los valores de los argumentos. Dichas variables son llamadas parámetros de función y
son variables locales a la función.

Una función retorna un valor al módulo que lo llama

Un nombre de la función inicia con una letra o un subrayado ( _ ) y contiene letras,


números o subrayado.

int mayor (int a, int b, int c);

 Estructura de un programa principal y su módulos

Declaración de librería: #include<iostream.h>

Declaraciones de prototipo de funciones:

tipo_dato_devuelo nombre_funcion (lista de parámetros)

Declaración de variables

Declaración de constantes globales

Definición de las funciones

91
tipo_dato_devuelo nombre_funcion Nombre_funcion (lista de parámetros)

{ <declaración de variables locales>;

<cuerpo de la función>;

Programa principal: Voidmain() {// llamadas a las funciones por sus nombre}

 Declaración de una función

Tipo_dato_devuelto Nombre_ función (lista de parámetros);

int mayor (int a, int b, int c);

Se declara una función para informar al compilador de los atributos de la función,


que será definida posteriormente en el programa.

La declaración de una función consiste en escribir el prototipo de la función antes


de que dicha función sea definida en el programa.

- Los prototipos

Un prototipo de función informa al compilador: el tipo de la variable que


retorna la función, número de parámetros que la función espera recibir, los
tipos de parámetros (no es necesario el nombre de los parámetros) y el orden
en el cual se esperan dichos parámetros.

El compilador utiliza los prototipos para verificar las llamadas de función.

- Parámetros

Se denomina parámetros a las variables declarados en el prototipo y debe


corresponder con la definición de la función en el programa.Los parámetros
son los datos de entrada que necesita la función para realizar sus cálculos. Los
parámetros están separados por comas y se declaran igual que las
variables(tipo nombre).

A continuación de la cabecera se encuentra el cuerpo de la función que está


entre un par de llaves ( {} ).

92
9.12.4. Definición de una función

Tipo_dato_devuelto Nombre_ función (lista de parámetros)

variables locales

<cuerpo de la función>;

El Tipo_dato_devuelto:Indica el tipo de valor que la función devolverá mediante el uso


de return, su valor puede ser de cualquier tipo válido. Si no se especifica su tipo,
entonces la computadora asume por defecto que la función devolverá un resultado
entero.

Lista de parámetros: Lista de nombres de variables separadas por comas en la que


cada variable va asociada con su tipo. No siempre se debe incluir parámetros en una
función, la lista de parámetros puede estar vacía.

 Definición de una función

Para definir una función debemos escribir el conjunto de instrucciones que define
la función. La definición de una función es en sí la función misma, y está
compuesta por:

- El encabezado de la función que debe ser idéntico alprototipo de la


función pero en éste caso no utilizar el punto y coma (;),
- Las variables locales
- El cuerpo de la función

 La instrucción return forma parte del cuerpo de la función y tiene una doble
finalidad:

a) Devolver un valor

b) Provocar la salida inmediata de la función que la contiene, devolviendo el


control de la ejecución del programa a la línea de código que llamo a la función.

93
Ejemplo:

float prom( intnum1, intnum2) // cabecera de funcion

{ floatpromed; // declaración de variable

promed = (num1 +num2) / 2.0;

return(promed); // valor devuelto

Void main() { int a=20 , b=50 ;

float respuesta;

respuesta = prom(a,b);

gotoxy(5,20);

cout<<promedio=“<<respuesta;

getch();

Una función tiene un único nombre, al utilizar este nombre en otras partes del
programa se puede ejecutar los enunciados contenidos en la función. A esto
se conoce como llamar a la función. Una función puede ser llamada desde otra
función, esta técnica se define como el anidamiento de funciones.

Para llamar a una función se escribe su nombre seguido por los valores o
parámetros de entrada que espera la función, estos parámetros pasados a la
función deben coincidir en número, tipo y orden con los parámetros indicados en
el prototipo de la función.

Una función es independiente, es decir una función puede ejecutar sus tareas sin
interferencia de otras partes del programa.

Una función devuelve un valor al programa que lo llamó. Cuándo un programa


llama a una función se ejecutan los enunciados contenidos en ésta y devuelve un
valor al programa que lo llamó.

Las funciones devuelven tipos de datos simples: entero, real, carácter o lógico.

Tipos devueltos: float, int, double, char, etc.

Ejemplo: int factorial (int n) // La función factorial, devuelve un tipo de dato


entero.

94
 Funciones con lista de parámetros y su valor devuelto

- Declaración de la función

Tipo_dato_devuelto Nombre_ función (lista de parámetros);

- Definición de la función

Tipo_dato_devuelto Nombre_ función (lista de parámetro)

{ <instrucciones>;

return;

*Lista de parámetros, puede ser: un dato simple, un vector o matriz, un puntero,


cadena, etc.

 Funciones sin lista de parámetros y su valor devuelto

- Declaración de la función

Tipo_dato_devuelto Nombre_ función (lista de parámetros);

- Definición de la función

Tipo_dato_devuelto Nombre_ función (lista de parámetro)

{ <instrucciones>;

return;

*Lista de parámetros, puede ser: un dato simple, un vector o matriz, un puntero,


cadena, etc.

 Procedimientos

La declaración de procedimientos en C es muy similar a la declaración de las


funciones pero no devuelven nada (void). Entonces, en el cuerpo de un
procedimiento no devolveremos nada (no se escribe la instrucción return).

También observamos diferencias al realizar la llamada, porque ahora se llama


directamente al procedimiento, sin necesidad de usar una instrucción de
asignación (resultado=… …).

95
La declaración de los procedimientos devuelve un valor de tipo void, es decir,
vacío/nada.

- Partes necesarias de un procedimiento


1. La cabecera del procedimiento y debe ser de la siguiente forma:
void resta ( int a, int b)
2. La declaración de variables para el procedimiento.
3. Las instrucciones del procedimiento para la resta.

El procedimiento termina y regresan automáticamente al procedimiento que


las llamó cuando se encuentra la última llave }.

I. Paso de parámetros por valor y por referencia

El lenguaje de programación C++ proporciona dos métodos para pasar variables


(parámetro) entre funciones:

a) Paso por Valor

La forma en que hemos declarado y pasado los parámetros de las funciones hasta
ahora es la que normalmente se conoce como "por valor“. Cuando los
argumentos de llamada se pasan por valor, se efectúa una copia del valor
argumento y esta se pasa a la función llamada. Es decir el parámetro de la
función sólo toma una copia del argumento.

b) Paso de parámetros por referencia

Procedimiento que permite modificar el valor de las variables.

Una variable consta, además de su nombre, tipo y valor, de una dirección de


memoria en la que se ubica (valor numérico).

Para extraer la dirección de memoria a una variable se utiliza el operador “&”


antes de su nombre.

Para extraer el contenido de una dirección de memoria, se usa el operador “ * “


antes de su nombre.

En la cabecera de la función se especifica cada parámetro por referencia con el


operador *. Dentro de la función, cambiaremos el contenido de cada variable con
*, para llamar a la función usaremos el operador “&” para extraer la dirección de
las variables.

96
- Partes necesarias de un procedimiento

Las funciones en C++ pueden establecer valores por omisión o ausencia (por
defecto) para los parámetros.

Se pueden asignar argumentos por defecto a los parámetros de una función.

Cuando se omite el argumento de un parámetro que es un argumento por


defecto, se utiliza automáticamente este. Si se pasan valores a los argumentos
omitidos, se utiliza ese valor; si no se pasa un valor a un parámetro opcional,
se utiliza el valor por defecto como argumento. El valor por defecto debe ser
una expresión constante.

void muestra(int fila, int columna, int numero, char c = ‘*’);

muestra (4,0,40) ó bien muestra (4,0,40, ‘# ‘)

* el argumento explícito (# anula el carácter por omisión)

voidfuncion1(int a, int b=0, int c=1); // Legal

funcion1(12, 10); // el valor para "c" es 1

funcion1(12); // los valores para "b" y "c" son 0 y 1

funcion1(); // el valor para "a" es obligatorio

II. Variables

Variables locales y globales

- C++ permite declarar variables en cualquier parte del código fuente.


- Un identificador es local, cuando se define dentro del cuerpo de una
función, a este tipo de variable se le denomina locales ya que son útiles
dentro del cuerpo de la función.
- Un identificador es global, cuando están definidos fuera del cuerpo de
cualquier función y se declara al principio del programa. Generalmente
pueden estar referidas por cualquier función en el programa.

Las variables globales, están disponibles para cualquier función del programa,
incluyendo a main ().

Las variables locales que tienen el mismo nombre quelas variables globales no
cambian el valor de las variables globales.

97
Las variables globales, se inicializan automáticamente en 0 (cero), las locales no.

*Evitar el uso de variables globales y locales similares.

 Funciones recursivas

Una función es recursiva cuando se llama así misma directamente o


indirectamente.

La Recursividad directa es el proceso por el cual una función se llama así misma
desde su propio cuerpo.

La Recursividad indirecta implica más de una función.

Se define un programa en términos recursivos, como una serie de pasos básicos


finito.

Recursividad

Durante el proceso de compilación, es importante resaltar en la recursividad que


cuando una función se llama así misma, una nueva copia de ésta función es la
que se ejecuta.

Un proceso de recursividad debe tener una condición para terminar de


ejecutar su proceso para generar resultados, de lo contrario nunca terminaría
produciendo un bucle indefinido.

98
10. Problemas resueltos en Borland C++

10.1. Estructuras asignativas y selectivas

10.1.1. Diseñar un algoritmo que te envié el mensaje “Creación de aplicaciones” y


debajo de este el mensaje “utilizando Borland C++ 5.0”

Solución:

10.1.2. Escriba un algoritmo para calcular el área de un triángulo, el programa debe


leer la base y la altura.

Solución:

99
10.1.3. Escribir un programa que permita leer tres notas de un estudiante y luego
calcular el promedio de estas.

Solución:

10.1.4. Diseñar un algoritmo que permita calcular el precio total de una venta, el
alumno deberá de ingresar el precio del producto y la cantidad de este.

Solución:

100
10.1.5. Diseñar un algoritmo que permita ingresar la cantidad de un producto, el
precio de este y el % de descuento a aplicar, y luego mostrar:
- El subtotal = (precio) x (cantidad)
- El descuento = (subtotal) x (% de descuento)
- El total = (subtotal) – (descuento)
- El IGV = (18% total)
- El total a pagar = total + IGV

Solución:

10.1.6. Diseñar un algoritmo para calcular el área de un circulo, se debe de ingresar el


radio del círculo.

Solución:

101
10.1.7. Escriba un algoritmo que permita leer dos numeros y luego mostrar para estos
dos:
- La suma
- La diferencia
- El producto
- La división

Solución:

10.1.8. Diseñe un algoritmo que identifique si un número es positivo o negativo

Solución:

102
10.1.9. Diseñe un algoritmo que lea un número, si este es positivo se mostrara el
numero al cuadrado pero si este es negativo se finalizara el programa

Solución:

10.1.10. Escriba un programa que permita leer un numero compuesto por más
de un digito y luego mostrar el numero invertido.

Solución:

103
10.1.11. Diseñe un algoritmo que identifique si un numero ingresado es par o
impar

Solución:

10.1.12. Escriba un programa que lea un número y luego mostrar:


- Si el número ingresado es par y su cuadrado
- Si el numero ingresado es impar y su cubo.

Solución:

104
10.1.13. Diseñar un algoritmo que lea un número y luego realice lo siguiente:
Identificar si el número es positivos o negativo y si el número es o no múltiplo de
6.

Solución:

10.1.14. Diseñar un programa que permita ingresar 3 números y luego


identificar el mayor de estos.

Solución:

105
10.1.15. Diseñar un programa que permita ingresar 5 notas y se identifique la
nota mayor y la nota menor.

Solución:

106
10.1.16. Escriba un algoritmo que permita ingresar 6 notas y luego mostrar el
promedio de las 5 mejores nota.

Solución:

10.1.17. Diseñar un algoritmo que permita ingresar 5 temperaturas tomadas en


un día y luego de acuerdo al promedio de estas mostrar: Clima frio entre 10 º y
20 º, clima nublado entre 20 º y 30º y clima caluroso mayor a 30º

107
Solución:

10.1.18. Escribir un algoritmo que calcule la raíz cuadrada de un número


ingresado.

Solución:

10.1.19. Diseñe un algoritmo que permita ingresa 2 números y luego mostrar si


estos son iguales o diferentes y también cual es el mayor.

108
Solución:

10.1.20. Escribir un programa que permita leer una nota y escribir la condición
académica del estudiante en el curso, según la siguiente información:
- De 0 a 6 condición REPROBADO
- De 7 a 10 condición DESAPROBADO
- De 11 a 16 condición APROBADO
- De 17 a 20 condición EXCELENTE

109
Solución:

10.1.21. Diseñar un algoritmo con la función espejo, que permita ingresar un


texto y luego mostrar el texto invertido

Solución:

10.1.22. Diseñar un algoritmo donde se halle la función = volumen de un cubo,


el usuario debe de ingresar el lado del cubo.

110
Solución:

10.1.23. Escribir un programa que calcule un término de la serie de Fibonacci. El


usuario debe de ingresar un número y este será el término de la serie.

Solución:

10.1.24. Diseñe un programa que permita leer el promedio del ciclo anterior de
un estudiante y escribir la categoría a la que este pertenece, según la siguiente
información:
- De 0 a 5 categoría D
- De 6 a 10 categoría C
- De 11 a 15 categoría B
- De 15 a 20 categoría A

111
Solución:

10.1.25. Diseñar un programa que permita leer un número del 1 al 7 como


selector de los días de la semana y escriba el día de la semana
correspondiente al día.

Solución:

10.1.26. Diseñar un programa que contenga dos funciones:


- Resta (param1, param2): permite calcular la resta de 2 números enteros
- Multiplica (param1, param2): permite calcular el producto de dos números
enteros

112
Solución:

10.1.27. Diseñar un programa que permita leer un número entero y luego este
debe pasar como parámetro en una función sumar () y transformarlo sumando
la unidad al valor ingresado.

Solución:

10.1.28. Diseñar un algoritmo que te muestre la información siguiente:


Impresora, 12, 125,52; deben de ir uno debajo del otro y también alinear a la
derecha esta información.

113
Solución:

10.2. Estructuras repetitivas

10.2.1. Escribir un algoritmo que te muestre los números del 0 al 10 en una columna,
estos números deben estar uno debajo del otro.

Solución:

114
10.2.2. Diseñar un algoritmo que te muestre la tabla de multiplicar( del 0 al 12) de un
numero ingresado por el usuario

Solución:

10.2.3. Diseñar un algoritmo donde se ingrese dos números enteros y luego mostrar la
suma de los números desde el primer número ingresado hasta el segundo
número ingresado.

Solución:

115
10.2.4. Diseñar un algoritmo que te muestre la suma de los 200 primeros numeros
enteros.

Solución:

10.2.5. Diseñar un programa que permita ingresar las notas de un examen de 10


alumnos y luego mostrar: el número de alumnos aprobados, el número de
alumnos desaprobados y el promedio general de los alumnos.

116
Solución:

10.2.6. Diseñar un algoritmo que permita ingresar 5 notas y luego mostrar su


promedio real, el promedio redondeado hacia arriba y el promedio redondeado
hacia abajo.

Solución:

117
10.2.7. Escribir un programa que determine todas las soluciones enteras de la
ecuación A2 + B2= C2para A, B y C entre 1 y 25.

Solución:

10.2.8. Escribir un algoritmo para calcular la factorial de un número ingresado.

Solución:

118
10.2.9. Escriba un programa que permita leer un numero compuesto por más de un
digito y luego mostrar:
a) El número de dígitos
b) La suma de los dígitos totales
c) La suma de los dígitos pares
d) La suma de los dígitos impares

Solución:

10.2.10. Diseñar un algoritmo para calcular la siguiente sumatoria: ∑𝑖=𝑛


𝑖=1 𝑖
𝑖

Solución:

119
𝑥𝑖
10.2.11. Determinar la suma de los N primeros términos de la serie: ∑𝑖=𝑛
𝐼=1 1 + 𝑖!

Solución:

10.2.12. Diseñar un algoritmo para determinar la suma de los n primeros


1
números de la serie: ∑𝑖=𝑛
𝑖=1 𝑖2

Solución:

10.2.13. Diseñar un algoritmo para obtener la suma de los n primeros numeros


consecutivos.

120
Solución:

10.2.14. Diseñar un programa que permita leer nota y sexo de n alumnos (n


definido por el usuario) y luego generar un reporte que permita conocer la
cantidad de alumnos aprobados de sexo masculino.

Solución:

10.2.15. Diseñar un programa usando funciones que permita calcular la suma


𝑖
acumulada de la serie: ∑𝐼=𝑛
𝑖=1 el usuario ingresa el número de términos de la
𝑖+1
serie a sumar.

121
Solución:

10.2.16. Diseñar un algoritmo que permita ingresar las notas de un alumno y


luego mostrar:
- La cantidad total de notas
- La cantidad de notas pares
- La cantidad de notas impares
- La suma de las notas
- La nota menor

Solución:

122
10.3. Arreglos

10.3.1. Diseñar un programa que permita ingresar 10 notas por teclado. Luego
presente en pantalla el contenido del arreglo.

Solución:

123
10.3.2. Diseñar un programa que permita leer n notas y luego obtener la suma de
estas, el promedio y la nota menor.

Solución:

10.3.3. Diseñar un programa que permita leer nota y sexo de n alumnos (n definido
por el usuario) y luego generar un reporte que permita conocer la cantidad de
alumnos aprobados de sexo masculino.

124
Solución:

10.3.4. Diseñar un algoritmo que permita ingresar n elementos y luego mostrar la


cantidad de elementos que se repiten

Solución:

125
10.3.5. Escribir un algoritmo para leer una matriz A de nxn y luego calcular la suma de
la diagonal de la matriz.

Solución:

126
10.3.6. Diseñar un algoritmo para leer una matriz A nxn y luego mostrar la suma de los
elementos de las filas y columnas

Solución:

127
10.3.7. Diseñar un algoritmo para ingresar n datos y luego ordenarlos
ascendentemente

Solución:

128
10.3.8. Diseñar un programa que permita ingresar números enteros en una matriz
cuadrada de orden nxn (n es ingresado por el usuario), luego se pide mostrar:
- La suma de la diagonal de la matriz
- La suma de la fila ingresada por el usuario
- La suma de la columna ingresada por el usuario
- La matriz ordenada por filas.

129
Solución:

10.3.9. Diseñar un programa que permita ingresar 10 notas por teclado. Luego
presente en pantalla el contenido del arreglo.

Solución:

130
10.3.10. Diseñar un programa que permita ingresar números enteros en una
matriz de orden3x3, luego mostrarlo en forma ordenada por filas. Las filas deben
ser ordenadas en forma secuencial y ascendente.

Solución:

10.3.11. Escribir un programa que permita almacenar N elementos de tipo


entero a un vector y determinar lo siguiente:
- La suma de los elementos del vector.
- El promedio de los elementos del vector.
- Mostrar los elementos mayores al promedio.

131
Solución:

10.3.12. Escribir un programa que permita almacenar N elementos de tipo


entero a un vector y determinar lo siguiente:
- La suma de los elementos del vector.
- El promedio de los elementos del vector.
- Mostrar los elementos mayores al promedio.

132
Solución:

10.3.13. Diseñar un programa para leer una matriz de nxn elementos y calcular:
La suma de sus elementos por fila y por columna.

133
Solución:

134

You might also like