Está en la página 1de 15

Contenido programático

Ciclo 1: Fundamentos de programación con Python

AÑO 2022
Ciclo 1. Fundamentos de programación con
Python

Justificación
El primer ciclo de formación de fundamentos de programación con Python presenta a los
estudiantes estrategias para resolver problemas de la vida real aplicando lenguajes de
programación estructurados como Python, mediante la aplicación de buenas prácticas de
programación que ayudan a desarrollar el pensamiento lógico. Se tiene como propósito
utilizar estrategias de pensamiento computacional como el paradigma “dividir y conquistar”
para dividir problemas grandes en módulos o procedimientos, utilizando adecuadamente
las variables simples, funciones, arreglos, iteraciones, recursión, el procesamiento básico
de archivos y estructuras de datos sencillas.
En este curso, los estudiantes resolverán diferentes retos de programación en Python
adquiriendo competencias en el área de programación.

Objetivo general
Brindar a los estudiantes las herramientas necesarias para iniciar su formación como
programadores Full Stack que les permitan afrontar los retos de la Cuarta Revolución
Industrial.

Competencias por desarrollar


1. Analiza y explica el comportamiento de programas.
2. Utiliza mecanismos de entrada y salida de datos en la construcción de un programa.
3. Comprende y utiliza los principios básicos de programación tales como variables,
secuencia, estructuras de selección e iteración en la construcción de programas para
dar solución a problemas algorítmicos.
4. Descompone un problema de programación de manera modular de tal manera que
se pueda desacoplar y reutilizar el software.
Resultados esperados de aprendizaje
1.1 Realizar seguimiento a una sección de código.
1.2 Identificar errores lógicos.
1.3 Realizar evaluación de expresiones según la precedencia de operadores.
1.4 Determinar la salida de un algoritmo para que una entrada dada encuentre
errores lógicos.
2.1 Explicar los principales mecanismos de entrada y salida.
2.2 Crear programas que utilicen la entrada y salida estándar de datos.
3.1 Construir programas que utilicen los diferentes tipos de datos primitivos.
3.2 Utilizar las estructuras apropiadas de selección e iteración para una tarea de
programación dada.
4.1 Descomponer un programa en funciones.
4.2 Identificar las entradas que recibe una función para solucionar un problema
dado.
4.3 Identificar el tipo de dato de retorno de una función para un problema
específico.
4.4 Crear programas utilizando librerías y funcionalidades de Python.

Contenido programático
Módulos:
1. Introducción a la computación
2. Introducción a los algoritmos
3. Manejo de estructuras de control de flujo
4. Manejo de funciones
5. Persistencia de datos en Python

Módulo Sesión Tema


1 Introducción Lenguaje de programación Python
2 Introducción al pensamiento computacional
Módulo 1:
3 Principios de pensamiento computacional
Introducción a
4 Realización de operaciones aritméticas en programación
la computación
5 Sesión Preparación Reto 1
6 Teoría de los Lenguajes de programación 1
Módulo 2: 7 Teoría de los lenguajes de programación 2
Introducción a 8 Metodología para la solución de algoritmos
los algoritmos 9 Implementación de estructuras de control de secuencia
10 Sesión Preparación Reto 2
11 Uso de Listas y Tuplas
Módulo 3: 12 Implementación de estructuras de repetición (while)
Manejo de
13 Implementación de estructuras de repetición (for)
estructuras de
control de flujo 14 Uso de String
15 Sesión Preparación Reto 3
16 Uso de Funciones en Python
Módulo 4: 17 Uso de Diccionarios
Manejo de 18 Matrices
funciones 19 Uso de Numpy
20 Sesión Preparación Reto 4
21 Recursión en Python
Módulo 5: 22 Manejo de Excepciones en Python
Persistencia de
23 Persistencia de datos con Python 1
datos en
Python 24 Persistencia de datos con Python 2
25 Sesión Preparación Reto 5

Retos Ciclo 1
Reto No.1 Calculo del Salario
El objetivo de este reto es evaluar el uso de operaciones matemática en Python. El estudiante inicia
conociendo las herramientas para el desarrollo de software, operaciones de asignación de variables
y computación de operaciones aritméticas como suma, resta, multiplicación y división.

