0 Practica 3 282

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

FACULTAD DE CIENCIAS PURAS Y NATURALES

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

1. Dadas las declaraciones:


 𝒊, 𝒋 ∈ ℕ
 𝒃: 𝑳𝒊𝒃𝒓𝒐
 𝒂: 𝑨𝒖𝒕𝒐𝒓
 𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐 ∶ ℙ𝑳𝒊𝒃𝒓𝒐
 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔: ℙ𝑨𝒖𝒕𝒐𝒓

𝒄𝒐𝒏 ℙ 𝒄𝒐𝒏𝒋𝒖𝒏𝒕𝒐 𝒑𝒐𝒕𝒆𝒏𝒄𝒊𝒂, 𝒅𝒆𝒕𝒆𝒓𝒎𝒊𝒏𝒂𝒓 𝒆𝒍 𝒄𝒐𝒏𝒋𝒖𝒏𝒕𝒐 𝒅𝒆 𝒍𝒐𝒔 𝒔𝒊𝒈𝒖𝒊𝒆𝒏𝒕𝒆𝒔:


a) 𝒊
b) 𝒊 ∗ 𝒋
c) 𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐
d) 𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐 ∪ {𝒃}
e) 𝒊 + 𝒋
f) 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔 ∩ {𝒂}

SOLUCION:
a) 𝒊 donde: 𝒊 = 𝟏, 𝟐, 𝟑, … , 𝒏
 Por tanto pertenece al tipo de conjunto ℕ

b) 𝒊 ∗ 𝒋
𝑪𝒐𝒏𝒋𝒖𝒏𝒕𝒐 𝒅𝒆 ℕ:
𝒊 = (𝟏, 𝟐, 𝟑, … , 𝒎)
𝒋 = (𝟏, 𝟐, 𝟑, … , 𝒏)
𝒊 ∗ 𝒋 = {(𝟏, 𝟏), (𝟏, 𝟐), (𝟏, 𝟑), … , (𝒎, 𝟏), (𝒏, 𝟐), … , (𝒎, 𝒏)}

 Por tanto pertenece al tipo de conjunto ℕ

c) {𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐}

Libro
L1 𝐿𝑖𝑏𝑟𝑜 = { 𝑐𝑜𝑛𝑗𝑢𝑛𝑡𝑜 𝑑𝑒 𝑙𝑖𝑏𝑟𝑜}
L2
.
𝑒𝑛_𝑝𝑟𝑒𝑠𝑡𝑎𝑚𝑜 ∶ ℙ𝐿𝑖𝑏𝑟𝑜
.
.  Por tanto {𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐} es de tipo “Libro”
Ln
d) {𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐} ∪ {𝒃}

𝐸𝑥𝑖𝑠𝑡𝑒 𝑢𝑛 𝑐𝑎𝑚𝑏𝑖𝑜 𝑑𝑒 𝑒𝑠𝑡𝑎𝑑𝑜 𝑒𝑛 "𝑒𝑛_𝑝𝑟𝑒𝑠𝑡𝑎𝑚𝑜" 𝑎𝑙 𝑎𝑑𝑖𝑐𝑖𝑜𝑛𝑎𝑟 𝑢𝑛 𝑒𝑙𝑒𝑚𝑒𝑛𝑡𝑜 {𝑏}


𝑞𝑢𝑒 𝑡𝑎𝑚𝑏𝑖𝑒𝑛 𝑑𝑒𝑏𝑒𝑟𝑖𝑎 𝑠𝑒𝑟 𝑑𝑒 𝑡𝑖𝑝𝑜 Libro.

e) 𝒊 + 𝒋

 Por tanto son del tipo de conjunto ℕ,

f) {𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔} ∩ {𝒂}

Del cual {𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔} será de tipo “Autor” y además {𝒂} se intersecta


con {𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔}

 Por tanto {𝒂} debe ser del tipo “Autor”.

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) 𝒊 = 𝒋

(ACEPTABLE), debido a que ambos conjuntos son de números enteros.

b) 𝒂 ∈ 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔

