1Eva_IT2001_T6 Piloto y copiloto para nave

Parcial II Término 2001 – 2002. Diciembre 11, 2001 /ICM00794

Tema 6. (20 puntos) Una nave extraterrestre tiene una capacidad disponible de K Kg (K es una constante real de 150 Kg) y disponen de una lista del peso en Kg de n seres humanos diferentes. capsula espacial dibujo

Escriba un algoritmo en pseudo código que haga lo siguiente:

  • Ingresar en un arreglo los pesos de n personas.
  • Presentar todas las parejas tal que la suma de sus pesos sea menor que una constante K=150.
  • Presente también la suma mas grande encontrada.

1Eva_IT2001_T5 Verificar divisibilidad para 9

Parcial II Término 2001 – 2002. Diciembre 11, 2001 /ICM00794

Tema 5. (20 puntos) «Un entero es divisible para 9 si lo es la suma de sus cifras

Escriba un diagrama de flujo que lea un numero N y sume sus cifras, si el resultado es mayor que 9 nuevamente sume sus cifras hasta obtener un número de un solo dígito.

Si este es el número 9 muestre el mensaje » EL NUMERO N ES DIVISIBLE PARA 9″.

Ejemplo:
N = 15478
    1+5+4+7+8 = 25
    2+5 = 7 
En este ejemplo el numero N no es divisible para 9

propuesta: m_pdf, py_pdf, sol_py

1Eva_IT2001_T4 Convertir bloque «Para» en «mientras repita»

Parcial II Término 2001 – 2002. Diciembre 11, 2001 /ICM00794

Tema 4. (10 puntos) Convertir una estructura de repetición incremental para... a una estructura de repetición condicional mientras ...

n ← 10
s ← 0
para (p←1;p<=10;p←p+1)
    s←s+2;
fin

completar las líneas como un mientras:

n ← 10
s ← 0
................
................
................
................
................

1Eva_IT2001_T3 Prueba de escritorio, algoritmo

Parcial II Término 2001 – 2002. Diciembre 11, 2001 /ICM00794

Tema 3. (10 puntos) Realice la prueba de escritorio en el siguiente programa en pseudocódigo y escriba el valor de s al final del proceso

inicio
n ← 4321
s ← 0
{repita
    u ← n mod 10 //residuo de división entera n/10
    s ← s+u
    n ← n div 10 //división entera
} hasta(n<=0)
presentar s
fin
n s u
4321 0

1Eva_IT2001_T2 Temas de conceptos

Parcial II Término 2001 – 2002. Diciembre 11, 2001 /ICM00794

Tema 2. (10 puntos) Complete los espacios:

a) El sistema numérico de base 2 utilizando por el computador se conoce como ……………….

b) En un conjunto de instrucciones de CPU, cada instrucción se expresa en ………….

c) ………………. es el código más común para los caracteres.
d) Un programa en C++ inicia la ejecución con la función …………………………………..

e) Los niveles de lenguaje de programación que existen son ………………………., y ……………………

f) La unidad o componente del computador que toma decisiones lógicas es …………………………….

g) Cualquier programa o algoritmo puede implementarse en términos de la estructuras de control ……….

h) La programación estructurada se caracteriza por el uso de………………………….

1Eva_IT2001_T1 Cambio de base numérica

Parcial II Término 2001 – 2002. Diciembre 11, 2001 /ICM00794

Tema 1. (10 puntos) Convertir los siguientes números a la base como se indica:

a) 324A16 a base 10 ………………..
b) 34910 a base 2 ………………..
c) 458 a base 10 ………………..
d) 1011018 a base 10 ………………..
e) 1101100001112 a base 10 ………………..

 

s2Eva_IIT2001_T4 Control de habitaciones en una clínica

Ejercicio: 2Eva_IIT2001_T4 Control de habitaciones en una clínica

Propuesta de solución en Python:

Se plantea usar una lista para los datos de paciente y un arreglo para la ocupación de las habitaciones.

Paciente
cédula nombre código
1234 Juan 2
456 Maria 8

La lista de pacientes empieza vacia paciente=[] y se añaden datos con cada ingreso de paciente a la clínica. paciente.append()

