Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 1- - Dpto. de Informática-
RESOLUCIÓN DEL SEGUNDO PARCIAL
Ejercicio 1: Dado el siguiente algoritmo y subalgoritmo:
SUBALGORITMO “CARGAR” (out Car : arreglo de carácter, in Li1 : entero, in Ls1 : entero)
COMENZAR
i : entero
PARA i DESDE Li1 HASTA (Ls1-1) CON PASO 1 HACER
LEER Car [ i]
MIENTRAS Car[i] = '*' HACER
LEER Car [ i]
FINMIENTRAS
Si Car[i] = 'a' ENTONCES
Car[i] ←'1'
SINO
Si Car[i] = 'o' ENTONCES
Car[i] ← '4'
SINO
Si Car [ i] = 'u' ENTONCES
Car[i] ← '5'
FINSI
FINSI
FINSI
FINPARA
Car[i] ← '*'
FIN
ALGORITMO "PAL"
COMENZAR
Car1: arreglo [1..5] de carácter
Pos: arreglo [1..4] de entero
i , Aux : entero
CARGAR (Car1,1,5)
i ← 1
Aux ← 0
MIENTRAS (Car1[i] <> '*') HACER
SI (Car1[i] = '1' V Car1[i] = '4' V Car1[ i] = '5') ENTONCES
Aux ← Aux + 1
Pos[i] ← i
FINSI
i ← i + 1
FINMIENTRAS
ESCRIBIR “Posiciones de los caracteres modificados:”
PARA i DESDE 1 HASTA Aux CON PASO 1 HACER
Escribir Pos[i]
FINPARA
FIN
Se pide:
a) Realice el diagrama de flujo del programa completo.
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 2- - Dpto. de Informática-
Algoritmo “PAL”
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 3- - Dpto. de Informática-
Subalgoritmo “CARGAR”
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 4- - Dpto. de Informática-
b) Ejecute el programa para los valores de entrada ‘H’, ‘u’, ‘*’, ‘m’, ‘o’ (en ese orden).
ACCIONES
Car1 Pos i Aux SUBALGORITMO “CARGAR”
PANTALLA 1 2 3 4 5 1 2 3 4 Car Li1 Ls1 i
1 2 3 4 5
CARGAR(Car1,1,5) 1 5
i ←Li1 1
i <=(Ls1-1)? V
Leer Car[i] ‘H’
Car[i] = ‘*’ ? F
Car[i]= ‘a’? F
Car[i] = ‘o’? F
Car[i]= ‘u’? F
i←i+1 2
i <= (Ls1-1) ? V
Leer Car[i] ‘u’
Car[i]= ‘*’? F
Car[i]= ‘a’? F
Car[i] = ‘o’ ? F
Car[i]= ‘u’ ? V
Car[i] ← ‘5’ ‘5’
i ←i+1 3
i <=(Ls1-1) ? V
Leer Car[i] ‘*’
Car[i]= ‘*’ ? V
Leer Car[i] ‘m’
Car[i] = ‘*’ ? F
Car[i] = ‘*’ ? F
Car[i]= ‘a’ ? F
Car[i] = ‘o’ ? F
Car[i]= ‘u’ ? F
i ←i+1 4
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 5- - Dpto. de Informática-
i<=(Ls1-1) ? V
Leer Car[i] ‘o’
Car[i] = ‘*’ ? F
Car[i]= ‘a’ ? F
Car[i] = ‘o’ ? V ‘4’
i ←i+1 5
i <=(Ls1-1) ? F
Car[i] ← ‘*’ ‘*’
Out Car1 ‘H’ ‘5’ ‘m’ ‘4’ ‘*’
i ←1 1
Aux ←0 0
Car1[i] <> ‘*’ ? V
(Car1[i] = ‘1’ ∨ Car1[i] = ‘4’ ∨ Car1[i] = ‘5’) ? F
i ←i+1 2
(Car1[i] = ‘1’ ∨ Car1[i] = ‘4’ ∨ Car1[i] = ‘5’) ? V
Aux ← Aux+1 1
Pos[i] ←i 2
i ←i+1 3
Car1[i] <> ‘*’ ? V
(Car1[i] = ‘1’ ∨ Car1[i] = ‘4’ ∨ Car1[i] = ‘5’) ? F
i ←i+1 4
Car1[i] <> ‘*’ ? V
(Car1[i] = ‘1’ ∨ Car1[i] = ‘4’ ∨ Car1[i] = ‘5’) ? V
Aux ←Aux+1 2
Pos[i] ←i 4
i ←i+1 5
Car1[i] <> ‘*’ ? F
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 6- - Dpto. de Informática-
ESCRIBIR “Posiciones de los caracteres modificados: ”
Posiciones de los caracteres modificados:
i ←1 1
i <=2 ? V
ESCRIBIR Pos[i] “”
i ←i+1 2
i <=2 ? V
ESCRIBIR Pos[i] 2
i ←i+1 3
i <=2 ? F
VALORES FINALES ‘H’ ‘5’ ‘m’ ‘4’ ‘*’ 2 4 3
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 7- - Dpto. de Informática-
Ejercicio 2: Diseñar y codificar, en Lenguaje de Diseño, un algoritmo que permita ingresar dos
secuencias de hasta 50 enteros cada una. Luego debe permitir reemplazar un número cualquiera x
(indicado por el usuario) por su cuadrado correspondiente o su valor absoluto en caso de ser negativo.
Para el desarrollo del algoritmo deberá tener en cuenta, además, las siguientes premisas:
a) El ingreso de la primera secuencia de números debe hacerse en las posiciones pares de la estructura
de datos mientras que la segunda secuencia debe almacenarse en las posiciones impares.
b) El reemplazo de x debe hacerse para cada aparición de x.
c) Definir un único subalgoritmo que permita el Ingreso de una secuencia de números e invocarlo
adecuadamente para el ingreso de cada secuencia.
d) Definir un subalgoritmo Reemplazo que calcule el cuadrado de un número positivo o el valor
absoluto de un número negativo, según sea el caso. El valor calculado debe reemplazar al valor original.
e) Definir un subalgoritmo que permita Buscar un numero x e invoque al subalgoritmo Reemplazo
con cada aparición de x.
SUBALGORITMO “CARGAR” (out Arr: arreglo de entero, in Li, Ls, P: entero)
COMENZAR
I: entero
PARA I DESDE Li HASTA Ls CON PASO P HACER
LEER Arr[I]
FINPARA
FIN
SUBALGORITMO “REEMPLAZO” (inout x: entero)
COMENZAR
SI (x>0) ENTONCES
x ← x↑ 2
SINO
x ←ABS(x)
FINSI
FIN
SUBALGORITMO “BUSCAR” (inout Arr: arreglo de entero, in Li, Ls, P, X: entero)
COMENZAR
I:entero
PARA I DESDE Li HASTA Ls CON PASO P HACER
SI Arr[I]=X ENTONCES
REEMPLAZO (Arr[I])
FINSI
FINPARA
FIN
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 8- - Dpto. de Informática-
ALGORITMO “PRINCIPAL”
COMENZAR
A: Arreglo [1..100] de entero
R, cant1, cant2: entero
ESCRIBIR “Ingrese la cantidad de números de la primera secuencia”
LEER cant1
MIENTRAS cant1 < 0 V cant1 > 50 HACER
ESCRIBIR “Ingrese la cantidad de números de la primera secuencia”
LEER cant1
FINMIENTRAS
ESCRIBIR “Ingrese la cantidad de números de la segunda secuencia”
LEER cant2
MIENTRAS cant2 < 0 V cant2 > 50 HACER
ESCRIBIR “Ingrese la cantidad de números de la primera secuencia”
LEER cant2
FINMIENTRAS
CARGAR (A, 2, cant1, 2)
CARGAR (A, 1, cant2, 2)
ESCRIBIR “¿Qué número desea reemplazar?”
LEER R
BUSCAR (A, 1, cant1+cant2, 1, R)
FIN
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 9- - Dpto. de Informática-
Ejercicio 3: Se necesita almacenar datos relacionados al índice de abandono escolar en 3 escuelas técnicas de la ciudad. Cada institución ha proporcionado los
siguientes datos: la cantidad de alumnos, discriminada por año escolar (de 1er año a 6to año) y el índice de población de cada curso (correcto, excedido). Se
debe tener en cuenta que por cada ano se tiene dos divisiones.
Se pide diseñar y dibujar de qué manera sería apropiado estructurar el almacenamiento de los datos. Justifique su respuesta. No se pide realizar NINGÚN
algoritmo.
15 1 20 1 36 0 40 0 23 1 18 0 25 0 19 0 27 1 30 1 23 0 28 1 ………………
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ……………… 72
El arreglo para guardar los datos será de 72 posiciones de tipo ENTERO.
Es mejor que sea un único arreglo porque luego si se quiere agregar una escuela nueva será más fácil, solamente debo cambiar el límite del arreglo.
El límite del arreglo se calculó así:
3 escuelas, de 6 cursos, con 2 divisiones cada curso, y 2 datos por división:
3 * (6 * (2 *2))
El dato que se guarda se codificó de la siguiente manera:
0 – Curso Excedido
1 – Curso correcto
Para acceder a los datos podemos recorrer el arreglo con paso 24 (para recorrer por escuela)
Luego en forma anidada recorrer en paso 4 para recorrer cada año, las primeras 2 posiciones corresponderán a la cantidad de alumnos e índice de la división 1
y las 2 segundas a lo propio de la división 2.
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 10- - Dpto. de Informática-
Ejercicio 3: Lea cuidadosamente el siguiente código expresado en Lenguaje de Diseño. Para que funcione correctamente el programa se pide:
SUBALGORITMO "MOSTRAR" (<definir los parámetros formales correspondientes>)
COMENZAR
ESCRIBIR "Se calculó el siguiente interés a pagar:", Interes
ESCRIBIR "La cantidad de cuotas a pagar es:", Cuota
ESCRIBIR "Monto total a pagar:", Monto
FIN
SUBALGORITMO "PROCESO" «definir los parámetros formales correspondientes>)
<declarar las variables que crea necesarias>
<inicializar o pedir datos para los casos que lo crea necesario>
COMENZAR
SI (Aux1 > 2000 Λ Aux2 = 3) HACER
Aux3 ← (15 * Aux3)/100
Aux1 ← Aux1 + Aux3
FINSI
SI (Auxl > 2000 Λ Aux2 = 6) HACER
Aux3 ← (23 * Aux3)/100
Aux1 ← Aux1 + Aux3
FINSI
Mostrar (complete correctamente)
FIN
ALGORITMO "DATOS"
COMENZAR
<declarar las variables que crea necesarias>
<inicializar o pedir datos para los casos que lo crea necesario>
Proceso (complete correctamente)
FIN
a) Definir los parámetros formales, indicando la clase y el tipo de parámetros adecuado a cada uno de ellos.
b) Definir e inicializar las variables que considere necesarias. c) Completar correctamente la invocación de cada subalgoritmo.
SUBALGORITMO "MOSTRAR" (in Interes, Monto: real, in Cuota: entero)
COMENZAR
ESCRIBIR "Se calculó el siguiente interés a pagar:", Interes
ESCRIBIR "La cantidad de cuotas a pagar es:", Cuota
ESCRIBIR "Monto total a pagar:", Monto
FIN
SUBALGORITMO "PROCESO" (in Aux1: real, in Aux2: entero)
Aux3: real
Aux3 ← 0
COMENZAR
SI (Aux1 > 2000 Λ Aux2 = 3) HACER
Aux3 ← (15 * Aux3)/100
FINSI
SI (Auxl > 2000 Λ Aux2 = 6) HACER
Aux3 ← (23 * Aux3)/100
FINSI
Mostrar (Aux3, Aux1, Aux2)
FIN
ALGORITMO "DATOS"
COMENZAR
M: real
C: entero
ESCRIBIR “Ingrese el monto”
LEER M
MIENTRAS M < 0 HACER
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 11- - Dpto. de Informática-
ESCRIBIR “Ingrese el monto nuevamente”
LEER M
FINMIENTRAS
ESCRIBIR “Ingrese la cantidad de cuotas”
LEER C
MIENTRAS C < 0 HACER
ESCRIBIR “Ingrese la cantidad de cuotas nuevamente”
LEER C
FINMIENTRAS
Proceso (M, C)
FIN
Ejercicio 5:
a) Simbolizar las siguientes frases utilizando cuantificadores, variables, constantes, símbolos de
función y símbolos de predicado. Para cada una de ellas definir el vocabulario a necesario para
que sean formulas del lenguaje de primer orden La y aclarar sobre que universo trabaja:
1. Si una persona es famosa, tiene cuenta de Instagram.
Universo: Las personas
F = conjunto vacío
P = {R, S} pertenecen al universo personas
R(x)= {x/x es famoso}
S(x)= {x/x tiene cuenta de Instagram}
C = conjunto vacío
(R(x) → S(x))
2. No toda función tiene derivada.
Universo: Las funciones
F = conjunto vacío
P = {Q} pertenece al universo funciones
Q(x) = {x/x tiene derivada}
C = conjunto vacío
(∃(x) ¬Q(x))
b) Sea el lenguaje de primer orden La cuyo vocabulario a contiene un símbolos de función l
(unaria), un símbolo de constante a y dos símbolos de relación binarios T y P.
Se pide:
Decidir cuáles de las siguientes expresiones pertenecen al lenguaje y cuáles no. Para el caso que
pertenezcan al lenguaje determinar si son términos, formulas atómicas o formulas. Para las que
no pertenezcan al lenguaje indique el/los motivo/s.
Resolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática Año 2017
- Segundo Parcial- - 12- - Dpto. de Informática-
1. (∀zT(l(z), l(a))) Pertenece y es ENUNCIADO ya que no tiene variables libres.
2. (∀a(P(y, x) ∨ (¬T(y) ∨ l(P(x))))) No pertenece ya que: P y T son predicados binarios, no se
pueden cuantificar constantes y el argumento de una función no puede ser un predicado.
3. P(l(y), x) Pertenece y es una fórmula atómica