domingo, 29 de julio de 2007

Clase 5 Entrada y Salida Estándar.

Materia: Lógica Computacional
Profesor: Lic. Salomón Aquino.
Objetivos de la clase:
• Al final de la clase los alumnos y alumnas serán capaces de:
• Comprender la sintaxis de las funciones printf() y scanf().
• Utilizar correctamente las funciones printf() y scanf().

La función printf()
• La función printf permite escribir una lista de datos con un formato preestablecido. Acepta diferentes tipos de argumentos: carácter, valor numérico entero o real o cadena de caracteres, y los escribe según un formato especificado sobre la salida estándar. La forma de la función printf es:
• printf ("formato", arg1, arg2, ..., argn);
• donde argi pueden ser constantes, variables o expresiones, y “formato” es una serie de caracteres en la cual se pueden encontrar dos tipos de datos: un mensaje o texto a escribir literalmente, y los símbolos especificadores del formato con el cual se van a escribir las variables dadas como argumentos.
• Por ejemplo: printf ("Esto es un mensaje\n");
• Escribe la cadena Esto es un mensaje seguida de un salto de línea (debido al \n)

Ejemplo de printf()
#include < stdio.h >
main()
{
int i; char letra; float f; char string[10]="hola";
i = 1; letra='a'; f = 3.15;
/* \n en el printf hace que salte de linea */
printf(" El numero entero es %d\n", i);
printf(" El numero real es %f\n",f);
printf(" La letras es %c\n", letra);
printf(" El string es %s\n",string);
system(“pause”);return 0;
}
Especificadores de formato:
• Los especificadores de formato deben ir precedidos del signo %. Algunos de ellos son:
• %c carácter (char)
• %d número entero (int)
• %ld número entero (long)
• %f número real (float)
• %lf número real (double)
• %s cadena de caracteres

• Por cada argumento a imprimir debe existir un especificador de formato, que indica el formato en el cual se va a mostrar el dato. Por ejemplo, siendo letra una variable de tipo char con el valor ‘A’, la instrucción
printf (“El código ASCII de %c es %d”, letra, letra);
escribirá:
El código ASCII de A es 65

Otros ejemplos de printf:
• printf (“\nEl cuadrado de %f vale %f”, x, x*x);
• printf (“\nLa edad de %s es %d años”, “Juan”, edad);
• printf (“\nSeno (%lf) = %lf\n”, x, sin(x));

• La función printf puede emplearse sin argumentos, en cuyo caso sólo se imprimen los caracteres presentes en la cadena de formato.

Caracteres opcionales:
• Entre el símbolo "%" y el carácter que especifica la notación a emplear se pueden insertar ciertos caracteres opcionales. Son los siguientes:

– El signo (-) para que el dato se ajuste por la izquierda, en lugar de hacerlo por la derecha, que es lo establecido por defecto.
– Un número que indica la longitud mínima en caracteres que tiene el campo donde se mostrará el dato. Los espacios hacen de caracteres de relleno.
– Un punto decimal (.) seguido de una cifra que indica el número de dígitos tras el punto decimal de un dato real o el número mínimo de dígitos para un entero o el número máximo de caracteres de una cadena que serán impresos

Ejemplo de caracteres opcionales:
• %8d imprime un número decimal (int) alineado por la derecha y en un campo de al menos ocho caracteres.

• %-25s imprime una cadena de caracteres alineada por la izquierda y asegurando una longitud mínima de 25 caracteres (reserva al menos 25 espacios, si la longitud del valor a visualizar es mayor de 25 se visualizan todos).

• %.6f imprime un número real (float) con un máximo de 6 cifras significativas en la parte fraccionaria.

La función scanf()
• La función scanf permite leer valores desde la entrada estándar y almacenarlos en las variables que se especifican como argumentos. Éstas deben ir normalmente precedidas por el símbolo &. La sintaxis es:
scanf ("formato", arg1, arg2, ..., argn);
• donde debe haber tantos especificadores en la cadena de “formato” como variables en la lista de argumentos. Por ejemplo,
int n;
double x;
scanf ("%d%lf", &n, &x);
• para leer un valor de tipo int y otro de tipo double. Los valores se introducirán desde la entrada estándar separándolos por espacios o retornos de carro. En la cadena de formato aparecen especificadores de formato (los mismos que ya se han visto) pero nunca deben aparecer caracteres ordinarios.


#include < stdio.h >
main() {
int i; char c; float f; char string[10];
printf("Introduce la letra: "); scanf("%c",&c);
printf(" Introduce el numero entero: "); scanf("%d",&i);
printf("Introduce el numero real: "); scanf("%f",&f);
printf("Introduce el string: "); scanf("%s",&string);
printf("Los valores introducidos son: %c %d %f %s \n",c,i,f,string);
system(“pause”);return 0;
}

Ejemplo de uso de printf() y scanf()
Como ejemplo del uso de printf y scanf, sea un programa que lee dos números del teclado y calcula e imprime la suma de ambos:
/* Programa que lee dos números y los suma */
#include < stdio.h >
void main (void)
{
int a, b, suma;
printf ("\nIntroduzca a y b: ");
scanf ("%d%d", &a, &b);
printf ("\n a vale: %d; b vale %d", a, b);
suma = a + b;
printf ("\n\nLa suma de a y b vale: %d\n", suma);
}

Fin de la clase.
Gracias por asistir.