Lenguaje Perl. Ejercicios sobre el manejo de archivos. Es importante elaborar los programas que a continuación se presentan, una vez el estudiante halla revisado la teoría expuesta en el capítulo 10.

1)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código(5 posiciones),nombre(30 posiciones), primera-nota(x.xx),segunda-nota(x.xx),tercera-nota(x.xx)

Los datos estan separados por comas.

Bienestar Universitario requiere un listado del archivo, donde el primer alumno del listado corresponda al último del archivo, el segundo al penúltimo del archivo y así sucesivamente.

Para imprimir el listado, el archivo se debe leer hacia atras. Solo se deben incluir en el listado los estudiantes que tengan un promedio de notas mayor que el promedio de notas de todo el curso.
2)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código,nombre,primera-nota,segunda-nota,tercera-nota.

Los datos estan separados por comas. La dirección académica solicita el nombre del último estudiante de la universidad que tiene como primera nota 3.5, como segunda nota 4.3 y como tercera nota 2.8. Por ser el archivo muy grande, No se puede utilizar un arreglo para almacenar todos sus datos.
3)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código,nombre,primera-nota,segunda-nota,tercera-nota.

Los datos estan separados por comas.

La dirección académica solicita el nombre del último estudiante de la universidad que tiene como nota definitiva 4.2. Por ser el archivo muy grande, No se puede utilizar un arreglo para almacenar todos sus datos.
4)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código(5 posiciones),nombre(30 posiciones), primera-nota(x.xx),segunda-nota(x.xx),tercera-nota(x.xx).

Los datos estan separados por comas.

Se necesita un nuevo archivo, donde se graben los estudiantes clasificados por código, de menor a mayor. La clasificación se debe hacer usando el método de la burbuja sin utilizar arreglos, es decir sobre el mismo archivo.
5)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código,nombre,primera-nota,segunda-nota,tercera-nota.

Los datos estan separados por comas.

La dirección académica solicita un nuevo archivo donde se incluyan todos los estudiantes que tengan como nota definitiva la nota promedio de todos los estudiantes de la universidad. Como archivo de entrada utilize el archivo donde se encuentran todos los estudiantes y como archivo de salida cree uno nuevo con los datos requeridos.
6)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código,nombre,primera-nota,segunda-nota,tercera-nota.

Los datos estan separados por comas.

Por ejemplo, el archivo puede contener la siguiente información:

123,Adriana,3.5,4,2.3
456,Carlos,3.50,4.0,2
124,Paola,3.50,4.2.3.0

El departamento de sistemas solicita estandarizar la logitud de cada nota. Observe que la nota 3.5, tambien esta escrita 3.50, la nota 4 tambien esta escrita como 4.0. Cree un archivo nuevo, con base en el archivo donde estan grabados todos los estudiantes, para que cada una de las tres notas quede grabada así: x.xx es decir la parte entera un dígito y la parte decimal 2 dígitos. Del archivo anterior(como entrada) se debe generar un nuevo archivo así:

123,Adriana,3.50,4.00,2.30
456,Carlos,3.50,4.00,2.00
124,Paola,3.50,4.20.3.00

7)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código,nombre,primera-nota,segunda-nota,tercera-nota.

Los datos estan separados por comas.

Por ejemplo, el archivo puede contener la siguiente información:

123,Adriana,3.5,4,2.3
456,Carlos,3.50,4.0,2
124,Paola,3.50,4.2,3.0

El departamento de sistemas pide estandarizar la longitud de cada registro. El nombre del estudiante debe ocupar 30 espacios.

La solicitud requiere estandarizar tambien la logitud de cada nota. Observe que la nota 3.5, tambien esta escrita 3.50, la nota 4 tambien esta escrita como 4.0. Cree un archivo nuevo, con base en el archivo donde estan grabados todos los estudiantes, para que cada una de las tres notas quede grabada así: x.xx es decir la parte entera un dígito y la parte decimal 2 dígitos. Del archivo anterior(como entrada) se debe generar un nuevo archivo así:

123,Adriana      ,3.50,4.00,2.30
456,Carlos       ,3.50,4.00,2.00
124,Paola        ,3.50,4.20,3.00

