Linguaxe de programación C (XIV). Aplicacións I

Neste capítulo pretendemos pór en práctica a maioría dos conceptos analizados en capítulos anteriores e paira iso programaremos una aplicación, a xestión dunha pequena biblioteca.

A primeira decisión que nos interesa é a do rexistro, é dicir, a información que mantemos sobre cada libro. Pensemos que se gardará a seguinte información: código de libro, título, escritor, ano e código do tipo de libro. Dado que este rexistro utilizarase na maioría das funcións, no ficheiro libru.h realizarase a definición do rexistro (ver programa 1).

Programa 1. Definición do rexistro.
Programa 2. Funcións básicas.

Con este rexistro realizaranse dúas operacións básicas: ler a información desde o teclado e escribila en pantalla. Compilaremos estas funcións aparte. Por tanto situaranse nun ficheiro, lib_basi.c no noso caso, tal e como se ve no programa 2.

Pódese mellorar o manexo da pantalla. Paira iso, nos novos sistemas utilízase un sistema de xanelas (windows) que permite a introdución de datos tanto a través do teclado como do rato (mouse). Desgraciadamente as bibliotecas paira programar estes sistemas non son estándares e por iso non as explicamos aquí.

Pensemos agora en que tipo de operacións pódense realizar na nosa base de datos de libros. En principio deberían existir polo menos as seguintes operacións: entrada de libros, listaxe de libros e consulta de libros. En canto á consulta de libros, habería que ter en conta os seguintes criterios: código (obtendo así a información do libro único), escritor, ano (aceptando intervalos entre datas) e tipo. Estas consultas pódense realizar de forma rápida, por unha banda, tendo en conta que a base de datos de libros é pequena e traerase á memoria ao principio, paira axilizar as consultas, e doutra banda, construír índices a medida que se vaia construíndo a base de datos noutros ficheiros, e á hora de realizar consultas, ler a base de datos utilizando estes índices.

Esta segunda é máis xeral e por iso utilízase en sistemas de base de datos, pero está fóra dos obxectivos desta serie de artigos, xa que se trata dun conxunto de programas moi complexo. Por tanto, comezaremos polo primeiro. No entanto, consideramos que o código do libro é secuencial. Desta maneira a consulta por código será inmediata, xa que a lectura secuencial, en memoria ou en ficheiro, non será necesaria. Por tanto, o programa principal consistirá en abrir un ficheiro con base de datos, traer o arquivo á memoria, mostrar un menú en pantalla con diferentes opcións, ler una opción e chamar a unha función especializada en función da opción. No programa 3 temos un programa que o fai.

Programa 3. Programa principal.

Obsérvese que as entradas, listar, kon_cod e outras funcións non están definidas no programa principal, pero as definimos como externas. A definición destas funcións pódese realizar en 4 ficheiros diferentes, 4. Tal e como se explica no programa 5 e 6, xa que non explicaremos a función listar. Tamén se configurou a función garbi_pantalla como extern, xa que a lib.base está no ficheiro. Por tanto non se debe definir. Tampouco hai que incluílo dese ficheiro, xa que o ligando (linker) fará o enlace.

Programa 4. Introdución aos libros.
Programa 5. Por código de consulta.
Programa 6. Rutina xeral de consulta.

O manexo de erros podíase facer moito máis complexo, pero o fixemos o máis breve posible paira dar importancia ás accións principais.

Temos por tanto 6 módulos: libru.h, lib.oinarri i.c, nagus.c, introdución.c, kon_kod.c e kon_beste.c. O módulo listatu.c non aparece xa que a función de escritura é similar pero se manexa a impresora e contrólase por unha estrutura for.

A dependencia xerárquica destes módulos móstrase na figura 1. Nel non aparece porque o módulo libro.h é un ficheiro de título e por tanto insérese noutros módulos mediante # include sasiord.

Figura . Interdependencias funcionais.

Paira compilar primeiro se compilan un a un os catro módulos principais, obtendo os correspondentes módulos de obxecto .0. A continuación, se compilar e enlaza o programa principal, paira este último menciónanse os nomes dos módulos de obxectos obtidos anteriormente. Como resultado do enlace resólvense as referencias cruzadas entre módulos e obtense un único programa executable.

Nota: Paira ver as fotos correctamente, ir ao pdf.

Babesleak
Eusko Jaurlaritzako Industria, Merkataritza eta Turismo Saila