|
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.
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.
Entre dos valores de tipos int y float podemos realizar las operaciones aritméticas habituales[1]:
+ - * % (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)
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>)[2]
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:
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.
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'".
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!
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;
}
Nos permite repetir la ejecución de un bloque hasta tanto una condición booleana se vuelva falsa.
Sintaxis:
while ( <expresión booleana> )
<bloque>
[1] De hecho también podemos hacerlo con valores de tipo char, que no es más que un subconjunto del tipo int, pero por claridad no lo vamos a hacer.
[2] Nótese que, contrario a lo que pasaba en Hugs, en C++ las funciones no deben empezar necesariamente en minúscula.
Aún no hay comentarios para este recurso.
Monografias, Exámenes, Universidades, Terciarios, Carreras, Cursos, Donde Estudiar, Que Estudiar y más: Desde 1999 brindamos a los estudiantes y docentes un lugar para publicar contenido educativo y nutrirse del conocimiento.
Contacto »