IWI-131 Programación¶
Introducción a la Programación¶
Algoritmos¶
Un algoritmo es una secuencia finita y precisa de pasos para resolver un problema.
Entonces, ¿qué es un problema?
Problemas¶
Un problema es la necesidad de transformar un estado inicial en un estado final, respetando ciertas restricciones.
Los problemas involucran datos de entrada en el estado inical y la solución contiene datos de salida en el estado final. Además, probablemente involucre otros datos intermedios que son relevantes.
Ejemplos de Problemas¶
- Dado un conjunto de números, determinar los números ordenados de menor a mayor.
- Dado un conjunto de ciudades, encontrar el camino más corto que recorre las ciudades.
- Dado un mensaje email, encontrar la probabilidad de que sea spam.
- ...
El problema de la ambigüedad¶

"Cariño, anda al súper y me traes una botella de leche, y si tienen huevos, compra seis"
Cuando vuelvo me pregunta
"¿Por qué trajiste seis botellas de leche?"
Respondo
"Porque había huevos"
Comprensión del Problema¶
Para poder resolver un problema se debe comprenderlo bien, y ser capaces de formalizarlo de alguna manera. De lo contrario, corremos el riesgo de terminar resolviendo el problema equivocado.
Formalización del Problema¶
En este proceso se debe definir el estado final al que se quiere llegar. Esto se logra pensando cómo se vería una solución.
En esta etapa es importante concentrarse en el qué y no en el cómo.
Volviendo a los algoritmos...
Un algoritmo es una secuencia finita y precisa de pasos para resolver un problema.
Una vez especificado el problema, hay que tratar de resoverlo pero ¿de qué manera se puede expresar la secuencia de instrucciones?
- Lenguaje natural
- Pseudocódigo
- Diagramas de Flujo
- Lenguajes de Bloques
Problema Ejemplo:¶
Determine si un número es primo o compuesto.
Definición: un número natural n
es primo si tiene solamente como divisores a 1 y a si mismo. En caso contrario es un número compuesto.
Lenguaje natural¶
Buscar algún valor d
que esté entre 2
y n-1
que sea divisor de n
.
Si existe por lo menos uno de estos valores, entonces n
es compuesto; en caso contrario, es primo.
Pseudocódigo¶
leer n
es_primo = verdadero
d = 2
mientras d sea menor que n:
si n es divisible por d:
es_primo = falso
d = d + 1
si es_primo es verdadero:
escribir "n es primo"
si no:
escribir "n es compuesto"
Diagrama de Flujo¶
Lenguajes de Bloques¶
from IPython.display import IFrame
IFrame('https://trinket.io/embed/blocks/f1d62613e6',
'100%', '500px', frameborder="0", marginwidth="0",
marginheight="0", allowfullscreen="true", hideGeneratedCode="true")
Estructura de un algoritmo¶
Las instrucciones del algoritmo pueden expresarse:
- Secuencialmente
- Tomando decisiones
- En repeticiones o ciclos