8)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código,nombre,primera-nota,segunda-nota,tercera-nota.

Los datos estan separados por comas.

La dirección académica solicita calcular el promedio de la primera nota, el promedio de la segunda nota y el promedio de la tercera nota de todos los estudiantes de la universidad y luego crear un nuevo archivo que incluya todos los estudiantes que tienen sus notas individuales iguales al promedio general de cada nota.
9)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código,nombre,primera-nota,segunda-nota,tercera-nota.

Los datos estan separados por comas.

Bienestar universitario, requiere un archivo, generado a partir del archivo de todos los estudiantes, donde se graben los alumnos que tengan la primera nota igual a la nota promedio de todos los estudiantes de la universidad. Tambien se necesita que solo se incluyan en el archivo generado los alumnos cuyo último dígito del código sea igual al primer dígito.
10)
Asuma que en el disco del sistema, existe un archivo donde los campos que forman cada registro son:

código(5 posiciones),nombre(30 posiciones), primera-nota(x.xx),segunda-nota(x.xx),tercera-nota(x.xx).

Los datos estan separados por comas.

El departamento de sistemas requiere un programa que lea el código de un alumno y lo busque en el archivo. Si existe, debe solicitar por teclado con STDIN una nueva nota (x.xx) y cambiar la tercera-nota que esta grabada en el registro de ese estudiante por la nueva nota. Este proceso se debe poder ejecutar para uno o varios alumnos.
11)
Tomen un archivo de facturas que tiene la siguiente información:

Nombre de la librería,Valor factura,aa/mm/dd,aa/mm/dd

La primera fecha indica la fecha de la factura

La segunda fecha indica la fecha de vencimiento de la factura

El problema consiste en imprimir la suma de las facturas que ya se vencieron. Para este programa, incluya las siguientes librerías:

use strict;
use warnings;
use Time::Local;

y utilize las siguientes funciones:

$x=timelocal(0,0,0,dd, mm, aa );

Esta llamada a la función calcula el número de segundos que han pasado desde el año 1970 a la fecha indicada por los parámetros.

$y=time;

Esta llamada a la función calcula el número de segundos que han pasado desde el año 1970 a la fecha del computador.

Nota importante: estas funciones trabajan con el año actual - 1900. Por ejemplo el año 2003, lo trabajan como 103. El mes lo deben trabajar de 0 a 11.
12)
Crear un archivo de facturas que tiene la siguiente información:

Nombre de la librería,Valor factura,aa/mm/dd,aa/mm/dd

La primera fecha indica la fecha de la factura

La segunda fecha indica la fecha de vencimiento de la factura

Los datos deben digitarse y grabarse en el archivo separados por comas. Las fechas pedidas deben grabarse en formato aa/mm/dd.

Una vez el archivo este creado, deben elaborar un segundo programa. El segundo programa debe imprimir las facturas que No se han vencido y la suma de dichas facturas. Para este programa, incluya las siguientes librerías:

use strict;
use warnings;
use Time::Local;

y utilize las siguientes funciones:

$x=timelocal(0,0,0,dd, mm, aa );

Esta llamada a la función calcula el número de segundos que han pasado desde el año 1970 a la fecha indicada por los parámetros.

$y=time;

Esta llamada a la función calcula el número de segundos que han pasado desde el año 1970 a la fecha del computador.

Nota importante: estas funciones trabajan con el año actual - 1900. Por ejemplo el año 2003, lo trabajan como 103. El mes lo deben trabajar de 0 a 11.
13)
Crear un archivo de facturas que tiene la siguiente información:

Nombre de la librería,Valor factura,aa/mm/dd,aa/mm/dd

La primera fecha indica la fecha de la factura

La segunda fecha indica la fecha de vencimiento de la factura

Los datos deben digitarse y grabarse en el archivo separados por comas. Las fechas pedidas deben grabarse en formato aa/mm/dd.

Una vez el archivo este creado, deben elaborar un segundo programa. El segundo programa debe imprimir las facturas que tengan mas de 10 días de vencimiento y la suma de los valores de dichas facturas. No olvide que 10 días son 864000 segundos.

Para este programa, incluya las siguientes librerías:

use strict;
use warnings;
use Time::Local;

