Vous êtes sur la page 1sur 9

REPBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA DEFENSA UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA DE LA FUERZA ARMADA

NACIONAL NCLEO ARAGUA SEDE MARACAY COORDINACIN DE TELECOMUNICACIONES ASIGNATURA: PROGRAMACION CDIGO: SYC-22112

LABORATORIO # 3 Lenguaje C Estructuras de decisin y repeticin

Flujo de control
Se llama flujo de control de un programa al orden en que se ejecutan las instrucciones que lo conforman. El flujo de control de los programas, es lineal, esto significa que el computador ejecuta una a una las instrucciones que se le indican, sin alterar el orden en que se escriben. Pero en muchos procesos que es necesario programar, es importante indicarle al computador que ejecute un conjunto determinado de instrucciones, cuando se cumpla una determinada condicin y que ejecute otras cuando la condicin no se cumpla, para esos casos el lenguaje C nos da la instruccin if else.

Expresin lgica
Una expresin lgica en C es una sentencia que al ser evaluada, el computador da un valor 0 si es falsa y un valor distinto de cero si es verdadera. Cualquiera de las siguientes expresiones, son validas en un programa escrito en C o C++. La expresin A+B>=C*2 compara el valor de la suma de A y B con el doble del valor de C, si la suma es mayor o igual que el doble de C entonces el resultado de la expresin es 1, en otro caso es 0. La expresin X= ='S', compara el valor almacenado en la variable X con la letra S, el resultado da diferente de cero si en la variable X hay una letra distinta a la S. La expresin z= a+b>=c*2 compara el valor de la suma de a y b con el doble de c, si es menor almacena en z el valor 0 si es mayor o igual almacena un valor distinto de cero. La expresin z=!(a+b>=c*2) almacena 1 en la variable z si el resultado de comparar a+b con el doble de c es menor, puesto que la proposicin es falsa, al negarla da verdadera.

ESTRUCTURAS DE DECISIN
Instruccin if (expresin lgica) else
La instruccin if evala la expresin lgica , si sta es verdadera, ejecuta la instruccin definida en <accin A>, si es falsa se ejecuta la instruccin inmediata al else definida en <accin B>, despus de eso ejecuta la instruccin siguiente a la <accin B> y las que le siguen.

Sentencia Compuesta
Cuando un programador, necesita que el computador ejecute ms de una instruccin en el momento de que la expresin lgica sea verdadera o sea falsa, lo indica encerrando entre llaves { } las instrucciones que siguen al then o al else. Ejemplo: int A,B,C; main() if (A > 0) { B = A+2*B; C = B + A/4; D = C B; } else { B = B+1; 1

C = A+1; If (C > 0) printf(%d es mayor que cero, C); } }

If Anidados
Tendremos situaciones lgicas en las cuales despus de hacernos una pregunta se nos hace necesario hacer una nueva pregunta, en esos caso tenemos entonces que despus del then y/o else es necesario volver a tener una sentencia if then else decimos entonces que anidamos if. Ejemplo: se requiere un programa que lea X y permita evaluar la funcin #include <stdio.h> #include <math.h> main(){ double x,y; clrscr(); printf(Escriba el valor de X (debe ser real)); scanf(%lf,&x); if (x<3) y = 5*x + sqrt(x++); else if ((x>=3)&&(x<=9)) y = x + 5 (x + 2)/3; else y = exp(3*log(x)) + 7*x; printf(y = %7.2lf,y); getch(); }

?:
Este se trata de un operador del tipo condicional al estilo if/else. Se utiliza para condicionales cortos (de una sola lnea). La forma de este operador es la siguiente: condicin ? accin a ejecutar en caso verdadero : accin a ejecutar en caso falso ; Por ejemplo: #include <stdio.h> main(){ int calificacion; printf(Cual fue tu calificacion del semestre?"); scanf(%d,&calificacin); calificacion>=6 ? printf("pasaste") :printf( "reprobaste"); getch(); } La condicin es: calificacin>=6. En caso de ser verdadera se enviar pasaste como argumento a la instruccin printf, en caso contrario se enviar reprobaste.

switch
Muchas veces nos metemos en aprietos cuando necesitamos tener el control sobre muchas opciones que pudiese tomar el usuario, porque resulta muy complicado pensar en varios if/else anidados, para esos casos tenemos otra herramienta muy cmoda, la estructura de seleccin mltiple switch. La forma general es: switch (parmetro a evaluar o comparar){ 2

case a : Acciones a ejecutar; case b: Acciones a ejecutar caso por default; }

//cuando el parmetro tiene un valor a //cuando el parmetro tiene un valor b

