Fuente:
Programación en C++ / Principios y Aplicaciones (resumen)
Carlos Romero Shollande
Programación en C++ / Principios y Aplicaciones (resumen)
Carlos Romero Shollande
1. Introducción
Las sentencias de control gobiernan el flujo de la ejecución del programa y hace que la computadora deje de comportarse como una simple calculadora de bolsillo que sólo realiza operaciones aritméticas
Un programa puede necesitar alterar la ejecución secuencial de su código, ya sea seleccionando alguna otra alternativa en función de una condición dada, o bien repetir un determinado número de veces un trozo de código, etc.
Las sentencias de control, se dividen en tres categorías:
- Sentencias selectivas (que serán vistas en este capitulo)
- Sentencias repetitivas.
- Sentencia incondicional
2. Operadores Relacionales y Lógicos
Tabla 1. Operadores relacionales
OPERADOR | ACCION |
> >= < <= = = != | Mayor que Mayor o igual que Menor que Menor o igual que Igual que Diferente que |
Tabla 2. Operadores lógicos
OPERADOR | ACCION |
&& || ! | Y lógico (AND) O lógico (OR) No lógico (NOT) |
Tabla 3. Operador condicional
OPERADOR | ACCION |
? | Asigna a una variable un valor escogido entre dos |
La elección mediante ? depende del valor booleano de una condición:
Condición ? Exp1: Exp2;
Si Condición es verdad
Entonces Exp1.
En caso contrario Exp2
2.1. Jerarquía de los Operadores Relacionales y Lógicos
Los operadores relacionales y lógicos tienen menor jerarquía que los aritméticos.
Tabla 4. Precedencia de operadores relacionales y lógicos:
ORDEN (Decreciente) | OPERADOR | OBSERVACIÓN |
1 2 3 4 | ! > >= < <= = = != || | Más alto Más bajo |
2.2. Tablas de Verdad
Los operadores relacionales y lógicos se usan para soportar las operaciones básicas lógicas de AND, OR y NOT de acuerdo con la tabla de verdad que usa.
Tabla 5. Tabla de verdad y operadores lógicos:
P | Q | P&&Q | P || Q | !P | P ==Q | P<=Q | P!=Q |
0 0 1 1 | 0 1 0 1 | 0 0 0 1 | 0 1 1 1 | 1 1 0 0 | 1 0 0 1 | 1 1 0 1 | 0 1 1 0 |
3. Sentencia Selectiva Simple
Sintaxis : if (condición) sentencias;
else sentencias;
Propósito : Ejecutar la sentencia o bloque que acompaña a if, si la condición es verdadera o distinta de cero (TRUE); o ejecutar la sentencia o bloque que acompaña a else si la condición es falsa o igual a cero (FALSE)
Ejemplo : if (x>y) cout<<x;
else cout<<y;
3.1. Sentencia If con Alternativa Única
Si la condición es verdadera, entonces las sentencias que acompañan a if serán ejecutadas.
En cualquier otro caso no se ejecutarán y se transferirá el control al paso siguiente del algoritmo.
En este caso la sentencia else no es utilizada. Ejemplo:
if (x%2==0) cout<<x;
En este ejemplo, si el valor de la variable “x” es par se reporta dicho valor, en caso contrario no se ejecuta ningún proceso.
Figura 1. Bloque lógico del if con alternativa única
Si la condición es verdadera, entonces se ejecutarán las sentencias1 que acompañan a if. En caso contrario, se ejecutarán las sentencias2 que acompañan a else.
Figura 2. Bloque lógico del if con alternativa doble
Tener en cuenta que sólo el código asociado con if o el asociado con else se ejecutará, nunca ambos. Ejemplo:
Figura 2. Bloque lógico del if con alternativa doble
Tener en cuenta que sólo el código asociado con if o el asociado con else se ejecutará, nunca ambos. Ejemplo:
if (x<=y || y>z) p = x + y;
else q = z - y;
Si x, y, z; hacen a la condición verdadera, se ejecutará la suma de x e y, siendo el resultado p. Si no, se realiza la diferencia de z e y; y el resultado será q
3.3. Sentencia If con Alternativa Múltiple
También se le conoce como escalonador if-else-if
if(condición) sentencia;
else if(condición) sentencia;
else if(condición) sentencia;
…………..
else sentencia;
Las expresiones condicionales se evalúa de arriba a abajo
Tan pronto como encuentre una condición verdadera, ejecuta la sentencia asociada y salta el resto de la escalera.
Si no es verdad ninguna condición, se ejecuta el else final
Si fallan todas las pruebas, se realiza el último else
Si no hay else final y son falsas las otras, no se hace nada.
3.4. Sentencia If Anidada
Es una sentencia if que es el objeto de otro if o else
Es uno de los aspectos más confusos de la sentencia if, por la siguiente razón: ¿A que if se refiere el else?.
Existe una regla sencilla para resolver este problema:
“El if y el else deben estar dentro del mismo bloque de código y se deben usar llaves”. Ejemplo:
if(m>n) {
if(p>=q) { p = p + m; cout<<p; }
else { q = q + n; cout<<q; }
}
else { m = m + n; cout<<m; }
Ejemplo 1
Ingresar el año y reportar si este es bisiesto o no.
Análisis:
Un año es bisiesto cuando es múltiplo de 4, es decir que al dividirlo entre cuatro nos da un residuo igual a 0. Pero no es múltiplo de 100. Excepto los múltiplos de 400.
5. Sentencia Selectiva Múltiple
Si en la sentencia switch no coincide ninguna alternativa; el control se dirige a la sentencia que acompaña al default
El default es opcional y si no está presente no hace nada.
El switch se usa para dirigir una selección de menú
La sentencia break se usa para terminar la secuencia que está asociada con cada constante
Si se omite break, la ejecución continuara en las sentencias del siguiente case hasta que se encuentre un break o el final del switch
La ejecución comienza en la etiqueta que coincide con la variable de control y continuará hasta que se encuentre una sentencia break o el final del switch.
#include <iostream.h> // AÑO BISIESTO
#include <conio.h>
main () {
int a;
clrscr();
gotoxy(10,2); cout<<”Ingrese el año: ”;
gotoxy(50,2); cin>>a;
if((a%4==0) && (a%100!=0) || (a%400==0)) {
gotoxy(10,6); cout<<” Año bisiesto”;
}
else {
gotoxy(10,6); cout<<” Año no bisiesto”;
}
getch();
}
5. Sentencia Selectiva Múltiple
Si en la sentencia switch no coincide ninguna alternativa; el control se dirige a la sentencia que acompaña al default
El default es opcional y si no está presente no hace nada.
El switch se usa para dirigir una selección de menú
La sentencia break se usa para terminar la secuencia que está asociada con cada constante
Si se omite break, la ejecución continuara en las sentencias del siguiente case hasta que se encuentre un break o el final del switch
La ejecución comienza en la etiqueta que coincide con la variable de control y continuará hasta que se encuentre una sentencia break o el final del switch.
Denominación : Función switch()
Sintaxis : switch(variable) {
case constante1: { sentencias1;
break; }
case constante2: { sentencias2;
break; }
.....……......
case constanteN: { sentenciasN;
break; }
default: { sentenciasN+1;
break; }
}
Propósito : Ordenar a la computadora que compruebe una variable sucesivamente frente a la lista de constantes enteras o de carácter. Después de ubicar una coincidencia, se ejecutará el bloque de sentencias que se asocian con la constante.
Ejemplo : switch(mes) {
case 1: { cout<<”ENERO \n”; break; }
case 2: { cout<<”FEBRERO \n”; break; }
case 3: { cout<<”MARZO \n”; break; }
default: { cout<<”Es otro mes \n”; break; }
}
Ejemplo 2
Una empresa renta autos de tres clases: pequeños, medianos y grandes. La tarifa del alquiler por día es: $ 15/día en el auto pequeño, $ 20/día en el auto mediano y $ 30/día en el auto grande. Además la empresa cobra $ 0.20/km recorrido en auto pequeño, $ 0.30/km recorrido en auto mediano y $ 0.40/km recorrido en auto grande. Pedir en un menú el tipo de auto alquilado e ingresar el número de días alquilado y los kilómetros recorridos. De no ingresar correctamente el tipo de auto se imprimirá un mensaje diciendo que se realice un ingreso correcto. Luego imprimir el monto a pagar por el alquiler
#include <iostream.h> // ALQUILER DE AUTOS
#include <conio.h>
main () {
int x; // Tipo de auto
int T; // Tarifa de alquiler de un auto por día
int d; // Número de días alquilados
float R; // Tarifa de alquiler por kilómetro
float C; // Costo total a pagar
float k; // Número de kilómetros recorridos
cout<<”Tipo de auto \n\n”;
cout<<”1. Pequeño \n”;
cout<<”2. Mediano \n”;
cout<<”3. Grande \n\n”;
cout<<”Elegir opción: ”; cin >>x;
switch(x) {
case 1: {
T = 15; R = 0.2;
break; }
case 2: {
T = 20; R = 0.3;
break; }
case 3: {
T = 30; R = 0.4;
break; }
default: {
goto etiqueta;
break; }
}
cout<<”\n Número de días alquilado: “; cin>>d;
cout<<”Número de km. recorridos: “; cin>>k;
C = T * d + R * k;
cout<<”\n Total a pagar: “<<C;
etiqueta: cout<<”\n\n Fin del programa”;
getch();
}
No hay comentarios:
Publicar un comentario