Ir al contenido principal

Introducción a C: Función main, printf y scanf.

Continuamos con esta introducción al lenguaje C que constará de 4 partes de nivel básico.

En la primera parte nos centramos en las variables y los principales tipos de datos que utilizaremos para programar en C. En esta segunda parte nos centraremos en la función main y dos de las funciones de entrada y salida que nos ofrece stdio.h: printf y scanf.

Función main:


Esta función es imprescindible en todos los programas que realicemos en este lenguaje, ya que en ella estará todo el cuerpo de los mismos.

La declaración de esta función, en general, tendrá la forma: int main( );


Con lo que la estructura de nuestro programa en general quedaría así:


Aunque en la práctica usaremos directamente:



También se puede omitir el tipo "int" ya que los compiladores que siguen el estándar asignan este tipo a las funciones que no especifican ningún tipo de dato. En este caso la estructura quedaría: 



Hay quienes declaran la función como void (que no devuelve ningún dato) ya que algunos compiladores lo admiten, aunque hay otros que no. Aquí no recomendamos su uso:


Más adelante cuando expliquemos otros temas como el uso de punteros, veremos que en realidad la función main es invocada con 2 parámetros, pero por ahora lo dejaremos así.

Marcas de formato:

Las principales marcas de formato que utilizaremos en las funciones printf y scanf son:

Cuando más adelante vayamos utilizando otros tipos de datos, especificaremos su marca de formato que iremos agregando a esta tabla.

Printf y Scanf:

Estas funciones para entrada y salida de datos se encuentran en la cabecera stdio.h y son las que más se suelen utilizar, aunque más adelante también veremos otras que nos servirán para diferentes casos.

Printf tiene como prototipo este formato:


Explicado de manera sencilla, la función printf recibirá el texto, entre comillas dobles, que queremos mostrar por pantalla. En caso de querer mostrar el valor de una variable dentro de esas comillas colocaremos la marca de formato para el tipo de dato de esa variable, y luego de cerrar las comillas, separado por una coma, el nombre de la variable que queremos mostrar.

Como ejemplo de un texto sin variables en C,  haremos nuestro "Hola mundo" en C:


NOTA: El \n que vemos en el ejemplo, es un caracter que indica una nueva línea.
  

A diferencia de printf, Scanf recibe datos que ingresa el usuario y los guarda en una variable creada anteriormente.

Su prototipo es el siguiente:


Resumiendo: scanf recibirá la marca de formato correspondiente al tipo de dato de la variable donde guardaremos lo que ingresa el usuario y la dirección de memoria de la variable en la que se guardará. Para indicar esa dirección de memoria, usaremos el símbolo "&" seguido del nombre de la variable.

Para ejemplificar su uso, ingresaremos un entero a través de scanf y luego lo mostraremos con un printf:



Comentarios

Entradas populares de este blog

C: Conversiones de tipo (casting) en C...

El casting o simplemente cast  nos permite hacer una conversión explícita de un tipo de dato a otro, a criterio del programador siempre y cuando estos tipos sean compatibles. Este cast se realiza a través de un operador de conversión de tipos (type casting operator) y es un recurso a tener en cuenta ya que hay situaciones en que nos puede resultar de gran utilidad. Hacer uso de un cast es tan sencillo como poner (tipo de dato)  delante de la expresión o variable a convertir. Veamos un ejemplo: Declaramos una variable de tipo int con un identificador tan creativo como "a" y le realizamos diferentes cast a a para mostrarlo como si fuera un float, un double y un char en un printf. Lo que obtendríamos en pantalla sería lo siguiente: Donde tenemos el valor de nuestro a, a convertido en float y double (mostrándolo con 3 cifras decimales) y a convertido en char. Si vemos este último caso, al hacer la conversión de "a" a char toma a como el código ascii de

C: Ejemplos: Congruencia de Zeller (nivel básico) ...

La Congruencia de Zeller es un algoritmo que se atribuye al matemático alemán Julius Christian Johannes Zeller que vivió en el siglo XIX. Este algoritmo nos permite determinar el día de la semana que le corresponde a una fecha determinada del calendario Gregoriano. La fórmula que nosotros usaremos (con algunas modificaciones respecto de la original para poder usarla en  informática) es la siguiente: Donde h es el día de la semana (entre 0 y 6), J es año/100 (la centuria) y K es año mod 100 (el año de la centuria). Y hay que tener en cuenta que los meses de enero y febrero cuentan como el mes 13 y 14 del año anterior. Ahora que tenemos la fórmula, programemos el algoritmo en C mediante el uso de una función: Analicemos el código paso a paso: Tenemos en cuenta el caso de enero y febrero: Dijimos que estos meses corresponden a los meses 13 y 14 del año anterior por lo que los asignamos como corresponde (mes + 12 , que dará 13 para enero y 14 para febrero) y le rest

Algoritmos: Resolución de problemas y refinamientos en pseudocódigo...

En otras entradas, vimos las partes que debe tener nuestro algoritmo en pseudocódigo y las estructuras que utilizaremos para resolverlo. Ahora llega el turno de implementar todo en conjunto para dar origen a nuestra creación. Pero ¿cómo resolvemos un problema así? Para hacerlo, utilizaremos lo que llamamos refinamientos sucesivos. Este concepto consiste en dividir el problema en subproblemas más pequeños y a estos, a su vez, en otros más pequeños; y así sucesivamente hasta que la solución de los últimos sea trivial, sencillo de resolver. Luego usaremos todas las soluciones obtenidas para armar la solución de nuestro problema mayor. Este principio, tiene base en parte de la técnica divide and conquer (dependiendo de la traducción: "divide y vencerás") que es una de las muchas técnicas de resolución de algoritmos existentes. Como vemos, al dividir el problema en otros más pequeños y más fáciles de resolver, podemos pasar de un problema complicado a uno cuya solución es much