IWI131 Programación


Algoritmos Generales con Trinket



Departamento de Informática
Universidad Técnica Federico Santa María

Algoritmos

Decisiones

Existen problemas en los cuales nuestros algoritmos toman decisiones o se bifurcan, por ejemplo:

  1. Saber si un número es par.
  2. Verificar que un número sea positivo e impar.
  3. La definición del valor absoluto.

Repeticiones o Ciclos

Hay veces que notamos ciertos patrones que se repiten dentro de un algoritmo, por ejemplo:

  1. Obtener el promedio de $N$ elementos.
  2. Dado un conjunto de números, obtener el mayor/menor.
  3. Buscar los divisores de un número.

Lenguaje de bloques

Bloque print

Imprime un mensaje

In [1]:
from IPython.core.display import display, HTML
display(HTML('<iframe src="https://trinket.io/embed/blocks/d9bb462dfd?hideGeneratedCode=true" width="100%" height="300" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Bloque if-else

Permite bifurcar un algoritmo. Si se cumple la condición realiza una acción, sino realiza la otra.

In [2]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/b6016326cc?hideGeneratedCode=true" width="100%" height="300" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Operadores de comparación

Nos permite hacer comparación de variables para utilizarlas dentro de nuestro bloque if-else. Podemos realizar comparaciones aritméticas: $=, \neq, <, \leq, >, \geq$ y lógicas como: and, or.

In [3]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/0c264620ae?hideGeneratedCode=true" width="100%" height="300" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Bloque repeat-while

Repetir una sección de código mientras se cumple una condición.

In [4]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/773558e03a?hideGeneratedCode=true" width="100%" height="300" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Bloque remainder

Calcula el resto de una división.

In [5]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/0765553d5e?hideGeneratedCode=true" width="100%" height="300" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Bloque is-even

Verifica si un número es par.

In [6]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/ba4e2e0f0c?hideGeneratedCode=true" width="100%" height="300" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Valores booleanos (true-false)

Valores lógicos verdadero y falso.

In [7]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/db3fe3be51?hideGeneratedCode=true" width="100%" height="300" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Bloque create-text

Permite Crear un texto.

In [8]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/2cb28394d9?hideGeneratedCode=true" width="100%" height="300" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Ejemplos

Conjetura de Ulam

A partir de un número cualquiera (entrada) es posible hacer una sucesión de números que termina en 1.

  • Si el número es par, se debe dividir por 2.
  • Si el número es impar, se debe multiplicar por 3 y sumarle 1.

Con esto se obtiene el siguiente número de la sucesión, al cual se le deben aplicar las mismas operaciones. La sucesión de números termina cuando el número obtenido por medio de las operaciones es 1.

In [9]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/06947cd48d?hideGeneratedCode=true" width="100%" height="400" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Número Mágico

Diseñe un algoritmo para determinar si un número natural $n$ es mágico o no.

Un número se dice mágico cuando la suma de sus divisores es igual al número. En la suma no se debe considerar al mismo número como un divisor.

Ejemplos:

  • 28 = 1+2+4+7+14 es un número mágico
  • 32 != 1+2+4+8+16 no es un número mágico
In [10]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/89e31ed0c6?hideGeneratedCode=true" width="100%" height="600" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))

Adivinar un Número

Diseñe un algoritmo que intente adivinar un número entre 1 y 10.

In [11]:
display(HTML('<iframe src="https://trinket.io/embed/blocks/8d2ea4f73e?hideGeneratedCode=true" width="100%" height="600" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>'))