(ACEPTABLE), porque {𝒂} y {𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔} son de tipo “Autor”.

c) 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔 ⊂ 𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐

(NO_ACEPTABLE), porque los conjuntos ambos son de diferentes tipos.


d) 𝒂, 𝒃

(ACEPTABLE), porque “Autores” están relacionados con “Libro”, porque son pares
ordenados.

e) 𝒆𝒏_𝒑𝒓𝒆𝒔𝒕𝒂𝒎𝒐 ⊆ 𝒍𝒊𝒃𝒓𝒐𝒔

(NO_ACEPTABLE), porque “en_prestamo” no es subconjunto de “Libro”.

f) 𝒊 ∈ 𝒂𝒖𝒕𝒐𝒓𝒆𝒔_𝒄𝒊𝒆𝒏𝒕𝒊𝒇𝒊𝒄𝒐𝒔

(NO_ACEPTABLE), porque “i” es un conjunto de números naturales y no puede


pertenecer al conjunto de “autores_cientificos”.

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:

a. Definir sus propiedades invariantes


b. Definir un estado inicial
c. Definir la operación necesaria para que un pasajero entre en el autobús
d. Definir la operación necesaria para que un pasajero deje el autobús
e. Definir una operación de consulta para determinar el número de pasajeros
presentes en el autobús
f. Definir una operación de consulta para determinar si una persona en
particular está en el autobús

SOLUCION:
a. Definir sus propiedades invariantes
Autobús
𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜: ℙ 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝐵𝑢𝑠: ℕ

# 𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜 ≤ 𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝐵𝑢𝑠
b. Definir un estado inicial

Estado_Inicial
𝐴𝑢𝑡𝑜𝑏𝑢𝑠

𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜 = 0

c. Definir la operación necesaria para que un pasajero entre en el autobús

Sube_Pasajero
∆ 𝐴𝑢𝑡𝑜𝑏𝑢𝑠
𝑝? : 𝑃𝑒𝑟𝑠𝑜𝑛𝑎

# 𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜 < 𝑐𝑎𝑝𝑎𝑐𝑖𝑑𝑎𝑑𝐵𝑢𝑠


𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜′ = 𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜 ∪ { 𝑝? }

d. Definir la operación necesaria para que un pasajero deje el autobús

Deja_Autobus
∆ 𝐴𝑢𝑡𝑜𝑏𝑢𝑠
𝑝? : 𝑃𝑒𝑟𝑠𝑜𝑛𝑎

𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜′ = 𝑝𝑎𝑠𝑎𝑗𝑒𝑟𝑜 \ { 𝑝? }

e. Definir una operación de consulta para determinar el número de


pasajeros presentes en el autobús

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

1. En el caso "Asignación de estacionamiento a los empleados de una empresa"


a) Defina el esquema para cancelar una plaza de estacionamiento que
compartan tres empleados
b) Defina el esquema para buscar los nombres de los empleados que comprten la
plaza Nro. N

SOLUCION:
Parqueo
𝑒𝑚𝑝𝑙𝑒𝑎𝑑𝑜: ℙ 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛: 𝐸𝑠𝑡𝑎𝑐𝑖𝑜𝑛𝑎𝑚𝑖𝑒𝑛𝑡𝑜 ⟷ 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒, 𝑜𝑐𝑢𝑝𝑎𝑑𝑜: ℙ 𝐸𝑠𝑡𝑎𝑐𝑖𝑜𝑛𝑎𝑚𝑖𝑒𝑛𝑡𝑜

𝑟𝑎𝑛 𝑎𝑠𝑖𝑔𝑛𝑎𝑐𝑖𝑜𝑛 ⊆ 𝑒𝑚𝑝𝑙𝑒𝑎𝑑𝑜


𝑑𝑖𝑠𝑝𝑜𝑛𝑖𝑏𝑙𝑒 ∩ 𝑜𝑐𝑢𝑝𝑎𝑑𝑜 = 0
Inicial
𝑃𝑎𝑟𝑞𝑢𝑒𝑜

