Trabajo Final de Aplicada II

27
Profesora Ludia Gómez 7 de diciembre de 2011 Trabajo Final de Aplicada II Integrantes: Betegon, Abiam 8-839-1626 Girón, Juan 8-879-654 Pitty, Ida 8-849-1280 Vivar, Luis 8-857-210 Grupo 1-IL-122 Universidad Tecnológica de Panamá Facultad de Ingeniería en Sistemas y Computación Departamento de Programación y Análisis de Sistemas Licenciatura en Ingeniería en Sistemas y Computación

description

trabajo final de aplicada II

Transcript of Trabajo Final de Aplicada II

Page 1: Trabajo Final de Aplicada II

Pro

fes

ora

Lu

dia

me

z

7 d

e d

icie

mb

re d

e 2

011

Tra

bajo

Fin

al d

e A

plica

da

II

Integrantes:

Betegon, Abiam 8-839-1626

Girón, Juan 8-879-654

Pitty, Ida 8-849-1280

Vivar, Luis 8-857-210

Grupo 1-IL-122

Universidad Tecnológica de Panamá

Facultad de Ingeniería en Sistemas y Computación

Departamento de Programación y Análisis de

Sistemas

Licenciatura en Ingeniería en Sistemas y

Computación

Page 2: Trabajo Final de Aplicada II

1

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Universidad Tecnológica de Panamá

Facultad de Ingeniería en Sistemas y Computación

Departamento de Programación y Análisis de Sistemas

Licenciatura en Ingeniería en Sistemas y Computación

Programación Aplicada II

Profesora Ludia Gómez de Meléndez

Trabajo Final de Aplicada II

Integrantes:

Betegon, Abiam 8-839-1626

Giron, Juan 8-879-654

Pitty, Ida 8-849-1280

Vivar, Luis 8-857-210

Grupo 1-IL-122

7 de diciembre de 2011

4to Semestre

Page 3: Trabajo Final de Aplicada II

2

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Índice de Contenido

Introducción ....................................................................................................................................... 3

Objetivos ............................................................................................................................................ 4

Indicaciones....................................................................................................................................... 4

Problema #1 ...................................................................................................................................... 5

Enunciado: ..................................................................................................................................... 5

Código fuente: ............................................................................................................................... 6

Problema #2 .................................................................................................................................... 13

Enunciado: ................................................................................................................................... 13

Código fuente: ............................................................................................................................. 14

Conclusión ....................................................................................................................................... 25

Bibliografía ....................................................................................................................................... 26

Page 4: Trabajo Final de Aplicada II

3

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Introducción

Hemos llegado al punto clave de nuestro aprendizaje en este curso, el examen semestral, tras

largos meses de esfuerzo lo hemos logrado.

En este trabajo final tocaremos diversos temas y/o conceptos cada uno de ellos enlazado y

altamente ligado y necesario para desarrollar el siguiente de forma óptima. Pero afortunadamente

cada uno de estos temas fueron enfatizados en durante el curso, los cuales son:

Arreglos y Matrices: que son estructuras de memoria, bastante explotadas en nuestros

cursos de programación en la cual podemos almacenar datos de un solo tipo.

Punteros: que es una variable que hace referencia (apunta) a una dirección de memoria

de otra variable

Asignación Dinámica: la cual es el proceso de separar (reservar) espacio de memoria de

nuestro computador para que esta sea utilizada por una variable puntero con diferentes

usos.

Struct: que son un tipo de dato que permite almacenar diferentes variables con diferentes

tipos de datos, son sumamente útiles cuando usamos registros.

Las interrupciones: que son situaciones especiales que suspenden la ejecución de un

programa de modo que el sistema pueda realizar una acción para tratarla.

Con estos conceptos en nuestra mente desarrollaremos entonces dos programas que finalizaran

nuestro curso.

Page 5: Trabajo Final de Aplicada II

4

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Objetivos

1. Aplicar los conceptos de interrupciones, en la solución de problemas,

manejando a C, como lenguaje de programación.

2. Desarrollar aplicaciones que aplique los conceptos de struct, memoria

dinámica, punteros, interrupciones y modo gráfico, en C, con un 100% de

efectividad.

Indicaciones

1. Forme grupo de un mínimo de 4

2. Indique en que problema participo cada uno

3. Entregue engrapado el trabajo y en un disco sus programas

