Tema 5

95
TEMA V. FUNDAMENTOS DE ALGORITMOS Ing. Dulce Mónica Castillo Corona

Transcript of Tema 5

Page 1: Tema 5

TEMA V.

FUNDAMENTOS

DE ALGORITMOS

Ing. Dulce Mónica

Castillo Corona

Page 2: Tema 5

5.1. COMPUTABILIDAD Y

CONCEPTO DE ALGORITMO :

MÁQUINA DE TURING

Existieron varios intentos de formalizar la noción de procedimiento efectivo, pero el primero en ser aceptado se llevó a cabo por Alan Turing en los años 30, dando como resultado la máquina de Turing; la importancia de este trabajo, radica en que es el primer análisis general para comprender como es que se realiza un cálculo, y condujo a una abstracción convincente y ampliamente aceptada del concepto de procedimiento efectivo.

Page 3: Tema 5

Es importante mencionar que el análisis de Turing fué hecho antes de la invención de las calculadoras de escritorio y que sus resultados condujeron más o menos de forma directa a la invención de la computadora digital de John Von Neumann en los años 40, una máquina que básicamente tiene la misma arquitectura que las computadoras actuales.

Además, es importante notar que para Turing una “computadora” es una persona que resuelve un problema computacional en una forma mecánica y no se refiere a una máquina.

5.1. COMPUTABILIDAD Y

CONCEPTO DE ALGORITMO :

MÁQUINA DE TURING

Page 4: Tema 5

5.1. COMPUTABILIDAD Y

CONCEPTO DE ALGORITMO :

MÁQUINA DE TURING

Page 5: Tema 5

Una máquina de Turing consiste de una cabeza de lectura/escritura y una cinta infinita dividida en cuadros como lo muestra la figura. Cada celda de la cinta puede estar en blanco o tener almacenado un símbolo de un alfabeto finito de símbolos. La cinta puede estar inicialmente vacía (todas las celdas en blanco), o tener un número finito de celdas que contienen algún símbolo. En cualquier momento, la cabeza puede leer el contenido de la celda y posteriormente borrar el símbolo, dejarlo igual ó sustituirlo con algún otro símbolo. Después, la cabeza puede moverse una posición a la derecha, una posición a la izquierda ó quedarse en la misma posición. Si la celda se encuentra vacía, la cabeza puede dejarla vacía o grabar algún símbolo.

5.1. COMPUTABILIDAD Y

CONCEPTO DE ALGORITMO :

MÁQUINA DE TURING

Page 6: Tema 5

Los algoritmos permiten encontrar la solución a problemas computables. Intuitivamente las personas efectuamos cotidianamente una serie de pasos, procedimientos o acciones que nos permitan alcanzar algún resultado o resolver un problema (al bañarnos, al desayunar, al ir a la universidad). En realidad todo el tiempo estamos aplicando algoritmos para resolver problemas.

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 7: Tema 5

Un algoritmo es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.

Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un estado final, obteniendo una solución.

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 8: Tema 5

Etapas o pasos para la creación de un programa

1.Definición del problema. La cual deberá ser clara y precisa.

2.Análisis del problema:

a) Inf. que se necesita para obtener el resultado seseado (datos de entrada).

b) Inf. que se desea producir (datos de salida).

c) Métodos y fórmulas para procesar datos y producir esa salida.

3.Diseño y técnicas para la formulación de un algoritmo. Se centra en desarrollar el algoritmo basándonos en las especificaciones de la etapa del análisis y esto lo haremos mediante un diagrama de flujo o un pseudocódigo.

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 9: Tema 5

4. Codificación. Se transcribe el algoritmo definido en la etapa de diseño e algún lenguaje de programación al cual se le conoce como código fuente.

5. Prueba y depuración. Consiste en capturar datos hasta que el programa funcione correctamente. A la actividad de localizar errores se le llama depuración . Existen dos tipos de sintaxis de y de lógica.

a) Sintaxis: es la prueba más sencilla y la realiza el compilador del programa cada vez que se ejecuta el programa hasta que el código no presente errores , es decir que la sintaxis que requiere el lenguaje sea la correcta.

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 10: Tema 5

