Você está na página 1de 19

Universidad de Buenos Aires

Facultad De Ingeniera

Gua de Ejercicios - Primera Parte


[75.40] Algoritmos y Programacio
n I

Catedra: Andrs Jurez


ndice

Introduccin....................................................................................................................................................... 3

Estructuras consecutivas o secuenciales .............................................................................................................. 5

Estructuras selectivas ......................................................................................................................................... 6

Estructuras Repetitivas ...................................................................................................................................... 8

Funciones y procedimientos.............................................................................................................................. 9

Vectores y Matrices......................................................................................................................................... 13

Cadenas de caracteres (seccin optativa) ........................................................................................................ 14

Registros y Tablas............................................................................................................................................ 15

Ejercicios integradores (tipo parcial)................................................................................................................ 16

Recursividad..................................................................................................................................................... 17

Archivos ........................................................................................................................................................... 17

2
Introduccin

La intencin de esta gua es que aprendas a resolver problemas mediante algoritmos bajo programacin
estructurada. Los mismos se pueden implementar en el lenguaje que ests estudiando, ya sea Pascal, C,
Python o cualquier otro que soporte el paradigma estructurado.

Los problemas tienen un orden progresivo en dificultad y estn divididos en secciones que sern los temas
que se van a ir viendo en la terica. Cada nueva seccin incluye a las anteriores, de esta forma, en la seccin
de vectores y matrices, por ejemplo, aunque no se mencione hay que manejar y aplicar funciones y
procedimientos. Es por esto que se recomienda no pasar a una nueva seccin sin tener bien en claro la
anterior.

Cmo tens que trabajar con esta gua para que d sus resultados?
La idea es que comiences por el ejercicio 1 de la primera seccin y te dejes llevar por las recomendaciones
que se indican y las respetes al pie de la letra. Es preferible estar analizando un buen rato un solo ejercicio que
hacer varios en forma descuidada.

Vers que hay algunos que tienen unos smbolos al final, significan:

(+) Obligatorios
(=) Electivos

Estos smbolos son los ejercicios que se deben entregar o subir al portafolio. Hay obligatorios y, entre los
optativos, se debern elegir alguna cantidad mnima que se indicar. Pero esto no significa que el resto de los
ejercicios no se deban hacer. Lo ideal es hacer todos los ejercicios. Aunque, la realidad, es que pueden llevar
mucho tiempo del que no siempre se dispone. Si ste es el caso, pods ir eligiendo los ejercicios que quers
hacer, cuidando que, por lo menos, representen el 60% del total de la gua.
Del total de los ejercicios que hagas, se recomienda que, por lo menos, un 30% lo hagas en papel, antes de
codificarlo en alguna mquina. Por qu? Porque cuando uno lo escribe en papel piensa ms que cuando lo
hace en la mquina. La intencin de resolverlo en forma rpida hace que uno no le dedique, al problema, el
tiempo que realmente necesita. Por otra parte, es habitual que, cuando se escribe en una mquina, se prueba
y se detecta que no funciona correctamente, uno toque el cdigo en forma indiscriminada, sin pensar mucho
lo que se est haciendo, slo manejndose por los resultados de la salida, de manera prueba y error. Esto no
es para nada recomendable.
Tambin, es bueno que, despus de resolver algn ejercicio en papel, hagas un seguimiento de escritorio. Es
decir, tomes algunos valores de entrada y sigas el algoritmo anotando los valores que van tomando las
variables a cada paso.

Otra cosa que se recomienda es que seas prolijo a la hora de hacer los ejercicios. Los tengas todos en un
cuaderno y los que estn en la mquina estn en un directorio aparte y que lo puedas ubicar fcilmente. No
sobre escribas ejercicios. Si hacs distintas versiones de un mismo ejercicio, guardalas todas indicando v0, v1,
etc. Cada tanto es bueno rever lo que se hizo, mirar los primeros ejercicios hechos cuando se est por la mitad
de la gua sirve para medir el avance realizado. Adems, en muchos ejercicios se piden cosas que, en parte, ya
se pidieron anteriormente. Todo lo que puedas reutilizar ser bienvenido porque, por un lado, te ahorra
tiempo y, por otro, te acostumbra a evitar re escribir cdigo, lo cual es uno de los objetivos que se irn
persiguiendo en todo el curso.