4. No se aceptan prorrogas

Page 6: Trabajo Final de Aplicada II

5

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Problema #1

Enunciado:

Escriba una aplicación que dado una lista de automóviles con:

Dirección,

Marca,

Modelo,

Color,

Año.

Producir un nuevo listado ordenado por placa, con las placas de aquellos

vehículos que terminan en un número par.

Al final de la lista deben aparecer además los datos del carro más antiguo de la

lista.

El programa debe aplicar struct y asignación dinámica.

Page 7: Trabajo Final de Aplicada II

6

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Código fuente:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include<string.h>

#define max 10

struct carro

{ char descrip[max];

char marca[max];

char modelo[max];

char color[max];

int ano;

double placa;

};

void imprimir(struct carro *automoviles,int a, int d, struct carro *listado)

{ int b;

clrscr();

puts("\n\n\t\t\tLISTA DE AUTOMOVILES\n\n");

for(b=0;b<a;b++)

{ printf("\n\tla descripcion del auto #%i: %s\n",b+1,(automoviles+b)->descrip);

printf("\n\tla marca del auto #%i: %s\n",b+1,(automoviles+b)->marca);

printf("\n\tel modelo del auto #%i: %s\n",b+1,(automoviles+b)->modelo);

printf("\n\tel color del auto #%i: %s\n",b+1,(automoviles+b)->color);

printf("\n\t el ano del auto #%i: %i\n",b+1,(automoviles+b)->ano);

Page 8: Trabajo Final de Aplicada II

7

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

printf("\n\t la placa del auto #%i: %.0lf\n\n",b+1,(automoviles+b)->placa);

getch();

clrscr();

}

puts("\n\n\t\t\tLISTA DE AUTOS POR PLACA\n");

for(b=0;b<d;b++)

{ printf("\n\tla descripcion del auto #%i: %s\n",b+1,(listado+b)->descrip);

printf("\n\tla marca del auto #%i: %s\n",b+1,(listado+b)->marca);

printf("\n\tel modelo del auto #%i: %s\n",b+1,(listado+b)->modelo);

printf("\n\tel color del auto #%i: %s\n",b+1,(listado+b)->color);

printf("\n\t el ano del auto #%i: %i\n",b+1,(listado+b)->ano);

printf("\n\t la placa del auto #%i: %.0lf\n\n",b+1,(listado+b)->placa);

getch();

clrscr();

}

puts("\n\n\t\t\tAUTOMOVIL MAS VIEJO");

printf("\n\tla descripcion del auto #%i: %s\n",d+1,(listado+d+1)->descrip);

printf("\n\tla marca del auto #%i: %s\n",d+1,(listado+d+1)->marca);

printf("\n\tel modelo del auto #%i: %s\n",d+1,(listado+d+1)->modelo);

printf("\n\tel color del auto #%i: %s\n",d+1,(listado+d+1)->color);

printf("\n\t el ano del auto #%i: %i\n",d+1,(listado+d+1)->ano);

printf("\n\t la placa del auto #%i: %.0lf\n\n",d+1,(listado+d+1)->placa);

}

void acofecha(struct carro *automoviles, struct carro *listado,int a,int d)

{ int b=0,c, aux, pos=0;

aux= (automoviles+b)->ano;

Page 9: Trabajo Final de Aplicada II

8

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

clrscr();

for(b=1;b<a;b++)

{ if((automoviles+b)->ano<aux)

{ aux= (automoviles+b)->ano;

pos=b;

}

}

listado=(carro*) realloc(listado,1*sizeof(carro));

(listado+d+1)->ano= (automoviles+pos)->ano;

(listado+d+1)->placa= (automoviles+pos)->placa;

strcpy((listado+d+1)->descrip,(automoviles+pos)->descrip);

strcpy( (listado+d+1)->modelo,(automoviles+pos)->modelo);

strcpy((listado+d+1)->marca,(automoviles+pos)->marca);

strcpy((listado+d+1)->color,(automoviles+pos)->color);

}

void acomodo(struct carro *listado, int cont)

