400 likes | 585 Views
LIGA VENEZOLANA DE BEISBOL MINIPROYECTO III. Elaborado por: Carlos Rodríguez Bárbara Jaspe. Manual de usuario. Contenido de la presentación. introducción Objetivos generales y específicos Red Modular Explicación breve de la red modular
E N D
LIGA VENEZOLANA DE BEISBOL MINIPROYECTO III Elaborado por: Carlos Rodríguez Bárbara Jaspe
Contenido de la presentación • introducción • Objetivos generales y específicos • Red Modular • Explicación breve de la red modular • Especificaciones sintáctica y semántica de cada TDA • Estructuras del programa • Diseño de la salida • Algoritmos pseudo formal con datos de prueba • Conclusiones generales
Introducción El concepto de tipo de dato abstracto (TDA, Abstract Data Type), fue propuesto por primera vez hacia 1974por John Guttag y otros, pero no fue hasta 1975 que por primera vez Liskov lo propuso para el lenguaje CLU. El lenguaje Turbo Pascal fue determinante para la común aceptación de los TDA con la introducción de las Units, si bien estas no cumplen con las características básicas de un Tipo de dato Abstracto como por ejemplo la encapsulación de los datos. El lenguaje Ada pudo implementar exitosamente los TDA con sus Packages. Vale recordar que estos dos últimos lenguajes soportan formalmente la Programación modular. En el mundo de la programación existen diversos lenguajes que se han ido creando con el paso del tiempo y que se han perfeccionado debido a las necesidades de los programadores de la época a la que pertenecen. Los primeros lenguajes de programación eran de tipo lineal, ya que un programa se recorría desde un punto marcado como Inicio hasta llegar a un punto Fin. Con el tiempo se fueron creando nuevos lenguajes y en nuestros días los más utilizados son los llamados “Orientados a Objetos”. Los Lenguajes Orientados a Objetos (LOO) tienen la característica de que no son lenguajes lineales, sino que se forman de diversas funciones, las cuales son llamadas en el orden en que el programa mismo las pide o el usuario determina. Para entender mejor cómo funcionan los Lenguajes Orientados a Objetos, vamos a introducir un concepto fundamental en las Estructuras de Datos denominado Abstracción de Datos y que es parte importante de estos Lenguajes y de la manera en que funciona la mayoría del software comercial de nuestros días. Con mucha frecuencia se utilizan los términos TDA y Abstracción de Datos de manera equivalente, y esto es debido a la similitud e interdependencia de ambos. Los Tipos de Datos Abstractos (TDA) son generalizaciones de los tipos de datos primitivos (enteros, reales, etc.), al igual que los procedimientos y funciones son generalizaciones de operaciones primitivas (suma, resta, multiplicación, entre otros). Se enfocan los TDA bajo cuatro aspectos: especificación sintáctica, especificación semántica, selección de la representación en función de los tipos definidos en los lenguajes de programación y las operaciones sobre la representación escogida.
Objetivo general y objetivo especifico • Como objetivo general se pretende aplicar los tipos de datos abstractos en sus diferentes funciones y procedimiento que permitan realizar las listas u otros datos
Explicación breve de los módulos A continuación se explicara cada uno de los módulos que conforman la red modular del programa, que no es otra cosa que explicar de una breve manera los procesos y sub procesos que conforman el programa y que tendrán como resultado la ejecución del mismo. • Modulo 0:Estadística liga Venezolana de Beisbol este modulo 0 lleva a realizar una serie de procesos a partir de el, cuyos procesos generara una estadística de la liga. • Modulo 1: Crear archivo de equipos: en este modulo se crea el archivo punto dat donde se almacenara la información de los equipos el cual debe ser actualizado con cada operación que se relacione con el mismo. Modulo 1.1:insertar equipos:en este modulo se ingresan los datos para registrar los equipos que serán guardados en el archivo de equipos. Modulo 1.2: Guardar en archivos de equipos:en este modulo se guardara la información dada en el correspondiente archivo punto dat. • Modulo 2: Eliminar equipos:en este modulo se procede a eliminar equipos del correspondiente archivo posteriormente de que se realice la búsqueda del equipo, para esto se emplea la función buscar. Modulo 2.1: Actualizar archivo de equipos:este archivo se actualizara luego de cualquier cambio que se le realice al mismo. • Modulo 3: Modificar equipos: en este campo se procede a ejecutar una serie de acciones que permiten que el registro de equipos sea modificado. Modulo 3.1: actualizar archivo de equipos:este archivo se actualizara luego de cada modificación lo que permitirá mantener los datos actualizados de los equipos. • Modulo 4: Listar equipos: en este modulo se procede a elaborar la lista de los equipos. Modulo 4.1: Mostrar lista: las operaciones realizadas en este modulo es para mostrar por pantalla la lista de equipos. • Modulo 5: Crear archivo Jugadores: en este modulo se procede a crear un archivo punto dat para almacenar la información de lo jugadores. Modulo 5.1: Insertar jugador: se procede en este modulo a ingresar los datos de los jugadores. Modulo 5.2: Guardar en archivo jugador: luego de haber ingresado los datos se guardan el archivo punto dat correspondiente.
Explicación breve de los módulos • Modulo 6: Eliminar archivo jugador: En este modulo se procede a eliminar de la lista a jugadores mediante el procedimiento Eliminar de los TDA posteriormente de haber aplicado la función búsqueda para encontrar el campo que se desea a eliminar. • Modulo 6.1: Actualizar archivo jugador: en este modulo se actualiza el archivo luego de eliminar a los jugadores. • Modulo 7: listar jugador por equipo: En este modulo se procede a elaborar la lista de jugadores por equipo. • Modulo 7.1: Actualizar archivo de equipo: En este Modulo se procede a actualizar el archivo de equipos mostrando una distribución de los jugadores. • Modulo 8:Modificar Jugador: en este modulo se emplea el procedimiento Modificar para de esta manera cambiar los datos del jugador. • Modulo 8.1:Actualizar Jugador: este procedimiento se procede a actualizar el archivo Jugador con los datos Modificados. • Modulo 9: Cambiar jugador por equipo uno a uno: en este modulo se trata de hacer un cruce o redistribución de los equipos que permite cambiar jugadores por equipo de uno en uno. • Modulo 9.1: Actualizar Archivo Jugador: Por consecuencia del modulo 9 se procede a actualizar el archivo jugador dando asi una nueva lista de jugadores con sus respectivos cambios es decir el equipo donde este asignado • Modulo 9.2: Actualizar Archivo equipo: Por consecuencia del modulo 9 se procede a actualizar el archivo equipo. • Modulo 10: Clasificación General: Se emplean las operaciones necesarias para obtener las estadísticas necesarias para mostrara la clasificación de los 5 mejores equipos • Modulo 10.1: Mostrar Clasificación General: mostrara por pantalla la clasificación general
Especificación sintáctica ysemántica y sintáctica de las tda
ESPECIFICACION SINTACTICA OPERACIÓN DOMINIO RANGO Ingresar equipo equipos x codlista_equipo Eliminar equipo equipos x codlista_equipo Modifica equipo equipos x codlista_equipo Listar equipo equipos lista_equipo Ingresar jugador jugadores x codlista_equipo Eliminar jugador jugadores x codlista_equipo Listar jugador jugadores lista_equipo Modificar jugador jugadores x codlista_equipo Cambiar jugador jugadores x posicionlista_equipo Clasificacion general jugadores x codlista_equipo
ESPECIFICACION SEMANTICA Procedimiento ingresar_equipo (varequipos:lista_equipos, cod:integer) Precondicion: buscar (equipos,cod)= final ( equipos) Postcondicion: l=(cod) v l=(l1, l2….) Accion Si l=() L=(cod) Sino Si l=(l1, l2….ln) Procedimiento eliminar_equipo (varequipos:lista_equipos,cod:integer) Precondicion:
PARTES PALABRAS RESERVADAS • CABECERA DEL PROGRAMA PROGRAM interfas_miniproyecto; • DECLARACION DE UNIDADES USES crt; • DECLARACION DE TIPOSTYPE equipo=record jugador= record datpicher = record • DECLARACION DE VARIABLES VAR var op,i,j,u,a,l,t: integer; • ARCHIVO DE PICHER archivoJ: file of datpicher; picher:lista_equipos; elem:datpicher; num:integer; • ARCHIVO DE JUGADOR archivoE:file of jugador; jugadores:lista_equipos; elemen:jugador; equipos: lista_equipos; element:equipo;
DECLARACION DE SUBPROGRAMAS FUNCION O PROCEDURE PROCEDURE carga; PROCEDURE bienvenido; PROCEDURE bandera; PROCEDURE menú; PROCEDURE iut; PROCEDURE ingresar_picher (varpicher:lista_equipos); PROCEDURE ingresar_jugador (varjugadores:lista_equipos); PROCEDURE ingresar_equipo(varequipos:lista_equipos); PROCEDURE eliminar_equipo (varequipos:lista; num:integer;elem:equipo); PROCEDURE modificar_equipo(varequipos:lista; num:integer;elem:equipo); PROCEDURE mostrar_equipo (equipos,jugadores:lista_equipos); PROCEDURE insertar_jugador (jugadores:listas; elemen:jugador); PROCEDURE eliminar_jugador (varjugadores:listas;num:integer;elemen:jugador); PROCEDURE mostrar_jugador(elemen:jugador); PROCEDURE modificar_jugador(varjugadores:listas; num:integer;elemen:jugador); FUCTION BUSCAR; • CUERPO DEL PROGRAMA BEGIN END Y PUNTO (.)
programinterfas_miniproyecto; CABECERA DEL PROGRAMA uses crt; DECLARACION DE UNIDADES TypeDECLARACION DE TPOS equipo=record cod : integer; //codigo del equipo nombre : string[20]; //nombre del equipo jj : integer; //juegos jugados jg : integer; //juegos ganados jp : integer; //juegos perdidos ave : real; end; //============================================================================== jugador= record cedula : integer; //cedula del jugador nombre : string[20]; //nombre del jugador posi:string[5]; hits : integer; //imparables vb : integer; //veces al bate ci : integer; //Carreras impulsadas ca : integer; //Carreras anotadas br : integer; //Bases Robadas aver : integer; //Promedio end;
datpicher = record ced : integer; //cedula del jugador nombre : string[20]; //nombre del jugador il : integer; //innin lanzados cl : integer; //Carreras limpias efc : integer; //efectivida jg : integer; //juegos ganados so : integer; //ponches js : integer; //juegos salvados end; sub_lista=^sub_lis_equipo; sub_lis_equipo=record info_equi:equipo; info_juga:jugador; info_pich:datpicher; sig:sub_lista; end; lista_equipos=sub_lista; /============================================================================= Var DECLARACION DE VARIABLES op,i,j,u,a,l,t: integer;
//=======================================================================//======================================================================= picher:lista_equipos; //======================================================================= jugadores:lista_equipos; equipos: lista_equipos; //============================================================================== //__ ___PROCEDURE MENU________________/ proceduremenu; DECLARACION DE SUBPROGRAMAS Begin(TODOS LOS PROCEDIMIENTOS Y FUNCIONES) for i:= 25 to 47 do BEGIN gotoxy (30,13);textcolor (GREEN);writeln('OPCION A'); gotoxy (i,15);textcolor (blue);write(#176); gotoxy (i,16);textcolor (blue);write(#176); gotoxy (i,17);textcolor (blue);write(#176); gotoxy (i,18);textcolor (blue);write(#176); gotoxy (i,19);textcolor (blue);write(#176); gotoxy (29,16);textcolor (white);write('(A)OPERACIONES CON'); gotoxy (33,17);textcolor (white);write('LOS EQUIPOS') END;
//_____PROCEDURE INGRESAR EQUIPO_______// En este proceso se procede a ingresar los datos del _______________________________________________________equipo el cual se guardara en el archivo de equipos el mismo que sera recorrido y actualizado según lo indique el usuario la opciones del menu. procedureingresar_equipo(varequipos:lista_equipos;cod:integer); var nombre:string[20]; aux:lista_equipos; begin clrscr; delay (500);gotoxy(35,3);textcolor(white);write('INSERTAR EQUIPO'); for i:= 23 to 29 do for j:= 55 to 60 do begin gotoxy(i,3);textcolor(yellow);write (#17); gotoxy(j,3);textcolor(yellow);write (#17); end; delay(10);textcolor(10);gotoxy (12,10);writeln('A CONTINUACION INGRESE LOS DATOS DEL EQUIPO QUE DESEA REGISTRAR:'); delay(10);textcolor(15);gotoxy (15,14);writeln('CODIGO DEL EQUIPO');gotoxy (45,14);readln(cod); delay(10);textcolor(15);gotoxy (15,16);writeln('NOMBRE DEL EQUIPO');gotoxy (45,16);readln(nombre); aux:=nil; new(aux); aux^.info_equi.cod:= cod; aux^.info_equi.nombre:= nombre; aux^.sig:= equipos; equipos:= aux; end;
//__PROCEDURE ELIMINAR EQUIPO______// Este procedimiento elimina un equipo procedureeliminar_equipo(varequipos:lista_equipos;cod:Integer); de igual manera su dominio es elemento x Var aux,aux1:lista_equipos;posición y recibe una lista esto modificandoarchivo equipo Begin clrscr; delay (500);gotoxy(35,3);textcolor(white);write('ELIMINAR EQUIPO'); for i:= 23 to 29 do for j:= 55 to 60 do begin gotoxy(i,3);textcolor(yellow);write (#17);gotoxy(j,3);textcolor(yellow);write (#17);end; delay(10);textcolor(10);gotoxy (12,10);writeln('A CONTINUACION INGRESE LOS DATOS DEL EQUIPO QUE DESEA ELIMINAR:'); delay(10);textcolor(15);gotoxy (15,14);writeln('CODIGO DEL EQUIPO');gotoxy (40,14);Readln(cod); If (equipos^.info_equi.cod=cod) then Begin equipos:=equipos^.sig; End Else Begin New(aux); aux:=equipos;New(aux1); aux1:=aux1^.sig; While (aux1<>NIL) do Begin If (aux^.info_equi.cod=cod)then Begin aux^.Sig:=aux1^.sig; aux:=aux1^.Sig;aux1:=aux1^.sig; EndElseBegin aux:=aux^.sig; aux1:=aux1^.sig;End;end;End; Writeln('ESTA ELIMINADO'); end;
//__________-PROCEDURE MODIFICAR EQUIPO_________/ En este procedimiento se modifica los datos Proceduremodificar_equipo(varequipos:lista_equipos; cod:integer); del equipo y se actualiza el archivo equipo Var nombre:string[20];Aux:lista_equipos;encontrar:boolean; Begin clrscr; delay (500);gotoxy(35,3);textcolor(white); write('MODIFICAR EQUIPO'); for i:= 23 to 29 do for j:= 55 to 60 do begin gotoxy(i,3);textcolor(yellow);write (#17);gotoxy(j,3);textcolor(yellow);write (#17); end; Aux:=equipos;encontrar:=false; delay(10);textcolor(10);gotoxy (12,10);writeln('A CONTINUACION INGRESE LOS DATOS DEL EQUIPO QUE DESEA REGISTRAR:'); delay(10);textcolor(15);gotoxy (15,12);writeln('CODIGO DEL EQUIPO');gotoxy (45,12);readln(cod); delay(10);textcolor(15);gotoxy (15,14);writeln('NOMBRE DEL EQUIPO:', aux^.info_equi.nombre); delay(10);textcolor(15);gotoxy (15,18);writeln('NOMBRE DEL EQUIPO');gotoxy (45,18);readln(nombre); While (not encontrar) and (aux <> nil) do Begin Ifaux^.info_equi.cod = codthen begin encontrar:=true; end Else begin Aux:=aux^.sig; End; end; new(aux); aux^.info_equi.cod:= cod; aux^.info_equi.nombre:= nombre; aux^.sig:= equipos; equipos:= aux; end;
//____PROCEDURE MOSTRAR EQUIPO___/ Se procede a mostrar los equipos registrados en el archivo procedimiento cuyo dominio es elemento X listarango devuelve una lista proceduremostrar_equipo (equipos:lista_equipos); var j:integer; begin clrscr; delay (500);gotoxy(35,3);textcolor(white); write('LISTAR EQUIPO'); for i:= 23 to 29 do for j:= 55 to 60 do begin gotoxy(i,3);textcolor(yellow);write (#17); gotoxy(j,3);textcolor(yellow);write (#17); end; delay(10);textcolor(10);gotoxy (1,10);writeln('CODIGO EQUIPO '); While (equipos<>Nil) do Begin Writeln(equipos^.info_equi.cod:3, equipos^.info_equi.nombre:13); equipos:=equipos^.Sig; Readln; End; end;
//__INSERTAR JUGADOR____/ Se procede a insertar un jugador En una posición de memoriael dominio de la mismaseria lista x elemento x posición para retornauna lista que actualiza el archivo jugador procedureingresar_jugador (varjugadores:lista_equipos;cod:integer); Var j,hits,vb,ci,ca,br,ave:integer; nombre,equi:string[20]; posi:string[5]; auxi:lista_equipos; begin clrscr; delay (500);gotoxy(35,3);textcolor(white);write('INSERTAR JUGADOR'); for i:= 23 to 29 do for j:= 55 to 60 do begin gotoxy(i,3);textcolor(yellow);write (#17);gotoxy(j,3);textcolor(yellow);write (#17);end; delay(10);textcolor(10);gotoxy (12,10);writeln('A CONTINUACION INGRESE LOS DATOS DEL EQUIPO QUE DESEA REGISTRAR:'); delay(10);textcolor(15);gotoxy (15,12);write('CEDULA DEL JUGADOR');gotoxy (40,12);readln(cod); delay(10);textcolor(15);gotoxy (15,14);writeln('NOMBRE DEL JUGADOR');gotoxy (40,14);readln(nombre); delay(10);textcolor(15);gotoxy (15,16);writeln('POSICION');gotoxy (40,16);readln(posi); delay(10);textcolor(15);gotoxy (15,18);writeln('NUMERO DE HITS');gotoxy (40,18);readln(hits); delay(10);textcolor(15);gotoxy (15,20);writeln('VECES AL BATE');gotoxy (40,20);readln(vb); delay(10);textcolor(15);gotoxy (15,22);writeln('CARRERAS IMPULSADAS');gotoxy (40,22);readln(ci); delay(10);textcolor(15);gotoxy (15,24);writeln('CARRERAS ANOTADAS');gotoxy (40,24);readln(ca); delay(10);textcolor(15);gotoxy (15,26);writeln('BASES ROBADAS');gotoxy (40,26);readln(br); delay(10);textcolor(15);gotoxy (15,28);writeln('EQUIPO');gotoxy (40,28);readln(equi); ave:= (hits * vb); new(auxi); auxi^.info_juga.cedula:= cod; auxi^.info_juga.nombre:= nombre; auxi^.info_juga.posi:= posi; auxi^.info_juga.hits:= hits; auxi^.info_juga.vb:= vb; auxi^.info_juga.ci:= ci; auxi^.info_juga.ca:= ca; auxi^.info_juga.br:= br; auxi^.info_juga.aver:= ave; auxi^.info_juga.equipo:= equi; auxi^.sig:= jugadores; jugadores:= auxi; end;
//____PROCEDURE ELIMINAR JUGADOR________/ Este procedimiento elimina un jugador procedureeliminar_jugador (varjugadores:lista_equipos;cod:integer); de una posición de memoria Var actualizando así la lista y el archivo jugador auxi,auxi1:lista_equipos; teniendo como dominio elemento x posición lbegin y obteniendo una lista clrscr; delay (500);gotoxy(35,3);textcolor(white); write('ELIMINAR JUGADOR'); for i:= 23 to 29 do for j:= 55 to 60 do begin gotoxy(i,3);textcolor(yellow);write (#17);gotoxy(j,3);textcolor(yellow);write (#17);end; delay(10);textcolor(10);gotoxy (12,10);writeln('A CONTINUACION INGRESE LOS DATOS DEL EQUIPO QUE DESEA ELIMINAR:'); delay(10);textcolor(15);gotoxy (15,14);writeln('CODIGO DEL EQUIPO');gotoxy (40,14); Readln(cod); If (jugadores^.info_juga.cedula=cod) then Begin jugadores:=jugadores^.sig; EndElseBegin New(auxi); auxi:=equipos; New(auxi1); auxi1:=auxi1^.sig; While (auxi1<>NIL) do Begin If (auxi^.info_juga.cedula=cod)then Beginauxi^.Sig:=auxi1^.sig; auxi:=auxi1^.Sig; auxi1:=auxi1^.sig; End Else Begin auxi:=auxi^.sig; auxi1:=auxi1^.sig; End; end;End; Writeln('ESTA ELIMINADO'); end;
/___PROCEDURE MOSTRAR JUGADOR___/ Se procede a mostrar los jugadores registrados en el archivo procedimiento cuyo dominio es elemento X listarango devuelve una lista proceduremostrar_jugador( jugadores:lista_equipos) ; begin clrscr; delay (500);gotoxy(35,3);textcolor(white); write('LISTAR JUGADORES'); for i:= 23 to 29 do for j:= 55 to 60 do begin gotoxy(i,3);textcolor(yellow);write (#17); gotoxy(j,3);textcolor(yellow);write (#17); end; delay(10);textcolor(10);gotoxy (1,10);writeln('CEDULA NOMBRE POS H VB CI CA BR AVE EQUIPO'); While (jugadores<>Nil) do Begin Writeln(jugadores^.info_juga.cedula:3, jugadores^.info_juga.nombre:10,jugadores^.info_juga.posi:10,jugadores^.info_juga.hits:10,jugadores^.info_juga.vb:10,jugadores^.info_juga.ci:10,jugadores^.info_juga.ca:10,jugadores^.info_juga.br:10,jugadores^.info_juga.aver:8,'.',jugadores^.info_juga.equipo:5 ); jugadores:=jugadores^.Sig; Readln; End; end;
//_____PROGRAMA PRINCIPAL___/ CUERPO O PROGRAMA PRINCIPAL BEGIN // BEGIN PRINCIPAL CASE Y LLAMADAS AL PROCEDIMIENTO carga; textbackground(8); (*-----color de fondo de la pantalla-*) clrscr; (*limpia la pantalla*) iut; bienvenido; bandera; readkey; clrscr; (*limpia la pantalla*) Repeat bandera;iut; menu; case op2 of 1:begin ingresar_equipo(equipos,cod);end; 2:begin eliminar_equipo(equipos,cod);end; 3:begin modificar_equipo(equipos,cod);end; 4:begin mostrar_equipo(equipos);end; 5:begin ingresar_jugador(jugadores,cod);end; 6:begin eliminar_jugador(jugadores,cod);end; 7:begin mostrar_jugador(jugadores);end; 8:begin modificar_jugador(jugadores,cod);end; 9: begin clrscr; delay (500);gotoxy(35,3);textcolor(white); write('CAMBIAR JUGADOR POR EQUIPO UNO A UNO'); for i:= 23 to 29 do for j:= 55 to 60 do begin gotoxy(i,3);textcolor(yellow);write (#17);gotoxy(j,3);textcolor(yellow);write (#17);end;CLRSCR;writeln('LO SENTIMOS ESTA OPCION NO ES VALIDA POR LOS MOMENTOS'); end; 10: beginclrscr; delay (500);gotoxy(35,3);textcolor(white); write('CLASIFICACION GENERAL'); for i:= 23 to 29 do for j:= 55 to 60 do begin gotoxy(i,3);textcolor(yellow);write (#17);gotoxy(j,3);textcolor(yellow);write (#17); end; CLRSCR; writeln('LO SENTIMOS ESTA OPCION NO ES VALIDA POR LOS MOMENTOS'); end; ;
conclusiones • Un TDA es un tipo de dato definido por el programador que se puede manipular de un modo similar a los tipos de datos definidos por el sistema. Está formado por un conjunto válido de elementos y un número de operaciones primitivas que se pueden realizar sobre ellos Un TDA es el elemento básico de la abstracción de datos. Su desarrollo es independiente del lenguaje de programación utilizado, aunque este puede aportar mecanismos que faciliten su realización.