3
Cuando se resuelve un problema, la primera meta a conseguir es que tu algoritmo funcione y cumpla lo que
se pide. Pero no te tens que conformar con eso. De a poco empez a buscar calidad en tu cdigo. Hacete
alguna de estas preguntas:
- Podra haber logrado la solucin en forma ms eficiente? Con menos lneas de cdigo? Con menos
ciclos?
- Los nombres de las variables, funciones y procedimientos son claros y representativos?
- La salida por pantalla es clara y agradable a la vista? Se pide intervencin del usuario
innecesariamente? El usuario sabr qu datos tiene que ingresar y qu datos le muestran?
- El cdigo es legible? Dej sangras en cada bloque?
- Poda haber modularizado mejor el cdigo? Cada funcin y procedimiento se dedica a resolver una
sola cosa?

El aprendizaje de resoluciones algortmicas es como cualquier otro aprendizaje: se necesita prctica, tiempo
de dedicacin y que sea progresivo. A una persona que jams entren en su vida no se le puede pedir que
corra una maratn. En cambio, si uno empieza corriendo pequeas distancias y las va aumentando en forma
progresiva, al final podr hacerlo.

xitos!

AJ.

4
Estructuras consecutivas o secuenciales
- Los siguientes seis ejercicios escribirlos en papel, en pseudocdigo.

- Para el ejercicio 4 o 5 escribir un diagrama de flujo.

1) Leer un nmero por teclado e imprimirlo en pantalla con el siguiente cartel: Nmero ingresado =
nmero. (=)

2) Pedir al usuario que ingrese dos nmeros por teclado e imprimir (+)

- La suma de ambos

- La resta (el primero menos el segundo)

- La multiplicacin

- La divisin entera (suponer que el nmero dos no es cero).

3) Escribir un programa que lea el nombre de una persona y, luego, lo salude. (+)
4) Dado el radio R de una esfera, calcular e imprimir su superficie y su volumen. (=)
5) Leer la base y la altura de un rectngulo, calcular el permetro y la superficie. (=)
6) Leer dos nmeros A y B e intercambiar el valor de sus variables. (+)

- Ahora, los mismos ejercicios, escribirlos en un compilador y probarlos.

- Investig, teniendo en cuenta alguno de los programas escritos, qu archivos se generaron en el directorio de
trabajo.

- Si usaste la biblioteca CRT para limpiar la pantalla, fijate en qu directorio se encuentra y qu extensin tiene.

- Para los ejercicios 4 y 5 escribir (en papel) algunos datos de entrada para R, la base y la altura y escribir la salida
esperada (con tres datos de entrada alcanzan). Al escribirlos y correrlos en Pascal ingresar estos datos y verificar la
salida.

5
Estructuras selectivas
- Los primeros seis ejercicios escribirlos en papel, en primer lugar, luego escribirlos en un compilador y probarlos.

1) Leer un nmero real y decir si es mayor, menor o igual a cero. (=)


2) Leer dos nmeros reales e imprimir el mayor de ellos. (=)
3) Dadas las horas de partida y de llegada de un mvil, expresadas en horas, minutos y segundos, calcular
su velocidad promedio sabiendo que la distancia recorrida es D.
4) Escribir un algoritmo que determine si un nmero entero, que ingresa un usuario, es par. (=)

- Para el ejercicio 5 escribir (en papel) algunos datos de entrada y escribir la salida esperada (con tres datos de
entrada alcanzan). Al correrlo en Pascal ingresar estos datos y verificar la salida.

- Para el ejercicio 5 escribir un diagrama de flujo.

5) Escribir un algoritmo que determine si un nmero N (entero), que ingresa un usuario, es divisible por M.
(+)

6) Leer dos nmeros y, luego, una opcin (puede ser suma, resta, multiplicacin o divisin), segn la
opcin elegida realizar el clculo. (+)

- Una vez escrito el ejercicio 6, and al siguiente link: Pregunta y respond las preguntas.

