Upload
celestina-villescas
View
224
Download
0
Embed Size (px)
Citation preview
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Programación I
Capitulo IV : Estructuras de Control.
“das Ding an sich”
“La cosa en sí y la cosa para mí”
“La dos formas: tiempo y espacio”
(Emmanuel Kant, 1724-1804 )
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Introduccion
Composición secuencial de sentencias:
No permite resolver problemas que exijan una toma de decisión.
No permite la ejecución de un conjunto de instrucciones repetidas veces.
Accion 1 Accion 3Accion 2
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Introduccion
Herramientas que permiten alterar el orden secuencial de un
conjunto de instrucciones.
Estructuras selectivas: Estructura selectiva.
Estructuras repetitivas: Ejecutar unn conjunto de
instrucciones varias veces.
Expresiones lógicas o Booleanas: Expresiones con dos
posibles valores verdadero o falso
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Expresiones Lógicas
Operadores logicos: Permite combinar relaciones de
comparacion.
Conjuncion: AND, &&
Disyuncion: OR, ||
Negacion: NOT, !
Ejemplo: (a > 30) && (b==20)
Los operandos de las operadores logicos pueden ser
expresiones cuya evaluacion tenga un resultado logico
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Expresiones Lógicas
Expresion Logica:
1. !((letra=='Q') || (letra == 'Z')) && ( X>=6 )
2. (largo==ancho) && !(X > 5)
3. X && (altura <= 5)
¿Por qué los paréntesis?
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Expresiones Lógicas
Orden de precedencia:
Si queremos cambiar el orden de precedencia usamos los
parentesis
+
-
NOT*,/+,-relacionalesigualdadand, or
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Expresiones Lógicas
Algunas equivalencias:
!(a==b) =>
LEY DE MORGAN
!((a==b)||(a==c)) =>
!((a==b)&&(a==c)) =>
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Selectivas
3 tipos de sentencias selectivas:
Sentencias de seleccion simple
Sentencias de seleccion binaria
Sentencias de seleccion multiple
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Selectivas
Sentencias de seleccion simple:
Ejemplo:
if ( numero % 2 == 0)
{
printf(“Numero par”);
}
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Selectivas
Sentencias de seleccion simple:
Diagrama de flujo:Inicio
Fin
Leer n
n mod 2 = 0
Escribir ParNo
Si
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Selectivas
Sentencias de seleccion binaria:
Ejemplo:
if ( numero % 2 == 0)
{
printf(“Numero par”);
}else{
printf(“Numero impar”);
}
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Selectivas
Sentencias de seleccion binaria:
Diagrama de flujo:Inicio
Fin
Leer n
n mod 2 = 0
NoSi
Escribir ParEscribir Par
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Selectivas
Sentencias de seleccion multiple:
Ejemplo:
#include<stdio.h>
int main(void){
char op; int a=4,b=2,c=0; scanf("%s",&op); switch (op){ case '+': c=a+b; break; case '-': c=a-b; break; case '*': c=a*b; break; default : c=a/b; break; } printf("%d\n",c);
}
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Repetitivas
- Muy necesaria
- Estructura repetitiva = bucle = lazo
- Iteracción
- Ejecuta un conjunto de operaciones un número
determinado o indeterminado de veces.
¿Quién determina cuantas veces se ejecutan las
instrucciones?
Condición de control
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Repetitivas
1. Número indeterminado de veces a priori.
Estructura mientras(while y do..while)
- Condicion de control = expresión lógica
- Las instrucciones del bucle se ejecutan : 0 .....n veces
- Si la condicion es VERDADERA se seguirá ejecutando el bucle.
- Bucle controlado por un contador
- Bucle controlado por una bandera o centinela.
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Repetitivas
Bucle controlado por un contador:
Ejemplo:
i=1 //inicialización
while(i<10) //evaluación
{
...................
i++; //incremento
}
¿Cuantas veces se ejecuta el bucle?
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Repetitivas
Bucle controlado por una bandera:
Ejemplo:
flag=1 //bandera
while(flag == 1) //evaluación
{
...................
if (condicion) //actualización
flag=0;
}
¿Cuantas veces se ejecuta el bucle?
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Repetitivas
do .. while:
Ejemplo:
do{
printf("Ingrese un entero:");
scanf("%d",&n);
printf("Desea Continuar(Y/N):");
scanf("%s",&rpt);
}while(rpt=='Y');
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Estructuras Repetitivas
2. Número determinado de veces a priori.
Estructura para(for)
- El bucle se ejecuta en su totalidad
- usa una variable contadora
- la variable se inicializa e incrementa en un valor determinado.
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Calcular el factorial de un número
#include<stdio.h>
int main(void){
int i,n,f=1; scanf("%d",&n); for(i=1;i<=n;i++){ f=f*i; }
printf("%d\n",f);
}
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
break y continue
break -- sale del bucle o switch
continue -- salta a la siguiente iteraccion del bucle
Ejemplo:
while ( value != 0) { scanf( "%d", &value ); if (value < 0) { printf("No valido\n"); break; //termina el bucle } if (value > 100) { printf("No valido\n"); continue; //salta una iteracion } }
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
Problema:
Escribir un triangulo de numeros, la altura se introduce como
dato y debe ser menor que 10.
Ejemplo altura 6:
1
121
12321
1234321
123454321
12345654321
Nota: Una iteraccion por linea de digitos
Cada linea tiene 2 mitades: 123456.....54321
UNIVERSIDAD PERUANA DE LAS AMERICAS INGENIERIA DE COMPUTACION Y SISTEMAS
PROGRAMACION I ING. PEDRO BENITES TOLEDO
#include<stdio.h>
int main(void){
int mitad1,mitad2,fila,altura,espacio; printf("Ingrese altura:"); scanf("%d",&altura);
for(fila=1;fila<=altura;fila++){ for(espacio=altura-fila;espacio>=1;espacio--) printf(" "); for(mitad1=1; mitad1 <= fila; mitad1++) printf("%d",mitad1); for(mitad2=fila-1;mitad2>=1;mitad2--) printf("%d",mitad2); printf("\n"); }
printf("\n");
}