Uncategorized

Programando en C: Contenedores de datos

¿Qué son las variables?

Tipos de datos

Los tipos de contenedores de datos para las variables varían bastante entre un lenguaje de programación y otro.

Sin embargo, a continuación, voy a indicar los grandes tipos de variables que encontramos a lo largo de los lenguajes de programación más comunes hoy en día.

variables de tipo numérico

Éstas variables guardan números en multitud de formatos.

En primer lugar tenemos las variables de tipo entero, que guardan números decimales.

A continuación tenemos las variables de tipo flotante, que son capaces no solo de guardar números enteros, positivos, sino que también 

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int variable = 5; printf(«La variable vale: %i \n»,variable); return 0;}

Son capaces de guardar decimalesComa para aquellos casos en los que necesitemos aumentar la precisión en el cálculo. en el siguiente ejemplo, mostrado a continuación, podemos observar como se declara tanto una variable de tipo entero, como una variable de tipo flotante, es decir, con la posibilidad de guardar decimales 

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int variable = 5; printf(«La variable vale: %i \n»,variable); float variableConDecimales = 0.5; printf(«La variable vale: %f \n»,variableConDecimales); return 0;}

Texto

Existen varias formas de guardar cadenas de texto dentro de nuestros programas desarrollados en C

 una de ellas es mediante el tipo de dato primitivo char, que, como su nombre indica, es capaz de guardar un carácter

 podríamos considerar, por tanto, que una palabra o incluso una frase o un texto no es más que un conjunto de caracteres dispuestos uno detrás de otro

 de esta forma, aunque la cuestión de las matrices y los arreglos será discutida más adelante, en este caso, estamos creando una variable a la que, a continuación, e introducimos un corchete de apertura y un corchete de cierre

 estos dos corchetes indican que esa variable no solo contiene una unidad de ese tipo de datos, en este caso un carácter, sino que contiene un conjunto de ese tipo de datos, es decir, en este caso concreto contiene un conjunto de caracteres, o lo que es lo mismo, una palabra, o un texto 

main.c
#include <stdio.h>

int main(int argc, char *argv[]) {
    int variable = 5;
printf(«La variable vale: %i \n»,variable);
float variableConDecimales = 0.5;
printf(«La variable vale: %f \n»,variableConDecimales);
char variableTexto[] = «Jose Vicente»;
printf(«La variable vale: %s»,variableTexto);
return 0;
}

Reglas de declaración de variables

debemos tener en cuenta que existen una serie de reglas para declarar correctamente variables.

Éstas reglas pueden variar a lo largo de los lenguajes de programación, y es por esto que yo suelo recomendar una serie de pautas, comunes entre los diferentes lenguajes de programación, para asegurar que, más adelante, vamos a poder saltar de un lenguaje de programación a otro teniendo que reaprender el mínimo número de cosas posibles.

Las variables pueden contener números, pero no deben empezar con números.

De esta forma, esto estaría perfectamente aceptado:

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int variable2 = 5; return 0;}

Esto también estaría aceptado

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int vari3able = 5; return 0;}

Pero esto no sería aceptable, ya quedaría error en la mayoría de programas.

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int 1variable = 5; return 0;}

larga la mayoría de lenguajes de programación no aceptan el uso de espacios a la hora de declarar variables.

Los espacios que eran reemplazados por guiones bajos.

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int una_variable = 5; return 0;}

De todas formas, mi recomendación es usar la nomenclatura Camell queréis, ya que es compatible en la gran mayoría de lenguajes modernos.

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int unaVariable = 5; return 0;}

soporte para Unicode

La gran mayoría de lenguajes modernos tienen soporte para Unicode, permitiéndonos usar caracteres como vocales con acento, la letra N, o la Ç para el nombre de las variables.

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int escaño = 5; return 0;}

Mi recomendación, en la medida de lo posible, es no usar estos caracteres, por una cuestión de retro compatibilidad, y compatibilidad entre lenguajes de programación.

