Professional Documents
Culture Documents
5 Página # 1
Programación II
Índice
Tema 1: Teoría de Algoritmos
1.1. Teoría de los Algoritmos
1.2. Lenguaje C++
1.3. Resolución de Ejemplos
Ejemplo:
Problema: Determinar la Suma de dos números enteros.
Algoritmo (Solución del Problema):
Leer los dos números
Evaluar si los dos números leídos son enteros
Sumar los dos números
Presentar resultado de la operación
Características de un Algoritmo
Debe consistir en una secuencia de instrucciones claras y finitas.
Sus instrucciones deben ser legibles.
Debe plantearse correctamente y ha de resolver el problema en todas sus facetas.
Debe ser eficiente.
¿Qué es un Programa?
Es el conjunto de Instrucciones o Líneas de Códigos definidos a través de un lenguaje
de programación para llevar a cabo una determinada tarea y así resolver un problema
específico. Es decir es el proceso de planificar y formalizar una secuencia de
instrucciones dadas en Algoritmos, a través de la codificación por medio de un lenguaje
de programación, que han de seguir en una computadora para dar solución a un problema
planteado.
Proceso de la Programación
Para realizar un Programa por computadoras, hay que proponer primeramente una solución para
un problema específico, es decir, pensar en una estrategia para solucionarlo. Posteriormente, se
pasa al análisis en donde se averigua qué tipo de problema es y como le vamos a dar solución, así
como de seleccionar el lenguaje de programación a utilizar. Finalmente, se procede a elaborar el
programa en la computadora.
Estructura de un Algoritmo
La estructura general de un Algoritmo está basada particularmente del modelo de programación
estructurada, la cual consta de los puntos siguientes:
Diseño del problema de lo general a lo particular (Metodología TOP – DOWN)
Teorema de la Estructura (Secuencial, Alternativa y Repetitiva)
Algoritmo Nombre_Algoritmo;
Declaración de Variables:
Nombre_Variable: Tipo_Datos
INICIO
Instrucciones
FIN
Declaración de Variables
Consiste en definir los nombres de las variables a usar en el algoritmo y el tipo de datos a que
pertenece. Los tipos de datos básicos son: Enteros, Real, Carácter y Lógico. La instrucción de
está corresponde:
Declaración de Variables:
Nombre_Variable1, Nombre_Variable2: Tipo_Datos
El formato sería:
Nombre_Variable Valor Asignado
Ejemplo:
Salario 5000
Sexo ‘M’
Vacío True
PI 3.1416
A la operación de dar valor a una variable desde el teclado se le conoce como Lectura o
Entrada desde el Teclado. El formato sería:
Leer (Nombre_Variable)
Ejemplo:
Leer (Salario)
El formato sería:
Escribir (Nombre_Variable)
Ejemplo:
Escribir (Salario) reflejaría el valor de: 5000
Existe un segundo formato para la sentencia de Escritura de Datos que permite escribir
mensajes en la pantalla. Tales mensajes habrán de ir encerrados entre comillas dobles. La
sintaxis sería:
Ejemplo:
Escribir (“Bienvenido a mi Primer Programa”)
Ejemplo:
Escribir (“El salario mensual obtenido fue: ”, Salario)
Reflejaría: El salario mensual obtenido fue: 5000
3. Estructura de Control
Secuencia
Su Formato sería:
INICIO
Instrucción_1
Instrucción_2
Instrucción_3
….
FIN
Selectiva o Alternativa
Su Formato sería (Simple):
INICIO
SI (Condición) ENTONCES
Instrucción_1_A
Instrucción_2_A
….
SINO
Instrucción_1_B
Instrucción_2_B
….
FIN_SI
FIN
….
Valor_4:
Instrucción_1_D
Instrucción_2_D
….
SINO
Instrucción
FIN_EN CASO
FIN
Repetitiva o Bucle
Bucle Mientras:
Su Formato sería:
INICIO
Mientras (Condición) Haga
Instrucción_1
Instrucción_2
….
Instrucción que haga Falsa a la Condición
FIN_Mientras
FIN
Bucle Repetir:
Su Formato sería:
INICIO
Repita
Instrucción_1
Instrucción_2
….
Instrucción que haga Verdadera a la Condición
Hasta Que (Condición)
FIN
Bucle Desde:
Su Formato sería:
INICIO
Desde Nombre_Variable Valor_Inicial Hasta Valor_Final Haga
Instrucción_1
Instrucción_2
….
Nombre_Variable Nombre_Variable + Incremento
ó
Nombre_Variable Nombre_Variable – Decremento
FIN_Desde
FIN
Ejemplos:
1.- Formular un Algoritmo que permita leer 2 números enteros y escribir el mayor de los
dos. Si son iguales mandar un mensaje indicándolos que lo son
Solución
Definición del Problema
Si A > B entonces
Mensaje: El mayor es el número A
Si A < B entonces
Mensaje: El mayor es el número B
Si A = B entonces
Mensaje: Los dos números son iguales
Algoritmo Formulado
Algoritmo Ejemplo_1;
Declaración de Variables:
Num_1, Num_2: Enteros
INICIO
Limpiar_Pantalla
Escribir (“Comparación entre dos números dados”)
{Datos de Entradas}
Escribir (“Escriba el Primer Número: ”)
Leer (Num_1)
Escribir (“Escriba el Segundo Número: ”)
Leer (Num_2)
{Comparando los dos números}
SI (Num_1 > Num_2) ENTONCES
Escribir (“El mayor es el Num_1”)
SINO
SI (Num_1 < Num_2) ENTONCES
Escribir (“El mayor es el Num_2”)
SINO
Escribir (“Los números son iguales”)
FIN_SI
FIN_SI
FIN
2.- Leer un carácter y dos números enteros. Si el carácter leído es un operador aritmético
(+, –, *, /) calcular la operación correspondiente. Si es cualquier otro entonces mostrar un
mensaje de error.
Solución
Definición del Problema
Problema: Determinar la operación aritmética entre dos números enteros dados
Algoritmo Formulado
Algoritmo Ejemplo_2;
Declaración de Variables:
Num_1, Num_2: Enteros
Num_3 : Real
Operador : Carácter
INICIO
Limpiar_Pantalla
Escribir (“Operación Aritmética entre dos números dados”)
{Datos de Entradas}
Escribir (“Escriba el Primer Número: ”)
Leer (Num_1)
Escribir (“Escriba el Segundo Número: ”)
Leer (Num_2)
Escribir (“Escoja qué operación aritmética desea (+,-,*,/): ”)
Leer (Operador)
{Operación Aritmética}
EN CASO (Operador) SEA
‘+’:
3.- Formular un algoritmo que muestre el promedio de una serie de números que finaliza
al introducir el valor de –1. Este valor no debe ser tenido en cuenta para el promedio.
Solución
Definición del Problema
Problema: Determinar el promedio de los números introducidos desde el teclado.
Si Num_i = – 1
Sale de la introducción y suma del númerados. Y Calcula el promedio
Sino
Continúa introduciendo los datos.
Algoritmo Formulado
Algoritmo Ejemplo_3;
Declaración de Variables:
Num, Contador, Suma : Enteros
Promedio : Real
INICIO
Limpiar_Pantalla
Escribir (“Promedio de una Serie de Números”)
{Datos de Entradas}
Suma 0
Contador 0
Escribir (“Escriba el Primer Número: ”)
Leer (Num)
{Totalizando de Datos}
Mientras (Num < > – 1) Haga
Suma Suma + Num
Contador Contador + 1
Escribir (“Escriba el Siguiente Número: ”)
Leer (Num)
FIN_Mientras
{Determinando el Promedio}
SI (Contador = 0) ENTONCES
Escribir (“No se puede determinar Promedio”)
SINO
Promedio Suma / Contador
Escribir (“El promedio fue ”, Promedio)
FIN_SI
FIN
Solución
Definición del Problema
Problema: Determinar el factorial de un número entero positivo dado.
0! Y 1! = 1
5! = 5 * 4 * 3 * 2 * 1
9! = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
….
N! = N * (N – 1) * (N – 2) * (N – 3) * … * (N – (N – 1))
Algoritmo Formulado
Algoritmo Ejemplo_4;
Declaración de Variables:
Num, Controlador : Enteros
Factorial : Real
INICIO
Limpiar_Pantalla
Escribir (“Factorial de un Número Entero Positivo”)
{Datos de Entradas}
Escribir (“Escriba el Número: ”)
Leer (Num)
{Evaluando el número}
SI (Num < 0) ENTONCES
Escribir (“No se puede calcular el factorial de un número negativo”)
SINO
SI (Num = 0) ENTONCES
Factorial 1
Escribir (“El factorial de ”, Num, “ es de ”, Factorial)
SINO
Factorial 1
Desde Controlador Num Hasta 1 Haga
Factorial Factorial * Controlador
Controlador Controlador – 1
FIN_Desde
Escribir (“El Factorial de ”, Num, “ es de ”, Factorial)
FIN_SI
FIN_SI
FIN
Fichero Fuente y Programa o Código Fuente: Los programas C y C++ se escriben con la
ayuda de un editor de textos del mismo modo que cualquier texto corriente. Los ficheros que
contiene programas en C o C++ en forma de texto se conocen como Ficheros Fuentes, y el texto
del programa que contiene se conoce como Programa Fuente.
Librerías: Junto con los Compiladores de C y C++, se incluyen ciertos ficheros llamados
Librerías. Las librerías contienen el Código Objeto de muchos programas que permiten hacer
cosas comunes, como Leer desde el teclado, Escribir en la pantalla, Manejar números,
realizar funciones matemáticas, etc. Las Librerías están clasificadas por el tipo de trabajos
que hacen, hay Librerías de E/S, Librerías de Matemáticas, Librerías de Manejo de
Memoria, Librerías de Manejo de Textos, etc. Hay un conjunto de librerías muy especiales,
que se incluyen con todos los Compiladores de C y de C++. Son las Librerías ANSI o
Estándar. Pero también hay librerías no estándar, y dentro de estas las hay públicas y
comerciales.
Existe un programa que hace todas estas cosas, se trata del "Link", o Enlazador. El Enlazador
toma todos los Ficheros Objeto que componen nuestro programa, los combina con los ficheros
de librería que sea necesario y crea un Fichero Ejecutable. Una vez terminada la fase de
enlazado, ya podremos ejecutar nuestro programa.
Errores: Por supuesto, somos humanos, y por lo tanto nos equivocamos. Los errores de
programación pueden clasificarse en varios tipos, dependiendo de la fase en que se presenten.
Errores de Sintaxis.
Errores de Avisos.
Errores de Enlazado.
Errores de Ejecución.
Errores de Diseño.
Además, los programas escritos en C o C++ tienen ventajas importantes con respecto a otros
lenguajes de programación. Con la excepción del ensamblador, generan los programas más
compactos y rápidos. El código es transportable, es decir, un programa ANSI en C o C++ podrá
ejecutarse en cualquier máquina y bajo cualquier sistema operativo. Y si es necesario,
proporcionan un acceso a bajo nivel de hardware sólo igualado por el ensamblador.
Por último, existen varios compiladores de C y C++ gratuitos, o bajo la norma GNU, así como
cientos de librerías de todo propósito y miles de programadores en todo el mundo, muchos de
ellos dispuestos a compartir su experiencia y conocimientos.
La palabra “C++” hace referencia al lenguaje C++, un C Mejorado a su versión anterior. Por
tanto, Borland C++ 4.5 ha evolucionado a partir del lenguaje C original y ahora contiene
centenares de instrucciones, funciones y palabras claves, muchas de las cuales están directamente
relacionados con la interfaz gráfica de Windows.
El Entorno de Trabajo del Borland C++ 4.5 se denomina Entorno Integrado de Desarrollo
(IDE), ya que integra muchas funciones diferentes como el diseño, modificación, compilación y
depuración en un entorno común. En las herramientas de desarrollo más tradicionales, cada una
de esas funciones funcionaría como un programa diferente, cada una con su propia interfaz.
Los pasos para acceder al programa Borland C++ 4.5 se ilustra a continuación:
Ejemplos:
1.- Formule un Programa en C++ que permita leer 2 números enteros y escribir el mayor
de los dos. Si son iguales mandar un mensaje indicándolos que lo son
Solución
Algoritmo Formulado
Algoritmo Ejemplo_1;
Declaración de Variables:
Num_1, Num_2: Enteros
INICIO
Limpiar_Pantalla
Escribir (“Comparación entre dos números dados”)
{Datos de Entradas}
Escribir (“Escriba el Primer Número: ”)
Leer (Num_1)
Escribir (“Escriba el Segundo Número: ”)
Leer (Num_2)
{Comparando los dos números}
SI (Num_1 > Num_2) ENTONCES
Escribir (“El mayor es el Num_1”)
SINO
SI (Num_1 < Num_2) ENTONCES
Escribir (“El mayor es el Num_2”)
SINO
Escribir (“Los números son iguales”)
FIN_SI
FIN_SI
FIN
Escribiendo el Código Fuente
El Código Fuente en C++ sería:
#include <iostream.h>
#include <conio.h>
int main()
{
//Declaración de Variables
int Num_1, Num_2;
Archivos a Incluir:
#include <iostream.h>
#include <conio.h>
Segunda Parte: int main (). Es el principio de la definición de la función principal del
programa. En general, todas las funciones en C++ toman unos valores de entrada,
llamadas Parámetros o Argumentos y devuelven un valor de retorno. La primera
palabra int indica el tipo de valor de retorno de la función principal, que en este caso es
un número entero. La función main siempre devuelve un entero expresada por la palabra
reservada return 0. La segunda palabra es el nombre de la función lo cual es usada para
ser llamada o invocada en algún punto del código. El cuerpo de la función estará
limitados por las llaves {}.
Sintaxis:
int main()
{
return 0;
}
Tercera Parte: int Num_1, Num_2. Esta es nuestra primera sentencia, todas las
sentencias terminan con un punto y coma. Esta concretamente es una declaración de
variables. Una Declaración nos dice a nosotros y al compilador, que usaremos variables
Num_1 y Num_2 de tipo Entero (int). Esta declaración obliga al compilador a reservar un
espacio de memoria para almacenar las variables Num_1 y Num_2, pero no le da ningún
valor inicial. En general, todas las variables declaradas contendrán valores basuras, es
decir, lo que hubiera en esa zona de memoria cuando se reservó espacio para ellas. En
C++ es obligatorio declarar las variables que usará el programa.
Sintaxis:
Tipo_Datos Nombre_Variables;
Cuarta Parte: cout<< y cin>>. Sentencias equivalente al Escribir y Leer del Algoritmo.
Sintaxis:
cout<< “Mensaje”<<Nombre_Variable;
cin>>Nombre_Variable
Sintaxis:
If (Condición)
{
Instrucciones
}
else
{
Instrucciones
}
Tarea:
I.- Formular los programas para los Algoritmos siguientes:
Algoritmo Formulado
Algoritmo Ejemplo_2;
Declaración de Variables:
Num_1, Num_2: Enteros
Num_3 : Real
Operador : Carácter
INICIO
Limpiar_Pantalla
Escribir (“Operación Aritmética entre dos números dados”)
{Datos de Entradas}
Escribir (“Escriba el Primer Número: ”)
Leer (Num_1)
Escribir (“Escriba el Segundo Número: ”)
Leer (Num_2)
Escribir (“Escoja qué operación aritmética desea (+,-,*,/): ”)
Leer (Operador)
{Operación Aritmética}
EN CASO (Operador) SEA
‘+’:
Num_3 Num_1 + Num_2
Escribir (“El Resultado de la operación fue ”, Num_3)
‘–‘:
Num_3 Num_1 – Num_2
Escribir (“El Resultado de la operación fue ”, Num_3)
‘*’:
Num_3 Num_1 * Num_2
Escribir (“El Resultado de la operación fue ”, Num_3)
‘/‘:
Num_3 Num_1 / Num_2
Escribir (“El Resultado de la operación fue ”, Num_3)
FIN_EN CASO
FIN
B) Obtener el promedio de una serie de números que finaliza al introducir el valor de –1.
Este valor no debe ser tenido en cuenta para el promedio.
Algoritmo Formulado
Algoritmo Ejemplo_3;
Declaración de Variables:
{Totalizando de Datos}
Mientras (Num < > – 1) Haga
Suma Suma + Num
Contador Contador + 1
Escribir (“Escriba el Siguiente Número: ”)
Leer (Num)
FIN_Mientras
{Determinando el Promedio}
SI (Contador = 0) ENTONCES
Escribir (“No se puede determinar Promedio”)
SINO
Promedio Suma / Contador
Escribir (“El promedio fue ”, Promedio)
FIN_SI
FIN
Algoritmo Formulado
Algoritmo Ejemplo_4;
Declaración de Variables:
Num, Controlador : Enteros
Factorial : Real
INICIO
Limpiar_Pantalla
Escribir (“Factorial de un Número Entero Positivo”)
{Datos de Entradas}
Escribir (“Escriba el Número: ”)
Leer (Num)
{Evaluando el número}
SI (Num < 0) ENTONCES
Escribir (“No se puede calcular el factorial de un negativo”)
SINO
SI (Num = 0) ENTONCES
Factorial 1
Escribir (“El factorial de ”, Num, “ es de ”, Factorial)
SINO
Factorial 1
Desde Controlador Num Hasta 1 Haga
Factorial Factorial * Controlador
Controlador Controlador – 1
FIN_Desde
Escribir (“El Factorial de ”, Num, “ es de ”, Factorial)
FIN_SI
FIN_SI
FIN
II.- Obtener el Algoritmo y Programa para cada uno de los problemas siguientes:
b) Leer las cantidades de toneladas de maíz producidas por los países de México, Nicaragua
y Canadá, calcular e imprimir el porcentaje de producción de cada uno de esos países.
c) Leer los votos obtenidos por los 3 candidatos por la Alcaldía Municipal, calcular e
imprimir al ganador. Se desconoce el número de votantes.
d) Leer dos números enteros distintos, donde el primero es mayor que el segundo y que
totalice los números comprendidos entre ellos, sin incluirlos.
e) Sean los datos a, b, c, d. Elabore algoritmos independientes para leer los datos, resolver e
imprimir el resultado de cada uno de los siguientes incisos:
Teniendo en cuenta que el área de un cilindro es igual a la suma de las áreas de los dos
círculos más el área del rectángulo formado por la longitud de la circunferencia y la altura
del cilindro y que el volumen se obtiene multiplicando la superficie de la base del círculo
por la altura del cilindro.
ax + by = c
dx + ey = f
ce − bf af − cd
x= y=
ae − bd ae − bd
h) Una persona recibe un préstamo de $10,000.00 de un banco y desea saber cuánto pagará
de interés al terminar el mes si el banco le cobra una tasa del 2% mensual.
i) Sean los datos: x, a1, a2, a3, a4; Elabore un diagrama de flujo para calcular:
j) Elabore un Algoritmo que lea dos valores numéricos a y b y los imprima en orden
ascendente.
k) Una empresa desea conocer el monto de comisión correspondiente a una venta realizada
por un vendedor bajo las siguientes condiciones. Si la venta es menor a $1,000.00, se le
otorga el 3% de comisión. Si la venta es de $1,000.00 o más, el vendedor recibe el 5% de
comisión.
l) Elabore un Algoritmo que lea un dato entero e imprima si ese dato es par o impar.
m) Una agencia automotriz ofrece planes de crédito para la adquisición de los diferentes
modelos de automóviles. Si el automóvil vale más de $250,000.00 la agencia solicita un
35% de enganche y el resto debe cubrirse en 24 mensualidades sin intereses. Si el
automóvil tiene un valor máximo de $250,000.00 se requiere un enganche del 25% y el
resto se debe pagar en 18 mensualidades sin intereses.
Elabore un Algoritmo para calcular cuánto se debe pagar por un boleto de tren dando
como datos el total de Km recorridos y el número de días entre el viaje de ida y el viaje de
vuelta.
a) 850 Km y 10 días.
b) 356 Km y 8 días.
o) Elabore un Algoritmo para resolver ax2 + bx + c = 0 en el caso de raíces reales. Los datos
son: a, b, c. Puede usar las operaciones que necesite. Asegúrese que el resultado sea
válido.
Análisis del problema:
Si a <> 0 se presentan tres casos:
Primero con dos soluciones dadas con la fórmula que da la solución de la ecuación
de segundo grado cuando el discriminante es positivo.
Segundo con una solución dada por la fórmula cuando el discriminante es cero.
Tercero con dos soluciones complejas, dadas por la fórmula cuando el
discriminante es negativo.
3x + 3 6 s i x≤ 1 1
r) Elabore un Algoritmo que
x2 − 1 0 s i 1 1< x ≤ 3 3 calcule la siguiente
y = f ( x) = función:
x+ 6 s i 3 3< x ≤ 6 4
0 p a r alo sd e m ávsa lo r ed sex
1 0 *0v s i n u m= 1
1 0 *0*v s i n u m= 2
y = f (v) =
1 0 /0v s in u m= 3
0
p a r ca u a l q uoi tre rov a lod ren u m
Datos: num, v
Donde:
num es una variable de tipo entera.
v es una variable de tipo entera.
t) Elabore un Algoritmo para que, dados dos números enteros a, b y una clave, realice la
operación aritmética indicada por medio de la clave a los números dados. Por ejemplo, si
los datos son: 8 4 +, el algoritmo debe calcular la suma de 8 + 4. Las claves válidas
son: + - * /.
u) Elabore un Algoritmo para leer una serie de enteros positivos, contar los valores
introducidos y calcular su promedio. El final de los datos se indicará con un número
negativo.
v) Una tienda desea obtener una serie de reportes diarios a partir de las ventas realizadas en
un día. Elabore un Algoritmo que:
Se desconoce el número de ventas que se realizan en un día, por lo que el final de los
datos se indica con un –1. Suponga que el IVA es del 15%.
w) Elabore un Algoritmo, que dada una n entera, con 1 ≤ n ≤ 100, imprima los primeros n
números naturales en orden ascendente.
x) Elabore un Algoritmo, que dada una n entera, con 1 ≤ n ≤ 100, imprima los primeros n
números naturales en orden descendente.
aa) Elabore un Algoritmo para leer n enteros, calcular e imprimir su suma y su promedio.
dd) Elabore un Algoritmo, que calcule mn (n > 0 y entero) sin utilizar potencia.
ee) Elabore un Algoritmo que dado un valor n entero con n ≥ 1, calcule e imprima la
siguiente sumatoria:
∑i
i =1
i
ff) Elabore un Algoritmo que dado un número n entero positivo, imprima todos sus
divisores.
x 2 − 3 s i x≤ 0
y = f ( x) = x 2 + 4 s i 0 < x ≤ 1 0
x + 5 s i x> 1 0
y dados los valores k,x1,x2,..,xk, Elabore un Algoritmo para calcular f(xi) para i = 1,2...,k.
hh) Dados los datos: a, b, c, d; Elabore un Algoritmo para cada uno de los siguientes
problemas:
f) Hallar el mayor.
g) Hallar el menor.
h) Hallar el mayor y el menor.
ii) Dados los datos: n, a1, a2,..., an con n > 0, Elabore un Algoritmo para encontrar el
máximo de los ai.
i) si n≥ 0 calcule n!
j) si n<0 escriba un mensaje de error y no calcule nada.
kk) Sean los datos m y n enteros positivos, Elabore un diagrama de flujo para calcular el
Máximo Común Divisor y el Mínimo Común Múltiplo de m y n. El Algoritmo de
Euclides establece que, si m>=n, MCD(m,n) = MCD(n, m mod n).
ll) Construya un Algoritmo que calcule e imprima los 150 primeros números de la serie de
Fibonacci. Recuerde que los dos primeros números de la serie son 0 y 1. El resto se
calcula como la suma de los dos números que lo preceden.
mm) En una guardería hay 25 niños de 1, 2 y 3 años. Los niños de 1 año consumen 6
pañales al día, los niños de 2 años consumen 3 pañales diarios y los niños de 3 años
consumen 2 pañales diarios. Se desea conocer el consumo total de pañales diarios.
Datos: edad1
edad2
.....
edad25
donde edadi representa la edad del i–ésimo niño en años cumplidos (1, 2 ó 3).
nn) Una empresa que cuenta con k empleados desea realizar algunos cálculos para la nueva
nómina. Los datos con que cuenta son los sueldos de los k empleados:
Elabore un Algoritmo para leer los datos y contestar a las siguientes preguntas:
oo) Una empresa tiene n empleados, por los que aporta al INATEC el 2% de la nómina y al
INSS el 15%. Donde los datos son:
n, s1, s2,..., sn
Donde:
Elabore un Algoritmo para leer los datos y contestar a las siguientes preguntas:
t) ¿Cuál es el promedio del alumno por semestre? Indique tanto el promedio como el
semestre.
u) ¿Cuál es el promedio que obtuvo en la carrera?