Un programa donde no hubiera control de flujo tendría esta estructura:
Por ejemplo
#include <iostream>
int main() {
int number;
std::cout << "Introduce un numero\n"; // Accion 1
std::cin >> number; // Accion 2
std::cout << "El numero es " << number << "\n"; // Accion 3
}
Sin embargo, lo habitual en un programa es que se tome distintos caminos en función del valor que puedan tener los datos, por ejemplo.
Eso se consigue con los condicionales.
La estructura más simple de un condicional es:
if(condicion){
// Accion 1
// Accion 2
}
Accion 3
Accion 4
Un ejemplo sería
#include <iostream>
int main() {
int number;
std::cout << "Introduce un numero positivo\n";
std::cin >> number;
if(number < 0){
std::cout << "Te he dicho que debe ser positivo\n";
}
std::cout << "Gracias\n";
return 0;
}
El condicional también puede marcar 2 vías alternativas
if(condicion){
// Accion 1a
// Accion 2a
}else{
// Accion 1b
// Accion 2b
}
Accion 3
Accion 4
Un ejemplo sería
#include <iostream>
int main() {
int number;
std::cout << "Introduce un numero\n";
std::cin >> number;
if(number < 0){
std::cout << "El número es negativo\n";
}else{
std::cout << "El número es positivo\n";
}
std::cout << "Soy super listo\n";
return 0;
}
El condicional puede marcar n vías alternativas
if(condicion 1){
// Accion 1a
// Accion 2a
}else if(condicion 2){
// Accion 1b
// Accion 2b
}else if(condicion 3){
// Accion 1c
// Accion 2c
}else{
// Accion 1d
// Accion 2d
}
Accion 3
Accion 4
Un ejemplo sería
#include <iostream>
int main() {
int number;
std::cout << "Introduce un numero\n";
std::cin >> number;
if(number < 0){
std::cout << "El número es negativo\n";
}else if (number < 5){
std::cout << "El número es positivo y menor que 5\n";
}else if (number < 10){
std::cout << "El número es positivo y menor que 10\n";
}else{
std::cout << "El número es mayor que 10\n";
}
std::cout << "Soy super listo\n";
return 0;
}
¿Por qué este ejemplo de código no funciona como se esperaría?
#include <iostream>
int main() {
int number;
std::cout << "Introduce un numero\n";
std::cin >> number;
if(number > 10){
std::cout << "El numero es mayor que 10\n";
}else if(number < 10){
std::cout << "El número es menor que 10\n";
}else if (number < 5){
std::cout << "El número es es menor que 5\n";
}else if (number < 0){
std::cout << "El número es negativo\n";
}
std::cout << "Esta vez la he cagado\n";
return 0;
}
Operador | Siginificado |
---|---|
== | Igual que |
!= | Distinto que |
> | Mayor que |
< | Menor que |
>= | Mayor o igual que |
<= | Menor o igual que |
Condición | Siginificado |
---|---|
cond1 && cond 2 | cond1 Y cond2 |
cond 2 || cond2 | cond1 Y cond2 |
!cond1 | NO cond1 |