#include <stdio.h> main(){ int opcion; printf(Menu de opciones"); printf(\n1.- Opcin 1"); printf(\nOpcin 2"); printf(\nOpcin 3"); printf(\nElije una oopcin"); scanf(%d,&opcion); switch(opcion){ case 1: printf(\nEjecucin 1"); break; case 2: printf(\nEjecucin 2"); break; case 3: printf(\nEjecucin 3"); break; default: printf(\n Es una opcin invlida"); break; } printf(\n Presiona enter para salir"); getch(); } Notemos que opcion es una variable de tipo entero, asi que case 1 , se refiere a que la variable opcion tiene un valor de 1. Si se tratase de una variable de tipo carcter, entonces debera de escribirse case 1. Encontramos una nueva instruccin, break. Esta se encarga de alterar el flujo de control. Cuando se encuentra un break, inmediatamente se salta el resto de la estructura. No es exclusiva de la estructura switch, tambin se puede colocar en bloques if, for, while o do while. Sin embargo es mejor no depender demasiado del break.

ESTRUCTURAS DE REPETICIN O CICLOS


WHILE
while (condicin a cumplir) { acciones a ejecutar; } Un ejemplo de ste lo podemos ver en el clculo del promedio de 10 nmeros, pensemos que son las calificaciones del semestre. Mirando rpidamente la forma de estructurar nuestro programa, podemos pensar en la siguiente solucin: Declarar variables e inicializarlas Mientras (no se hagan 10 iteraciones) hacer Leer una calificacin Sumarla al total Determinar que se ha hecho una iteracin calcular el promedio mostrar el promedio El programa queda como sigue: #include <stdio.h> main(){ int calificacion, suma=0, iteracion=1; float promedio; while(iteracion<=10){ printf("\nteclea tu calificacion %d",iteracin); scanf(%d,&calificacin); suma+=calificacion; ++iteracion; } promedio=(float)suma/(iteracion-1); printf("\nel promedio de calificaciones es: %.2f ",promedio); getch(); }

DO WHILE
Cuando necesitamos que un ciclo se ejecute por lo menos una vez, es necesaria esta sentencia. La forma general es: do{ Acciones a ejecutar; } while(condicion a cumplir); Pongamos como ejemplo el men de opciones. Necesitamos que por lo menos una vez lea la opcin que elige, y en caso de que elija una no disponible, en lugar de aparecer el mensaje es una opcin no vlida y termine el progra ma, espere a que el usuario escoja una de la lista. El programa de ejemplo: #include <iostream.h> main(){ int opcion; do{ printf(Menu de opciones"); printf(\n1.- Opcin 1"); printf(\nOpcin 2"); printf(\nOpcin 3"); printf(\nElije una opcin"); scanf(%d,&opcion); }while((opcion<1)||(opcion>3)); printf(\nesta opcion si fue valida"); 4

getch(); } Nunca debemos olvidar el punto y coma despus del while. Usada en combinacin con el bloque switch, podemos tener muy buenos resultados y encontrar varias aplicaciones de ellos.

for
El ciclo for es al que ms se recurre cuando se requiere realizar operaciones secuenciales, en donde se conoce el nmero de iteraciones o la condicin a comprobar. La forma general de esta sentencia es: for(asignacin inicial ; condicin ; instruccin ) { bloque de instrucciones; } Si se trata de una sola instruccin a ejecutar no es necesario ponerla entre llaves, incluso podra ponerse dentro del parntesis el for, separado por una coma. for(asignacin inicial ; condicion ; instruccin1) unica instruccin; , si se trata de una instruccin muy corta podra ponerse: for(asignacin inicial ; condicion ; instruccin1 , instruccin 2) Pensemos en una aplicacin. Hagamos un programa que calcule las coordenadas de un proyectil que se mueve en movimiento parablico. Al menos determinaremos 10 puntos por los que pasa. Si se tienen dudas acerca de las frmulas recomiendo que consulten un libro sobre fsica. Las formulas son las siguientes: X = (Vi) (cos ) (t) y = (Vi) (sin) (t) + (g) (t2) Donde Vi es la velocidad inicial. es el ngulo con el que es lanzado. t es el tiempo. g es la gravedad. La forma en que pensara hacer este programa es la siguiente: Declarar e inicializar variables Pedir datos for (contador=1; hasta que el contador llegue a 10; aumentar contador){ Calcular coordenada x Calcular coordenada y Imprimir las coordenadas } Termina el programa. No parece tan complicado verdad? Pues en realidad no lo es tanto. El programa terminado aqu est. #include <stdio.h> #include <math.h> main (){ int t; float x=0,y=0,ang,vi, grav=9.81; printf(\ncual es el angulo de lanzamiento?"); scanf(%f,&ang); printf(\ncual es la velocidad inicial?"); scanf(%f,&vi); ang=((ang*3.141592)/180); for(t=0;t<=10;t++){ x=(vi*cos(ang)*t); y=(vi*sin(ang)*t)-(0.5*grav*t*t); printf(\nt= %d x= %.2f y= %.2f",t,x, y); } printf("\nfin del programa"); getch(); } 5