b) Prueba lógica: Es la más complicada por que esta la realiza e programador; consiste en la captura de diferentes valores y revisar que el resultado sea el deseado.

6. Documentación. Es la guía o comunicación que permite al programador o al usuario conocer la funcionalidad del programa:

a) Interna: Se genera con el mismo código y generalmente es mediante comentarios.

b) Externa: Son los manuales es independiente del programa. También puede ser la ayuda en el mismo sw.

7. Mantenimiento. En algunas ocasiones será necesario realizarle al programa ciertas modificaciones o ajustes para que siga funcionando perfectamente.

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 11: Tema 5

Reglas de los algoritmos:

› Preciso: implica el orden de realización de cada uno de los pasos

› Definido: si se sigue dos veces, se obtiene el mismo resultado.

› Finito: Tiene un numero determinado de pasos, implica que tiene un fin

› Correcto.

› Debe tener al menos una salida.

› Debe ser sencillo y legible.

› Eficiente y efectivo.

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 12: Tema 5

La solución de un problema complejo puede requerir muchos pasos, es necesario dividir el problema en sub problemas más sencillos de resolver. • Este método se denomina divide y vencerás y es aplicable a la resolución y escritura de algoritmos y programas para computadora. • Este método de división de un problema en otros sub problemas más sencillos se puede expresar para conseguir su solución en una computadora, mediante el método denominado diseño descendente. • El proceso de la rotura de un problema principal en etapas o Sub problemas más sencillos se denomina refinamiento paso a paso o sucesivos.

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 13: Tema 5

Problema del

cálculo

del área del

rectángulo Entrada

de

Datos

Salida del

resultado

Calculo

del area Entrada

altura

Entrada

base

Area =

base x

altura

Salida

Altura Salida

Area

Salida

Base

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 14: Tema 5

TIPOS DE ALGORITMOS

Cualitativos.

Son aquellos en los que se describen los pasos utilizando palabras.

Ejemplos:

La elaboración de un a receta

Búsqueda de un número telefónico

El cambio de una llanta

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 15: Tema 5

Cuantitativos

Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.

Ejemplos:

› Pasos a seguir para resolver una ecuación de segundo

grado.

› Pasos a seguir para calcular los sueldos de los empleados de una empresa.

› Instrucciones para calcular los impuestos a pagar de los vecinos de un municipio.

5.2. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 16: Tema 5

Pseudocódigo Es la combinación del lenguaje natural, símbolos, términos

utilizados dentro de la programación. Algoritmo para calcular el área de un triángulo 1. Inicio. 2. Solicitar y leer los datos (base y altura) 3. A=(bxh)/2 4. Mostrar A 5. Fin

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 17: Tema 5
Page 18: Tema 5

Definir si un numero es positivo o negativo

1. Inicio

2. escribir "introduce un número: "

3. leer número

4. si número >= 0 entonces

5. escribir "es positivo"

6. sino

7. escribir "es negativo"

8. fin si

9. fin

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 19: Tema 5

1. Inicio

2. ESCRIBIR "Introduce un número: "

3. LEER numero

4. SI (numero mod 2=0) ENTONCES

5. ESCRIBIR "es par"

6. SINO

7. ESCRIBIR "es impar"

8. FIN SI

9. FIN PROGRAMA

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 20: Tema 5

Diagramas de flujo

Los diagramas de flujo son una manera de representar visualmente el flujo de datos a través de sistemas de tratamiento de información. Los diagramas de flujo describen que operaciones y en que secuencia se requieren para solucionar un problema dado.

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 21: Tema 5

› Todo diagrama debe tener un inicio y un fin. › Se deben se usar solamente líneas de flujo

horizontales y/o verticales. › Se debe evitar el cruce de líneas utilizando los

conectores. › Se deben usar conectores solo cuando sea

necesario. › No deben quedar líneas de flujo sin conectar. › Se deben trazar los símbolos de manera que

se puedan leer de arriba hacia abajo y de izquierda a derecha.

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 22: Tema 5

› Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras.

› Evitar la terminología de un lenguaje de programación o máquina.

› Utilizar comentarios ya sea al margen o mediante el símbolo grafico comentarios para que este sea entendible por cualquier persona que lo consulte.

› Si el diagrama abarca mas de una hoja es conveniente enumerarlo e identificar de donde viene y a donde se dirige.

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 23: Tema 5
Page 24: Tema 5

Diagrama de flujo para obtención del área del triángulo

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 25: Tema 5

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Construir un algoritmo que permita calcular el jornal

básico de un obrero, si para ello se requiere ingresar

por teclado la tarifa horaria y el numero de horas

trabajadas. La formula del jornal es :

Jornal= TarHora * NroHora

Page 26: Tema 5

Proceso sueldo

Leer TarHora;

Leer NroHoras;

Jornal<-TarHora*NroHoras;

Escribir “Jornal”, Jornal;

FinProceso

Page 27: Tema 5

Diagrama de flujo para

obtención del mayor de dos

números

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Proceso compnumeros

Leer a;

Leer b;

Si a>b Entonces

Escribir "a es mayor";

Sino

Escribir "b es mayor";

FinSi

FinProceso

Page 28: Tema 5

Proceso pares

Escribir "DAME EL VALOR DE X";

Leer x;

Si (x mod 2=0) Entonces

Escribir "X ES PAR";

Sino

Escribir "X ES IMPAR";

FinSi

FinProceso

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

VERIFICAR SI UN

NUMERO ES PAR O

IMPAR

Page 29: Tema 5

Area del circulo y volúmen con el mismo radio

1.Principal ()

2.Inicio

3.cte pi 3.1416

4.real r, area, vol

5.Imprimir “area y volumen de un esfera en

cm”

6.Imprime “Dame el radio”

7.Leer radio

8.area = pi *r*r

9.Imprimir “Area del circulo es =”, area

10.vol =(4/3)*pi *r*r*r

11.Imprimir “volumen de la esfera es =“, vol,

“cm cúbicos”

12.Fin

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 30: Tema 5

Imprimir si la persona es niño, adolescente, adulto o anciano.

a)0 a 12 es niño

b)13 a 17 es adolescente

c)18 a 80 es adulto

d)Mayor a 80 es anciano

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 31: Tema 5

Proceso edad

Leer edad;

Si edad >= 0 Entonces

Si (edad >= 0 y edad <= 12) Entonces

Escribir "ERES UN NIÑO";

Sino

Si edad >= 13 y edad <= 17 Entonces

Escribir "ERES UN ADOLESCENTE"

Sino

Si edad >= 18 y edad <= 80 Entonces

Escribir "ERES UN ADULTO"

Sino

Escribir "ERES UN ANCIANO"

Fin Si

Fin Si

Fin Si

Sino

Escribir "edad incorrecta";

Fin Si

FinProceso

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 32: Tema 5
Page 33: Tema 5

Mostrar los primeros 10 números positivos Inicio

Entero i

i=1

Mientras (i<=10)

Inicio

Imprimir i

i=i+1

FinMientras

Fin

5.3. REPRESENTACIÓN DE LOS

ALGORITMOS (DIAGRAMA DE

FLUJO Y PSEUDOCÓDIGO)

Page 34: Tema 5

Tipos de datos

El tipo de datos es un conjunto (rango) de

valores que puede tomar durante un

programa . Con lo que se quiere decir que el

tipo de dato determina la naturaleza del

conjunto de valores que puede tomar una

variable. Cabe resaltar que si se utilizamos

valores fuera de rango correspondiente, el

compilador no sabrá que hacer con dicho

dato e imprimirá en pantalla datos erróneos.

5.4. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 35: Tema 5

La asignación de tipos a los datos tienen dos objetivos principales:

Detectar errores de operaciones en programas.

Determinar como ejecutar las operaciones.

Los datos que utilizan los programas y algoritmos se pueden

clasificar como simples y compuestos.

Datos simples: numéricos (enteros y reales), lógicos (booleanos) y

caracteres.

TIPO

