Está en la página 1de 27

Gua de Trabajos Prcticos

para las materias



Programacin I
y
Programacin
de las carreras

Licenciatura y Profesorado en
Ciencias de la Computacin y
Tecnicaturas en Redes y
Web
Area de Programacin y Metodologas de Desarrollo del Software
Departamento de Informtica
Facultad de Ciencias Fsico-Matemticas y Naturales
Universidad Nacional de San Luis
Argentina
2006
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 1 de 27 U. N. S. L., Dpto. Informtica
TABLA DE CONTENIDO
TABLA DE CONTENIDO....................................................................................................... 1
PROGRAMA DE LA MATERIA............................................................................................ 3
FUNDAMENTACIN Y OBJETIVOS ........................................................................................ 3
PRE REQUISITOS, CONCEPTOS PREVIOS. .............................................................................. 3
Lgica. ....................................................................................................................... 3
Las Computadoras...................................................................................................... 3
Resolucin de Problemas y Programacin................................................................... 3
Datos y Acciones........................................................................................................ 3
Estructuras de Datos: Arreglos. Modularidad. ............................................................ 3
CONCEPTOS NUEVOS .......................................................................................................... 4
Unidad I ..................................................................................................................... 4
Unidad II.................................................................................................................... 4
Unidad III .................................................................................................................. 4
Unidad IV.................................................................................................................. 4
Unidad V.................................................................................................................... 4
Unidad VI .................................................................................................................. 4
Unidad VII ................................................................................................................. 5
Unidad VIII................................................................................................................ 5
Unidad IX.................................................................................................................. 5
Unidad X.................................................................................................................... 5
PLAN DE TRABAJOS PRCTICOS.......................................................................................... 5
RGIMEN DE APROBACIN.................................................................................................. 6
BIBLIOGRAFA BSICA........................................................................................................ 6
BIBLIOGRAFA COMPLEMENTARIA ...................................................................................... 6
PLANIFICACIN 2006 ........................................................................................................... 7
HORARIO................................................................................................................................ 8
EJERCICIOS PRCTICOS.................................................................................................... 9
PRCTICO DE LGICA: PROPOSICIONES, CONECTIVOS, TABLAS DE VERDAD. ......................... 9
Ejercicios de aula........................................................................................................ 9
PRCTICO 1. PASCAL: DEFINICIONES Y DECLARACIONES, TIPOS DE DATOS; ACCIONES,
SENTENCIAS. ESTRUCTURAS DE DATOS: ARREGLOS Y REGISTROS ...................................... 10
Prctico 1.1. Pascal: definiciones y declaraciones, tipos de datos; acciones, sentencias.
.................................................................................................................................... 10
Ejercicios de aula...................................................................................................... 10
Ejercicios de mquina............................................................................................... 14
Prctico 1.2. Estructuras de Datos: Pascal, Arreglos y Registros ............................... 14
Ejercicios de aula...................................................................................................... 14
Arreglos (arrays) .................................................................................................. 14
Registros (records) ............................................................................................... 14
Ejercicios de mquina............................................................................................... 14
PRCTICO 2. MODULARIDAD. PASCAL: PROCEDURE Y FUNCTION. .................................... 14
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 2 de 27 U. N. S. L., Dpto. Informtica
Ejercicios de aula...................................................................................................... 14
Ejercicios de mquina............................................................................................... 14
PRCTICO 3. ESTRUCTURAS DE DATOS: PASCAL EXTENDIDO, PILAS Y FILAS ..................... 14
Ejercicios de aula...................................................................................................... 14
PRCTICO 4. ESTRUCTURAS DE DATOS: PASCAL EXTENDIDO: LISTAS. ............................... 14
Ejercicios de aula...................................................................................................... 14
PRCTICO 5. ESTRUCTURAS DE DATOS: MULTINIVEL. ....................................................... 14
Ejercicios de aula...................................................................................................... 14
PRCTICO 6. IMPLEMENTACIN DE ESTRUCTURAS DINMICAS: PILAS Y FILAS. ................. 14
Ejercicios de aula...................................................................................................... 14
Ejercicios de mquina............................................................................................... 14
PRCTICO 7. IMPLEMENTACIN DE ESTRUCTURAS DINMICAS: LISTAS UNI Y BI-
DIRECCIONALES................................................................................................................ 14
Ejercicios de aula...................................................................................................... 14
Ejercicios de mquina............................................................................................... 14
PRCTICO 8. RECURSIVIDAD............................................................................................. 14
Ejercicios de aula...................................................................................................... 14
Ejercicios de mquina............................................................................................... 14
PRCTICO 9. PASCAL: TIPO POINTER ................................................................................. 14
Ejercicios de aula...................................................................................................... 14
Ejercicios de mquina............................................................................................... 14
PRCTICO 10. DATOS RECURSIVOS. ................................................................................. 14
Ejercicios de aula...................................................................................................... 14
Ejercicios de mquina............................................................................................... 14
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 3 de 27 U. N. S. L., Dpto. Informtica
PROGRAMA DE LA MATERIA
FUNDAMENTACIN Y OBJETIVOS
Introducir al alumno en el paradigma de la programacin imperativa.
Paradigma de programacin Imperativa: Estructuras de control a nivel de sentencias. Variables simples
y estructuradas, tipos de datos predefinidos y definidos por el usuario y sus usos en resolucin de
problemas, registros, archivos. Estructuras de control a nivel de unidades, parmetros formales y
actuales. Su uso en programas en un lenguaje que responda al paradigma.
Laboratorios sugeridos: Implementacin y corrida de programas cortos usando un lenguaje
imperativo.
Licenciado en Ciencias de la Computacin, Contenidos Mnimos del Ciclo Obligatorio, Anexo III,
Ordenanza C.S. 11/98. Profesorado en Ciencias de la Computacin, Contenidos Mnimos, Anexo II,
Ordenanza C.D. 003/00. Tcnico Universitario en Web, Contenidos Mnimos, Anexo II, Ordenanza
C.D. 008/04. Tcnico Universitario en Redes de Computadoras, Contenidos Mnimos, Anexo II,
Ordenanza C.D. 007/04.
PRE REQUISITOS, CONCEPTOS PREVIOS.
Lgica.
Introduccin a la Lgica. Proposiciones. Funciones proposicionales. Variables proposicionales.
Funtores de verdad (a) Conectivos: Conjuncin Disjuncin, Condicional, Bicondicional. (b) No-
conectivos: Negacin.
Las Computadoras
Las Computadoras. Las partes de una computadora. Las partes internas: Unidad Central de
Proceso. Procesadores y Microprocesadores. Procesadores y Co-procesadores. Memoria
Principal. Las partes externas. Teclado. Video. Memoria auxiliar: Discos magnticos: Discos
magnticos flexibles (floppy disquete). Discos magnticos rgidos (duros). La informacin
(datos) dentro de la computadora. El funcionamiento. El Sistema Operativo.
Resolucin de Problemas y Programacin
Programacin de computadoras. Programacin y Resolucin de Problemas. El Proceso de
Resolucin de Problemas. Etapas de la Resolucin de Problemas. Los Paradigmas de la
Programacin. Programacin Imperativa. Programacin y Datos. Estructuras de programacin.
Lenguajes de programacin: caractersticas generales. Mtodos de descripcin de lenguajes de
programacin. Sintaxis y semntica. Metalenguajes de definicin.
Datos y Acciones
Acciones y descripcin de datos. Datos: estndar, escalares. Definicin y declaracin.
Constantes, variables, tipos. Acciones: Sentencias de asignacin, iteracin, seleccin, sentencias
compuestas.
Estructuras de Datos: Arreglos. Modularidad.
Arreglos: orden de sus elementos, capacidad, operaciones. Modularidad: Subalgoritmos
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 4 de 27 U. N. S. L., Dpto. Informtica
CONCEPTOS NUEVOS
Unidad I
Introduccin al Lenguaje de Programacin Pascal.
Orgenes, objetivos.
Acciones y descripcin de datos.
Datos: estndar, escalares. Definicin y declaracin. Constantes, variables, tipos.
Acciones: Sentencias de asignacin, iteracin, seleccin, sentencias compuestas.
Estructuras de Datos. Orden de sus elementos: cronolgico, no cronolgico. Capacidad:
dinmica, esttica. Operaciones.
Arreglos: orden de sus elementos, capacidad, operaciones.
Registros: orden de sus elementos, capacidad, operaciones. Lenguaje de programacin Pascal:
tipos record y array.
Unidad II
Modularidad.
Concepto de mdulo.
Lenguaje de programacin Pascal: Procedimientos y funciones. Declaracin, invocacin,
parmetros. Pasaje de parmetros.
Resolucin de problemas y uso de procedimientos y funciones.
Unidad III
Estructuras de datos I.
Pilas: orden de sus elementos, capacidad, operaciones.
Filas o colas: orden de sus elementos, capacidad, operaciones.
Extensiones al lenguaje Pascal para manejo de estructuras dinmicas: pilas y filas.
Declaraciones. Operaciones. Predicados.
Unidad IV
Estructuras de datos II.
Listas uni-direccionales: composicin de los elementos, orden de sus elementos, capacidad,
operaciones.
Listas bi-direccionales: composicin de los elementos, orden de sus elementos, capacidad,
operaciones. Cursores. Generalidad de las listas.
Extensiones al lenguaje Pascal para manejo de estructuras dinmicas: listas. Declaraciones.
Operaciones. Predicados.
Unidad V
Estructuras de datos III.
Estructuras de ms de un nivel: estructuras multinivel. Estructuras estticas. Arreglos
multinivel. Registros multinivel.
Estructuras dinmicas. Composicin de los elementos. Operaciones.
Extensiones al lenguaje Pascal para manejo de estructuras dinmicas multinivel. Declaraciones.
Operaciones. Predicados.
Unidad VI
Implementacin de Estructuras de Datos I.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 5 de 27 U. N. S. L., Dpto. Informtica
Conceptos Generales: Administracin de los espacios libres. Desborde y desfonde. Mtodos de
administracin de los espacios libres: administracin esttica, administracin dinmica.
Implementacin de pilas: con y sin desplazamiento.
Implementacin de filas o colas: con y sin desplazamiento.
Unidad VII
Implementacin de Estructuras de Datos II.
Implementacin de listas: con y sin desplazamiento.
Unidad VIII
Recursividad.
Conceptos Generales y aplicaciones. PASCAL: procedimientos y funciones recursivas.
Unidad IX
PASCAL, tipo pointer: Conceptos Generales y aplicaciones.
Unidad X
Datos recursivos.
Conceptos Generales.
Implementacin de estructuras de datos, listas uni y bi-direccionales, empleando el tipo pointer
del PASCAL.
PLAN DE TRABAJOS PRCTICOS
1. En aula: PASCAL: definiciones y declaraciones, datos y acciones. Estructuras de Datos: PASCAL:
Array (arreglo) y record (registro). En mquina: de los temas del prctico de aula.
2. En aula: Modularidad. PASCAL: declaraciones y uso de procedure y function. En mquina: de
los temas del prctico de aula.
3. En aula: Estructuras de Datos: pilas, filas. Declaraciones y operaciones empleando las
extensiones del PASCAL.
4. En aula: Estructuras de Datos: listas uni y bi-direccionales. Declaraciones y operaciones
empleando las extensiones del PASCAL.
5. En aula: Estructuras de Datos: multinivel. Declaraciones y operaciones empleando las
extensiones del PASCAL.
6. En aula: Implementacin de estructuras: pilas, filas, empleando PASCAL. En mquina: de los
temas del prctico de aula.
7. En aula: Implementacin de estructuras: listas uni y bi-direccionales, empleando PASCAL. En
mquina: de los temas del prctico de aula.
8. En aula: Recursividad. En mquina: de los temas del prctico de aula.
9. En aula: PASCAL; Tipo Pointer.
10. En aula: Datos recursivos. Implementacin de estructuras, listas uni y bi-direccionales,
empleando el tipo pointer del PASCAL. En mquina: de los temas del prctico de aula.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 6 de 27 U. N. S. L., Dpto. Informtica
RGIMEN DE APROBACIN
1.- Crdito Horario: El crdito horario semanal es de nueve (9) horas, separado en tres (3) horas de
teora y seis (6) horas de trabajos prcticos, divididos en cuatro (4) horas de trabajos prcticos de
aula y dos (2) horas de trabajos prcticos sobre mquina. En algunos casos los horarios de
prcticos de aula pueden emplearse en mquina.
2.- Regularizacin y Aprobacin: La materia se desarrolla con la modalidad de promocin sin
examen final. Existen dos niveles:
2.1.- Regularizacin solamente: Para regularizar la materia se deber:
2.1.1.- Tener como mnimo un 80% de asistencia a clases prcticas.
2.1.2.- Tener los prcticos, pedidos por la ctedra, aprobados. Son cuatro (4) Trabajos
Prcticos a entregar: dos (2) en mquina y dos (2) en aula.
2.1.3.- Aprobar la Evaluacin Final Integradora con un mnimo del 60%.
2.2.- Regularizacin y Aprobacin: Para regularizar y aprobar la materia se deber:
2.2.1.- Cumplir con los requisitos 2.1.1 y 2.1.2.
2.2.2.- Aprobar la Evaluacin Final Integradora con un mnimo del 70%. El porcentaje de 70 a
100 se corresponder con una escala de cuatro a diez, la que ser la nota definitiva en la
materia.
3.- Examen Final.
3.1.- Aquellos alumnos que solo regularicen la materia podrn rendir el examen final, en los turnos
establecidos.
3.2.- Para rendir la materia en forma libre deber haberse cumplido, dentro de los doce meses
anteriores al examen, con el requisito 2.1.2.
BIBLIOGRAFA BSICA
* Pascal: Manual del Usuario e Informe. K. Jensen y N. Wirth. Ed. El Ateneo.
* Manuales de los sistemas operativos empleados (MS-WINDOWS, Linux).
* Notas de Clase de la ctedra.
BIBLIOGRAFA COMPLEMENTARIA
* Programacin Estructurada. Dahl, Dijkstra, Hoare. Ed. Tiempo Contemporneo.
* Algoritmos + Estructuras de Datos = Programas. N. Wirth. Ed. del Castillo.
* El Arte de la Programacin, Vol I. D. Knuth. Ed. Reverte.
Programacin I Gua de Trabajos Prcticos - 2006
Area de Programacon y Metodologa de Desarrollo del Software Pgina 7 de 27 U. N. S. L., Dpto. Informtica
PLANIFICACIN 2006
Sem. Fecha Contenido
1
Agosto
7 al 11
Prctico 1.1. Repaso: Resolucin de problemas. Lgica. Lenguaje
PASCAL. Tipos de datos. Asignacin, secuencia, iteracin, seleccin.
Estructuras de Datos: arreglos.
2
Agosto
14 al 18
Prctico 1.2. PASCAL: Estructuras de Datos: Array y record.
Iteraciones, casos particulares.
3
Agosto
21 al 25
Lu 21 y Vi
25 Feriado
Prctico 2. Modularidad. PASCAL: Procedimientos y funciones

