RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1:...

12
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.

Transcript of RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1:...

Page 1: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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.

Page 2: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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”

Page 3: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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”

Page 4: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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

Page 5: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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

Page 6: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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

Page 7: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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

Page 8: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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

Page 9: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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.

Page 10: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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

Page 11: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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.

Page 12: RESOLUCIÓN DEL SEGUNDO PARCIAL Ejercicio 1: …dirinfo.unsl.edu.ar/.../ea1a5-resolucion-2parcial.pdfResolución de Problemas y Algoritmos - Ing. en Computación e Ing. en Informática

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