0 Practica 3 282
0 Practica 3 282
0 Practica 3 282
CARRERA DE INFORMATICA
PRACTICA Nro. 3
Universitaria: Mamani Quispe Maria Luisa
Carrera: Informática
Docente: Ph.D. Yohoni Cuenca Sarzuri
Materia: INF – 282 “ESPECIFICACIONES FORMALES Y
VERIFICACION”
Auxiliar: Rolando Troche Venegas
Fecha: 31/05/2019
LENGUAJE Z
INTRODUCCION A Z
SOLUCION:
a) 𝒊 donde: 𝒊 = 𝟏, 𝟐, 𝟑, … , 𝒏
Por tanto pertenece al tipo de conjunto ℕ
b) 𝒊 ∗ 𝒋
𝑪𝒐𝒏𝒋𝒖𝒏𝒕𝒐 𝒅𝒆 ℕ:
𝒊 = (𝟏, 𝟐, 𝟑, … , 𝒎)
𝒋 = (𝟏, 𝟐, 𝟑, … , 𝒏)
𝒊 ∗ 𝒋 = {(𝟏, 𝟏), (𝟏, 𝟐), (𝟏, 𝟑), … , (𝒎, 𝟏), (𝒏, 𝟐), … , (𝒎, 𝒏)}
c) {𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐}
Libro
L1 𝐿𝑖𝑏𝑟𝑜 = { 𝑐𝑜𝑛𝑗𝑢𝑛𝑡𝑜 𝑑𝑒 𝑙𝑖𝑏𝑟𝑜}
L2
.
𝑒𝑛_𝑝𝑟𝑒𝑠𝑡𝑎𝑚𝑜 ∶ ℙ𝐿𝑖𝑏𝑟𝑜
.
. Por tanto {𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐} es de tipo “Libro”
Ln
d) {𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐} ∪ {𝒃}
e) 𝒊 + 𝒋
f) {𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔} ∩ {𝒂}
2. Dadas las declaraciones del problema 1, determinar cuáles de las expresiones siguientes
son aceptables y por qué son aceptable desde el punto de vista de una comprobación
estricta de tipos de conjunto.
a) 𝒊 = 𝒋
b) 𝒂 ∈ 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔
c) 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔 ⊂ 𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐
d) 𝒂, 𝒃
e) 𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐 ⊆ 𝒍𝒊𝒃𝒓𝒐𝒔
f) 𝒊 ∈ 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔
SOLUCION:
a) 𝒊 = 𝒋
b) 𝒂 ∈ 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔
c) 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔 ⊂ 𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐
(ACEPTABLE), porque “Autores” están relacionados con “Libro”, porque son pares
ordenados.
e) 𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐 ⊆ 𝒍𝒊𝒃𝒓𝒐𝒔
f) 𝒊 ∈ 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔
ESQUEMAS
1. Este problema se preocupa de controlar el número de pasajeros que están en un
autobús. El autobús tiene un número fijo de asientos y cada pasajero tiene que
tener un asiento en el autobús. Por sencillez, se supone que los asientos no están
numerados y que los pasajeros se sientan en el orden en el que llegan. Para este
sistema:
SOLUCION:
a. Definir sus propiedades invariantes
Autobús
𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜: ℙ 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝐵𝑢𝑠: ℕ
# 𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜 ≤ 𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝐵𝑢𝑠
b. Definir un estado inicial
Estado_Inicial
𝐴𝑢𝑡𝑜𝑏𝑢𝑠
𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜 = 0
Sube_Pasajero
∆ 𝐴𝑢𝑡𝑜𝑏𝑢𝑠
𝑝? : 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
Deja_Autobus
∆ 𝐴𝑢𝑡𝑜𝑏𝑢𝑠
𝑝? : 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜′ = 𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜 \ { 𝑝? }
Nro_Pasajeros
Ξ 𝐴𝑢𝑡𝑜𝑏𝑢𝑠
𝑛! : ℕ
𝑛! = # 𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜
f. Definir una operación de consulta para determinar si una persona en
particular está en el autobús
Verificar
Ξ 𝐴𝑢𝑡𝑜𝑏𝑢𝑠
𝑚𝑒𝑛! : 𝑀𝑒𝑛𝑠𝑎𝑗𝑒
𝑝? : 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝑚𝑒𝑛𝑠𝑎𝑗𝑒: ≔ si / no
RELACIONES
SOLUCION:
Parqueo
𝑒𝑚𝑝𝑙𝑒𝑎𝑑𝑜: ℙ 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛: 𝐸𝑠𝑡𝑎𝑐𝑖𝑜𝑛𝑎𝑚𝑖𝑒𝑛𝑡𝑜 ⟷ 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒, 𝑜𝑐𝑢𝑝𝑎𝑑𝑜: ℙ 𝐸𝑠𝑡𝑎𝑐𝑖𝑜𝑛𝑎𝑚𝑖𝑒𝑛𝑡𝑜
𝒆𝒎𝒑𝒍𝒆𝒂𝒅𝒐 = 𝟎
𝒂𝒔𝒊𝒈𝒏𝒂𝒄𝒊𝒐𝒏 = 𝟎
𝒅𝒊𝒔𝒑𝒐𝒏𝒊𝒃𝒍𝒆 = 𝟎
𝒐𝒄𝒖𝒑𝒂𝒅𝒐 = 𝟎
Desocupa_Plaza_Tres
∆ 𝑃𝑎𝑟𝑞𝑢𝑒𝑜
𝑠? ∶ 𝑬𝒔𝒕𝒂𝒄𝒊𝒐𝒏𝒂𝒎𝒊𝒆𝒏𝒕𝒐
𝑝1?, 𝑝2? , 𝑝3? : 𝑷𝒆𝒓𝒔𝒐𝒏𝒂
𝑠? ∈𝑜𝑐𝑢𝑝𝑎𝑑𝑜
[ 𝑠? ⟼ 𝑛1? ∈ 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 ] ∧ [ 𝑠? ⟼ 𝑛2? ∈ 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 ] ∧ [ 𝑠? ⟼ 𝑛3? ∈ 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 ]
∧ #(𝑠? ∈ 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛) = 3
𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒 ′ = 𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒 ∪ { 𝑠? }
𝑜𝑐𝑢𝑝𝑎𝑑𝑜′ = 𝑜𝑐𝑢𝑝𝑎𝑑𝑜 \ { 𝑠? }
𝑒𝑚𝑝𝑙𝑒𝑎𝑑𝑜′ = 𝑒𝑚𝑝𝑙𝑒𝑎𝑑𝑜
𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 = 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 \ { 𝑠? ⟼ 𝑛1? }
𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 = 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 \ { 𝑠? ⟼ 𝑛2? }
𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 = 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 \ { 𝑠? ⟼ 𝑛3? }
𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 = 0
b) Defina el esquema para buscar los nombres de los empleados que comprten la
plaza Nro. N
Buscar_nombre
Ξ 𝑃𝑎𝑟𝑞𝑢𝑒𝑜
𝑠? ∶ 𝑬𝒔𝒕𝒂𝒄𝒊𝒐𝒏𝒂𝒎𝒊𝒆𝒏𝒕𝒐
𝑛𝑜𝑚𝑏𝑟𝑒! : 𝑷𝒆𝒓𝒔𝒐𝒏𝒂
𝑠? 𝜖 𝑑𝑜𝑚 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛
𝑛𝑜𝑚𝑏𝑟𝑒! = 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 ( | { 𝑠? } | )
FUNCIONES
1. Una persona maneja un cuaderno recordatorio de cumpleanos de sus amigos,
en el cual utiliza un nombre unico para identificar de manera unica a
cualquiera de sus amigos. Existe una función la cual hace corresponder el
nombre unico de su amigo con la fecha de su cumpleaños
Cuaderno
𝒂𝒎𝒊𝒈𝒐: ℙ 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝒄𝒖𝒎𝒑𝒍𝒆𝒂ñ𝒐: 𝑷𝒆𝒓𝒔𝒐𝒏𝒂 ⟼ 𝒇𝒆𝒄𝒉𝒂
Inicial
∆ 𝑪𝒖𝒂𝒅𝒆𝒓𝒏𝒐
𝒂𝒎𝒊𝒈𝒐 = 𝟎
Añadir_cumpleaño
∆ 𝑪𝒖𝒂𝒅𝒆𝒓𝒏𝒐
𝒏? : 𝑷𝒆𝒓𝒔𝒐𝒏𝒂
𝒇? : 𝒇𝒆𝒄𝒉𝒂
𝒏? ∉ 𝒂𝒎𝒊𝒈𝒐
𝒄𝒖𝒎𝒑𝒍𝒂ñ𝑜′ = 𝒄𝒖𝒎𝒑𝒍𝒆𝒂ñ𝒐 ∪ { 𝒏? ⟼ 𝒇? }
Eliminar_cumpleaño
∆ 𝑪𝒖𝒂𝒅𝒆𝒓𝒏𝒐
𝒏? : 𝑷𝒆𝒓𝒔𝒐𝒏𝒂
𝒇? : 𝒇𝒆𝒄𝒉𝒂
𝒏? ∉ 𝒂𝒎𝒊𝒈𝒐
𝒄𝒖𝒎𝒑𝒍𝒂ñ𝑜′ = 𝒄𝒖𝒎𝒑𝒍𝒆𝒂ñ𝒐 \ { 𝒏? ⟼ 𝒇? }
Hallar_fecha
Ξ 𝑪𝒖𝒂𝒅𝒆𝒓𝒏𝒐
𝒏? : 𝑷𝒆𝒓𝒔𝒐𝒏𝒂
𝒇? : 𝒇𝒆𝒄𝒉𝒂
𝒏? ∉ 𝒂𝒎𝒊𝒈𝒐
𝒇𝒆𝒄𝒉𝒂! = 𝒄𝒖𝒎𝒑𝒍𝒆𝒂ñ𝒐 (𝑛!)
SUCESIONES
1. En una estructura pila, se insertan y borran elementos por un mismo extremo.
Formular los esquemas en Z con manejo de errores, en donde [T] es un tipo
arbitrario
SOLUCION:
Pila [T]
𝒔𝒕: 𝒔𝒆𝒒 𝑻
Iniciar_Pila
𝒔𝒕: 𝒔𝒆𝒒 𝑻
𝒔𝒕 = < >
c) Definir el borrado, que eliminara el elemento que este en la cima de la pila no vacía. (pop)
Pop_Pila
𝚫 𝑷𝒊𝒍𝒂
𝒆𝒍𝒆𝒎! = 𝑻
𝒔𝒕 ≠ < >
𝒆𝒍𝒆𝒎! = 𝒍𝒂𝒔𝒕 𝒔𝒕
𝒔𝒕′ = 𝒇𝒓𝒐𝒏𝒕 𝒔𝒕
d) Una consulta que devuelva el elemento que está en la cima de la pila no vacía. (top)
Top_Pila
𝚫 𝑷𝒊𝒍𝒂
𝒆𝒍𝒆𝒎! = 𝑻
𝒔𝒕 ≠ < >
𝒆𝒍𝒆𝒎! = 𝒍𝒂𝒔𝒕 𝒔𝒕