Clase 2
Clase 2
Programación 1
| Estructuras condicionales simples y anidadas
| Operadores relacionales y lógicos
| Operadores "Or" y "And"
MÓDULO
DIDÁCTICO
Al final de esta clase ya podrás:
ESTRUCTURAS 2023
| Comprender situaciones que para su resolución
CONDICIONALES
impliquen caminos alternativos que dependan de
UNIDAD
una condición.
| Abordar problemas incluyendo condiciones
compuestas, operadores relacionales y operadores
lógicos.
CLASE
Capacidad para tomar decisiones
En la clase de hoy trabajaremos precisamente sobre esas posibilidades. Para abordar este tema
hemos estructurado la clase en tres grandes núcleos:
Si accedes al módulo desde un navegador, te recomen-
| el primero de ellos trata sobre estructuras condicionales y operadores relacionales,
damos abrir los hipervínculos en una nueva pestaña pre-
| el segundo, trabaja sobre las estructuras condicionales compuestas,
sionando la rueda central del ratón, o bien usando el bo-
| y finalmente, el tercero aborda los operadores lógicos.
tón derecho y seleccionando la opción correspondiente.
Para cada uno de estos temas, te ofrecemos ejercicios comentados para que vayas aprendiendo
cómo programar.
2
Antes de comenzar con la clase, leé el siguiente artículo.
Robot siguelínea: los hola mundo generalmente a cargo de un microcontrolador. La tarjeta de control contiene
dicho elemento, junto a otros componentes electrónicos básicos que requiere el
de la robótica microcontrolador para funcionar, tomar las señales que le envían los sensores y
activar individualmente los motores.
Los robots seguidores de línea son robots muy sencillos, que cumplen una única
Los rastreadores más simples utilizan 2 sensores, ubicados en la parte inferior
misión: seguir una línea marcada en el suelo normalmente de color negro sobre
de la estructura, uno junto al otro. Cuando uno de los dos sensores detecta el
un tablero blanco.
color blanco, significa que el robot está saliendo de la línea negra por ese lado.
En ese momento, el robot gira hacia el lado contrario variando la velocidad de
Estos robots pueden variar desde los más básicos (van tras una línea única)
uno de los motores, hasta que vuelve a estar sobre la línea. Básicamente, el
hasta los que recorren laberintos. Todos ellos, sin embargo, poseen ciertas
microcontrolador sigue un programa simple que le permite tomar decisiones
partes básicas comunes:
sobre la marcha de acuerdo a la lectura de los sensores.
| Sensores: Un rastreador detecta la línea a seguir por medio de sensores.
| Motores: El robot se mueve utilizando motores, por lo general dos, los que
hacen girar cada una de las ruedas motrices de la unidad.
| Ruedas: Las ruedas del robot son movidas por los motores.
| Fuente de energía: El robot obtiene la energía que necesita para su
funcionamiento de baterías.
| Tarjeta de control: La toma de decisiones y el control de los motores están
Un robot siguelínea se adapta Es decir, de acuerdo a que una
a lo que van captando sus condición se cumpla o no (que un
sensores y activa o desactiva sensor vea un color determinado),
el motor correspondiente realiza una acción u otra. De este
para que el dispositivo se tipo de estructuras -llamadas
mantenga siempre sobre la condicionales-, se trata esta
línea dibujada en el suelo. segunda clase.
Capacidad para tomar decisiones
En nuestra vida diaria se nos presentan situaciones donde debemos decidir. Inicio Inicio del
| ¿Elijo la carrera A o la carrera B? programa
“Felicitaciones” Mostrar el
Supongamos que necesitamos hacer un programa que nos felicite si aprobamos un parcial. mensaje
Básicamente, tendremos que pedir al operador que ingrese la calificación, y si ésta es 4 o más, “Felicitaciones”
despliegue un mensaje: “Felicitaciones”.
5
|2|
Los problemas que resolvimos en la primera clase, utilizaban para su resolución instrucciones que Inicio
debían ejecutarse una a continuación de la anterior. Pero en algunos casos, se pueden presentar
condiciones que influyen sobre la secuencia de pasos a seguir para resolver un problema, pudiendo
continuar por caminos diferentes tal como lo muestra la imagen |2|. Si la calificación que se Sí la calificación
ingresa no es el número calificación que se ingresa es el
4 o mayor, se ejecutará número 4 o mayor,
Toda condición plantea dos posibilidades:
este otro camino, que no se ejecutará este
Que se cumpla (es decir, que sea verdadera) o que no se cumpla (es decir, que sea falsa). contiene la instrucción camino, mostrando el
Debemos tener en cuenta que luego de procesar el bloque de sentencias del lado Verdadero, del mensaje. mensaje.
el camino en el diagrama se junta con el Falso y continúa por una sola trayectoria. No Si
calificación >=4
Casos como el anterior reciben el nombre de Estructura Condicional Simple, porque hay
actividades a realizar únicamente por el camino del verdadero. “Felicitaciones”
6
|3|
Ejemplo 6
Ingresar el sueldo de una persona, si supera los 3000 dólares mostrar un mensaje en pantalla
indicando que debe abonar impuestos.
sueldo
Podemos observar lo siguiente: Siempre se hace la carga del sueldo, pero si el sueldo que
No Si
ingresamos supera 3000 dólares se mostrará por pantalla el mensaje "Esta persona debe abonar sueldo>3000
impuestos", en caso que la persona cobre 3000 o menos no aparecerá nada por pantalla.
“Esta persona debe
La palabra clave "if" indica que estamos en presencia de una estructura condicional; pagar impuestos”
| Programa codificado:
Fin
7
|4|
Todo lo que se encuentre en la rama del verdadero del if se debe disponer a 4 espacios corrido
hacia la derecha.
Entonces, el diagrama de arriba se podrá leer de la siguiente forma:
if Condición:
Sentencia 1
|5|
La indentación es una característica obligatoria del lenguaje Python para codificación de las
estructuras condicionales, de esta forma el intérprete de Python puede identificar donde finalizan
las instrucciones contenidas en la rama verdadera del if.
Ejecutando el programa e ingresando un sueldo superior a 3000 |4|. Podemos observar como
aparece en pantalla el mensaje "Esta persona debe abonar impuestos", ya que la condición del if
es verdadera:
Si lo volvemos a ejecutar e ingresamos un valor igual o inferior a 3000 podemos observar que
la instrucción que se encuentra por la rama del verdadero del if no se ejecuta |5|.
8
Operadores
| Operadores Relacionales:
| Operadores Matemáticos:
9
Desempeño 7
Denominamos que una estructura es condicional compuesta cuando se presenta la elección |6|
tenemos la opción de realizar una actividad u otra.
Es decir tenemos actividades por el verdadero y por el falso de la condición.
Lo más importante que hay que tener en cuenta que se realizan las actividades de la rama del
verdadero o las del falso, NUNCA se realizan las actividades de las dos ramas. Falso Verdadero
(Condición)
| Representación gráfica: |6|.
Operación 2 Operación 1
En una estructura condicional compuesta tenemos actividades tanto por la rama del verdadero
como por la rama del falso.
11
Ejemplo 7 |7|
Realizar un programa que solicite ingresar dos números distintos y muestre por pantalla el
mayor de ellos.
num2
Observá el diagrama de la imagen |7|.
Estamos en presencia de una ESTRUCTURA CONDICIONAL COMPUESTA ya que tenemos num2 num1
actividades por la rama del verdadero y del falso.
Fin
12
| Programa:
| Ejecutamos el programa, si hubo errores sintácticos, los corrijamos y luego, carguemos dos valores,
como por ejemplo:
Si ingresamos los valores 10 y 4 la condición del if retorna verdadero y ejecuta el primer bloque.
13
Un programa se controla y corrige probando todos sus posibles resultados.
Ejecutemos nuevamente el programa e ingresemos:
¡Recordá!
En una condición de un if deben disponerse únicamente variables, valores constantes y operadores
relacionales. (Podés consultarlos nuevamente en la pág. 9)
| Hay que tener en cuenta que al disponer una condición debemos seleccionar que operador
relacional se adapta a la pregunta. Por ejemplo:
Los problemas que se pueden presentar son infinitos y la correcta elección del operador solo se
alcanza con la práctica intensiva en la resolución de problemas.
14
Desempeño 8 Soluciones
|8|
Estaremos en presencia de una estructura condicional anidada cuando por la rama del verdadero
o el falso de una estructura condicional hay otra estructura condicional.|8|
Ejemplo 8
Operaciones
Calculadora de promedios
Confeccionar un programa que pida por teclado tres notas de un alumno, calcule el promedio
e imprima alguno de estos mensajes:
16
|9|
Inicio
En caso que la condición nos dé falso, por la rama del falso aparece otra estructura condicional, (prom>=7)
porque todavía debemos averiguar si el promedio del alumno es superior o igual a cuatro o
inferior a cuatro. Estamos en presencia de dos estructuras condicionales compuestas. "Promocionado"
(prom>=4)
"Reprobado" "Regular"
Fin
17
| Programa:
A la codificación del if anidado podemos observarla por el else del primer if.
Como vemos debemos indentar a 8 caracteres las ramas del verdadero y falso del if anidado
18
Desempeño 9 Soluciones
a| Se cargan por teclado tres números distintos. Mostrar por pantalla el y sabiendo que:
mayor de ellos.
Nivel máximo: Porcentaje>=90%.
b| Se ingresa por teclado un valor entero, mostrar una leyenda que Nivel medio: Porcentaje>=75% y <90%.
indique si el número es positivo, negativo o nulo (es decir cero) Nivel regular: Porcentaje>=50% y <75%.
Fuera de nivel: Porcentaje<50%.
c| Confeccionar un programa que permita cargar un número entero
positivo de hasta tres cifras y muestre un mensaje indicando si tiene 1, 2, o
3 cifras. Mostrar un mensaje de error si el número de cifras es mayor.
Estos dos operadores se emplean fundamentalmente en las estructuras condicionales para agrupar
varias condiciones simples.
A continuación te mostraremos como funciona cada uno a través de ejemplos
20
Operador “and”
|10|
Traducido se lo lee como “Y”.
La utilización de operadores lógicos permiten en muchos casos plantear algoritmos más cortos
y comprensibles.
21
|11|
Ejemplo 9 Inicio
Confeccionar un programa que lea por teclado tres números enteros distintos y nos muestre
el número mayor. num2
Este ejercicio se puede resolver sin operadores lógicos pero al utilizarlos nos permite que la solución
sea mas sencilla.
(num1>num2
Falso Verdadero
and
La primera estructura condicional es una ESTRUCTURA CONDICIONAL COMPUESTA con una num1>num3)
CONDICIÓN COMPUESTA.
Fin
22
Si una de las condiciones simples da falso la CONDICIÓN COMPUESTA da Falso y continua por la
rama del falso.
Es decir que se mostrará el contenido de num1 si y sólo si num1 > num2 y num1 > num3.
En caso de ser Falsa la condición, analizamos el contenido de num2 y num3 para ver cual tiene el
mayor valor. En esta segunda estructura condicional no se requieren operadores lógicos al haber
una condición simple.
| Programa:
23
Operador “Or”
|12|
Traducido se lo lee como “O” o también gráficamente como “||”.
24
Ejemplo 10
Confeccionar un programa que, al cargar una fecha (día, mes y año) por teclado, muestre un
mensaje si corresponde al primer trimestre del año (enero, febrero o marzo)
Deberás poder ingresar por teclado el valor numérico del día, mes y año.
Ejemplo:
dia:10
mes:2
año:2018
25
|13|
| La carga de una fecha se hace por partes, ingresamos las variables dia, mes y año. dia
Mostramos el mensaje “Corresponde al primer trimestre” en caso que el mes ingresado por
mes
teclado sea igual a 1, 2 ó 3.
| Programa:
(mes==1
dia=int(input("Ingrese nro de día:")) Falso o Verdadero
mes==2
mes=int(input("Ingrese nro de mes:"))
o
año=int(input("Ingrese nro de año:")) mes==3)
if mes==1 or mes==2 or mes==3:
print("Corresponde al primer trimestre") “Corresponde al
primer trimestre”
Fin
26
Desempeño 10 Desempeño 11
| Realizar un programa que pida cargar una fecha cualquiera, | Se ingresan tres valores por teclado, si todos son iguales se imprime
luego verificar si dicha fecha corresponde a Navidad.. la suma del primero con el segundo y a este resultado se lo multiplica
por el tercero.
Desempeño 12 Desempeño 13
| Se ingresan por teclado tres números, si todos los valores ingresados | Se ingresan por teclado tres números, si al menos uno de los valores
son menores a 10, imprimir en pantalla la leyenda ingresados es menor a 10, imprimir en pantalla la leyenda
"Todos los números son menores a diez". "Alguno de los números es menor a diez".
Desempeño 14 Desempeño 15
| Escribir un programa que pida ingresar la coordenada de un punto en el | De un operario se conoce su sueldo y los años de antigüedad.
plano, es decir dos valores enteros x e y (distintos a cero). Se pide confeccionar un programa que lea los datos de entrada e informe:
Posteriormente imprimir en pantalla en que cuadrante se ubica dicho a| Si el sueldo es inferior a 500 y su antigüedad es igual o superior a 10
punto. (1º Cuadrante si x > 0 Y y > 0 , 2º Cuadrante: x < 0 Y y > 0, etc.) años, otorgarle un aumento del 20 %, mostrar el sueldo a pagar.
b| Si el sueldo es inferior a 500 pero su antigüedad es menor a 10 años,
otorgarle un aumento de 5 %.
c| Si el sueldo es mayor o igual a 500 mostrar el sueldo en pantalla sin
cambios.
Desempeño 16 Soluciones
¡A practicar!
Créditos
Imágenes
Tipografía
Para este diseño se utilizó la tipografía Source Sans Pro diseñada por Paul D. Hunt.
Extraída de Google Fonts.
Si detectás un error del tipo que fuere (falta un punto, un acento, una palabra
mal escrita, un error en código, etc.), por favor comunicate con nosotros a
[email protected] e indicanos por cada error que detectes la página
y el párrafo. Muchas gracias por tu aporte.
Soluciones a los problemas
Te recomendamos utilizar esta sección luego de haber intentado por un largo tiempo la resolución
y también para verificar tus soluciones.
Solución al desempeño 8
a|
num1=int(input("Ingrese primer valor:"))
num2=int(input("Ingrese segundo valor:"))
if num1>num2:
suma=num1+num2
print("La suma de los dos valores es")
print(suma)
resta=num1-num2
print("La diferencia de los dos valores es")
print(resta)
else:
producto = num1*num2;
print("El producto de los dos valores es")
print(producto)
division = num1/num2;
print("La división de los dos valores es")
print(division)
33
b| Volver a la clase
nota1=int(input("Ingrese primer nota:"))
nota2=int(input("Ingrese segunda nota:"))
nota3=int(input("Ingrese la tercer nota:"))
promedio=(nota1 + nota2 + nota3)/3
if promedio>=7:
print("Promocionado")
c| ¿Terminaste de verificar
tu código?
num=int(input("Ingrese un valor entero de 1 o 2 dígitos:"))
Hacé click en el botón
if num<10: de arriba para continuar
print("Tiene un dígito") con el módulo
else:
print("Tiene dos dígitos")
34
Soluciones a los problemas
Te recomendamos utilizar esta sección luego de haber intentado por un largo tiempo la resolución
y también para verificar tus soluciones.
Solución al desempeño 9
a|
num1=int(input("Ingrese primer valor:"))
num2=int(input("Ingrese segunda valor:"))
num3=int(input("Ingrese tercer valor:"))
if num1>num2:
if num1>num3:
print(num1)
else:
print(num3)
else:
if num2>num3:
print(num2)
else:
print(num3)
35
b|
num=int(input("Ingrese un valor:"))
if num==0:
print("Se ingresó el cero")
else:
if num>0:
print("Se ingresó un valor positivo")
else:
print("Se ingresó un valor negativo")
c|
num=int(input("Ingrese un valor de hasta tres dígitos positivo:"))
if num<10:
print("Tiene un dígito")
else:
if num<100:
print("Tiene dos dígitos")
else:
if num<1000:
print("Tiene tres dígitos")
else:
print("Error en la entrada de datos.")
36
d| Volver a la clase
totalpreguntas=int(input("Ingrese la cantidad total de preguntas del examen:"))
totalcorrectas=int(input("Ingrese la cantidad total de preguntas contestadas
correctamente:"))
porcentaje=totalcorrectas * 100 / totalpreguntas
if porcentaje>=90:
print("Nivel máximo")
else:
if porcentaje>=75:
print("Nivel medio")
else:
if porcentaje>=50:
print("Nivel regular")
else:
print("Fuera de nivel")
37
Soluciones a los problemas
Te recomendamos utilizar esta sección luego de haber intentado por un largo tiempo la resolución
y también para verificar tus soluciónes.
Solución al desempeño 10
38
Solución al desempeño 11
Solución al desempeño 12
39
Solución al desempeño 13
Solución al desempeño 14
40
Solución al desempeño 15
41
Solución al desempeño 16 Volver a la clase
42