7) Formar un men con 4 opciones y, al elegir una de ellas, saldr un cartel diciendo qu opcin se eligi o
si fue una opcin incorrecta. (+)

8) Pasar un perodo expresado en segundos a un perodo expresado en das, horas, minutos y segundos. (+)

- Una vez escrito el ejercicio 8, and al siguiente link: Pens.

6
9) Hac el seguimiento, en papel, de los siguientes cdigos y decid si son equivalentes (si hacen lo mismo).
Indic qu imprimen:
Program seguimiento1; Program seguimiento2;
var x: integer; var x: integer;
begin begin
x := 3; x := 3;
if (x < 5) then x := x + 1; if (x < 5) then x := x + 1
if (x = 5) then x := x + 2; else if (x = 5) then x := x + 2
if (x > 5) then x := x + 3; else x := x + 3;
writeln(x); writeln(x);
end. end.

10) Escrib los dos cdigos del ejercicio anterior en una mquina y prob que la salida sea la que esperabas.
11) Volv a hacer el seguimiento, primero en papel y, luego, verificando en mquina, de los cdigos del
ejercicio 9 pero, cambiando x de 3 a 4 en la primera lnea:
x := 4;

12) Hac el seguimiento en papel, luego verific en mquina, del siguiente cdigo. Indic qu imprime:

Program seguimiento3;
var x, y: integer;
begin
x := 3; y := 8;
if (x > 3) then
if (y < 8) then writeln(hola)
else writeln(chau);
end.

- Luego de haber probado el cdigo anterior and al siguiente link: modific.

- Ahora que finalizaste esta seccin prob, con el compilador, todas las dudas que tengas, todas las
preguntas que te hiciste, experiment y escribilas a ver qu pasa. Por ejemplo, qu pasa si se pide el
ingreso de un nmero entero y el usuario ingresa un real? Etc. Anot lo que sucede.

- Investig: Dnde se guarda el archivo crt? Qu extensin tiene?

7
Estructuras Repetitivas

- Resolv los ejercicios en papel (hasta el 5). Despus escribilos en el compilador y probalos.

1) Imprimir por pantalla una lista de 20 nmeros consecutivos, los cuales comienzan con un nmero
ingresado por teclado. (=)
2) Leer un nmero N y calcular su factorial. (=)
3) Leer una serie de nmeros enteros, terminando la serie con un cero. Imprimir los datos a medida que se
los ingresa junto con la suma parcial de los mismos.
4) Dada una serie de nmeros enteros, determinar el valor mximo, mnimo y las posiciones en que stos
se encontraban en la serie. El programa deber ir preguntando si hay ms nmeros para ingresar. (+)
- Despus de escribir este ejercicio and al siguiente link: verificar.

5) Leer un valor N y, luego, N nmeros enteros. Se pide imprimir el mayor, el menor y las veces que
aparece cada uno. (=)
6) Leer A y B, enteros. Calcular C = A x B mediante sumas sucesivas e imprimir el resultado.

- Antes de escribir el ejercicio 7 hac un diagrama de flujo. Luego, escribirlo y probarlo.


7) Leer A y B, enteros. Calcular C = AB mediante multiplicaciones sucesivas e imprimir el resultado. Tener en
cuenta que son nmeros enteros, por lo tanto pueden tomar valores positivos, negativos o cero. (=)
8) Escribir un algoritmo que indique si un nmero entero, ingresado por un usuario, es primo. (+)
- Despus de escribir este ejercicio and al siguiente link: investigar.

9) Dada una serie de nmeros enteros terminada en cero, imprimir los tres mayores.

10) Dada una lista de nombres y salarios respectivos, determinar el salario mximo, el mnimo y la persona
que percibe cada uno.

8
Funciones y procedimientos

1) Hacer una funcin que, dado los coeficientes de un polinomio de segundo grado (3 nmeros reales),
indique si tiene o no races reales. (=)

2) Hacer una funcin que invocada como expo(x,n) devuelva el valor de x a la n, donde x es un nmero
real y n entero (puede ser negativo). Resolverla con multiplicaciones.