Habitación
código 1 2 7 8
ocupada 0 1 0 1

 

El arreglo de habitaciones se inicializa en la opción=1 con el número de habitaciones disponibles en el edificio. Como el edificio tiene un número de habitaciones fija, se inicializa como un arreglo de tamaño n, con valores ceros al iniciar con todas las habitaciones vacias.

Instrucciones en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2001_T4 Control de habitaciones en una clínica
# Tarea: abrir archivo de datos

import numpy as np

paciente=[]

# menu
opcion = '0'
while not(opcion=='6'):
    print(' 1. Ingresar habitaciones')
    print(' 2. Ingresar paciente y asignar habitación')
    print(' 3. Dar de alta a paciente, habitacion libre')
    print(' 4. Guardar datos de paciente')
    print(' 5. Abrir datos de pacientes')
    print(' 6. Salir')

    opcion = input('cual opcion: ')
    
    if (opcion=='1'):
        print(' **** 1. Ingresar habitaciones ****')
        n = int(input('cuantas:'))
        habitacion = np.zeros(n,dtype=int)
        print(habitacion)
        
    if (opcion=='2'):
        print(' **** 2. Ingresar paciente y asignar habitación ****')
        cedula = input('cedula: ')
        nombre = input('nombre: ')
        codigo = int(input('cual habitación: '))
        while (habitacion[codigo]==1):
            print(' la habitacion está ocupada,..')
            codigo = int(input('cual habitación: '))
            
        registro = [cedula,nombre,codigo]
        paciente.append(registro)

        habitacion[codigo] = 1

        print(paciente)
        
    if (opcion=='3'):
        print(' **** 3. Dar de alta a paciente, habitacion libre ****')
        print(paciente)
        cualpaciente=int(input(' numero paciente:'))
        donde=paciente[cualpaciente][2]
                
        if (habitacion[donde]==1):
            habitacion[donde] = 0
            paciente[cualpaciente][2] = 0
        else:
            print(' la habitacion no tiene paciente')
        print(habitacion)

    if (opcion=='4'):
        
        print(' **** 4. Guardar archivo ****')
        # trabajar con un archivo
        archivo = open('pacientes.txt','w')

        n = len(paciente)
        fila = 0
        while not(fila>=n):

            # Crea linea de texto con datos
            # para un registro, separada por comas
            registro = paciente[fila][0]+',' + paciente[fila][1] +','
            registro = registro +',' +str(paciente[fila][2]) +'\n'

            # Escribe registro en una línea del archivo
            archivo.write(registro)
            fila = fila+1
            
        archivo.close()     # Cierra el archivo 

    if (opcion=='5'):
        print(' 5. **** Abrir archivo ****')
        print(' # TAREA, COMPLETAR EL PROCESO')
                
    if (opcion=='6'):
        print(' 6. **** Salir ****')

completar la tarea.

resultado del algoritmo

 1. Ingresar habitaciones
 2. Ingresar paciente y asignar habitación
 3. Dar de alta a paciente, habitacion libre
 4. Guardar datos de paciente
 5. Abrir datos de pacientes
 6. Salir
cual opcion: 1
 **** 1. Ingresar habitaciones ****
cuantas:10
[0 0 0 0 0 0 0 0 0 0]
 1. Ingresar habitaciones
 2. Ingresar paciente y asignar habitación
 3. Dar de alta a paciente, habitacion libre
 4. Guardar datos de paciente
 5. Abrir datos de pacientes
 6. Salir
cual opcion: 1
 **** 1. Ingresar habitaciones ****
cuantas:10
[0 0 0 0 0 0 0 0 0 0]
 1. Ingresar habitaciones
 2. Ingresar paciente y asignar habitación
 3. Dar de alta a paciente, habitacion libre
 4. Guardar datos de paciente
 5. Abrir datos de pacientes
 6. Salir
cual opcion: 2
 **** 2. Ingresar paciente y asignar habitación ****
cedula: 123
nombre: Juan
cual habitación: 8
[['123', 'Juan', 8]]
 1. Ingresar habitaciones
 2. Ingresar paciente y asignar habitación
 3. Dar de alta a paciente, habitacion libre
 4. Guardar datos de paciente
 5. Abrir datos de pacientes
 6. Salir
