Académique Documents
Professionnel Documents
Culture Documents
NACIONAL NCLEO ARAGUA SEDE MARACAY COORDINACIN DE TELECOMUNICACIONES ASIGNATURA: PROGRAMACION CDIGO: SYC-22112
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
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
#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.
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.
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; }
NO
BUCLE MIENTRAS
ASIGNACIONES
Inicio
V1,V2,V3, SUMA
V1,V2,V3
V1<10 NO
SI
SUMA V2+V3
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