Documentos de Académico
Documentos de Profesional
Documentos de Cultura
n
I
G
u
a
d
e
T
r
a
b
a
j
o
s
P
r
c
t
i
c
o
s
-
2
0
0
6
A
r
e
a
d
e
P
r
o
g
r
a
m
a
c
o
n
y
M
e
t
o
d
o
l
o
g
a
d
e
D
e
s
a
r
r
o
l
l
o
d
e
l
S
o
f
t
w
a
r
e
P
g
i
n
a
8
d
e
2
7
U
.
N
.
S
.
L
.
,
D
p
t
o
.
I
n
f
o
r
m
t
i
c
a
H
O
R
A
R
I
O
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Viernes
C1 y P C2
P C3
(Comisin 3 puede no
implementarse)
Viernes
Jueves
T
Jueves
T = Teora
Mircoles
---------------------------
-
15:30
Co???
Mircoles
Co = Consulta
Martes
P
C1 y C2
Martes
Cn = Comisin n
Lunes
P C3
(Comisin 3 puede no
implementarse)
Lunes
P = Prctico
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 9 de 27 U. N. S. L., Dpto. Informtica
EJERCICIOS PRCTICOS
PRCTICO DE LGICA:
PROPOSICIONES, CONECTIVOS, TABLAS DE VERDAD.
La teora general para este prctico puede consultarse en las Notas de
Clase de la ctedra Captulo 2, Lgica.
Ejercicios de aula
1.- Sea:
a: "l es alto".
b: "l es elegante".
Escriba en forma simblica:
1.1.- l es alto y elegante.
1.2.- l es alto pero no es elegante.
1.3.- l no es alto ni elegante.
2.- Sea:
a: hace fro.
b: corre viento.
c: llueve.
d: nieva.
Escriba en forma simblica:
2.1.- Hace fro, llueve y corre viento.
2.2.- Si nieva y corre viento entonces hace fro.
2.3.- Cuando llueve no corre viento.
2.4.- Hace fro, corre viento pero no llueve.
3.- Dadas las siguientes oraciones, identifique las proposiciones elementales, desgnelas con letras a, b, c, ... y
escriba en forma simblica los enunciados compuestos:
3.1.- Si un nmero entero no es par, entonces es impar.
3.2.- Si un nmero entero es par, entonces no es impar.
3.3.- La suma de dos nmeros es par cuando ambos son pares.
3.4.- Un nmero par y mltiplo de tres es divisible por seis.
3.5.- Un nmero es par y mltiplo de tres slo cuando es divisible por seis.
3.6.- O bien el asesino ha abandonado el pas, o alguien est encubrindole.
3.7.- Ganaremos las elecciones, suponiendo que Ramrez sea electo presidente del partido.
4.- Construir la tabla de verdad de cada forma proposicional:
4.1.- ~p q
4.2.- ~ (p q)
4.3.- (p q) ((~p) (~q))
4.4.- (p q) r
5.- Si los proposiciones p, q, son verdaderas y las proposiciones x y w son falsas, cules de los siguientes
enunciados compuestos son verdaderos?:
5.1.- (p x) (q w)
5.2.- (p x) ~(q w)
5.3.- (~p x) (~x p)
5.4.- (p ~q) ~(x ~x)
5.5.- p (x q)
5.6.- (p x) (~x ~p)
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 10 de 27 U. N. S. L., Dpto. Informtica
6.- Usando las tablas de verdad, determinar cules de los siguientes pares de enunciados son equivalentes:
6.1.- p p (p q)
6.2.- p p (p q)
6.3.- p q ~q ~p
6.4.- p q ~p ~q
6.5.- p q < (p q)
6.6.- p q (p q) < q
7.- Encontrar los valores de verdad de p, q, x, w z para los cuales los siguientes enunciados son falsos:
7.1.- (p x) (q w)
7.2.- (x (w z)) ~(( x w) (x z))
7.3.- (x w) (~w ~x)
8.- Usar las tablas de verdad para verificar las siguientes equivalencias:
8.1.- (p q) (q p)
8.2.- p ~ ~p
8.3.- ~ (p q) (~p ~q)
8.4.- ~ (p q) (~p ~q)
8.5.- (p q) (~p q)
8.6.- (p q) (p q) (~p ~q)
8.7.- (p q) r (p (q r))
PRCTICO 1.
PASCAL: DEFINICIONES Y DECLARACIONES, TIPOS DE DATOS;
ACCIONES, SENTENCIAS.
ESTRUCTURAS DE DATOS: ARREGLOS Y REGISTROS
Prctico 1.1. Pascal: definiciones y declaraciones, tipos de datos; acciones,
sentencias.
La teora general para este prctico puede consultarse en los Captulos 0 a 5
del "PASCAL: Manual del Usuario e Informe" (recuerde que las secciones
correspondientes del Informe tienen informacin sobre la sintaxis, as como
ejemplos) Tambin en las Notas de Clase de la ctedra, Captulos 3 y 4.
Ejercicios de aula
1.- Los lenguajes de programacin se definen:
(a) Empleando un meta lenguaje de definicin.
(b) Con el mismo lenguaje de programacin.
(c) Empleando otro lenguaje de programacin.
(d) Usando el lenguaje Pascal.
(e) No se definen.
(f) Ninguna.
2.- Un meta lenguaje:
(a) No existe.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 11 de 27 U. N. S. L., Dpto. Informtica
(b) Es el Pascal.
(c) Sirve para programar computadoras.
(d) Sirve para definir datos dentro de los lenguajes de programacin.
(e) Sirve para definir programas de computadora.
(f) Ninguna.
3.- Sobre el lenguaje Pascal:
(a) Sabe cules son las partes de un programa?
(b) Cules son las diferencias entre definiciones, declaraciones y acciones en un programa escrito en
lenguaje Pascal?
(c) Cules son las palabras claves y para qu sirven?
4.- En el Captulo 5, Seccin 5.2 de las Notas de Clase, est el listado de un programa (calcul_1) que
simula una calculadora. Lea atentamente dicho programa y conteste las siguientes preguntas sobre el
mismo:
(a) Cules son las distintas partes del programa: definiciones, declaraciones, acciones?
(b) Cules son las palabras claves?
(c) Cules son las variables del programa?
(d) Cules son las sentencias del programa?
(e) Identifique las sentencias de asignacin, seleccin e iteracin.
(f) Identifique las condiciones.
5.- Diga que resultado producen los siguientes trozos de programa:
(a) z:= 8; (b) z:= 12; (c) z:= 3 * 2 + 24;
x:= 5; x:= 2; x:= 8 div 3;
y:= z + x; y:= z + x; y:= x + z * 3;
writeln(y); writeln(z + x); write(y);
(d) w:= true; (e) w:= true;
t:= false; t:= false;
if w and t if w or t
then write('si'); then write('verdadero');
(f) z:= 7; (g) z:= 16;
x:=2; x:= 22;
y:= z - x; if z - x > 0
if y > 0 then write('z > x');
then write('z > x');
(h) i:= 1; x:= 1; (i) i:= 1; x:= 1;
(j) i:=70; x:= 1;
while i <= 90 do while i < 80 do while i > 0 do
begin begin begin
x:=x+i*10; x:=x+i*10; x:=x+i*10;
i:= i + 1 i:= i+2 i:= i + 1
end; end; end;
writeln(x,i); writeln(x,i); writeln(x,i);
6.- Si es falso (false) el valor de la siguiente condicin:
(X > 0 or X < Z or Z < 10)
acerca de las variables X, Z (convenientemente declaradas), en todos
los casos, se puede afirmar que:
A) (X > 0 or X < Z or Z < 10)
B) (X < 0 or X > Z or Z > 10)
C) (X <= 0 or X => Z or Z => 10)
D) (X > 0 and X < Z and Z < 10)
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 12 de 27 U. N. S. L., Dpto. Informtica
E) la condicin no puede tomar nunca el valor falso (false).
F) Ninguna.
7.- Luego de la ejecucin del siguiente trozo de cdigo en Pascal:
X:= 0; Y:= 1;
while X <= 10 and Y < 10 do
begin if odd(Y) then Y:= Y + 1 ; X:= X + 1 end;
respecto de las variables X e Y se puede afirmar que:
Nota: odd(x) = true si x es impar, sino false.
A) X > 10 or Y < 10
B) X > 10 and Y < 10
C) X <= 10 and Y > 10
D) X = 10 and Y > 10
E) X = 0 and Y = 1
F) Ninguna.
8.- Luego de la ejecucin del siguiente trozo de cdigo en Pascal:
X:= 1; Y:= 1;
while X <> 10 or Y <> 10 do
begin if AA = BB then CC:= true;
Y:= Y + 1; X:= X + 2 end; write(X, Y);
cul es la salida ? (las variables se suponen bien declaradas)
A) 11 6
B) 10 10
C) 11 11
D) 9 9
E) Nada, la iteracin no termina nunca.
F) Ninguna.
9.- Qu puede siempre afirmarse que es verdad una vez terminada una iteracin (while en Pascal) cuya
condicin es:
i <= 'T' or a
A) La condicin es verdadera.
B) i <= 'T' and a.
C) i > 'T' and not a.
D) i > 'T' or not a.
E) Nada, porque no puede haber una expresin condicional as.
F) Ninguna.
10.- Qu puede siempre afirmarse que es verdad si en una sentencia if en Pascal, cuya condicin es:
(v >= 0 and v <= s)
se ejecuta la rama del then ?
A) (v < 0 or v > s)
B) (v < 0 and v > s)
C) (v >= 0 or v <= s)
D) (v >= 0 and v <= s)
E) No se ejecuta nunca la rama del then con esa condicin.
F) Ninguna.
11.- Luego de la ejecucin del siguiente trozo de cdigo en Pascal:
if x > 0 and y = 10
then begin y:= y - 1; x:= 0 end
else begin y:= 8; x:= 1 end;
respecto de las variables x e y, en todos los casos, se puede afirmar que:
A) x > 0 and y = 10
B) (x = 0 and y = 10) or (x <> 0 and y >= 8)
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 13 de 27 U. N. S. L., Dpto. Informtica
C) (x = 0 and y = 9) or (x = 1 and y = 8)
D) (x > 0 or y = 9) and (x = 1 or y <> 10)
E) x = 1 or y = 9
F) Ninguna.
12 Haga un programa que dada una constante natural k, imprima los primeros k naturales.
13 Haga un programa que acepte como entrada un nmero natural (n), e imprima los primeros n naturales.
14 Haga un programa que acepte como entrada un nmero natural (n), y calcule la suma de los primeros n
naturales.
15 Haga un programa que acepte como entrada un nmero natural (n), e imprima las n primeras letras del
alfabeto (1 <= n <= 26). Existe en Pascal una funcin estndar que genera una letra a partir de un entero.
16 Haga un programa que acepte como entrada un nmero natural (n), si n es par imprima los n primeros
pares sino los n primeros impares.
17 Haga un programa que acepte como entrada dos nmeros NATURALES (n y m) y devuelva como
resultado el producto de n x m, pero simule la operacin empleando la suma y no el producto.
18 Haga un programa que acepte como entrada dos nmeros NATURALES (n y m) y devuelva como
resultado el cociente de n / m, pero simule la operacin empleando la resta y no la divisin.
19 Haga un programa que acepte como entrada dos nmeros ENTEROS (n y m) y devuelva como resultado
el producto de n x m, pero simule la operacin empleando la suma y no el producto. SIGNO !
20 Haga un programa que acepte como entrada dos nmeros ENTEROS (n y m) y devuelva como resultado
el cociente de n / m, pero simule la operacin empleando la resta y no la divisin. SIGNO !
21 Haga un programa que acepte como entrada dos nmeros NATURALES (n y m) y devuelva como
resultado n
m
empleando la multiplicacin.
22 Haga un programa que acepte como entrada un nmero natural y devuelva como resultado n
m
empleando
la suma. Puede emplear algo de lo ya hecho?
23 Haga un programa que acepte como entrada dos nmeros NATURALES (n y b, con 2 b 9) y
convierta el nmero n al correspondiente nmero en base b. Recuerde que un nmero puede representarse
con el siguiente polinomio:
n
d
i
b
i-1
donde d
i
es el i-esimo dgito del nmero y b es la base.
i =1
24 Haga un programa que acepte como entrada tres caracteres, que deben ser algunos de los dgitos del cero
al nueve, y los convierta en el correspondiente nmero de tres dgitos y lo imprima. (Ejemplo: sean los
caracteres 3, 7, 5; deben ser convertidos en el nmero 375).
25 Haga un programa que acepte como entrada tres caracteres, que deben ser algunos de los dgitos del cero
al nueve, y opcionalmente un caracter que represente un signo (+ ) y los convierta en el
correspondiente nmero de tres dgitos y lo imprima. (Ejemplo: sean los caracteres + 3, 7, 5; deben ser
convertidos en el nmero +375).
26 Haga un programa que acepte como entrada uno o ms, pero no ms de cinco caracteres, que deben ser
algunos de los dgitos del cero al nueve, y opcionalmente un caracter que represente un signo (+ ) y los
convierta en el correspondiente nmero y lo imprima. (Ejemplo: sean los caracteres 1, 3, 0, 7, 5; deben
ser convertidos en el nmero 13075). Tenga en cuenta que el mximo entero es 32767 y el menor
32768.
27 Modifique el programa de la calculadora para que puedan entrarse los nmeros caracter a caracter, no
como tales. Decida cuntos dgitos soportar la calculadora, y de cuantos dgitos ser el resultado.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 14 de 27 U. N. S. L., Dpto. Informtica
28 Haga un programa que acepte como entrada un nmero natural (n, donde 1 n 2000) y lo convierta en
el correspondiente nmero romano.
Ejercicios de mquina
1. Edite, compile y ejecute el programa de la calculadora que se encuentra en el Anexo I.
2. Edite, compile y ejecute los programas pedidos en los ejercicios 12 a 28 del prctico de aula.
~~~~o~~~~
Prctico 1.2. Estructuras de Datos: Pascal, Arreglos y Registros
La teora general para este prctico puede consultarse en los Captulos 6 y 7,
de las Notas de Clase de la ctedra y tambin en los Captulos 6 y 7 del
"PASCAL: Manual del Usuario e Informe" (recuerde que las secciones
correspondientes del Informe tienen informacin sobre la sintaxis, as como
ejemplos).
Ejercicios de aula
Arreglos (arrays)
1. Cal es el tipo base de un arreglo?
2. Cales pueden ser los tipos base de un arreglo?
3. Cal es el tipo indice de un arreglo?
4. Cales pueden ser los tipos indice de un arreglo? Porqu?
5. Dada la siguiente sentencia en Pascal,
x[i + 1, j and true] := x[i + 1, not j] div 2
cal es una declaracion, correcta, posible?
A) var x:array [1..N,false..true] of integer;
i:integer;j:boolean
B) var x: array [a..z,i..k] of integer; i,j:integer
C) var x: array [1..N, 1..M] of boolean; i,j:boolean
D) var x: array [1..N,1..M] of integer ; i:integer;j:boolean
E) No hay declaracion posible porque el array no puede tener como indice
una expresion logica (boolean).
6. Dadas las siguientes definiciones y declaraciones cual es un uso posible ? Nota: (succ(y) = valor (si existe)
que sucede a y)
type dias = (lu, ma, mi, ju, vi);
var x: array['a'..'z', '0'..'9'] of dias;
i, j: integer; z, t: char; w: dias;
A) i := succ(x[z, w]);
B) w:= x['b', i];
C) x[t,j]:= w;
D) x[z, succ(i)]:= succ(z);
E) x[succ(t), z]:= succ(w);
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 15 de 27 U. N. S. L., Dpto. Informtica
7. En Pascal la siguiente sentencia
a[I + 1, J] := I * A[I + 1, not J] div 2
es coherente con la declaracion:
A) var A:array [1..N,true..false] of integer;
I:integer;J:boolean
B) var A: array [a..z,i..k] of integer; I,J:integer;
C) var A: array [1..N, 1..M] of boolean; I,J:boolean;
D) var A: array [1..N,1..M] of integer ; J:integer;I:boolean
E) var A: array [1..N,1..M] of char; I:integer;J:boolean
8. Dadas las siguientes declaraciones cual es un uso posible?:
var x: array['a'..'z', '0'..'9'] of char;
i, j: integer; z, t: char;
Nota: succ(y) = valor (si existe) que sucede a y.
A) i:= succ(x[z,t]) + 1;
B) z:= x['b', i];
C) x[i,j]:= 33;
D) x[succ(i), z]:= succ(z);
E) x[succ(t), z]:= succ(z);
9 Haga un programa que permita entrar una cantidad fija de caracteres en un arreglo, y luego los imprima.
10 Modifique el programa de entrada de caracteres para permitir entrar otro tipo de dato. Qu pasa si el
tipo de dato elegido es simple?, y si es estructurado?
11 Modifique el programa de entrada de caracteres para permitir entrar un nmero variable de caracteres.
12 Haga un programa que busque en un arreglo de nmeros enteros un nmero dado, informando por
pantalla si el nmero se encuentra o no en el arreglo.
13 Haga un programa que permita insertar un caracter en un arreglo de caracteres. Se inserta en el lugar del
arreglo que el usuario del programa solicite y debe hacerse lugar al caracter nuevo, desplazando
(corriendo) todos los caracteres desde la posicin en que se inserta hasta la posicin final (mayor valor del
ndice) del arreglo.
14 Haga un programa que permita borrar un caracter en un arreglo de caracteres. Se borra en el lugar del
arreglo que el usuario del programa solicite y deben desplazarse (correrse) todos los caracteres desde la
posicin en que se borra hasta la posicin final (mayor valor del ndice) del arreglo.
15 Haga un programa que dado un arreglo de caracteres los ordene de menor a mayor.
16 Haga un programa que permita entrar una cantidad fija de cadenas de caracteres en un arreglo y luego
las imprima. Cada cadena tiene, a su vez, un nmero fijo de caracteres. Dimensin del arreglo? Se
puede usar algo ya hecho?
17 Haga un programa que permita entrar una cantidad variable de cadenas de caracteres en un arreglo, y
luego las imprima. Cada cadena tiene, a su vez, un nmero variable de caracteres. Dimensin del
arreglo? Se puede usar algo ya hecho?
18 Haga un programa que permita insertar una cadena de caracteres en un arreglo. Se inserta en el lugar del
arreglo que el usuario del programa solicite y debe hacerse lugar a la nueva cadena, corriendo todas las
otras cadenas desde la posicin en que se inserta hasta la posicin final (mayor valor del ndice) del
arreglo. Pese al desplazamiento hay que conservar la estructura de cada cadena ya existente en el arreglo,
an cuando no tengan todas el mismo largo (cantidad de caracteres). Dimensin del arreglo? Se puede
usar algo ya hecho?
19 Haga un programa que permita borrar una cadena de caracteres en un arreglo. Se borra en el lugar del
arreglo que el usuario del programa solicite y debe desplazarse (correrse) todas las cadenas desde la
posicin en que se borra hasta la posicin final (mayor valor del ndice) del arreglo. Pese al
desplazamiento hay que conservar la estructura de cada cadena ya existente en el arreglo, an cuando no
tengan todas el mismo largo (cantidad de caracteres). Dimensin del arreglo? Se puede usar algo ya
hecho?
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 16 de 27 U. N. S. L., Dpto. Informtica
20 Si un texto est compuesto de lneas de caracteres, haga un programa que permita insertar y borrar
caracteres o lneas completas. Sobre qu tipo de dato del Pascal conviene soportar el texto? (Ejercicio
opcional)
21 Haga un programa que acepte como entrada una cadena de caracteres compuesta solamente de los
caracteres {I, V, X, L, C, M} y convierta dicha cadena, que se supone es un nmero romano, en el
correspondiente nmero natural. (Ejercicio opcional)
Registros (records)
1. Qu es el selector en un record? Para qu sirve?
2. Cmo se selecciona un campo de un record?
3. Cales pueden ser los tipos de los campos de un record? Todos los mismos?
4. El siguiente bloque de sentencias en Pascal:
begin fecha.dia:=21; fecha.mes:=10; fecha.anio:=1989 end
se corresponde con la declaracion:
A) var fecha: record dia: 1..31; mes: 1..12; anio: integer end
B) var fecha : array [1..31,1..12,1..N] of integer
C) var fecha : record dia: array [1..31] of integer;
mes: array [1..12] of integer;
anio: array [1..N] of integer
end
D) var fecha : record
datos: record
dia: integer;
mes: integer;
anio: integer
end
end
E) var fecha : array [1..N] of dia, mes, anio
5. Dada la siguiente declaracion en Pascal:
var X: record A:integer; B:char; C:boolean end;
un uso correcto de esta declaracion, es:
A) A := 5
B) X.A := X.B
C) X.A := 3
D) X.C := X.A * 2
E) X.B := True
6. Dadas las siguientes definiciones y declaraciones en Pascal:
type Fecha = record
Dia: 1..31; Mes: 1..12; Anio: 1..3000
end;
Cadena = array[1..30] of char;
var Empleado : record
Nombre : Cadena;
NroLeg :1..1000;
Edad: 1..100;
EstCivil:(Soltero,Casado,Divorciado,Viudo);
FechaIng: Fecha
end;
Esposa: record
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 17 de 27 U. N. S. L., Dpto. Informtica
Nombre:Cadena;
FechaNac :Fecha;
Edad:1..100
end;
un grupo de sentencias validas, posibles, es:
A) begin Empleado.Nombre[10]:= Esposa.Nombre[10];
Empleado.Edad:= Esposa.Edad end;
B) begin Empleado.Nombre:= Esposa.Nombre;
Empleado.FechaIng:= Esposa.FechaNac end;
C) begin Edad:= 26;FechaIng:=01/02/1964 end;
D) begin EstCivil:=Casado;Nombre:="Rodriguez,Pedro" end;
E) begin Fecha.Dia:=10;Fecha.Mes:=8;Fecha.Anio:=1910 end;
7. Dada la siguiente definicion:
type a = record
b : integer;
c : array[1..5] of char;
d : record
d1 : char;
d2 : real
end;
e : (rojo, verde, amarillo)
end;
A) Esta correctamente definida.
B) El campo d no deberia ser un record.
C) Para el campo e el tipo escalar deberia haber sido definido previamente.
D) El tipo record no puede tener mas de dos campos.
E) El campo b esta mal definido porque es un tipo pre-definido.
8. Dados los siguientes datos declare registros (records) que los representen:
a) Medida de superficie de: rectngulo, circulo y trapecio Hay diferencias en el registro?
b) Medida de volumen de: prisma de 6 caras, pirmide, esfera y cilindro. Hay diferencias en el registro?).
c) Fecha: da, mes y ao.
d) Direccin: calle y nmero, localidad, cdigo postal, nmero de telfono.
e) Alumnos: nombre (30 chr); nmero de registro (entero de seis dgitos); tipo y nmero de documento de
identidad.
f) Empleados: nombre (30 chr); tipo y nmero de documento de identidad; direccin; fecha de nacimiento.
g) Alumnos: nombre (30 chr); nmero de registro (entero de seis dgitos); tipo y nmero de documento de
identidad; direccin; materias (para cada una: nombre, fecha de regularizacin y de aprobacin).
h) Empleados: nombre (30 chr); tipo y nmero de documento de identidad; direccin; fecha de nacimiento;
estado civil (soltero, casado, divorciado); cantidad de hijos a cargo; sexo; servicio militar (cumplido, a
cumplir).
i) Hoteles: nombre; habitaciones, donde cada una tiene el tipo (comn, especial, suite, suite especial),
cantidad de lugares (individual, dos camas, doble, cudruple).
j) Hoteles: nombre; habitaciones, donde cada una tiene el tipo (comn, especial, suite, suite especial),
cantidad de lugares (individual, dos camas, doble, cudruple); cantidad de habitaciones por tipo y
cantidad de lugares; servicios del hotel (bar, restaurante, discotheque, sala de conferencia, sauna).
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 18 de 27 U. N. S. L., Dpto. Informtica
9. Para cada uno de los registros declarados en el ejercicio 8, declare un arreglo cuyo tipo base sea el registro
correspondiente.
10. Para cada uno de los registros declarados en el ejercicio 8, haga un programa que permita entrar los datos
del correspondiente registro y luego los imprima.
Ejercicios de mquina
Nota: Se realizarn los programas pedidos en los ejercicios del prctico de aula.
PRCTICO 2.
MODULARIDAD. PASCAL: PROCEDURE Y FUNCTION.
La teora general para este prctico puede consultarse en el Captulo 5,
Modularidad, de las Notas de Clase de la ctedra y en los Captulos 11 y
12 del "PASCAL: Manual del Usuario e Informe" (recuerde que las
secciones correspondientes del Informe tienen informacin sobre la sintaxis,
as como ejemplos).
Ejercicios de aula
Nota: Lea el prctico completo y realice cada ejercicio teniendo en cuenta la posibilidad de reusar en cada
ejercicio lo realizado en algn otro ejercicio anteriormente. Tenga, tambin, en cuenta, cuando haga un
ejercicio, la posibilidad de emplear la solucin en algn ejercicio posterior.
1. Identifique las distintas partes de los procedimientos y las funciones: definicin, llamada o invocacin,
encabezamiento, parmetros.
2. A cul se asocia un tipo: a los procedimentos o a las funciones?
3. Qu diferencias hay entre los procedimientos y las funciones?
4. La asignacin en el cuerpo de definicin se hace en los procedimientos o en las funciones?
5. Cales son los parametros formales?
6. Cales son los parametros reales o actuales?
7. Cantas formas hay de pasaje de parametros?
8. Cmo se distinguen cada una en Pascal?
9. Cales son las diferencias entre los distintos tipos de pasaje de parametros?
10. Haga un mdulo que dado una cadena (arreglo) de caracteres permita buscar un carcter dado y devuelva
true o false si el char est presente o no. Tanto la cadena como el caracter a buscar deben pasarse como
parmetros. NO usar variables globales.
11. Haga un mdulo que, dado una cadena (arreglo) de caracteres y dos carcteres, todos pasados como
parmetros, devuelva la cadena con todas las ocurrencias del primer carcter en la cadena cambiadas por el
segundo caracter. NO usar variables globales.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 19 de 27 U. N. S. L., Dpto. Informtica
12. Para cada uno de los registros declarados en el ejercicio 8 del prctico 1.2, declare un procedimiento que:
12.1. Permita entrar los datos de ellos.
12.2. Permita modificar alguno (o todos) los datos de ellos.
12.3. Imprima los datos de ellos.
13. Para cada uno de los arreglos declarados en el ejercicio 9 del prctico 1.2 declare un procedimiento, que
permita entrar los datos de ellos y otro que los imprima.
14. Para cada uno de los arreglos declarados en el ejercicio 9 del prctico 1.2, declare un procedimiento, que
permita modificar alguno (o todos) los datos de cada uno de los elementos del arreglo y a su vez de cada
uno de los campos de los registros.
15. Para cada uno de los arreglos declarados en el ejercicio 9 del prctico 1.2, declare procedimientos que
impriman, respectivamente: (el arreglo debe pasar como parametro al mdulo)
a) Alumnos: cantidad de alumnos con N materias regularizadas; cantidad de alumnos con N materias
aprobadas; N debe darse como parmetro al mdulo.
b) Alumnos: alumnos con al menos una materia regularizada (para cada alumno debe darse cuantas tiene
regularizadas); alumnos con al menos una materia aprobada (para cada alumno debe darse cuantas
tiene aprobadas).
c) Empleados: empleados con servicio militar a cumplir; empleados con hijos a cargo; cantidad de
empleados de sexo femenino y masculino.
d) Hoteles: hoteles con todos los servicios; cantidad total de lugares por tipo de habitacin.
e) Alumnos: cantidad de alumnos con una materia en particular, que debe entrarse al programa (puede
considerarse que las materias tienen un cdigo que es un nmero entero), regularizada o aprobada, la
eleccin de esta categora tambin debe entrarse al programa.
16. Para cada uno de los arreglos declarados en el ejercicio 9 del prctico 1.2, haga un programa, que permita
integrar todas las funciones que se pidieron en los ejercicios anteriores.
17. Modifique el programa de la calculadora para que puedan agregarse nuevas operaciones: borrado del
ltimo trmino entrado, memoria (con sus correspondientes operaciones sobre la misma: entrar, llamar),
funciones trigonomtricas, estadsticas, financieras, etc. Emplee procedimientos y funciones para ello.
Ejercicios de mquina
Nota: Se realizarn los programas pedidos en los ejercicios del prctico de aula.
PRCTICO 3.
ESTRUCTURAS DE DATOS: PASCAL EXTENDIDO, PILAS Y FILAS
La teora general para este prctico puede consultarse en los Captulos 6, 8,
as como en el Apndice B de las Notas de Clase de la ctedra.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 20 de 27 U. N. S. L., Dpto. Informtica
Ejercicios de aula
Nota: Lea el prctico completo y realice cada ejercicio teniendo en cuenta la posibilidad de reusar en cada
ejercicio lo realizado en algn otro ejercicio (de este u otro prctico) anteriormente. Tenga, tambin, en
cuenta, cuando haga un ejercicio, la posibilidad de emplear la solucin en algn ejercicio posterior.
1. Cul es la diferencia entre las estructuras de datos dinmicas y las estticas?
2. Cules son las operaciones que pueden hacerse en las pilas?
3. Cules son las operaciones que pueden hacerse en las filas?
4. Cul es la diferencia entre: pila y fila, pila y arreglo, pila y record, fila y arreglo, fila y record?
5. Dadas las filas F1, F2; las pilas P1 y P2 y el arreglo A, al pasar todos los elementos de una estructura
a otra (por ejemplo de F1 a P2, o de F1 a F2, etc.) Cmo queda la estructura de origen, igual,
distinta? Qu condiciones deben darse para cada caso? Cmo quedan los elementos en la segunda
estructura (la que recibe): en el mismo orden en que estaban en la estructura original? De qu orden
se habla?
6. Para cada uno de los registros (records) declarados en el prctico 1.2, a) Alumnos, b) Empleados,
c) Hoteles, declare una pila y una fila cuyo tipo base sea el registro correspondiente.
7. Para una de las pilas y de las filas declaradas en el ejercicio 6, declare mdulos separados, que
permitan en los registros de la pila y de la fila: entrar los datos, imprimir los datos, modificar los
datos.
8. Haga un programa que empleando los mdulos del ejercicio anterior pueda hacer cada una de las
operaciones para todos los records de la pila y de la fila o slo para alguno de ellos (a eleccin del
usuario del programa).
9. Para la pila y la fila correspondientes del ejercicio anterior, declare mdulos que impriman, de acuerdo
con el registro empleado, ya sea:
a) Alumnos: alumnos con N materias regularizadas; alumnos con N materias aprobadas; cantidad de
alumnos con N materias regularizadas; cantidad de alumnos con N materias aprobadas.
b) Empleados: empleados con servicio militar a cumplir; empleados con hijos a cargo; cantidad de
empleados de sexo femenino y masculino.
c) Hoteles: hoteles con todos los servicios; cantidad total de lugares por tipo de habitacin.
10. Compare los programas hechos empleando arreglos con aquellos que emplean pilas y filas. Esta
comparacin debera ser hecha por medio de una tabla que exprese las ventajas e inconvenientes de
cada una de las estructuras.
PRCTICO 4.
ESTRUCTURAS DE DATOS: PASCAL EXTENDIDO: LISTAS.
La teora general para este prctico puede consultarse en los Captulos 6, 9,
as como en el Apndice B de las Notas de Clase de la ctedra.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 21 de 27 U. N. S. L., Dpto. Informtica
Ejercicios de aula
Nota: Lea el prctico completo y realice cada ejercicio teniendo en cuenta la posibilidad de reusar en cada
ejercicio lo realizado en algn otro ejercicio (de este u otro prctico) anteriormente. Tenga, tambin, en
cuenta, cuando haga un ejercicio, la posibilidad de emplear la solucin en algn ejercicio posterior.
1. Cules son las operaciones que pueden hacerse en las listas?
2. Cul es la diferencia entre: lista y arreglo, lista y record, fila y lista, pila y lista?
3. Dadas las listas L1 y L2, la fila F; la pila P y el arreglo A, al pasar todos los elementos de una
estructura a otra (por ejemplo de L1 a L2, o de L1 a P, etc.) Cmo queda la estructura de origen,
igual, distinta? Qu condiciones deben darse para cada caso? Cmo quedan los elementos en la
segunda estructura (la que recibe): en el mismo orden en que estaban en la estructura original? De
qu orden se habla?
4. Para cada uno de los registros (records) declarados en el prctico 1.2, a) Alumnos, b) Empleados,
c) Hoteles, declare una lista cuyo tipo base sea el registro correspondiente.
5. Para una de las listas declaradas en el ejercicio anterior, declare mdulos separados, que permitan en
los registros de la lista: entrar los datos, imprimir los datos, modificar los datos.
6. Haga un programa que empleando los mdulos del ejercicio anterior pueda hacer cada una de las
operaciones para todos los records de lista o slo para alguno de ellos (a eleccin del usuario del
programa).
7. Para la lista correspondiente del ejercicio anterior, declare mdulos que impriman, de acuerdo con el
registro empleado, ya sea:
a) Alumnos: alumnos con N materias regularizadas; alumnos con N materias aprobadas; cantidad de
alumnos con N materias regularizadas; cantidad de alumnos con N materias aprobadas.
b) Empleados: empleados con servicio militar a cumplir; empleados con hijos a cargo; cantidad de
empleados de sexo femenino y masculino.
c) Hoteles: hoteles con todos los servicios; cantidad total de lugares por tipo de habitacin.
8. Compare los programas hechos empleando arreglos con aquellos que emplean pilas, filas y listas. Esta
comparacin debera ser hecha por medio de una tabla que exprese las ventajas e inconvenientes de
cada una de las estructuras.
PRCTICO 5.
ESTRUCTURAS DE DATOS: MULTINIVEL.
La teora general para este prctico puede consultarse en los Captulos 6,
10, as como en el Apndice B de las Notas de Clase de la ctedra.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 22 de 27 U. N. S. L., Dpto. Informtica
Ejercicios de aula
Nota: Lea el prctico completo y realice cada ejercicio teniendo en cuenta la posibilidad de reusar en cada
ejercicio lo realizado en algn otro ejercicio (de este u otro prctico) anteriormente. Tenga, tambin, en
cuenta, cuando haga un ejercicio, la posibilidad de emplear la solucin en algn ejercicio posterior.
1 Para los ejercicios de los prcticos 1.2, 2, 3, 4 cules cree que pueden hacerse empleando estructuras de
multinivel? cmo son dichas estructuras? pueden definirse?.
2 Modifique el programa del prctico 1.2, ejercicio 20, (que permita trabajar, no solo lnea a lnea, sino
caracter a caracter con las operaciones de insercin de un caracter, supresin de un caracter, respetando la
estructura de lneas y las operaciones sobre las mismas) pero no empleando arreglos (arrays) sino alguna
estructura de multinivel, elija la ms conveniente.
PRCTICO 6.
IMPLEMENTACIN DE ESTRUCTURAS DINMICAS: PILAS Y FILAS.
La teora general para este prctico puede consultarse en el Captulo 11,
Implementacin de Estructuras, de las Notas de Clase de la ctedra.
Ejercicios de aula
Nota: Haga cada ejercicio teniendo en cuenta la posibilidad de reusar en cada ejercicio lo realizado en algn
otro ejercicio (de este u otro prctico) anteriormente. Tenga, tambin, en cuenta, cuando haga un
ejercicio, la posibilidad de emplear la solucin en algn ejercicio posterior.
1. Realice las implementaciones de pilas y filas, con VIPDs de tipo char, en Pascal, programando los
procedimientos y funciones, correspondientes a cada una de las operaciones y predicados, empleando
cada uno de los mtodos, de implementacin, explicados en la teora: con y sin desplazamiento, etc.
2. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 1,
opcionalmente haga:
a) entre caracteres en una pila;
b) imprima los caracteres de la pila;
c) suprima de la pila un caracter dado por el usuario. (Ojo! Es una pila y no un arreglo!).
3. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 1,
opcionalmente haga:
a) entre caracteres en una fila;
b) imprima los caracteres de la fila;
c) invierta el orden de los caracteres de la fila. (Ojo! Es una fila y no un arreglo!)
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 23 de 27 U. N. S. L., Dpto. Informtica
Ejercicios de mquina
Nota: Se realizarn los programas pedidos en los ejercicios del prctico de aula.
PRCTICO 7.
IMPLEMENTACIN DE ESTRUCTURAS DINMICAS: LISTAS UNI Y BI-
DIRECCIONALES
La teora general para este prctico puede consultarse en el Captulo 11,
Implementacin de Estructuras, de las Notas de Clase de la ctedra.
Ejercicios de aula
Nota: Haga cada ejercicio teniendo en cuenta la posibilidad de reusar en cada ejercicio lo realizado en algn
otro ejercicio (de este u otro prctico) anteriormente. Tenga, tambin, en cuenta, cuando haga un
ejercicio, la posibilidad de emplear la solucin en algn ejercicio posterior.
1. Realice las implementaciones de listas uni y bi-direccionales, con VIPDs de tipo char, en Pascal,
programando los procedimientos y funciones, correspondientes a cada una de las operaciones y
predicados, empleando cada uno de los mtodos, de implementacin, explicados en la teora: con y sin
desplazamiento.
2. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 1
ordene de menor a mayor una lista uni-direccional de caracteres.
3. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 1
inserte caracteres en una lista uni-direccional en forma ordenada.
4. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 1
ordene de menor a mayor una lista bi-direccional de caracteres.
5. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 1
inserte caracteres en una lista uni-direccional en forma ordenada.
6. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 1
imprima los caracteres de una lista bi-direccional en orden inverso.
7. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 1
imprima los caracteres de una lista uni-direccional en orden inverso.
Ejercicios de mquina
Nota: Se realizarn los programas pedidos en los ejercicios del prctico de aula.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 24 de 27 U. N. S. L., Dpto. Informtica
PRCTICO 8. RECURSIVIDAD
La teora general para este prctico puede consultarse en el Captulo 12,
Recursividad, de las Notas de Clase de la ctedra y Captulo 10 de Pascal
Manual del usuario.
Ejercicios de aula
Nota: Haga cada ejercicio teniendo en cuenta la posibilidad de reusar en cada ejercicio lo realizado en algn
otro ejercicio (de este u otro prctico) anteriormente. Tenga, tambin, en cuenta, cuando haga un
ejercicio, la posibilidad de emplear la solucin en algn ejercicio posterior.
1 Qu partes tiene una definicin recursiva?
2 Dada una definicin recursiva, puede identificar sus partes?
3 Qu es la profundidad en la definicin recursiva?
4 Qu significa circular en una definicin recursiva? Existe?
5 Qu es el valor o punto del dominio conocido? Existe? Es necesario? Porqu?
6 Declare un mdulo (procedimiento o funcin) que acepte como parmetro un nmero natural (n), e imprima
los primeros n naturales.
7 Declare un mdulo (procedimiento o funcin) que acepte como parmetro un nmero natural (n), y calcule
la suma de los primeros n naturales.
8 Declare un mdulo (procedimiento o funcin) que acepte como parmetro un nmero natural (n), e imprima
las n primeras letras del alfabeto (1 <= n <= 26).
9 Declare un mdulo (procedimiento o funcin) que acepte como parmetro un nmero natural (n), si n es par
imprima los n primeros pares sino los n primeros impares.
10 Declare un mdulo (procedimiento o funcin) recursivo que devuelva el resultado de multiplicar dos
nmeros naturales por sumas sucesivas.
11 Declare un mdulo (procedimiento o funcin) recursivo que devuelva el resultado de dividir dos nmeros
naturales por restas sucesivas.
12 Declare un mdulo (procedimiento o funcin) recursivo que devuelva el resultado de elevar a a la b
empleando multiplicaciones sucesivas..
13 Declare un mdulo (procedimiento o funcin) recursivo que devuelva el mayor valor de un arreglo de
enteros.
14 Declare un mdulo (procedimiento o funcin) recursivo que imprima el contenido de un arreglo de chars.
15 Declare un mdulo (procedimiento o funcin) recursivo que devuelva la suma de todos los elementos de un
arreglo de enteros.
16 Declare un mdulo (procedimiento o funcin) recursivo que convierta un array[1..5] of 0..9 en el
correspondiente nmero natural.
Ejercicios de mquina
Nota: Se realizarn los programas pedidos en los ejercicios del prctico de aula.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 25 de 27 U. N. S. L., Dpto. Informtica
PRCTICO 9.
PASCAL: TIPO POINTER
La teora general para este prctico puede consultarse en el Captulo 4,
Programacin Imperativa, seccin 4.5, de las Notas de Clase de la
ctedra y en el Captulo 11 de Pascal: Manual del usuario.
Ejercicios de aula
1. De qu tipo son los valores que guarda una variable de tipo pointer?
2. En Pascal, una variable de tipo pointer apunta a cualquier tipo de datos?
3. Declare o defina tipos (type) y variables (var) pointer a real, integer, char, bool. Escriba sentencias de
asignacin y de recuperacin de la informacin de las variables.
4. Declare o defina tipos (type) y variables (var) de tipo array cuyos elementos sean pointers a real, integer,
char, bool. Escriba sentencias de asignacin y de recuperacin de la informacin de las variables.
Ejercicios de mquina
Nota: Se realizarn los programas pedidos en los ejercicios del prctico de aula.
PRCTICO 10.
DATOS RECURSIVOS.
La teora general para este prctico puede consultarse en el Captulo 12,
Recursividad, de las Notas de Clase de la ctedra y en el Captulo 11 de
Pascal Manual del usuario.
Ejercicios de aula
Nota: Haga cada ejercicio teniendo en cuenta la posibilidad de reusar en cada ejercicio lo realizado en algn
otro ejercicio (de este u otro prctico) anteriormente. Tenga, tambin, en cuenta, cuando haga un
ejercicio, la posibilidad de emplear la solucin en algn ejercicio posterior.
1. Qu partes tiene una definicin recursiva de datos?
2. Dada una definicin recursiva de datos, por ejemplo:
type a = ^b; b = record c: int; d: a end
puede identificar sus partes?
3. Qu es la profundidad en la definicin recursiva de datos? Existe?
4. Qu significa circular en una definicin recursiva? Existe?
5. Qu es el valor o punto del dominio conocido? Existe? Es necesario? Porqu?
6. Defina recursivamente una pila.
7. Defina recursivamente una fila.
8. Defina recursivamente una lista uni-direccional.
9. Defina recursivamente una lista bi-direccional.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 26 de 27 U. N. S. L., Dpto. Informtica
10. Realice las implementaciones de listas uni y bi-direccionales, con VIPDs de tipo char, en Pascal,
programando los procedimientos y funciones, correspondientes a cada una de las operaciones y predicados,
empleando datos recursivos, explicados en la teora.
11. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 10
inserte caracteres en una lista uni-direccional en forma ordenada.
12. Haga un programa que, haciendo uso de alguna de las implementaciones programadas en el ejercicio 10
imprima los caracteres de una lista bi-direccional en orden inverso.
Ejercicios de mquina
Nota: Se realizarn los programas pedidos en los ejercicios del prctico de aula.