Estructura Básica de un Programa
Código = Datos + Instrucciones
Instrucciones
Un programa
opera con datos. Se realizan una serie de operaciones con los datos.
Una instrucción elemental termina con un punto y coma [;].
En C++, el final de línea no indica final de instrucción. Los dos programas siguientes son iguales:
#include <iostream>
int menor (int,int);
int main()
{
int num1, num2;
std::cout<<"Introduce dos números (separados por un espacio): ";
std::cin>>num1>>num2;
num1=menor(num1,num2);
if (num1==0)
std::cout<<"los números son iguales";
else
std::cout<<num1<<" es el menor de los dos números";
return 0;
}
int menor (int n1, int n2)
{
if (n1==n2) return 0;
else
if(n1>n2) return n2;
else return n1;
}#include <iostream>
int menor (int,int); int main(){ int num1, num2; std::
cout<<"Introduce dos números (separados
por un espacio): "; std::cin>>num1>>num2;
num1=menor(num1,num2); if (num1==0)
std::cout<<"los números son iguales";
else
std::cout<<num1<<" es el menor de los dos
números"; return 0;}
int menor (int n1, int n2){ if (n1==n2) return 0;
else
if(n1>n2) return n2; else return n1;
}No
son pocas las veces, que nos aparece un error de compilación,
por un punto y coma que hemos omitido (al menos en mi caso). Ademas de las
declaraciones de variables, es habitual encontrarse este tipo de instrucciones o sentencias:
Asignaciones, inicialización
Las
asignaciones son una instrucción especial, que tienen a la
izquierda el nombre de la variable, luego el operador de
asignación [=] y a la derecha una expresión.
nombre_variable = expresión ;
Esto
significa que en el espacio de memoria asignado a
nombre_variable, se introduzca el resultado de la expresión.
Esto permite comprender expresiones tal como
x=x+y; muy habituales en programación y que no quieren decir que
y sea igual a
2x, sino que se sume el contenido de la variable
x con el contenido de la variable y, y el resultado se coloque en
x. Por ejemplo, si
x=20 e
y=3, tras esta instrucción
x = 23, y por supuesto,
y= 3.
Especialmente habitual es la asignación
x=x+1; que en C y C++ se puede escribir como
x++;. Esto nos permite comprender el significado de C++: un paso adelante del lenguaje C.
A la primera asignación de una variable, se le denomina
inicialización,
no es obligatoria, pero debiera serlo. Puede realizarse la
declaración y la inicialización en un sólo paso,
por ejemplo:
int x= 10;// declaración e inicialización en un solo paso
es igual que:
int x; //declaración de la variable x
x=10; //inicialización
Estructuras de control
Pocos serán los programas que
realices donde la ejecución siga un proceso secuencial
único. Lo habitual es que muchas operaciones se repitan y otras
se ejecuten o no en función de las circunstancias.
En
nuestro ejemplo, si el usuario introduce dos números iguales
tendremos que informarle que ambos números son iguales, mientras
que si son diferentes debemos ver cual de ellos es el más
pequeño.
Es una clásica instrucción de decisión:
if (expresión) código_si else código_nosi la expresión es cierta se realiza el código_si, mientras que si es falsa se ejecuta código_no.
Donde
código puede representar como en el ejemplo una única
instrucción, o un bloque de código (varias
instrucciones), porque lo normal es que queramos hacer
varias cosas en una situación determinada. El bloque de
código se realiza con los paréntesis {...}
código => instrucción;
=> { instrucción; instrucción2; intrucciónn;}
Existen
estructuras de repetición (para repetir un número de
veces un código determinado). Por ejemplo, el siguiente
código pide la introducción de un número y luego
calcula el factorial [n * (n-1)* (n-2)*...*1], ej factorial de 5 es
igual a 5x4x3x2x1 . Por cierto, habría que advertir al usuario
que con números elevados el resultado no es el
correcto, ya que el espacio utilizado para almacenar el número
es reducido (4 bytes):
#include <iostream>
int main(){
int num1, total;//declaración de las variables
//pedimos un número al usuario
std::cout<<"Introduce un número: ";
std::cin>>num1;
//inicialización de total
total=1;
/* Inicialmente se asigna a la variable i el valor del número.
/ en cada iteración i disminuye una unidad i-- => i=i-1;
/ y se repite mientras que i sea mayor que 1, es decir hasta 2,
/ multiplicar por 1 es tonteria.
/ Si num1 = 5, la primera vez total= 5*1 (hablando de tonterías)
/ la segunda vez, total=5*4 (20), la tercera total=20*3 (60), la cuarta
/ total=60*2 (120), la quinta i vale 1 y ya no se ejecuta la instrucción.*/
for (int i=num1;i>1;i--) total=total*i;
//mostramos el resultado
std::cout<<"el factorial de "<<num1<<" es "<<total;
return 0;
}