Título: Calculo del Salario


Un empleado de una compañía tiene dudas sobre si los pagos que le realiza la empresa de manera
mensual son correctos. Con el propósito de aclarar sus inquietudes y verificar si los descuentos
realizados son acordes a lo exigido por la ley, decide construir un programa en Python que le permita
verificar el valor que debería ser pagado. Después de consultar sobre la normatividad colombiana y
revisar con detalle su contrato laboral nota que debe tener en cuenta los siguientes aspectos:

§ El valor de una hora de trabajo normal se obtiene dividiendo el salario base sobre 192. Este
valor corresponde a la jornada laboral establecida en el contrato (48 horas a la semana y 4
semanas al mes).
§ Las horas extras se liquidan con un recargo del 25% sobre el valor de una hora normal
§ Debido a buen desempeño de un empleado la empresa ocasionalmente otorga
bonificaciones de 0.05% del salario base
§ El salario total antes de descuentos se calcula como la suma del salario base, más el valor
de las horas extras, más las bonificaciones (si las hay)
§ Se descontará 3.5% del salario total antes de descuentos para el plan obligatorio de salud
§ Se descontará 4% del salario total antes de descuentos para el aporte a pensión
§ Se descontará 1% del salario total antes de descuentos para caja de compensación.

Luego de considerar toda esta información, el empleado decide construir un programa que permita
a cualquier empleado de la empresa verificar si los pagos son correctos.

Entrada El programa recibirá 3 parámetros:


§ El salario base del empleado
§ La cantidad de horas extras se representa a través de un número
entero positivo. En caso de no de realizar horas extras durante el
mes, se ingresará el valor 0.
§ Si hubo bonificaciones se ingresará el valor 1, de lo contrario el
valor 0
Salida El programa debe imprimir el valor a pagar al empleado luego de
realizar los descuentos de ley. El resultado debe imprimirse con un
número decimal

Instrucciones para la calificación automática

Antes de enviar la solución del reto, por favor tenga en cuenta los siguientes aspectos:

§ Cada caso de prueba se especifica en una única línea.


§ Cada línea debe contener los valores de los parámetros separados por un espacio.
§ Es importante no utilizar ningún mensaje a la hora de capturar las entradas, es decir, al
utilizar la función input() no agregue ningún texto a la función
§ Como ejemplo considere el caso de prueba 1000000 0 0 el cual corresponde a un
trabajador con un salario base de 1000000 con 0 horas extras y sin bonificaciones
§ El resultado debe imprimirse con un número decimal
§ Tenga en cuenta que únicamente debe utilizar print()para imprimir el resultado final.
Evite imprimir otros valores durante la ejecución del programa para no tener problemas con
la calificación automática

Casos de prueba (visibles)


Entradas de 1000000 0 0
ejemplo 2355255 2 1
Salida de ejemplo 915000.0
2290871.9

Reto No.2 Calculo de multas


El objetivo de este reto es evaluar el uso de operaciones de comparación numérica en Python. El
estudiante inicia conociendo los conceptos de If, else, elif, operaciones de asignación de variables y
de comparación (<, > ==, <=, >=).

Título: Calculo del Multas.


Debido a la alta accidentalidad presentada en el último año en las carreteras del territorio nacional,
el Gobierno Colombiano ha decidido implementar controles que permitan sancionara a los
conductores que no respeten los límites de velocidad establecidos por los organismos de control.
Con este fin, el Ministerio de Transporte ha decidido implementar radares de tramo en las carreteras
con mayores índices de accidentalidad en el país.

Los radares de tramo funcionan colocando dos cámaras en dos puntos alejados de una carretera
con el fin de comprobar cuánto tiempo tarda un conductor recorrer dicho tramo. Estos radares no
miden la velocidad de paso, sino el tiempo de paso representado como la velocidad media de un
conductor en un trayecto con una longitud determinada.

