Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PEM EN INFORMATICA
Si el plan no funciona cambia
el plan pero no cambies la
meta.
2
3
HELLO!
😉 Inga. Cindy
Hernández
CindyJeaneth@Hotmail.com
Instructions for use
Proyecto
23 de mayo
Tareas
11 tareas de 2 puntos C/U
Parciales
29 de febrero y 25 de abril
Examen Corto
Actividad Académica
14 de marzo
5
Para aprobar el curso, es requisito indispensable haber asistido
como mínimo al 80% de las clases. No se pueden tener más de
3 ausencias a clase.
La zona mínima para tener derecho a evaluación final es de 35
puntos.
Es obligatorio asistir a evaluación final y se debe obtener como
mínimo el 50% de la nota. De no asistir al final se debe tramitar
un examen extraordinario a un costo de Q330/curso.
Evitar el uso del teléfono celular en clase
No botar basura en las aulas y disponer adecuadamente de la
basura en los recipientes correspondientes.
Cuidar y utilizar responsablemente el equipo del laboratorio de
computación y los bienes del aula.
6
Distribución de Zonas
Exámenes parciales (15 Pts. c/u) 30 Exámenes parciales (10 Pts. c/u) 20
Estructuras de Control
25 ENERO
Números, como pueden ser
3 (entero),
15.57 (de coma flotante) o
Tipos de
7 + 5j (complejos)
Cadenas de texto, como • “Hola Mundo”
variables a ---------------------------------------------------------------------------
-
modo de # y esto es un entero
ejemplo. Una e = 23
de tipo ---------------------------------------------------------------------------
-----
cadena y una # podemos comprobarlo con la función type
de tipo entero: type(c)
type(e)
Operado
Descripción Ejemplo
r
+ Suma r = 3 + 2 # r es 5
- Resta r = 4 - 7 # r es -3
- Negación r = -7 # r es -7
Operadores * Multiplicación r = 2 * 6 # r es 12
r = 2 ** 6 # r es
** Exponente 64
r = 3.5 / 2 # r es
/ División 1.75
División r = 3.5 // 2 # r es
//
entera 1.0
% Módulo r = 7 % 2 # r es 1
Cadenas Las cadenas no son más que texto encerrado
entre comillas simples (‘cadena’) o dobles
(“cadena”). Dentro de las comillas se pueden
añadir caracteres especiales escapándolos con \,
como \n, el carácter de nueva línea, o \t, el de
tabulación.
También es posible encerrar una cadena entre
triples comillas (simples o dobles). De esta forma
podremos escribir el texto en varias líneas, y al
imprimir la cadena, se respetarán los saltos de línea
que introdujimos sin tener que recurrir al carácter
\n, así como las comillas sin tener que escaparlas.
triple = “““primera línea
esto se vera en otra línea”””
Las cadenas también admiten operadores como +
,
que funciona realizando una concatenación de las
cadenas utilizadas como operando y *, en la que se
repite la cadena tantas veces como lo indique el
número utilizado como segundo operando.
a = “uno”
b = “dos”
c = a + b # c es “unodos”
c = a * 3 # c es “unounouno”
Operador Descripción Ejemplo
r = 5 == 3 # r es
== ¿son iguales a y b?
False
r = 5 != 3 # r es
!= ¿son distintos a y b?
True
Operadores < ¿es a menor que b?
r = 5 < 3 # r es
False
relacionales > ¿es a mayor que b?
r = 5 > 3 # r es
True
¿es a menor o igual r = 5 <= 5 # r es
<= que b? True
¿es a mayor o igual r = 5 >= 3 # r es
>= que b? True
Operador Descripción Ejemplo
¿se cumple a y r = True and False #
and b? r es False
¿se cumple a o r = True or False # r
or b? es True
r = not True # r es
not No a False
Operadores Lógicos
Sintaxis
IF
If condición a evaluar:
Operaciones identadas
Si me regalas un
perro, te invitaré a cenar…
if <condición>:
<hacer algo si se da la condición>
else:
<hacer otra cosa si no se da la condición>
Múltiples decisiones
Vamos a ser un poco más exigentes y colocaremos algunas
condiciones, en ese sentido te imaginaras un algoritmo con
muchos if y else… Y si lo haces de esa manera está muy bien
pero como buena práctica de programación…
32
numero = int(input("Escriba un número positivo: "))
if numero < 0:
print("¡Le he dicho que escriba un número positivo!“) 33
print((f"Ha escrito el número{numero}")
-------------------------------------------------
edad = int(input("¿Cuántos años tiene? "))
if edad < 18:
print("Es usted menor de edad")
else:
print("Es usted mayor de edad")
34
Tipos de datos
complejos
Python, posee además de los tipos ya
vistos, 3 tipos más complejos, que
admiten una
colección de datos. Estos tipos son:
Tuplas
Listas
Diccionarios
Tuplas
A las listas se accede igual que a las tuplas, por su número de índice:
print (mi_lista[1]) # Salida: 15
print (mi_lista[1:4]) # Devuelve: [15, 2.8, 'otro dato']
print (mi_lista[-2]) # Salida: otro dato
Las lista NO son inmutables: permiten modificar los datos una vez creados:
mi_lista[2] = 3.8 # el tercer elemento ahora es 3.8
Las listas, a diferencia de las tuplas, permiten agregar nuevos valores:
mi_lista.append('Nuevo Dato')
41
Funciones matemáticas
Python dispone de un modulo matemático que proporciona la mayoría de las
funciones matemáticas habituales. Un modulo es un archivo que contiene una
colección de funciones agrupadas juntas. Antes de poder usar las funciones de
un modulo, tenemos que importarlo:
>>>import math
Para llamar a una de las funciones, tenemos que especificar el nombre del
modulo y el nombre de la función, separados por un punto. A esto se le llama
notación de punto:
decibelio = math.log10 (17.0)
Angulo = 1.5
altura = math.sin(Angulo)
n=5
While
No Yes Programa:
n>0? Salida:
print n n=5 5
while n > 0 : 4
print n 3
n = n -1
n=n–1 2
print ‘Despegue!' 1
print n Despeque!
print 0
‘Despegue' Los bucles (pasos repetidos) tienen variables de iteración
que cambian cada vez a través de un bucle. A menudo,
estas variables de iteración pasan por una secuencia de
números
Un bucle Infinito
n=5
No Yes
n>0?
n=5
print while n > 0 :
‘Espuma' print (‘Espuma’)
print print (‘Enjuague‘)
‘Enjuague' print ‘Secar!'
print ‘Secar!'
Que esta mal con este Bucle?
Otro Bucle
i=1
while i<= 50
print (i)
i = 3*i +1
print (“Programa terminado!!”)
while True:
line = input('> ')
if line == “listo” :
break
print (line) > Hola
print (“Listo!”) Hola
> Mundo
Mundo
> listo
Listo!
while True:
line = input('> ') No Yes
True ?
if line == “listo” :
break ....
print (line)
print (“Listo!”)
break
...
print 'Done'
Finalizar un ciclo
con continue
La instrucción continue finaliza la iteración
actual y salta a la parte superior del bucle e inicia
while True: la siguiente iteración.
while True:
> hola
line = input('> ')
hola
if line[0] == '#' :
> # No desplegar
continue
> Imprimir esto!
if line == ‘listo':
Imprimir esto!
break
> listo
print (line)
Listo!
print ‘Listo!'
while True: No
True ? Yes
line = input('> ')
if line[0] == '#' : ....
continue
if line == ‘listo':
break continue
print line
print (‘Listo!‘)
...
print (‘Listo!‘)
52
Ejercicios
1. Escriba un programa que pida 2.Escriba un programa que pida
números enteros mientras sean cada un valor límite positivo y a
vez más grandes. continuación pida números hasta
que la suma de los números
Escriba un número: 5 introducidos supere el límite inicial.
Escriba un número mayor que 5: 10 Escriba el valor límite: 12
Escriba un número mayor que 10: 12 Escriba un número: 5.2
Escriba un número mayor que 12: 25 Escriba otro número: -1
Escriba un número mayor que 25: 9 Escriba otro número: 9
9 no es mayor que 25. Ha superado el límite. La suma de
los números introducidos es 13.2.
Programa terminado
Programa terminado
53
Ejercicios
3. Escriba un programa que pida 4. Pide números y mételos en una lista,
números enteros positivos hasta que se cuando el usuario meta un 0 ya
ingrese un numero negativo, entonces dejaremos de insertar. Por último,
deberá desplegar la sumatoria de los muestra los números ordenados de
números ingresados menor a mayor. (sort())
Escriba un número: 2 Escriba un número: 3
Escriba un número: 3 Escriba otro número: 8
Escriba un número: 8 Escriba otro número: 4
Escriba un número: -6 Escriba otro número: 7
Ingreso un numero negativo Escriba otro número: 0
La sumatoria de la lista es 13 La lista de numero es : 3 4 7 8
Programa terminado Programa terminado
01 DE FEBRERO
For
54
la función input()
La función input() permite a los usuarios introducir datos de distintos
tipos desde la entrada estándar (normalmente se corresponde con
la entrada de un teclado).
Introducir datos de distinto tipo
edad = int(input('Teclear edad: ')) # entrada de entero
peso = float(input('Teclear peso: ')) # entrada de flotante
nombre = input('Teclear nombre: ') # entrada de cadena
print(nombre, edad, 'años', peso, 'kg') # muestra datos
print("¿Cómo se llama? ", end="")
nombre = input()
print(f"Me alegro de conocerle, {nombre}")
>>> ¿Cómo se llama? Pepe
>>> Me alegro de conocerle, Pepe
55
Variables como argumento de la 56
función input()
Cuando deseamos agregar uno o mas argumentos a la
función input(), agregamos la cadenas "f"
5
4
for i in [5, 4, 3, 2, 1] :
3
print (i)
2
print “Despegue!”
1
Despegue!
Un Loop con cadenas
print (i) 5
4
3
2
print 1
(“Despegue!”) Despegue!
Los bucles definidos (For) tienen variables de iteración explícitas
que cambian cada vez a través de un bucle. Estas variables de
iteración se mueven a través de la secuencia o conjunto
No
Mirando por dentro…. Yes Muevete hacia
Listo? delante
La variable de iteración “itera" a
través de la secuencia (conjunto
ordenado).
El bloque (cuerpo) del código se
print (i)
ejecuta una vez para cada valor
en la secuencia.
La variable de iteración se
mueve a través de todos los
valores en la secuencia
print
(Despegue!”)
Variable de Iteración
67
Analicemos…….
contar = 0
print (“antes”, contar)
for elemento in [9, 41, 12, 3, 74, 15] :
contar = contar + elemento
print (contar, elemento)
print (“despues”), contar
cont = 0
suma = 0
print (“Antes”, cont, suma)
for valor in [9, 41, 12, 3, 74, 15] :
cont = cont + 1
suma = suma + valor
print (cont, suma, valor)
print (“despues”, cont, suma, suma / cont)
Ejercicios
69
Ejercicios
70
Secuencias
09 de febrero
71
Secuencias
\b ˂˂Espacio atrás˃˃
\n Salto de línea
\r Retorno de carro
\t Tabulador horizontal
\v Tabulador vertical
Observaciones
Ejemplo
print ("a\\b")
print ("Una \"cosa\“ rara.“)
Otras Funciones
len(“abc”)
Indexación
Podemos acceder a cada uno de los caracteres de una cadena
utilizando un operador de indexación. El índice del elemento al que
queremos acceder debe encerrarse entre corchetes.
Debemos tener en cuenta que el primer elemento tiene índice
cero. Los índices de la cadena “Hola, mundo.” se muestran en esta
figura:
a[len()-1]
Algunas operaciones con listas
Los operadores ==, != <, >, <= y >= también funcionan con
listas.
[1, 2, 3] == [1, 2]
Ejercicios
156(171) 157, 159,160 161, 167-171,179 230(205)
Matrices
16/02
79
Arreglos
0 1 2 3 4 5
Matrices
0 1 2 3 4 5
0
1
2
81
Ejemplo de array de 6 elementos
datos = [ ]
for i in range(1,7):
nuevoDato = int( input( "Dime el dato numero {}:
".format(i) ))
datos.append(nuevoDato)
print (datos)
82
si los valores no los vamos a recibir exactamente en orden. En ese
caso, se puede inicializar el array usando una orden "for" dentro de
los corchetes
for i in range(0,len(datos)):
datos[i] = int( input( "Dime el dato numero {}:
".format(i+1) ))
83
Matrices en Python:
84
Creemos una Matriz
f =int(input("Ingrese el numero de filas: "))
c =int(input("Ingrese el numero de columnas: "))
n =int(input("Ingrese el el valor de la matriz: "))
matriz = []
for i in range(f):
a = [n]*c
matriz.append(a)
print (matriz)
85
Modifiquemos cada Valor de la Matriz
86
Ejercicio
87
Operaciones con matrices
Suma
88
Multiplicación
89
Funciones
02/03
90
Funciones
def NOMBRE(LISTA_DE_PARAMETROS):
"""DOCSTRING_DE_FUNCION"""
SENTENCIAS
RETURN [EXPRESION]
92
•NOMBRE, es el nombre de la función.
93
•LISTA_DE_PARAMETROS, es la lista de parámetros que puede
recibir una función.
•DOCSTRING_DE_FUNCION, es la cadena de caracteres usada
para documentar la función.
•SENTENCIAS, es el bloque de sentencias en código fuente
Python que realizar cierta operación dada.
•RETURN, es la sentencia return en código Python.
•EXPRESION, es la expresión o variable que devuelve la
sentencia return.
def hola(arg):
"""El docstring de la función""“
print "Hola", arg, "!"
95
Por nombre
Para recibir un número indeterminado de parámetros por nombre
(clave-valor o en inglés keyword args), debemos crear un diccionario
dinámico de argumentos definiendo el parámetro con dos asteriscos:
def indeterminados_nombre(**kwargs):
print kwargs
96
Sentencia pass
def consultar_nombre_genero(letra_genero):
pass
97
Sentencia return
98
Retorno múltiple
def prueba():
return “hola mundo", 20, [1,2,3]
>>> prueba()
(hola mundo, 20, [1, 2, 3])
99
Ejemplo
def iva()
: '''función básica para el calculo del IVA'''
iva = 12
costo = input(“¿Cual es el monto a calcular?: “)
calculo = costo * iva / 100
print "El calculo de IVA es: " + (calculo) + "\n“
Invocamos la función
Iva()
10
Ejercicio
10
Procedimientos
10
2
Laboratorio Valor (5pts—3progra1 –
2LabPro1)
10
2.
Debes indicar si una serie de matrices tienen alguna fila repetida.
La primera línea indicará la cantidad de casos a probar (no más de 10).
Para cada caso, una primera línea contendrá el ancho y el alto de cada matriz
(no más de 10). Las siguientes líneas (tantas como indique el alto) serán los datos
de una fila de la matriz, números enteros entre -10000 y 10000 (tantos como
indique el ancho), separados por uno o varios espacios en blanco.
Deberás responder SI en caso de que alguna de las filas de la matriz esté
repetida, o NO en caso contrario.
10
Ejemplo 2
Casos a Probar : 4 0 1 28 -34 57
Tamaño Matriz :3 2 -23 -21 -19 -15 -10
Datos 1 1 1 1 1
123 Tamaño Matriz:2 2
-1 0 1 Datos
Tamaño Matriz :4 3 1 11
Datos 11 1
5123 Ejemplo de Salida:
-1 0 3 1 Matriz 3 2 : No
5123 Matriz 4 3 : SI
Tamaño de Matriz: 5 5 Matriz 5 5 : SI
Datos : Matriz 2 2 : No
11111
123 345 567 -123 -345
10
3
Crea un programa capaz de calcular la suma de los números que se
indicarán en la entrada estándar, separados por espacios, y mostrar los
resultados en pantalla. Los números pueden ser negativos, grandes y las
líneas pueden contener espacios adicionales, por lo que el programa
debe ser robusto.
(Cuidado: no debe ser "amigable", sino estricto: no debe decir nada
como "introduce los datos" ni responder con nada como "la suma es...";
debe tomar cada línea de datos de la entrada estándar, analizarla y
mostrar los resultados en la salida estándar).
Ejemplo de entrada
123456789012 1
23
4 5 -1
Ejemplo de salida
123456789013
5
8
10
Variables Globales y
Locales
16 de marzo
10
8
Lectura de las paginas 163 a 173 del libro
Funciones recursivas y
GUI
23 de marzo
11
0
Función Recursiva
for i in listaNumeros:
total= (1+(3+(5+(7+9))))
laSuma = laSuma + i
total= (1+(3+(5+16)))
return laSuma
total= (1+(3+21))
total= (1+24)
print(sumalista([1,3,5,7,9]))
total= 25
11
Entendamos el Código
def sumalista(listaNumeros):
if len(listaNumeros) == 1:
return listaNumeros[0]
else:
return listaNumeros[0] + sumalista(listaNumeros[1:])
print(sumalista([1,3,5,7,9]))
11
11
Función recursiva sin retorno
def cuenta_regresiva(numero):
numero -= 1
if numero > 0:
print (numero)
cuenta_regresiva(numero)
else:
print ("Boooooooom!")
print ("Fin de la función", numero)
cuenta_regresiva(10)
11
Función recursiva con retorno
def factorial(numero):
print ("Valor inicial ->",numero)
if numero > 1:
numero = numero * factorial(numero -1)
print ("valor final ->",numero)
return numero
print (factorial(5))
11
Librería Grapichs
1. Instalación de pip
2. Instalación de la Librería
3. Primer Programa
4. Documentación de la librería
a. https://mcsp.wartburg.edu//zelle/python/graphics/graphics/index.
html
b. http://anh.cs.luc.edu/handsonPythonTutorial/graphics.html#
5. Modificando el Memorión
6. Librería tkinter
11
Ejercicio
11
Registros y GUI
30 de marzo
11
9
Leer el capitulo 7 y realizar un
resumen a mano
Interfaces gráficas
Los programas con interfaces gráficas son fundamentalmente diferentes
a los programas con interfaces de texto. Los programas que hemos
escrito hasta ahora se ejecutan completamente de principio a fin,
deteniéndose sólo cuando debemos ingresar datos.
Los programas gráficos, por otra parte, realizan acciones sólo cuando
ocurren ciertos eventos provocados por el usuario (como hacer clic en un
botón, o escribir algo en una casilla de texto), y el resto del tiempo se
quedan esperando que algo ocurra, sin hacer nada. El programa no
tiene control sobre cuándo debe hacer algo. Esto requiere que los
programas sean estructurados de una manera especial, que iremos
aprendiendo de a poco.
Python incluye un módulo llamado Tkinter que provee todas las funciones
necesarias, que deben ser importadas al principio del programa:
12
Creación de la ventana
12
La sentencia w = Tk() crea la ventana principal del programa, y la
asigna a la variable w. Toda interfaz gráfica debe tener una
ventana principal en la que se irán agregando cosas. Esta línea va
al principio del programa.
La sentencia w.mainloop() indica a la interfaz que debe quedarse
esperando a que el usuario haga algo. Esta línea siempre debe ir al
final del programa.
Al ejecutarlo, puede darse cuenta que el programa no termina.
Esto ocurre porque la llamada al método mainloop() se «queda
pegada» esperando que algo ocurra. Esto se llama un ciclo de
eventos, y es simplemente un ciclo infinito que está continuamente
esperando que algo ocurra.
Todos los programas con interfaz gráfica deben seguir esta
estructura: la creación de la ventana al principio del programa y la
llamada al ciclo de eventos al final del programa.
12
Creación de widgets
12
El Entry es análogo al input de los programas de consola: sirve
para que el programa reciba la entrada. El Label es análogo
al print: sirve para que el programa entregue la salida.
Un botón puede ser visto como un «llamador de funciones»:
cada vez que un botón es presionado, se hace una llamada a
la función asociada a ese botón. Los botones no tienen un
análogo, pues los programas de consola se ejecutan de
principio a fin inmediatamente, y por esto no necesitan que las
llamadas a las funciones sean gatilladas por el usuario.
Para agregar un widget a un programa, hay que ocupar las
funciones con los nombres de los widgets
(Label, Button y Entry). Estas funciones reciben como primer
parámetro obligatorio la ventana que contendrá el widget.
Además, tienen parámetros opcionales que deben ser
pasados usando la sintaxis de asignación de parámetros por
nombre. Por ejemplo, el parámetro text sirve para indicar cuál
es el texto que aparecerá en un botón o en una etiqueta.
12
Por ejemplo, la siguiente sentencia crea un botón
con el texto Saludar, contenido en la ventana w:
b = Button(w, text='Saludar')
Si bien esto crea el botón y lo asigna a la
variable b, el botón no es agregado a la
ventana w inmediatamente: lo que hicimos fue
simplemente decirle al botón cuál es su
contenedor, para que lo tenga en cuenta al
momento de ser agregado. Para que esto
ocurra, debemos llamar al método pack, que
es una manera de decirle al widget
«empaquétate dentro de tu contenedor»:
b.pack()
12
from Tkinter import *
w = Tk()
l = Label(w, text='Etiqueta')
l.pack()
b = Button(w, text='Boton')
b.pack()
e = Entry(w)
e.pack()
w.mainloop()
12
Controladores
12
Para asociar el controlador al botón, hay que pasarlo a través del
parámetro command (en inglés: «orden») al momento de crear el
botón:
b = Button(w, text='Saludar', command=saludar)
Esta línea significa: crear el botón b, contenido en la ventana w,
que tenga el texto 'Saludar' y que al hacer clic en él se ejecute la
función saludar.
El siguiente ejemplo es un programa completo que tiene dos
botones: uno para saludar y otro para salir del programa. El
controlador del segundo botón es la función exit, que ya viene con
Python:
12
from Tkinter import *
130
def saludar():
print 'Hola'
w = Tk()
w.mainloop()
Modelos
13
13
SlidesCarnival icons are editable shapes.
Examples:
13
😉
Now you can use any emoji as an icon!
And of course it resizes without losing quality and you can change the color.
✋👆👉👍👤👦👧👨👩👪💃🏃💑❤😂
😉😋😒😭👶😸🐟🍒🍔💣📌📖🔨🎃🎈
🎨🏈🏰🌏🔌🔑 and many more...
13