Sin embargo, curiosamente, también recomiendo poner nombres de variables, funciones, clases, y otras estructuras en castellano y no en inglés.

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int edad = 5;    int age = 5; return 0;}

Los lenguajes de programación, todos ellos, tienen palabras reservadas.

Las palabras reservadas no pueden ser usadas por el desarrollador.

cuando estamos aprendiendo a programar, una de las dificultades más costosas de superar, consiste en saber, en un determinado código, cuál es son las palabras que nosotros, pero como programadores, podremos cambiar, y cuáles son las palabras reservadas por el lenguaje de programación.

main.c
#include <stdio.h>
int main(int argc, char *argv[]) {    int auto = 5; return 0;}

dado que prácticamente todos los lenguajes de programación están escritos en inglés, en nuestro caso, hablar en español puede suponer una ventaja, ya que nos permite nombrar a nuestras estructuras en nuestro idioma, y de esa forma, podemos diferenciarlas perfectamente, y sabemos que, salvo en mi caso es concretos como el uso de la palabra » final «, es decir, palabras que existen en los dos idiomas, salvo en esos casos concretos, las probabilidades de colisión disminuyen, y el entendimiento del código fuente mejora.

Evidentemente, es de Consejos solo es aplicable para desarrolladores o equipos de desarrollo formados únicamente por personas españolas o por personas para las que el español sea su lenguaje natural.

en el caso de que el equipo de trabajo este compuesto por personas de otras nacionalidades, en ese caso, por claridad y en pro de la comunicación, será recomendable usar nomenclatura inglesa para todas las estructuras que puede elegir el usuario

Listado de palabras reservadas de C

Estas son las 32 palabras reservadas en C que no debemos usar como nombres de varables o estructuras:

auto, break, case, char, const, continue, default, do, int, long, regiester, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while, double, else, enum, extern, float, for, goto, if

Aplicación sobre el ejercicio del a publicacion

A continuación, aplicamos lo que hemos aprendido en la presente unidad didáctica, hasta el momento, al ejercicio que estamos desarrollando en el curso

 si anteriormente hemos definido un menú en el que el usuario podrá seleccionar una serie de opciones, preparamos un carácter para poder recibir esas opciones

 debemos tener en cuenta que, ahora mismo, hemos aprendido a crear variables, y a preparar las para contener datos, pero todavía no hemos aprendido a pedirle una entrada de datos al usuario humano, y poder guardar esos datos en una variable. evidentemente, esto no aprenderemos en las siguientes unidades didácticas

 sin embargo, adelantamos el hecho de que, cuando le pedimos al usuario una entrada de datos, por defecto esta entrada se efectúa en formato de carácter, o cadena de caracteres

 es por esto que el lector se podría preguntar cuál es el motivo de estar declarando una opción como un tipo de datos carácter, cuando las opciones consisten en indicar un número desde el 1 hasta el 5. en principio, podríamos pensar que el tipo de variable más correcto sería el de número entero, ya que coincide con el concepto de números enteros desde el 1 hasta el 5 

Sin embargo, debido a que la entrada de datos se produce por defecto en formato de carácter, es por eso que estoy reservando una variable específica con ese tipo de datos, paraque no haya discordancia entre los datos recibidos, y el tipo de dato de la variable que finalmente lo va a guardar, un problema que, por cierto, es muy característico de los programas informáticos, y que más adelante, hacia el final de la publicación, veremos cómo tratar 

