tema 5
TRANSCRIPT
TEMA V.
FUNDAMENTOS
DE ALGORITMOS
Ing. Dulce Mónica
Castillo Corona
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.
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
5.1. COMPUTABILIDAD Y
CONCEPTO DE ALGORITMO :
MÁQUINA DE TURING
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
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
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
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
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
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
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
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
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
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
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
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)
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)
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)
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)
› 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)
› 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)
Diagrama de flujo para obtención del área del triángulo
5.3. REPRESENTACIÓN DE LOS
ALGORITMOS (DIAGRAMA DE
FLUJO Y PSEUDOCÓDIGO)
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
Proceso sueldo
Leer TarHora;
Leer NroHoras;
Jornal<-TarHora*NroHoras;
Escribir “Jornal”, Jornal;
FinProceso
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
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
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)
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)
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)
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)
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
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
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
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
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)
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)
Suma de 2 números
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. }
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)
Área del círculo y Volúmen de una esfera con el
mismo radio
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. }
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
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)
/*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)
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
/*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;
}
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)
/*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;
}
Oprimir una tecla e imprimir que tipo de tecla es carácter, letra mayúscula, letra minúscula o dígito
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)
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; }
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)
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)
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.
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)
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)
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)
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)
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)
5.5. ESTRUCTURAS BÁSICAS
(SECUENCIAL, CONDICIONAL
E ITERACIÓN)
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)
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.}
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.}
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)
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)
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; }
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.}
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)
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)
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)
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)
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)
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)
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. }
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. }
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. }
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. }
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. }