El ciclo for comienza inicializando la variable del tiempo en 0. La condicin que se tiene que cumplir para entrar en el ciclo es que t sea menor o igual a 10. Cuando entra en el ciclo calcula las coordenadas x y y. Hacemos uso de las funciones cos y sin que se encuentran dentro de la librera math.h. Dichas funciones calculan el coseno y el seno de un ngulo determinado en radianes, es por eso que la variable ang es transformada a radianes. Luego de haber calculado las coordenadas, las imprime en pantalla. Y finalmente ejecuta la ltima instruccin del for aumentar una unidad a t (t++). En el momento en el que la variable t sea mayor que 10, no entrar en el ciclo y llegar el fin del programa.

Traduccin de las estructuras de seleccin y repeticin de un algoritmo al Lenguaje C


Diagrama de Flujo ESTRUCTURAS DE SELECCION Pseudocdigo
SI (expresin lgica) ENTONCES <accin A> SINO //opcional <accin B>

Lenguaje C
If (expresin lgica) <accin A>; else //opcional <accin B>;

NO

Expresin lgica

SI

<accin B>

<accin A>

BUCLE MIENTRAS
mientras <expresin lgica> . Instrucciones . finMientras while (expresin lgica) { instrucciones; }

Expresin lgica SI Instrucciones

NO

BUCLE MIENTRAS

Instrucciones NO Expresin lgica SI

hacer . Instrucciones . finHacerHasta (<expresin lgica>)

do{ instrucciones; } while(expresin lgica);

ASIGNACIONES

Leer archivo LenguajeC_0 para complementar los conocimientos


Dados los siguientes enunciados de problemas y su correspondiente diagrama de flujo o pseudocdigo, codifique los mismos en lenguaje C. 1. Leer tres valores, si el primer valor es menor a 10 se deber sumar el segundo con el tercer valor y si el resultado de esta suma es menor a 50 se multiplicar por 3, mostrar el resultado. Si el primer valor es mayor o igual a 10 entonces se multiplicar el segundo valor por 5 y se le sumar el tercer valor, mostrar el resultado.

Inicio

V1,V2,V3, SUMA

V1,V2,V3

V1<10 NO

SI

SUMA V2+V3

SUMA<50 SI SUMA SUMA*3

NO

SUMA V2*5+V3

SUMA

FIN

PSEUDOCODIGO Inicio V1,V2,V3,SUMA son valores reales Leer VI,V2,V3 SI V1 < 10 ENTONCES SUMA V2 + V3 SI SUMA<50 ENTONCES SUMA SUMA*3 FIN SI SINO SUMAV2*5 + V3 FIN SI Imprimir SUMA Fin 2. Los impuestos a deducir a los trabajadores de una empresa, varan en funcin de su salario: si el salario es menor o igual a 1000 Bs. Libre de impuesto , si el salario es menor o igual 3000 Bs. y mayor a 1000 el impuesto ser del 20% y si el salario es mayor de 3000 Bs el impuesto es del 30%. Imprimir el nombre, el salario, el impuesto y el total a cobrar.

3.

Leer 4 valores y para cada valor ledo si es positivo calcular e imprimir su cuadrado, mientras si es negativo, calcular e imprimir su cubo. El proceso se realiza mientras el usuario lo desee. INICIO num, result son valores reales /* num almacenar un valor leido opc es un carcter /* opc = S/N

REPETIR PARA i1 HASTA 4 HACER LEER num SI num > 0 ENTONCES result num*num IMPRIMIR El cuadrado del nmero es: IMPRIMIR result ELSE result num*num*num IMPRIMIR El cubo del nmero es: IMPRIMIR result FIN SI IMPRIMIR result FIN PARA IMPRIMIR Desea leer otros 4 valores? (S/N) LEER opc HASTA opc = N FIN

4.

Dados 4 alumnos de una seccin, determinar: Cuntos alumnos son de Maracay y no son menores de 18 aos, cuntos alumnos son de Maracay y son mayores o iguales a 23 aos.

PSEUDOCODIGO INICIO edad,May18,May23 son enteros R es caracter PARA i1 HASTA 4 HACER IMPRIMIR El ALUmno es de Maracay?(S/N) LEER R SI R=S ENTONCES IMPRIMIR Escriba la edad del alumno? LEER edad SI edad>=23 ENTONCES May23May23 + 1 SINO SI edad >=18 ENTONCES May18May18 + 1 FIN SI FIN SI FIN SI FIN PARA IMPRIMIR Alumnos mayores a 23 aos: IMPRIMIR May23 IMPRIMIR Alumnos mayores a 18 aos: IMPRIMIR May18 FIN

Vous aimerez peut-être aussi