Programación en C, segunda clase Ciclos while y do ... while • Los dos ciclos repiten un fragmento del programa hasta que sucede alguna condición. La diferencia entre los dos es el momento de calcular la condición • while (condición) { .... } • do { .... } while (condición); • Los dos ciclos repiten los operadores que están dentro de los corchetes mientras la condición es verdadera. Ejemplos i=0; while (i < 10) { printf(“%3d\n”,i); i++; } Ejemplos i=0; do { printf(“%3d\n”,i); i++; } while (i < 10); Ejemplos i=0; while (++i < 10) { printf(“%3d\n”,i); } Deciciones • if (condición) {operadores}; se ejecuta si la condición es valida o la expresión entre las paréntesis es diferente a 0 else { operadores}; se ejecuta si la condición no es valida o la expresión es 0 Deciciones • a = (condición) ? valor1 : valor2; A la variable a se le asigna el valor1 si la condición es verdadera o valor2 si no lo es. Ejemplos i=0; while (++i < 10) { if (i <= 5) printf(“ i = %3d es menor que 5\n”,i); else printf(“ i = %3d es mayor que 5\n”,i); } #include <stdio.h> int main(void) { int c,n; n = 0; while ((c = getchar()) != EOF) { if (c == '\n') n ++; } printf("Number of lines = %3d\n",n); } #include <stdio.h> int main(void) { int c,n; n = 0; while ((c = getchar()) != EOF) { printf(“%d %c\n”,c,c); } printf("Number of lines = %3d\n",n); } Seleción entre varias posibilidades • switch (variable) { case valor1: operadores; case valor2: operadores; break; case valor3: operadores; break; ... default: operadores } #include <stdio.h> int main(void) { int c,n,nnum, nmm, nspaces, nothers; n = nnum = nmm = nspaces = nothers = 0; while ((c = getchar()) != EOF) { if (c == '\n') n ++; if (( c > '0') && (c <= '9')) nnum++; else { switch (c) { case ' ' : nspaces++; break; case '+' : case '-' : nmm ++; break; default : nothers++; } } } printf("Number of lines = %3d\n",n); printf("Number of digits = %3d\n",nnum); printf("Number of spaces = %3d\n",nspaces); printf("Number of + and - = %3d\n",nmm); printf("Number of others = %3d\n",nothers); } Arreglos • Vectores int a[10]; • Matrices int a[10][10]; • El tamaño de los arreglos debe ser bien definido antes de usarlos • Arreglos de símbolos (strings). char a[11]; tiene espacio para 10 símbolos más el símbolo \0 al final Ejercicio • Escribir un programa que lee símbolos del teclado y los guarda en un arreglo agregando el símbolo \0 al final cuando el usuario teclea <enter>. Una vez que se teclea <enter> el programa imprime el arreglo y el numero de símbolos tecleados. El programa debe checar que el usuario no teclea mas símbolos que el arreglo puede guardar. Si se teclean mas símbolos el programa debe dar aviso y terminar. Tarea • Escribir un programa que dibuja la histograma de ocurrencia de símbolos en un texto tecleado