Professional Documents
Culture Documents
“MANUAL DE ALGORITMOS Y
LENGUAJE DE PROGRAMACIÓN”
2015
CONTENIDO
1
1. INTRODUCCIÓN (5)
2. OBJETIVO (5)
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)
2
8.2. Estructuras repetitivas (36)
8.3. Arreglos: Listas o Vectores y matrices o tablas (47)
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:
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
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.
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.
Instrucción Operados
0011 0000 0001
0101 0001 0011
Instrucción Operandos
Add [0] [1]
Mul [1] [3]
7. PSeInt
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.
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.
9
Barra de herramientas
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
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.
Ejemplo:
Operaciones de entrada
Acción
Operación de salida
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
Carácter
12
Caracteres o cadenas de caracteres encerrados entre comillas (pueden ser dobles
o simples). Ejemplos 'hola' "hola mundo" '123' 'FALSO' 'etc.'
7.6.2.Constantes
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
14
7.7. Expresiones
7.7.1.Operaciones
Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje reducido:
15
7.7.2.Funciones
7.7.3.Expresiones coloquiales
16
7.8. Procesos
Leer
Ejemplos:
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
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:
7.9. Sentencias
7.9.1.De asignación
7.9.2.Selectiva
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
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.
Representación:
Diagrama de flujo:
19
7.9.3. Selectiva repetitiva
Mientras
Representación:
Diagrama de flujo:
Para
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
Representación:
Diagrama de flujo:
21
7.10. Sentencias – Resumen
Doble
Múltiple
Repetitiva
Mientras
Para
Repetir
22
7.11. Funciones / Subprocesos
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.
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".
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.
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.
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.
26
8. Ejercicios resueltos en PSeInt
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:
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:
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:
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:
32
Solución:
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
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:
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:
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:
39
Solución:
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:
Solución:
8.2.13. Escribir un algoritmo que calcule la serie exponencial con tres dígitos exactos:
𝑛
𝑥
𝑋𝑖
𝑒 =∑
𝑖!
𝑖=0
42
Solución:
Solución:
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:
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:
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:
Solución:
49
Solución:
50
Solución:
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.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++
La evolución del C++ ha continuado con la aparición del Java, utilizada en la presente
década para realizar aplicaciones en internet.
Las dos primeras etapas conducen a un diseño detallado escrito en forma de algoritmo.
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
9.2.3.Codificación de un programa
Compilador
57
9.2.5.Verificación y mantenimiento del programa
Directivas definidas.
Una función principal main()
Declaraciones y definiciones de funciones secundarias (sentencias), declaradas por
el usuario.
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).
58
Ejemplos:
Los programas de C++ contienen una función main() la cuales llamada función
principal y es el punto inicial de entrada al programa.
9.3.3.La sentencia
getch();
Comentarios:
59
Los identificadores
Los identificadores son nombres usados para identificar a las variables, las
constantes, tipos, funciones y etiquetas en un programa, etc.
- 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.
Palabras reservadas
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.
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.
61
9.4.1.Variable
Tipo: Especifica si la variable contiene un número entero, número real, carácter u otro
tipo de dato.
Una variable antes de ser utilizada debe ser creada en la memoria del
computador mediante su declaración.
tipo_de_datonombreDeVariable = valor_inicial;
Si las variables son del mismo tipo se pueden declarar en simultáneo pero
separadas por una coma.
62
Cadena: Es el nombre arbitrario elegido para la variable de cadena.
9.4.2.Constantes
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.
Directiva #define
9.5.1.Operadores aritméticos
63
Evaluación de expresiones
Reglas:
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
Los casos en que una variable es incrementada o disminuida en uno, C++ proporciona
dos operadores unitarios.
65
9.6. Entradas y salidas básicas
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.
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.
Ejemplos:
66
Ejercicio: Usaremos la entrada y salida básica
#include <iostream.h>
#include <conio.h>
void main ()
clrscr ();
getch() ;
67
Ejemple: cout<< “CALCULAR PROMEDIO DE NOTAS\n”;
Los manipulares manipulan las salidas de los datos de la forma que el usuario lo desee.
68
Tabla de indicadores de formato para usarse con setiosflag
Ejemplo:
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:
Operadores de asignación
70
9.10. Procesos de control
Procesos Secuenciales
Procesos Selectivos
Procesos Repetitivos
<sentencia_1>;
<sentencia_2>;
- - - - - - - - - - - --
<sentencia _n >;
71
9.10.2. Procesos Selectivos
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.
if(expresión lógica)
sentencia ;
- Sentencias If
Ejemplo:
72
Proceso Selectivo Doble: Sentencia if-else (Dos alternativas)
if (expresión lógica)
sentencia_1 ;
else
sentencia_2 ;
- Sentencia If-else
Ejemplo:
if (( numero%2)==0)
else
- Observaciones
73
if(expresión lógica 1)
sentencia1;
else (expresión lógica 2)
sentencia2;
if (expresión lógica 3)
sentencia3;
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.
- Observaciones
Switch (a) {
- Reglas de uso
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.
75
Ejemplo:
Switch (día) {
76
- Sentencia while
do
{
sentencia_1;
sentencia_2;
sentencia _n;
} while (condición) (“sea verdad”)
- Sentencia do – while
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_3>;
}
- Sentencia for
78
9.11. Estructura de datos – Arreglos
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.
Datos estructurales
- ARREGLOS (arreglos)
- CADENAS (char)
- REGISTRO (Struct)
- ARCHIVO (File)
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.
Declaración de arreglos
- 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.
Índice Elemento
0 nota[0]
1 nota[1]
2 nota[2]
3 nota[3]
4 nota[4]
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] = 19;
nota[1] = nota[0] + 5;
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;
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.
82
Técnicas de búsqueda
o El algoritmo es simple
o La lista no necesita estar en ningún orden particular
índiceBuscado = i
FIN_SI
FIN_PARA
notas= { 8,10,10,11,12,13,15,17,18,19}
- Búsqueda binaria
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
Métodos de ordenación
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.
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.
85
Ejemplo: Pseudocódigo para ordenamiento descendente:
FIN_SI
FIN_PARA
FIN_PARA
FIN_SI
FIN_PARA
FIN_PARA
Matriz: Colección de datos compuestos por dos índices para ubicar los elementos de
las filas y las columnas de la matriz.
86
Declaración de los arreglos bidimensionales
- 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
Esto reserva espacio de memoria para un total de 4 números enteros (2x2) cuya
distribución gráfica es
Dos son los recorridos más usuales: recorrido por fila y recorridopor columna, en
ambos casos se requiere dos bucles anidados
87
El recorrido completo por filas se realiza con el siguiente código:
- 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.
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.
9.12.1. Introducción:
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
89
9.12.2. Funciones predefinidas
valor1 = sin(3.14159);
90
Funciones de biblioteca usadas en C++
Declaración de variables
91
tipo_dato_devuelo nombre_funcion Nombre_funcion (lista de parámetros)
<cuerpo de la función>;
Programa principal: Voidmain() {// llamadas a las funciones por sus nombre}
- Los prototipos
- Parámetros
92
9.12.4. Definición de una función
variables locales
<cuerpo de la 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:
La instrucción return forma parte del cuerpo de la función y tiene una doble
finalidad:
a) Devolver un valor
93
Ejemplo:
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.
Las funciones devuelven tipos de datos simples: entero, real, carácter o lógico.
94
Funciones con lista de parámetros y su valor devuelto
- Declaración de la función
- Definición de la función
{ <instrucciones>;
return;
- Declaración de la función
- Definición de la función
{ <instrucciones>;
return;
Procedimientos
95
La declaración de los procedimientos devuelve un valor de tipo void, es decir,
vacío/nada.
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.
96
- Partes necesarias de un procedimiento
Las funciones en C++ pueden establecer valores por omisión o ausencia (por
defecto) para los parámetros.
II. Variables
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.
Funciones recursivas
La Recursividad directa es el proceso por el cual una función se llama así misma
desde su propio cuerpo.
Recursividad
98
10. Problemas resueltos en Borland C++
Solución:
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:
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:
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:
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:
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:
107
Solución:
Solución:
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:
Solución:
110
Solución:
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:
Solución:
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:
113
Solución:
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:
116
Solución:
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:
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:
Solución:
119
𝑥𝑖
10.2.11. Determinar la suma de los N primeros términos de la serie: ∑𝑖=𝑛
𝐼=1 1 + 𝑖!
Solución:
Solución:
120
Solución:
Solución:
121
Solución:
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:
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:
131
Solución:
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