s1Eva_IIIT2003_T3 Coordenadas enteras en un círculo

Ejercicio: 1Eva_IIIT2003_T3 Coordenadas enteras en un círculo

[ mientras repita] [ para/for ]

Considere el círculo centrado en el origen (0,0),
siendo su intervalo entre [-radio, radio].

Recorrer las coordenadas de números  enteros en el recuadro limitado por
[-radio,radio] en cada lado, determinando la distancia del punto al origen.

radio = 10
x = [-10, -9, -8, -7, -6 ... 8, 9, 10]
\text{distancia} = \sqrt{x^2+y^2}
dist = np.sqrt(x**2 + y**2)

Con la distancia revisar si el punto está dentro del círculo.

if dist<=radio:
    encirculo = encirculo + 1
    sumadist  = sumadist + dist  

[ mientras repita] [ para/for ]
..


Algoritmo en Python: bucle para/for

# 1Eva_IIIT2003_T3 Coordenadas enteras en un círculo
import numpy as np

# INGRESO
radio = 10

# PROCEDIMIENTO
a =  - int(radio)
b = int(radio)

encirculo = 0
sumadist = 0
for y in range(a,b+1,1):
    for x in range(a,b+1,1):
        dist = np.sqrt(x**2 + y**2)
        if dist<=radio:
            encirculo = encirculo + 1
            sumadist  = sumadist + dist          

promdist = sumadist/encirculo
# SALIDA
print(' coordenadas enteras en círculo: ')
print(encirculo)
print('promedio distancias al centro: ')
print(promdist)

resultado:

 coordenadas enteras en círculo: 
317
promedio distancias al centro: 
6.698944789255016
>>> 

[ mientras repita] [ para/for ]
..


Algoritmo en Python: mientras-repita

# 1Eva_IIIT2003_T3 Coordenadas enteras en un círculo
import numpy as np

# INGRESO
radio = 10

# PROCEDIMIENTO
a =  - int(radio)
b = int(radio)

encirculo = 0
sumadist = 0
y = a
while y<=b+1:
    x = a
    while x<=b+1:
        dist = np.sqrt(x**2 + y**2)
        if dist<=radio:
            encirculo = encirculo + 1
            sumadist  = sumadist + dist
        x = x + 1
    y = y + 1

promdist = sumadist/encirculo
# SALIDA
print(' coordenadas enteras en círculo: ')
print(encirculo)
print('promedio distancias al centro: ')
print(promdist)

[ mientras repita] [ para/for ]

s1Eva_IIIT2003_T2 Verificar números triangulares

Ejercicio: 1Eva_IIIT2003_T2 Verificar números triangulares

[ mientras-repita ] [ repita-hasta ] [ diagrama flujo ]

El problema planteado es semejante a construir una pirámide, en la que se disponen de solo t bloques y se requiere saber si el número de bloques es exacto para formar una pirámide.

El ejercicio se desarrolla suponiendo que se construirá una pirámide con bloques de varios «pisos».

Se observa que el número de bloques coincide con el número de piso a construir.
Ejemplo:

  • Piso 1 tiene 1 bloque,
  • piso 2 tiene 2 bloques,
  • etc.
piso = 1  # contador
usados = 0 # acumulador

Cada piso usa una cierta cantidad de bloques que se cuentan como «usados», es decir se acumulan. La cantidad de bloques por piso es la misma que el número del piso, contador que se inicia con 1.

El lazo o bucle  repite el proceso de tal forma que los bloques usados  se acumulan en cada piso.

while (usados<t):
    usados = usados + piso
    piso = piso+1

Dado un número t de bloques ,se calcula la secuencia de números triangulares mientras los bloques usados sean menores que los t disponibles.

En caso que el número “usados” de la secuencia es igual a t, se considera al número t como un número triangular.

La respuesta es un valor de verdad, si es triangular 1, si no lo es 0.

[ mientras-repita ] [ repita-hasta ] [ diagrama flujo ]
..


Algoritmo en Python: Bucle/Lazo mientras-repita

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIIT2003_T2 Números triangulares
# Propuesta de solución. edelros@espol.edu.ec