TAMAÑO (bytes)

int (entero) 2 float (flotante) 4 double ( flotante de doble precisión) 8 char (carácter) 1

5.4. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 36: Tema 5

Los tipos de datos predefinidos son: numéricos, lógicos, caracteres y

cadenas. De estos tipos solo el cadena es de tipo compuesto, el resto,

son los tipos de datos simples considerados estándares. Esto quiere decir

que la mayoría de los lenguajes de programación permiten trabajar con

ellos.

Los enteros no tienen fracciones o decimales pueden ser negativo o

positivos

Tipo reales o de coma flotante (float/double). Contienen un punto decimal

pueden ser positivos o negativos formando el subconjunto de números

reales.

5.4. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 37: Tema 5

Datos lógicos o booleanos. Hay lenguajes que solo

pueden tomar uno de dos valores verdadero(true) o

falso (false). En C no existe el tipo lógico pero se puede

implementar con un número entero, 0 es falso y

cualquier número diferente de cero es verdadero.

Caracteres. En el interior de la computadora se hacen

“palabras” de 8 bits y así poder representar todos los

caracteres del código ASCII.

5.4. ELEMENTOS DE LOS

ALGORITMOS Y TIPOS DE

DATOS

Page 38: Tema 5

Estructura Secuencial…

Es la estructura más sencilla ya

que el programador identifica los

datos de entrada, los procesa y

muestra o imprime los datos de

salida.

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 39: Tema 5

Principal

Inicio ()

Instrucción 1

Instrucción 2

.

.

.

Instrucción n

Fin

main ()

{

inst 1;

inst 2;

inst 3;

.

.

.

.

inst n;

}

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 40: Tema 5

Suma de 2 números

Page 41: Tema 5

1. /*SUMA DE DOS NUMEROS ENTEROS*/

2. #include <stdio.h>

3. #include <stdlib.h>

4. main ()

5. {

6. int n1,n2,suma;

7. system ("cls");

8. printf ("DAME EL VALOR DEL PRIMER NUMERO: ");

9. scanf ("%i",&n1);

10. printf ("\nDAME EL VALOR DEL SEGUNDO NUMERO: ");

11. scanf ("%i",&n2);

12. suma =n1+n2;

13. printf ("\nEL RESULTADO ES:%i ",suma);

14. system (”pause”);

15. return 0;

16. }

Page 42: Tema 5

En C todo aquello que se encuentre

dentro del (/*) y fin (*/) de un comentario.

Los comentarios delimitados por estos

símbolos pueden ocupar varias líneas .

Cuando se utilice el símbolo // , se

tendrá que escribir al principio de cada

renglón.

# include <stdio.h>

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 43: Tema 5

Área del círculo y Volúmen de una esfera con el

mismo radio

Page 44: Tema 5

1. /*radio y volumen*/

2. #include <stdio.h>

3. #include <stdlib.h>

4. #define PI 3.14159

5. main ()