cual opcion: 2
 **** 2. Ingresar paciente y asignar habitación ****
cedula: 234
nombre: Maria
cual habitación: 8
 la habitacion está ocupada,..
cual habitación: 7
[['123', 'Juan', 8], ['234', 'Maria', 7]]
 1. Ingresar habitaciones
 2. Ingresar paciente y asignar habitación
 3. Dar de alta a paciente, habitacion libre
 4. Guardar datos de paciente
 5. Abrir datos de pacientes
 6. Salir
cual opcion: 3
 **** 3. Dar de alta a paciente, habitacion libre ****
[['123', 'Juan', 8], ['234', 'Maria', 7]]
 numero paciente:0
[0 0 0 0 0 0 0 1 0 0]
 1. Ingresar habitaciones
 2. Ingresar paciente y asignar habitación
 3. Dar de alta a paciente, habitacion libre
 4. Guardar datos de paciente
 5. Abrir datos de pacientes
 6. Salir
cual opcion: 4
 **** 4. Guardar archivo ****
 1. Ingresar habitaciones
 2. Ingresar paciente y asignar habitación
 3. Dar de alta a paciente, habitacion libre
 4. Guardar datos de paciente
 5. Abrir datos de pacientes
 6. Salir
cual opcion: 5
 5. **** Abrir archivo ****
 # TAREA, COMPLETAR EL PROCESO
 1. Ingresar habitaciones
 2. Ingresar paciente y asignar habitación
 3. Dar de alta a paciente, habitacion libre
 4. Guardar datos de paciente
 5. Abrir datos de pacientes
 6. Salir
cual opcion: 6
 6. **** Salir ****
>>> 

s2Eva_IIT2001_T3 Flujo de ahorro para n años

Ejercicio: 2Eva_IIT2001_T3 Flujo de ahorro para n años

Propuesta de solución en Python:

Se crea una funcion para evaluar el flujo de efectivo del periodo usando los valores anteriores. Con lo que se puede aplicar a cada valor de capital Ck de la tabla ingresada en el bloque de inicio.

Flujo de efectivo usando arreglos

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2001_T3 Flujo de ahorro para n años
# TAREA: continuar para otros valores k
import numpy as np

# literal a. función recursiva

def flujo(k,i1,i2,c):

    if (k>0):
        if (flujo(k-1,i1,i2,c)>=0):
            resultado = (1+i1)*flujo(k-1,i1,i2,c)+c[k]
        else:
            resultado = (1+i2)*flujo(k-1,i1,i2,c)+c[k]

    if (k==0):
        resultado = 0
    return(resultado)


# literal b. PROGRAMA

# INGRESO
k  = int(input('cual año: '))
i1 = float(input('tasa i1: '))
i2 = float(input('tasa i2: '))

c = np.array([-500, 300, 600, -200,
              300, -200, -300, 350])

# valores de c[k]
##n = int(input(' cuantos años: '))
##c = np.zeros(n,dtype=float)
##for anio in range(0,n,1):
##    c[anio] = float(input('c['+str(anio)+']: '))

# PROCEDIMIENTO
valor = flujo(k,i1,i2,c)
# TAREA: continuar para otros valores k

#SALIDA
print('valor: ', valor)

Resultado del algoritmo

Tomando como punto de partida los saldos «c» del enunciado

  • en el año 1, como el saldo del año anterior fué negativo, no se pagan intereses, por lo que el saldo es el mismo del año, 300 dólares
  • en el año 2, como el saldo del año anterior fué positivo, se reciben intereses del saldo, que corresponden a 18 dólares.
cual año: 0
tasa i1: 0.05
tasa i2: 0.10
valor:  0
>>> 
cual año: 1
tasa i1: 0.06
tasa i2: 0.10
valor:  300.0
>>> 
cual año: 2
tasa i1: 0.06
tasa i2: 0.10
valor:  918.0
>>> 
cual año: 3
tasa i1: 0.06
tasa i2: 0.10
valor:  773.08
>>> 

s2Eva_IIT2001_T2 Contar puntos aleatorios en un triángulo

Ejercicio: 2Eva_IIT2001_T2 Contar puntos aleatorios en un triángulo

