Anuncios Google

Entrada y Salida: scanf/printf

Tutoriales de Programacionmx

La gran mayoría de los programas necesitan la interacción entre el usuario y la máquina. Desde la simple calculadora, hasta las complejas GUIs necesitan que el usuario introduzca datos. En este tutorial vamos a complicar un poco las cosas y vamos a construir un programa que no funcionará si no interactuas con él.

Primero vamos a estudiar un poco la función scanf. Ésta es el equivalente e inverso de la función printf, de hecho también se incluye en la librería estándar de C (stdio.h). Funciona exactamente igual que printf, pero al inverso. Es decir en vez de "devolver" datos, "recibirá". No te costará aprenderla.

Vamos a analizar un pequeño programa que hice para introducirte a este bella función, lo digo y lo seguiré diciendo: Escribe el código, no hagas copy-paste. Mucha teoría y poca programación, aquí va:


/*Entrada y Salida: scanf*/
 
#include <stdio.h>
 
int main()
{
    float a;
 
    char b;
 
    printf("Introduce un numero: ");
 
    scanf("%f",&a);
 
    printf("Intrduciste el numero: %f\n",a);
 
    getchar();
 
    printf("Introduce una letra: ");
 
    scanf("%c",&b);
 
    printf("Introduciste la letra %c\n\n",b);
 
    printf("Presiona Enter pasa Salir");
 
    getchar();
    getchar();
 
    return 0;
 
}


No es necesario que explique lo que ya todos sabemos (si no lo sabes, regresa al primer tutorial). Iré al grano:


    float a;
   
    char b;

Declaramos las variables, una de tipo float y una de tipo char.


     printf("Introduce un numero: ");


Mostramos por pantalla el mensaje entre comillas "".


     scanf("%f",&a);
 
    printf("Intrduciste el numero: %f\n",a);


Y aquí está scanf. Lo que hace está función es "escanear el teclado, en busca de una tecla activa". Ahora vamos a ver como se utiliza. Entre paréntesis tenemos un % y una letra, al igual que en printf usamos el % acompañado de una letra para indicar con qué tipo de dato estamos trabajando. En este caso estamos diciendo que el teclado escanee en busca de números flotantes. Al final de las comillas encontramos otro argumento &a esto hace que lo que se introduzca en el teclado, quede guardado en la variable a (declarada anteriormente y de tipo float) y termina la función con su ; obligatorio.

El número, entero (ej:2.00000) o decimal (ej:2.3456) quedó guardado en la variable a. Ahora, para comprobar si la función scanf funciona, vamos a pedir que el programa muestre la variable a en pantalla, esto ya lo conoces. ¡Sorpresa! En pantalla aparece el número que introducimos previamente. Así de simple operan y pueden coexistir las funciones más importantes de C.

En el mismo programa incluyo otro ejemplo similar, pero, trabajando con caracteres.

Antes de empezar con esta parte, quiero que se note el getchar() entre los dos "bloques". La máquina interpreta el código ya compilado en el orden en que fue escrito, sin ese getchar(), al imprimir en pantalla, se "brincaría" a la siguiente parte, llegando incluso a dar errores extraños, para mantener esto controlado, ponemos esta función, que espera a que se presione "Enter" para seguir.

Ahora sí:


    printf("Introduce una letra: ");
 
    scanf("%c",&b);
 
    printf("Introduciste la letra %c\n\n",b);


Imprimimos en pantalla el mensaje. Llamamos a scanf, pero fíjate que ahora usamos un %c, por lo tanto escaneará en busca de caracteres (Recuerda que char, también puede almacenar un entero, por lo tanto podrás introducir un número sin problemas) y almacenamos en b (Previamente declarada como tipo char).

Después imprimimos b en pantalla, el resultado es el mismo que introducimos previamente.

Finalmente, terminamos el programa con una frase "Presiona Enter para salir".


Entrada y Salida: Ejemplo

Resultado

Quiero que se note que los signos guardan cierta congruencia; por ejemplo, a es tipo float, en él se almacena un número y al imprimirlo lo imprimimos como tipo float; b es del tipo char, va a almacenar un caracter t se imprime como tal. Tal vez te pueda parecer redundante, pero puede ser un error muy dificil de encontrar.

Con esto tienes suficiente para poder manejar esta función. Ahora vamos a hacer un programa propiamente dicho, es sencillo, pero te servirá como un buen ejemplo para jugar tú mismo con la programación en C.


Mi segundo programa en C

Un código vale más que mil palabras. Aquí va:

/*Edad*/
 
/*Un simple programa que calcula tu edad.
Fíjate que sólo uso las funciones básicas
de entrada y salida: printf y scanf*/
 
#include <stdio.h>
 
