miércoles, 1 de febrero de 2012

La Función scanf en C

Hasta el momento hemos visto el uso de la función printf y las secuencias de escape. Justo después de poder imprimir una línea de texto en la pantalla, la tarea más natural consiste en realizar una operación aritmética básica. Sea por caso la suma. El siguiente programa suma un par de números enteros. Cópielo, péguelo, compílelo y ejecútelo.
/******************************************************
* * * ESTE PROGRAMA RECIBE DOS NUMEROS Y CALCULA * * Y ENTREGA SU SUMA * * * * LO QUE RECIBE: ESTE PROGRAMA RECIBE DOS ENTEROS * * LO QUE HACE: CALCULAR LA SUMA DE LOS NUMEROS * * LO QUE ENTREGA: LA SUMA DE LOS NUMEROS RECIBIDOS * ****************************************************** ****************************************************** * * * ALGORITMO: * * Pedir un numero entero al usuario * * Recibir el numero * * Solicitar un segundo numero * * Recibir ese segundo entero * * * * Calcular la suma y guardarla * * * * Mandar la suma a la salida * ******************************************************/ #include <stdio.h> /* Se usara entrada-salida*/ int main() { /* Abre main */ /*Declaracion de variables */ int numero1; /*En esta variable se guardara el primer numero*/ int numero2; /*En esta variable se guardara el segundo numero*/ int suma; /* Esta variable servira para guardar la suma*/ /*Mensaje de aviso al usuario*/ printf("\nEste programa recibe un par de numeros "); printf("y calcula e imprime su suma\n"); /* Se reciben los numeros */ printf("\nPor favor introduzca un entero: "); scanf("%d", &numero1); printf("\nPor favor introduzca un segundo entero: "); scanf("%d", &numero2); /* Se calcula la suma */ suma = numero1 + numero2; /* Se presenta el resultado */ printf("\nLa suma de %d + %d es: %d\n", numero1, numero2, suma); return 0; /*Indica que el programa termino */ } /* Cierra main */
Después de compilarlo y ejecutarlo, la salida es la siguiente:




Como puede verse, el programa calcula la suma de los enteros y muestra el resultado en la pantalla.

__________________________________________________________________________________

 Ahora hagamos un análisis del programa línea por línea para revisar cada instrucción.

Lo primero que aparece antes de cualquier instrucción es un par de rectángulos contenidos dentro de un gran comentario. El comentario empieza con  los caracteres especiales /* y terminan con */ Todo lo que hay dentro de un comentario es pasado por alto por el compilador de C.
El primer rectángulo contiene información útil para el propio programador o los programadores que modifiquen el código. En pocas palabras indica de qué va el programa, qué hace, qué recibe y qué entrega. De esa manera, echando un vistazo a ese primer rectángulo cualquiera puede conocer las generalidades del programa. No es una obligación incluir este comentario. Es un práctica personal que me ha ayudado. Si usted prefiere comentar de otra forma puede hacerlo. Si no quiere comentar nada al inicio del programa no comente, aunque no es recomendable. Con el paso del tiempo es muy probable que olvide lo que hace su programa. También es muy probable que otras personas lean y modifiquen su código, por lo cual los comentarios del principio les serán muy útiles.
El segundo rectángulo también indica qué hace el programa, aunque de manera mucho más explícita. En realidad estos son los pasos que hace la computadora para calcular la suma de los números: pedir las entradas del usuario, guardarlas, calcular la suma y a su vez guardarla y finalmente entregarla como salida. Esta forma de poner sobre el papel lo que hará el programa es muy útil e instructiva. Se llama algoritmo en seudocódigo. El seudocódigo es el conjunto de instrucciones (escritas no en lenguaje de programación, sino en el lenguaje común de los humanos) que realizará el programa. ¿Por qué escribir un seudocódigo? Porque es fácil y permite pensar antes de escribir el programa.
Para escribir el seudocódigo debe empezar por una idea general de lo que hace el programa:

-sumar dos números

A partir de esa idea general debe ir pensando en los pasos intermedios que se tienen que llevar a cabo para realizar la tarea de la idea general:

1) Recibir los números
2) Realizar la suma
3) Presentar el resultado

Una vez dividida la idea general, es necesario llevar al detalle cada una de las partes:

1) Solicitar un número entero
    Recibir el número entero
    Solicitar un segundo entero
    Guardar el segundo número

2) Calcular la suma y guardara

3) Presentar la suma en pantalla

En este grado de detalle ya es posible convertir el seudocódigo a código en lenguaje C o en cualquier otro lenguaje de programación. Si usted es capaz de escribir algoritmos en seudocódigo entonces puede programar en cualquier lenguaje siempre que conozca la sintaxis. A partir de éste programa y en lo sucesivo en los programas de este curso se incluirá un par de rectángulos como comentario, el primero con la información básica y el segundo con el seudocódigo