La interpretación del funcionamiento de los radares es simple: si colocamos las cámaras separadas
10 Km en un tramo cuya velocidad máxima es de 110 Km/h y un conductor tarda 5 minutos en ser
visto por la segunda cámara, sabremos que su velocidad media ha sido de 120 Km/h, y por tanto,
en algún sitio ha superado la velocidad permitida.

Usted hace parte del equipo de desarrollo encargado de construir el software que procesará los
datos registrados por las cámaras. Su misión es crear un programa en Python que permita saber si
un conductor debe ser multado o no.

Entrada El programa recibirá 3 parámetros:


§ La distancia en metros que separa dos cámaras
§ La velocidad máxima permitida en ese tramo en (Km/h)
§ El tiempo en segundos que tarda el conductor en recorrer
el trayecto
Salida El programa imprimirá una línea indicando si el conductor debe
ser multado o no. Se debe considerar lo siguiente:
§ Imprimirá “OK” si el conductor no superó la velocidad
máxima.
§ Imprimirá “MULTA” si se superó la velocidad máxima en
menos de un 20% de la velocidad permitida
§ Imprimirá “CURSO SENSIBILIZACION” si la velocidad
fue superada en un 20% o más de la velocidad permitida.
En este caso además de la multa deberá realizar un curso
de sensibilización.
§ Debido a que los sistemas pueden fallar y registrar valores
errados (por ejemplo, indicando que el tiempo que ha
tardado el conductor es negativo). En esos casos, se deberá
imprimir “ERROR”

Instrucciones para la calificación automática

Antes de enviar la solución del reto, por favor tenga en cuenta los siguientes aspectos:

§ Cada caso de prueba se especifica en una única línea.


§ Cada línea debe contener los valores de los parámetros separados por un espacio.
§ Es importante no utilizar ningún mensaje a la hora de capturar las entradas, es decir,
al utilizar la función input()no agregue ningún texto para capturar los datos
§ Como ejemplo considere el caso de prueba 9165 110 300, el cual corresponde a
la medición entre dos cámaras separadas por 9165 metros; una velocidad máxima
permitida de 110 (Km/h) y un conductor que tarda 300 segundos en recorrer el
trayecto.
§ Los resultados deben imprimirse siempre en mayúscula sostenida

Casos de prueba (visibles)


Entradas de 9165 110 300
9165 110 299
ejemplo 1000 -50 -100
12000 100 359

Salida de ejemplo OK
MULTA
ERROR
CURSO SENSIBILIZACION

Reto No.3 Clasificación de Parámetros


El objetivo de este reto es evaluar el uso de estructuras de bucle como while, for y la combinación
de estructuras de control. Por otro lado, se hace el uso de funciones en Python que es una estructura
útil para la reutilización de código. También se evalúa el uso de estructura de datos como listas y
tuplas.
Título: Clasificación de parámetros.
Una de las fortalezas deportivas que tiene Colombia y que más glorias le ha dado al país es el
ciclismo. En Colombia las dificultades de la topografía han forjado a nuestros escarabajos que
entrenaban en arcaicas bicicletas. La competencia internacional implica competir sobre bicicletas
que día a día tienen más tecnología y menos peso. En las competencias se definen por reglamento
las dimensiones de las bicicletas, las cuales se espera que unifiquen las condiciones de los ciclistas.
La Unión de Ciclismo Internacional (UCI) define un reglamento técnico en el cual se encuentran las
especificaciones de la bicicleta. Sin embargo, la mayoría de diseños suelen establecer algunos
detalles por fuera de las medidas reglamentarias. Las medidas que menos se respetan son:

▪ El eje pedalier debe ubicarse entre 240 y 300 cm del piso.


▪ Las bielas deben medir máximo 180 mm y mínimo 160 mm.
▪ La longitud del sillín debe ser mínimo 240 mm y máximo 275mm
▪ El manilar debe tener máximo 50 cm de ancho.

Por tal razón, le han encomendado a usted la selección de los diseños que cumplen con las
condiciones del reglamento, así que debe construir el software que procesará los datos de las bases
de datos donde reposan los diseños en el sistema. Su misión es crear un programa en Python que
permita mostrarle a los equipos ciclisticos la lista de las bicicletas que cumplen con los
requerimientos y por supuesto el valor de las mismas para su consideración.