int main()
{
    int nacimiento, actual, edad;
 
    printf("Introduce tu año de nacimiento: ");
    scanf("%i",&nacimiento);
 
    getchar();
 
    printf("Introduce el año actual: ");
    scanf("%i",&actual);
 
    getchar();
 
    edad = actual - nacimiento;
 
    printf("Tienes aproximadamente %i años\n\nPresiona Enter para Salir", edad);
 
    getchar();
 
    return 0;
}


Iniciamos el programa llamando a 3 variables del tipo int:


    int nacimiento, actual, edad;

No es necesario asignarles un valor.

Después mostramos un mensaje en pantalla y escaneamos en busca de un número entero. Al terminar esto, esperamos a que se presione enter, los motivos ya fueron explicados.


     printf("Introduce tu año de nacimiento: ");
    scanf("%i",&nacimiento);
 
    getchar();


Fíjate como se almacena en nacimiento, con la ayuda de &, no lo olvides.

Después pedimos que se introduzca el año actual. El proceso es el mismo:


     printf("Introduce el año actual: ");
    scanf("%i",&actual);
 
    getchar();


Ahora almacenamos en edad la diferencia de actual y nacimiento, dando como resultado una edad aproximada.


    edad = actual - nacimiento;

Y finalmente imprimimos actual en pantalla. Finalizamos el programa.

Esto ya lo sabes, sólo quiero mostrar un ejemplo "útil" de su uso. Juega con las funciones y crea programas más complejos, te darás cuenta que esto (scanf/printf) no es suficiente, pero eso ya lo veremos después. 

 

Calcula tu edad

Resultado

Nos leemos en el siguiente tutorial.

4.789475
Tu voto: Ninguno Votos totales: 4.8 (19 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de User170294

Te faltó explicar...

Si quieres que el usuario introduzca los datos separados por espacios debería hacer esto:

#include <stdio.h>
 
int main()
{
    int a;
    float b;
 
    printf( "Introduce los datos: " );
    scanf( "%i %f", &a, &b );
    printf( "\nHas introducido el entero %i y el flotante %f.\n", a, b );
    return 0;
}

Deberías añadirlo a la noticia. Saludos.


si me podrian ayudar necesito

si me podrian ayudar necesito codificar este programa

dado un vector de tamaño 6, invertir los elementos de la mitad de los elemrntos

ej v=[1][2][3][4][5][6]

v(invertido)=[3][2][1][4][5][6]

si me podrian decir algo como para darme una idea se los agradeceria =D

 

como puedo hacer que estas operaciones se ejecute varias veces?

#include "stdio.h"
#include "conio.h"
int i=0;   
int suma=0,x=0,y=0, z=0;
int main()
{
         printf("digite un numero:\n\t");
    scanf("%i",&x);
    printf("digite otro numero:\n\t");
    scanf("%i",&y);
        suma=x+y;  
        printf("el resultado es:%i",suma);
        printf("\n\t");
        int dividir; 
        printf("digite otro numero:\n\t");
        scanf("%d",&z);
        dividir= suma/z;
        printf("el resultado es:%i",dividir);     
         getch();
         return 0;
}

Si ya sabes cuántas veces

Si ya sabes cuántas veces quieres repetir todo, mete el code que tienes dentro del main() en un for

for(int i = 1; i <= NumeroDeVecesARepetir;i++){
  //todo el code aquí
}

También puedes usar un while, y preguntar al user al final si quiere repetir. Algo como...

int respuesta = 1;
 
//Dentro del main...
while(respuesta == 1){
  //todo el code aquí
  printf("Repetir? (1 Si, 0 No) ");
    scanf("%d",&respuesta);
}

Puedes usar letras en lugar de números... es lo mismo ;)

gracias me funciono de

gracias me funciono de maravilla...

 

si me pudieran ayudar quiero

si me pudieran ayudar quiero hacer este programa pero no me copila nose porque gracias =D

#include <stdio.h>
#include <conio.h>
int num1=0 , num2=0;
int suma=0;
int main()
{
    printf("digite numero;\n\t");
    scanf("%i",&num1);
    printf("digite otro numero:\n\t");
    scanf("%i",&num2);
    suma=num1+num2
   printf("la resultado es:%i",suma);
    return 0;
}

Es algo muy sencillo,

Es algo muy sencillo, olvidaste poner punto y coma al final de la línea suma=num1+num2

Cuando pidas ayuda con codes, por favor usa la herramienta para adjuntar code (primer botón de derecha a izquierda) y SIEMPRE menciona el error que te devuelve el compilador (en este caso el error salta a la vista, pero en codes más complejos ya no).

ok de acuerdo gracias...

ok de acuerdo gracias...

Imagen de iRVing_Prog

error en operacion

pues me salta error cuando voy a compilarlo, me marca esta linea "edad = actual - nacimiento" bueno sin tanto rollo aca dejo el codigo

/*Edad*/
 
/*Mostrando mi edad, utilizando solo las variables basicas,
de entrada y salida; printf y scanf*/
 
#include <stdio.h>
 
