4 - Comprobando condiciones (1: Si)
Versión en video (7:11 min):
Pseudocódigo
4 - Comprobando condiciones (1: Si)
En casi cualquier secuencia de instrucciones para un ordenador, será vital poder comprobar si se cumple alguna condición. Una primera forma básica de comprobar condiciones es con la orden "SI". Su uso básico sería
Si condicion Entonces
pasos_a_dar_si_es_verdadero
SiNo
pasos_a_dar_si_es_falso
FinSi
El bloque "SiNo" es opcional: podemos optar por no indicar lo que queremos que se haga cuando no se cumpla la condición.
Para ayudarnos a planificar el comportamiento de una secuencia de instrucciones, se suele usar como ayuda los llamados "diagramas de flujo". En estos diagramas, una condición se representa como un rombo, del que salen dos flechas: una para la secuencia de acciones a realizar si se cumple la condición y otra para cuando no se cumple:
Así, si en PSeInt hacemos clic en el icono de la parte derecha que representa la condición SI-ENTONCES, aparece un esqueleto de programa casi completo, para que hagamos los cambios que nos interesen:
Sólo tenemos que escribir la condición que realmente nos interesa, y la serie de pasos que se deben dar si se cumple y si no se cumple, de modo que nuestro programa podría quedar así:
Algoritmo Ejemplo004
Escribir "Dime un numero"
Leer primerNumero
Escribir "Dime otro numero"
Leer segundoNumero
Si primerNumero > segundoNumero Entonces
Escribir "El primero es mayor"
Sino
Escribir "El segundo es mayor"
FinSi
FinAlgoritmo
Su resultado sería éste:
(Nota: si lo piensas con un poco de detenimiento -o lo pruebas-, te darás cuenta de que ese planteamiento no es correcto del todo: si introduces dos números iguales, te dirá que el segundo es el mayor; lo solucionaremos un poco más adelante, en el ejemplo 4c).
En ese ejemplo hemos comparado si un valor es mayor que el otro (>). Los operadores de comparación que tenemos disponibles son:
Operador relacional | Significado | Ejemplo |
---|---|---|
> | Mayor que | 3>2 |
< | Menor que | 2<3 |
= | Igual que | 3=3 |
<= | Menor o igual que | 5 <= 5 |
>= | Mayor o igual que | 6 >= 5 |
<> | Distinto de | 6<>5 |
Ejercicio de repaso propuesto 4.1: Crea un programa que pida dos números al usuario y responda si son iguales o no lo son.
También es posible comprobar varias condiciones a la vez, para hacer construcciones más complejas, como: "si a es mayor que b y b es mayor que c", o como "si a es igual a 1 o b es igual a 1 ". Los operadores lógicos que de los que disponemos son:
Operador lógico | Significado | Ejemplo |
---|---|---|
& ó Y | Conjunción (y). | (7>4) & (2=1) //falso |
| ó O | Disyunción (o). | (1=1 | 2=1) //verdadero |
~ ó NO | Negación (no). | ~(2<5) //falso |
Un ejemplo de su uso sería:
Algoritmo Ejemplo004b
Escribir "Dime un numero"
Leer primerNumero
Si primerNumero > 0 o primerNumero = 0 Entonces
Escribir "Es mayor o igual que cero"
Sino
Escribir "Es negativo"
FinSi
FinAlgoritmo
Además, podemos encadenar varias condiciones una detrás de otra. Como hemos comentado, el ejemplo 4 fallaba si los dos números son iguales. Por eso, un planteamiento más detallado (y más correcto) sería emplear dos comprobaciones "si", de la siguiente manera:
Algoritmo Ejemplo004c
Escribir "Dime un numero"
Leer primerNumero
Escribir "Dime otro numero"
Leer segundoNumero
Si primerNumero > segundoNumero Entonces
Escribir "El primero es mayor"
Sino
Si primerNumero < segundoNumero Entonces
Escribir "El segundo es mayor"
Sino
Escribir "Son iguales"
FinSi
FinSi
FinAlgoritmo
Ejercicio de repaso propuesto 4.2: Haz una variante del ejemplo 004b, usando el operador ">=".
Ejercicio de repaso propuesto 4.3: Crea un programa que pida un número al usuario y diga si es positivo, negativo o cero.
Ejercicio de repaso propuesto 4.4: Haz un programa que pida al usuario dos números y diga cuántos de ellos son positivos.
Ejercicio de repaso propuesto 4.5: Crea un programa que pida al usuario dos números y muestre su división si el segundo no es cero, o un mensaje de aviso en caso contrario.
Ejercicio de repaso propuesto 4.6: Prepara un programa que pida al usuario tres números y diga cuál es el mayor de los tres.