Sintaxis del Lenguaje de Programación “C/C++”
Concepto de variable
Si ya has visto algo de álgebra, seguramente ya conoces lo
que es una variable. Una variable en sí es algo muy sencillo de concebir, es
algo que puede variar. Con esa variación por lo general nos referimos a un
valor, por ejemplo, el valor de un dólar en pesos mexicanos. Sin embargo, puede
no ser solamente un número, sino también una palabra.
Consideraremos a una variable como algo cuyo valor puede variar
Tipos de variable
Cuando nos referimos a tipos de
variables en realidad nos estamos refiriendo a distintos tipos de valores que
una variable puede tener. Nota que no sólo decimos “distintos valores”, sino
distintos tipos de valores. Por ejemplo, imagina que, como muy a menudo,
quieres hacer un pastel, necesitarás mantequilla, azúcar, huevos, harina,
cocoa, levadura, maicena y sal.
Sin embargo, cada ingrediente puede
interpretarse distinto. Por ejemplo, al hablar de harina, puede ser de trigo,
de maíz, de avena, etc.
De esta manera podemos interpretar
cada ingrediente como tipo de variable, y cada tipo de ingrediente como su
valor, como decir harina trigo, refiriéndonos a que estamos hablando de una
variable tipo harina con valor de trigo. Nota que no puede haber algo como harina
NataDulce, porque NataDulce es un valor posible de una variable tipo
mantequilla.
Variables básicas en C++
Así como en la cocina encontramos
distintos tipos de variable, que pueden tener distintos tipos de valores. Las
variables básicas en C/C++ son:
int Para valores tipo números enteros, por
ejemplo 5,231,−3432.
float Para valores tipo números no enteros, o con
decimales, por ejemplo 3.14,823.23,−0.231.
char Para valores tipo carácter. Un carácter es un
símbolo, como los que usamos para escribir, por ejemplo ‘T’, ‘c’, ‘r’, ‘/’,
‘5’. En este último caso el 5 será considerado como sólo un carácter, como sólo
un símbolo y no un número.
bool Para valores tipo booleanos, es decir, de
afirmativo o negativo, cierto o falso.
Declaración
de variables
Cuando queremos utilizar algo, es de
buena educación pedirlo primero, en C/C++ pasa exactamente lo mismo, aunque
aquí es obligatorio. Cuando queremos usar una variable necesitamos primero
declararla, y para hacer esto tomamos un formato como sigue:
1
tipo-de-variable nombre-de-variable[=valor]
Nota que lo que está entre corchetes
es opcional, puedes o no dar el valor a la variable al mismo tiempo que la
declaras. Podemos además declarar varias variables del mismo tipo separándolas
con comas. Si quisiéramos declarar variables como las básicas, sería así:
1
int T=1401, variable=1, a;
2
float pi=3.14, decimal, otra=0.23;
3
char letra='C', mas;
4
bool dicho=true, bandera=false;
Una variable puede tener cualquier
nombre conformado por letras y/o números, que no incluya espacios, símbolos
especiales, sea una palabra reservada del compilador (como el tipo de
variable), ya lo tenga otra variable o función, o sea enteramente compuesta por
números. Sí hay distinción de mayúsculas y minúsculas por lo que int
Variable es diferente de int variable.
Nota que después de declarar una serie
de variables de un mismo tipo hay que poner un ";"
En nuestro ejemplo, la variable a,
decimal y mas que son las que no inicializamos es decir, que no
les dimos nosotros un valor inicial, tienen un valor aleatorio que la
computadora les ha dado. Este valor no es un valor manipulable, o al menos no
hay que tratarlo como si lo fuera, pues es un valor que nosotros no conocemos.
No hay problema si no inicializamos al momento de declarar una variable,
siempre y cuando no la usemos hasta que no le hayamos dado un valor nosotros
mismos. En cuanto nosotros ya le hayamos dado un valor podemos decir que ya
está inicializada.
Tipos
de Datos
La mayoría de los elementos de un
programa se diferencian entre sí por su nombre. Por ejemplo, los tipos de datos
básicos en lenguaje C se nombran como:
char, int, float, double y void
Cada uno de ellos es un identificador.
Un identificador es el nombre que se le da a un elemento de un algoritmo (o
programa). Por ejemplo, el tipo de dato int hace referencia a un tipo de dato
que es distinto a todos los demás tipos de datos, es decir, los valores que
puede tomar un dato de tipo entero, no son los mismos que los que puede tomar
un dato de otro tipo.
Los identificadores char, int, float,
double y void están predefinidos, forman parte del lenguaje C. No obstante, en
el código de un programa también pueden existir identificadores definidos por
el programador. Por ejemplo, un programa puede utilizar variables y constantes
definidas por el programador.
En lenguaje C, a la hora de asignar un
nombre a un elemento de un programa, se debe tener en cuenta que todo
identificador debe cumplir las siguientes reglas de sintaxis:
1 Consta de uno o más caracteres.
2 El primer carácter debe ser una letra o el
carácter subrayado (_), mientras que, todos los demás pueden ser letras,
dígitos o el carácter subrayado (_). Las letras pueden ser minúsculas o
mayúsculas del alfabeto inglés. Así pues, no está permitido el uso de las
letras 'ñ' y 'Ñ'.
No pueden existir dos identificadores iguales,
es decir, dos elementos de un programa no pueden nombrarse de la misma forma.
Lo cual no quiere decir que un identificador no pueda aparecer más de una vez
en un programa.
De la segunda regla se deduce que un
identificador no puede contener caracteres especiales, salvo el carácter
subrayado (_). Es importante resaltar que las vocales no pueden llevar tilde ni
diéresis.
¿Qué
identificadores son válidos en C?
A continuación, se muestran algunos
ejemplos de identificadores válidos en lenguaje C y otros que no lo son:
Ejemplo 1: Algunos identificadores válidos que pueden
ser definidos por el programador son:
numero
dia_del_mes
PINGUINO1
_ciudad
Z
Ejemplo 2: Los siguientes identificadores no son válidos
por incumplir la segunda regla:
123
_DÍA
numero*
lugar de nacimiento
año
Ejemplo 3: Los siguientes identificadores no pueden ser
definidos por el programador:
int
char
int y char son identificadores
predefinidos (ya existen en lenguaje C), por tanto, no pueden ser definidos por
el programador, en cumplimiento de la tercera regla.
Los identificadores son sensibles a
minúsculas y mayúsculas.
Ejemplo 4: Mes y mes son considerados identificadores
distintos.
Por último, hay que decir que, es
aconsejable que los identificadores tengan un significado afín a lo que
representan.
Operadores aritméticos
Los operadores son elementos que
disparan ciertos cálculos cuando son aplicados a variables o a otros objetos en
una expresión.
Existe una división en los operadores
atendiendo al número de operadores que afectan. Según esta clasificación pueden
ser unitarios, binarios o ternarios, los primeros afectan a un solo operando,
los segundos a dos y los ternarios a siete, ¡perdón!, a tres.
Hay varios tipos de operadores, clasificados
según el tipo de objetos sobre los que actúan.
Son usados para crear expresiones
matemáticas. Existen dos operadores aritméticos unitarios, ‘+’ y ‘-‘ que tienen
la siguiente sintaxis:
++ Variable
- -Variable
Asignan valores positivos o negativos
a la expresión a la que se aplican.
En cuanto a los operadores binarios
existen varios. ‘+’, ‘-‘, ‘*’ y ‘/’, tienen un comportamiento análogo en cuanto
a los operandos, ya que admiten tanto expresiones enteras, como en coma
flotante. Sintaxis:
Variable + Variable
Variable - Variable
Variable * Variable
Variable / Variable
Evidentemente se trata de las
conocidísimas operaciones aritméticas de suma, resta, multiplicación y
división, que espero que ya domines a su nivel tradicional, es decir, sobre el
papel.
Otro operador binario es el de módulo
‘%’, que devuelve el resto de la división entera del primer operando entre el
segundo. Por esta razón no puede ser aplicado a operadores en coma flotante.
Variable % Variable
Operadores relacionales
También denominados operadores
binarios lógicos y de comparación, se utilizan para comprobar la veracidad o
falsedad de determinadas propuestas de relación. Las expresiones que los
contienen se denominan expresiones relacionales. Aceptan diversos tipos de
argumentos, y el resultado, que es la respuesta a la pregunta, es siempre del
tipo cierto o falso, es decir, producen un resultado booleano. Si la propuesta
es cierta, el resultado es true (un valor distinto de cero), si es falsa false
(cero).
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
== Igual que
(identidad)
!= Desigual que (desigualdad)
OPERADORES LÓGICOS EN C
Los operadores lógicos básicos en C son los
siguientes:
Operador
|
Significado
|
Operador &&
|
Operador lógico and
|
Operador ||
|
Operador lógico or
|
Operador !
|
Operador lógico not
|
Suponiendo que tenemos cuatro variables A, B, C y D
cuyos valores se han establecido en A = 5, B = 7, C = 2, D = 5 podríamos
evaluar estas expresiones:
Expresión
|
Pregunta
equivalente
|
Resultado
|
Ejemplo
código
|
(A ==
B) && (A < B)
|
¿Es A
igual a B y A menor que C?
|
0
(falso)
|
printf
("Pregunta (A == B) && (A < B) vale %d\n", (A == B)
&& (A < B));
|
(A ==
5) || (A > 7)
|
¿Es A
igual a 5 ó es A mayor que 7?
|
1
(verdadero)
|
printf
("Pregunta (A == 5) || (A > 7) vale %d\n", (A == 5) || (A >
7));
|
! ( A
== 5 )
|
¿A es
NO igual a 5?
|
0
(falso)
|
printf
("Pregunta ! ( A == 5 ) vale %d\n", ! ( A == 5 ));
|
Ejecuta un programa definiendo las cuatro variables
A, B, C, D como de tipo entero, asígnales los valores correspondientes y
comprueba las expresiones usando el código de ejemplo que hemos indicado.
Define otras variables y haz algunas comprobaciones por tu cuenta. Es
importante que escribas tu propio código y trates de razonar sobre los
resultados esperados y los resultados obtenidos. En muchas ocasiones el
resultado obtenido no será el esperado y como programador deberás de ser capaz
de determinar el por qué de estas divergencias.
Arreglos
Los arrays, arreglos o vectores forman
parte de la amplia variedad de estructuras de datos que nos ofrece C++, siendo
además una de las principales y más útiles estructuras que podremos tener como
herramienta de programación. Los arrays, arreglos o vectores (como los quieras
llamar), son utilizados para almacenar múltiples valores en una única variable.
En un aspecto más profundo, los arrays, permiten almacenar muchos valores en
posiciones de memoria continuas, lo cual permite acceder a un valor u otro de
manera rápida y sencilla. Estos valores pueden ser números, letras o cualquier
tipo de variable que deseemos incluso tipos de datos propios.
Ejemplo
Imaginemos que queremos crear un
programa con el cual podamos de algún modo almacenar los títulos y los autores
de diferentes libros. El usuario es el encargado de suministrar la información
de cada libro, así entonces, dado que es el usuario quien lo hace, nosotros no
tenemos manera alguna de saber cuántos libros va querer él ingresar por medio
de nuestro programa. El caso principal es que queremos almacenar en la memoria
el titulo y el autor de TODOS y cada uno de los libros. Entonces ¿cómo crees
que podrías hacer esto? Con lo que sabemos hasta hora, se nos podrían ocurrir
un par de cosas. Veamos:
Posible Solución 1: Sin usar vectores
(errónea):
Podríamos pensar primero, "listo,
está bien, es fácil, declaro una variable llamada titulo y otra autor, ambas de
tipo string y se las pido al usuario", pues bien, esta solución digamos
que nos permite almacenar la información del primer libro que el usuario
ingrese, pero en cuanto desee ingresar otro libro ¿qué vamos a hacer?, si lo
hacemos así, cuando el usuario ingrese la información para un nuevo libro, va a
sobrescribir los valores anteriores y habremos perdido la información del
primero, de manera que esta solución no es válida.
Posible Solución
2: Sin usar vectores o matrices (errónea):
Pensando un poco más en esto, se nos
ocurre una forma de almacenar la información de cada libro, podríamos crear un
par de variables distintas para cada libro. Pero de inmediato nos damos cuenta
que si por ejemplo al usuario se le cruzara por la cabeza ingresa información
para 10 libros tendríamos entonces ¡20 variables distintas!, 2 por cada libro,
no es mucho, pero si se le ocurriera ingresar 1000 libros, ¿estarías dispuesto
a declarar 2000 variables?. De modo que esta alternativa es incluso peor que la
anterior y seguimos aún sin solucionar nuestro problema.
Posible Solución
3: Usando vectores o matrices
(correcta):
¡Pues bien!, tal y como mencioné
antes, los arrays o los vectores han venido para ayudarnos en múltiples
circunstancia similares a esta. Dado que un array, arreglo o vector es capaz de
almacenar múltiples valores en una misma variable, tenemos el elemento perfecto
para almacenar la información de todos los libros, podremos crear un vector de
un tamaño cualquiera capaz de contener en sí los nombres de los autores y otro
con los títulos de los libros o alternativamente podríamos crear una matriz de
dos columnas que contenga en la primera columna los autores y en la segunda los
títulos; ambas soluciones son validas y vamos a ver ambas, usando vectores en
esta sección y usando matrices en la sección de matrices.
¿Cómo
declarar un Array o Vector en C++?
Para declarar un vector en C++, se
deben seguir las mismas normas básicas que se siguen para declarar una variable
cualquiera, con un pequeño cambio en la sintaxis. Para declarar un vector,
arreglo o como lo quieras llamar, necesitaremos saber el tipo de los datos que
irán al interior de este, es decir, serán número enteros, o número decimales o
cadenas de texto, etc. necesitamos también, como siempre, un nombre para el
vector y un tamaño máximo. La sintaxis para declarar un vector en C++ es la siguiente:
1
tipo_de_dato nombre_del_vector[tamanio];
Tenemos entonces, tal como mencioné
antes, que, para declarar un vector en C++, debemos definirle un tipo de los
datos, sea entero, float, string, etc., debemos darle un nombre y al interior
de los corchetes "[]" debemos poner el tamaño máximo que tendrá el
vector, es decir la cantidad máxima de datos que podrá contener (recuerda que
en C++ esto es necesario hacerlo). Veamos un ejemplo en el cual pondré la
declaración de varios vectores de diferentes tipos y tamaños en C++.
Funciones
La modularización, es una
técnica usada por los programadores para hacer sus códigos más cortos, ya que
consiste en reducir un gran problema complejo, en pequeños problemitas más
sencillos, concentrándose en la solución por separado, de cada uno de ellos.
En C, se conocen como
funciones aquellos trozos de códigos utilizados para dividir un programa con el
objetivo que, cada bloque realice una tarea determinada.
En las funciones juegan un
papel muy importe las variables, ya que como se ha dicho estas pueden ser
locales o globales.
Variables Globales: Estas se crean durante toda la
ejecución del programa, y son globales, ya que pueden ser llamadas, leídas,
modificadas, etc; desde cualquier función. Se definen antes del main().
Variables Locales: Estas, pueden ser utilizadas
únicamente en la función que hayan sido declaradas.
La sintaxis de una función es
la siguiente:
Tipo_de_datos
nombre_de_la_funcion(tipo y nombre de argumentos)
{
acciones
}
donde:
·
Tipo_de_datos: Es el tipo de dato que
devolverá esa función, que puede ser real, entera, o tipo void(es decir que no
devolverá ningún valor).
·
Nombre_de_la_funcion: Es el identificador que le
damos a nuestra función, la cual debe cumplir las reglas que definimos en un
principio para los identificadores.
·
Tipo y nombre de argumentos: son los parámetros que recibe
la función. Los argumentos de una función no son más que variables locales que
reciben un valor. Este valor se lo enviamos al hacer la llamada a la función.
Pueden existir funciones que no reciban argumentos.
·
Acciones: Constituye el conjunto de
acciones, de sentencias que cumplirá la función, cuando sea ejecutada. Entre
ellas están:
1 . Asignaciones
2 . Lecturas
3 . Impresiones
4 . Cálculos,
etc.
Una función, termina con la
llave de cerrar, pero antes de esta llave, debemos colocarle la
instrucción return, con la cual devolverá un valor específico.
Es necesario recalcar que, si la función no devuelve ningún valor, es decir, es
tipo void, no tiene que ir la sentencia return, ya que, de lo contrario, nos
dará un error.
Investigación realizada para la
materia de Programación estructurada.
Referencias: