El IF: Es muy parecido al while en formato y en operacion, en ambos si la condición no se cumple (es falsa) no se ejecutará el cuerpo de la declaracion. main() { char ch; ch=getche(); if (ch=='S') printf("\ntu tecleaste S "); * cuerpo de la declaración if el ; es para terminarlo.*/ } se pueden poner múltiples declaraciones dentro del if encerradas entre llaves. If anidado: /*ifani.c*/ main() { if (getche()=='s') if (getche()=='i') printf("\n tu tecleaste si"); } El if más interno se ejecutara si el más externo es verdadero x ---- se sale del programa sx --- también se sale si --- entonces escribirá tu tecleaste si. El if por si solo ejecuta una simple declaración o un grupo de ellas si la expresion de prueba es verdadera, si fuera falsa no haría nada. Se usa el else para ejecutar declaraciones si y solo si la expresion es falsa. #include <stdio.h> #include <conio.h> /*ifelse.c*/ /*demostración del if*/ main() { char ch; ch=getche(); if (ch=='y') printf(" tu tecleaste y"); else printf("\n tu no tecleaste y"); } /*tablero.c*/ main() { int x,y; for (y=1;y<9; y++) { for (x=1 ; x<9 ;x++) if ((x+y)%2 ==0) printf((“\xDB\xDB"); else printf("__"); printf("\n"); } /*dibujando una diagonal*/ main() { int x, y; for (y=1;y<24;y++) { for (x=1;x<24;x++) if(x==y) printf("\xDB"); else printf("\xB)"); printf("\xn"); } } #include <stdio.h> #include <conio.h> /* if_else_ani.c*/ /*diagonal2.c*/ main() { int x,y; for (y=1;y<10;y++) /*columna*/ { for (x=1; x<10; x++) /*fila*/ if(x==y) printf("#"); /*diagonal NW-SE*/ else if(x==10-y) printf("\*"); /* imprime obscuro*/ else printf("\n"); } } printf("*"); /*imprime claro*/ /*siguiente línea */ /* #******** *#******* **#****** ***#***** ****#**** *****#*** ******#** *******#* ********# */ /* otro ejemplo de while*/ /*adiv.c*/ main() int num1=10,num2=0; while (num2!=num1 ) { printf("adivina mi numero "); scanf("%d", &num2); } printf("buen trabajo!!\n"); return (0); } /*lazo do-while*/ main() int num1=10,num2;/* num2 no se inicializa pues se checa al final*/ { printf("adivina mi numero "); scanf("%d", &num2); } while (num2!=num1 ); printf("buen trabajo!!\n"); return (0); } #include <stdio.h> #include <conio.h> /*determina cual es el mayor entre dos números */ main() { int num1,num; printf("da un numero "); scanf ("%d",&num); printf("da otro numero "); scanf ("%d",&num1); if (num>num1) printf("tu numero %d es mayor que %d",num,num1); else if (num==num1) printf("tu numero %d es igual a %d",num,num1); else printf("tu numero %d es menor que %d",num,num1); return 0; } /* da un numero 6 da otro numero 4 tu numero 6 es mayor que 4 */ /* da un numero 10 da otro numero 10 tu numero 10 es igual a 10 */ /* da un numero 1 da otro numero 10 tu numero 1 es menor que 10 */ GOTO: se puede utilizar en cualquier block o declaración precediéndola con el nombre de la etiqueta y seguida de ; es útil cuando se desea salir de un lazo. goto etiqueta; etiqueta: #include <stdio.h> /*goto1.c*/ /*utilización de goto*/ main() { int i; for (i=0;;) { i++; if (i==1000) goto termina; } termina: printf("adios\n"0; return(0); } /* calcula.c*/ main() { char op; /*operador*/ float op1,op2,res; /*operandos y resultados*/ printf(" da una expresion a ser calculada*/ scanf("%f %c %f ",&op1,&op,&op2) if (op=='+') res=op1+op2 ; if (op=='-') res=op1-op2 ; if (op=='*') res=op1*op2; if (op=='/') res(=op1/op2; else printf("disculpa pero no conozco este operador '%c' ",op); printf("el resultado es %f \n",res); return(0); } /*otra versión de calcula.c*/ /*calcula1.c*/ main() { char op; /*operador*/ float op1,op2,res; /*operandos y resultados*/ printf(" da una expresion a ser calculada*/ scanf("%f %c %f ",&op1,&op,&op2) switch(op) case '+': res=op1+op2 ; break; case '-': res=op1-op2 ; break; case '*': res=op1*op2; break; case '/': res(=op1/op2; break; default: printf("disculpa desconozco este operador '%c' ",op); printf("el resultado es %f \n",res); return(0); } /*calcula2.c*/ main() { char op,cont; /*operador*/ float op1,op2,res; /*operandos y resultados*/ printf(" da una expresion a ser calculada*/ scanf("%f %c %f ",&op1,&op,&op2) switch(op) case '+': res=op1+op2 ; break; case '-': res=op1-op2 ; break; case '*': res=op1*op2; break; case '/': res(=op1/op2; break; default: printf("disculpa desconozco este operador '%c' ",op); printf("el resultado es %f \n",res); return(0); } sintaxis del switch: switch (variable) { case constant_1: declaraciones; break; case constante2: declaraciones; break; . . . } /*promedio de calificaciones de 4 alumnos*/ /*prom1.c*/ main() int cont=0; int mat; float p4,p1,p2,p3; float c4,c1,c2,c3; clrscr(); printf("escribe matricula y calif. separadas por un espacio"); printf("\nmat cal1 cal2 cal3 cal4"); while(getche()!='27') { scanf("%d %f %f %f %f",&mat,&cal1,&cal2,&cal3,&cal4); cont++; prom=c1+c2+c3+c4; switch(cont) case'1': prom1=prom; mat1=mat; break; case '2': prom2=prom; mat2=mat; break; case '3': prom3=prom; mat3=mat; break case '4': prom4=prom; mat4=mat; break; } } printf("\n\n matricula= %8d promedio=%6.2f \n",mat1,prom1); printf("\n\n matricula= %8d promedio=%6.2f \n",mat2,prom2); printf("\n\n matricula= %8d promedio=%6.2f \n",mat3,prom3); printf("\n\n matricula= %8d promedio=%6.2f \n",mat4,prom4); /*mayusc.c*/ /*convierte a mayúsculas */ #include<ctype.h> #include<stdio.h> main() { char ch; clrscr(); gotoxy(5,2); printf("\nda una letra en minúscula <0> para salir:\n "); while ((ch=getch())!='0') { if (ch>='a') { if (ch<='z') printf("\nla mayúsculas de: %c es: %c",ch,toupper(ch)); } else printf("\n disculpa debe ser una letra del abecedario"); } return(0) ; } EL operador condicional consiste de 2 símbolos usados en 3 expresiones diferentes: (operador ternario) binario "+','-' unario !, se forma: condición ? expresion 1: expresion2 condición es una expresion lógica que se evalúa y si es falso o verdadero entonces es ejecutan las exp1 o exp2 . max=(num1<num2)? num1: num2; se asigna el valor de num1 o num2 a máximo dependiendo de la condición 1.- se evalúa num1>num2 2.- si es verdadera entonces num1 se asigna a max 3.- si es falsa entonces num2 se asigna a max esto es equivalente a: if (num1<num2) max=num2; else max= num1; solo que en una forma mas compacta. abs= (num<0>)? -num: num; esta declaración evalúa el valor absoluto. si num=-42 num<0? O: num*num FUNCIONES; empiezan con el nombre seguido por paréntesis los cuales pueden o no tener contener argumentos las llaves encierran el cuerpo de la función, la cual pueden tener 1 0 mas declaraciones. para llamar la función si se requiere ; pero no para definirla (su contenido) variables locales: una variable definida en una función es desconocida en otras por lo que son llamadas automáticas porque se crean automáticamente sí la función se llama y se destruye cuando acaba la función, la variable solo es visible para la función cuando esta se llama. /*sonido.c*/ /* prueba la función sonido dos veces*/ /*#include<dos.h> */ /*librería que contiene la función sleep()y delay()*/ #include <stdio.h> main() { clrscr(); gotoxy(20,5); /*eje de X, eje de las Y*/ printf("sonara 4 veces la bocina"); sleep(5); /*retraso en segundos */ sonido(); /*llamada a la función sonido*/ gotoxy(20,10); printf("teclea cualquier letra "); getch(); sonido(); /*se vuelve a llamar*/ gotoxy(20,23); printf(" adiós, que tengas un buen día"); delay(2000); /*retrazo en milisegundos*/ } sonido() /*definición de la función */ /* suena dos veces la bocina*/ { int k; printf("\x7"); for (k=1;k<5000;k++) /*retraso */ ; /*declaración nula un for sin cuerpo*/ printf( "\x7"); } el retraso se construye en el lazo for se ejecuta 5000 veces, pero sin cuerpo (el ; lo indica) el ; se utiliza para terminar el lazo, en computadoras rápidas el retraso puede ser de 20000 o 50000 Funciones que regresan un valor: getche(): esta función regresa el valor de la tecla que se pulso toupper(): esta función regresa una mayúscula de la minúscula que se pulsa. algunas son funciones que no usan argumento y que regresan un valor /*menu.c*/ /*prueba la función minusc()*/ main() { char minusc(); /* una función que no es un entero se deba declarar*/ printf("teclea una 'a' o una 'b' "); charmin=minusc(); switch(charmin) { case 'a': printf("\n la letra que tecleaste es una 'a'); break; case 'b' : printf("\n la letra que tecleaste es una 'b' ); break; default: printf("escogiste una opción no existente %c",charmin); } minusc() /*definición de la función */ /* convierte a minúscula si fuese mayúscula */ { char ch; ch=getche(); if (ch>64 && ch<41) /*A--> Z 65 --->90*/ ch+=32; return(ch); } otra versión de la función minusc minusc() /*definición de la función */ /* convierte a minúscula si fuese mayúscula */ { char ch; ch=getche(); if (ch>64 && ch<41) /*A--> Z 65 --->90*/ return(ch+=32); else return(ch); } en esta función se regresa un valor diferente dependiendo de lo que se teclee, si mayusc o minusc.