{ int a,b=0,fe;

double pla,aux;

char mo[max],ma[max],des[max],col[max];

clrscr();

aux=(listado+b)->placa;

for(b=1;b<cont;b++)

{ if((listado+b)->placa>aux)

{ fe=(listado+b)->ano;

pla=(listado+b)->placa;

Page 10: Trabajo Final de Aplicada II

9

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

strcpy(mo,(listado+b)->modelo);

strcpy(ma,(listado+b)->marca);

strcpy(col,(listado+b)->color);

strcpy(des,(listado+b)->descrip);

strcpy((listado+b)->descrip,(listado+b-1)->descrip);

strcpy( (listado+b)->modelo,(listado+b-1)->modelo);

strcpy((listado+b)->marca,(listado+b-1)->marca);

strcpy((listado+b)->color,(listado+b-1)->color);

(listado+b)->ano=(listado+b-1)->ano;

(listado+b)->placa=aux;

strcpy((listado+b-1)->descrip,des);

strcpy((listado+b-1)->modelo,mo);

strcpy((listado+b-1)->marca,ma);

strcpy((listado+b-1)->color,col);

(listado+b-1)->ano=fe;

(listado+b-1)->placa=pla;

aux=(listado+b)->placa;

}

}

}

void buscar(struct carro *automoviles,struct carro *listado, int a)

{

int b,cont=0,w;

clrscr();

for(b=0;b<a;b++)

Page 11: Trabajo Final de Aplicada II

10

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

{ w=((automoviles+b)->placa);

if(w%2==0)

{ (listado+cont)->placa= (automoviles+b)->placa;

strcpy((listado+cont)->descrip,(automoviles+b)->descrip);

strcpy( (listado+cont)->modelo,(automoviles+b)->modelo);

strcpy((listado+cont)->marca,(automoviles+b)->marca);

strcpy((listado+cont)->color,(automoviles+b)->color);

(listado+cont)->ano=(automoviles+b)->ano;

cont++;

}

}

}

void main()

{ struct carro *automoviles, *listado;

int a,b,c,d=0,m;

float e,f,g;

double x;

char todo[max];

clrscr();

puts("\n\ninttoduzca la cantidad de espacio a pedir\n\n");

scanf("%i",&a);

automoviles= (carro*) calloc(a,sizeof(carro));

if(automoviles != NULL)

{

for(b=0;b<a;b++)

{ clrscr();

Page 12: Trabajo Final de Aplicada II

11

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

printf("\n\nintroduzca la descripcion del auto # %i\n",b+1);

fflush(stdin);

gets((automoviles+b)->descrip);

printf("\n\nintroduzca la marca del auto # %i\n",b+1);

fflush(stdin);

gets((automoviles+b)->marca);

printf("\n\nintroduzca el modelo del auto # %i\n",b+1);

fflush(stdin);

gets((automoviles+b)->modelo);

printf("\n\nintroduzca el color del auto # %i\n",b+1);

fflush(stdin);

gets((automoviles+b)->color);

printf("\n\nintroduzca el ano del auto # %i\n",b+1);

fflush(stdin);

gets(todo);

c=atoi(todo);

(automoviles+b)->ano=c;

printf("\n\nintroduzca la placa del auto # %i\n",b+1);

fflush(stdin);

gets(todo);

x=atof(todo);

(automoviles+b)->placa=x;

m=x;

if(m%2==0)

d=d+1;

}

Page 13: Trabajo Final de Aplicada II

12

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

listado=(carro*) calloc(d,sizeof(carro));

clrscr();

if(listado != NULL)

{ buscar(automoviles, listado, a);

acomodo(listado,d);

acofecha(automoviles, listado, a,d);

imprimir(automoviles,a,d,listado);

}

else

puts("\n\nNO HAY ESPACIO DE MEMORIA\n");

}

else

puts("\n\nno hay suficiente espacio de memoria\n");

getch();

free(automoviles);

free(listado);

}

Page 14: Trabajo Final de Aplicada II

13

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Problema #2

Enunciado:

Elabore un programa que seleccione una página de video activa y luego haga lo

siguiente:

Muestre un rombo

Limpie toda la pantalla y visualice

Un arbolito de Navidad

Y debajo de él diga Noche de Paz y Noche de Alegría

Page 15: Trabajo Final de Aplicada II

14

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Código fuente:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <dos.h>

char pagina=0;

char color=7;

void cursor(char x, char y)

{ _AH=2; // servicio

_DH=y; // posicion en x

_DL=x; // posicion en y

_BH=pagina; // paginacion

asm int 10h

}

void limpieza() //interrupcion 10h

{ _AH=7; //puede ser servicio 6 y servicio 7

_AL=0; //borra todas las lineas

_CX=0; //comienzo de fila y columna de la esquina superior izquierda

_DX=0x184f;//fin de la fila y columna de la esquina inferior derecha

_BH=0; //las lineas en blanco se oscurecen

asm int 10h;

}

void pixel(int x, int y, int color)

Page 16: Trabajo Final de Aplicada II

15

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

{ _AH= 0x0C;

_AL= color;

_BH= 0;

_CX= x;

_DX= y;

asm int 10h;

}

void triangulo(int x, int y,int color,int r)

{ int i,e=60;

for(i=x+r;i<x+e-r;i++)

pixel (i,y,color);

}

void pausa() //interrupcion 16h

{ _AH=0;

asm int 16h

}

void video()

{ _AH=0;

_AL=13; //EGA=13 VGA =14, 16 colores 640 x 200, 60 filas x 40 columnas

asm int 10h;

}

void imprime(char caracter) //interrupcion 10h

{ _AH=0xE; //servicio Eh

_AL=caracter;

_BL=2;

Page 17: Trabajo Final de Aplicada II

16

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

_BH=0;

asm int 10h

}

void nieve()

{ int g;

for (g=0;g<200;g++){

delay(4);

pixel (1+rand()%400,g,15);}

}

void tierra()

{ int g;

for (g=0;g<200;g++)

pixel (1+rand()%400,100+g,7);

}

void letrero()

{ cursor(5,23);

char *p="noche de paz y noche de alegria";

for(int g=0;g<31;g++)

imprime(p[g]);

}

void todo()

{

Page 18: Trabajo Final de Aplicada II

17

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

int j,r=0;

limpieza();

video();

// rombo

for(j=0;j<30;j++)

{

triangulo(130,80-j,12,r);

r++;

}

r=0;

for(j=0;j<30;j++)

{

triangulo(130,80+j,12,r);

r++;

}

r=0;

// fin del rombo

pausa();

limpieza();

Page 19: Trabajo Final de Aplicada II

18

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

for (int u=0;u<75;u++)

for (j=0;j<640;j++)

pixel(j,125+u,15);

for(j=0;j<30;j++)

{

triangulo(130,80-j,2,r);

r++;

}

r=0;

for(j=0;j<30;j++)

{

triangulo(130,100-j,2,r);

r++;

}

r=0;

for(j=0;j<30;j++)

{

Page 20: Trabajo Final de Aplicada II

19

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

triangulo(130,120-j,2,r);

r++;

}

for(int e=0;e<30;e++)

for(j=155;j<165;j++)

pixel (j,121+e,4);

for ( int g=0;g<10;g++)

for( int t=0+g;t<10+g;t++)

for ( int d=75+g;d<90+g;d++)

pixel (d,170-t,7);

for (g=0;g<15;g++)

pixel (89-g,161,2);

for (g=0;g<10;g++)

pixel (89+g,161-g,2);

for (g=0;g<10;g++)

pixel (89,161+g,2);

for ( g=0;g<10;g++)

for( t=0+g;t<10+g;t++)

for (d=100+g;d<115+g;d++)

pixel (d,180-t,12);

Page 21: Trabajo Final de Aplicada II

20

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

for (g=0;g<15;g++)

pixel (114-g,171,10);

for (g=0;g<10;g++)

pixel (114+g,171-g,10);

for (g=0;g<10;g++)

pixel (114,171+g,10);

for ( g=0;g<10;g++)

for( t=0+g;t<10+g;t++)

for (d=165+g;d<180+g;d++)

pixel (d,160-t,11);

for (g=0;g<15;g++)

pixel (179-g,151,10);

for (g=0;g<10;g++)

pixel (179+g,151-g,10);

for (g=0;g<10;g++)

pixel (179,151+g,10);

for ( g=0;g<10;g++)

for( t=0+g;t<10+g;t++)

for (d=125+g;d<140+g;d++)

Page 22: Trabajo Final de Aplicada II

21

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

pixel (d,180-t,8);

for (g=0;g<15;g++)

pixel (139-g,171,10);

for (g=0;g<10;g++)

pixel (139+g,171-g,10);

for (g=0;g<10;g++)

pixel (139,171+g,10);

for ( g=0;g<10;g++)

for( t=0+g;t<10+g;t++)

for (d=125+g;d<140+g;d++)

pixel (d,150-t,3);

for (g=0;g<15;g++)

pixel (139-g,141,10);

for (g=0;g<10;g++)

pixel (139+g,141-g,10);

for (g=0;g<10;g++)

pixel (139,141+g,10);

Page 23: Trabajo Final de Aplicada II

22

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

for ( g=0;g<10;g++)

for( t=0+g;t<10+g;t++)

for (d=145+g;d<160+g;d++)

pixel (d,180-t,4);

for (g=0;g<15;g++)

pixel (159-g,171,10);

for (g=0;g<10;g++)

pixel (159+g,171-g,10);

for (g=0;g<10;g++)

pixel (159,171+g,10);

for ( g=0;g<10;g++)

for( t=0+g;t<10+g;t++)

for (d=145+g;d<160+g;d++)

pixel (d,180-t,9);

for (g=0;g<15;g++)

pixel (159-g,171,10);

for (g=0;g<10;g++)

pixel (159+g,171-g,10);

for (g=0;g<10;g++)

Page 24: Trabajo Final de Aplicada II

23

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

pixel (159,171+g,10);

for ( g=0;g<10;g++)

for( t=0+g;t<10+g;t++)

for (d=165+g;d<180+g;d++)

pixel (d,180-t,9);

for (g=0;g<15;g++)

pixel (179-g,171,10);

for (g=0;g<10;g++)

pixel (179+g,171-g,10);

for (g=0;g<10;g++)

pixel (179,171+g,10);

}

void main ()

{ int x=0;

limpieza();

todo();

while(x<10)

{ x++;

nieve();

if ((x%2)==0)

tierra();

Page 25: Trabajo Final de Aplicada II

24

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

}

letrero();

pausa();

}

Page 26: Trabajo Final de Aplicada II

25

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Conclusión

Una vez finalizado este trabajo nos damos cuenta lo mucho que cada uno de

nosotros ha avanzado en nuestro proceso como programadores, nunca nos

podremos detener ahora consiguiendo cada vez más herramientas de trabajo para

en su forma única cada uno de nosotros cambiar al mundo.

En este trabajo podemos resaltar la importancia de tres conceptos claves:

Los structs porque con ellos podemos agrupar varios tipos de datos que

tenemos a la disposición y usarlos al mismo tiempo que guardamos

información en ellos

La asignación dinámica que nos ayuda a tomar la memoria que necesitamos

para cualquier trabajo con las funciones calloc y malloc, y también muy

importante modificando este espacio de trabajo, ya sea expandiéndolo o

comprimiéndolo dependiendo de las necesidades del problema en ese

momento

Las interrupciones que nos ayudan a comunicarnos mejor con la maquina

pero esta vez a un nivel bajo, en donde podemos navegar a través de las

pantallas (paginas) de video, y hacer todas las funciones que antes

conocíamos(como formar triángulos, hacer líneas, limpiar, leer, etc..) pero a

bajo nivel

Y en estos momentos que poseemos estas herramientas este trabajo no se hizo

más fácil sino que nos obligó a tomar nuestros conocimientos y la lógica para dar

como resultado lo que hemos logrado.

Muchas gracias

Page 27: Trabajo Final de Aplicada II

26

Programación Aplicada II

Trabajo Final del Curso

Profesora Ludia de Meléndez

Bibliografía

1. Ludia de Meléndez, Plataforma

Moodle:http://web.unvi.utp.ac.pa/moodle/file.php/216/TRABAJOFINAL2011INTER

STRCT.pdf. 2011

2. Interrupciones en el computador. Profesora Ludia de Meléndez. 2011. PowerPoint

3. Teoría de Unión. Profesora Ludia de Meléndez. 2011. Word

4. Asignación Dinámica. Profesora Ludia Gómez. 2011. PDF

5. Estructuras. Profesora Ludia Gómez de Meléndez. 2011. PDF

6. Teoría de Punteros. Profesora Ludia Gómez. 2011. PDF

7. Vectores y Matrices-Capitulo#1. Profesora Ludia de Meléndez. 2011. PDF

8. Las interrupciones. Wikipedia. es.wikipedia.org/wiki/Interrupción

9. Interrupciones en C. Servidor Terra.

www.terra.es/personal/fremiro/interrupciones.htm

10. Estructuras Dinámicas. Programatium. Manual de Programación.

www.programatium.com/manuales/c/10.htm