Entrada La entrada estará conformada por N + 1 líneas:


§ La primera línea recibirá un número N que equivale a la
cantidad de registros en la base de datos. Cada registro
representa el diseño de cada bicicleta.
§ Cada una de las siguientes N líneas estará formada por 5
números separados por espacios que representan las
diferentes características de una bicicleta. Por ejemplo,
la fila 250 170 258 48 12000 representa una bicicleta
con 250 mm de distancia entre el suelo y el eje pedalier,
170mm miden sus bielas, el sillín mide 258mm y el
manilar mide 48 centímetros y cuesta 12000 dólares.
Salida § El programa imprimirá el precio de cada una de las
bicicletas de la base de datos que cumplen con los
criterios del reglamento
§ Si no existe ningún registro en la base de datos que
cumpla los criterios del reglamento, el programa
imprimirá “NO DISPONIBLE”

Instrucciones para la calificación automática


Antes de enviar la solución del reto, por favor tenga en cuenta los siguientes aspectos:
▪ Cada línea debe contener los valores de los parámetros separados por un espacio.
▪ Es importante no utilizar ningún mensaje a la hora de capturar las entradas, es decir, al
utilizar la función input()no agregue ningún texto para capturar los datos
▪ El resultado “NO DISPONIBLE” siempre debe imprimirse en mayúscula

Casos de prueba (visibles)


Entradas de 5
280 190 275 55 1045
ejemplo 235 165 280 55 820
235 145 250 45 895
225 190 245 50 1050
240 150 265 45 825
6
220 190 255 50 970
255 155 235 55 1045
225 150 265 45 885
285 165 270 45 1195
300 190 230 55 890
265 150 235 55 895
3
270 165 275 40 1195
275 180 230 50 1045
225 180 225 55 1120
Salida de ejemplo NO DISPONIBLE
1195
1195

Reto No.4 Detección de fallas en una línea de


producción
El objetivo de este reto de revisar el uso de diferentes estructuras de datos sencillas, funciones y
estructuras de datos no lineales como los diccionarios. Se busca que el beneficiario utilice los
conceptos y técnicas para solucionar problemas a diferentes áreas.

Título: Detección de fallas en una línea de producción.


En una fabrica de baldosas de cerámica se producen por día una gran cantidad de este producto. Es
importante hacer control de calidad sobre el producto. Este control consiste en revisar si en un lote
de N baldosas hay baldosas defectuosas (puede variar la textura o el color). La solicitud del gerente
de la planta es que se construya un programa en Python que pueda detectar la cantidad de baldosas
defectuosas en una de las líneas de producción de la fabrica.
Para detectar si una baldosa es diferente a otra, un sensor escanea las baldosas y si hay alguna
diferencia, guarda un registro en la memoria. La memoria del sensor esta limitada por la cantidad
de baldosas que se producen en un intervalo de tiempo determinado.

Entrada La entrada estará formada por dos líneas:


§ La primera línea aparecerá dos números 𝑁 y 𝐾 que indican el
número de baldosas a revisar y el número de baldosas que el
sensor es capaz de guardar (1≤ 𝑁 ≤ 1000, 1 ≤ 𝐾 ≤ 1000)
§ La segunda línea contiene 𝑀 números (entre 1 y 100)
separados por espacios que representan las baldosas
revisadas por el sensor
§ Las baldosas se consideran defectuosas si están representados
por el mismo número
Salida El programa imprimirá tres números separados por un espacio.
§ El primero representará el número total de fallas detectadas
§ El segundo representará la cantidad de fallas detectadas por
el sensor considerando que al revisar una baldosa solo es
capaz de guardar las 𝐾 baldosas anteriores
§ El tercero representa la cantidad de baldosas revisadas por el
sensor

Instrucciones para la calificación automática

Antes de enviar la solución del reto, por favor tenga en cuenta los siguientes aspectos:

§ Cada caso de prueba se especifica con dos líneas