agenda.c
/* Programa agendapor Jose Vicente Carratala */#include <stdio.h>
int main(int argc, char *argv[]) {    // Mensaje de bienvenida printf(«Programa agenda v1.0 \n»); printf(«Selecciona una opción \n»); printf(«\t 1 – Listado de registros \n»); printf(«\t 2 – Introducir un registro \n»); printf(«\t 3 – Eliminar un registro \n»); printf(«\t 4 – Buscar un registro \n»); printf(«\t 5 – Actualizar un registro \n»); printf(«Tu opcion: «); char opcion; return 0;}

Constantes

Las variables ocupan un cierto espacio en la memoria, y no solo eso, sino que además el uso de espacio no es particularmente eficiente desde el punto de vista en que se está reservando un espacio que se supone que está abierto a cambios puntos

existen ocasiones, sin embargo, en las que, cuando declaramos una variable, sabemos que su valor, pese a su nombre, no va a variar a lo largo del programa.

Un ejemplo clásico fácilmente entendible es el valor del número pi.

cuando tenemos este tipo de recursos, usamos, siempre que el lenguaje de programación tenga disponible, el concepto de constante.

Una constante básicamente es como una variable, pero no varía su contenido a lo largo de la ejecución del programa.

esto puede parecer una desventaja con respecto a usar variables, pero sin embargo, también cabe decir que el uso de constantes optimizar el uso de memoria por parte del programa, y por tanto, el rendimiento en su ejecución.

Así que, de esta manera, será recomendable que usemos constantes siempre que podamos, y siempre que estemos trabajando con un programa donde el rendimiento sea un factor clave.

main.c
#include <stdio.h>#define PI 3.1416
int main(int argc, char *argv[]) {    const float velocidadSonido = 343.2;    printf(«El valor de pi es: %f \n»,PI);    printf(«La velocidad del sonido es:  %f \n»,velocidadSonido); return 0;}

Aplicandolo al ejercicio del programa:

A continuación, he creado una nueva copia de seguridad del proyecto del curso, y, sobre el único archivo que ahora mismo componen el proyecto, que es el agenda. Se, he añadido el siguiente código:

Como podemos comprobar, he definido tres constantes en la zona del pre procesador, indicando tanto el nombre del programa, como la versión, como el autor.

Lo primero que debemos notar, es que, por el estilo, los números de las variables se describen completamente en mayúsculas, para diferenciarlas de las variables que más adelante definiremos.

Recordemos, que, una vez más, las constantes podrían declararse siguiendo la nomenclatura Camel gays, O todo en minúsculas, pero aceptamos la regla estilística para que nuestro código esté en sintonía con la reglas que están usando el resto de programadores.

En cuanto al uso de constantes, evidentemente se debe a que, una vez que el Program Ana se ha empezado a ejecutar, evidentemente no esperamos que cambie el nombre del programa, la versión, o el autor.

De esta forma, es por lo que, pudiendo haberlas declarado como variables, las hemos declarado como constantes, para hacer un uso más eficiente de la memoria, ya que recordamos que las constantes son más fáciles de albergar que las variables.

Por otra parte, al final del programa, observamos como el creado una variable de tipo carácter para almacenar la opción que, más adelante, el usuario elegirá.

Evidentemente, esta opción se declara como variable y no como constante, ya que a lo largo de la ejecución del programa, por supuesto será normal que la opción que vaya eligiendo el usuario final del programa, vaya variando.

Es decir, eso talmente normal que el usuario, por ejemplo, empiece obteniendo un listado de registros, luego eligen introducir un registro, y más adelante, quién sabe, podrá eliminar, buscar, o actualizar, en definitiva, ir a eligiendo una opción diferente en cada una de las situaciones dentro de la misma ejecución, y es por esto que la opción nunca debería ser una constante, ya que se espera que vaya a variar.

agenda.c
/* Programa agendapor Jose Vicente Carratala */#include <stdio.h>#define NOMBREPROGRAMA «Programa agenda»#define VERSION «1.0»#define AUTOR «Jose Vicente Carratala»
int main(int argc, char *argv[]) {    // Mensaje de bienvenida printf(«%s v%s \n»,NOMBREPROGRAMA,VERSION); printf(«%s \n»,AUTOR); printf(«\t 1 – Listado de registros \n»); printf(«\t 2 – Introducir un registro \n»); printf(«\t 3 – Eliminar un registro \n»); printf(«\t 4 – Buscar un registro \n»); printf(«\t 5 – Actualizar un registro \n»); printf(«Tu opcion: «); char opcion; return 0;}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *