• No se han encontrado resultados

Práctica 1-A. Ficheros. Departamento de Tecnologías de la Información (DTI) Página 1

N/A
N/A
Protected

Academic year: 2022

Share "Práctica 1-A. Ficheros. Departamento de Tecnologías de la Información (DTI) Página 1"

Copied!
7
0
0

Texto completo

(1)

Práctica 1-A

Ficheros

(2)

PRÁCTICA 1. ORDENACIÓN Y FICHEROS

(VISUALIZACION DE IMÁGENES EN FORMATO UHU)

a) MODO GRÁFICO:

En esta práctica, en lugar de trabajar con una pantalla en modo texto, esto es, con 80 columnas y 24 filas, se trabajará en modo gráfico.

En modo gráfico se dispone por ejemplo de 1280 por 1024 puntos (Inicio – Panel de control – Pantalla – Configuración – Resolución de pantalla). El punto (0,0) es el situado en la esquina superior izquierda de la pantalla, mientras que el punto (1279,1023) es el situado en la esquina inferior derecha. Disponemos por tanto de una resolución de 1280 puntos en horizontal por 1024 puntos en vertical.

Una imagen se compone de una serie de puntos o píxeles. Cuando las imágenes son en color la información que se maneja con respecto a cada punto es su intensidad del color rojo (0-255), verde (0–255) y azul (0–255). Así, un punto con intensidad de luz 0, 0, 0 es un punto negro y un punto con 255, 255 y 255 es un punto blanco.

En una imagen podemos hablar también de líneas, tanto verticales como horizontales, en esta práctica nos referiremos siempre a líneas horizontales.

Para utilizar una pantalla (ventana) en modo gráfico, se suministra con la práctica un módulo que comprende una serie de funciones que permiten tanto la entrada como la salida en el modo gráfico, además de la visualización de puntos, líneas, figuras geométricas sencillas, etc. Este módulo que deberá de incluirlo en el main tiene por nombre winbgim.h.

Para poderlo utilizar deberá de seguir los siguientes pasos:

 Añada los ficheros winbgim.h y conio.h en el directorio c:\Dev-cpp\include. Si ya existía el fichero conio.h borre el antiguo (Vienen con la práctica)

 Añada los ficheros libbgi.a y libconio.a en el directorio c:\Dev-cpp\lib (Vienen con la práctica).

 Añada -lbgi -lgdi32 en el proyecto para que se utilicen estas librerías: Proyecto – Opciones del Proyecto – Parámetros – Linker

(3)

Instrucciones interesantes para trabajar en modo gráfico:

Para crear una ventana en modo gráfico se incluirá la siguiente instrucción:

initwindow(1280,1024); //Número de puntos horizontales, núm. de puntos verticales Para cerrar una ventana gráfica ejecute:

closegraph();

Para escribir un punto en una ventana gráfica se utiliza la siguiente instrucción putpixel ( x , y , COLOR ( r , g , b) );

siendo r, g y b números enteros comprendidos entre 0 y 255 indicando la intensidad del color rojo (red), verde (green) y azul (blue) respectivamente.

Para cambiar la posición del cursor utilice la siguiente instrucción:

moveto ( x , y ); // x e y según el gráfico anterior.

x

y

(4)

Para leer un carácter desde teclado:

char opcion;

opcion =getch();

Para limpiar una pantalla gráfica deberá de hacer:

cleardevice();

Si desea que el programa no avance a otras instrucciones hasta que se pulse una tecla realizar:

while (!kbhit());

b) FORMATO DE LOS FICHEROS UHU.-

U H U 24 …

unsigned char

unsigned char

unsigned char

unsigned short int

Se entiende que un fichero está en formato UHU si en los tres primeros caracteres aparecen las letras U H U y seguidamente tiene un 24 indicando que cada punto que viene después tiene 24 bits para su color.

A continuación viene el número de puntos que tiene cada línea de esta imagen, en el ejemplo, indicaría que cada línea tiene 616 puntos.

Y a continuación vendría la información de cada línea de la siguiente forma:

Número de la línea (103), 616 tpuntos de la línea 103, número de línea (14), 616 tpuntos de la línea 14… así hasta fin de fichero.

Número de puntos/línea

Número de la línea

<--- 616 puntos

---> Número de la línea

U H U 24 616 103 … … 14 …

unsigned short int

unsigned short int

tpunto … tpunto unsigned short int

tpunto …

struct tpunto {

unsigned char r,g,b; //Color del punto.

};

(5)

c) PROGRAMA PRINCIPAL

En la ejecución del programa lo primero que deberá de aparecer en la ventana gráfica es un menú en el que saldrán las siguientes opciones:

OPCION 1.

Visualizará por pantalla el menú leer, que servirá para cargar el fichero de la imagen que se desee en memoria.

Para cargar el fichero de imagen tenga en cuenta el formato de los ficheros UHU expresado en el apartado anterior, indicando si se da el caso, que el fichero no existe o bien que no está en formato UHU.

Declarará en el main un objeto de tipo ttabla, vea el apartado d) TIPOS DE DATOS QUE SE VAN A UTILIZAR. Pondrá en puntoslinea el número de puntos que tiene cada línea. Cada línea que lea del fichero rellenará una tlinea con la información del número de línea y de todos sus puntos. Esto lo repetirá hasta que llegue fin de fichero, poniendo cada línea en un elemento de la tabla desde el elemento cero. Ponga en numlineas el número de líneas que ha leído del fichero.

OPCIÓN 2.-

Visualizará la imagen cargada en memoria teniendo en cuenta que debe estar ajustada a la esquina superior izquierda necesariamente. Si no hay imagen en memoria

******************** MENU PRINCIPAL****************

1.- Leer fichero de una imagen.

2.- Visualizar la imagen.

3.- Ordenar la imagen.

4.- Salir

******************************************************

Elije la opción deseada :

******************* MENU LEER**********************

1.- Carrera.

2.- Rio.

3.- Tranvia.

4.- Abanderado.

5.- Cordoba.

6.- Paisaje.

7.- Recre.

8.- Antirobo.

*****************************************************

Elije la opcion deseada :

(6)

Para cada punto realice:

putpixel ( x , y , COLOR ( punto1.r , punto1.g , punto1.b) );

No se olvide de ir cambiando el número x e y para ir dibujando cada punto en su sitio, siendo x el número de columna e y el número de fila.

OPCIÓN 3.-

Ordenará la tabla cargada en memoria por el campo num de cada línea en orden ascendente.

Para ello, deberá visualizar por pantalla el menú ordenar para elegir el método de ordenación que se desee.

Si se realiza esta operación sin problemas podrá observar la fotografía de forma correcta con la opción dos del menú principal.

d) TIPOS DE DATOS QUE SE VAN A UTILIZAR:

//Fichero ttabla.h

struct tpunto { unsigned char r,g,b; }; //Color del punto struct tlinea { unsigned int num; //Numero de línea

tpunto t[800];}; //Puntos de la línea

class ttabla {

tlinea tabla[800]; //Líneas del dibujo

unsigned int numlineas; //Numero de líneas del dibujo unsigned short int puntoslinea; //Numero de puntos en cada línea void intercambiar (tlinea &uno, tlinea &dos); //se le proporciona implementado public:

ttabla () { numlineas = 0; }

void Burbuja(int inicio,int fin); //se le proporciona implementado void Shell(int inicio,int fin); //se le proporciona implementado void ponerpuntoslinea( unsigned short int p) {puntoslinea = p;}

unsigned short int leerpuntoslinea () { return puntoslinea;}

void ponernumlineas( unsigned int p) {numlineas = p;}

unsigned int leernumlineas () { return numlineas; } tpunto leerpunto (int l, int p) { return tabla[l].t[p]; } void ponerpunto (int l, int p, tpunto punto) { tabla[l].t[p] = punto; } void ponernumlinea (int l, unsigned int num) { tabla[l].num = num; } unsigned int leernumlinea (int l) {return tabla[l].num; } };

******************** MENU ORDENAR*********

1.- Por burbuja.

2.- Por shell.

5.- Salir.

********************************************

Elije la opcion deseada :

(7)

//Fichero ttabla.cpp

/*Tendrá la implementación de los métodos intercambiar, burbuja y shell. Se le facilita completo*/

//Fichero prac1.cpp

// Contendrá las funciones genéricas que implemente, como son los menús y el main() //Proyecto1.dev

//Fichero del proyecto que contendrá prac1.cpp, ttabla.h y ttabla.cpp

e) FICHEROS QUE SE PROPORCIONAN JUNTO A LA PRÁCTICA:

 Para trabajar en modo gráfico: winbgim.h, conio.h, libbgi.a y libconio.a .

 Ficheros de imágenes: carrera.uhu, rio.uhu, tranvia.uhu, abanderado.uhu, cordoba.uhu, paisaje.uhu, recre.uhu y antirobo.uhu.

f) DURACIÓN DE LA PRÁCTICA.

Deberá estar finalizada antes de la realización de la primera prueba de modificación de prácticas, para la que también deberá realizar la segunda parte de ésta práctica, que será propuesta próximamente.

Referencias

Documento similar

4.- Másteres del ámbito de la Biología Molecular y Biotecnología (9% de los títulos. Destaca el de Biotecnología Molecular de la UB con un 4% y se incluyen otros

saginata, se considera común en Europa del este (15), con una prevalencia mucho más baja en Europa occidental (del orden de 0.01%) (16).. Las infecciones humanas son endémicas

Gastos derivados de la recaudación de los derechos económicos de la entidad local o de sus organis- mos autónomos cuando aquélla se efectúe por otras enti- dades locales o

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

La heterogeneidad clínica de esta patolo- gía hizo que se considerasen a numerosos genes de pro- teínas de la matriz extracelular (elastina, fibronectina, genes de los colágenos de

Esta descripción debe incluir al menos los siguientes elementos y sus responsabilidades/funciones: -Universidad responsable del programa (procedimientos oficiales,

Se estima una distancia de más de 11 millones de años luz hablando de una cantidad de sistemas solares que no tendrían espacio en nuestra mente y esto solo hablando del grupo