Se cuentan los puntos que caen el el área marcada en verde que se encuentra debajo de:

f(x)= -x+10

siendo el intervalo [a,b] con valores de a = 0 y b=10, la mitad corresponde a  (a+b)/2

Como las áreas consideradas corresponden a dos sectores, considere usar x entre[a,mitad] y entre [mitad, b], limitados en y por la línea f(x)

Un resultado gráfico, no requerido para el ejercicio, tan solo para mejor comprensión:

de n puntos:  100
 dentro estaban:  25
>>> 

Intrucciones en Python

# 2Eva_IIT2001_T2 Contar puntos aleatorios 
# dentro de área triángular
import random as rnd
import numpy as np
import matplotlib.pyplot as plt

# INGRESO
n = 100
a = 0
b = 10

# función a evaluar
f = lambda x: -x+10

# PROCEDIMIENTO
mitad = (a+b)/2
X = []
Y =[]
dentro = 0
i = 0
while not(i>=n):
    xi = rnd.random()*(b-a)+0
    yi = rnd.random()*(b-a)+0
    limite = f(xi)
    if xi>mitad and yi<=limite:
        dentro = dentro +1
    if xi<=mitad and yi<=limite and yi>=mitad:
        dentro = dentro +1
    X.append(xi)
    Y.append(yi)
    i = i+1

# SALIDA
print(' de n puntos: ', n)
print(' dentro estaban: ', dentro)


# Grafica
plt.scatter(X,Y)
xi = np.linspace(a,b,n+1)
plt.plot(xi,f(xi))
plt.axhline(mitad)
plt.axvline(mitad)
plt.xlim(a,b)
plt.ylim(a,b)
plt.xlabel('xi')
plt.ylabel('yi')
plt.show()

s1Eva_IT2001_T5 Verificar divisibilidad para 9

Ejercicio: 1Eva_IT2001_T5 Verificar divisibilidad para 9

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

Para la separación de los dígitos de un número entero se usa el residuo de la división para 10.

Por ejemplo:

para el número 15,
el residuo para 10 es 5
y el cociente es 1

La instrucción en Python que obtiene el residuo es

digito = numero%10

y la que obtiene el cociente

numero = numero//10

Una respuesta simplificada es un valor de verdad 1 o 0 para verdadero y falso, que es la que se usa en éste ejemplo.

Lazo mientras-repita

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2001_T5 Verificar divisibilidad para 9
# Propuesta de solución. edelros@espol.edu.ec

# INGRESO
numero = int(input('Número a verificar divisibilidad 9: '))

# PROCEDIMIENTO
sumacifra = 0
# Extrae las cifras
while (numero>0):
    digito    = numero%10
    sumacifra = sumacifra+digito
    numero    = numero//10

if (sumacifra>9):
    numero = sumacifra
    sumacifra = 0
    while (numero>0):
        digito    = numero%10
        sumacifra = sumacifra+digito
        numero    = numero//10

if (sumacifra==9):
    respuesta = 1
else:
    respuesta = 0

# SALIDA
print(respuesta)

lazo repita-hasta

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2001_T5 Verificar divisibilidad para 9
# Propuesta de solución. edelros@espol.edu.ec

# INGRESO
numero=int(input('Numero a verificar divisibilidad 9: '))

# PROCEDIMIENTO
sumacifra=0
# Extrae las cifras
while not(numero==0):
    digito=numero%10
    sumacifra=sumacifra+digito
    numero=numero//10

if (sumacifra>9):
    numero=sumacifra
    sumacifra=0
    while not(numero==0):
        digito=numero%10
        sumacifra=sumacifra+digito
        numero=numero//10

if (sumacifra==9):
    respuesta=1
else:
    respuesta=0

# SALIDA
print(respuesta)

Diagrama de Flujo

Diagrama de Flujo 1. Ejercicio Verificar divisibilidad para 9 con Mientras-repita

con estructura Repita-Hasta

Diagrama de Flujo 2 – Ejercicio Verificar divisibilidad para 9 con Repita-Hasta

ejercicios resueltos Python Parc_IIT2001_T5 pdf

ejercicios resueltos Matlab parc_iit2001_t5 pdf