# INGRESO
t = int(input('Verificar si es triangular: '))

# PROCEDIMIENTO
piso = 1
usados = 0
while (usados<t):
    usados = usados + piso
    piso = piso+1

# verifica si es triangular
if usados==t:
    estriangular = 1
else:
    estriangular = 0

# SALIDA
print(estriangular )

[ mientras-repita ] [ repita-hasta ] [ diagrama flujo ]
..


Algoritmo en Python: Bucle/Lazo Repita-hasta

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIIT2003_T2 Números triangulares
# Propuesta de solución. edelros@espol.edu.ec

# INGRESO
t = int(input('Verificar si es triangular: '))

# PROCEDIMIENTO
piso = 1
usados = 0
while not(usados>=t):
    usados = usados+piso
    piso = piso+1

# verifica si es triangular
if usados==t:
    estriangular = 1
else:
    estriangular = 0

# SALIDA
print(estriangular )

[ mientras-repita ] [ repita-hasta ] [ diagrama flujo ]
..


Diagrama de Flujo

Diagrama de Flujo de números triangulares

[ mientras-repita ] [ repita-hasta ] [ diagrama flujo ]


Propuesta de solución con diagrama de flujo, Python y otra versión con Matlab

ejercicios resueltos Python Parc_IIIT2003_T2 pdf

ejercicios resueltos Matlab parc_iiit2003_t2 pdf

[ mientras-repita ] [ repita-hasta ] [ diagrama flujo ]

s1Eva_IIT2003_T4 Juego con icosaedros

Ejercicio: 1Eva_IIT2003_T4 Juego con icosaedros

[ algoritmo ] [ diagrama flujo ]

Se propone desarrollar el tema conociendo el número n de lanzamientos que desea participar el jugador, dejando el control del juego como tarea.icosaedros

Se inicia un contador de lanzamientos y un acumulador de premios.

Un icosaedro se simula con un aleatorio para el color y otro para el número, para luego comparar éstos valores con lo simulado para el segundo icosaedro.

    d1num   = int(random.random()*5)+1
    d1color = int(random.random()*4)+1
    d2num   = int(random.random()*5)+1
    d2color = int(random.random()*4)+1

Las reglas descritas se implementan con condicionales, considerando que de cumplirse la tercera, ya se ha pagado premio por igualdad de números y color.

    if d1color==d2color:
        premio = premio+10
    if d1num==d2num:
        premio = premio+10
    if ((d1color==d2color)and(d1num==d2num)):
        premio = premio+30

Se repite el juego hasta cumplir el número de lanzamientos.

[ algoritmo ] [ diagrama flujo ]
..


Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2003_T4 Juego con icosaedros
# Propuesta solucion: edelros@espol.edu.ec
# Tarea. Completar el control del juego

import random

# INGRESO
n = int(input('Numero de lanzamientos: '))

# PROCEDIMIENTO
i = 0
premio = 0
while (i<n):
    d1num   = int(random.random()*5)+1
    d1color = int(random.random()*4)+1
    d2num   = int(random.random()*5)+1
    d2color = int(random.random()*4)+1

    if d1color==d2color:
        premio = premio+10
    if d1num==d2num:
        premio = premio+10
    if ((d1color==d2color)and(d1num==d2num)):
        premio = premio+30

    s = d1num+d2num
    r = s%2
    if r>0:
        premio = premio+5

    i = i+1

# SALIDA
print('total ganado: ')
print(premio)
print('lanzamientos: ')
print(n)

[ algoritmo ] [ diagrama flujo ]
..


Diagrama de Flujo

Diagrama de Flujo 1 – Ejercicio juego con icosaedros

continuación

Diagrama de Flujo 2 – Ejercicio juego con icosaedros

[ algoritmo ] [ diagrama flujo ]


Propuesta de solución con diagrama de flujo:

ejercicios resueltos Python parc_iit2003_t4 pdf

ejercicios resueltos Matlab parc_iit2003_t4 pdf