3) Hacer un procedimiento que devuelva las races reales de un polinomio de segundo grado y, adems,
indique si tiene o no races reales. (+)

4) Hacer una funcin que indique si un nmero (longint) es primo o no. Utilizar lo realizado en el ejercicio
8 de la prctica anterior. (+)

5) Hacer un programa que liste todos los nmeros primos desde 2 hasta un nmero ingresado por el
usuario, utilizando la funcin realizada en el ejercicio anterior. (+)
- Despus de escribir este ejercicio and al siguiente link: compar.

6) Escribir un programa, utilizando funciones y/o procedimientos, que descomponga un nmero en sus
factores primos. Agregale comentarios al programa donde lo creas necesario.
- De ac en adelante, todos los programas debern tener, como mnimo, una funcin o un procedimiento.

- Antes de escribir el ejercicio 7 hac un diagrama MODULAR.


7) Realizar un algoritmo que lea una serie de nmeros reales y verifique si estn ordenados en forma
ascendente, descendente o si no estn ordenados, informando por pantalla. (+)

8) Dada una serie de datos de la forma mes (1 a 12, no vienen ordenados), cantidad recaudada (en pesos)
y costo total (en pesos), hacer un algoritmo que calcule e imprima cul fue el mes que arroj mayor
ganancia. La serie termina con mes igual a cero.

9
9) Se leen 300 datos que representan el peso de la misma cantidad de nios que hay internados en un
hospital. Se desea confeccionar la siguiente tabla:
- Entre 0,000 y 10,000 kg. hay ............... nios.
- Entre 10,001 y 20,000 kg. hay ............. nios.
- Entre 20,001 y 30,000 kg. hay ............. nios.
- Ms de 30,000 kg. hay .................... nios.
- Nota: Probar el ejercicio modificando 300 por 15, tratar de repartir los valores en diferentes rangos.
Verificar. Luego, utilizando la funcin random, simular el ingreso de los 300 datos.

10) La relacin entre temperaturas Celsius y Fahrenheit est dada por: C = 5/9 * (F-32) Escribir un algoritmo
que haga una tabla de valores Celsius-Fahrenheit, para valores entre OF y 200F, con intervalos de 10.

11) Contar la cantidad de letras de un telegrama que termina en punto (los textos se leen letra por letra).
(=)

12) Contar la cantidad de palabras, separadas por uno o ms espacios, de un telegrama que termina en
punto. (=)

13) Dado un texto terminado en punto, determinar cul es la vocal que aparece con mayor frecuencia.

14) Dado un texto terminado en / se pide determinar cuntas veces aparece determinada letra.

15) Dado un texto terminado en / averiguar qu cantidad de letras tiene la palabra ms larga. Suponer
que nunca sucede que la primera letra del texto es una /. (+)

16) Leer dos letras de teclado y luego un texto terminado en /. Se pide determinar la cantidad de veces
que la primera letra precede a la segunda en el texto.

17) Leer N y luego N lotes de nmeros reales que terminan con un valor 0, y calcular la media individual de
cada lote, junto con la media total de todos los nmeros ingresados.

18) Se dispone del registro diario de lluvias de un mes para una localidad. Si llovi algn da del mes, indicar
cul fue el da ms lluvioso y utilizar un indicador lgico para discriminar si llovieron dos das seguidos en
el mes. Si no llovi en todo el mes emitir un mensaje. (+)

19) Escribir un algoritmo que lea un nmero real cualquiera y lo redondee con dos decimales. Verificar con
distintas entradas.

10
20) Construir una funcin o procedimiento (lo que creas necesario) para que pase una letra mayscula a
minscula. Esta funcin debe verificar, previamente, que el carcter pasado como parmetro sea
realmente una letra mayscula.

21) Hacer un procedimiento que devuelva el mximo comn divisor y el mnimo comn mltiplo entre dos
enteros. (+)

22) Hacer un procedimiento que, invocado como intercambio(x,y), intercambie sus valores. (+)

23) Escribir un programa principal, con un men de opciones, para que invoque a los procedimientos de los
puntos 3 y 21 y a la funcin del punto 4. (+)

