SlideShare una empresa de Scribd logo
1 de 89
Descargar para leer sin conexión
FUNDAMENTOS DE
ALGORITMOS
Ing. Dulce Mónica Castillo
Corona
5.1. COMPUTABILIDAD Y
CONCEPTO DE ALGORITMO :
MAQUINA 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 fue 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 :
MAQUINA DE TURING
5.1. COMPUTABILIDAD Y
CONCEPTO DE ALGORITMO :
MAQUINA 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.2. ELEMENTOS DE LOS
ALGORITMOS Y TIPOS DE DATOS
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.
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.
5.2. ELEMENTOS DE LOS
ALGORITMOS Y TIPOS DE DATOS
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
subproblemas 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
Entrad
a altura
Entrad
a 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.3. REPRESENTACIÓN DE LOS
ALGORITMOS (DIAGRAMA DE FLUJO Y
PSEUDOCÓDIGO)
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)
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)
5.3. REPRESENTACIÓN DE LOS
ALGORITMOS (DIAGRAMA DE FLUJO Y
PSEUDOCÓDIGO)
Diagrama de flujo para
obtención del mayor de dos
números
Números pares o impares
1. Inicio
2. ESCRIBIR "Introduce un número: "
3. LEER numero
4. SI (x 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)
Area del circlo y volumen con el mismo
radio
1. Inicio
2. cte pi 3.1416
3. Principal ()
4. Inicio
5. real r, area, vol
6. Imprimir “area y volumen de un esfera en
cm”
7. Imprime “Dame el radio”
8. Leer radio
9. area = pi *r*r
10. Imprimir “Area del circulo es =”, area
11. vol =(4/3)*pi *r*r*r
12. Imprimir “volumen de la esfera es =“, vol,
“cm cúbicos”
13. 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)
Inicio
Entero edad
imprimir “Dame tu edad”
leer edad
Si (edad<=12)
imprimir “niño”
Si no
si (edad<=17)
imprimir “adolescente”
Si no
si (edad<=80)
imprimir “adulto”
Si no
imprimir “anciano”
Fin
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)
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
Fin
Fin
5.2. ELEMENTOS DE LOS
ALGORITMOS Y TIPOS DE DATOS
 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.2. 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.2. 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.2. 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. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
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;
}
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. getch();
15. return 0;
16. }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
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>
Á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
RADIOnn");
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. getch();
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
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
/*Ejemplo que indica si un número es positivo*/
#include <stdio.h>
#include <conio.h>
main ()
{
int N;
printf(“Introduce el valor de N:”);
scanf(“%d”,&N);
if (N>0)
printf(“Numero positivon”);
getch ();
return 0;
}
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
Dependiendo de la calificación leída determinar si es aprobado
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
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;
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
/*Ejemplo que indica si un número es positivo o
negativo*/
#include <stdio.h>
#include <conio.h>
main ()
{
int N;
printf(“Introduce el valor de N:”);
scanf(“%d”,&N);
if (N>0)
printf(“Numero positivon”);
else
printf(“Numero negativon);
getch ();
return 0;
}
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
Dependiendo de la calificación leída determinar si es aprobado o reprobado
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
/*Ejemplo que indica si un número es positivo, negativo o cero*/
#include <stdio.h>
#include <conio.h>
main ()
{
int N;
printf(“Introduce el valor de N:”);
scanf(“%d”,&N);
if (N==0)
printf(“Ceron”);
else if (N>0)
printf(“Numero positivon”);
else
printf(“Numero negativon);
getch ();
return 0;
}
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)Oprimir una tecla e imprimir que tipo de tecla es carácter, letra mayúscula, letra
minúscula o dígito
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
#include <stdio.h>
#include <conio.h>
main ()
{
int N;
printf("Introduce el dia de la semana (1-
7):");
scanf("%d", &N);
switch (N)
{
case 1:
printf("LUNESn");
break;
case 2:
printf("MARTESn");
break;
case 3:
printf("MIERCOLESn");
break;
case 4:
printf("JUEVESn");
break;
case 5:
printf("VIERNESn");
break;
case 6:
printf("SABADOn");
break;
case 7:
printf("DOMINGOn");
break;
default:
printf("Dia erroneon");
}
getch ();
return 0;
}
/* PROGRAMA PARA OBTENER LA RAICES DE UNA
ECUACION CUADRATICA*/
1. #include <stdio.h>
2. #include <conio.h>
3. #include <math.h>
4. main()
5. {
6. float a,b,c,x1,x2, d, real, imaginaria;
7. printf("Valor de A: ");
8. scanf("%f",&a);
9. printf("Valor de B: ");
10. scanf("%f",&b);
11. printf("Valor de C: ");
12. scanf("%f",&c);
13. d = (b*b)-(4*a*c);
14. if(d>0.0)
15. {
16. x1=(-b+(sqrt((b*b)-(4*a*c))))/2;
17. x2=(-b-(sqrt((b*b)-(4*a*c))))/2;
18. printf("nX1 = %.2fn",x1);
19. printf("nX2 = %.2fn",x2);
20. }
21. else if (d<0.0)
22. {
23. real =-b/(2.0*a);
24. imaginaria =sqrt(-d)/(2.0*a);
25. printf ("X1 = %.2f+%.2finX2 =
%.2f%.2fin", real, imaginaria,real, -imaginaria);
26. /*printf ("nX2 = %.2f%.2fin", real, -
imaginaria);*/
27. }
28. else
29. {
30. x1=-b/(2.0*a);
31. printf ("LAS DOS RAICES SON
IGUALES X1=X2=%.2f",x1);
32. }
33.getch();
34.return o;
35.}
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
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 .
 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.
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
 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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
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 m
3
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
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. cont =0;
8. system ("cls");
9. while (cont<11)
10. {
11. printf("EL VALOR DEL CONTADOR ES =%d n", cont);
12. cont=cont+1;
13. }
14. system("pause");
15. }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO WHILE
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO WHILE
1. #include<stdio.h>
2. #include<conio.h>
3. main()
4. {
5. char contador;
6. contador = 0;
7. while (contador<100)
8. {
9. printf ("*t");
10. contador ++;
11.}
12.getch();
13.return 0;
14.}
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO WHILE
1. /*Pares60*/
2. #include<stdio.h>
3. #include<conio.h>
4. main()
5. {
6. int x;
7. x=20;
8. printf("Pares entre 20-60n");
9. while(x<=60)
10. {
11. printf("t%dn",x);
12. x+=2;
13. }
14. getch();
15. return0;
16.}
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO WHILE1. /*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("nnt%d*%d=%d",d,tb,res);
15. tb++;
16.
17. }
18. system("pause");
19. }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO DO WHILE
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO DO WHILECaracterí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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO DO WHILE
1. /*PROGRAMA QUE ILUSTRA EL CICLO DO WHILE*/
2. #include <stdio.h>
3. #include <conio.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
14. (cont<=10);
15. getch();
16. return 0;
17. }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO DO WHILE
1. #include <stdio.h>
2. #include <conio.h>
3. main()
4. {
5. int i=1, n, fact=1;
6. printf("Dame un numero: ");
7. scanf("%d",&n);
8. do
9. {
10. fact=fact*i;
11. i++;
12. }
13. while (i<=n);
14. printf("t El factorial de %d
15. es %dnn",n,fact);
16. getch();
17. return 0;
18. }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO DO WHILE
1. #include <stdio.h>
2. #include <conio.h>
3. main()
4. {
5. int n, cont=1;
6. float x, media,suma=0;
7. printf("CUANTOS NUMEROS? ");
8. scanf("%d",&n);
9. do
10. {
11. printf("x= ");
12. scanf ("%f", &x);
13. suma +=x;
14. ++cont;
15. }
16. while (cont<=n);
17. media=suma/n;
18. printf("n LA SUMA ES =%f n",
suma);
19. printf("n LA MEDIA ES =%f n",
media);
20. getch();
21. return 0;
22. }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO DO WHILE
1. #include <stdio.h>
2. #include <conio.h>
3. main()
4. {
5. int num,dig=0;
6. printf("ESTE PROGRAMA SOLO
ANALIZA NUMEROS HASTA
9,999,999,999 ");
7. printf("nnDAME UN NUMERO
ENTERO.. ");
8. scanf("%d",&num);
9. do
10. {
11. num= num/10;
12. dig++;
13. }
14. while (num>=1);
15. printf("n EL NUMERO TIENE %d
DIGITOS",dig);
16. getch();
17. return 0;
18. }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO FORCaracterí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.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO FOR
1. /*PROGRAMA QUE ILUSTRA EL CICLO FOR*/
2. #include <stdio.h>
3. #include <conio.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. getch();
12. return 0;
13. }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO FOR
1. #include <stdio.h>
2. #include <conio.h>
3. main() {
4. int i, n, fact;
5. printf("Dame un numero: nn");
6. scanf("%d",&n);
7. fact=1;
8. for(i=1; i<=n; i++)
9. {
10. fact=fact*i;
11.
12. }
13. printf("El factorial de %d es %dnn",n,fact);
14. getch();
15. return 0;
16. }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO FOR
#include <stdio.h>
#include <conio.h>
main()
{
int base, n, exp, res=1;
printf("Introduce la base de la potencia: ");
scanf("%d",&base);
printf("nnIntroduce el exponente de la potencia: ");
scanf("%d",&exp);
printf("nn");
for (n=0;n<exp;n++)
{
res=res*base;
printf("(%d)",base);
}
printf(" =%d",res);
printf("nnResultado: %d ^ %d =
%dn",base,exp,res);
getch();
return 0; }
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
CICLO FOR
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. printf("n");
11. }
12. system("pause");
13. }
/*Muestrar los multiplos de 3 comprendidos entre los
numeros 1 y 20*/
#include <stdio.h>
#include <stdlib.h>
#define p printf
#define s scanf
main ()
{
int i;
system ("cls");
for (i=1;i<=20;i++)
{
p ("%d",i);
if (i%3==0)
p (" Es multiplo de 3tnn");
else
p (" No es multiplo de 3tnn");
}
system ("pause");
}
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
SERIE DE FIBONACCI WHILE
#include <stdio.h>
#include<stdlib.h>
main()
{
int contador=0, numero1=0,numero2=1,numero3;
printf("nImprime los primeros 10 numeros de la serie
fibonaccinnn");
while (contador<10)
{
numero3=numero1+numero2;
printf("t %i n",numero3);
numero1=numero2;
numero2=numero3;
contador++;
}
system ("pause");
}
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
SERIE DE FIBONACCI DO WHILE
#include <stdio.h>
#include<stdlib.h>
main()
{
int contador=0, numero1=0,numero2=1,numero3;
printf("nImprime los primeros 10 numeros de la
serie fibonaccin");
do{
numero3=numero1+numero2;
printf("t%in",numero3);
numero1=numero2;
numero2=numero3;
contador++;
}
while (contador<=9);
system("pause");
}
5.4. ESTRUCTURAS BÁSICAS (SECUENCIA,
CONDICIONAL E ITERACIÓN)
SERIE DE FIBONACCI FOR (n NUMEROS)
1. #include <stdio.h>
2. #include<stdlib.h>
3. main()
4. {
5. int contador, numero1,numero2,numero3,n;
6. numero1=0;
7. numero2=1;
8. printf("nHasta que numero de la serie de Fibonacci
deseas?");
9. scanf ("%d",&n);
10. for (contador=1;contador<=n;contador++){
11. numero3=numero1+numero2;
12. printf("t%d) %in",contador,numero3);
13. numero1=numero2;
14. numero2=numero3;
15. }
16. system("pause");
17. }

Más contenido relacionado

La actualidad más candente

Presentacion algoritmos
Presentacion algoritmosPresentacion algoritmos
Presentacion algoritmosaralylopez88
 
Tutorial algoritmo representacion
Tutorial algoritmo representacionTutorial algoritmo representacion
Tutorial algoritmo representacionMichele André
 
Introduccion a Algoritmos
Introduccion a AlgoritmosIntroduccion a Algoritmos
Introduccion a Algoritmossmog2010
 
Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)Karlos Valladares
 
Lenguaje natural pseudocodigo diagramacion y programacion
Lenguaje natural pseudocodigo diagramacion y programacionLenguaje natural pseudocodigo diagramacion y programacion
Lenguaje natural pseudocodigo diagramacion y programacionClaudia Poza
 
Descripción de un Algoritmo
Descripción de un AlgoritmoDescripción de un Algoritmo
Descripción de un AlgoritmoOGEA UPS
 
Fundamentos de Programacion
Fundamentos de ProgramacionFundamentos de Programacion
Fundamentos de Programacionneyvajms
 
Algoritmos Y Programas Unidad1
Algoritmos Y  Programas Unidad1Algoritmos Y  Programas Unidad1
Algoritmos Y Programas Unidad1Silvanac
 
Conceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje deConceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje de'Felipe Lozada
 
Algoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkAlgoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkLaurence HR
 
Programacion primero
Programacion primeroProgramacion primero
Programacion primeroVictor Zapata
 
Fundamentos de algoritmia
Fundamentos de algoritmiaFundamentos de algoritmia
Fundamentos de algoritmiaNilson Negrete
 

La actualidad más candente (20)

Presentacion algoritmos
Presentacion algoritmosPresentacion algoritmos
Presentacion algoritmos
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Tutorial algoritmo representacion
Tutorial algoritmo representacionTutorial algoritmo representacion
Tutorial algoritmo representacion
 
Unidad ii construiralgoritmos
Unidad ii construiralgoritmosUnidad ii construiralgoritmos
Unidad ii construiralgoritmos
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Introduccion a Algoritmos
Introduccion a AlgoritmosIntroduccion a Algoritmos
Introduccion a Algoritmos
 
Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)Fundamentos básicos de algoritmos (1)
Fundamentos básicos de algoritmos (1)
 
Lenguaje natural pseudocodigo diagramacion y programacion
Lenguaje natural pseudocodigo diagramacion y programacionLenguaje natural pseudocodigo diagramacion y programacion
Lenguaje natural pseudocodigo diagramacion y programacion
 
Descripción de un Algoritmo
Descripción de un AlgoritmoDescripción de un Algoritmo
Descripción de un Algoritmo
 
Fundamentos de Programacion
Fundamentos de ProgramacionFundamentos de Programacion
Fundamentos de Programacion
 
Algoritmos Y Programas Unidad1
Algoritmos Y  Programas Unidad1Algoritmos Y  Programas Unidad1
Algoritmos Y Programas Unidad1
 
Lógica de programación
Lógica de programaciónLógica de programación
Lógica de programación
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Conceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje deConceptos de algoritmo, programa y lenguaje de
Conceptos de algoritmo, programa y lenguaje de
 
Algoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujoAlgoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujo
 
Algoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tkAlgoritmos Conceptos Basicos - www.ingfiis.tk
Algoritmos Conceptos Basicos - www.ingfiis.tk
 
Conceptos de algoritmos
Conceptos de algoritmosConceptos de algoritmos
Conceptos de algoritmos
 
Programacion primero
Programacion primeroProgramacion primero
Programacion primero
 
Fundamentos de algoritmia
Fundamentos de algoritmiaFundamentos de algoritmia
Fundamentos de algoritmia
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 

Similar a Tema 5

Algoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujoAlgoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujoClariza
 
Clase2 algoritmos formas-representacionalgoritmicas1
Clase2 algoritmos formas-representacionalgoritmicas1Clase2 algoritmos formas-representacionalgoritmicas1
Clase2 algoritmos formas-representacionalgoritmicas1Alma Lopez
 
Evaluacion de algoritmo
Evaluacion de algoritmoEvaluacion de algoritmo
Evaluacion de algoritmoSergioERondon
 
Introduccion A La Programacion
Introduccion A La ProgramacionIntroduccion A La Programacion
Introduccion A La ProgramacionMary Sanchez
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmoNombre Apellidos
 
Desarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoDesarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoLeidiCaro1
 
Video Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaVideo Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaDanilo Jaramillo
 
algoritmos
algoritmosalgoritmos
algoritmosRaul LG
 
Tema 2 Elementos de los Algoritmos.pdf
Tema 2 Elementos de los Algoritmos.pdfTema 2 Elementos de los Algoritmos.pdf
Tema 2 Elementos de los Algoritmos.pdfAdrianaCamilaCondori
 
Trabajo tecnologia 3 periodo
Trabajo tecnologia 3 periodoTrabajo tecnologia 3 periodo
Trabajo tecnologia 3 periodoDana Montaño
 
Trabajo tecnologia 3 periodo
Trabajo tecnologia 3 periodoTrabajo tecnologia 3 periodo
Trabajo tecnologia 3 periodoVictoriaRamrez13
 

Similar a Tema 5 (20)

Tema 5
Tema 5Tema 5
Tema 5
 
Tema n° 1
Tema n° 1Tema n° 1
Tema n° 1
 
Algoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujoAlgoritmos y diagramas_de_flujo
Algoritmos y diagramas_de_flujo
 
Programación
ProgramaciónProgramación
Programación
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Clase2 algoritmos formas-representacionalgoritmicas1
Clase2 algoritmos formas-representacionalgoritmicas1Clase2 algoritmos formas-representacionalgoritmicas1
Clase2 algoritmos formas-representacionalgoritmicas1
 
Evaluacion de algoritmo
Evaluacion de algoritmoEvaluacion de algoritmo
Evaluacion de algoritmo
 
Programación u1
Programación   u1Programación   u1
Programación u1
 
Introduccion A La Programacion
Introduccion A La ProgramacionIntroduccion A La Programacion
Introduccion A La Programacion
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
TEMA11.ppt
TEMA11.pptTEMA11.ppt
TEMA11.ppt
 
Los algoritmos
Los    algoritmosLos    algoritmos
Los algoritmos
 
Resolución de problemas y algoritmo
Resolución de problemas y algoritmoResolución de problemas y algoritmo
Resolución de problemas y algoritmo
 
Desarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoDesarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamiento
 
Video Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia AbiertaVideo Primer Bimestre Metodologia Abierta
Video Primer Bimestre Metodologia Abierta
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
algoritmos
algoritmosalgoritmos
algoritmos
 
Tema 2 Elementos de los Algoritmos.pdf
Tema 2 Elementos de los Algoritmos.pdfTema 2 Elementos de los Algoritmos.pdf
Tema 2 Elementos de los Algoritmos.pdf
 
Trabajo tecnologia 3 periodo
Trabajo tecnologia 3 periodoTrabajo tecnologia 3 periodo
Trabajo tecnologia 3 periodo
 
Trabajo tecnologia 3 periodo
Trabajo tecnologia 3 periodoTrabajo tecnologia 3 periodo
Trabajo tecnologia 3 periodo
 

Más de Monica Castillo (20)

T3
T3T3
T3
 
T2
T2T2
T2
 
T1
T1T1
T1
 
2 ex parcial_b_gpo1115
2 ex parcial_b_gpo11152 ex parcial_b_gpo1115
2 ex parcial_b_gpo1115
 
2 ex parcial_a_gpo1115
2 ex parcial_a_gpo11152 ex parcial_a_gpo1115
2 ex parcial_a_gpo1115
 
2 ex parcial_b_respuestas
2 ex parcial_b_respuestas2 ex parcial_b_respuestas
2 ex parcial_b_respuestas
 
2 ex parcial_a_respuestas
2 ex parcial_a_respuestas2 ex parcial_a_respuestas
2 ex parcial_a_respuestas
 
Serie algoritmos
Serie algoritmosSerie algoritmos
Serie algoritmos
 
Serie pseint
Serie pseintSerie pseint
Serie pseint
 
T4 1
T4 1T4 1
T4 1
 
Linux esquema
Linux esquemaLinux esquema
Linux esquema
 
Linux practica 4
Linux practica 4Linux practica 4
Linux practica 4
 
T3
T3T3
T3
 
P no 2
P no 2P no 2
P no 2
 
T2
T2T2
T2
 
P no 1
P no 1P no 1
P no 1
 
T1
T1T1
T1
 
Arreglos
ArreglosArreglos
Arreglos
 
Práctica no3
Práctica no3Práctica no3
Práctica no3
 
Tema 5 3
Tema 5 3Tema 5 3
Tema 5 3
 

Tema 5

  • 1. FUNDAMENTOS DE ALGORITMOS Ing. Dulce Mónica Castillo Corona
  • 2. 5.1. COMPUTABILIDAD Y CONCEPTO DE ALGORITMO : MAQUINA 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 fue 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.
  • 3. 5.1. COMPUTABILIDAD Y CONCEPTO DE ALGORITMO : MAQUINA DE TURING
  • 4. 5.1. COMPUTABILIDAD Y CONCEPTO DE ALGORITMO : MAQUINA 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. 5.2. ELEMENTOS DE LOS ALGORITMOS Y TIPOS DE DATOS 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.
  • 6. 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.
  • 7. 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.
  • 8. 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. 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.
  • 9. 5.2. ELEMENTOS DE LOS ALGORITMOS Y TIPOS DE DATOS 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.
  • 10. 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.
  • 11. 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 subproblemas más sencillos se denomina refinamiento paso a paso o sucesivos.
  • 12. 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 Entrad a altura Entrad a base Area = base x altura Salida Altura Salida Area Salida Base
  • 13. 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
  • 14. 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.
  • 15. 5.3. REPRESENTACIÓN DE LOS ALGORITMOS (DIAGRAMA DE FLUJO Y PSEUDOCÓDIGO) 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
  • 16. 5.3. REPRESENTACIÓN DE LOS ALGORITMOS (DIAGRAMA DE FLUJO Y PSEUDOCÓDIGO)
  • 17. 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)
  • 18. 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)
  • 19. 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)
  • 20. 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.
  • 21. 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.
  • 22.
  • 23. 5.3. REPRESENTACIÓN DE LOS ALGORITMOS (DIAGRAMA DE FLUJO Y PSEUDOCÓDIGO) Diagrama de flujo para obtención del área del triángulo
  • 24. 5.3. REPRESENTACIÓN DE LOS ALGORITMOS (DIAGRAMA DE FLUJO Y PSEUDOCÓDIGO)
  • 25. 5.3. REPRESENTACIÓN DE LOS ALGORITMOS (DIAGRAMA DE FLUJO Y PSEUDOCÓDIGO)
  • 26. 5.3. REPRESENTACIÓN DE LOS ALGORITMOS (DIAGRAMA DE FLUJO Y PSEUDOCÓDIGO) Diagrama de flujo para obtención del mayor de dos números
  • 27. Números pares o impares 1. Inicio 2. ESCRIBIR "Introduce un número: " 3. LEER numero 4. SI (x 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)
  • 28. Area del circlo y volumen con el mismo radio 1. Inicio 2. cte pi 3.1416 3. Principal () 4. Inicio 5. real r, area, vol 6. Imprimir “area y volumen de un esfera en cm” 7. Imprime “Dame el radio” 8. Leer radio 9. area = pi *r*r 10. Imprimir “Area del circulo es =”, area 11. vol =(4/3)*pi *r*r*r 12. Imprimir “volumen de la esfera es =“, vol, “cm cúbicos” 13. Fin 5.3. REPRESENTACIÓN DE LOS ALGORITMOS (DIAGRAMA DE FLUJO Y PSEUDOCÓDIGO)
  • 29. 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)
  • 30. Inicio Entero edad imprimir “Dame tu edad” leer edad Si (edad<=12) imprimir “niño” Si no si (edad<=17) imprimir “adolescente” Si no si (edad<=80) imprimir “adulto” Si no imprimir “anciano” Fin 5.3. REPRESENTACIÓN DE LOS ALGORITMOS (DIAGRAMA DE FLUJO Y PSEUDOCÓDIGO)
  • 31. 5.3. REPRESENTACIÓN DE LOS ALGORITMOS (DIAGRAMA DE FLUJO Y PSEUDOCÓDIGO)
  • 32. 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 Fin Fin
  • 33. 5.2. ELEMENTOS DE LOS ALGORITMOS Y TIPOS DE DATOS  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.
  • 34. 5.2. 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
  • 35. 5.2. 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.
  • 36. 5.2. 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.
  • 37. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) 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.
  • 38. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, 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; }
  • 39. Suma de 2 números
  • 40. 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. getch(); 15. return 0; 16. }
  • 41. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) 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>
  • 42. Área del círculo y Volúmen de una esfera con el mismo radio
  • 43. 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 RADIOnn"); 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. getch(); 17. return 0; 18. }
  • 44. 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
  • 45.
  • 46. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) 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
  • 47. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) 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
  • 48. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN)
  • 49. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) /*Ejemplo que indica si un número es positivo*/ #include <stdio.h> #include <conio.h> main () { int N; printf(“Introduce el valor de N:”); scanf(“%d”,&N); if (N>0) printf(“Numero positivon”); getch (); return 0; }
  • 50. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) Dependiendo de la calificación leída determinar si es aprobado
  • 51. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, 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;
  • 52. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) /*Ejemplo que indica si un número es positivo o negativo*/ #include <stdio.h> #include <conio.h> main () { int N; printf(“Introduce el valor de N:”); scanf(“%d”,&N); if (N>0) printf(“Numero positivon”); else printf(“Numero negativon); getch (); return 0; }
  • 53. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) Dependiendo de la calificación leída determinar si es aprobado o reprobado
  • 54. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) 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 .
  • 55. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) /*Ejemplo que indica si un número es positivo, negativo o cero*/ #include <stdio.h> #include <conio.h> main () { int N; printf(“Introduce el valor de N:”); scanf(“%d”,&N); if (N==0) printf(“Ceron”); else if (N>0) printf(“Numero positivon”); else printf(“Numero negativon); getch (); return 0; }
  • 56. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN)Oprimir una tecla e imprimir que tipo de tecla es carácter, letra mayúscula, letra minúscula o dígito
  • 57. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) 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.
  • 58. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN)
  • 59. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) #include <stdio.h> #include <conio.h> main () { int N; printf("Introduce el dia de la semana (1- 7):"); scanf("%d", &N); switch (N) { case 1: printf("LUNESn"); break; case 2: printf("MARTESn"); break; case 3: printf("MIERCOLESn"); break; case 4: printf("JUEVESn"); break; case 5: printf("VIERNESn"); break; case 6: printf("SABADOn"); break; case 7: printf("DOMINGOn"); break; default: printf("Dia erroneon"); } getch (); return 0; }
  • 60. /* PROGRAMA PARA OBTENER LA RAICES DE UNA ECUACION CUADRATICA*/ 1. #include <stdio.h> 2. #include <conio.h> 3. #include <math.h> 4. main() 5. { 6. float a,b,c,x1,x2, d, real, imaginaria; 7. printf("Valor de A: "); 8. scanf("%f",&a); 9. printf("Valor de B: "); 10. scanf("%f",&b); 11. printf("Valor de C: "); 12. scanf("%f",&c); 13. d = (b*b)-(4*a*c); 14. if(d>0.0) 15. { 16. x1=(-b+(sqrt((b*b)-(4*a*c))))/2; 17. x2=(-b-(sqrt((b*b)-(4*a*c))))/2; 18. printf("nX1 = %.2fn",x1); 19. printf("nX2 = %.2fn",x2); 20. } 21. else if (d<0.0) 22. { 23. real =-b/(2.0*a); 24. imaginaria =sqrt(-d)/(2.0*a); 25. printf ("X1 = %.2f+%.2finX2 = %.2f%.2fin", real, imaginaria,real, -imaginaria); 26. /*printf ("nX2 = %.2f%.2fin", real, - imaginaria);*/ 27. } 28. else 29. { 30. x1=-b/(2.0*a); 31. printf ("LAS DOS RAICES SON IGUALES X1=X2=%.2f",x1); 32. } 33.getch(); 34.return o; 35.}
  • 61. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) 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.
  • 62. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, 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 .  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.
  • 63. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN)  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
  • 64. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, 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 m 3 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.
  • 65. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, 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 }
  • 66. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN)
  • 67. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, 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 {….}
  • 68. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, 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. cont =0; 8. system ("cls"); 9. while (cont<11) 10. { 11. printf("EL VALOR DEL CONTADOR ES =%d n", cont); 12. cont=cont+1; 13. } 14. system("pause"); 15. }
  • 69. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO WHILE
  • 70. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO WHILE 1. #include<stdio.h> 2. #include<conio.h> 3. main() 4. { 5. char contador; 6. contador = 0; 7. while (contador<100) 8. { 9. printf ("*t"); 10. contador ++; 11.} 12.getch(); 13.return 0; 14.}
  • 71. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO WHILE 1. /*Pares60*/ 2. #include<stdio.h> 3. #include<conio.h> 4. main() 5. { 6. int x; 7. x=20; 8. printf("Pares entre 20-60n"); 9. while(x<=60) 10. { 11. printf("t%dn",x); 12. x+=2; 13. } 14. getch(); 15. return0; 16.}
  • 72. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO WHILE1. /*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("nnt%d*%d=%d",d,tb,res); 15. tb++; 16. 17. } 18. system("pause"); 19. }
  • 73. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) 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);
  • 74. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO DO WHILE
  • 75. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO DO WHILECaracterí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 {….}
  • 76. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO DO WHILE 1. /*PROGRAMA QUE ILUSTRA EL CICLO DO WHILE*/ 2. #include <stdio.h> 3. #include <conio.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 14. (cont<=10); 15. getch(); 16. return 0; 17. }
  • 77. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO DO WHILE 1. #include <stdio.h> 2. #include <conio.h> 3. main() 4. { 5. int i=1, n, fact=1; 6. printf("Dame un numero: "); 7. scanf("%d",&n); 8. do 9. { 10. fact=fact*i; 11. i++; 12. } 13. while (i<=n); 14. printf("t El factorial de %d 15. es %dnn",n,fact); 16. getch(); 17. return 0; 18. }
  • 78. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO DO WHILE 1. #include <stdio.h> 2. #include <conio.h> 3. main() 4. { 5. int n, cont=1; 6. float x, media,suma=0; 7. printf("CUANTOS NUMEROS? "); 8. scanf("%d",&n); 9. do 10. { 11. printf("x= "); 12. scanf ("%f", &x); 13. suma +=x; 14. ++cont; 15. } 16. while (cont<=n); 17. media=suma/n; 18. printf("n LA SUMA ES =%f n", suma); 19. printf("n LA MEDIA ES =%f n", media); 20. getch(); 21. return 0; 22. }
  • 79. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO DO WHILE 1. #include <stdio.h> 2. #include <conio.h> 3. main() 4. { 5. int num,dig=0; 6. printf("ESTE PROGRAMA SOLO ANALIZA NUMEROS HASTA 9,999,999,999 "); 7. printf("nnDAME UN NUMERO ENTERO.. "); 8. scanf("%d",&num); 9. do 10. { 11. num= num/10; 12. dig++; 13. } 14. while (num>=1); 15. printf("n EL NUMERO TIENE %d DIGITOS",dig); 16. getch(); 17. return 0; 18. }
  • 80. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, 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 }
  • 81. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO FORCaracterí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.
  • 82. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO FOR 1. /*PROGRAMA QUE ILUSTRA EL CICLO FOR*/ 2. #include <stdio.h> 3. #include <conio.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. getch(); 12. return 0; 13. }
  • 83. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO FOR 1. #include <stdio.h> 2. #include <conio.h> 3. main() { 4. int i, n, fact; 5. printf("Dame un numero: nn"); 6. scanf("%d",&n); 7. fact=1; 8. for(i=1; i<=n; i++) 9. { 10. fact=fact*i; 11. 12. } 13. printf("El factorial de %d es %dnn",n,fact); 14. getch(); 15. return 0; 16. }
  • 84. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO FOR #include <stdio.h> #include <conio.h> main() { int base, n, exp, res=1; printf("Introduce la base de la potencia: "); scanf("%d",&base); printf("nnIntroduce el exponente de la potencia: "); scanf("%d",&exp); printf("nn"); for (n=0;n<exp;n++) { res=res*base; printf("(%d)",base); } printf(" =%d",res); printf("nnResultado: %d ^ %d = %dn",base,exp,res); getch(); return 0; }
  • 85. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) CICLO FOR 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. printf("n"); 11. } 12. system("pause"); 13. }
  • 86. /*Muestrar los multiplos de 3 comprendidos entre los numeros 1 y 20*/ #include <stdio.h> #include <stdlib.h> #define p printf #define s scanf main () { int i; system ("cls"); for (i=1;i<=20;i++) { p ("%d",i); if (i%3==0) p (" Es multiplo de 3tnn"); else p (" No es multiplo de 3tnn"); } system ("pause"); } 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN)
  • 87. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) SERIE DE FIBONACCI WHILE #include <stdio.h> #include<stdlib.h> main() { int contador=0, numero1=0,numero2=1,numero3; printf("nImprime los primeros 10 numeros de la serie fibonaccinnn"); while (contador<10) { numero3=numero1+numero2; printf("t %i n",numero3); numero1=numero2; numero2=numero3; contador++; } system ("pause"); }
  • 88. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) SERIE DE FIBONACCI DO WHILE #include <stdio.h> #include<stdlib.h> main() { int contador=0, numero1=0,numero2=1,numero3; printf("nImprime los primeros 10 numeros de la serie fibonaccin"); do{ numero3=numero1+numero2; printf("t%in",numero3); numero1=numero2; numero2=numero3; contador++; } while (contador<=9); system("pause"); }
  • 89. 5.4. ESTRUCTURAS BÁSICAS (SECUENCIA, CONDICIONAL E ITERACIÓN) SERIE DE FIBONACCI FOR (n NUMEROS) 1. #include <stdio.h> 2. #include<stdlib.h> 3. main() 4. { 5. int contador, numero1,numero2,numero3,n; 6. numero1=0; 7. numero2=1; 8. printf("nHasta que numero de la serie de Fibonacci deseas?"); 9. scanf ("%d",&n); 10. for (contador=1;contador<=n;contador++){ 11. numero3=numero1+numero2; 12. printf("t%d) %in",contador,numero3); 13. numero1=numero2; 14. numero2=numero3; 15. } 16. system("pause"); 17. }