La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 TÉCNICAS DE PROGRAMACIÓN Lenguaje C Tercera Clase (Segunda de C)

Presentaciones similares


Presentación del tema: "1 TÉCNICAS DE PROGRAMACIÓN Lenguaje C Tercera Clase (Segunda de C)"— Transcripción de la presentación:

1 1 TÉCNICAS DE PROGRAMACIÓN Lenguaje C Tercera Clase (Segunda de C)

2 Daniel Finol 2 while: el cuerpo de una instrucción while puede consistir de Una o más instrucciones encerradas entre llaves; o Una sola instrucción sin llaves. En todo caso, para que el código sea fácil de leer y entender (para el lector humano), se debe sangrar (indent) el cuerpo del while (así como cualquier sub-bloque de código) para resaltar la estructura lógica del programa. Posición de las llaves. Punto y coma(;) - 1 instrucción por línea.

3 Daniel Finol 3 Si sustituimos la línea: printf("%d\t%d\n", fahr, celsius); por: printf("%3d %6d\n", fahr, celsius); la tabla se imprimirá con justificación a la derecha: en vez de 0 -17 20 -6 40 4 60 15 80 26 100 37... 1 -17 20 -6 40 4 60 15 80 26 100 37...

4 Daniel Finol 4 Para tener más precisión en los datos de la tabla de conversión necesitamos trabajar con números fraccionarios en vez de enteros. Entonces la variables fahr y celsius deben cambiarse a float, sustituyendo: int fahr, celsius; por float fahr, celsius;

5 Daniel Finol 5 El programa quedaría así: #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temperatuire scale */ upper = 300; /* upper limit */ step = 20; /* step size */ fahr = lower; while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; }

6 Daniel Finol 6 El programa quedaría así: #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temperatuire scale */ upper = 300; /* upper limit */ step = 20; /* step size */ fahr = lower; while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; }

7 Daniel Finol 7 #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temperatuire scale */ upper = 300; /* upper limit */ step = 20; /* step size */ fahr = lower; while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; } Operandos enteros -> Operación Entera Operandos de punto flotante -> Operación de Punto Foltante

8 Daniel Finol 8 El programa quedaría así: #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temperatuire scale */ upper = 300; /* upper limit */ step = 20; /* step size */ fahr = lower; while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; } Si uno de los operandos es de punto flotante y el otro entero,el entero se transforma en punto flotante.

9 Daniel Finol 9 El programa quedaría así: #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temperatuire scale */ upper = 300; /* upper limit */ step = 20; /* step size */ fahr = lower; while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; } Así que lo podemos poner de esta manera.

10 Daniel Finol 10 El programa quedaría así: #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temperatuire scale */ upper = 300; /* upper limit */ step = 20; /* step size */ fahr = lower; while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; } Con estos dos tampoco hay problema.

11 Daniel Finol 11 %f – imprime como punto flotante. %6f – igual pero con por lo menos 3 caracteres de amplitud. %6.1f – igual pero con una cifra después del punto. %.2 – imprime como punto flotante con dos cifras después del punto decimal.

12 Daniel Finol 12 printf("%3.0f %6.1f\n", fahr, celsius); imprime de esta manera: 0 - 17.8 20 - 6.7 40 4.4...

13 Daniel Finol 13 Sustitución de variables por constantes... #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temperatuire scale */ upper = 300; /* upper limit */ step = 20; /* step size */ fahr = lower; while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; }

14 Daniel Finol 14 Sustitución de variables por constantes: #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr, celsius; fahr = 0; while (fahr <= 300) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + 20; }

15 Daniel Finol 15 Sustitución de variable por expresión... #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr, celsius; fahr = 0; while (fahr <= 300) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + 20; } En cualquier contexto en el que se permita usar el valor de una variable es posible usar una expresión del mismo tipo.

16 Daniel Finol 16 Sustitución de variable por expresión: #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr; fahr = 0; while (fahr <= 300) { printf("%3.0f %6.1f\n", fahr, (5.0/9.0) * (fahr-32)); fahr = fahr + 20; } En cualquier contexto en el que se permita usar el valor de una variable es posible usar una expresión del mismo tipo que la variable.

17 Daniel Finol 17 fahr -> int... #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { float fahr; fahr = 0; while (fahr <= 300) { printf("%3.0f %6.1f\n", fahr, (5.0/9.0) * (fahr-32)); fahr = fahr + 20; }

18 Daniel Finol 18 fahr -> int: #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { int fahr; fahr = 0; while (fahr <= 300) { printf("%3.0f %6.1f\n", fahr, (5.0/9.0) * (fahr-32)); fahr = fahr + 20; }

19 Daniel Finol 19 while -> for... #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { int fahr; fahr = 0; while (fahr <= 300) { printf("%3.0f %6.1f\n", fahr, (5.0/9.0) * (fahr-32)); fahr = fahr + 20; }

20 Daniel Finol 20 while -> for: #include /* print Fahrenheit-Celsius table for fahr = 0, 20,..., 300; floating-point version */ main() { int fahr; for (fahr = 0; fahr <= 300; fahr = fahr + 20) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32)); }

21 Daniel Finol 21 for(inicialización; condición; incremento) cuerpo; for (fahr = 0; fahr <= 300; fahr = fahr + 20) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));

22 Daniel Finol 22 Es una mala práctica usar “constantes literales” como: #include main() { int fahr; for (fahr = 0; fahr <= 300; fahr = fahr + 20) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32)); }

23 Daniel Finol 23 Es mejor usar “CONSTANTES SIMBÓLICAS” como: #include #define LOWER 0 /* lower limit of table */ #define UPPER 300 /* upper limit */ #define STEP 20 /* step size */ main() { int fahr; for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32)); }

24 Daniel Finol 24 Toda entrada y salida de texto se trata como un “flujo (stream) de caracteres” Un “flujo de texto” es una secuencia de texo dividido entre líneas; cada línea consta de cero o más caracteres seguidos de un carácter “nueva línea”.

25 Daniel Finol 25 La función getchar (de la biblioteca estándar) lee el siguiente carácter de la entrada de una secuencia de texto y lo devuelve como su valor: c = getchar(); La función putchar escribe el contenido de una variable entera como un carácter en la salida (generalmente la pantalla). putchar(c);

26 Daniel Finol 26 #include /* copy input to output; 1st version */ main() { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); }

27 Daniel Finol 27 #include /* copy input to output; 2nd version */ main() { int c; while ((c = getchar()) != EOF) putchar(c); }

28 Daniel Finol 28 #include /* count characters in input; 1st version */ main() { long nc; nc = 0; while (getchar() != EOF) ++nc; printf("%ld\n", nc); }

29 Daniel Finol 29 #include /* count characters in input; 2nd version */ main() { double nc; for (nc = 0; gechar() != EOF; ++nc) ; printf("%.0f\n", nc); }

30 Daniel Finol 30 #include /* count lines in input */ main() { int c, nl; nl = 0; while ((c = getchar()) != EOF) if (c == '\n') ++nl; printf("%d\n", nl); }

31 Daniel Finol 31 #include #define IN 1 /* inside a word */ #define OUT 0 /* outside a word */ /* count lines, words, and characters in input */ main() { int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while ((c = getchar()) != EOF) { ++nc; if (c == '\n') ++nl; if (c == ' ' || c == '\n' || c = '\t') state = OUT; else if (state == OUT) { state = IN; ++nw; } printf("%d %d %d\n", nl, nw, nc); }


Descargar ppt "1 TÉCNICAS DE PROGRAMACIÓN Lenguaje C Tercera Clase (Segunda de C)"

Presentaciones similares


Anuncios Google