24) Escribir en el programa del punto anterior comentarios al principio de cada funcin / procedimiento
indicando qu es lo que hace, qu recibe y qu devuelve. Agregar comentarios en el programa principal.
Verificar que los nombres de las variables y los procedimientos y funciones sean correctos.

25) Hacer el seguimiento en papel del siguiente cdigo, luego correrlo en mquina. (+)
Program seguimiento4;
Procedure p(var x: integer; y: integer);
begin
x := x + 2;
y := y + 10;
writeln(x, ,y);
end;

var x, y: integer;

begin
x := 3; y := 8;
writeln(x, ,y);
p(x, y);
writeln(x, ,y);
p(y, x);
writeln(x, ,y);
end.

11
26) Hacer el seguimiento en papel del siguiente cdigo, luego correrlo en mquina. (+)
Program seguimiento5;
Procedure p(var x: integer; y: integer);
begin
while (x < y)

x := x + y;
x := x + 2;
y := y + 10;
writeln(x, ,y);
end;

var x, y: integer;

begin
x := 3; y := 8;
writeln(x, ,y);
p(x, y);
writeln(x, ,y);
p(y, x);
writeln(x, ,y);
end.

12
Vectores y Matrices

1) Desarrollar un procedimiento que devuelva en un vector los nmeros primos entre 2 y 200. Reutilizar lo
que ya se escribi y prob. (+)

2) Dados dos vectores A y B, de N elementos cada uno, se desean calcular: (=)


a) el vector suma.
b) el producto escalar.

3) Por cada alumno que rindi un examen de ingls se lee el nmero de padrn, y la nota obtenida. Se
desea saber la cantidad de alumnos que rindieron el examen y el porcentaje de alumnos que obtuvieron
cada nota.

4) Se lee un vector X de N elementos (enteros). Escribir un algoritmo que devuelva un vector que tenga
todos los elementos de X, pero sin elementos repetidos. (=)

5) Se leen dos vectores A y B, de N y M elementos respectivamente. Construir un algoritmo que halle los
vectores unin e interseccin de A y B. Previamente habr que ordenarlos.

6) Si los nmeros de un vector representan los coeficientes de un polinomio (de grado no mayor a 10),
escribir un algoritmo que calcule la especializacin de ese polinomio con un nmero que elige el
usuario. (+)

7) Escribir un algoritmo que halle una matriz C como suma de dos matrices A y B. La dimensin de las
matrices de M N se lee como dato (suponer un MAX para fila y columna). (=)

8) Escribir un algoritmo que halle un vector cuyos elementos son la suma de los elementos de cada fila de
una matriz previamente ingresada. (=)

9) Escribir un programa que calcule la traza de una matriz cuadrada. Recordar que la traza de una matriz es
la suma de los elementos de su diagonal principal.

10) Escribir un algoritmo que determine si una matriz cuadrada ingresada es la matriz identidad. Optimizar el
cdigo.
11) Escribir un algoritmo que construya un vector con los valores mnimos de cada una de las filas de una
matriz. (+)

13
Cadenas de caracteres (seccin optativa)

1) Hacer un procedimiento o funcin que dada una fecha en formato DD/MM/AA, verifique si es correcta o
errnea. Ej: El 31/02/97 es una fecha errnea. Investigar cmo se calcula si un ao es bisiesto o no. (+)

2) Escribir un procedimiento o funcin que, dada una palabra, determine si es capica o no.

3) Escribir un procedimiento que ordene alfabticamente una lista de N nombres.

4) Escribir un procedimiento que, dado dos vectores (uno contiene nombres y el otro nmero de
padrones), ordene el primero (utilizando el procedimiento del ej. anterior) y el segundo en paralelo. (+)

5) Escribir un subprograma que detecte, en un string, una operacin que se desee realizar, ej: 59 + 30 y
devuelva el valor o un mensaje que no se puede realizar la operacin. Las operaciones pueden ser +, -, x
o /.

14
Registros y Tablas

1) Definir un tipo de dato Complejo, y procedimientos y funciones para: (+)

- Asignarle valor

- Mostrarlo por pantalla en formato: a + b i

- Sumar dos complejos y devolver un tercero, en donde est la suma de los otros dos