§ Cada línea debe contener los valores de los parámetros requeridos separados por un
espacio.
§ Es importante no utilizar ningún mensaje a la hora de capturar las entradas, es decir, al
utilizar la función input()no agregue ningún texto a la función
§ Los resultados se muestran en una única línea. Los dos valores requeridos deben estar
separados por un espacio
§ Tenga en cuenta que únicamente debe utilizar print()para imprimir el resultado final.
Evite imprimir otros valores durante la ejecución del programa para no tener problemas con
la calificación automática

Casos de prueba (visibles)


Entradas de 5
1
1
2 3 1 2
ejemplo 5 2
1 2 3 1 2
5 3
1 2 3 1 2
5 1
1 1 1 1 1
Salida de ejemplo 2 0 5
2 0 5
2 2 5
4 4 5

Reto No.5 Aplicación de gestión de


inventarios
El objetivo de este reto es evaluar los conceptos de todo el ciclo de programación básica. Se busca
que el beneficiario cree un programa, el cual pueda llamar funciones para realizar cálculos
matemáticos, genere persistencia de la información utilizando estructuras de datos como lista o
diccionarios.

Título: Aplicación de gestión de inventarios.


Una tienda vende diferentes productos, usualmente frutas, dulces y algunos tipos de carne. Con el
propósito de mejorar el control sobre las ventas y el inventario de la tienda, el gerente decide
construir una aplicación que le permita almacenar la información de los productos y realizar algunos
cálculos sobre los datos.

En la primera parte del reto se debe construir una base de datos que almacene la información de
los productos disponibles en la tienda. La base de datos será representada mediante un diccionario
de Python llamado productos que tendrá por llave el código del producto y por valor una lista
formada por los atributos: nombre, precio e inventario. La Tabla 1 presenta los productos
disponibles a la fecha.

código nombre precio inventario


1 Manzanas 5000.0 25
2 Limones 2300.0 15
3 Peras 2700.0 33
4 Arandanos 9300.0 5
5 Tomates 2100.0 42
6 Fresas 4100.0 3
7 Helado 4500.0 41
8 Galletas 500.0 8
9 Chocolates 3500.0 80
10 Jamon 15000.0 10
Tabla 1: Productos disponibles en la tienda
Es necesario construir 3 funciones que representen las operaciones de: AGREGAR, ACTUALIZAR y
BORRAR los productos disponibles. Se debe implementar una función independiente por cada una
de las acciones mencionadas. En este caso, para poder realizar las operaciones de ACTUALIZAR o
BORRAR es necesario especificar todos los atributos del producto.

Adicionalmente, se está interesado en analizar los datos de los productos disponibles y conocer: el
nombre del producto con el precio mayor; el nombre del producto con el precio menor; el promedio
de precios de todos los productos y el valor total del inventario a la fecha. Este último se obtiene
multiplicando el precio de cada producto por el inventario disponible y luego sumando todos los
resultados. Por ejemplo, al calcular estos 4 valores para los datos disponibles en la Tabla 1
obtendríamos:

• Producto precio mayor: Jamon


• Producto precio menor: Galletas
• Promedio de precios: 4900.0
• Valor del inventario: 101410.0

Entrada Cada uno de los casos de prueba estará compuesto por dos líneas.
§ La primera línea estará formada por una cadena de texto
que identifica la operación a realizar. En este caso, las
operaciones validas son:
o ACTUALIZAR
o BORRAR
o AGREGAR
§ La segunda línea estará formada por 4 valores (código,
nombre, precio, inventario) que representan
el producto sobre el cual se quiere realizar la operación.
§ En el caso de la operación ACTUALIZAR la segunda
línea debe contener el código y los nuevos valores del
producto
§ En el caso de la operación BORRAR se deben especificar
todos los atributos del producto a eliminar
Salida La salida estará representada por una única línea formada por
cuatro valores:
o Nombre del producto con el precio mayor
o Nombre del producto con el precio menor
o Promedio de precios
o Valor del inventario
§ Estos 4 valores deben imprimirse después de realizar las
operaciones solicitadas en la entrada de datos.
§ Los valores numéricos deben imprimirse con un número
decimal
§ En caso de solicitar ACTUALIZAR o BORRAR un
producto que no existe (es decir, que el código del
producto no se encuentra en la base de datos), se debe
imprimir “ERROR”
§ En caso de solicitar AGREGAR un producto cuyo código
ya existe en la base de datos se debe imprimir “ERROR”

