repaso 01: algoritmos y estructuras de control•secuenciales •selectivas •iterativas...
TRANSCRIPT
Estructuras de datos (Prof. Edgardo A. Franco)
1M. en C. Edgardo Adrián Franco Martínez http://[email protected]
@edfrancom edgardoadrianfrancom
Repaso 01: Algoritmos y estructuras de control
Solicitado: Ejercicios 01: Programación de algoritmos estructurados
Contenido• Como tratar un problema computacional• Algoritmo• Diagrama de flujo • Pseudocódigo• Programación estructurada• Teorema de la programación estructurada• Lenguajes de programación estructurada
• Estructuras de control• Secuenciales• Selectivas• Iterativas
• Sentencias de salto en C• Ejemplo del análisis y programación de un algoritmo• Problemas• Ejercicios 01: Programación de algoritmos estructurados
2
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Como tratar un problema computacional• Para resolver un problema primeramente este debe de
quedar claro para el programador, para poder abstraerlosegún un paradigma a una solución clara, para quefinalmente se implemente la solución diseñada en unlenguaje que soporte el paradigma empleado.
Análisis del problema
Diseño de la solución
Implementación del la solución
Abstracción del problema al paradigma de programación a
emplear
"Construcción de algoritmos"
3
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Algoritmo• Es un conjunto ordenado y finito de operaciones que
permite hallar la solución de un problema.
• Un algoritmo determinista es univoco, lo que implica que sise ejecuta varias veces el mismo algoritmo sobre un conjuntode datos de entrada, siempre se obtiene la misma solución ala salida. Además, el resultado debe generarse en un tiempofinito.
• Podemos decir que un algoritmo es una "receta", ya que si se sigue demanera correcta encuentran un resultado en un tiempo acotado.
4
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Diagrama de flujo• Existen distintas formas gráficas
de representar un algoritmo, eldiagrama de flujo es de lasprincipales representaciones.
• Un diagrama de flujo se utilizasímbolos con significados biendefinidos que representan lospasos del algoritmo, yrepresentan el flujo de ejecuciónmediante flechas que conectanlos puntos de inicio y detérmino. 5
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Pseudocódigo• El pseudocódigo es una descripción de alto nivel de un algoritmo
que emplea una mezcla de lenguaje natural con algunasconvenciones sintácticas propias de lenguajes de programación, ausar. Es utilizado para describir algoritmos en libros ypublicaciones científicas, y como producto intermedio durante eldesarrollo de un algoritmo.
• El pseudocódigo está pensado para facilitar a las personas elentendimiento de un algoritmo, y por lo tanto puede omitirdetalles irrelevantes que son necesarios en una implementación.
• Programadores diferentes suelen utilizar convenciones distintas,que pueden estar basadas en la sintaxis de lenguajes deprogramación concretos. Sin embargo, el pseudocódigo engeneral es comprensible sin necesidad de conocer o utilizar unentorno de programación específico, y es a la vezsuficientemente estructurado para que su implementación sepueda hacer directamente a partir de él.
6
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Programación estructurada• Es una forma de escribir programas de computadora
(paradigma de programación). Los principios que rigen esteparadigma de programación son el uso de únicamente tres
estructuras de control: secuencia, selección e iteración.
• Establece a grandes rasgos que toda función computablepuede ser implementada en un lenguaje de programaciónque combine subrutinas en únicamente tres formas. Esas tresformas (también llamadas estructuras de control) son:1. Ejecutar una subrutina y luego otra subrutina (secuencia)
2. Ejecutar una de dos subrutinas, dependiendo del valor de una variablebooleana (selección)
3. Ejecutar una subrutina mientras una variable booleana sea'verdadera' (iteración, ciclo o bucle).
7
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Teorema de la programación estructurada• En 1966 los matemáticos Corrado Böhm y Giuseppe Jacopini
demostraron que: "Un programa propio puede serescrito utilizando solamente 3 tipos de estructurasde control (Secuenciales, selectivas y repetitivas)".
• A su vez un programa propio:
• Posee un solo punto de entrada y uno de salida o fin.
• Existen caminos desde la entrada hasta la salida que sepueden seguir y que pasan por todas partes del programa.
• Todas las instrucciones son ejecutables (sin código muerto)y no existen lazos o bucles infinitos (sin fin).
8
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Lenguajes de programación estructurada• Un lenguaje de programación estructurada es aquel que
establece una sintaxis y semántica propia para expresarcomputaciones, y se basa en el teorema de la "programaciónestructurada", ofreciendo instrucciones para expresar las tresestructuras de control del teorema.
SECUENCIAIndica que las instrucciones de unprograma se ejecutan unadespués de la otra, en el mismoorden en el cual aparecen en elprograma. Se representagráficamente como una cajadespués de otra, ambas con unasola entrada y una única salida
SELECCIÓN También conocida como la estructuraSI-CIERTO-FALSO, plantea la selecciónentre dos alternativas con base en elresultado de la evaluación de unacondición o predicado; equivale a lainstrucción IF de todos los lenguajesde programación.
ITERACIÓN También llamada la estructuraHACER-MIENTRAS-QUE,corresponde a la ejecuciónrepetida de una instrucciónmientras que se cumple unadeterminada condición. 9
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Estructuras secuenciales• Son las sentencias (asignaciones e invocaciones a funciones)
escritas en el código fuente, cada una de estas será ejecutadade manera secuencial (en orden de aparición) una vezcompilado el fuente.
Instrucciónn
Instrucción1
Instrucción2
Instrucción3
Instrucción4
Diagrama de flujo Pseudocódigo
#include<stdio.h>
int main(void)
{
int byte=0xFF;
printf("\nEl valor de byte es: %4X H",byte);
byte&=0x00;
printf("\nEl valor de byte es: %4X H",byte);
byte|=0xFF;
printf("\nEl valor de byte es: %4X H",byte);
byte>>=1;
printf("\nEl valor de byte es: %4X H",byte);
byte<<=2;
printf("\nEl valor de byte es: %4X H",byte);
return 0;
}
Código en C
10
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Estructuras selectivas• Las estructuras selectivas se utilizan para tomar decisiones con
bases en la evaluación de una condición.
Diagrama de flujo Pseudocódigo Código en C
condición
no
si
Instrucciones
if(condición)
{
Instrucciones;
}
Selectiva simple
11
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
12
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Diagrama de flujo Pseudocódigo Código en C
if(condición)
{
Instrucciones1;
}
else
{
Instrucciones2;
}
Selectiva doble
condición
si
no
Instrucciones2
Instrucciones1
Diagrama de flujo Pseudocódigo Código en C
if(condición1)
{
Instrucciones1;
}
else if (condición2)
{
Instrucciones2;
}
else if (condición3)
{
Instrucciones3;
}
…
else
{
Instruccionesn;
}
Selectiva múltiple
condición1
si
no
Instrucciones1
condición2
Instrucciones2
no
si
condición3
si
no
13
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• La preposición de control de flujo if se utiliza para expresardecisiones, formalmente la sintaxis es:
if(expresión1)
{
sentencias1;
}
else if(expresión2)
{
sentencias2;
}
else if(expresión3)
{
sentencias3;
}
else
{
sentencias4;
}
*Las preposiciones else if(sino si) y else (sino) puedenomitirse.
14
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• Si (if) la expresión1 se evaluá y si esta es verdadera(diferente de 0) entonces se lleva a cabo el código inmediatoentre llaves.
• Sino si (else if) la expresión2 se evaluá y si esta esverdadera (diferente de 0) entonces se lleva a cabo el códigoinmediato entre llaves.
• Sino si (else if) la expresión3 se evaluá y si esta esverdadera (diferente de 0) entonces se lleva a cabo el códigoinmediato entre llaves.
• …
• Sino (else) si ninguna condición ha sido verdadera entoncesse lleva a cabo el código inmediato entre llaves.
15
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
#include<stdio.h>
int main(void)
{
float a,b;
printf("\nIntroduce dos números reales separados por una coma: ");
scanf("%f,%f",&a,&b);
if(a<0&&b<0)
{
printf("\nAmbos numeros son negativos");
}
else if(a>0&&b>0)
{
printf("\nLos dos numeros son positivo");
}
else if(a>0||b>0)
{
printf("\nUno de los dos numeros es positivo");
}
else if(a==0&&b==0)
{
printf("\nAmbos numeros son igual a cero");
}
else
{
printf("\n...");
}
return 0;
}
16
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• Una estructura selectiva del lenguaje c, que facilitaimplementar algunas decisiones múltiples cuando sepresentan todas con base en la evaluación de unaexpresión es switch-case.
switch(expresión)
{
case exp-constante1: <acción 1>;
break;
case exp-constante2: <acción 1>;
break;
...
case exp-constanteN: <acción N>;
break;
default: <acción M>;
}
17
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
#include<stdio.h>
int main(void)
{
short opcion;
printf("\nOpción 1");
printf("\nOpción 2");
printf("\nOpción 3");
printf("\nOpción 4");
printf("\nOpción 5");
printf("\nSelecciona una opción...");
scanf("%d",&opcion);
switch(opcion)
{
case 1: printf("\nOpción 1 seleccionada");
break;
case 2: printf("\nOpción 2 seleccionada");
break;
case 3: printf("\nOpción 3 seleccionada");
break;
case 4: printf("\nOpción 4 seleccionada");
break;
case 5: printf("\nOpción 5 seleccionada");
break;
default:printf("\nOpción no valida");
}
}
18
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Estructuras iterativas o repetitivas• Las estructuras repetitivas se utilizan para realizar varias
veces el mismo conjunto de operaciones con base en unacondición.
Diagrama de flujo Pseudocódigo Código en C
while(condición)
{
Instrucciones;
};
Iterativa "mientras"
condición
no
si
instrucciones
19
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• Con "repetir" se asegura que las instrucciones de dentro delciclo se ejecutan al menos una vez.
Diagrama de flujo Pseudocódigo Código en C
do
{
Instrucciones;
}while(!condición);
Iterativa "repetir"
condición
si
no
instrucciones
20
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• La estructura de control while evaluá la expresión antes decomenzar cada iteración, si esta es verdadera (diferente de 0)se realizan las sentencias de dentro de las llaves.
• La estructura de control do-while se utiliza cuando se quiereasegurar que las sentencias de dentro del ciclo se ejecuta almenos una vez puesto que la evaluación de la expresiónlógica se hace al final de este.
while(expresión)
{
Sentencias;
};
do
{
Sentencias;
}
while(expresión);
21
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• La estructura for permite definir un bucle controlado por uncontador, denominado variable de control o de inducción.
Diagrama de flujo Pseudocódigo Código en C
for(i=x;i<=n;i++)
{
instrucciones;
}
Iterativa "para"
i ≤ n
no
si
instrucciones
i ← i+1
i ← x
22
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
for(. . . ; . . .;. . .)
{
sentencias;
}
• El encabezado de un bucle for tiene tres partes separadas por";". En la primera se inicializan las variable de control y sólose ejecuta una vez, antes de la primera iteración, la segundaes una expresión que indica la condición lógica que debecumplirse para que la próxima iteración se ejecute; estacondición se evaluá antes de cada iteración y, cuando deja desatisfacerse, el bucle for termina. La tercera parte delencabezado es la actualización de las variables de control y seejecuta después de cada iteración.
23
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
#include<stdio.h>
int main(void)
{
int i,n;
for(i=0,n=10000;i<n;i++,n=n-i){
printf("\t%3d",i);
}
return 0;
}
24
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Sentencias de salto de C• En C hay sentencias para evitar la ejecución estrictamente
secuencial del programa. En general (sentencias goto, break ycontinue) no deben utilizarse para elaborar programasestructurados, aunque pueden ser útiles si se justifica enforma apropiada su aplicación en un código.
• return <expresión>;• Se usa para devolver el control del flujo de ejecución desde una
función, siendo <expresión> el valor (dato) retornado por ella.
• goto <etiqueta>; …. <etiqueta>: <acciones>• Permite efectuar un salto incondicional hasta otro punto del
programa, indicado por una etiqueta.
Estructuras de datos (Prof. Edgardo A. Franco)
25
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Sentencias de salto de C
• break;
• Se usa para romper el flujo en un switch-case o terminarsentencias iterativas (for, while, do-while).
• continue;
• Se puede usar en un bloque iterativo (for, while, do-while) paraforzar una nueva iteración del ciclo ignorando las sentencias queestán a partir de continue y hasta el fin del ciclo.
#include<stdio.h>
int main(void)
{
printf("\nEl programa ha iniciado");
printf("\nInstrucción 1");
printf("\nInstrucción 2");
goto se_me_antoja;
printf("\nInstrucción 3");
printf("\nInstrucción 4");
se_me_antoja:
printf("\nInstrucción 5");
}
Estructuras de datos (Prof. Edgardo A. Franco)
26
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
#include<stdio.h>
int main(void)
{
short i;
for(i=0;i<100;i++)
{
printf("\n%d",i);
break;
printf("\nDespues del break");
}
}
#include<stdio.h>
int main(void)
{
short i;
for(i=0;i<100;i++)
{
printf("\n%d",i);
continue;
printf("\nDespues del continue");
}
}
Estructuras de datos (Prof. Edgardo A. Franco)
27
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Ejemplo del análisis y programación de un algoritmo
• Problema 01
• Dado uno a uno 270 números enteros, obtengala suma de los números impares y el promediode los pares.
• Dado el problema anterior, es necesario realizar un algoritmo, paraprogramarlo de manera estructurada, utilizando de manera correctalas tres estructuras de control y los paradigmas de la programaciónestructurada.
Estructuras de datos (Prof. Edgardo A. Franco)
28
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Estructuras de datos (Prof. Edgardo A. Franco)
29
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
promedio_paressuma_impares
FIN
no
si
suma_par←0suma_impares←0numero_pares←0numero_datos←1
INICIO
numero_datos ≤ 270
dato
dato % 2 == 0
suma_par←suma_par + datonumero_pares ++
suma_impares←suma_impares + dato
promedio_pares←suma_pares/numero_pares
nosi
numero_datos ++
Algoritmo para el Problema 01
• Dada una correcta transformación del algoritmo a unprograma en C el resultado adecuado es el siguienteprograma./*
AUTOR: Edgardo Adrián Franco Martínez (C) Agosto 2012
VERSIÓN: 1.1
DESCRIPCIÓN: Programa solución al problema 6 del exámen ETS de Algoritmia y Programación Estructurada: "Dado uno a uno 270 números enteros, obtenga la suma de
los números impares y el promedio de los pares.". El programa se basa en el diagrama de flujo solución anterior.
OBSERVACIONES:
El programa recibe en el programa principal recibe uno a uno los 270 números por medio de la entrada estandar y no
se reliza una verificación de tipos por lo que una entrada incorrecta provocaria un fallo del programa.
COMPILACIÓN: gcc programa.c -o programa
EJECUCIÓN: programa.exe (En Windows) - ./programa (En Linux)
*/
//LIBRERIAS
#include<stdio.h> //Incluye las funciones estandar de entrada y salida
//PROGRAMA PRINCIPAL
int main (void)
{
int suma_par=0; //Almacena la suma acumulada de los pares
int suma_impares=0; //Almacena la suma acumulada de los impares
int numero_pares=0; //Almacena el conteo de los pares dados por la entrada estandar
int numero_datos=1; //Almacena el conteo del número de enteros recibidos
int dato; //Almacena el ultimo número entero introducido por el usuario
float promedio_pares;
//Mientras no se hayan recibido los 270 números de entrada
while(numero_datos<=270)
{
scanf("%d",&dato); //Leer el número entero dado
numero_datos++;
//Si el número recibido es par
if(dato%2==0)
{
suma_par+=dato; //Acumular la suma de pares
numero_pares++; //Aumentar el número de pares
}
//Si el número recibido es impar
else
{
suma_impares+=dato; //Acumular suma de impares
}
}
//Una vez recibidos los 270 números se cálcula el promedio de los pares
promedio_pares=(float)suma_par/(float)numero_pares;
//Se muestran las salidas del algoritmo
printf("Promdedio pares= %.2f\tSuma impares=%d",promedio_pares,suma_impares);
return 0;
}Estructuras de datos (Prof. Edgardo A. Franco)
30
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Codificación en C del Algoritmo para el Problema 01
• Viendo solo el programa principal "Función main()"int main (void)
{
int suma_par=0; //Almacena la suma acumulada de los pares
int suma_impares=0; //Almacena la suma acumulada de los impares
int numero_pares=0; //Almacena el conteo de los pares dados por la entrada
estandar
int numero_datos=1; //Almacena el conteo del número de enteros recibidos
int dato; //Almacena el ultimo número entero introducido por
el usuario
float promedio_pares;
//Mientras no se hayan recibido los 270 números de entrada
while(numero_datos<=270)
{
scanf("%d",&dato); //Leer el número entero dado
numero_datos++;
//Si el número recibido es par
if(dato%2==0)
{
suma_par+=dato; //Acumular la suma de pares
numero_pares++; //Aumentar el número de pares
}
//Si el número recibido es impar
else
{
suma_impares+=dato; //Acumular suma de impares
}
}
//Una vez recibidos los 270 números se cálcula el promedio de los pares
promedio_pares=(float)suma_par/(float)numero_pares;
//Se muestran las salidas del algoritmo
printf("Promdedio pares= %.2f\tSuma impares=%d",promedio_pares,suma_impares);
return 0;
}
Estructuras de datos (Prof. Edgardo A. Franco)
31
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Rangos del sueldo base Descuento de impuesto
$0.00 - $1000.00 5% del sueldo base
$1001.00 - $5000.00 15% del sueldo base
>$5000.00 30% del sueldo base
32
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• Problema 02
• Se necesita realizar un programa que calcule elsueldo neto de un trabajador, el programarecibirá el sueldo base del empleado y ledescontará el impuesto sobre la renta según lasiguiente tabla:
Diagrama de flujo que da solución al problema 02
33
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Algoritmo para el Problema 02
34
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• Problema 03
• Dados tres números enteros de entrada a, b y c,mostrarlos a la salida ordenados de formadescendente.
• E.g. si la entrada es:• a=6, b=5, y c=90;
• La salida será: 90, 6, 5.
• E.g. si la entrada es:• a=60, b=50, y c=9;
• La salida será: 60, 50, 9.
Diagrama de flujo que da solución al problema 03
35
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Algoritmo para el Problema 03
36
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• Problema 04
• Realizar un programa que calcule el cubo de unaserie de números positivos introducidos uno auno, si se introduce un número negativo sedeberá terminar el programa. El primer número aintroducir nunca será negativo.
• E.g. si la entrada es:• a=6, b=5, y c=90;
• La salida será: 216, 125, 729000.
• E.g. si la entrada es:• a=60, b=50, y c=9;
• La salida será: 216000, 125000, 729.
procedimiento Cubo
repetir
numero←Entrada()
cubo=numero*numero*numero
Salida() ←cubo
hasta que (numero<0)
fin procedimiento
Pseudocódigo que da solución al problema 04
37
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Algoritmo para el Problema 04
38
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
• Problema 05
• Realizar un programa que muestre la serie deFibonacci hasta el termino n, el cual es recibido alinicio y debe ser mayor a 2. Al mostrar la serie sedeberá mostrar termino a termino a la salida conun retraso de 0.5 segundos.
• Recordar que los dos primeros números de la serie son 0 y 1. El restose calcula como la suma de los dos números inmediatos que lepreceden.
• E.g. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …
procedimiento Fibonaccirepetir
n←Entrada()hasta que (n>2)primero ←0Salida() ←primeroEsperarMedioSegundo()segundo ←1Salida() ←segundoEsperarMedioSegundo()elemento ←3repetir
siguiente ←primero+segundoSalida() ←siguienteEsperarMedioSegundo()primero ←segundosegundo ←siguienteelemento ←elemento+1
hasta que(elemento>n)fin procedimiento
Pseudocódigo que da solución al problema 05
39
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez
Algoritmo para el Problema 05
Ejercicios 01: Programación de algoritmos estructurados
4040
• Programa de manera estructurada en ANSI C, la solución dada a losproblemas 02 al 05, respetando el algoritmo que se da como respuestaa el problema.
• Observaciones1. Documentar el código fuente (Ver programa de problema_01.c)2. Entregar un reporte con las pruebas (capturas de pantalla, tablas de
resultados a varias pruebas y explicaciones de cada problema)3. Incluir la redacción de cada problema, su algoritmo y su
implementación (código con formato).4. El reporte es individual y tiene portada, índice y encabezados de
pagina con número de pagina , titulo y nombre del alumno.5. Enviar vía Web en un archivo comprimido (ZIP, RAR o TAR), códigos y
reporte.
*Se entregará antes del día Viernes 19 de Agosto de 2016 (23:59:59 hora limite).
Estr
uct
ura
s d
e d
ato
sR
epas
o 0
1: A
lgo
ritm
os
y es
tru
ctu
ras
de
con
tro
lP
rof.
Edga
rdo
Ad
rián
Fra
nco
Mar
tín
ez