SlideShare une entreprise Scribd logo
1  sur  13
 
Enunciado Un libro de registro mensual consiste en una serie de entradas, una para cada día del mes, que pueden representar cualquier cosa: número de horas en clase, número de correos recibidos, número de cafés consumidos, etc.  Realizar la especificación algebraica del TAD libro de registro mensual, incluyendo, entre otras, las operaciones de creación del libro para un mes determinado, registrar una entrada para un día determinado, consultar el registro de cierto día, proporcionar el mes del registro, el número de días del mes y el año correspondiente. Realizar la implementación de dicho TAD en JAVA
Especificación algebraica del TAD (I) Especificación sintáctica Nombre del tipo: LIBROREGISTRO Tipos auxiliares: NATURAL, VALOR Operaciones: CREARLIBRO: NATURALxNATURAL   LIBROREGISTRO {CREALIBRO(m, a) : Crea un libro de registro correspondiente al mes  m  del año  a} REGISTRAR: LIBROREGISTROx NATURALxVALOR  LIBROREGISTRO {REGISTRAR(l, d, v): Registra en el día  d  del libro  l  el valor  v} OBTENERENTRADA: LIBROREGISTROxNATURAL   VALOR {OBTENERENTRADA(l, d): Devuelve el valor anotado en el día  d  del libro  l   } MES: LIBROREGISTRO  NATURAL {MES(l): Devuelve el mes correspondiente al libro  l}
Especificación algebraica del TAD (II) Especificación sintáctica (Cont,) MES: LIBROREGISTRO  NATURAL {MES(l): Devuelve el mes correspondiente al libro  l} AÑO: LIBROREGISTRO  NATURAL {AÑO(l): Devuelve el año correspondiente al libro  l} DÍASMES:LIBROREGISTRO  NATURAL {DÍASMES(l): Devuelve el número de días del mes correspondiente al libro  l} Término canónico:  L  LIBROREGISTRO,    M, A    NATURAL,, L=CREALIBRO(M,A) v    L’    LIBROREGISTRO       V    VALOR,,L=REGISTRAR(L’,D,V)
Especificación algebraica del TAD (III) Especificación semántica CONJUNTO DE GENERADORAS NO LIBRE Axiomas de EQUIVALENCIA: (EQ1) REGISTRAR(REGISTRAR(L,D,V),D’,V’)=  REGISTRAR(L,D,V’), si D=D’ REGISTRAR(REGISTRAR(L,D’,V’),D,V), c.c. (EQ2) REGISTRAR(L,D,V)=Error, si D  [1,DIASMES(L)]
Axiomas de ACCESO: (OB1) OBTENERENTRADA(CREARLIBRO(M,A),D)=Error (OB2) OBTENERENTRADA(REGISTRAR(L,D,V),D’)= V, si D=D’ OBTENERENTRADA(L,D’), c.c. (M1) MES(CREALIBRO(M,A))=M (M2) MES(REGISTRAR(L,D,V))=MES(L) (A1) AÑO(CREALIBRO(M,A))=A (A2) AÑO(REGISTRAR(L,D,V))=AÑO(L) (D1) DIASMES(CREALIBRO(M,A))=DÍAS(M) (D2) DIASMES(REGISTRAR(L,D,V))=DÍASMES(L) operación auxiliar que nos devuelve el número de días del mes que representa el número natural M, siempre y cuando M  [1,12] Especificación algebraica del TAD (IV)
Implementación Java (I) public class libroRegistro { private int mesRegistro; private int añoRegistro; private int[] entradas; public libroRegistro(int mes, int año) { mesRegistro=mes; añoRegistro=año; entradas=new int[díasMes()]; } Representación de los valores del TAD en memoria Constructor  ≡   Op. Generadora
Implementación Java (II) public void registrar(int día, int valor){ if (día<1 || día>díasMes()) System.out.println(&quot;Día incorrecto&quot;); else entradas[día]=valor;  } public int obtenerEntrada(int día){ if (día<1 || día>díasMes()){ System.out.println(&quot;Día incorrecto&quot;); return -1; } else return entradas[día];  }   Op. Generadora Constructor  ≡   Op. Generadora
Implementación Java (III) public int díasMes(){ int diasmes=0; switch ( mesRegistro) { case 4: case 6: case 9: case 11:{Abr, Jun, Sept y Nov}  diasmes=30;  break; case 2: {Febrero}if (esBisiesto(añoRegistro)) d iasmes= 29;  else diasmes= 28; break; case 1: case 3: case 5: case 7:  case 8: case 10: case 12: {resto de meses} diasmes= 31;  break; }  // fin  switch return diasmes; }
Implementación en Java (IV) private boolean esBisiesto(int año){ if ( ( (año % 4 == 0) && ! (año % 100 == 0)) || ( (año % 400 == 0) && ! (año % 4000 == 0))) return true; else return false; } public int mes(){   return mesRegistro;  } public int año(){  return añoRegistro;   } }//fin de la clase libroRegistro Op. Auxiliar
Uso del TAD (I) public class Horas { private static  Scanner teclado=new Scanner(System.in); public static void main(String[] args) throws IOException{ System.out.println(&quot;Elige año para crear el libro de registros&quot;); int año=Integer.parseInt(teclado.readLine()); System.out.println(&quot;Elige mes para anotar las horas de estudio&quot;); int mes=Integer.parseInt(teclado.readLine()); libroRegistro horas=new libroRegistro(mes, año); boolean fin=false; while (!fin){ mostrarOpciones(); int o=leerOpcion(); if (o!=5) procesarOpcion(horas, o); else fin=true;  } }
Uso del TAD (II) private static void mostrarOpciones(){ System.out.println(&quot;1.  Anotar entrada&quot;); System.out.println(&quot;2. Obtener registro&quot;); System.out.println(&quot;3. Mes y Año&quot;); System.out.println(&quot;4. Días del mes&quot;); System.out.println(&quot;5. Acabar&quot;); } private static int leerOpcion() throws IOException{ System.out.print(&quot;Elige opción ....&quot;); return Integer.parseInt(teclado.readLine()); }
Uso del TAD (y III) private static void procesarOpcion(libroRegistro horas, int opcion) throws IOException{ switch(opcion){ case 1: System.out.println(&quot;Elige día&quot;); int día=Integer.parseInt(teclado.readLine()); System.out.println(&quot;¿Cuántas horas has estudiado el dia &quot;+día+ &quot;?&quot;); horas.registrar(día, Integer.parseInt(teclado.readLine())); break; case 2: System.out.print(&quot;Elige día&quot;); día=Integer.parseInt(teclado.readLine()); System.out.println(horas.obtenerEntrada(día)); break; case 3: System.out.println(&quot;Mes/Año : &quot;+horas.mes()+ &quot;/&quot;+horas.año()); break; case 4: System.out.println(&quot;Dias del mes &quot;+horas.mes()+&quot; &quot;+horas.díasMes()); } } }

Contenu connexe

En vedette

23-10-2013 El Gobernador Guillermo Padrés anunció nueva operación de la empre...
23-10-2013 El Gobernador Guillermo Padrés anunció nueva operación de la empre...23-10-2013 El Gobernador Guillermo Padrés anunció nueva operación de la empre...
23-10-2013 El Gobernador Guillermo Padrés anunció nueva operación de la empre...Guillermo Padrés Elías
 
Ahs provisional-31 st dec 2011 (6)
Ahs provisional-31 st dec 2011 (6)Ahs provisional-31 st dec 2011 (6)
Ahs provisional-31 st dec 2011 (6)kiransagam
 
Diagrama de gantt_504 administracion
Diagrama de gantt_504 administracionDiagrama de gantt_504 administracion
Diagrama de gantt_504 administracionelsy liseth galindo
 
Diprocave presentacion
Diprocave   presentacionDiprocave   presentacion
Diprocave presentacionDavid Ugarte
 
Mandala Estado Financiero
Mandala Estado FinancieroMandala Estado Financiero
Mandala Estado FinancieroHirlys
 
Ingenieria de Metodos - Diagrama de Operaciones
Ingenieria de Metodos - Diagrama de Operaciones Ingenieria de Metodos - Diagrama de Operaciones
Ingenieria de Metodos - Diagrama de Operaciones sonyjta
 
Empresa - Concepto y Más
Empresa - Concepto y MásEmpresa - Concepto y Más
Empresa - Concepto y MásAarón I. Reyes
 
3.7 manual, balanza de comprobacion, libros
3.7 manual, balanza de comprobacion, libros3.7 manual, balanza de comprobacion, libros
3.7 manual, balanza de comprobacion, libros600582
 
Diagrama de operaciones y flujograma de despliegue caso bombagua
Diagrama de operaciones y flujograma de despliegue caso bombaguaDiagrama de operaciones y flujograma de despliegue caso bombagua
Diagrama de operaciones y flujograma de despliegue caso bombaguaDavid Ugarte
 
Accesorios inst electricas
Accesorios inst electricasAccesorios inst electricas
Accesorios inst electricasheadchiu
 
Estrategia de operaciones
Estrategia de operacionesEstrategia de operaciones
Estrategia de operacionesAmanda Becerra
 
Diagrama De Flujo
Diagrama De FlujoDiagrama De Flujo
Diagrama De FlujoAngiedepp
 
Contaduria
ContaduriaContaduria
ContaduriaKatia M
 

En vedette (20)

cOnceptualizacion
cOnceptualizacioncOnceptualizacion
cOnceptualizacion
 
23-10-2013 El Gobernador Guillermo Padrés anunció nueva operación de la empre...
23-10-2013 El Gobernador Guillermo Padrés anunció nueva operación de la empre...23-10-2013 El Gobernador Guillermo Padrés anunció nueva operación de la empre...
23-10-2013 El Gobernador Guillermo Padrés anunció nueva operación de la empre...
 
Ahs provisional-31 st dec 2011 (6)
Ahs provisional-31 st dec 2011 (6)Ahs provisional-31 st dec 2011 (6)
Ahs provisional-31 st dec 2011 (6)
 
Diagrama de gantt_504 administracion
Diagrama de gantt_504 administracionDiagrama de gantt_504 administracion
Diagrama de gantt_504 administracion
 
Definición de conceptos
Definición de conceptosDefinición de conceptos
Definición de conceptos
 
Diprocave presentacion
Diprocave   presentacionDiprocave   presentacion
Diprocave presentacion
 
Libros auxiliares
Libros auxiliaresLibros auxiliares
Libros auxiliares
 
Mandala Estado Financiero
Mandala Estado FinancieroMandala Estado Financiero
Mandala Estado Financiero
 
Ingenieria de Metodos - Diagrama de Operaciones
Ingenieria de Metodos - Diagrama de Operaciones Ingenieria de Metodos - Diagrama de Operaciones
Ingenieria de Metodos - Diagrama de Operaciones
 
Organización de una línea
Organización de una líneaOrganización de una línea
Organización de una línea
 
Empresa - Concepto y Más
Empresa - Concepto y MásEmpresa - Concepto y Más
Empresa - Concepto y Más
 
Nif A 2(Final)
Nif A 2(Final)Nif A 2(Final)
Nif A 2(Final)
 
3.7 manual, balanza de comprobacion, libros
3.7 manual, balanza de comprobacion, libros3.7 manual, balanza de comprobacion, libros
3.7 manual, balanza de comprobacion, libros
 
BALANZA DE COMPROBACIÓN
BALANZA DE COMPROBACIÓNBALANZA DE COMPROBACIÓN
BALANZA DE COMPROBACIÓN
 
Diagrama de operaciones y flujograma de despliegue caso bombagua
Diagrama de operaciones y flujograma de despliegue caso bombaguaDiagrama de operaciones y flujograma de despliegue caso bombagua
Diagrama de operaciones y flujograma de despliegue caso bombagua
 
Accesorios inst electricas
Accesorios inst electricasAccesorios inst electricas
Accesorios inst electricas
 
Estrategia de operaciones
Estrategia de operacionesEstrategia de operaciones
Estrategia de operaciones
 
Diagrama De Flujo
Diagrama De FlujoDiagrama De Flujo
Diagrama De Flujo
 
Las Cuentas
Las Cuentas Las Cuentas
Las Cuentas
 
Contaduria
ContaduriaContaduria
Contaduria
 

Similaire à Libro registro

DATA AUTOMATION.pdf
DATA AUTOMATION.pdfDATA AUTOMATION.pdf
DATA AUTOMATION.pdfHector Tineo
 
Fundamentos De Programación
Fundamentos De ProgramaciónFundamentos De Programación
Fundamentos De Programaciónudelas
 
Ejercicios oo
Ejercicios ooEjercicios oo
Ejercicios oowigido
 
Manual de Usuario - Lenguaje SQL - Clase 7.docx
Manual de Usuario - Lenguaje SQL - Clase 7.docxManual de Usuario - Lenguaje SQL - Clase 7.docx
Manual de Usuario - Lenguaje SQL - Clase 7.docxjaime_sanmartin
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilabGabriel Romero
 
Electrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoElectrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoSANTIAGO PABLO ALBERTO
 
Agregación Composición
Agregación ComposiciónAgregación Composición
Agregación ComposiciónFernando Solis
 
Agregacion composicion
Agregacion composicionAgregacion composicion
Agregacion composicionFernando Solis
 
Sesion02
Sesion02Sesion02
Sesion02Alex
 
Introduccion a las matematicas modernas ccesa007
Introduccion a las matematicas modernas ccesa007Introduccion a las matematicas modernas ccesa007
Introduccion a las matematicas modernas ccesa007Demetrio Ccesa Rayme
 
Ejercicio Diagrama Clase Codigo Metodos
Ejercicio Diagrama Clase Codigo MetodosEjercicio Diagrama Clase Codigo Metodos
Ejercicio Diagrama Clase Codigo Metodosmtemarialuisa
 
2011 clase17
2011 clase172011 clase17
2011 clase17PatriciaU
 

Similaire à Libro registro (20)

JavaScript
JavaScriptJavaScript
JavaScript
 
DATA AUTOMATION.pdf
DATA AUTOMATION.pdfDATA AUTOMATION.pdf
DATA AUTOMATION.pdf
 
Funciones de las hojas de cálculo
Funciones de las hojas de cálculoFunciones de las hojas de cálculo
Funciones de las hojas de cálculo
 
Fundamentos De Programación
Fundamentos De ProgramaciónFundamentos De Programación
Fundamentos De Programación
 
Guia 1 variables
Guia 1 variablesGuia 1 variables
Guia 1 variables
 
Ejercicios oo
Ejercicios ooEjercicios oo
Ejercicios oo
 
Manual de Usuario - Lenguaje SQL - Clase 7.docx
Manual de Usuario - Lenguaje SQL - Clase 7.docxManual de Usuario - Lenguaje SQL - Clase 7.docx
Manual de Usuario - Lenguaje SQL - Clase 7.docx
 
Temaswing
TemaswingTemaswing
Temaswing
 
Fundamentos de programación en scilab
Fundamentos de programación en scilabFundamentos de programación en scilab
Fundamentos de programación en scilab
 
Electrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoElectrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicado
 
clases y objetos
clases y objetosclases y objetos
clases y objetos
 
matlab
matlabmatlab
matlab
 
Arreglos
ArreglosArreglos
Arreglos
 
Agregación Composición
Agregación ComposiciónAgregación Composición
Agregación Composición
 
Agregacion composicion
Agregacion composicionAgregacion composicion
Agregacion composicion
 
Sesion02
Sesion02Sesion02
Sesion02
 
Arrays unidimensionales
Arrays unidimensionalesArrays unidimensionales
Arrays unidimensionales
 
Introduccion a las matematicas modernas ccesa007
Introduccion a las matematicas modernas ccesa007Introduccion a las matematicas modernas ccesa007
Introduccion a las matematicas modernas ccesa007
 
Ejercicio Diagrama Clase Codigo Metodos
Ejercicio Diagrama Clase Codigo MetodosEjercicio Diagrama Clase Codigo Metodos
Ejercicio Diagrama Clase Codigo Metodos
 
2011 clase17
2011 clase172011 clase17
2011 clase17
 

Libro registro

  • 1.  
  • 2. Enunciado Un libro de registro mensual consiste en una serie de entradas, una para cada día del mes, que pueden representar cualquier cosa: número de horas en clase, número de correos recibidos, número de cafés consumidos, etc. Realizar la especificación algebraica del TAD libro de registro mensual, incluyendo, entre otras, las operaciones de creación del libro para un mes determinado, registrar una entrada para un día determinado, consultar el registro de cierto día, proporcionar el mes del registro, el número de días del mes y el año correspondiente. Realizar la implementación de dicho TAD en JAVA
  • 3. Especificación algebraica del TAD (I) Especificación sintáctica Nombre del tipo: LIBROREGISTRO Tipos auxiliares: NATURAL, VALOR Operaciones: CREARLIBRO: NATURALxNATURAL  LIBROREGISTRO {CREALIBRO(m, a) : Crea un libro de registro correspondiente al mes m del año a} REGISTRAR: LIBROREGISTROx NATURALxVALOR  LIBROREGISTRO {REGISTRAR(l, d, v): Registra en el día d del libro l el valor v} OBTENERENTRADA: LIBROREGISTROxNATURAL  VALOR {OBTENERENTRADA(l, d): Devuelve el valor anotado en el día d del libro l } MES: LIBROREGISTRO  NATURAL {MES(l): Devuelve el mes correspondiente al libro l}
  • 4. Especificación algebraica del TAD (II) Especificación sintáctica (Cont,) MES: LIBROREGISTRO  NATURAL {MES(l): Devuelve el mes correspondiente al libro l} AÑO: LIBROREGISTRO  NATURAL {AÑO(l): Devuelve el año correspondiente al libro l} DÍASMES:LIBROREGISTRO  NATURAL {DÍASMES(l): Devuelve el número de días del mes correspondiente al libro l} Término canónico:  L  LIBROREGISTRO,  M, A  NATURAL,, L=CREALIBRO(M,A) v  L’  LIBROREGISTRO   V  VALOR,,L=REGISTRAR(L’,D,V)
  • 5. Especificación algebraica del TAD (III) Especificación semántica CONJUNTO DE GENERADORAS NO LIBRE Axiomas de EQUIVALENCIA: (EQ1) REGISTRAR(REGISTRAR(L,D,V),D’,V’)= REGISTRAR(L,D,V’), si D=D’ REGISTRAR(REGISTRAR(L,D’,V’),D,V), c.c. (EQ2) REGISTRAR(L,D,V)=Error, si D  [1,DIASMES(L)]
  • 6. Axiomas de ACCESO: (OB1) OBTENERENTRADA(CREARLIBRO(M,A),D)=Error (OB2) OBTENERENTRADA(REGISTRAR(L,D,V),D’)= V, si D=D’ OBTENERENTRADA(L,D’), c.c. (M1) MES(CREALIBRO(M,A))=M (M2) MES(REGISTRAR(L,D,V))=MES(L) (A1) AÑO(CREALIBRO(M,A))=A (A2) AÑO(REGISTRAR(L,D,V))=AÑO(L) (D1) DIASMES(CREALIBRO(M,A))=DÍAS(M) (D2) DIASMES(REGISTRAR(L,D,V))=DÍASMES(L) operación auxiliar que nos devuelve el número de días del mes que representa el número natural M, siempre y cuando M  [1,12] Especificación algebraica del TAD (IV)
  • 7. Implementación Java (I) public class libroRegistro { private int mesRegistro; private int añoRegistro; private int[] entradas; public libroRegistro(int mes, int año) { mesRegistro=mes; añoRegistro=año; entradas=new int[díasMes()]; } Representación de los valores del TAD en memoria Constructor ≡ Op. Generadora
  • 8. Implementación Java (II) public void registrar(int día, int valor){ if (día<1 || día>díasMes()) System.out.println(&quot;Día incorrecto&quot;); else entradas[día]=valor; } public int obtenerEntrada(int día){ if (día<1 || día>díasMes()){ System.out.println(&quot;Día incorrecto&quot;); return -1; } else return entradas[día]; } Op. Generadora Constructor ≡ Op. Generadora
  • 9. Implementación Java (III) public int díasMes(){ int diasmes=0; switch ( mesRegistro) { case 4: case 6: case 9: case 11:{Abr, Jun, Sept y Nov} diasmes=30; break; case 2: {Febrero}if (esBisiesto(añoRegistro)) d iasmes= 29; else diasmes= 28; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: {resto de meses} diasmes= 31; break; } // fin switch return diasmes; }
  • 10. Implementación en Java (IV) private boolean esBisiesto(int año){ if ( ( (año % 4 == 0) && ! (año % 100 == 0)) || ( (año % 400 == 0) && ! (año % 4000 == 0))) return true; else return false; } public int mes(){ return mesRegistro; } public int año(){ return añoRegistro; } }//fin de la clase libroRegistro Op. Auxiliar
  • 11. Uso del TAD (I) public class Horas { private static Scanner teclado=new Scanner(System.in); public static void main(String[] args) throws IOException{ System.out.println(&quot;Elige año para crear el libro de registros&quot;); int año=Integer.parseInt(teclado.readLine()); System.out.println(&quot;Elige mes para anotar las horas de estudio&quot;); int mes=Integer.parseInt(teclado.readLine()); libroRegistro horas=new libroRegistro(mes, año); boolean fin=false; while (!fin){ mostrarOpciones(); int o=leerOpcion(); if (o!=5) procesarOpcion(horas, o); else fin=true; } }
  • 12. Uso del TAD (II) private static void mostrarOpciones(){ System.out.println(&quot;1. Anotar entrada&quot;); System.out.println(&quot;2. Obtener registro&quot;); System.out.println(&quot;3. Mes y Año&quot;); System.out.println(&quot;4. Días del mes&quot;); System.out.println(&quot;5. Acabar&quot;); } private static int leerOpcion() throws IOException{ System.out.print(&quot;Elige opción ....&quot;); return Integer.parseInt(teclado.readLine()); }
  • 13. Uso del TAD (y III) private static void procesarOpcion(libroRegistro horas, int opcion) throws IOException{ switch(opcion){ case 1: System.out.println(&quot;Elige día&quot;); int día=Integer.parseInt(teclado.readLine()); System.out.println(&quot;¿Cuántas horas has estudiado el dia &quot;+día+ &quot;?&quot;); horas.registrar(día, Integer.parseInt(teclado.readLine())); break; case 2: System.out.print(&quot;Elige día&quot;); día=Integer.parseInt(teclado.readLine()); System.out.println(horas.obtenerEntrada(día)); break; case 3: System.out.println(&quot;Mes/Año : &quot;+horas.mes()+ &quot;/&quot;+horas.año()); break; case 4: System.out.println(&quot;Dias del mes &quot;+horas.mes()+&quot; &quot;+horas.díasMes()); } } }