𝒆𝒎𝒑𝒍𝒆𝒂𝒅𝒐 = 𝟎
𝒂𝒔𝒊𝒈𝒏𝒂𝒄𝒊𝒐𝒏 = 𝟎
𝒅𝒊𝒔𝒑𝒐𝒏𝒊𝒃𝒍𝒆 = 𝟎
𝒐𝒄𝒖𝒑𝒂𝒅𝒐 = 𝟎

a) Defina el esquema para cancelar una plaza de estacionamiento que


compartan tres empleados

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

(a) Definir los tipos de dato utilizados


(b) Definir las declaraciones globales
(c) Definir el estado inicial
(d) Definir las operaciones añadir/borrar un nuevo amigo
(e) Definir la consulta de hallar la fecha de cumpleaños dado el nombre

Nota: mas abajo la solucion


SOLUCION:
(a) Definir los tipos de dato utilizados
(b) Definir las declaraciones globales

Cuaderno
𝒂𝒎𝒊𝒈𝒐: ℙ 𝑃𝑒𝑟𝑠𝑜𝑛𝑎
𝒄𝒖𝒎𝒑𝒍𝒆𝒂ñ𝒐: 𝑷𝒆𝒓𝒔𝒐𝒏𝒂 ⟼ 𝒇𝒆𝒄𝒉𝒂

𝒂𝒎𝒊𝒈𝒐 = 𝒅𝒐𝒎 𝒄𝒖𝒎𝒑𝒍𝒆𝒂ñ𝒐

(c) Definir el estado inicial

Inicial

∆ 𝑪𝒖𝒂𝒅𝒆𝒓𝒏𝒐

𝒂𝒎𝒊𝒈𝒐 = 𝟎

(d) Definir las operaciones añadir/borrar un nuevo amigo

Añadir_cumpleaño

∆ 𝑪𝒖𝒂𝒅𝒆𝒓𝒏𝒐
𝒏? : 𝑷𝒆𝒓𝒔𝒐𝒏𝒂
𝒇? : 𝒇𝒆𝒄𝒉𝒂
𝒏? ∉ 𝒂𝒎𝒊𝒈𝒐
𝒄𝒖𝒎𝒑𝒍𝒂ñ𝑜′ = 𝒄𝒖𝒎𝒑𝒍𝒆𝒂ñ𝒐 ∪ { 𝒏? ⟼ 𝒇? }
Eliminar_cumpleaño
∆ 𝑪𝒖𝒂𝒅𝒆𝒓𝒏𝒐
𝒏? : 𝑷𝒆𝒓𝒔𝒐𝒏𝒂
𝒇? : 𝒇𝒆𝒄𝒉𝒂
𝒏? ∉ 𝒂𝒎𝒊𝒈𝒐
𝒄𝒖𝒎𝒑𝒍𝒂ñ𝑜′ = 𝒄𝒖𝒎𝒑𝒍𝒆𝒂ñ𝒐 \ { 𝒏? ⟼ 𝒇? }

(e) Definir la consulta de hallar la fecha de cumpleaños dado el nombre

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

a) Definir el estado inicial


b) Definir la inserción que colocara un elemento en la cima de la pila. (push)
c) Definir el borrado, que eliminara el elemento que este en la cima de la pila no vacía. (pop)
d) Una consulta que devuelva el elemento que está en la cima de la pila no vacía. (top)

SOLUCION:

a) Definir el estado inicial

Pila [T]
𝒔𝒕: 𝒔𝒆𝒒 𝑻
Iniciar_Pila
𝒔𝒕: 𝒔𝒆𝒒 𝑻

𝒔𝒕 = < >

b) Definir la inserción que colocara un elemento en la cima de la pila. (push)


“lambda” símbolo para concatenar 𝝀
Push_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
𝚫 𝑷𝒊𝒍𝒂
𝒆𝒍𝒆𝒎! = 𝑻
𝒔𝒕 ≠ < >
𝒆𝒍𝒆𝒎! = 𝒍𝒂𝒔𝒕 𝒔𝒕

También podría gustarte