4
Septiembre
28/8 al 1/9
Prctico 3. Estructuras de Datos. Pascal extendido: PILAS y FILAS
Entrega del Trabajo Prctico 1 en mquina (Prctico 1.1, Ejercicios
12 a 28. Prctico 1.2, Ejercicios de array 9 a 21, y de record 9 y 10)
5
Septiembre
4 al 8
Prctico 4. Estructuras de Datos, Pascal extendido: LISTAS Uni y Bi-
direccionales
6
Septiembre
11 al 15
Prctico 5. Estructuras de Datos, Pascal extendido: MULTINIVEL
Entrega del Trabajo Prctico 2 en aula (Prctico 2, Ejercicios 10 a
17. Prctico 3, Ejercicios 13 a 18)
7
Septiembre
18 al 22
Ju 21
Feriado?
Prctico 6. Estructuras de Datos, Implementacin: PILAS y FILAS
8
Septiembre
25 al 29
Prctico 7. Estructuras de Datos,
Implementacin: LISTAS Uni y Bi-direccionales
Entrega del Trabajo Prctico 3 en aula (Prctico 4, Ejercicios 1.
Prctico 5, Ejercicios 1 y 2)
9
Octubre
2 al 6
Prctico 8. Recursividad
10
Octubre
9 al 13

Prctico 9. PASCAL tipo pointer.
Prctico 10. Datos Recursivos, Captulo 6
Recursividad, casos particulares.,
Entrega del Trabajo Prctico 4 en mquina (Prctico 6, Ejercicios 1
a 3. Prctico 7, Ejercicios 1 a 7)
11
Octubre
16 al 20
Lu 16
Feriado
Repaso
12
Octubre
23 al 27
Evaluacin Global Integradora (Fecha y hora a confirmar. Siempre
en los horarios de clase de la materia)
13
Noviembre
30/10 al 3/11
Recuperacin de la Evaluacin Global Integradora (Fecha y hora a
confirmar. Siempre en los horarios de clase de la materia )
14
Noviembre
6 al 10
Recuperacin por Trabajo de la Evaluacin Global Integradora
(Fecha y hora a confirmar. Siempre en los horarios de clase de la
materia )
P
r
o
g
r
a
m
a
c
i

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.

También podría gustarte