¿Cómo funcionan las computadoras?
Founder
@Kodemia
2000- 2001
2003 - 2013
2013 - 2017
2018 - Hoy
2017 - 2018
Head of engineering / Co. Founder
@Kodemia
# CIP-23
Lunes a Viernes de 7 a 10 pm
2 semanas
# CIP-23
- Camara encendida mientras se está en clase
- El micrófono apagado en todo momento, encender solo al interactuar
- Revisaremos 2 o 3 prácticas en clase para comprensión de todos por tiempo
# CIP-23
- Avisos
- Prácticas
- Links a materiales
Algoritmos y diagramas de flujo
# CIP
# CIP
Inicio
Escribir "Ingresa longitud de un lado de tu triangulo equilatero"
Leer longitud
perimetro = longitud * 3
Escribir "El périmetro del triangulo es:" perimetro
Terminar
perímetro = lado + lado + lado
Inicio
Escribir "Ingresa longitud de un lado de tu cuadrado"
Leer longitud
perimetro = longitud * 4
Escribir "El périmetro del cuadrado es:" perimetro
Terminar
perímetro = lado + lado + lado + lado
Inicio
Escribir "Ingresa el número de lados de tu poligono regular"
Leer num_de_lados
Si num_de_lados < 3 Entonces
Escribir "Eso no es un poligono, intenta de nuevo"
Ir a linea 2
Escribir "Ingresa longitud de un lado de tu poligono"
Leer longitud
Si longitud <= 0
Escribir "Eso no es posible, intenta de nuevo"
Ir a linea 7
perimetro = num_de_lados * longitud
Escribir "El périmetro del poligono es:" perimetro
Terminar
perímetro = num_de_lados * lado
?
# CIP
Herramienta visual que se utiliza para representar los pasos o procesos de un algoritmo o sistema
Se usan para analizar, diseñar, documentar y comunicar procesos de forma clara
Nos ayudan a encontrar errores incluso antes de programar
# CIP
Terminal
Entrada / Salida
Proceso
Representa el inicio y final de un proceso
Representa la entrada y salida de datos
Representa cualquier operación
Línea de flujo
Decisión
Conector de página
Marca el orden secuencial de los procesos y subprocesos
Se usa para representar una decisión y las diferentes posibilidades
INICIO
Escribir "Vamos a preparar un sandwich"
Escribir "¿Tienes pan?"
Leer hay_pan
Si hay_pan == "Si" Entonces
pan_1 = 🍞
pan_2 = 🍞
Si no
Escribir "No puedes hacer un sandwich sin pan :c"
FIN
Escribir "¿Tienes jamon?"
Leer hay_jamon
Si hay_jamon == "Si" Entonces
jamon = 🐷
Si no
Escribir "No puedes hace un sandwich sin jamon :c"
FIN
Escribir "¿Quieres tu sandwich con mayonesa?"
Leer "quires_mayonesa"
Si quieres_mayonesa == "Si"
Escribir "¿Tienes mayonesa?"
Leer hay_mayonesa
Si hay_mayonesa == "Si"
mayonesa = 🍯
Si no
Escribir "Ve a comprar mayonesa"
FIN
Escribir "Podemos empezar a preparar el sandwich"
Si quieres_mayonesa == "Si" Entonces
Asiganr sandwich = pan_1 + mayonesa + jamon + pan_2
Si no
Asignar sandwich = pan_1 + jamon + pan_2
Escribir "Sandwich listo!"
FIN
# CIP
# Práctica
Realizar el pseudocódigo y diagrama de flujo para obtener el perímetro de cualquier polígono regular
20 min
- Validar los datos de entrada y volver a preguntar por un dato válido en caso de que el ingresado no lo sea
# Práctica
Realizar el pseudocódigo y diagrama de flujo para permitir a un usuario realizar las siguientes operaciones con 2 números:
- Suma
- Resta
- Multiplicación
- División
20 min
- Validar los datos ingresados
- No debería permitir dividir entre 0
Scratch
# CIP
# CIP
# CIP
# CIP
Inicio
Escribir "Ingresa el número de lados de tu poligono regular"
Leer num_de_lados
Si num_de_lados < 3 Entonces
Escribir "Eso no es un poligono, intenta de nuevo"
Ir a linea 2
Escribir "Ingresa longitud de un lado de tu poligono"
Leer longitud
Si longitud <= 0
Escribir "Eso no es posible, intenta de nuevo"
Ir a linea 7
perimetro = num_de_lados * longitud
Escribir "El périmetro del poligono es:" perimetro
Terminar
En scratch
Lenguajes de programación e
introducción a python
# CIP-23 S4
Ya sabemos...
- Cómo funcionan las computadoras
- Lo que es un algoritmo
- Pensamiento estructurado
- Pseudocódigo
- Diagramas de flujo
# CIP-23 S4
Canal de YouTube: Bits And Bytes
Videos explicativos sobre cómo funcionan las computadoras
https://www.youtube.com/@bitsandbytestvo/videos
Lenguaje formal/artificial que permite a una persona definir instrucciones para ser cumplidas por una computadora
Python
C
C++
JavaScript
Scala
Swift
Ruby
PHP
Java
C#
Cobol
Kotlin
Elixir
Go
Rust
Ensamblador
Python
C
C++
JavaScript
Scala
Swift
Ruby
PHP
Java
C#
Cobol
Kotlin
Elixir
Go
Rust
Ensamblador
Binario
# CIP-23 S4
Programas usando secuencias de instrucciones explicitas que van mutando
el estado de la aplicación
Programas especificando el resultado que quieres obtener no el cómo obtenerlo
Lisp, Prolog
C, Basic, Pascal
Programas mas limpiamente, los gotos no existen y se usan loops y condicionales en su lugar
C, Pascal
# CIP-23 S4
El flujo de control es controlado por llamadas a funciones en lugar de asignar valores a variables
Programas declarando objetos y enviando mensajes entre ellos
Java, C++, C#, Ruby, Python, JavaScript
Elixir, Erlang, Haskell, Lisp, Scala, JavaScript
Programas usando emisores y escuchas de eventos, declarando cuando reaccionar y cuando lanzar eventos
JavaScript, Python
# CIP-23 S4
Estos lenguajes de programación soportan diferentes paradigmas de programación y pueden conbinarlos
JavaScript, Python, Kotlin, Java, Swift, ...
# CIP-23 S4
Cuentan con un compilador, un programa que toma el código fuente y lo traduce a código máquina para que la computadora pueda entenderlo
C, C++, Go, Rust, Java, Kotlin, Swift
Cuenta con un intérprete, un programa que toma el código fuente y lo ejecuta directamente sin pasar por compilación
JavaScript, Python
Es la forma visible del lenguaje
Al ser puramente textuales, la sintaxis es la forma en la que se escribe el lenguaje
Restricciones en la forma de escribir y hacer declaraciones
Se usan para ejecutar selectivamente ciertas sentencias cuando la condición dada se cumple
Se usan para ejecutar repetidamente un grupo de sentencias hasta que se cumpla una condición especifica
Una variable es un espacio en memoria al que le asignamos un valor
# Python
nombre_del_ususario = "Juan Perez"
// JavaScript
let NombreDelUsuario = "Juan Perez"
// C++
// tipo nombreDeVariable = valor
string nombreDeUsuario = "Juan Perez"
Son los tipos de datos que una variable puede albergar, estos dependen del lenguaje de programación pero generalmente son:
Aprendamos Python
Ahora...
Pero antes...
Aprendamos Python
Ahora si...
YA! a escribir código 👉
Sintaxis
print("Hola koders")
print('Hola koders')
print("Hola", 'koders')
# Sintaxis
# Esto es un comentario en python
print("hola koders") # Esto tambien es un comentario
# Sintaxis
Los comentarios no son parte de las instrucciones, no se ejecutan como instrucciones
# Numeros enteros
x = 1
# Numeros con punto flotante
average = 9.9
# Cadenas de texto o Strings
name = "Pepito"
# Logicos o Booleanos
is_awesome = True
is_boring = False
# Listas (Arreglos)
koders = [ "Kari", "Vic", "Max", "Mike" ]
grades = [ 8, 9.9, 5, 1 ]
# No hay una palabra reservada para declarar variables
# Sintaxis
# nombres validos
mivariable = "ok"
mi_variable = "ok"
_mi_variable = "ok"
mi_variable_1 = "ok"
miVariable = "ok"
# nombres invalidos
1_mi_variable = "NO"
mi-variable = "NO"
mi variable = "NO"
# Sintaxis
No empezar con número
No puede contener espacios
No se puede usar guiones medios o caracteres especiales fuera del _
# CamelCase
miNombreDeVariable = "kodemia"
# PascalCase o UpperCamelCase
MiNombreDeVariable = "kodemia"
# SnakeCase
mi_nombre_de_variable = "kodemia"
# Sintaxis
# Podemos usar la función isinstance() para validar el tipo de dato
# y type() para conocer el tipo de dato de una variable
# int
x = 1
type(x) # int
isinstace(x, int) # True
# float
average = 9.9
type(average) # float
print(isinstace(average, float)) # True
# str
name = "Pepito"
type(name) str
print(isinstace(name, str)) # True
# bool
is_awesome = True
is_boring = False
type(is_awesome) # bool
print(isinstace(is_awesome, bool)) # True
print(isinstace(is_boring, bool)) # True
# list
koders = [ "Kari", "Vic", "Max", "Mike" ]
grades = [ 8, 9.9, 5, 1 ]
type(koders) # list
print(isinstace(koders), list) # True
print(isinstace(grades), list) # True
# Sintaxis
# el valor None lo usamos para determinar explicitamente
# que no existe un valor
# NoneType
x = None
# Sintaxis
# Usamos la función input()
# para recibir datos del ususario
nombre = input("Ingresa tu nombre:")
# Sintaxis
# Práctica
Crear un programa que le pida al usuario su nombre y lo salude usando su nombre
5 min
# Suma
x + y
# Resta
x - y
# Multiplicación
x * y
# Division
x / y
# Módulo
x % y
# Exponenciación
x ** y
# Sintaxis
# Práctica
Crear un programa para calcular el perimetro de cualquier poligono regular
5 min
- Los valores no necesitan ser dados por el usuario
- No enfocarse en validaciones por el momento
# Conversion a int con la función int()
x = int(1) # x seria 1
y = int(5.5) # y seria 5
z = int("1") # z seria 1
# Conversión a float con la función float()
x = float(1) # x seria 1.0
y = float(6.6) # y seria 6.6
z = float("33") # z seria 33.0
w = float("41.2") # w seria 41.2
# Conversión a str con la función str()
x = str("a1") # x seria 'a1'
y = str(2) # y seria '2'
z = str(3.0) # z seria '3.0'
w = str(True) # w seria 'True'
j = str(False) # j seria 'False'
# Sintaxis
#CIP-23 S7
Crear un programa para calcular el perimetro de cualquier poligono regular
5 min
- Los valores DEBEN ser dados por el usuario
- No enfocarse en validaciones por el momento
#CIP-23 S7
Crear un programa que solicite al usuario un número y le imprima la siguiente información:
- El doble del número
- La mitad del número
- La diferencia entre ese número y el número 100
- El residuo de dividir ese numero entre 3
5 min
- No enfocarse en validaciones por el momento, asumir que el usuario ingresa un valor numérico
Condicionales
Condición
Verdadero
Falso
Instrucción
Instrucción
Instrucción
Instrucción
numero > 5
Verdadero
"el número es mayor a 5"
numero = 10
if numero > 5:
print(numero, " es mayor a ", 5)
print ("Esto se ejecuta sin importar la condicion")
numero = 10
if numero > 5:
print(number, " es mayor a ", 5)
print ("Esto se ejecuta sin importar la condicion")
numero > 5
Verdadero
"el número es mayor a 5"
numero = 10
if numero > 5:
print(number, " es mayor a ", 5)
print ("Esto se ejecuta sin importar la condicion")
numero > 5
Verdadero
"el número es mayor a 5"
numero = 10
if numero > 5:
print(number, " es mayor a ", 5)
print ("Esto se ejecuta sin importar la condicion")
numero > 5
Verdadero
"el número es mayor a 5"
number = 10
if number > 5:
print(number, " es mayoar a ", 5)
# Sintaxis
numero > 5
Verdadero
Falso
"el número es mayor a 5"
"el número es menor o igual a 5"
numero = 10
if numero > 5:
print(numero, " es mayoar a ", 5)
else:
print(numero, " es menor o igual a ", 5)
# Sintaxis
numero > 5
Verdadero
"el número es mayor a 5"
"el número es menor o igual a 5 pero no es 0"
número == 0
Falso
Falso
Verdadero
"el número es exactamente 0"
"el número es menor o igual a 5 pero no es 0"
numero = 10
if numero > 5:
print(numero, " es mayoar a 5")
elif numero = 0:
print(numero, " es igual a 0")
else:
print(numero, " es menor o igual a 5"
# Sintaxis
# Igual
x == y
# Diferente
x != y
# Mayor que
x > y
# Menor que
x < y
# Mayor o igual
x >= y
# Menor o igual
x <= y
# Sintaxis
# y
and
x > 1 and y < 5
# o
or
x > 1 or y < 5
# no
not
not x > 1
# Sintaxis
#CIP-23 S7
Crear un programa que solicite un número al usuario e imprima en consola "par" si el número es par o "impar" si el número es impar
15 min
- No enfocarse en validaciones por el momento (asumir que el valor ingresado es un número)
#CIP-23 S7
Crear una calculadora permita:
- sumar
- restar
- dividir
- multiplicar
- potenciar
2 números
15 min
- Asumir que el usuario ingresará solo valores numéricos
Bucles o Loops
# Sintaxis
# Sintaxis
contador = 1
while contador < 10:
print("contador: ", contador)
contador = contador + 1
#CIP-23 S7
Crear un programa para calcular el perímetro de cualquier polígono regular
Usa el "while" para asegurarte de que los valores ingresados por el usuario son válidos
10 min
#CIP-23 S4
Crear un programa que imprima los numeros del 1 al 100 y en cada número divisible entre 3 imprima "Fizz" junto al número, en cada número divisible entre 5 "Buzz" junto al número y FizzBuzz si es divisible entre ambos
15 min
1
2
3 - Fizz
4
5 - Buzz
6 - Fizz
7
8
9 - Fizz
10 - Buzz
15 - FizzBuzz
y así hasta el 100
- Todo esto usando while
# Sintaxis
for x in range(0, 10):
print(x)
# Sintaxis
range(5) # 0,1,2,3,4
range(1,5) # 1,2,3,4
range (-2, 5) # -2, -1, 0, 1, 2, 3, 4
- El range no incluye el límite superior
#CIP-23 S4
Crear un programa que imprima la tabla de multiplicar (1 al 10) de un número ingresado por el usuario
5 min
Ej. si n=5
En terminal debe verse:
5x1=5
5x2=10
5x3=15
5x4=20
5x5=25
y asi hasta el 10
#CIP-23 S4
Crear un programa que imprima los numeros del 1 al 100 y en cada número divisible entre 3 imprima "Fizz" junto al número, en cada número divisible entre 5 "Buzz" junto al número y FizzBuzz si es divisible entre ambos
5 min
1
2
3 - Fizz
4
5 - Buzz
6 - Fizz
7
8
9 - Fizz
10 - Buzz
15 - FizzBuzz
y así hasta el 100
#CIP-23 S4
Crear un programa para generar los primeros N números de la serie de fibonacci, Donde N es un número determinado por el usuario
15 min
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144
Arreglos, Arrays o Listas
Pepe
Se usan para almacenar múltiples valores en una sola variable
koders
0
1
2
3
4
5
6
7
Luis
Jess
Ana
Fer
Raul
Vic
Max
Indice
Longitud = 8
Un arreglo es una colección ordenada de valores
# CIP
Pepe
koders
0
1
2
3
4
5
6
7
Luis
Jess
Ana
Fer
Raul
Vic
Max
koders = ["Pepe", "Luis", "Jess", "Ana", "Fer", "Raul", "Vic", "Max"]
Este arreglo se ve así en python:
# CIP
Pepe
koders
0
1
2
3
4
5
6
7
Luis
Jess
Ana
Fer
Raul
Vic
Max
koders = [
"Pepe",
"Luis",
"Jess",
"Ana",
"Fer",
"Raul",
"Vic",
"Max"
]
También puede escribirse en varias lineas
# CIP
Pepe
koders
0
1
2
3
4
5
6
7
Luis
Jess
Ana
Fer
Raul
Vic
Max
koders = ["Pepe", "Luis", "Jess", "Ana", "Fer", "Raul", "Vic", "Max"]
koders[0] # Pepe
koders[7] # Max
koders[3] # Ana
koders[10] # ERROR
Usamos los índices para acceder a los valores del arreglo
⚠️ Los indices son numericos ⚠️
# CIP
koders = ["Pepe", "Luis", "Jess", "Ana", "Fer", "Raul", "Vic", "Max"]
koders[-1] # Max
koders[-2] # Vic
koders[-3] # Raul
koders[-10] # ERROR
# CIP
frutas = ["manzana", "piña", "uva", "platano"]
numeros = [10, 1, 50]
mezclado = ["manzana", 1, "piña", True, None]
# CIP
el_elegido = 5
koders = ["Pepe", "Luis", "Jess", "Ana", "Fer", "Raul", "Vic", "Max"]
koders[el_elegido] # Raul
# CIP
# Práctica
Crear un programa que dada una lista de koders, imprima el koder que se encuentre en el índice especificado por el usuario
5 min
⚠️ La lista no debe ser dada por el usuario aun
koders = ["Pepe", "Luis", "Jess", "Ana", "Fer", "Raul", "Vic", "Max"]
len(koders) # 8
frutas = ["manzan", "piña", "mango", "coco"]
len(frutas) # 4
vacio = []
len(vacio) # 0
# Podemos guardar ese dato en una variable
longitud = len(koders)
# CIP
Podemos usar la función len() para saber la longitud de un arreglo
# Práctica
Crear un programa que imprima todos los elementos de un arreglo junto a su indice
5 min
⚠️ La lista no debe ser dada por el usuario aun
# Práctica
Crear un programa que imprima todos los elementos de un arreglo junto a su indice hasta el indice dado por el usuario
10 min
⚠️ La lista no debe ser dada por el usuario aun
# Práctica
Crear un programa que promedie las calificaciones de un alumno
10 min
⚠️ Las calificaciones no son dadas por el usuario
⚠️ Las calificaciones son hardcodear en un arreglo en nuestro programa
Métodos de array
# Sintaxis
koders = ["Pepe", "Luis", "Jess", "Ana", "Fer", "Raul", "Vic", "Max"]
for item in koders:
print(item)
Podemos usar for para iterar una lista
koders = ["Pepe", "Luis", "Jess", "Ana", "Fer", "Raul", "Vic", "Max"]
koders.clear()
len(koders) # 0
Usamos la función .clear() para vaciar un array
koders = ["Pepe", "Luis", "Jess", "Ana", "Fer", "Raul", "Vic", "Max"]
koders.append("Kari")
# ["Pepe", "Luis", "Jess", "Ana", "Fer", "Raul", "Vic", "Max", "Kari"]
Usamos .append() para agregar un nuevo elemento al final del array
Podemos ver mas métodos de Array en W3Schools
# Práctica
Crear un programa que imprima todos los elementos de un array usando el loop "for"
5 min
⚠️ Debe usarse el loop for
# Práctica
Crear un programa que cuente cuántos elementos de cada tipo hay dentro de un array
10 min
⚠️ Considerar los tipos bool, str, int y float
💡 Recuerda la función isinstance()
# Práctica
Crear un programa que imprima los elementos de un array pero en orden inverso al original
5 min
⚠️ Ver la lista de métodos de arreglo
# Práctica
Crear un programa que le pida al usuario ingresar una lista de nombres, el número de nombres permitido es indeterminado
Una vez el usuario no desee ingresar más nombres, el programa le da al usuario la siguiente información:
- Cuantos nombres se ingresaron
- Si existen al menos un valor repetido o no
- Cual es el nombre más largo de todos los ingresados
- Cual es el nombre más corto de todos los ingresados
20 min
# Práctica
Crear un programa que le pida al ususario ingresar una lista de nombres, el numero de nombres permitido es indeterminado
Una vez el usuario no desee ingresar más nombres.
el programa preguntará al usuario un nombre y regresará el índice del nombre ingresado
10 min
Funciones
# Funciones
Entrada
Salida
Proceso
Entrada
Salida
Proceso
Proceso
Suma
Entrada
Salida
Proceso
Proceso
Suma
2
2
Entrada
Salida
Proceso
Proceso
Suma
2
2
4
def nombre(parámetro_1, parametro_2, etc):
# Instrucciones de la función
Entrada
Salida
Proceso
Proceso
Suma
2
2
4
def suma(x, y):
resultado = x + y
return resultado
# Definición
def suma(x, y):
resultado = x + y
return resultado
# Llamada
suma(2,2)
# Práctica
Crea una función que reciba como parámetro un nombre y salude usando ese nombre
5 min
# Práctica
Crea una función que reciba como parámetro una lista de nombres y regrese el nombre más largo de la lista
7 min
# Práctica
Crea una función que reciba como parámetro una lista de nombres y regrese el nombre más corto de la lista
5 min
# Práctica
Crea una función que reciba como parámetro una lista de nombres y regrese True si la lista contiene al menos un valor repetido y False cuando la lista no contiene valores repetidos
7 min
# Práctica
Crea una función que reciba como parámetro una lista de calificaciones y regrese el promedio de las calificaciones
7 min
# Práctica
Crea un función que reciba como parámetro una lista de nombres y te devuelva la lista de valores repetidos en esa lista
15 min
# Práctica
Crea un función que reciba como parámetro una lista de nombres y te devuelva la misma lista pero con los nombres escritos en mayusculas
15 min
# Práctica
Crea un función que reciba 2 parametros:
- una lista de números
- un número
y regrese una lista con los todos los números que son mayores al número dado como segundo parametro
15 min
# Práctica
Crea un función que reciba 2 parámetros:
- una lista de nombres
- un número
y regrese una lista con los todos los nombres cuyas longitudes sean más grandes que el número dado como segundo parametro
15 min
# Práctica
Crear un programa que cree un archivo llamado "prueba.txt"
# min
⚠️ Usa W3Schools para encontrar la información necesaria
# Práctica
Crear un programa que escriba una nueva linea en un archivo
# min
⚠️ Usa W3Schools para encontrar la información necesaria
# Práctica
Crear un programa que lea el contenido de un archivo y lo imprima en consola
# min
⚠️ Usa W3Schools para encontrar la información necesaria
# Funciones
from archivo import funcion
from calculadora import suma
import calculadora
# CIP
El comienzo...
# CIP
# CIP
# CIP
Kotlin
Java
Swift
# CIP
# CIP
# CIP
Site Relaiability Engineer
# CIP
# CIP
# CIP