- Restar dos complejos (el primer parmetro menos el segundo)

- Multiplicar dos complejos

- Obtener su mdulo

- Dividir dos complejos (el primer parmetro dividido el segundo)

Nota: se debe tener en cuenta que un nmero complejo est formado por dos nmeros reales.

2) Escribir un programa principal que utilice el tipo de dato Complejo creado en el punto anterior. Le pida
al usuario ingresar dos nmeros complejos y, por intermedio de un men de opciones, preguntarle si
los quiere sumar, restar, etc. Ejecutar esto en un ciclo hasta que el usuario indique, de alguna manera,
que desea finalizar. (+)

3) dem ejercicio 1) pero con dato Fraccion, con las siguientes variantes: (+)
- La impresin debe salir en formato: a / b
- En lugar de obtener su mdulo, simplificar la Fraccion.

Nota: se debe tener en cuenta que un nmero racional est formado por dos nmeros enteros.

4) dem ejercicio 2) pero con dato Fraccion. (+)


5) Definir un tipo Persona, donde se pueda almacenar su nombre, y el nmero de telfono. Definir un tipo
Agenda, en donde se pueda guardar los datos de, a lo sumo, 20 Personas y permita: (+)
- Cargar los datos en la Agenda
- Poder buscar el telfono de una persona indicando su nombre
- Poder buscar el nombre de una persona indicando su telfono
- Poder modificar el nmero de telfono de alguna persona
- Poder agregar un nuevo contacto
- Poder dar de baja a un contacto

15
Ejercicios integradores (tipo parcial)

6) El Servicio Meteorolgico Nacional tiene registrado, mes por mes, la cantidad de lluvia cada por
provincia, en mm (entero) y el promedio de humedad relativa (real).
Estos datos los guarda en una matriz de 24 (23 provincias ms CABA) x 12 (meses).
Nota: simular la carga de forma aleatoria (utilizando la funcin random).

Se pide, hacer una aplicacin en Pascal que realice lo siguiente: (+)

a) Indicar en qu mes llovi ms y la cantidad.

b) Indicar si la provincia donde ms llovi es la que tiene mayor humedad relativa.


Hacer un listado de las 10 provincias donde ms llovi, ordenado de mayor a menor por cantidad de agua
cada. Indicando: nombre de provincia y cantidad de agua cada

7) Un artculo se comercializa en 5 sucursales. Se leen N (N lo carga el usuario) datos, con el siguiente


formato:
sucursal: byte. Nmero de sucursal (de 1 a 5)
mes: byte. Nmero de mes (de 1 a 12)
cantidad: integer. Cantidad del producto vendida.
monto_total: real. Monto recaudado (los precios del producto difieren por cada sucursal y por cada mes).
Nota: generar los datos de forma aleatoria.
Se pide hacer un programa en Pascal que: (+)

a) Vuelque los datos en una matriz de 5 (sucursales) x 12 (meses). Cada celda contendr un registro con la
informacin cantidad monto_total.
b) A partir de la matriz armar un listado, ordenado de mayor a menor por monto, indicando sucursal, mes
y cantidad vendida.
c) Indicar si la mayor cantidad vendida corresponde al precio unitario ms bajo.

16
Recursividad
1) Hacer una funcin recursiva que devuelva la sumatoria desde 1 hasta un nmero n que se pase por
parmetro. Probarla con un pequeo programa. (+)

2) Hacer una funcin recursiva que devuelva la suma de los elementos de una lista que se pasa por
parmetro.

3) Hacer una funcin recursiva que devuelva el valor de la Sucesin de Fibonacci de un entero n. Nota: la
serie de 0, devuelve 0, y la de 1 devuelve 1. Luego, devuelve la suma de los dos trminos anteriores.
Luego, hacerla de manera iterativa (mediante un ciclo). Comparar el rendimiento (tomar los tiempos)
con la Serie en 5, 15, 30 y 60. (+)

4) Hacer una funcin recursiva que invierta un string que se pase por parmetro, y lo devuelva. Por
ejemplo: CASA ASAC. Probarla con un pequeo programa.