s1Eva_IIT2003_T3 Personas asignadas a proyectos

Ejercicio: 1Eva_IIT2003_T3 Personas asignadas a proyectos

[ algoritmo ] [ diagrama flujo ]

Ingresar los datos en una matriz, de tamaño nxm, considerando en las filas a las personas y en las columnas a los proyectos. Considera asignado 1 y no asignado como 0.

m
Matriz 1 2 3
1 0 1 0
2 1 0 0
3
Personas n 4

Para la parte b), realizar la cuenta de personas asignadas al primer proyecto. Cada resultado por columna de proyecto, se guarda como parte de un vector de participa[proyecto].

El vector de participantes es el resultado de la suma de cada columna.

Para la parte c), se requiere encontrar la carga[persona], que es la suma de cada fila. Por lo que se fija el valor de una persona, una fila, y se revisa para cada persona, todas las columnas, el valor se acumula en carga.

Se muestra solo aquellas personas que tienen carga de trabajo 0.

Tarea: Validar los datos que se ingresan a la matriz asignado[persona,proyecto]. Desarrollar la parte para c)

[ algoritmo ] [ diagrama flujo ]
..


Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2003_T3 Personas asignadas a proyectos
# Propuesta: edelros@espol.edu.ec
# Tarea: validar los datos de asignado

import numpy

# INGRESO
n = int(input('cuantas personas: '))
m = int(input('cuantos proyectos: '))
asignado = numpy.zeros((n+1,m+1),dtype=int)
persona = 1
while (persona<=n):
    proyecto = 1
    while (proyecto<=m):
        print('persona: '+str(persona)+
              ', proyecto: '+
              str(proyecto))
        asignado[persona,proyecto] = int(input(' /asignado (1/0): '))
        proyecto = proyecto + 1
    persona = persona+1

# PROCEDIMIENTO
# participantes por proyecto
participan = numpy.zeros(m+1,dtype=int)
proyecto = 1
while (proyecto<=m):
    s = 0
    persona = 1
    while (persona<=n):
        s = s + asignado[persona,proyecto]
        persona = persona+1
    participan[proyecto] = s
    proyecto = proyecto+1

# Carga de trabajo por persona
carga = numpy.zeros(n+1,dtype=int)
persona = 1
while (persona<=n):
    s = 0
    proyecto = 1
    while (proyecto<=m):
        s = s+asignado[persona,proyecto]
        proyecto = proyecto+1
    carga[persona] = s
    persona = persona+1

# SALIDA
print('Participantes/Proyecto:')
proyecto = 1
while (proyecto<=m):
    print(participan[proyecto])
    proyecto = proyecto+1

print('Persona sin carga de trabajo:')
persona = 1
while (persona<=n):
    if carga[persona]==0:
        print(persona)
    persona = persona+1

[ algoritmo ] [ diagrama flujo ]
..


Diagrama de Flujo

Diagrama de Flujo 1. Ejercicio persona asignada a proyecto
Diagrama de Flujo 2. Ejercicio persona asignada a proyecto

Tarea: Desarrollar pregunta c)

Diagrama de Flujo 3. Ejercicio persona asignada a proyecto

[ algoritmo ] [ diagrama flujo ]


Propuesta de solución con diagrama de flujo y Python: py_pdf. Otra propuesta en Matlab: m_pdf

ejercicios resueltos Python parc_iit2003_t3 pdf

ejercicios resueltos Matlab parc_iit2003_t3 pdf

s1Eva_IIT2003_T2 Sumar términos de progresión geométrica

Ejercicio: 1Eva_IIT2003_T2 Sumar términos de progresión geométrica

[ algoritmo ] diagrama flujo: [ mientras-repita ] [ repita-hasta ]

Ingresar la cantidad n de términos, el factor a y r, validando que r no sea 1.

S = \sum_{i=0}^{n} a + ar + ar^2 + ar^3 + ... + ar^n

Iniciar con 0 las variables: s que acumula términos, i como el contador de términos que adicionalmente se usa como exponente.

