Trabajo Final de Aplicada II

Page 1

Profesora Ludia Gómez

Trabajo Final de Aplicada II

7 de diciembre de 2011

Integrantes:

Universidad Tecnológica de Panamá

Betegon, Abiam Facultad de Ingeniería en Sistemas y Computación

Girón, Juan

Pitty, Ida Departamento de Programación y Análisis de

8-839-1626 8-879-654

8-849-1280

Vivar, Luis

8-857-210

Sistemas Grupo 1-IL-122 Licenciatura en Ingeniería en Sistemas y Computación


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

Programación Aplicada II Trabajo Final del Curso

1

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

Programación Aplicada II Trabajo Final del Curso

2

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.

Programación Aplicada II Trabajo Final del Curso

3

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. 2. 3. 4.

Forme grupo de un mínimo de 4 Indique en que problema participo cada uno Entregue engrapado el trabajo y en un disco sus programas No se aceptan prorrogas

Programación Aplicada II Trabajo Final del Curso

4

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.

Programación Aplicada II Trabajo Final del Curso

5

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);

Programaci贸n Aplicada II Trabajo Final del Curso

6

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; Programaci贸n Aplicada II Trabajo Final del Curso

7

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;

Programaci贸n Aplicada II Trabajo Final del Curso

8

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++) Programaci贸n Aplicada II Trabajo Final del Curso

9

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(); Programaci贸n Aplicada II Trabajo Final del Curso

10

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; } Programaci贸n Aplicada II Trabajo Final del Curso

11

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);

}

Programaci贸n Aplicada II Trabajo Final del Curso

12

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

Programación Aplicada II Trabajo Final del Curso

13

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)

Programaci贸n Aplicada II Trabajo Final del Curso

14

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) { _AH=0xE;

//interrupcion 10h

//servicio Eh

_AL=caracter; _BL=2;

Programaci贸n Aplicada II Trabajo Final del Curso

15

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() {

Programaci贸n Aplicada II Trabajo Final del Curso

16

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();

Programaci贸n Aplicada II Trabajo Final del Curso

17

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++) {

Programaci贸n Aplicada II Trabajo Final del Curso

18

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);

Programaci贸n Aplicada II Trabajo Final del Curso

19

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++)

Programaci贸n Aplicada II Trabajo Final del Curso

20

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);

Programaci贸n Aplicada II Trabajo Final del Curso

21

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++)

Programaci贸n Aplicada II Trabajo Final del Curso

22

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();

Programaci贸n Aplicada II Trabajo Final del Curso

23

Profesora Ludia de Mel茅ndez


} letrero(); pausa(); }

Programaci贸n Aplicada II Trabajo Final del Curso

24

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

Programación Aplicada II Trabajo Final del Curso

25

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. 3. 4. 5. 6. 7.

Interrupciones en el computador. Profesora Ludia de Meléndez. 2011. PowerPoint Teoría de Unión. Profesora Ludia de Meléndez. 2011. Word Asignación Dinámica. Profesora Ludia Gómez. 2011. PDF Estructuras. Profesora Ludia Gómez de Meléndez. 2011. PDF Teoría de Punteros. Profesora Ludia Gómez. 2011. PDF 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

Programación Aplicada II Trabajo Final del Curso

26

Profesora Ludia de Meléndez


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.