Propuesta Metodològica Programacion Python
Propuesta Metodològica Programacion Python
Sintetizado por:
Gildardo Antonio Orrego Villa - Marco Antonio López Ospina
1.1 Introducción
Python es un lenguaje de programación de propósito general, que también puede utilizarse para
el desarrollo web. Python es una apuesta por la simplicidad, versatilidad y rapidez en el desarrollo
de soluciones algorítmicas. Entre otras razones, para su uso actual, por encima de otros
lenguajes tradicionales son las siguientes:
* Es gratuito, por ende facilita su uso en entornos académicos, industriales e incluso para
propósitos empresariales, lo que reduce los costos asociados a licenciamientos, accesos,
disponibilidad y portabilidad.
* Es un lenguaje de tipo intérprete (no se necesita compilar todo el código fuente para poder
ejecutarlo), sino que lo hace línea por línea.
* La cantidad de plataformas en las que se puede desarrollar, como Unix, Windows, OS/2, Mac,
Amiga y otros.
En Python no es necesario declarar el tipo de dato que se almacenará en una variable, ya que
su tipo lo determinará en tiempo de ejecución, según el valor asignado. A este proceso se
denomina “tipado dinámico”.
Es importante, que al comenzar la etapa de diseño del algoritmo se dedique buena parte al
análisis de los datos y en este caso a la declaración del tipo de dato al cual corresponde cada
variable (como se verá más adelante). El tipo de dato determina el rango de valores al cual
2
corresponde la variable y que podría ser aceptado por la máquina. Los tipo de dato se pueden
clasificar en: datos simples (numéricos, datos lógicos y datos carácter) y estructurados
(cadenas, arreglos, registros, archivos, conjuntos y punteros).
Datos numéricos. Se dice que un dato es de tipo numérico si está en un intervalo con valores
numéricos. Ese conjunto puede subdividirse en enteros y en reales.
● Tipo numérico entero (int). Si el valor del dato no tiene componentes
fraccionarias o decimales se dice que es de tipo entero. Dichos valores pueden
ser positivos o negativos. Ejemplo, la edad, la cantidad de personas, animales o
cosas de algún sitio.
● Tipo numérico real (float o double). Si el valor al cual representa el dato tiene
componentes fraccionarias o decimales se dice que es de tipo real. Dichos valores
pueden ser positivos o negativos. Ejemplo, la estatura en metros, el peso en
kilogramos.
Datos lógicos (bool). Se denomina dato de tipo lógico a aquel que puede tomar solo los valores
False o True (comenzando con mayúscula). Este tipo de dato se utiliza para representar
alternativas o decisiones y comparaciones, de las cuales puede decirse que es falsa o no.
Ejemplo, se pregunta si un valor es positivo o negativo, se responde False o True.
Dato carácter/cadena o texto (char/string). Se dice dato de tipo carácter al conjunto finito y
ordenado de caracteres (letras, símbolos especiales y símbolos que representan números) que
el computador reconoce. Los conjuntos de caracteres o sucesión de éstos se denominan
cadenas (o string) que van entre comillas dobles y los conjuntos de un solo carácter se
denominan simplemente carácter y van entre el comillas simples. Las cadenas se pueden
reconocer también como arreglos de caracteres.
Tanto los datos carácter (char) como las cadenas deben delimitarse entre comillas, ya sean en
comillas simples o en dobles. Ejemplo, “María”, “Buenos días”, ‘2’ (representa el símbolo de
número dos), ‘*’ (representa el carácter * más no al operador de la multiplicación).
1.4.2 Expresiones
Se denomina expresión al grupo de operadores que actúan (separan) sobre una agrupación de
variables. Se pueden clasificar en expresiones aritméticas y lógicas.
Expresión aritmética. Es un conjunto de variables o constantes numéricas separadas o
no por operadores aritméticos. Producen un valor numérico. Ej. (x-y)*(w+z)=v, siendo v,
w, x, y, z variables numéricas declaradas
PROBLEMAS RESUELTOS
Cuando en la vida real se dice que "las cosas cambian o no con el tiempo", en lo concerniente al
argot de programación podremos hablar de "variables" o "constantes", respectivamente.
1.5.1 Variable
4
Una variable es un espacio en la memoria del computador que sirve para almacenar datos. En
efecto, una variable puede tomar distintos valores durante el transcurso de la ejecución del
algoritmo o programa, pero que en un momento determinado posee el mismo valor.
Toda variable consta de dos características básicas: su nombre y su valor. El nombre debe ser
mnemotécnico, es decir, que al leerlo fácilmente se entienda o al menos se pueda intuir; no debe
llevar caracteres en blanco ni especiales y en lo posible evitar que sean muy cortos o muy largos.
1.5.2 Constante
Cuando no cambia de valor durante la ejecución del algoritmo se dice entonces que es una
"Constante". El nombre también debe ser mnemotécnico; el valor puede ser numérico, booleano
o una cadena de caracteres, la cual debe ir entre comillas. En Python escriba las variables con
minúsculas; si el nombre de esta es compuesto, separe dichas palabras con el guión bajo (_).
No debe utilizar caracteres especiales.
Ejemplo 1.2:
nombre variable Valor
color_cabello negro, castaño oscuro, castaño claro, rubio, blanco,
gris.
valor_verdad falso, verdadero
edad_Ingreso 6, 7, 8
Sexo femenino, masculino
estatura_persona 160, 180, 190, 203
Cuadro 2: Variables
Ejemplo 1.3:
Nombre constante Valor
salario_mes 250000
valor_verdad verdadero
Despedida “ADIOS”
Cuadro 3: Constantes
Variable contadora. Es una variable de tipo entero que se incrementa o disminuye manera
constante en cada iteración. Se utiliza para controlar ciclos en procesos repetitivos.
contador =contador + k
La variable contador se incrementa k (siendo k un valor constante). También,
contador = contador - k
Con lo cual contador se disminuye (siendo k un valor constante)
Variable acumuladora. Tiene como fin almacenar cantidades variables de tipo entero o real
resultantes de sumas sucesivas. Observe que tiene la misma función de un contador, pero se
diferencia en que el incremento o disminución de cada suma es variable.
Variable_acumulador = Variable_acumulador + v
La variable acumulador se incrementa v (siendo v un valor variable) y se escribe
Variable_acumulador = Variable_acumulador – v
Las variables nombre, edad, peso y suiche se denominan centinelas y se inicializan antes de
cada ciclo y se vuelven a leer antes de cerrar el ciclo. Cuando toma el valor que el programador
ha determinado, se rompe el control del ciclo. En el último caso, se inicializa el suiche como
verdadero y, para romper el control, se cambia a falso.
1.6 Comentarios
Con el fin de hacer comentarios de las instrucciones o líneas de comando se utiliza la siguiente
instrucción que no es ejecutable, solo sirve para documentar el programa:
#comentario
6
Los datos que entrarán corresponderá a los insumos para que sea funcional la solución. En
efecto, haga una lista de los insumos debajo de la figura que indica entrada de datos. Las
variables que determine como entrada corresponden a las que el usuario tendrá que ingresar
input(): es una función utilizada para ingresar y asignar datos por teclado a una variable.
Sintaxis:
nombre_variable=input(“mensaje”)
variable_entero=int(input()) #ingresar número entero
variable_real=float(input()) # ingresar número real
variable_caracter=char(input()) #ingresar carácter
variable_cadena=input() #recibe cadena
variable_cadena=bool(input()) #recibe un valor lógico
Se recomienda que cada vez que en Python se use este comando, lo acompañe de un mensaje,
pues de tal manera el usuario sabrá lo que tiene que ingresar. El mensaje tendrá que ser tan
claro que el usuario no debería dar pie a confusiones. Piense que lo que se está haciendo es
para un usuario y no para usted.
print(): en función empleada para sacar resultados por pantalla. Para tal fin, si es para mostrar
mensajes se ponen paréntesis y dentro de ellos se escribe el mensaje entre comillas dobles.
print (Lista de variables)
print (“MENSAJE”)
print (“MENSAJE”, NombreVariable)
print (NombreVariable ,“MENSAJE”)
EJERCICIO 1
1. Escriba cada una de las siguientes expresiones utilizando los operadores de Python
a)
b)
7
Bohm y Jacopini1 demostraron que todos los programas de computación podían ser escritos bajo
tres estructuras básicas de control:
● Estructura secuencial
● Estructura selectiva
● Estructura repetitiva
Dichas estructuras se utilizan para diseñar algoritmos y para codificar programas.
Algoritmo operaciones
1
Bohm, C y Jacopini, G. “Flow Diagrams, Turing Machines, and Languages with Only Two Formation
Rules”, Communications of the ACM, Vol.9,No.5, mayo 1966, pp.336-371.
8
Var
A,B,C: entero
INICIO
A=5
B=A+4
C=B-6
B=B*3
C=B-12
A=C+B-A
Muestre(“A=”,A,“B=”,B,“C=”,C)
FIN
Codificación en Python:
Ejemplo 2.2: diseñe un algoritmo y codifique en Python una solución que muestre el valor de la
expresión la (4-3x)(6+5y). Clasifique las variables de entrada de salida y de proceso.
x: variables numérica real de entrada
y: variables numérica real de entrada
c: variables numérica real de proceso y de salida a la vez, donde c=(4-3*x)*(6+5*y)
Solución algorítmica:
Algoritmo expresion
Var
x,y,c:real
INICIO
Muestre(“Entre el valor de x: ”)
Lea(x)
Muestre(“Entre el valor de y: ”)
Lea(y)
c=(4-3*x)*(6+5*y)
Muestre(“El valor de c es: ”,c)
FIN
Codificación en Python:
def main():
….x=int(input(“Entre el valor de x”))
….y=int(input(“Entre el valor de y”))
….c=(4-3*x)*(6+5*y)
….print(“El valor de c es:”,c)
main()
9
Ejemplo 2.3: Diseñe un algoritmo y haga su código en Python, que lea 2 valores, encuentre la
suma de ellos y la imprima.
Solución algorítmica:
Algoritmo suma
Var
v1, v2, suma : real
INICIO
Muestre (‘Ingrese el primer valor’)
Lea v1
Muestre (‘Ingrese el segundo valor’)
Lea v2
suma=v1+v2
Muestre (‘La suma de los dos valores es:..’,suma)
FIN
Codificación en Python:
# v1 --> Primer valor entero ingresado por teclado.
# v2 --> Segundo valor entero ingresado por teclado.
def main():
….v1=int(input("Ingrese el primer valor...:")) #Esta es una forma de leer valores
….print("Ingrese el segundo valor...:",end="")
….v2= int(input()) #Esta es otra forma de leer valores
….print ('El resultado de la suma es ..:',v1+v2)
main()
Ejemplo 2.4: Diseñe un algoritmo y desarrolle su código en Python que lea para una compra,
cantidad y precio unitario de un producto, calcule el total a pagar y lo muestre.
Solución Algorítmica
Algoritmo compra
Var cantidad: entero
vu, tc: real
INICIO
Muestre(‘Ingrese la Cantidad de Producto’)
Lea (cantidad)
Muestre(‘Ingrese el precio unitario del producto’)
Lea (vu)
tc=cantidad*vu
Muestre(‘El valor de la compra es….’,tc)
FIN
Codificación en Python:
# cantidad --> Cantidad del producto
# vu --> Valor unitario del producto
# tc --> Total de la compra
def main():
….cantidad=int(input("Ingrese la cantidad de producto...:")) #Lectura de un entero
….vu=float(input("Ingrese el valor unitario del producto...:")) #Lectura de un real
….tc=cantidad*vu
….print ('El valor de la compra es ..:',tc)
main()
10
TALLER 2.1
A) Desarrolle la solución del ejemplo 3 en Python.
Para un movimiento uniformemente acelerado (de aceleración constante), sea VI: velocidad
inicial, VF: velocidad final, T: tiempo, A:aceleración y S: distancia. Entonces, sus fórmulas
cinemáticas son:
A=(VF-VI)/T (1)
VF2=VI2+2AS (2)
2
S=VI.T+0.5AT (3)
Resuelva los problemas del 6 al 9 utilizando la(s) correspondiente(s) fórmula(s) cinemática(s):
6. Calcule la velocidad V de un móvil que recorre una distancia S en un tiempo T. Los valores
T y S son ingresados por el usuario.
7. Calcule la velocidad VF con la que llega un móvil que parte con una velocidad inicial VI y
con una aceleración constante A recorre una distancia S. Los valores VI, A, S son ingresados
por el usuario.
8. Calcule la aceleración constante A de un móvil, dado que parte con una velocidad inicial
VI y llega con una velocidad final VF después de recorrer una distancia S en un tiempo T. Los
valores VI, VF, T, S son ingresados por el usuario.
9. Calcule la distancia recorrida por un móvil que se desplaza durante un tiempo T,
partiendo con una velocidad inicial VI hasta alcanzar una velocidad final VF.
10. Determine el valor de a y b dado que a=x2-3x+5 y b= 2t2-4x-11
11. Determine el valor de c dado que c=a-b y se sabe que a=x2-3x+5 y b= 7t2-3t+15
Sea C el capital inicial y Q el capital alcanzado en un tiempo n a un interés I. Entonces
Q=C(1+n*I/100) capitalización al cabo de n tiempo a un interés simple I.
Q=C(1+I/100)n capitalización al cabo de n tiempo a un interés compuesto I
simple I%.
14. Calcule el tiempo en que ha de imponerse un capital C al I% para que se convierta en
un capital Q.
15. Halle el tiempo en que se triplica un capital C, puesto a un interés I%.
16. Halle el interés producido durante n años, por un capital de C, al I%.
17. Solucione una ecuación de primer grado con una incógnita.
18. Un inversionista tiene un capital X y lo presta durante 20 meses a una tasa de interés de
Z% mensual. ¿cuál es su capital al recibir el dinero?
19. ¿Cuál es el costo después de descuento y cuanto el descuento de las entradas para 15
personas que van a cine?, si se conoce el precio de la boleta y se tiene en cuenta que recibirán
un 25% de descuento por ser más de 10.
20. Un estudiante presenta 3 trabajos, con los siguientes porcentajes 50%, 30% y 20%,
conociendo las notas de los 3 trabajos. Se pide calcular el promedio.
21. Un empleado trabaja 120 horas ordinarias en un mes y 20 horas extras diurnas. La hora
normal es n pesos y la extra tiene un 25% de incremento, ¿cuánto recibe el empleado y cuánto
le descuentan, si aporta el 8% de su salario para seguridad y social y el 5% para una
cooperativa?
22. Un colegio tiene matriculados para los n estudiantes distribuidos en: preescolar, básica y
media. Se pide calcular el porcentaje por cada nivel, conocida la cantidad de estudiantes por
nivel.
23. Se quiere saber cuánto pagar por un pasaje aéreo, dado que tiene un descuento del 18%
y se aplica el IVA (16%) antes del descuento del tiquete.
24. Un viajero requiere 2.800 dólares y desea saber ¿cuántos pesos colombianos necesita?,
si debe pagar una comisión del 2%, y el valor actual del dólar es $2.925.
Es importante saber que la condición siempre llevará una expresión relacional (una comparación)
o una expresión lógica, de tal manera producirá un resultado lógico. La variable utilizada en la
condición se denomina variable de control.
en pseudocódigo que, comienza con “if” y al terminar la última instrucción del conjunto de
acciones debe ponerse con indentación.
Tenga en cuenta dejar siempre la sangría de cada línea de código del condicional. Genere
errores.
Ejemplo 2.5: haga un algoritmo que determine si un número ingresado por el usuario es par o
impar. Se sabe que un número es par si al dividir un número por 2 su residuo es 0. En efecto, se
toma el número y se opera con el módulo (que es no negativo) y se iguala a 0 (numero mod 2=0).
Algoritmo ParImpar
Var
numero: entero
INICIO
Muestre(“Entre un numero entero”)
Lea(numero)
Si numero Mod 2=0 Entonces
Muestre(numero, “ es par”)
Sino
Muestre(numero, “ es impar”)
finSi
FIN
Código en Python:
def main():
….numero=int(input(“Entre un número entero”))
….if numero mod 2=0
……..print numero, “es positivo”
else:
……..print numero, “es negativo”
main()
Ejemplo 2.6: Elaborar un programa que lee 2 valores enteros, si el primero es mayor que el
segundo los suma, de lo contrario los multiplique.
Solución algorítmica
13
Algoritmo SumaProd
Var
n1, n2: entero
INICIO
Muestre(‘ Ingrese un valor entero…’)
Lea (n1)
Muestre(‘ Ingrese otro valor entero…’)
Lea (n2)
Si n1>n2 entonces
Muestre(‘La suma es..:’,n1+n2)
Sino
Muestre(‘El producto es..:n1*n2)
Finsi
FIN
Codificación en Python:
def main():
n1=int(input("Ingrese el primer valor...:"))
n2=int(input("Ingrese el primer valor...:"))
if n1>n2:
print('La suma es ...:',n1+n2)
else:
print('El producto es ...:',n1*n2)
main()
Muchas veces los algoritmos o programas tienen bifurcaciones en los condicionales, que
terminan, en algunos casos, teniendo la siguiente forma:
Ejemplo 2.7: Diseñe un algoritmo que lee dos valores enteros, si el primero es mayor que el
segundo los suma; si el segundo es mayor que el primero los eleva al cuadrado y los suma, de
lo contrario los multiplica
Solución Algorítmica:
14
Algoritmo Comparar
Var
n1, n2: entero
INICIO
Muestre(‘ Ingrese un valor entero…’)
Lea (n1)
Muestre(‘ Ingrese otro valor entero…’)
Lea (n2)
Si n1>n2 entonces
Muestre(‘El resultado es..:’,n1+n2)
Sino
Si n2>n1 entonces
Muestre(‘El resultado es..:n1*n1+ n2*n2)
Sino
Muestre(‘El resultado es..:n1*n2)
Finsi
FIN
Codificación en Python:
def main():
n1=int(input("Ingrese el primer valor...:"))
n2=int(input("Ingrese el primer valor...:"))
if n1>n2:
print('La suma es ...:',n1+n2)
else:
if n2>n1:
print('El producto es ...:',n1*n1+n2*n2)
else:
print('El resultado es ...:',n1*n2)
main()
En un mismo bloque pueden tenerse varias instrucciones, pero con la misma sangría o
indentación. No se permite que en un mismo bloque haya instrucciones con distintos sangrados.
Dependiendo del orden de la indentación, el mensaje de error al intentar ejecutar el programa
será diferente:
● En el primer caso, la primera instrucción determina el sangrado de ese bloque, por lo que
al encontrar la segunda instrucción, con un sangrado mayor, se produce el error
"unexpected indent" (sangrado inesperado).
if condición:
acción 1
acción 2
else:
acciones
● En el tercer caso, como la segunda instrucción no tiene sangrado, Python entiende que
la bifurcación, así:
if condición:
acción 1
acción 2
else:
acciones
Es decir, else está sin su if correspondiente, produciéndose el error "invalid syntax" (sintaxis no
válida).
Ejemplo 2.8: Haga la prueba de escritorio al siguiente algoritmo mostrando, Sexo, Edad y
plataforma.
Algoritmo prueba
Var
Edad: entero
Sexo: carácter
INICIO
Muestre(“Ingrese sexo: 1. Hombre 2. Mujer”)
Lea(sexo)
Muestre(“Ingrese Edad”)
Lea(edad)
Si edad>=18 y edad <50 Entonces
Si sexo=2 Entonces
Muestre(“Vaya a Plataforma 1.”)
Muestre(“Deténgase allí!”)
Sino
Si (sexo=1) Entonces
Muestre(“Vaya a Plataforma 2.”)
Muestre(“No se detenga!”)
FinSi
FinSI
Sino
Muestre(“Vaya a plataforma 3.”)
Muestre(“Tenga mucho cuidado!”)
FInSI
FIN
Codificación en Python
def main():
….sexo=char(input (“Ingrese sexo: 1. Hombre 2. Mujer”))
….edad=int(input(“Ingrese Edad”))
….if edad>=18 and edad <50:
……..if sexo==2:
…………print (“Vaya a Plataforma 1.”)
…………print (“Deténgase allí!”)
16
……..else:
…………if sexo==1:
…………….print (“Vaya a Plataforma 2.”)
…………….print (“No se detenga!”)
…………….else:
………………..print (“Vaya a plataforma 3.”)
………………..print (“Tenga mucho cuidado!”)
main()
Sintaxis en Python
if expresión 1:
acción 1
elif expresión 2:
acción 2
elif expresiones 3
acción 3
.
.
.
Else:
acción n
Figura 2.7: Condición múltiple en Python
Ejemplo 2.9: Diseñe un algoritmo que imprima las fechas (día y mes) entre las que transcurre
cada una de las estaciones del año en el hemisferio norte. Para tal fin, cree un menú para que
el usuario seleccione la estación deseada. El algoritmo debe dar la opción para que el usuario
pueda ver reiterativamente todas las estaciones y salirse cuando él lo quiera.
Algoritmo Estaciones
Var
opcion:caracter
INICIO
Muestre("DIGITE LA OPCION DESEADA: 1. PRIMAVERA 2. VERANO 3. OTONO 4.
INVIERNO 5. SALIR=>")
Lea(opcion)
Mientras no(opcion="1" o opcion="2" o opcion="3" o opcion="4" o opcion="5")
17
def main():
opcion=input("DIGITE LA OPCION DESEADA: 1. PRIMAVERA 2. VERANO 3. OTONO 4.
INVIERNO 5. SALIR=>")
while not(opcion=="1" or opcion=="2" or opcion=="3" or opcion=="4" or opcion=="5"):
opcion=input("DIGITE LA OPCION DESEADA: 1. PRIMAVERA 2. VERANO 3. OTONO 4.
INVIERNO 5. SALIR=>")
if opcion=="1":
print("22 de marzo hasta junio 21")
elif opcion=="2":
print("22 de junio hasta septiembre 21")
elif opcion=="3":
print("22 de septiembre hasta diciembre 21")
elif opcion=="4":
print("22 de diciembre hasta marzo 21")
else:
print("adios-adios")
main()
TALLER 2.2
2. Ingrese el nombre, el sexo (masculino o femenino), la edad y el estado civil (soltero, casado,
unión libre, viudo separado) y mostrar el nombre, sexo, su estado civil y si es menor o mayor
de edad.
4. Genere tres números enteros y determine si un número de ellos impar e igual a la suma de
los otros dos, con sus respectivos mensajes.
5. Determine el rango en que está un número ingresado por el usuario, según los límites inferior
y superior de los rangos de la tabla 1.
Rango
18
Entre 0 y 50
Entre 51 y 100
Entre 101 y 150
Mayor que150
Tabla 1
6. Resuelva completamente una ecuación cuadrática. Dicho programa debe mostrar el valor
(real o imaginario) con su respectivo mensaje; ponga además un mensaje para solicitar el
valor de los coeficientes.
8. Muestre el mensaje y el valor del premio que se gana un jugador según el puntaje alcanzado
(entre 0 y 100 puntos) en una prueba, teniendo en cuenta la tabla 3:
Puntaje Mensaje Premio ($)
Menos de 20 Deficiente 0
Entre 20 y 45 Insuficiente 1000
Entre 46 y 70 Aceptable 10000
Entre 71 y 90 Sobresaliente 20000
Más de 90 Excelente 50000
Tabla 3
9. Se sabe que el trabajador tiene un salario básico a la semana el cual está basado en el número
de horas ordinarias trabajadas y el valor fijo por hora ordinaria de $10500, y que su pago total
a la semana tiene bonificaciones y descuentos (deducciones). Las bonificaciones se dan en
la tabla 4:
Bonificaciones
Opción Horas semanales Porcentaje adicional
1 Horas extras diurnas 25%
2 Horas nocturnas ordinarias 35%
Tabla 4
La empresa tiene como política asignar solamente horas extras diurnas cuando sea necesario y
19
17. Se requiere saber cuánto se debe pagar un cliente por una compra de una cantidad
desconocida de artículos, conociendo la cantidad y precio unitario, además que si el valor total
es superior a $ 100, tiene un descuento del 10%, de lo contrario el descuento es del 6%.
18. Se requiere verificar si un joven es apto para conformar un equipo de basquetbol; teniendo
en cuenta que la edad debe estar entre 18 y 25 años, la estatura debe ser superior a 1,90
mts. y el peso entre 80 y 100 kilos. La edad, estatura y peso son datos conocidos; debe
mostrar un mensaje de apto o no apto.
19. Un empleado gana un salario básico conocido y comisiones por cantidad de ventas, así:
de 1 a 5 el 7%, de 6 a 10 el 9% y de 11 a 15 el 12%, si el número de ventas es superior, su
comisión será del 15%; el porcentaje se aplica al total del monto las ventas, es decir, si por
ejemplo las ventas son 20, por valor de 30 millones; se le aplica el 15% al valor de todas la
ventas. El número y total de ventas, son valores conocidos y se requiere calcular el salario
teniendo en cuenta que debe aportar el 8% para la seguridad social y si el salario resultante
es mayor a 4 millones, se le descuenta el 1% de retención en la fuente.
20. Elabore un algoritmo que lea el nombre y la edad de una persona y si la edad es mayor
o igual a 18 años, muestre el nombre y el mensaje: usted es mayor de edad, de lo contrario,
muestre el nombre y el mensaje: le falta para la mayoría de edad.
21. Elabore un programa que leídos los valores de 3 tres segmentos que forman un triángulo,
averigüe qué tipo de triángulo se puede formar con ellos.
23. Una tienda vende artículos, elabore un algoritmo que pida al usuario el nombre del artículo,
su descripción, la cantidad requerida y el precio unitario. Si el usuario necesita entre 100 y 500
unidades, aplique un descuento del 10%, si requiere más de 500 unidades, el descuento sería
20
del 12%, si el usuario requiere menos de 100 unidades, el descuento es del 6%. También debe
adicionar el IVA al precio total. Se requiere imprimir el nombre, la descripción, el precio unitario
y total antes de IVA y el precio total con IVA incluido.
25. Dada la duración en minutos de una llamada, calcular el costo. Considerando que hasta tres
minutos el costo es $200, por encima de tres minutos es $200 más el 12%, por cada minuto
adicional a los tres primeros.
26. Elabore un programa que lea 4 valores que representan segmentos de recta y averigüe: si
con ello se forma un cuadrado, un rectángulo u otro cuadrilátero y lo haga saber con un mensaje.
27. Elabore un algoritmo que lea de un tiquete aéreo, el valor y el destino (Nacional o
Internacional). Si el destino es nacional, el descuento será: del 5%, de lo contrario, el descuento
será del 10%; imprima toda la información, teniendo en cuenta el valor antes del descuento y el
valor con descuento.
Esta estructura también conocida como bucle o ciclo; es utilizada cuando una de las actividades
o instrucciones se deben repetir varias veces (repeticiones que deben ser determinadas),
siempre que se cumpla una condición dada.
Dentro de la condición del ciclo se debe utilizar una variable o variables que denominaremos
variables de control. Si dicha condición está bien planteada se obtendrá el rompimiento de
control del ciclo, en caso contrario el ciclo será infinito y, por lo tanto, se ejecutará
indefinidamente, lo cual es un error de ejecución delicado.
Una variable de control debe cumplir con 3 acciones: inicializar antes del ciclo, controlar
mediante la condición del ciclo y actualizar dentro de las acciones del ciclo (siempre antes de
cerrar el ciclo).
● El cuerpo del ciclo. Es el conjunto de instrucciones que deben ser ejecutadas siempre que
se cumple la condición. Acá debe existir una instrucción que inicializa y actualiza la variable
de control (para ciclos diferentes al “para”).
● La salida del ciclo. Es la señal que se pone para producirse la salida en el momento de
terminar la ejecución del cuerpo del ciclo, cuando ya no se cumpla la condición, la cual puede
darse con la palabra Fin del ciclo en el caso de tenerse varias instrucciones dentro del cuerpo
del ciclo.
Es aquel ciclo que realiza el control mediante una variable contador; también se denomina ciclo
contador; por ejemplo, el ciclo mientras, el ciclo repita y el ciclo para. Este último es el ciclo de
tipo contador por excelencia.
Ciclo para. Se le reconoce como un ciclo automático debido a que se ejecuta las veces que el
programador le indique. Utiliza como parámetros un intervalo que dice cuantas veces se realizará
el cuerpo del ciclo. Para tal fin utiliza una variable contador que controlará la secuencia de las
órdenes el cual toma incrementos o decrementos automáticos determinados.
Sintaxis en Python
For control in secuencia:
Instrucciones que se ejecutarán
Figura 2.6: Ciclo for en Python
Ejemplo 2.10: programa en Python que muestra los 10 primeros número enteros NO negativos.
def main():
for i in range(10): #esta función range(10) arranca en 0 y llega hasta 9
print("dato ",i)
main()
Ejemplo 2.11: programa en Python que suma los 10 primeros números enteros positivos
def main():
suma=0 #inicializa el acumulador
for i in range(1,11): #esta función range(1,11) arranca en 1 y llega hasta 10
suma=suma + i
print("suma= ",suma)
main()
Ejemplo 2.12: Diseñe un algoritmo que calcule cuánto se debe pagar por una compra que
contiene N productos, se conoce la cantidad de cada producto y precio unitario, debe mostrar el
total de la compra.
Algoritmo compra
Var
n,c,i:entero
vu,compra:real
INICIO
Muestre('Ingrese la cantidad de productos diferentes comprados..:')
Lea(n)
suma=0
Para i desde 1 hasta n haga
Muestre('Ingrese la cantidad del producto..:')
Lea(c)
Muestre('Ingrese valor unitario del producto..:')
Lea(vu)
suma=suma+c*vu
fin para
Muestre('El total de la compra es..:',compra)
FIN
def main():
….n=int(input("Ingrese la cantidad de productos comprados...:"))
….compra=0
….for i in range(n):
….c=int(input("Ingrese la cantidad de unidades...:"))
….vu=int(input("Ingrese el costo unitario...:"))
….compra=compra+c*vu
23
Son aquellos que usan una bandera o centinela con el fin hacer el rompimiento de control, es
decir, para poder salirse del ciclo. Un tipo de este ciclo es el ciclo mientras y el repita.
Ciclo mientras. Permite realizar varias veces el cuerpo del ciclo, mediante una expresión lógica
llamada condición que permitirá decidir las veces que deberá ejecutarse o cuándo se ejecuta (si
la condición es verdadera y rompe el ciclo cuando ésta sea falsa). Si se utiliza variable contador
esta irá como control del ciclo y tendrá que ser incrementada o disminuida por el programador,
según el caso. Si la variable es centinela, deberá inicializarse antes del ciclo y se vuelve a leer
antes de cerrarse.
Algoritmo compra
Var
n,c,i:entero
vu,compra:real
INICIO
Muestre('Ingrese la cantidad de productos diferentes comprados..:')
Lea(n)
suma=0
i=0
Mientras i<n haga
Muestre('Ingrese la cantidad del producto..:')
lea(c)
Muestre('Ingrese valor unitario del producto..:')
Lea(vu)
suma=suma+c*vu
i=i+1
Fin mientras
Muestre('El total de la compra es..:',compra)
FIN
def main():
n=int(input("Ingrese la cantidad de productos comprados...:"))
compra=0
i=0
while i<n:
c=int(input("Ingrese la cantidad de unidades...:"))
vu=int(input("Ingrese el costo unitario...:"))
compra=compra+c*vu
i=i+1
print('El valor total de la compra es..:',compra)
main()
Ejemplo 2.14: programa en Python que muestra los 10 primeros número enteros NO negativos.
def main():
i=0
while i<=9:
i=i+1
print("dato ",i)
main()
Si quiere mostrar horizontalmente los datos del while en vez del print escriba la instrucción
Tal como los condicionales, los ciclos también se anidan. En tal caso, el ciclo más interno se
procesa más rápidamente que los demás y, por lo tanto, para ejecutar el ciclo externo espera
que rompa el control el ciclo interno y luego continúa con la iteración correspondiente del ciclo
externo. En efecto,
For control in secuencia:
For control in secuencia:
For control in secuencia:
.
.
.
Instrucciones que se ejecutarán
Figura 2.9: Ciclo for anidado en Python
while condición:
while condición:
while condición:
.
.
.
Instrucciones que se ejecutarán
Ejemplo 2.16: Haga un algoritmo que muestre la tablas de multiplicar de un número ingresado
por el usuario
def main():
n=int(input(“ENTRE EL NUMERO PARA LA TABLA DE MULTIPLICAR”))
multiplicando =1
for multiplicando in range(1,n+1):
for multiplicador in range(1,n+1):
producto= Multiplicando* Multiplicador
print (Multiplicando, “X”, Multiplicador, “= ”, Producto)
main()
TALLER 2.3
5. Un centro asistencial para lisiados recibe varios pacientes por semana, con el fin de que
les hagan alguna prótesis. Teniendo en cuenta que el estado laboral de los asistentes
puede ser: empleado, desempleado o pensionado, diseñe un algoritmo que determine:
● El porcentaje de hombres empleados que allí han asistido en una semana respecto al
total de hombres asistentes.
● La edad promedio de mujeres mayores de edad que sean desempleadas.
● ¿Qué porcentaje de mujeres mayores de edad, pero menores de 25 años y de
pensionadas, respecto al total de asistentes, han ido a dicho centro?.
● ¿El asistente de más edad es hombre o mujer?, ¿cuál es su estado laboral?
● El porcentaje de hombres empleados mayores de 30 años, respecto al total de
asistentes.
● El porcentaje de mujeres entre 26 y 38 años, respecto al total de mujeres, que son
pensionadas.
6. Los Hospitales reciben 2 tipos de pacientes a saber: 1) Remitidos, son afiliados de alguna
EPS; 2) Independientes, van por su cuenta.
Para los pacientes remitidos, la cuota moderadora depende de su salario así:
Hasta $1’400.000 paga $3.200
De $1’401.000 a $2’800.000, paga $5.600
De $2’800.001 a $4’200.000, paga 11.000 y de $4’200.000, paga 25.000
Para los pacientes independientes, la cuota depende del nivel del SISBEN así:
Niveles de 1 a 3, pagan $2.500
Niveles 4 y 5, pagan $5.000 y del 5 en adelante, pagan $ 8.000
Durante el día se atienden N pacientes. Calcule el total recaudado y el promedio del recaudo,si
se sabe de cada paciente, a qué tipo pertenece, su salario y nivel de SISBEN.
8. Una empresa de servicios estadísticos, es contratada para calcular el flujo vehicular por un
puente; ellos capturan de cada vehículo, el tipo y la velocidad, los tipos son:
1. Liviano 2. Utilitario 3. Público 4. Carga
27
Se tienen los datos de N vehículos y se pide la cantidad y promedio de velocidad, de cada tipo.
9. Una empresa tiene N empleados y desea calcular su nómina. De cada empleado se ingresa
el código, salario base, las horas extras y los descuentos; el valor de la hora extra tiene un
recargo del 20% sobre la hora normal; para saber el valor de la hora ordinaria, se divide el salario
base entre 160. Calcule el valor total a pagar por empleado y muestre código y total a pagar;
también se debe calcular el total de la nómina, de las horas extras y los descuentos realizados e
imprimirlos.
10. Lea N números enteros. Se pide encontrar el promedio de los positivos y el porcentaje de los
negativos, respecto al total de números diferentes de 0.
12. Una Empresa de transporte, tiene clasificados sus transportes en 1:Vip, 2:Turista y
3:Económico, los viajes en Vip con valor superior a 1 millones tiene un descuento del 5%, de lo
contrario del 3% Los viajes en Turista con valor superior a 700 mil, tienen un descuento del 4%,
de lo contrario del 2% y los viajes en Económico con valor superior a 500 mil, tienen un descuento
del 3%, de lo contrario el 2%. Se requiere calcular el valor de los viajes en un periodo de tiempo
por tipo de transporte y global, también el valor promedio de los viajes vendidos, por tipo de
transporte y global