# PROCEDIMIENTO
s = 0
i = 0
while (i<=n):
    t = a*(r**i)
    s = s + t
    i = i + 1

Como paso siguiente, calcular cada término y acumularlos en s tantas veces como sea necesario hasta que que i llega a n.

El resultado buscado se encontrará en s.

Observe que el primer término es solo la constante a, con equivalente a r0.

[ algoritmo ] diagrama flujo: [ mientras-repita ] [ repita-hasta ]
..


Algoritmo en Python: Lazo mientras-repita

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2003_T2 Sumar términos de progresión geométrica
# Propuesta de solución. edelros@espol.edu.ec.

# INGRESO
n = int(input('¿Valor de n?: '))
a = float(input('factor a: '))
r = float(input('factor r: '))
while (r==1):
    r = int(input('factor r debe ser diferente de 1: '))

# PROCEDIMIENTO
s = 0
i = 0
while (i<=n):
    t = a*(r**i)
    s = s + t
    i = i + 1

# SALIDA
print(s)

[ algoritmo ] diagrama flujo: [ mientras-repita ] [ repita-hasta ]
..


Diagrama de Flujo: Mientras-Repita

Diagrama de Flujo 1. Suma de progresión geométrica con Mientras-Repita

[ algoritmo ] diagrama flujo: [ mientras-repita ] [ repita-hasta ]
..

Diagrama de Flujo: Repita-Hasta

Diagrama de Flujo 2. Suma de progresión geométrica con Repita-Hasta

[ algoritmo ] diagrama flujo: [ mientras-repita ] [ repita-hasta ]

Propuesta de solución con diagrama de flujo y Python: python en pdf .
Otra versión con matlab en pdf

ejercicios resueltos Python parc_iit2003_t2 pdf

ejercicios resueltos Matlab parc_iit2003_t2 pdf

[ algoritmo ] diagrama flujo: [ mientras-repita ] [ repita-hasta ]

s1Eva_IIT2003_T1 Cambiar Decimal a Octal

Ejercicio: 1Eva_IIT2003_T1 Cambiar Decimal a Octal

Empiece con los conceptos expuestos en el tema de Bases Numéricas Introducción, el ejercicio es una aplicación del tema.

En el ejercicio presentado, aún quedan partes por desarrollar:

  • validar octal de 4 dígitos
  • validar en procedimiento,
  • que los dígitos sean octales [0,7]

Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2003_T1 Cambiar Decimal a Octal
# propuesta: edelros@espol.edu.ec

#INGRESO
octal = int(input('número octal: '))

# PROCEDIMIENTO
decimal = 0
i = 0
while (octal>0):
    digito  = octal%10 # residuo
    octal   = octal//10 # cociente
    decimal = decimal + digito*(8**i)
    i = i+1

# SALIDA
print('número en decimal: ', decimal)

s1Eva_IIT2002_T4 cociente de Fibonacci

Ejercicio: 1Eva_IIT2002_T4 cociente de Fibonacci

El ejercicio es una extensión del Algoritmo – Secuencia de Fibonacci, añadiendo la operación del cociente.

Se requiere guardar valores consecutivos del cociente para comparar su diferencia hasta cumplir con la precisión requerida.

Ejemplo de ejecución de algoritmo

>>> 
precision decimal: 0.001
cociente: 0.6181818181818182
con diferencia de:  0.0005347593582887278

Se añade al algoritmo de Fibonacci el cálculo del cociente.

Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2002_T4 Cociente de Fibonacci
# propuesta: edelros@espol.edu.ec

# INGRESO
precision = float(input('precision decimal: '))

# PROCEDIMIENTO
a = 1 # Primer cociente
b = 1
c = a+b
cociente1 = a/b

a = b # Segundo cociente
b = c
c = a+b
cociente2 = a/b

diferencia = abs(cociente2-cociente1)
while not(diferencia<=precision):
    cociente1 = cociente2
    a = b
    b = c
    c = a+b
    cociente2 = a/b
    diferencia = abs(cociente2-cociente1)