6. {

7. float radio, area, volumen;

8. system ("cls");

9. printf ("ESTE PROGRAMA CALCULA EL AREA Y VOLUMEN DE UNA ESFERA A PARTIR DE SU

RADIO\n\n");

10. printf ("CUANTO MIDE EL RADIO?: " );

11. scanf ("%f",&radio);

12. area= PI*radio*radio;

13. printf ("\nEl area del circulo es %.2f cm",area);

14. volumen=(4./3)*PI*radio*radio*radio;

15. printf ("\nEl volumen de la esfera es %.2f cm cubicos",volumen);

16. system (”pause”);

17. return 0;

18. }

Page 45: Tema 5

Una tienda vende libros a $100, cuadernos a $15.50 y plumas a

$2.35. Calcule el monto de la venta según el número de artículos

vendidos

Page 46: Tema 5
Page 47: Tema 5

Estructura selectiva o condicional…

Es una estructura con una sola entrada y una sola salida en la cual se

realiza una acción( una o varias instrucciones). La condición puede

ser simple o compuesta

La sentencia if La sentencia if es usada para evaluar una expresión lógica que puede tomar valores de 1 y 0, es decir, verdadero o falso, la sentencia if se conoce como estructura de selección simple, ya que si se cumple la condición especificada entre los paréntesis, se ejecuta un bloque de código, y si no se cumple, no se ejecuta nada. Lo que quiere decir que esta sentencia nos permite tomar decisiones, podemos hacer una pregunta y la contestación sólo puede ser verdadera o falsa, es decir, sí o no.

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 48: Tema 5
Page 49: Tema 5

/*Ejemplo que indica si un número es positivo*/

#include <stdio.h>

#include <stdlib.h>

main ()

{

int N;

printf(“Introduce el valor de N:”);

scanf(“%d”,&N);

if (N>0)

printf(“Numero positivo\n”);

system (”pause”);

return 0;

}

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 50: Tema 5
Page 51: Tema 5

La sentencia if -else Esta sentencia es más o menos como la anterior, con la diferencia que

en este ejemplo, si la condición se evalúa como verdadera, se ejecuta una secuencia de instrucciones, mientras que si la condición se evalúa como falsa se ejecuta otra secuencia de instrucciones

Page 52: Tema 5

/*Ejemplo que indica si un número es positivo o negativo*/ #include <stdio.h> #include <stdlib.h> main () { int N; printf(“Introduce el valor de N:”); scanf(“%d”,&N); if (N>0) printf(“Numero positivo\n”); else printf(“Numero negativo\n”); system (”pause”); return 0;

}

Page 53: Tema 5
Page 54: Tema 5

Anidamiento o escalonamiento si-si no-si (if-else-if) Consiste en insertar una instrucción dentro de otra.

Uno de los aspectos más confusos en los if anidados. Un if anidado es una sentencia if que es el objeto de otro if o else . La razón de los if anidados son tan problemáticos es que resulta confuso saber qué else se asocia con qué if .

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 55: Tema 5
Page 56: Tema 5

/*Ejemplo que indica si un número es positivo, negativo o cero*/

#include <stdio.h>

#include <stdlib.h>

main ()

{

int N;

printf(“Introduce el valor de N:”);

scanf(“%d”,&N);

if (N==0)

printf(“Cero\n”);

else if (N>0)

printf(“Numero positivo\n”);

else

printf(“Numero negativo\n”);

system(“pause”);

return 0;

}

Page 57: Tema 5

Oprimir una tecla e imprimir que tipo de tecla es carácter, letra mayúscula, letra minúscula o dígito

Page 58: Tema 5

La sentencia switch - case Esta sentencia es la utilizada para evaluar las llamadas

“opciones de abanico”, de donde se saca una de varias opciones, es decir, switch permite múltiples ramificaciones con una sola expresión a evaluar. Es más eficiente que utilizar muchos if anidados. Un enunciado switch evalúa una expresión.

La instrucción switch es una instrucción de control que

controla múltiples selecciones y enumeraciones pasando el control a una de las instrucciones case de su cuerpo.

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 59: Tema 5
Page 60: Tema 5

Solicita un digito al usuario entre 1 y7, el programa será capaz de escribir el día

de la semana que le corresponde

#include <stdio.h> #include <stdlib.h> main () { int N; printf("Introduce el dia de la semana (1-7):"); scanf("%d", &N); switch (N) { case 1: printf("LUNES\n"); break; case 2: printf("MARTES\n"); break; case 3: printf("MIERCOLES\n"); break;

case 4: printf("JUEVES\n"); break; case 5: printf("VIERNES\n"); break; case 6: printf("SABADO\n"); break; case 7: printf("DOMINGO\n"); break; default: printf("Dia erroneo\n"); } system (“pause”); return 0; }

Page 61: Tema 5
Page 62: Tema 5

La repetición de una acción (una o varias instrucciones) se va a llevar

a cabo mientras se cumpla cierta condición; para que esta acción

termine, la acción misma debe de modificar la(s) variable(s) de control

que van a intervenir en la condición. Dicha condición puede estar

definida por un ciclo desde (for), un bucle mientras (while) y hacer-

mientras (do-while).

