40
Estructuras de datos (Prof. Edgardo A. Franco) 1 M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Repaso 01: Algoritmos y estructuras de control Solicitado: Ejercicios 01: Programación de algoritmos estructurados

Repaso 01: Algoritmos y estructuras de control•Secuenciales •Selectivas •Iterativas •Sentencias de salto en C •Ejemplo del análisis y programación de un algoritmo •Problemas

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

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