Programación. Lenguaje C++. Operaciones entre tipos básicos. Declaración y definición de funciones. Función especial main. Estructuras de control. Ejecución condicional: IF. Ciclo, la estructura WHILE. Expresiones multivaluadas: SWITCH.
C++: Tipos básicos, funciones, estructuras de control, etc.
En la segunda mitad de la materia vamos a
trabajar sobre el paradigma imperativo, utilizando el lenguaje C++. Este apunte
incluye un breve resumen de la sintaxis básica de C++ y sus tipos primitivos.
Aquí va.
Tipos básicos
En Hugs vimos
que existían 4 tipos básicos: Int, Float,
Bool y Char. Podíamos definir funciones que recibieran o devolvieran
valores de dichos tipos, y además podíamos definir otros tipos a partir de
ellos.
En C++, vamos a
trabajar con los tipos básicos: int,
float, bool y char. Estos
tipos son equivalentes a los tipos del mismo nombre en Hugs.
Es un costumbre
muy arraigada entre los programadores de C (en el cual no existe el tipo bool)
utilizar constantes enteras para representar valores booleanos. Esta convención
nos define que el valor 0 (cero) es equivalente a False y cualquier otro
número (generalmente –1) representa True. Veremos más adelante
estructuras de control cuyo comportamiento depende del resultado de evaluar expresiones booleanas, que respetan esta
convención.
Operaciones entre tipos básicos
Entre dos
valores de tipos int y float podemos realizar las operaciones
aritméticas habituales:
+ - * % (resto de la división entera) / (división)
Además, podemos
comparar dos valores, obteniendo una expresión
booleana (su resultado será 0 o un número distinto de 0, según la expresión
sea falsa o verdadera, respectivamente):
=
= (igualdad, utilizando 2
signos de “igual”)
< (menor)
> (mayor)
<
= (menor o igual ... les queda
como ejercicio imaginarse el mayor o igual)
!= (distinto)
Dos valores booleanos o expresiones
lógicas, se pueden combinar con los operadores lógicos:
&& (and, “y” lógico)
|| (or, “o” lógico).
Expresamos la negación, además, con el
signo de exclamación:
! (not)
Declaración y definición de funciones
Al declarar una función en C++, de la
misma forma que hacíamos en Hugs, debemos darle un nombre e indicar cuántos y
de qué tipo son los parámetros que recibe y de qué tipo es el valor que
devuelve.
En C++ declaramos una función de la
siguiente manera:
<tipo
del valor devuelto por la función> nombre
(<lista de parámetros que recibe>)
Los parámetros que recibe la función se
separan con comas, y cada parámetro debe tener la siguiente forma:
<tipo
del parámetro> nombre
Así, las siguientes son declaraciones
posibles de funciones:
- int max(int a, int b)
- char SexoPersona(int dni_persona)
- float producto(float x, int y)
- int dame_un_numero_cualquiera( )
Una vez que
declaramos una función, debemos indicar qué hace o cómo calcula el valor que
devuelve a partir de los valores recibidos. O sea debemos implementar la función, debemos escribir el cuerpo de la función. El mismo consta de una secuencia de
operaciones encerradas entre llaves
int max (int a,
int b)
{
...
secuencia de operaciones…
}
Para indicar el valor de retorno de la
función, utilizamos la sentencia return
<valor>:
int max (int a,
int b)
{
…secuencia de operaciones que calculan el
máximo entre a y b y lo guardan en una variable c ...
return
c;
Es importante
notar que la sentencia return es un punto de salida de la función,
o sea, una vez que el programa encuentra una instrucción de este tipo, termina
la ejecución de la función actual y pasa el control a la función que la llamó.
IMPORTANTE: toda sentencia en C++ termina con un punto y coma (;). Esto le
permite al compilador C++ saber cuándo termina una y empieza la siguiente.
DEFINICION:
Llamaremos bloque a:
·
una sentencia (las sentencias terminan
en ‘;’).
·
una secuencia de sentencias,
encerradas entre llaves
{ sentencia1; sentencia2; sentencia3; }
Los bloques pueden anidarse unos dentro de
otros.
Función especial main
Para poder crear un programa en C, es
necesario que haya una función especial definida. Esta función se llama main
y es el punto de entrada o inicio de ejecución del programa, es decir, es
el lugar por donde va a empezar la ejecución de nuestro programa. La declaración
más sencilla (que alcanza para los programas que vamos a realizar) es la
siguiente:
int max ()
{
sentecia1;
sentencia2;
}
Entonces el programa va a comenzar la ejecución
con la sentencia1, luego la sentencia2, y así sucesivamente. En el caso en
que no se defina una función con el nombre de main, el compilador de C
que estemos usando, no nos va a permitir crear el programa ejecutable, y nos lo
informará con un error del estilo: “Error:
undefined reference to ‘main’”.
Estructuras de control
Las estructuras de control nos permiten
alterar el flujo de ejecución de las sentencias que componen el cuerpo de una
función. Sin ellas, sólo podríamos ejecutar las líneas de un programa una a una
en orden lineal, lo que no nos permitiría computar cosas demasiado
interesantes!
Ejecución condicional: IF
Nos permite
decidir, a partir del resultado de evaluar una expresión booleana, si ejecutar o no un bloque determinado, u optar
entre 2 bloques posibles.
Sintaxis:
if (<expresión booleana>)
<bloque a ejecutar
cuando la expresión es verdadera>
else
<bloque a ejecutar cuando la
expresión es falsa>
La sentencia else es opcional, puede utilizarse o
no. En el caso de no utilizarlo, cuando la expresión evaluada sea falsa la
ejecución continuará con la sentencia inmediatamente posterior al if.
Ejemplo:
int max (int a, int b)
{
int
c;
if
(a>b)
c = a;
else
c = b;
return
c;
Ciclo, la estructura WHILE
Nos permite repetir la ejecución de un
bloque hasta tanto una condición booleana se vuelva falsa.
Sintaxis:
while ( <expresión booleana> )
<bloque>
Expresiones multivaluadas: SWITCH