You are on page 1of 9

15-04-2011

Algoritmo bisiesto - Wikipedia, la encicl

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

Algoritmo bisiesto - Wikipedia, la encicl

2.22 Mtodo programado en Haskell 3 Vase tambin 4 Enlaces externos

Diagrama de flujo

Implementaciones en diversos lenguajes de programacin


Mtodo programado en Pascal
function esBisiesto(ano:integer):boolean; begin esBisiesto := (ano MOD 4 = 0) AND ((ano MOD 100 <> 0) OR (ano MOD 400 = 0)); end;

Mtodo programado en Fortran90

es.wikipedia.org/wiki/Algoritmo_bisiesto

2/9

15-04-2011

Algoritmo bisiesto - Wikipedia, la encicl

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

Mtodo programado en Lisp


(defun leap-p (year) (or (and (zerop (mod year 4)) (not (zerop (mod year 100)))) (zerop (mod year 400))))

Mtodo programado en AS3


var today:Date = new Date(); function esBisiesto(year:Number):Boolean { return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); } //uso: var yearactual=String(today.getFullYear()); var annoActual=Number(yearactual); bisiesto=esBisiesto(annoActual); // respuesta: true o false

Mtodo programado en PHP (opcin 1)

es.wikipedia.org/wiki/Algoritmo_bisiesto

3/9

15-04-2011

Algoritmo bisiesto - Wikipedia, la encicl

function esBisiesto($year=NULL) { $year = ($year==NULL)? date('Y'):$year; return ( ($year%4 == 0 && $year%100 != 0) || $year%400 == 0 ); // devolvemos true si e }

Mtodo programado en PHP (opcin 2)

function esBisiesto($year=NULL) { return checkdate(2, 29, ($year==NULL)? date('Y'):$year); // devolvemos true si es bisi }

Mtodo programado en Delphi 5


Sea A una variable Integer = Ao a analizar. Sea B una variable Booleana cuyo valor True=Bisiesto, False=No bisiesto.
If A mod 4=0 then If A mod 100=0 then If A mod 400=0 then B:=True else B:=False else B:=True else B:=False

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

Mtodo programando en C++


es.wikipedia.org/wiki/Algoritmo_bisiesto 4/9

15-04-2011

Algoritmo bisiesto - Wikipedia, la encicl

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

Mtodo programado en ASP/VB


function bisiesto(ano) if ( (ano mod 4 = 0) and (ano mod 100 <> 0) ) or (ano mod 400 = 0) then bisiesto = true 'Es bisiesto else bisiesto = false 'No es bisiesto end if end function

Mtodo programado en PL/I


es.wikipedia.org/wiki/Algoritmo_bisiesto 5/9

15-04-2011

Algoritmo bisiesto - Wikipedia, la encicl

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;

Mtodo programado en Ruby

def es_bisiesto(anio);return (anio%4==0 && anio%100!=0)||(anio%400==0);end; #true si es bi

Mtodo programado en Visual FoxPro (opcin 1)


FUNCTION EsBisiesto(tnAnio) RETURN (tnAnio%4 = 0 AND tnAnio%100 # 0) OR tnAnio%400 = 0 ENDFUNC

Mtodo programado en Visual FoxPro (opcin 2)


FUNCTION EsBisiesto(tnAnio) RETURN NOT EMPTY(DATE(tnAnio, 02, 29)) ENDFUNC

Mtodo programado en Python


def esBisiesto(year): return year % 4 == 0 and year % 100 != 0 or year % 400 == 0

es.wikipedia.org/wiki/Algoritmo_bisiesto

6/9

15-04-2011

Algoritmo bisiesto - Wikipedia, la encicl

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)

Mtodo programado en Java


public boolean isLeap(int year) { return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); }

Mtodo programado en VBA, tambin vlido para VB y ASP


Public Function EsBisiesto(anio As Long) As Boolean ' devuelve true si anio es bisiesto If (anio Mod 400 = 0) Then EsBisiesto = True Else EsBisiesto = ((anio Mod 4) = 0) And ((anio Mod 100) <> 0) End If End Function

Mtodo programado en Assembly Language (ASM Intel x86)

es.wikipedia.org/wiki/Algoritmo_bisiesto

7/9

15-04-2011

Algoritmo bisiesto - Wikipedia, la encicl

;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

Mtodo programado en Javascript


// Funcin que determina si un ao es bisiesto o no // beta3designs 2009 function es_bisiesto(year){ return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? true : false }

Mtodo programado en Perl

es.wikipedia.org/wiki/Algoritmo_bisiesto

8/9

15-04-2011

Algoritmo bisiesto - Wikipedia, la encicl

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

Mtodo programado en Haskell


esBisiesto::Int->Bool esBisiesto x =( mod x 400==0) || (mod x 4==0) && not (mod x 100==0)

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

You might also like