#include <stdio.h>
Todos los programas del lenguaje C están compuestos de funciones. La mayoría de esas funciones son hechas por el propio programador dependiendo de sus intereses. Sin embargo, existen funciones básicas que no se dejan al programador, vienen preconstruidas en el lenguaje. Una de esas funciones es printf, que sirve para imprimir una línea de texto. Otra de ellas es scanf, que sirve para recibir un número. Para hacer uso de esas funciones debemos avisarle al compilador. La manera de avisarle consiste en incluir esta línea.
int main()
Todas las funciones deben tener un nombre, definido la mayoría de las veces por el programador, sin embargo, todos los programas deben incluir una función principal llamada main. El programa comienza a ejecutarse al principio de main. int hace referencia al tipo de datos que devuelve main. Por lo pronto recuerde incluir la línea completa en todos sus programas. También recuerde que el cuerpo de las funciones está delimitado por llaves { }
int numero1;
Cuando el usuario del programa introduce el primer entero, la computadora debe leerlo y almacenarlo. Para almacenarlo necesita un espacio en la memoria. Ese espacio en la memoria necesita llamarse mediante un nombre definido por el programador. El nombre es arbitrario, sin embargo no debe de ser ninguna de las palabras reservadas del lenguaje. En este caso la variable se llama numero1. La palabra int antes del nombre hace referencia al tipo de dato, entero en este caso. Todas las asignaciones de memoria terminan con un punto y coma (;)
int numero2;
Al igual que en el caso anterior parece natural llamarle a este entero (int) numero2. Es buena práctica de programación llamar a las variables con nombres que indiquen para qué sirven.
int suma;
Cada variable debe definirse ANTES de usarse, esto le permite a la computadora reservar espacio en memoria para guardar el dato. También debe indicarse qué tipo de dato será porque de eso depende el tamaño de memoria reservado. En las siguientes dos entradas, y en los sucesivos programas aprenderá más de los tipos de datos y la memoria de las computadoras.
printf("\nEste programa recibe un par de numeros ");
printf("y calcula e imprime su suma\n");
Este par de líneas imprimen un mensaje al usuario. Le dicen lo que el programa hace.
printf("\nPor favor introduzca un entero: ");
Esta línea solicita explícitamente la entrada del primer entero.
scanf("%d", &numero1);
Cuando el usuario introduce el número, la computadora necesita saber qué tipo de datos está recibiendo y en dónde tiene que guardar ese número. La función scanf sirve para recibir enteros. La sintaxis es la que se presenta aquí. Entre paréntesis hay un par de parámetros separados por una coma. el primero de ellos es "%d", esto indica que el dato recibido es un entero y por lo tanto se guardará en un apartado de memoria asignado previamente como entero; el segundo parámetro es &numero1 el & le indica al compilador que debe de buscar el espacio de memoria llamado numero1 y asignar ahí la cantidad recibida. Siempre que se use la función scanf (en realidad siempre que escriba una instrucción en C)se debe terminar con un punto y coma (;)
printf("\nPor favor introduzca un segundo entero: ");
scanf("%d", &numero2);
Para recibir el segundo número el proceso se repite. Se le pide al usuario que introduzca por favor un número y se asigna a la variable numero2 la cantidad recibida.
suma = numero1 + numero2;
Esta línea es la más importante de todo el programa. También es la más simple. El operador de suma + sirve para calcular la suma de un par de números tal como se muestra en la línea. Después de sumar numero1 y numero2, el programa asigna la suma a la variable suma. El signo = es un operador de asignación. Toma la cantidad de la derecha y la asigna a la variable de la izquierda. El orden en el que se ejecutan los operadores = y + es importante, por jerarquía de precedencia, primero se realiza la suma y luego la asignación.
printf("\nLa suma de %d + %d es: %d\n", numero1, numero2, suma);
Finalmente se presenta en la pantalla el valor de la suma. La función printf no solamente puede imprimir texto. Ya vimos que puede hacer cosas distintas si se le introducen secuencias de escape. También puede mostrar números contenidos en la memoria. Por ejemplo, si se quiere imprimir el contenido (o valor) de la variable entera numero1 debe de indicarse que se imprimirá un entero mediante "%d". Esa indicación debe de estar dentro de las comillas (recuerde que las comillas van a su vez entre paréntesis). Después de las comillas deberá ir una coma de separación y a continuación el nombre de la variable entera que se imprimirá (numero1). Es posible escribir más de una variable. En esta línea del programa se imprimen numero1, numero2 y suma. Para esto es necesario escribir dentro de las comillas de printf "%d %d %d" desde luego entre cada una de estas indicaciones puede haber texto (+ y es: en este caso); después debe ir una coma y los nombres de las variables separados por comas: numero1, numero2, suma y por último el cierre del paréntesis y un punto y coma final.
return 0;
La instrucción return 0 debe ir siempre al final de la función main. Eso indica que el programa terminó.
__________________________________________________________________________________

Lo que aprendió:
Escribir programas en seudocódigo
Cómo reservar memoria para un número entero.
Cómo recibir un número entero del usuario usando la función scanf.
Cómo sumar un par de números enteros.
Cómo imprimir números enteros usando la función printf.
____________________________________________________________________________________________
Esta entrada forma parte del Curso de C con Programas Explicados Línea por Línea
Índice
Entrada Anterior
Entrada Siguiente

2 comentarios:

  1. INcreible ningun gracias, te mataste escribiendo al detalle o solo hiciste copy paste? Bueno coy a coonfiraen ti ,,, Felicitaciones muchos ya no quieren saber nada de C, C++ cobardes le temen a librarys, pointer, chain, modules, etc prefieren jS , python q dan risa

    ResponderEliminar
    Respuestas
    1. Todo lo que hay en el blog es mío, Morpheo, sí me maté escribiendo. Saludos.

      Eliminar

Related Posts Plugin for WordPress, Blogger...