Archivos
1) Dado un archivo prueba.txt de formato CSV (valores separados por coma), en donde hay 3 campos:
nmero de padrn, nombre y apellido, nota (de tipo entero), se pide: leerlo e imprimirlo por pantalla
con el mismo formato que est en el archivo. Nota: escribir un archivo para probar el programa. (+)

2) Dado el mismo archivo del punto anterior, leerlo por completo e ir generando, a medida que se lo lee, un
nuevo archivo prueba2.txt con el mismo formato, pero, en lugar de nota ir: R (recursa) si la nota es
menor a 4, A (aprobado) si est entre 4 y 7, D (distinguido) si es 8 o 9, y S (sobresaliente) si es 10. (+)

3) Dado un archivo MAESTRO.txt y uno NOVEDAD.txt con el formato que se encuentra en el video de
ejemplo, se pide hacer un apareo, teniendo en cuenta que, la cantidad de campos del archivo NOVEDAD
puede no ser correcta (ms o menos campos), en estos casos, la lnea ir al archivo de ERRORES. (+)

4) Dados dos archivos de ventas de SUCURSAL_1.txt y SUCURSAL_2.txt como los del ejemplo del video, se
pide hacer un merge, teniendo en cuenta que la cantidad de campos (en cualquiera de los archivos)
puede no ser la correcta (ms o menos campos). (+)

5) Rehacer el ejercicio 1 pero con un archivo binario: pruebas.dat (+)

6) Rehacer el ejercicio 2 pero con archivos binarios: pruebas2.dat (+)

7) Rehacer el ejercicio 3 pero con archivos binarios: MAESTRO.DAT y NOVEDAD.DAT. (+)

8) Rehacer el ejercicio 4 pero con archivos binarios SUCURSAL_1.DAT y SUCURSAL_2.DAT. (+)

17
Anexo

Pregunta
Revis el cdigo y respond

- Los nombres de las variables son correctos?

- Dej la sangra necesaria en los bloques internos?

Volver a la gua

Pens
Son correctos los nombres de las variables? Una persona que desconozca el enunciado, se dar
cuenta qu significa cada una de las variables?
Si la respuesta a la pregunta es NO, reescrib el algoritmo cambiando los nombres de las variables para
que cualquier persona que lo lea, lo pueda entender.
Volver

Modific
- Por qu no imprimi chau? Qu sucedi?
- Cmo podras modificar el cdigo para que, con el mismo ejemplo, imprima chau?
Volver

Verificar
- Prob el ejercicio anterior con nmeros positivos y negativos.
- Slo con negativos.
- Con un solo nmero.
- Con dos nmeros distintos.
- Con dos nmeros iguales.
- Con el mximo en la primera posicin y el mnimo en la ltima.
- Con el mximo en la ltima posicin y el mnimo en la primera.
- Con el mximo y el mnimo en cualquier posicin, salvo la primera y la ltima.
- Verific que funcione correctamente en todos los casos.
18
- Al finalizar grafic un diagrama de flujo.
Volver

Investigar
- De qu otra forma se podra haber resuelto el ejercicio anterior? Busc en Internet otros algoritmos
que pueden ser de utilidad. Eleg alguno e implementalo como ejercicio 8 v2.
- A ambos ejercicios agreg un contador que se ir incrementando, cada vez que hace algn clculo o
comparacin. Al final imprim esos contadores y compar el resultado, ingresando un mismo nmero
en ambos algoritmos.
- Cambi el integer por longint. Volv a probar los ejercicios con nmeros grandes.
Volver

Compar
- El ejercicio anterior (ejercicio 5) probalo con dos funciones distintas: una basada en la primera versin
del ejercicio 8 y, la otra, con la segunda. Dej los contadores que te decan cuntas operaciones haca el
algoritmo.
- Prob ambos algoritmos con el nmero 100 y compar: los contadores y el tiempo que tard en
ejecutarse uno y otro. Medilo con un cronmetro.
Ac hay uno: http://cronometro-online.chronme.com/
- Ahora hac lo mismo con el nmero 1000.
- Ahora con 10000. Qu nots?
- Ahora con 100000. Qu pas?
- Alguna conclusin?
Volver

19