int main()
{
    int nacimiento, actual, edad;
 
    printf("Introduce tu año de nacimiento: ");
    scanf("%i",&nacimiento);
 
    getchar();
 
    printf("Introduce el año actual: ");
    scanf("%in",&actual);
 
    getchar()
 
     edad = actual - nacimiento;
 
    printf("Tienes aproximadamente %i años\n\nPresiona enter para Salir", edad);
 
    getchar();
 
    return 0;
}

de antemano gracias.


 

Imagen de pspgorrister

Te falta un ";" en la linea

Te falta un ";" en la linea superior

 

PD: La próxima vez, leéte todos los comentarios.

Imagen de iRVing_Prog

si es lo que hago

de todas maneras muchas gracias, no me habia percatado de ese error.

Un saludo

Imagen de krx.13.vk

Duda... Hola tanos, me estoy

Duda...

Hola tanos, me estoy aprendiendo los tutos enteritos :P

Solo te quería comentar, cuando introduces por ejemplo: 14 porque luego te sale 14.00000.

¿Hay alguna forma de arreglarlo?

PD, si quieres mirate el codigo:

/*Entrada y Salida*/
 
#include<stdio.h>
int main()
{
    float a;
    char b;
    printf("Escribe un numero: ");
    scanf("%f", &a);
    printf("El numero es es: %f\n",a);
    getchar();
    printf("Escribe una letra: ");
    scanf("%c",&b);
    printf("Tu letra es: %c\n\n",b);
    printf("Presione la tecla Enter para poder salir\n");
    getchar();
    getchar();    
    return 0;
}

 

Resultado:

Para ver mejor, boton derecho - ver

Un saludo

Imagen de Guillermo_Cornielle

Si se puede arreglar

En ves de float a;, pon int a, claro deberas areglar en la funcion scanf en ves de %f debes poner el correspondiente para int que debe ser %i y asi en el printf correspondiente a sacar por pantalla el valor de a.

Espero hayas entendido.


Manual del Perfecto Votante Para un voto libre y justo!.

TheGCProjects

Imagen de krx.13.vk

Pues muchas gracias Guille

 

Pues muchas gracias Guille 

Ya me sale como quiero ^^

Un saludo!

Imagen de Guillermo_Cornielle

No hay de que

Estamos para ayudar ;).

Imagen de _-eDu69-_

no compila

pongo el codigo a ver si hay algun error...

/*para saber la edad...*/
/*con este pregrama calcularemos la edad 
de alguien usando las funciones basicas printf y scanf*/
#include <stdio.h>
int main()
{
    int nacimiento, actual, edad;
    printf("introduce tu año de nacimiento: ");
    scanf("%i",&nacimiento);
    getchar();
    printf("introduce el año actual: ");
    scanf("%i",&actual);
    getchar()
    edad = actual - nacimiento;
    printf("Tienes mas o menos %i años\n\nPresiona enter para salir", edad);
    getchar();
    return 0;
}

 me marca en rojo esta parte:

edad = actual - nacimiento;

gracias de antemano.

PD: estos tutos estan muy bien

Imagen de NITEMAN

El punto y coma

Te has comido el punto y coma después de getchar... Por favor revisa tu código (la linea que marque error la anterior y la siguiente) antes de preguntar, ya que es la segunda vez que tienes problemas de terminación de instrucciones.

Salu2


"El paraí­so a mi derecha, el infierno a mi izquierda y el ángel de la muerte tras de mi."

Imagen de LuisxD

Genial

Muy buenos tutos te has hecho, pero tengo una duda?

C nos limita a ejecutar operaciones es decir; cuentas?

y otra mas: para aprender PAlib, ocupo entender C o C++?

 

Salu2!


Imagen de Guillermo_Cornielle

Ocupas saber...

Cualquiera de los dos, siempre y cuando halla compilador para el respectivo lenguaje.

Lo mas dificil sera, aprenderte las funciones e PALib


Manual del Perfecto Votante Para un voto libre y justo!.

TheGCProjects

Imagen de carlosgs

Me alegro de que sigas

con los tutoriales.

Están muy bien encaminados, y explicados.

Espero impaciente para ver como poner texto, ventanas y eso en la pantalla Wink

Salu2!!!

Imagen de Tanos

Eso ya es otra historia

Las ventanas y todo eso que mencionas son parte de la librería de Windows. No creo que en esta serie de tutoriales explique todo eso. Únicamente enseñaré el lenguaje C, no proyectos exclusivos para Windows.

Aunque no descarto la posibilidad de hacer un tutorial sobre Windows.h.

Saludos, suerte en EEUU :)


Sígueme en Twitter

Que bueno! Gracias por los

Que bueno! Gracias por los tutos, los sigo desde la explicación de C. Hace tiempo que quería aprender a hacer cosas así, pero todos los tutoriales que encontré hasta la fecha eran difíciles e incomprensibles :(

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.