A continuación os voy a poner una serie de ejercicios en Pascal. Son de nivel básico. Irán clasificados por bloques, y mas o menos lo que se usa en cada bloque(está claro que por ejemplo, los ejercicios del bloque tres, implicarán cosas del bloque dos y uno a la fuerza).
No son de mi creación, y yo hasta la fecha, solamente e resuelto hasta el bloque 6, y alguno del bloque 7 (con ayuda de algún miembro de este foro, no lo nombro así directamente, que si no lo abrasáis fijo xD). Por circunstancias no puedo nombrar la fuente de los ejercicios.
Empezamos
BLOQUE 1.- PRIMER PROGRAMA EN PASCAL
En este bloque se pretende usar las sentencias básica de escritura (write) y de lecuta (read), y codificar el “cuerpo” de un programa pascal (begin-end..).
Ejercicio1:
Partiendo de este código:
Código:
Program Bienvenido;
Var
nombre: string[40];
Const
HOLA='Bienvenido al mundo';
begin
write('Introduzca su nombre: ');
readln(nombre);
writeln(HOLA,' ', nombre);
end.
Se solicitita que se le añada:
- Sentencias para que, además del nombre solicite al usuario el aula dónde se ha matriculado, su dirección y que todo eso se presente por pantalla, llamando también a la constante HOLA.
El resultado tiene que ser similar a esto:
Introduzca su nombre: pepe
Introduzca su aula: 7
Introduzca su dirección: C/Las peras
Bienvenido alumno pepe
Te conectas desde el aula numero: 7
Tu dirección es: C/Las peras
BLOQUE 2.- TIPOS Y SENTENCIAS.
En este bloque se manejan los tipos de datos que tiene pascal, así como alguna de las expresiones básicas (en este caso aritméticas).
Ejercicio1:
Codificar un programa que solicite al usuario dos valores numéricos y calcule el valor medio, que es la suma de ambos dividida por dos.
El resultado debe ser similar a esto:
Introduce el primer valor numerico: 5
Introduce el segundo valor numerico: 2
La media de ambos numero es: 3,50
Ejercicio2:
Realizar un programa que calcule un valor de tipo numérico que nos indicará el peso relativo de una persona. El programa solicitará al usuario sus datos personales (nombre y edad), su altura y su peso (el peso relativo se calcula dividiendo el peso por el cuadrado de la altura.
El resultado debe ser similar a esto:
Introduzca su nombre: pepe
Introduzca su edad: 20
Introduzca su altura en m: 1.70
Introduzca su peso en Kg: 80
Hola pepe
Tu edad es 20, tu peso 80 y tu altura 1.70.
Tu peso relativo es: 27.68.
Ejercicio 3:
Codificar un programa que solicite al usuario una cantidad en pesetas y calcule y presente por pantalla el equivalente en euros.
El resultado debe ser similar a esto:
Introduzca una cantidad en pesetas: 2000
Son 12.02 euros.
BLOQUE 3.- ESTRUCTURAS DE CONTROL
En este bloque es necesario usar las estructuras de control que disponemos en pascal (sentencias selectivas y bucles).
Ejercicio1:
Realizar un programa que utilizando una estructura repetitiva (bucle) presente por pantalla los números del 1 al 10 separados por un guión.
El resultado debe ser similar a esto:
1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 -
Ejercicio2:
Modifique el programa previo para que solicite al usuario desde y hasta que número quiere presentar por pantalla.
El resultado debe ser similar a esto:
Introduzca valor inicial: 6
Introduzca valor final: 14
6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 -
Ejercicio3:
Utilizando la estructura selectiva múltiple (case) realizar un programa que solicite al usuario una vocal, y presente por pantalla un mensaje indicando el orden de la vocal y la vocal pulsada. Si pulsamos a, deberá indicar que es la primera vocal, e la segunda, i la tercera, etc.
El resultado debe ser similar a esto:
Introduzca una letra: e
Ha pulsado la segunda vocal, e
Ejercico4:
Se propone, utilizando sentencias selectivas, modificar el ejercicio del 2 del BLOQUE2. Deberá, en función del valor del peso relativo, indicar si estamos en un peso adecuado, por encima o por debajo. Puede suponer que el peso relativo deberá estar entre dos valores que pueden definir como constantes, PESOMIN y PESOMAX, que serán inicialmente 20 y 26.
El resultado deber ser similar a:
Introduzca su nombre: pepe
Introduzca su edad: 19
Introduzca su altura en m: 1.70
Introduzca su peso en kg: 80
Hola pepe.
Tu edad es 19, tu peso 80 y tu altura 1.70.
Tu peso relativo es: 27.68.
Peso por encima de lo recomendado
-------------------------------------------------------------------
(ejemplo de resultado con otro peso y otra altura)
Introduzca su nombre: pepe
Introduzca su edad: 19
Introduzca su altura en m: 1.70
Introduzca su peso en kg: 70
Hola pepe.
Tu edad es 19, tu peso 70 y tu altura 1.70.
Tu peso relativo es: 24.22.
Peso correcto.
-----------------------------------------------------------------
(otro ejemplo con otro peso y otra altura)
Introduzca su nombre: pepe
Introduzca su edad: 19
Introduzca su altura en m: 1.70
Introduzca su peso en kg: 40
Hola pepe.
Tu edad es 19, tu peso 40 y tu altura 1.70.
Tu peso relativo es: 13.84.
Peso por debajo de lo recomendado.
Ejercicio5:
Se propone modificar el ejercicio anterior. El programa deberá solicitar al usuario si desea repetir todo el proceso de petición de datos y cálculo de resultados.
El resultado debe ser similar a esto:
Introduzca su nombre: Arturo
Introduzca su edad: 26
Introduzca su peso en Kg.: 66
Introduzca su altura en m: 1.70
Hola Arturo
Tu edad es 26, tu peso 66.00 y tu altura 1.70
Tu peso relativo es 22.84
Peso correcto.
Desea continuar (S/N): S
Introduzca su nombre: Alice
Introduzca su edad: 24
Introduzca su peso en Kg.: 54
Introduzca su altura en m: 1.6
Hola Alice
Tu edad es 24, tu peso 54.00 y tu altura 1.60
Tu peso relativo es 21.09
Peso correcto.
Desea continuar (S/N): n
Ejercicio6:
Suponga que desea saber que "perfil" tienen sus llamadas telefónicas. Para ello realizará un programa que solicite la duración de las llamadas y calcule:
la duración total de sus llamadas
el valor medio
el número total de llamadas
y los presente por pantalla.
El resultado debe ser similar a esto:
Duración de la llamada (0 para terminar): 5
Duración de la llamada (0 para terminar): 10
Duración de la llamada (0 para terminar): 15
Duración de la llamada (0 para terminar): 20
Duración de la llamada (0 para terminar): 0
> Numero de llamadas: 4
> Duración total: 50.0
> Duración media: 12.5
Ejercicio7:
Añadir al programa anterior lo necesario para que clasifique las llamadas en Nacionales (N), Provinciales (P) y Locales (L) y realizar los mismo cálculos que antes para cada tipo de llamada (duración y numero de llamadas Nacionales, duración y numero de llamadas Provinciales y duración y numero de llamadas Locales). El programa también debe solicitar, después de presentar los resultados, si se desea realizar de nuevo todo el proceso anterior.
El resultado debe ser similar a esto:
Introduzca la duración de la llamada en minutos (0 para terminar): 5
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p
Introduzca la duración de la llamada en minutos (0 para terminar): 15
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: n
Introduzca la duración de la llamada en minutos (0 para terminar): 20
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: l
Introduzca la duración de la llamada en minutos (0 para terminar): 40
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p
Introduzca la duración de la llamada en minutos (0 para terminar): 0
-Especificación llamadas Nacionales, Provinciales y Locales-
El numero de llamadas nacionales a sido: 1 y su duración: 15.00 minutos.
El numero de llamadas provinciales a sido: 2 y su duración: 45.00 minutos.
El numero de llamadas locales a sido: 1 y su duración: 20.00 minutos.
-Totales-
Numero de llamadas: 4
Duración total: 80.00 minutos.
Duración media: 20.00 minutos.
Desea continuar para realizar otra lista de llamadas? S/N: n
BLOQUE 4.- SUBPROGRAMAS (Procedimientos y Funciones)
En este bloque, para la resolución de los problemas se solicita el uso de procedimientos y funciones.
Ejercicio1:
Cree una función de nombre peso_relativo que calcule el peso relativo de una persona. Esta función recibirá como parámetros por valor el peso y la altura de la persona. Devolverá como resultado de la función el valor del peso relativo. Pude usar el programa del bloque2 ejercicio2 para definir y utilizar esta función.
El resultado debe ser similar a esto:
Introduzca su nombre: Arturo
Introduzca su edad: 26
Introduzca su peso en Kg: 66
Introduzca su altura en m: 1.70
Hola Arturo
Tu edad es 26, tu peso 66.00 y tu altura 1.70
Tu peso relativo es 22.84
Ejercico2:
Codificar un conversor de pesetas a euros, y de euros a pesetas. Para ello se exige programar dos funciones que se llamarán Función calcula_euros y Función calcula_pesetas.
El resultado será similar a esto:
Para convertir:
1. Pasar de pesetas a euros.
2. Pasar de euros a pesetas.
Opcion: 2
Introduzca cantidad en euros: 30
Son 4992 pesetas.
Ejercico3:
Codificar un programa, que solicite dos números y presente por pantalla la suma de ambos. El calculo de la suma deberá realizarse dentro de un procedimiento de nombre calculo, y los resultados se deberán presentar invocando a otro procedimientos de nombre presenta_resultados (este ultimo procedimiento no debe recibir como parámetros ni el primer, ni el segundo numero.)
El resultado será similar a esto:
Introduzca el primer numero:
3
Introduzca el segundo numero:
6
El resultado de la suma es: 9.00
Ejercicio4:
A partir del programa anterior cree otro, que presente además del resultado de la suma también el de la resta, multiplicación y división. Deberá modificar los procedimientos calculo y presenta_resultados como sea necesario, pero sin introducir ningún procedimiento ni función adicional. Recuerde que la impresión de los resultados hay que hacerla en el procedimiento presenta_resultados, y que este no debe recibir como parámetros ni el primer numero, ni el segundo numero)
El resultado debe ser similar a esto:
Introduzca el primer numero:
6
Introduzca el segundo numero:
3
El resultado de la suma es: 9.00
El resultado de la resta es: 3.00
El resultado de la multiplicacion es: 18.00
El resultado de la division es: 2.00
Ejercicio5:
Cree un programa con un procedimiento que imprima una línea de una cierta longitud compuesta por un determinado carácter.
Para ello el procedimiento, de nombre línea, recibirá dos parámetros: el carácter a imprimir y la longitud.
El resultado debe ser similar a esto:
Introduzca longitud de la línea: 20
Introduzca carácter: *
********************
Ejercicio6:
Crear un programa que imprima un triángulo.
El resultado debe ser similar a esto:
Introduzca altura del triangulo: 7
Introduzca letra: +
+
++
+++
++++
+++++
++++++
+++++++
BLOQUE 5.-TABLAS (o arrays)
Uso de tablas, arrays o matrices.
Ejercicio1:
Cree un programa que utilice una tabla donde se almacenarán los precios de una colección de cuadros. Para ello será necesario:
Definir una constante de nombre TAMCOLECCION que representa el número de cuadros que tendrán las colecciones. Puede comenzar definiendo esta constante con un valor de 4.
Un tipo de datos de nombre colección que será una tabla de tamaño TAMCOLECCION. Cada elemento almacena el precio de un cuadro, y el número del cuadro coincide con su posición en la tabla.
Además se deberá codificar en este primer ejercicio:
Un procedimiento de nombre lee_tabla que solicite al usuario que introduzca los precios de la colección de cuadros. Este procedimiento debe recibir como parámetros la tabla donde almacenar los precios, y el número de cuadros a leer.
Un procedimiento de nombre imprime_tabla que presente por pantalla los precios de la colección de cuadros, junto al número de cuadro. Este procedimiento, de forma similar al anterior, recibe como parámetros la tabla y el número de cuadros.
El resultado debe ser similar a esto:
Introduzca los precios
Cuadro 1: 1200
Cuadro 2: 2400
Cuadro 3: 500
Cuadro 4: 850
> Precio cuadro 1: 1200.00
> Precio cuadro 2: 2400.00
> Precio cuadro 3: 500.00
> Precio cuadro 4: 850.00
Ejercicio2:
Partiendo del programa anterior, añada una función de nombre suma_coleccion que recorra la tabla y devuelva como resultado de la función el valor total de la colección de cuadros. Modifique a continuación el programa principal para que después de leer e imprimir la tabla, calcule la suma de la colección utilizando esta función, y la imprima por pantalla.
El resultado debe ser similar a esto:
Introduzca los precios
Cuadro 1: 125
Cuadro 2: 250
Cuadro 3: 375
Cuadro 4: 450
> Precio cuadro 1: 125.00
> Precio cuadro 2: 250.00
> Precio cuadro 3: 375.00
> Precio cuadro 4: 450.00
> Valor coleccion: 1200.00
Ejercicio3:
Ahora se propone al alumno que realice un procedimiento de nombre busca_minimo que busque dentro de una colección de cuadros el cuadro más barato, e imprima por pantalla el número de ese cuadro y su precio. Este procedimiento, como los previos, recibe la tabla de precios y el número de cuadros.
El resultado debe ser similar a esto:
Introduzca los precios
Cuadro 1: 100
Cuadro 2: 200
Cuadro 3: 300
Cuadro 4: 85
> Precio cuadro 1: 100.00
> Precio cuadro 2: 200.00
> Precio cuadro 3: 300.00
> Precio cuadro 4: 85.00
> Valor coleccion: 685.00
> El precio del cuadro 4 es el minimo y cuesta 85.00
Ejercicio4:
Introduzca al ejercicio anterior un procedimiento de nombre limites que devolverá como parámetros por referencia el máximo y el mínimo de la colección.
El resultado debe ser similar a esto:
Introduzca los precios
Cuadro 1: 400
Cuadro 2: 275
Cuadro 3: 225
Cuadro 4: 350
> Precio cuadro 1: 400.00
> Precio cuadro 2: 275.00
> Precio cuadro 3: 225.00
> Precio cuadro 4: 350.00
El maximo es 400.0 y el minimo 225.0
Ejercicio5:
Deberá codificar un procedimiento de nombre busca_precio para un cliente que desea gastar una cantidad exacta . Este procedimiento recibe como parámetro la cantidad a buscar en la tabla. Presentará por pantalla un mensaje cada vez que al recorrer la tabla encuentre un cuadro con el precio buscado, indicando su precio y su número. Si no encuentra ningún libro, deberá presentar un único mensaje al final del procedimiento indicando tal circunstancia.
Además se deberá incluir la petición de búsqueda en un bucle que solicite la petición del precio a buscar hasta que el usuario introduzca el valor cero.
El resultado debe ser similar a esto:
Cuadro 1: 150
Cuadro 2: 200
Cuadro 3: 150
Cuadro 4: 400
> Precio cuadro 1: 150.00
> Precio cuadro 2: 200.00
> Precio cuadro 3: 150.00
> Precio cuadro 4: 400.00
El maximo es 400.0 y el minimo 150.0
Introduzca el precio a buscar en la tabla (cero para terminar): 200
> Encontrado precio 200.0 en cuadro 2
Introduzca el precio a buscar en la tabla (cero para terminar): 100
> Precio 100.0 no encontrado.
Introduzca el precio a buscar en la tabla (cero para terminar): 150
> Encontrado precio 150.0 en cuadro 1
> Encontrado precio 150.0 en cuadro 3
Introduzca el precio a buscar en la tabla (cero para terminar): 0
> Precio 0.0 no encontrado.
Ejercicio6:
Modificar el ejercicio 4 para que el procedimiento límites además devuelva como parámetros por referencia la posición en la tabla (el número del cuadro) donde se producen el máximo y el mínimo.
El resultado debe ser similar a esto:
Introduzca los precios
Cuadro 1: 350
Cuadro 2: 175
Cuadro 3: 650
Cuadro 4: 400
> Precio cuadro 1: 350.00
> Precio cuadro 2: 175.00
> Precio cuadro 3: 650.00
> Precio cuadro 4: 400.00
El maximo es 650.0 en la posicion 3
El minimo es 175.0 en la posicion 2
Ejercicio7:
Codificar ahora un programa que gestione 2 colecciones de cuadros. Usando las funciones y procedimientos de los ejercicios previos deberá:
Solicitar los datos de las dos colecciones.
Presentar un mensaje por pantalla indicando que colección vale más dinero.
Buscar un cuadro de un precio determinado en las dos colecciones.
No se podrá codificar funciones ni procedimientos adicionales, y por lo tanto sólo se podrá modificar el programa principal y la sección de variables globales.
El resultado debe ser similar a esto:
Coleccion 1:
Introduzca los precios
Cuadro 1: 100
Cuadro 2: 200
Cuadro 3: 300
Cuadro 4: 400
Coleccion 2:
Introduzca los precios
Cuadro 1: 300
Cuadro 2: 500
Cuadro 3: 600
Cuadro 4: 1000
Coleccion 2 vale mas que coleccion 1
Introduzca el precio a buscar en las tablas (cero para terminar): 200
Coleccion 1:
> Encontrado precio 200.0 en cuadro 2
Coleccion 2:
> Precio 200.0 no encontrado.
Introduzca el precio a buscar en las tablas (cero para terminar): 600
Coleccion 1:
> Precio 600.0 no encontrado.
Coleccion 2:
> Encontrado precio 600.0 en cuadro 3
Introduzca el precio a buscar en las tablas (cero para terminar): 300
Coleccion 1:
> Encontrado precio 300.0 en cuadro 3
Coleccion 2:
> Encontrado precio 300.0 en cuadro 1
Introduzca el precio a buscar en las tablas (cero para terminar): 50
Coleccion 1:
> Precio 50.0 no encontrado.
Coleccion 2:
> Precio 50.0 no encontrado.
Introduzca el precio a buscar en las tablas (cero para terminar): 0
Coleccion 1:
> Precio 0.0 no encontrado.
Coleccion 2:
> Precio 0.0 no encontrado.
Ejercicio8:
Tendrá que completar el siguiente programa principal heredado de los ejercicios previos:
Código:
(*-- Programa Principal -- *)
Begin
lee_tabla(precios1, TAMCOLECCION);
writeln('La suma de los tres primeros es ', );
writeln('La suma desde el segundo hasta el ultimo es ', );
End.
Haciendo uso de las funciones previas, complete (y compruebe) esta expresión para que imprima el valor de la suma de los tres primeros cuadros de una colección:
Código:
writeln('La suma de los tres primeros es ', );
Haciendo uso de las funciones previas, complete (y compruebe) esta expresión para que imprima el valor de la suma de los cuadros desde el segundo hasta el último:
Código:
writeln('La suma desde el segundo hasta el ultimo es ', );
El resultado debe ser similar a esto:
Introduzca los precios
Cuadro 1: 20
Cuadro 2: 30
Cuadro 3: 40
Cuadro 4: 50
La suma de los tres primeros es 90.0
La suma desde el segundo hasta el ultimo es 120.0
BLOQUE 6.-REGISTROS
En este bloque se nos solicitará usar registros.
Ejercicio1:
Crear un programa que utilice un registro para almacenar la información de un cuadro. Será necesario:
Definir un tipo de datos Tcuadro, registro cuyos campos almacenen la información necesaria de un cuadro:
Número del cuadro
Título
Autor
Precio
Un procedimiento de nombre lee_cuadro que solicite al usuario que introduzca los datos de un cuadro, y los almacene en los campos de un registro que recibe el procedimiento como parámetro.
Un procedimiento de nombre imprime_cuadro que presente por pantalla los datos de un cuadro que recibe como parámetro. Tendrá la particularidad de que si el precio es cero significa que el cuadro no está en venta, y así deberá indicarse:
Deberá incluirlo todo en un programa que solicite los datos de dos cuadros y los imprima por pantalla (utilizando los procedimientos previos). Además deberá presentar por pantalla la suma de los precios de los dos cuadros
El resultado debe ser similar a esto:
>Datos primer cuadro
Numero: 1
Titulo: Alambradas
Autor: Raul Etam
Precio: 0
>Datos segundo cuadro
Numero: 2
Titulo: Tentativas
Autor: Felicia Aller
Precio: 1100
>Datos de los cuadros
1: Alambradas
Autor: Raul Etam
Precio: No en venta
---
2: Tentativas
Autor: Felicia Aller
Precio: 1100
---
> La suma es: 1100.00
Ejercicio2:
Basándonos en el ejercicio anterior, este se mejora utilizando una tabla de registros para almacenar la información de una colección de cuadros.
Se deberá codificar:
Un tipo de datos de nombre Tcoleccion que representará una tabla de registros Tcuadro. El tamaño de la tabla se representará por una constante de nombre TAMCOLECCION, que inicialmente puede valer 3.
Un procedimiento de nombre lee_coleccion que, utilizando el procedimiento lee_cuadro, solicite al usuario que introduzca los datos de la colección de cuadros.
Un procedimiento de nombre imprime_coleccion que, utilizando el procedimiento imprime_cuadro presente por pantalla los datos de la colección de cuadros.
También se solicita añadir al programa anterior una función de nombre suma_coleccion. Esta función devuelve como resultado de la función el valor total de la colección. Pero como es posible que algunos cuadros no estén a la venta, esta función además devolverá como parámetro por referencia el número de cuadros que no están en venta.
El resultado debe ser similar a esto:
>Datos primera coleccion
Numero: 1
Titulo: Primavera
Autor: P. Freire
Precio: 1200
Numero: 2
Titulo: Verano
Autor: Jose Artes
Precio: 2345
Numero: 3
Titulo: Invierno
Autor: Alma Blanca
Precio: 0
>Datos de los cuadros
1: Primavera
Autor: P. Freire
Precio: 1200
---
2: Verano
Autor: Jose Artes
Precio: 2345
---
3: Invierno
Autor: Alma Blanca
Precio: No en venta
---
> La suma es: 3545.00
> Y hay 1 cuadro no en venta
Ejercicio3:
Crear un procedimiento busca_autor que recorra la tabla buscando los cuadros de un determinado autor. El nombre se solicita al usuario en el programa principal, y ese nombre lo recibe el procedimiento como parámetro.
Cada vez que encuentre una cuadro del autor deberá presentar en pantalla los datos del cuadro. Si no encuentra ningún cuadro de ese artista, deberá presentar un único mensaje indicando tal circunstancia.
La petición de autor a buscar y búsqueda se deberá incluir en un bucle que permita la repetición de la búsqueda.
El resultado debe ser similar a esto:
Datos primera coleccion
Numero: 1
Titulo: Invierno
Autor: Laimez
Precio: 1200
Numero: 2
Titulo: Verano
Autor: Lambier
Precio: 2300
Numero: 3
Titulo: Primavera
Autor: Lopez
Precio: 10500
Autor a buscar? (RC para terminar) Goya
Autor Goya no encontrado.
Autor a buscar? (RC para terminar)Laimez
1: Invierno
Autor: Laimez
Precio: 1200
---
Autor a buscar? (RC para terminar)
Autor no encontrado.
Ejercicio4:
Añadir al programa anterior un procedimiento de nombre calcula_estadisticas. Este procedimiento deberá devolver como información (ya sea como resultado de la función o mediante parámetros):
El valor total de la colección.
El número de cuadros que no están a la venta.
El valor del cuadro de mayor precio
El valor del cuadro de menor precio (exceptuando los que no están a la venta, que "valen" cero).
El resultado debe ser similar a esto:
>Datos primera coleccion
Numero: 1
Titulo: La Luna
Autor: Pelaez
Precio: 3500
Numero: 2
Titulo: Fisgando
Autor: Clara Lima
Precio: 2500
Numero: 3
Titulo: Carcel
Autor: Luis Sanz
Precio: 500
> La suma es: 6500.00
> Y hay 0 cuadro no en venta
> Maximo: 3500. Minimo: 500
Ejercicio5:
Modificar el ejercicio anterior para:
Modificar la constante TAMCOLECCION para que valga 10
Utilizar dos colecciones de cuadros , coleccion1 y coleccion2.
En vez de tener tamaños fijos, se solicitará por pantalla al usuario que indique el tamaño de cada una de las colecciones: numcuadros1 y numcuadros2, que deberán ser distintos.
Utilice los procedimientos previos teniendo en cuenta esta circunstancia.
BLOQUE 7.- FICHEROS
Pues eso... Usar ficheros xD.
Ejercicio1:
Partiendo de los ejercicios del tema anterior, los mejoraremos para poder guardar los datos en un fichero una vez que termine la ejecución del programa. Esto permitirá que en una ejecución posterior del programa podamos recuperar esos datos, y no tener que teclearlos de nuevo.
Para esta labor vamos a necesitar:
Definir un fichero binario, cuyo tipo base será el tipo de los registros que almacenan la información de un cuadro, Tcuadro.
Definir un procedimiento de nombre graba_fichero que reciba como parámetros:
El nombre de un fichero
La colección o tabla de cuadros
El número de cuadros de la colección.
Este procedimiento deberá abrir el fichero para escritura, y mediante un bucle recorrer la tabla e ir "escribiendo" cada registro de la colección en el fichero.
Definir un procedimiento de nombre lee_fichero que reciba como parámetros:
El nombre de un fichero
La tabla de cuadros o colección
El número de cuadros de la colección.
Este procedimiento abrirá el fichero para lectura, irá leyendo los datos del fichero registro a registro y los irá almacenando en la tabla colección.
Para probar estos procedimientos deberá crear un programa principal que presente al usuario dos opciones:
Leer del teclado: Se solicitará que se introduzcan los datos de la colección y posteriormente se guardarán eso datos en un fichero, cuyo nombre se solicitará al usuario.
Leer de un fichero: Se solicitará el nombre de un fichero (donde previamente se han guardado los datos de una colección) y presentar por pantalla los datos leídos del fichero.
El resultado debe ser similar a esto:
Introducir por teclado (T) o leer de fichero(F)? T
Numero de cuadros ? 2
>Datos primera coleccion
Numero: 1
Titulo: Amanece
Autor: Jose Luis
Precio: 2000
Numero: 2
Titulo: Verano
Autor: Marina
Precio: 1250
> Nombre Fichero donde guardar
coleccion.dat
----------------------------------------------------
(una vez que con la primera ejecución se a leído la colección por teclado y guardado en un fichero, probamos a leer desde fichero)
Introducir por teclado (T) o leer de fichero(F)? F
> Nombre Fichero donde leer
coleccion.dat
>Datos primera coleccion
1: Amanece
Autor: Jose Luis
Precio: 2000
---
2: Verano
Autor: Marina
Precio: 1250
---
Ejercicio2:
Contar el número de líneas y el número de caracteres de un fichero de texto.
Realizar un programa que abra un fichero de texto para lectura, y lo vaya leyendo línea a línea. Deberá presentar como resultado final el nombre del fichero, el número de líneas y el número de caracteres.
El resultado debe ser similar a esto:
(usamos un fichero de prueba, prueba.txt)
C:\cursopro>type prueba.txt
Linea 1
Linea 2
Linea 3 y última
-------------------------------
(ejecutamos el programa para ver si funciona)
C:\cursopro>nombre_programa-ejercicio2
Nombre Fichero origen: prueba.txt
Fichero: prueba.txt 3 30
Ejercicio3:
Se propone realizar un programa que abra un fichero de texto, cree una copia del mismo y añada al final de la copia una cadena de caracteres.
El programa deberá:
Solicitar el nombre del fichero de entrada, y abrirlo para lectura.
Solicitar el nombre del fichero destino, comprobar que es distinto del nombre del fichero de entrada, y si es así abrirlo para escritura.
Leer línea a línea el fichero de entrada: En cada iteración del bucle leerá una línea del fichero de entrada y escribirá esa misma línea en el fichero destino.
Una vez alcanzado el final del fichero origen, se cerrará el mismo y a continuación se añadirá una línea adicional al fichero destino. Tras añadir esta línea se cerrará también el fichero destino.
Para probar el programa se a usado el fichero de texto prueba.txt.
El resultado debe ser similar a esto:
C:\cursopro>nombre_programa-ejercicio2
Nombre Fichero origen: prueba.txt
Nombre Fichero destino: copia.txt
Linea adicional: Esta es la nueva línea
-----------------------------------------------------
(ejecutamos copia.txt para comprobar si funciona)
C:\cursopro>type copia.txt
Linea 1
Linea 2
Linea 3 y última
Esta es la nueva línea
Fin de ejercicios.
Pues nada más... Estos son los ejercicios, quiero recalcar que no son míos, pero por circunstancias no puedo nombrar la fuente... También reiterar que yo solo e resuelto hasta el bloque6 y alguno del bloque7.
Si no consiguen sacar la solución de alguno... Pues ya saben, pregunten en este mismo subforo sus dudas.
Espero que les valgan para algo.
Salu2.