y utilize las siguientes funciones:

$x=timelocal(0,0,0,dd, mm, aa );

Esta llamada a la función calcula el número de segundos que han pasado desde el año 1970 a la fecha indicada por los parámetros.

$y=time;

Esta llamada a la función calcula el número de segundos que han pasado desde el año 1970 a la fecha del computador. Nota importante: estas funciones trabajan con el año actual - 1900. Por ejemplo el año 2003, lo trabajan como 103. El mes lo deben trabajar de 0 a 11.
14)
Crear un archivo de facturas que tiene la siguiente información:

Nombre de la librería,Valor factura,aa/mm/dd,aa/mm/dd

La primera fecha indica la fecha de la factura

La segunda fecha indica la fecha de vencimiento de la factura

Los datos deben digitarse y grabarse en el archivo separados por comas. Las fechas pedidas deben grabarse en formato aa/mm/dd.

Una vez el archivo este creado, deben elaborar un segundo programa. El segundo programa debe imprimir las facturas que les falte 10 días para vencerse y la suma de los valores de dichas facturas. No olvide que 10 días son 864000 segundos. Para este programa, incluya las siguientes librerías:

use strict;
use warnings;
use Time::Local;

y utilize las siguientes funciones:

$x=timelocal(0,0,0,dd, mm, aa );

Esta llamada a la función calcula el número de segundos que han pasado desde el año 1970 a la fecha indicada por los parámetros.

$y=time;

Esta llamada a la función calcula el número de segundos que han pasado desde el año 1970 a la fecha del computador. Nota importante: estas funciones trabajan con el año actual - 1900. Por ejemplo el año 2003, lo trabajan como 103. El mes lo deben trabajar de 0 a 11.
15)
Elabore dos programas sobre archivos. El primero que cree un archivo con los siguientes datos:

artículo(30 posiciones),Ventas enero,Ventas febrero,Ventas marzo

Las ventas corresponden a un número entero de 3 dígitos. Por ejemplo:

Collares     ,345,210,005
Alfombras    ,001,003,002
Camisas      ,345,232,345
Computadores ,034,023,034
Impresoras   ,342,564,764
Billeteras   ,001,004,005

Cada registro debe tener la misma longitud.

Una vez se tenga creado el archivo usando el primer programa, se debe crear otro nuevo programa que escriba en un documento html, el nombre de los artículos que mas se vendieron en enero, el nombre de los artículos que mas se vendieron en febrero y el nombre de los artículos que mas se vendieron en marzo. Para el ejemplo los artículos que mas se vendieron en marzo fueron: camisas e impresoras y los que mas se vendieron en enero fueron collares y camisas.
16)
Elabore dos programas sobre archivos. El primero que cree un archivo con los siguientes datos:

artículo(30 posiciones),Ventas enero,Ventas febrero,Ventas marzo

Las ventas corresponden a un número entero de 3 dígitos. Por ejemplo:

Collares     ,345,210,005
Alfombras    ,001,003,002
Camisas      ,345,232,345
Computadores ,034,023,034
Impresoras   ,342,564,764
Billeteras   ,001,004,005

Cada registro debe tener la misma longitud. Una vez se tenga creado el archivo usando el primer programa, se debe crear otro nuevo programa que permita cambiar uno de los 4 datos que componen un registro del archivo. El nuevo programa debe leer el número del registro(0,1,2,3...) y luego preguntar al usuario que dato desea cambiar de ese registro y leer el dato a cambiar dentro del registro y guardarlo en una variable en memoria. Por ejemplo si se desea cambiar en el registro 3, las ventas de marzo por 321, el programa debe pedir por teclado el número 3 y pedir el nuevo dato correspondiente a las ventas de marzo. Con esta información, debe leer el registro 3(usando seek y read) y luego cambiar el valor de la variable correspondiente a las ventas de marzo y por último volver a grabar en el registro 3 las variables que almacenan la información de ese registro. Al final se debe cerrar el archivo con la instrucción close. El contenido nuevo del archivo será:

Collares     ,345,210,005
Alfombras    ,001,003,002
Camisas      ,345,232,345
Computadores ,034,023,321
Impresoras   ,342,564,764
Billeteras   ,001,004,005