Professional Documents
Culture Documents
Algoritmo bisiesto
De Wikipedia, la enciclopedia libre Un ao es bisiesto si es divisible entre 4, excepto aquellos divisibles entre 100, los cuales deben ser divisibles entre 400 para ser bisiestos. En programacin, el algoritmo para calcular si un ao es bisiesto es un algoritmo til para la realizacin de calendarios. Considrese las siguientes proposiciones o enunciados lgicos: p: Es divisible entre 4 q: Es divisible entre 100 r: Es divisible entre 400 La frmula lgica que se suele usar para establecer si un ao es bisiesto sera cuando [p y q] [r] es verdadera, pero esta otra p y [q r] sera ms eficiente.
Contenido
1 Diagrama de flujo 2 Implementaciones en diversos lenguajes de programacin 2.1 Mtodo programado en Pascal 2.2 Mtodo programado en Fortran90 2.3 Mtodo programado en Lisp 2.4 Mtodo programado en AS3 2.5 Mtodo programado en PHP (opcin 1) 2.6 Mtodo programado en PHP (opcin 2) 2.7 Mtodo programado en Delphi 5 2.8 Mtodo programando en C 2.9 Mtodo programando en C++ 2.10 Mtodo programado en C# 2.11 Mtodo programado en ASP/VB 2.12 Mtodo programado en PL/I 2.13 Mtodo programado en Ruby 2.14 Mtodo programado en Visual FoxPro (opcin 1) 2.15 Mtodo programado en Visual FoxPro (opcin 2) 2.16 Mtodo programado en Python 2.17 Mtodo programado en Java 2.18 Mtodo programado en VBA, tambin vlido para VB y ASP 2.19 Mtodo programado en Assembly Language (ASM Intel x86) 2.20 Mtodo programado en Javascript 2.21 Mtodo programado en Perl 2.22 Mtodo programado es.wikipedia.org/wiki/Algoritmo_bisiesto en Haskell
1/9
15-04-2011
Diagrama de flujo
es.wikipedia.org/wiki/Algoritmo_bisiesto
2/9
15-04-2011
program bisiestopr implicit none integer :: a write(*,*) "Dime un ao:" read(*,*) a if (esbisiesto(a)) then write(*,*) "El ao es bisiesto" else write(*,*) "El ao no es bisiesto" endif contains function esbisiesto(an) logical :: esbisiesto integer :: an if (mod(an,4) == 0 .and. mod(an,100) /= 0 .or. mod(an,400)==0) then esbisiesto=.true. else esbisiesto=.false. endif end function esbisiesto end program bisiestopr
es.wikipedia.org/wiki/Algoritmo_bisiesto
3/9
15-04-2011
function esBisiesto($year=NULL) { $year = ($year==NULL)? date('Y'):$year; return ( ($year%4 == 0 && $year%100 != 0) || $year%400 == 0 ); // devolvemos true si e }
function esBisiesto($year=NULL) { return checkdate(2, 29, ($year==NULL)? date('Y'):$year); // devolvemos true si es bisi }
Como todo lenguaje de programacin de alto nivel, Delphi tiene una funcin para resolver lo anterior: IsLeapYear (A), que es una funcin Booleana cuyo valor True=Bisiesto, False=No bisiesto.
Mtodo programando en C
#include <stdio.h> int atoi (const char * string); int isLeap(int year) { return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); } int main(int argc, char** argv) { if (isLeap(atoi(argv[1]))) printf("Ao bisiesto.\n"); else printf("Ao NO bisiesto.\n"); return 0; }
15-04-2011
#include <iostream> bool esBisiesto(int year) { return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); } int main() { int anno; std::cout << "Ao a consultar: "; std::cin >> anno; std::cout << "El ao " << anno << (esBisiesto(anno) ? "" : " no") << " es bisiesto." return 0; }
Mtodo programado en C#
static void Main(string[] args) { int ao; Console.WriteLine("Ingrese ao"); ao = int.Parse(Console.ReadLine()); if (ao % 4 == 0 && ao % 100 != 0 || ao % 400 == 0) { Console.WriteLine("El ao {0} es bisiesto", ao); } else { Console.WriteLine("El ao {0} no es bisiesto", ao); } Console.ReadLine(); }
15-04-2011
COMPROBAR_ANY_BISIESTO: PROC(ANY); DCL ANY PIC'(4)9'; DCL NUMANY BIN FIXED(15) INIT (0); DCL MODANY BIN FIXED(15) INIT (0); NUMANY = ANY; IF MOD(NUMANY,4) = 0 THEN DO; MODANY = MOD(NUMANY,400); MODANY = 100 IF | MODANY = 200 | MODANY = 300 THEN TIPANY = 0; ELSE TIPANY = 1; END; ELSE TIPANY = 0; END COMPROBAR_ANY_BISIESTO;
es.wikipedia.org/wiki/Algoritmo_bisiesto
6/9
15-04-2011
Al igual que en Delphi, Python tambin tiene una funcin para averiguar si un ao es bisiesto o no:
import calendar def esBisiesto(year): return calendar.isleap(year)
es.wikipedia.org/wiki/Algoritmo_bisiesto
7/9
15-04-2011
;Este es un macro que a partir del dato ingresado en el parametro PrAnio define si dicho a ;ATENCION: El parametro PrAnio deber ser del tipo DW Bisiesto Macro PrAnio, Bisiesto Local Evaluar, Evaluar2, EsBisiesto, NoBisiesto, Salir Mov AX, PrAnio Mov DX, 0000h Mov BX, 0190h DIV BX CMP DX, 0000h ;Si es igua JE EsBisiesto ;Salta si l JNE Evaluar Evaluar: Mov AX, PrAnio Mov DX, 0000h Mov BX, 0004h Div BX CMP DX, 0000h ;Salta a la JE Evaluar2 ;Si el resi JNE NoBisiesto Evaluar2: Mov DX, 0000h Mov AX, PrAnio Mov BX, 0064h Div BX CMP DX, 0000h ;Si el resi JNE EsBisiesto ;Si el resi JE NoBisiesto EsBisiesto: ;Define el a Mov Bisiesto, 01h ;Salta al f JMP Salir NoBisiesto: ;Define el a Mov Bisiesto, 00h ;Salta al f JMP Salir Salir: EndM
es.wikipedia.org/wiki/Algoritmo_bisiesto
8/9
15-04-2011
sub EsBisiesto{ my $Anyo=shift; my $Bisiesto=0; if($Anyo=~/^\d+$/){ if (!($Anyo % 400)){$Bisiesto=1} elsif(!($Anyo % 100)){$Bisiesto=0} elsif(!($Anyo % 4 )){$Bisiesto=1} } return $Bisiesto; }
Vase tambin
Ao bisiesto 29 de febrero
Enlaces externos
PHP: Mtodo GetDate (http://cl.php.net/getdate) PHP: Mtodo checkdate (http://www.php.net/manual/es/function.checkdate.php) Obtenido de http://es.wikipedia.org/wiki/Algoritmo_bisiesto Categoras: Wikipedia:Trasladar a Wikilibros | Algoritmos | Calendario Esta pgina fue modificada por ltima vez el 17 mar 2011, a las 22:47. El texto est disponible bajo la Licencia Creative Commons Atribucin Compartir Igual 3.0; podran ser aplicables clusulas adicionales. Lee los trminos de uso para ms informacin.
es.wikipedia.org/wiki/Algoritmo_bisiesto
9/9