Instrucciones para la calificación automática

Antes de enviar la solución del reto, por favor tenga en cuenta los siguientes aspectos:

§ Cada caso de prueba se especifica con dos líneas


§ Cada línea debe contener los valores de los parámetros requeridos separados por un
espacio.
§ Es importante no utilizar ningún mensaje a la hora de capturar las entradas, es decir,
al utilizar la función input()no agregue ningún texto para capturar los datos
§ Los resultados se muestran en una única línea. Los dos valores requeridos deben estar
separados por un espacio

Casos de prueba (visibles)


Entradas de AGREGAR
11 Melon 70 13
ejemplo BORRAR
10 Jamon 15000 10
ACTUALIZAR
7 Helado 65000 11
BORRAR
14 Maiz 45000 12
Salida de ejemplo Jamon Melon 4460.9 1015010.0
Arandanos Galletas 3777.8 864100.0
Helado Galletas 10950.0 1544600.0
ERROR

Metodología
Clase Magistral: el docente hará inducción a los temas, desarrollará ejemplos y ejercicios
complementarios para los estudiantes sobre los temas expuestos.
Recursos en plataforma: el estudiante complementará la información vista en clase,
orientándola hacia el desarrollo de ejercicios en Python disponibles en la plataforma
Mastertech y material complementario como: videos, documentos y ejercicios resueltos.
Desarrollo de tutorías: el estudiante tendrá a su disposición tutores que resolverán las
dudas en sesiones sincrónicas; estas tutorías se enfocan en el desarrollo de ejemplos y
ejercicios que ayuden a afianzar los conceptos vistos en clases magistrales.
Desarrollo de retos: cada módulo estará acompañado por un reto diseñado para probar las
habilidades adquiridas a lo largo del ciclo.

Actividades de aprendizaje
50 horas de sesiones sincrónicas acompañadas por un formador específico.
120 horas de trabajo independiente de programación entre las cuales podrán solicitar el
acompañamiento de un turo específico.

Evaluación
La evaluación del ciclo 1: Fundamentos de Programación en Python corresponde a la
evaluación de los cinco (5) retos académicos y a la evaluación del curso de inglés. Las
evaluaciones se hacen en la escala de 0.0 al 5.0, donde cero (0.0) es la mínima nota y cinco
(5.0) la máxima nota, la nota mínima aprobatoria del ciclo es de tres (3.0).

La distribución del porcentaje de la nota final se hará de la siguiente manera:

Reto 1: 10%
Reto 2: 10%
Reto 3: 20%
Reto 4: 20%
Reto 5: 20%
*Curso de Inglés: 10%
*Curso de habilidades personales: 10%

Recursos
LMS Mastertech
Es una plataforma LMS (Learning Management System, sistema de gestión de aprendizaje)
que ofrece cursos con contenidos actualizados, construidos por expertos y certificados por
la Universidad Sergio Arboleda en convenio con líderes de cada sector. La plataforma ofrece
cursos 100% virtuales, de manera que el estudiante pueda ir a su ritmo y siempre contará
con el apoyo de toda la comunidad o de expertos (Formadores y tutores) para apoyar el
proceso y asegurar que los estudiantes logren sus objetivos de aprendizaje.

Referencias Bibliográficas

[1]Python Crash Course, 2nd Edition: A Hands-On, Project-Based Introduction to Programming

[2] Matthes, E. (2019). Python crash course: A hands-on, project-based introduction to


programming. no starch press.

[3] Zelle, J. M. (2004). Python programming: an introduction to computer science. Franklin, Beedle
& Associates, Inc.

[4] Python Programming: An Introduction to Computer Science

Recursos Online
https://www.w3schools.com/python/

https://www.programiz.com/python-programming

https://replit.com/~

https://www.tutorialspoint.com/python/index.htm

También podría gustarte