Bucle, ciclo, iteración : Son estructuras de control que permite repetir

una o más sentencias múltiples veces. En cada vuelta el ciclo

comprueba si la condición es verdadera, rompiéndose el ciclo si es

falsa.

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 63: Tema 5

Contadores, acumuladores: estas variables se van incrementando o decrementando su valor a lo largo de la ejecución del algoritmo o del programa.

1. Se debe inicializar antes de entrar al ciclo.

2. Dentro del ciclo debe aparecer a ambos lados de la asignación .

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 64: Tema 5

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Debemos de realizar una operación de inicialización y posteriormente los incrementos y los decrementos correspondientes. La inicialización consiste en asignarle al contador un valor de inicio. Se pone antes y fuera del ciclo.

Page 65: Tema 5

Acumulador o totalizador

Tiene la misma función que un contador pero con la diferencia que el incremento o decremento es variable. Es decir es una variable que va almacenar cantidades resultantes de operaciones resultantes

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 66: Tema 5

El encargado de una obra recibe un suministro de camiones con

hormigón. El control del volumen recibido lo lleva a través de una tabla

donde apunta hora de llegada, volumen servido por el camión que

llega y volumen acumulado a lo largo del día.

Hora Volumen servido m

3

Acumulado m3

10:15 7 7

10:45 5 12

11:08 6 18

11:37 5 23

11:59 7 30

La fórmula que utiliza es: Acumulado = Volumen servido actual +

Acumulado anterior.

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 67: Tema 5

WHILE

El propósito del ciclo while es ejecutar muchas instrucciones varias veces. Se escribe como una instrucción if solo que cambiando la palabra clave while.

Forma general

while (condición) { instrucciones a repetir mientras la condición sea true }

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 68: Tema 5
Page 69: Tema 5

Características 1. La condición se evalúa antes del ciclo, si es verdadera se

ejecuta el bucle; y si es falsa se sale y el control pasa a la instrucción siguiente al ciclo.

2. Si la condición es falsa cuando se revisa por primera vez el bucle no se ejecuta nunca, es decir no entra ninguna vez.

3. Mientras la condición sea verdadera el bloque de instrucciones se ejecutará indefinidamente al menos que exista por lo menos una instrucción que modifique el valor de un elemento de la condición.

4. Si existe más de una instrucción se necesitan delimitar el bloque de instrucciones {….}

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 70: Tema 5

CICLO WHILE 1. /*PROGRAMA QUE ILUSTRA EL CICLO WHILE*/

2. #include <stdio.h>

3. #include <stdlib.h>

4. main()

5. {

6. int cont=0;

7. system ("cls");

8. while (cont<10)

9. {

10. printf("EL VALOR DEL CONTADOR ES =%d \n", cont);

11. cont=cont+1;

12. }

13. system("pause"); return 0;

14. }

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 71: Tema 5

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 72: Tema 5

1. #include<stdio.h>

2. #include<stdlib.h>

3. main()

4. {

5. char contador;

6. contador = 0;

7. while (contador<100)

8. {

9. printf ("*\t");

10. contador ++;

11. }

12.system("pause");

13. return 0;

14. }

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 73: Tema 5

1. /*Pares60*/

2. #include<stdio.h>

3. #include<stdlib.h>

4. main()

5. {

6. int x;

7. x=20;

8. printf("Pares entre 20-60\n");

9. while(x<=60)

10. {

11. printf("\t%d\n",x);

12. x+=2;

13. }

14. system("pause");

15. return 0;

16.}

Page 74: Tema 5

1. /*Tabla Multiplicar*/

2. #include<stdio.h>

3. #include<stdlib.h>

4. main()

