Guía 2
Guía 2
Guía 2
COMPUTACIÓN Guía Nº 2
Los programas construidos hasta el momento presentan siempre una misma secuencia de acciones:
1. Solicitar al usuario el ingreso de valores desde el teclado y almacenar en recursos variables mediante el
enunciado de lectura o entrada input y/o asignar valores a recursos variables mediante enunciados de asignación.
2. Efectuar cálculos con los valores para transformarlos en resultados y almacenar los resultados en recursos
variables mediante enunciados de asignación.
3. Mostrar por pantalla los resultados almacenados en variables mediante enunciados de escritura o salida print.
Estos programas se componen de una secuencia de líneas de código que se ejecutan una tras otra, desde la
primera hasta la última y siguiendo el mismo orden con el que aparecen en el texto del programa: el orden de
ejecución del programa es estrictamente secuencial cuando el programa se construye únicamente con estructuras
de control secuenciales.
No obstante, es posible alterar el orden de ejecución de las instrucciones de los programas para hacer que tomen
decisiones a partir de los datos y/o resultados intermedios y, en función de estas decisiones, ejecuten ciertas
sentencias y otras no; este tipo de alteración del orden de ejecución de las instrucciones se realiza con estructuras
de control de selección o de decisión.
Supóngase que se desea desarrollar un programa para calcular la superficie de un rectángulo. Como los
cuadrados son casos especiales de rectángulos, para calcular la superficie de un cuadrado se puede usar el mismo
programa que se escribiría para calcular la superficie del rectángulo, pero para que en el caso de un cuadrado el
programa solicite la longitud de un único lado y no de dos, como en el caso general, se impone consultar al
usuario sobre el caso a resolver y seleccionar o decidir por una de dos opciones. Para esto el lenguaje Python
ofrece los enunciados, instrucciones, sentencias o estructuras de control de selección o decisión simple.
Sintaxis
if <condición>:
<sentencia(s)>
else:
<sentencia(s)>
Los paréntesis angulares < … > se utilizan para representar la condición y sentencia(s) que debe construir el
programador en la sintaxis del lenguaje.
Es crucial respetar la indentación o sangrado: la(s) sentencia(s) deben escribirse siempre con una indentación
igual o mayor a 4 (cuatro) espacios con relación al if y al else que deben escribirse alineados en la misma
columna.
Se puede decir que una condición es una expresión lógica. Las expresiones lógicas siguen reglas similares a las
expresiones aritméticas: tienen operadores unarios y binarios que se aplican en un orden que depende de la
prioridad (o nivel de precedencia) y asociatividad de los operadores.
Las expresiones lógicas calculan valores lógicos, también conocidos como booleanos (por el matemático Boole,
inventor del álgebra que lleva su nombre). Sólo hay dos posibles valores lógicos: verdadero (True) y falso
(False). Python no tiene un tipo de datos específico para los valores lógicos. Cualquier número entero puede
interpretarse como un valor lógico adoptando el siguiente convenio: si el número vale 0, entonces se interpreta
como falso; en caso contrario, se interpreta como verdadero. Por lo tanto, las expresiones lógicas nunca
devuelven falso o verdadero como valores de tipo lógico: devuelven el número cero (para falso) o cualquier otro
número (para verdadero). Por regla general, el número que devuelven para verdadero es el 1 (pero es indistinto
porque lo importante es que no es el cero).
Problemas Propuestos
Los problemas propuestos son un medio para lograr el aprendizaje de los diferentes mecanismos de
programación. Constituyen un complemento de las clases prácticas explicativas. Se recomienda resolverlos en el
orden en que se presentan porque la complejidad de la solución de cada problema se incrementa gradualmente.
1. Desarrollar un programa en lenguaje Python que solicite al usuario el ingreso desde el teclado de dos números
enteros positivos distintos (num1 y num2) y determine cuál es el número mayor almacenando el resultado en una
variable (mayor) y cuál es el número menor almacenando el resultado en una variable (menor) exhibiéndolos por
pantalla.
Hay que considerar que el usuario no comete error de tipeo en el ingreso de los datos. Diseñar los juegos de
datos necesarios y probar el correcto funcionamiento del programa (mediante una prueba de escritorio o
ejecutando el programa en la computadora).
2. Desarrollar un programa en lenguaje Python que solicite al usuario el ingreso desde el teclado de dos números
complejos distintos, pregunte al usuario si desea sumarlos o multiplicarlos y exhiba en pantalla el resultado de la
operación solicitada. El programa debe contemplar la posibilidad de que la respuesta del usuario sea s o S (en el
caso de la suma) y m o M (en el caso de la multiplicación).
Hay que considerar que el usuario no comete error de tipeo en el ingreso de los datos. Diseñar los juegos de
datos necesarios y probar el correcto funcionamiento del programa (mediante una prueba de escritorio o
ejecutando el programa en la computadora).
Observación: La parte real e imaginaria del primer complejo son a y b, del segundo complejo son c y d y del
complejo resultado son e y f, respectivamente. Los valores (de tipo float) que ingresa el usuario son a, b, c y d.
Se podrá mostrar el resultado en pantalla en la forma e + f i o informando al usuario que el valor de la parte real
del complejo resultado es e y el valor de la parte imaginaria del complejo resultado es f.
Tener en cuenta que:
e = (a + c) y f = (b + d) en el caso de la suma, y
e = (a por c – b por d) y f = (a por d + b por c) en el caso de la multiplicación.
4. Desarrollar un programa en lenguaje Python que solicite al usuario el ingreso desde el teclado de dos fechas
parciales distintas (la más antigua y la más reciente), expresadas en año(s) y mes(es) y exhiba en pantalla la
diferencia de fechas, expresada en año(s) y mes(es). No se debe visualizar en pantalla diferencia de años y meses
nulos.
Hay que considerar que el usuario no comete error de tipeo en el ingreso de los datos. Diseñar los juegos de
datos necesarios y probar el correcto funcionamiento del programa (mediante una prueba de escritorio o
ejecutando el programa en la computadora).
Observación: Las fechas ingresadas tienen la forma mes1 anio1 (la fecha más antigua) y mes2 anio2 (la fecha
más reciente), donde mes1, anio1, mes2 y anio2 son los valores enteros que ingresa el usuario. Se deberán tratar
los datos como unidades de tiempo indivisibles, es decir, no se podrá convertir, por ejemplo, años a meses.
Sugerencia: Para descubrir un algoritmo solución podrías pensar cuál es tu edad en la fecha actual expresada en
años y meses. Y también, preguntar a tus compañer@s de grupo de trabajo, amig@s o familiares. Y tener en
cuenta que, en todos los casos, el algoritmo que propongas como solución del problema debe determinar el
resultado correcto.
5. Desarrollar otra versión del programa que resuelve el problema 4 (anterior) considerando que el usuario
ingresa dos fechas distintas cualesquiera y el programa debe determinar previamente cuál es la fecha más
antigua y cuál es la fecha más reciente.
Hay que considerar que el usuario no comete error de tipeo en el ingreso de los datos. Diseñar los juegos de
datos necesarios y probar el correcto funcionamiento del programa (mediante una prueba de escritorio o
ejecutando el programa en la computadora).
Anexos
Operadores Lógicos
Operador Operación Tipo de Operandos
and (binario) conjunción expresiones lógicas
or (binario) disyunción expresiones lógicas
not (unario) negación expresión lógica
Tablas de verdad
Operador Operandos Resultado
Izquierdo Derecho
and verdadero verdadero verdadero
verdadero falso falso
falso verdadero falso
falso falso falso
or verdadero verdadero verdadero
verdadero falso verdadero
falso verdadero verdadero
falso falso falso
not verdadero falso
falso verdadero
* El nivel de precedencia 4 es el más alto y 7 es el más bajo. Los operadores lógicos y de comparación pueden aparecer en
expresiones que también contienen operadores aritméticos. La precedencia de los operadores aritméticos podía ser de 1 a
3 en una tabla anterior, por tanto, son prioritarios frente a los operadores lógicos y de comparación.
Sintaxis
if <condición>:
<sentencia(s)>
else:
if <condición>:
<sentencia(s)>
else:
if <condición>:
<sentencia(s)>
Python provee una forma compacta de expresar fragmentos de código que simplifica la solución:
...
else:
if <condición>:
…
Sintaxis
if <condición>:
<sentencia(s)>
elif <condición>:
<sentencia(s)>
elif <condición>:
<sentencia(s)>
Para que las sentencias puedan ejecutarse sin que se presente error en tiempo de ejecución (“unindent does not
match any outer indentatiton level“) es crucial que las cláusulas if… elif… else… se escriban sin indentación.
Problemas Propuestos
Los problemas propuestos son un medio para lograr el aprendizaje de los diferentes mecanismos de
programación. Constituyen un complemento de las clases prácticas explicativas. Se recomienda resolverlos en el
orden en que se presentan porque la complejidad de la solución de cada problema se incrementa gradualmente.
6. Desarrollar un programa en lenguaje Python que solicite al usuario el ingreso desde el teclado del valor de una
calificación (entero entre 1 y 10) y exhiba en pantalla el concepto que le corresponda: 1 muy malo, 2 y 3 malo, 4
y 5 regular, 6 y 7 bueno, 8 muy bueno, 9 distinguido y 10 sobresaliente. En caso de que el usuario cometa un
error de tipeo en el ingreso del dato, se deberá visualizar por pantalla el siguiente mensaje: “Calificación no
válida. Ingresar un valor entre 1 y 10. Vuelva a ejecutar el programa”.
Hay que considerar que el usuario puede cometer error de tipeo en el ingreso de los datos. Diseñar los juegos de
datos necesarios y probar el correcto funcionamiento del programa (mediante una prueba de escritorio o
ejecutando el programa en la computadora).
7. Desarrollar un programa en lenguaje Python que solicite al usuario el ingreso desde el teclado de los tres lados
de un triángulo e informe por pantalla si el triángulo es equilátero (tres lados iguales), isósceles (dos lados
iguales) o escaleno (tres lados desiguales).
Hay que considerar que el usuario no comete error de tipeo en el ingreso de los datos. Diseñar los juegos de
datos necesarios y probar el correcto funcionamiento del programa (mediante una prueba de escritorio o
ejecutando el programa en la computadora).
8. Desarrollar un programa en lenguaje Python que solicite al usuario el ingreso desde el teclado de un número
entero entre 1 y 3999 (no se admitirá el ingreso de cada uno de los dígitos componentes del número) y exhiba en
pantalla su representación romana.
Hay que considerar que el usuario no comete error de tipeo en el ingreso de los datos. Diseñar los juegos de
datos necesarios y probar el correcto funcionamiento del programa (mediante una prueba de escritorio o
ejecutando el programa en la computadora).
Por ejemplo, si se ingresara el número 2586 se informaría por pantalla que su representación romana es
MMDLXXXVI.
Hay que recordar que:
1 I
5 V
10 X
50 L
100 C
500 D
1000 M
9. Desarrollar un programa en lenguaje Python que solicite al usuario el ingreso desde el teclado de un número
entero de 4 dígitos que representa un año y exhiba en pantalla si el año fue, es o será bisiesto. Se debe diseñar el
algoritmo correspondiente a la siguiente definición: “un año es bisiesto si es divisible por 400 ó si es divisible
por 4 pero no es divisible por 100”.
Hay que considerar que el usuario no comete error de tipeo en el ingreso de los datos. Diseñar los juegos de
datos necesarios y probar el correcto funcionamiento del programa (mediante una prueba de escritorio o
ejecutando el programa en la computadora).
Fuentes bibliográficas
• Introducción a la Computación. J. Glenn Brookshear. Pearson Educación, S. A. Madrid. Undécima edición,
2012. ISBN: 97884782911397.
• Python Software Foundation. En https://www.python.org/about/
• El tutorial de Python. Guido van Rossum. En http://docs.python.org.ar/tutorial/pdfs/TutorialPython3.pdf
• Guía de estilo del código Python. Guido van Rossum y Barry Warsaw. Traducción al castellano por Raúl
González Duque. 10 de Agosto de 2007. En http://mundogeek.net/traducciones/guia-estilo-python.htm
• Algoritmos y Programación I. Con lenguaje Python. Rosita Wachenchauzer, Margarita Manterola,
Maximiliano Curia, Marcos Medrano y Nicolás Paez. 9 de marzo de 2011. En
https://librosweb.es/libro/algoritmos_python/
• Introducción a la programación con Python 3. Andrés Marzal Varó, Isabel Gracia Luengo y Pedro García
Sevilla. Departamento de Lenguajes y Sistemas Informáticos. Asignaturas: EI1003 y MT1003.
Publicaciones Universitat Jaume I. Primera edición, 2014. ISBN: 978-84-697-1178-1. En
http://repositori.uji.es/xmlui/handle/10234/102653
• Introducción a la programación con Python y C. Volumen I: Python. Andrés Marzal e Isabel Gracia.
Departamento de Lenguajes y Sistemas Informáticos. Metodología y tecnología de la programación.
Ingeniería Técnica en Informática de Gestión (IG04). Ingeniería Informática (II04). Universitat Jaume I.
2002.
• Python para todos. Raúl González Duque.
En https://launchpadlibrarian.net/18980633/Python%20para%20todos.pdf
• Programación Estructurada en un Curso Introductorio. Una Experiencia Explorando Python. Edith Lovos,
Tatiana Gibelli y Rodolfo Bertone. En
http://sedici.unlp.edu.ar/bitstream/handle/10915/50639/Documento_completo.pdf-PDFA.pdf?sequence=1