Ir al contenido principal

Introducción a C: Variables, constantes y tipos de datos...

Llegó el momento de comenzar con este popular lenguaje llamado C, que es uno de los más utilizados en lo que respecta a la enseñanza de la programación estructurada y que nos dará una buena base para poder abrirnos paso en el mundo de la programación y trabajar luego con otros lenguajes.

Ya que hay mucho que ver en este lenguaje, iremos dividiendo los temas y dedicando cada entrada a alguno específico, de manera que se pueda entender mejor. También complementaremos la teoría con ejemplos prácticos, entradas dedicadas a ejercicios resueltos y, además, añadiremos una categoría de problemas para resolver donde podrán descargarse los enunciados y poner en práctica todo lo aprendido.  Y si quedan dudas, pueden enviar sus consultas a nuestra página en Facebook o colocando un comentario en el post en cuestión.

Ya explicado cómo trabajaremos, demos la bienvenida a C.

Archivos de cabecera:

Los archivos de cabecera llevan la extensión ".h" y en ellos se encuentran los prototipos de algunas funciones, definición de algunos tipos de datos, constantes, macros, operaciones de entrada y salida, etc.

La que más utilizaremos será "stdio.h" que se encuentra en la biblioteca standard de C. Aunque también utilizaremos otras que veremos cuando avancemos con otros temas.

Para incluir en nuestro programa uno de estos archivos de cabecera, utilizaremos el siguiente formato al comienzo de nuestro código:

En caso de stdio.h sería: 

Si fuera otro archivo de cabecera, simplemente usamos el mismo formato y colocamos su nombre en lugar de stdio.h.


Variables:


Una variable es un espacio de memoria donde podremos almacenar un dato de un tipo determinado y que, como su nombre lo indica, puede variar durante el tiempo de ejecución.

A estas variables le daremos un identificador que es simplemente un nombre que daremos a nuestra variable y con la que identificaremos esa posición de memoria.

Podemos darle al identificador cualquier nombre mientras sea válido. Para ello debe iniciar con una letra o con el caracter "_", no puede contener caracteres especiales, no puede tener espacios en blanco, no puede ser una palabra reservada (auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if,  int, long, register, return, short, signed, sizeof, static, struct, typedef, union, unsigned, void, volatile, while).


Hay que recordar que en C siempre debemos declarar las variables antes de utilizarlas.


El formato que utilizaremos para declarar una variable es el siguiente:





Si tenemos más de una variable del mismo tipo, podemos declararlas en la misma línea separadas por comas:



Ámbito de una variable:

Una variable puede ser global o local a una función. 

Las variables globales se declaran luego de incluir las cabeceras, antes de la función main (que veremos en la próxima entrada) y pueden ser llamadas desde cualquier parte del programa.

Mientras que las variables locales se declaran dentro de la función en que se utilizarán y sólo pueden ser llamadas por ésta.

Constantes:

A diferencia de las variables, las constantes tienen valores que no pueden ser modificados en tiempo de ejecución.

Para declarar una constante, lo haremos antes de la función main con la siguiente estructura:




Tipos de datos:


En C encontramos 3 tipos de datos básicos: enteros, flotantes y caracteres.

Enteros: El tipo de dato entero clásico que utilizaremos será el tipo int (de 4 bytes) aunque hay veces que necesitaremos tipos de datos que se adecúen más a las necesidades del programa, ya sea porque necesitamos trabajar con números más grandes, más chicos o para optimizar la cantidad de bytes por variable. Para eso encontraremos los tipos short, long y long long.


Flotantes:  Estos tipos de datos representan a los números decimales, osea los reales que tienen punto flotante. Aquí sólo tenemos dos tipos: float y double (de 4 y 8 bytes respectivamente).

Caracteres: Aquí encontramos el tipo char (de 1 byte) y puede usarse para representar los 256 caracteres de la tabla del sistema, puede guardar un caracter alfabético o especial como también un número entero entre 0 y 255.


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