5. {

6. int tb,res,d;

7. system("cls");

8. tb=0;

9. printf("Digita la tabla de multiplicar:

");

10. scanf("\n%d",&d);

11. while(tb<=10)

12. {

13. res=tb*d;

14. printf("\n\t%d*%d=%d\n",d,tb,res);

15. tb++;

16. }

17. system("pause");

18.}

Page 75: Tema 5

CICLO DO WHILE Su diferencia básica con el ciclo while es que la prueba de

condición es hecha al finalizar el ciclo, es decir las instrucciones se ejecutan cuando menos una vez, porque primero ejecuta las instrucciones y al final evalúa la condición.

También se le conoce por esta razón como ciclo de condición de salida.

Forma general cargar o inicializar variable de condición; do{ grupo cierto de instrucción(es); instrucción(es) de

rompimiento de ciclo; } while(condición);

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 76: Tema 5
Page 77: Tema 5

Características

1. Siempre entras por lo menos una vez al ciclo, ya que la condición esta después del ciclo.

2. Si la condición es verdadera entra de nuevo al ciclo y regresa a revisar la condición, hasta que sea falsa se sale del bucle

3. Debe existir una instrucción dentro del ciclo que modifique la condición, de lo contrario se hace infinita.

4. Si tiene más de una instrucción, necesita obligadamente del inicio-fin {….}

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 78: Tema 5

1. /*PROGRAMA QUE ILUSTRA EL CICLO DO WHILE*/

2. #include <stdio.h>

3. #include <stdlib.h>

4. main()

5. {

6. int cont;

7. cont=0;

8. do

9. {

10. printf("EL VALOR DEL CONTADOR ES =%d \n", cont);

11. cont=cont+1;

12. }

13. while (cont<=9);

14. system("pause"); return 0; }

Page 79: Tema 5

1. /*FACTORIAL DE UN NUMERO*/

2. #include <stdio.h>

3. #include <stdlib.h>

4. main()

5. {

6. int i=1, n, fact=1;

7. printf("Dame un numero: ");

8. scanf("%d",&n);

9. do

10.{

11.fact=fact*i;

12.i++;

13.}

14.while (i<=n);

15.printf("\t El factorial de %d es %d\n\n",n,fact);

16.system("pause"); return 0;

17.}

Page 80: Tema 5

1. /* OBTENCION DE A MEDIA DE n NUMEROS*/

2. #include <stdio.h> 3. #include <stdlib.h> 4. main() 5. { 6. int n, cont=1; 7. float x, media,suma=0;

8. printf("CUANTOS NUMEROS? "); 9. scanf("%d",&n);

10. do 11. {

12. printf("x= "); 13. scanf ("%f", &x); 14. suma +=x; 15. ++cont;

16. } 17. while (cont<=n); 18. media=suma/n; 19. printf("\n LA SUMA ES =%f \n",

suma); 20. printf("\n LA MEDIA ES =%f \n",

media); 21. system("pause"); return 0; 22.}

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 81: Tema 5

CICLO FOR Esta orden es similar al while, pero es mas

fácil de usar si se están contando o indexando variables, este ciclo combina tres elementos : inicialización, prueba e incremento.

Forma general

for (inicio; condicion; paso-siguiente)

{ cuerpo }

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 82: Tema 5

Características 1. Se debe conocer el valor de la variable inicial y final antes de entra al

ciclo

2. La condición se evalúa antes del bloque de instrucciones. Si la condición es verdadera se ejecuta el bloque de instrucciones, y si es falsa se sale y pasa el control de instrucciones al siguiente bloque.

3. No se puede cambiar el valor de las variables de control, el valor inicial ni el valor final dentro del ciclo.

4. Se puede incrementar o decrementar la variable de control según se requiera.

5. El incremento o el decremento dela variable de control es automático.

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 83: Tema 5

1. /*PROGRAMA QUE ILUSTRA EL CICLO FOR*/ 2. #include <stdio.h> 3. #include <stdlib.h> 4. main() 5. { 6. int indice; 7. for (indice=0;indice<11;indice=indice+1) 8. { 9. printf("EL VALOR DEL INDICE ES =%d \n", indice); 10. } 11. system("pause"); return 0; 12. }

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 84: Tema 5

1. /* FACTORIAL DE UN NUMERO*/

2. #include <stdio.h>

3. #include <stdlib.h>