# SALIDA
print('cociente:', cociente2)
print('con diferencia de: ', diferencia)

s1Eva_IIT2002_T3 Conjetura de Ullman

Ejercicio: 1Eva_IIT2002_T3 Conjetura de Ullman

Se pide un número al usuario.
Para el número seleccionado o «pensado»,
se realizan las operaciones paso a paso indicadas en el enunciado.

# INGRESO
n = int(input('piensa un número: '))

Para determinar paridad se obtiene el «residuo» de la división para 2 y así decidir cuál operación realizar.

r = n%2

Se sustituye el número por el resultado de la operación y se vuelve a aplicar si el resultado aún no es 1.

    if (r == 0): #Si es par, divídalo entre 2
        n = n//2
    else: # Si es impar... 
        n = n*3 + 1

Para conocer el número de operaciones realizadas se usa un contador.

La secuencia se puede almacenar en un vector (lista) para mostrar al final (TAREA)

Se usa un contador de operaciones para la respuesta

Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2002_T3 Conjetura de Ullman
# propuesta: edelros@espol.edu.ec
# Tarea: convertir a función

# INGRESO
n = int(input('piensa un número: '))

# PROCEDIMIENTO
contar = 0
while not(n==1):
    r = n%2
    
    if (r == 0):
        n = n//2
    else:
        n = n*3 + 1
    print(n)
    contar = contar + 1

# SALIDA
print('operaciones realizadas: ', contar)

s1Eva_IIT2002_T2 Color de placas de vehículos

Ejercicio: 1Eva_IIT2002_T2 Color de placas de vehículos

[ algoritmo ] [diagrama flujo ]

Para el ejercicio se requiere el uso de vectores para almacenar la placa de cada vehículo, para luego procesar los datos en el bloque de procedimiento. Los datos de placa se simplifican a usar solo la parte numérica, aprovechando para practicar arreglos con Numpy, por lo que primero se requiere conocer cuántos autos se van a registrar como tamaño del arreglo placa. El índice del arreglo será la posición de la placa en el arreglo.

# INGRESO
n = int(input('cuántos autos: '))

placa = numpy.zeros(n+1,dtype=int)
auto = 1
while not(auto>n):
    print('placa[',auto,']: ')
    placa[auto] = int(input('  : '))
    auto = auto+1

El contador de código de color correspondiente también se almacena como un arreglo y en la misma posición usando el índice auto

# PROCEDIMIENTO
# contadores por color
color = numpy.zeros(5+1,dtype=int)

Para el procedimiento, es necesario conocer el dígito menos significativo de la placa (unidades), extrayendo el residuo de 10 del número de placa.

digito = placa[auto]%10

Se usan condicionales para seleccionar el color que le corresponde y contar la placa de cada color asignado, según la tabla proporcionada.

dígito COLOR ¿Cuántos?
1, 2 amarillo (código 1)
3, 4 café (código 2)
5, 6 rojo (código 3)
7, 8 azul (código 4)
9, 0 verde (código 5)
    if (digito==1 or digito==2):
        color[1] = color[1]+1
    if (digito==3 or digito==4):
        color[2] = color[2]+1
    if (digito==5 or digito==6):
        color[3] = color[3]+1
    if (digito==7 or digito==8):
        color[4] = color[4]+1
    if (digito==9 or digito==0):
        color[5] = color[5]+1

Se continúa con el siguiente auto hasta completar todos los autos registrados en el arreglo.

[ algoritmo ] [diagrama flujo ]
..


Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2002_T2 Color de placas de vehículos
# propuesta: edelros@espol.edu.ec

import numpy

# INGRESO
n = int(input('cuántos autos: '))

placa = numpy.zeros(n+1,dtype=int)
auto = 1
while not(auto>n):
    print('placa[',auto,']: ')
    placa[auto] = int(input('  : '))
    auto = auto+1

# PROCEDIMIENTO
# contadores por color
color = numpy.zeros(5+1,dtype=int)