4. main() {

5. int i, n, fact;

6. printf("Dame un numero: \n\n");

7. scanf("%d",&n);

8. fact=1;

9. for(i=1; i<=n; i++)

10. fact=fact*i;

11. printf("El factorial de %d es %d\n\n",n,fact);

12. system("pause"); return 0;

13. }

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 85: Tema 5

1. /* POTENCIA DE UN NUMERO n*/

2. #include <stdio.h>

3. #include <stdlib.h>

4. main()

5. {

6. int base, n, exp, res=1;

7. printf("Introduce la base de la potencia: ");

8. scanf("%d",&base);

9. printf("\n\nIntroduce el exponente de la potencia: ");

10. scanf("%d",&exp);

11. printf("\n\n");

12. for (n=0;n<exp;n++)

13. {

14. res=res*base;

15. printf("(%d)",base);

16. }

17. printf(" =%d",res);

18. printf("\n\nResultado: %d ^ %d =%d\n",base,exp,res);

19. system("pause"); return 0; }

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

Page 86: Tema 5

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

1. #include <stdio.h>

2. #include <stdlib.h>

3. main()

4. {

5. int i, j;

6. for(i='z'; i>='a'; i--)

7. {

8. for(j=i; j>='a'; j--)

9. { printf("%c",i);

10. }

11. printf("\n");

12. }

13. system("pause");

14. }

Page 87: Tema 5
Page 88: Tema 5

5.5. ESTRUCTURAS BÁSICAS

(SECUENCIAL, CONDICIONAL

E ITERACIÓN)

1. /*Muestrar los multiplos de 3

comprendidos entre los numeros

1 y 20*/

2. #include <stdio.h>

3. #include <stdlib.h>

4. #define p printf

5. #define s scanf

6. main ()

7. {

8. int i;

9. system ("cls");

10. for (i=1;i<=20;i++)

11. {

12. p ("%d",i);

13. if (i%3==0)

14. p (" Es multiplo de

3\t\n\n");

15. else

16. p (" No es multiplo de

3\t\n\n");

17. } /* fin de for*/

18. system ("pause");return 0;

19. }

Page 89: Tema 5
Page 90: Tema 5

SERIE DE FIBONACCI WHILE

1. /* SERIE DE FIBONACCI

(WHILE)*/

2. #include <stdio.h>

3. #include<stdlib.h>

4. main()

5. {

6. int contador=0,

numero1=0,numero2=1,numero3

;

7. printf("\nImprime los primeros 10

numeros de la serie

fibonacci\n\n\n");

8. while (contador<10)

9. {

10.

numero3=numero1+numero2;

11. printf("\t %i \n",numero3);

12. numero1=numero2;

13. numero2=numero3;

14. contador++;

15. }

16. system ("pause");

17. }

Page 91: Tema 5
Page 92: Tema 5

SERIE DE FIBONACCI DO WHILE

1. /* SERIE DE FIBONACCI (DO

WHILE)*/

2. #include <stdio.h>

3. #include<stdlib.h>

4. main()

5. {

6. int contador=0,

numero1=0,numero2=1,numero3

;

7. printf("\nImprime los primeros 10

numeros de la serie

fibonacci\n");

8. do{

9. numero3=numero1+numero2;

10. printf("\t%i\n",numero3);

11. numero1=numero2;

12. numero2=numero3;

13. contador++;

14. }

15. while (contador<=9);

16. system("pause"); return 0;

17. }

Page 93: Tema 5
Page 94: Tema 5

SERIE DE FIBONACCI FOR (n

NUMEROS)

1. /* SERIE DE FIBONACCI FOR*/

2. #include <stdio.h>

3. #include<stdlib.h>

4. main()

5. {

6. int contador,

numero1,numero2,numero3,n;

7. numero1=0;

8. numero2=1;

9. printf("\nHasta que numero de

la serie de Fibonacci deseas?");

10. scanf ("%d",&n);

11.

12. for

(contador=1;contador<=n;contad

or++)

13. {

14. numero3=numero1+numero2;

15. printf("\t%d)

%i\n",contador,numero3);

16. numero1=numero2;

17. numero2=numero3;

18. }

19. system("pause");

20. }

Page 95: Tema 5