# analiza cada auto
auto = 1
while not(auto>n):
    digito = placa[auto]%10
    if (digito==1 or digito==2):
        color[1] = color[1]+1
    if (digito==3 or digito==4):
        color[2] = color[2]+1
    if (digito==5 or digito==6):
        color[3] = color[3]+1
    if (digito==7 or digito==8):
        color[4] = color[4]+1
    if (digito==9 or digito==0):
        color[5] = color[5]+1
    auto = auto+1

# SALIDA
print('Autos por cada color:')
k = 1
while not(k>5):
    print('Color tipo ',k,'= ',color[k])
    k = k+1

Podría intentar realizar el ejercicio con listas, para comparar como se aplican los conceptos.

Tarea: validar que el número de vehículos sea positivo mayor que 0, validar que sean solo tres dígitos en cada placa.

[ algoritmo ] [diagrama flujo ]
..


Diagrama de Flujo

Diagrama de Flujo 1 – Ejercicio Color de placas de automoviles

 

Diagrama de Flujo 2 – Ejercicio Color de placas de automóviles

[ algoritmo ] [diagrama flujo ]


ejercicios resueltos Python parc_iit2002_t2 pdf

ejercicios resueltos Matlab parc_iit2002_t2 pdf

s1Eva_IIT2002_T1a Crea tablas de multiplicar con strings del 1 a n

Ejercicio: 1Eva_IIT2002_T1 Crea tablas de multiplicar con strings del 1 a n

Para crear la tabla del multiplicar mostrada en la pantalla, se requiere usar una cadena de caracteres para cada operación.

El ejemplo resuelto para suma muestra el concepto a usar.
Tarea: realizar para multiplicación

 1. Mostrar una tabla de sumar
 2. Mostrar una tabla de multiplicar
 3. Salir
  --- ¿Cuál opción?: 1
 **** menú opción 1. sumar ****
 tabla del número: 3
 tabla hasta n: 12

3 + 1 = 4
3 + 2 = 5
3 + 3 = 6
3 + 4 = 7
3 + 5 = 8
3 + 6 = 9
3 + 7 = 10
3 + 8 = 11
3 + 9 = 12
3 + 10 = 13
3 + 11 = 14
3 + 12 = 15

 1. Mostrar una tabla de sumar
 2. Mostrar una tabla de multiplicar
 3. Salir
  --- ¿Cuál opción?:  

Para formar la cadena, se requiere usar el mismo tipo de datos convirtiendo cada variable numérica como numero en texto luego añadiendo (concatenando) con el símbolo suma ‘  + ‘ y así sucesivamente:

cadena = str(numero) + ' + ' +str(i) + ' = '

Al final se completa con el resultado de la operación numérica

 cadena = cadena + str(resultado)

se muestra en pantalla la cadena, cambiando el valor de la variable ‘i‘ como un contador en un bucle/lazo.

ReferenciaMenú en Python – Condicionales «elif» semejante a «case»

Algoritmo en Python: condicionales elif

# 1Eva_IIT2002_T1a Tablas de multiplicar
# Ejemplo de un menu
# las opciones se proponen por caracteres
# menu
opcion = '0'
while not(opcion=='3'):
    print(' 1. Mostrar una tabla de sumar')
    print(' 2. Mostrar una tabla de multiplicar')
    print(' 3. Salir')

    opcion=input('  --- ¿Cuál opcion?: ')
    
    if (opcion=='1'):
        print(' **** menú opción 1. sumar ****')
        numero = int(input(' tabla del número: '))
        n = int(input(' tabla hasta n: ' ))

        # PROCEDIMIENTO
        i = 1
        while i<=n:
            resultado = numero + i
            cadena = str(numero) + ' + ' +str(i) + ' = '
            cadena = cadena + str(resultado)
            print(cadena)
            i = i+1
        
    elif (opcion=='2'):
        print(' **** menú opción 2. multiplicar ****')
        print('desarrolle como tarea')
        
    elif (opcion=='3'):
        print(' **** menú opción 3. Salir ****')
        print(' **** Saliendo del menú  ****')
        print(' **** Ejemplo de un menú ****')

    else:
        print('No existe la opción en el menú')