{"id":173,"date":"2010-04-04T09:57:00","date_gmt":"2010-04-04T09:57:00","guid":{"rendered":"http:\/\/e-ware.org\/blog\/?p=173"},"modified":"2010-04-04T09:57:00","modified_gmt":"2010-04-04T09:57:00","slug":"algoritmo-calcolo-della-pasqua","status":"publish","type":"post","link":"http:\/\/e-ware.org\/blog\/algoritmo-calcolo-della-pasqua\/","title":{"rendered":"Algoritmo calcolo della pasqua"},"content":{"rendered":"<div><span><br \/><\/span><\/div>\n<div><span>Oggi \u00e8 pasqua e quale regalo migliore avrei potuto fare agli amici programmatori se non spiegare un algoritmo con il quale calcolare la tanto misteriosa data bellerina?<\/span><\/div>\n<div><span>Di anno in anno, infatti, la data di questa festivit\u00e0 \u00e8 sempre un mistero ed \u00e8 difficile conoscere qualcuno che sappia con largo anticipo quale sar\u00e0 la domenica incriminata. Oggi vi vengo in aiuto e vedremo insieme un vecchio algoritmo che serve ad ovviare a tale mancanza.<\/span><\/div>\n<div><span><a href=\"http:\/\/3.bp.blogspot.com\/_Tg1CIil2fDM\/S7hxHYybqeI\/AAAAAAAAAgo\/GWFV0xfyEmA\/s1600\/codice_pasqua.jpeg\"><\/a><br \/><\/span><\/div>\n<div><span>Il codice che prenderemo in esame si rif\u00e0 ad un <b>algoritmo<\/b> ideato dal matematico,fisico e astronomo <b>Carl Friedrich Gauss<\/b>. Il listato che presenter\u00f2 sara uno pseudo-codice cos\u00ec da far in modo che ognuno possa convertirlo con facilit\u00e0 nel proprio linguaggio preferito.<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Prima di addentrarci nel vivo della programmazione bisogna fissare i seguenti punti:<\/span><\/div>\n<div>\n<ul>\n<li><span>Con <b>MOD<\/b> sar\u00e0 indicata quell&#8217;operazione matematica che restituisce il resto di una divisione. Ad esempio 15 MOD 2 = 1 poich\u00e8 15:2 = 7 con resto 1;<\/span><\/li>\n<li><span>Tutti i valori trattati sono interi;<\/span><\/li>\n<li><span>I mesi nei quali \u00e8 possibile che ricada la data cercata sono Marzo e Aprile;<\/span><\/li>\n<li><span>Con Y si indica l&#8217;anno di cui si vuole calcolare la data di Pasqua.<\/span><\/li>\n<\/ul>\n<\/div>\n<div><span>Bene!Detto ci\u00f2, iniziamo&#8230;<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Si calcolano prima i tre valori <b>A<\/b>, <b>B<\/b> e<b> C<\/b> nel seguente modo:<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span><i>A = Y MOD 19<\/i><\/span><\/div>\n<div><span><i>B = Y MOD 4<\/i><\/span><\/div>\n<div><span><i>C = Y MOD 7<\/i><\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Fatto ci\u00f2 si passa i valori <b>D<\/b> ed <b>E<\/b>:<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span><i>D = (19 * A + M) MOD 30<\/i><\/span><\/div>\n<div><span><i>E = (2 * B + 4* C + 6 * D + N) MOD 7<\/i><\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Come si vede nelle formule scritte sopra, appaiono due valori che non conosciamo: <b>M<\/b> ed <b>N<\/b>. Tali valori sono delle semplici costanti intere che devono essere prelevate dal seguente schema in base all&#8217;anno Y in questione:<\/span><\/div>\n<div><\/div>\n<div><span><\/p>\n<table border=\"1\" cellpadding=\"3\" cellspacing=\"0\">\n<tbody>\n<tr>\n<th>Anni<\/th>\n<th><i>M<\/i><\/th>\n<th><i>N<\/i><\/th>\n<\/tr>\n<tr>\n<td>1583-1699<\/td>\n<td>22<\/td>\n<td>2<\/td>\n<\/tr>\n<tr>\n<td>1700-1799<\/td>\n<td>23<\/td>\n<td>3<\/td>\n<\/tr>\n<tr>\n<td>1800-1899<\/td>\n<td>23<\/td>\n<td>4<\/td>\n<\/tr>\n<tr>\n<td>1900-2099<\/td>\n<td>24<\/td>\n<td>5<\/td>\n<\/tr>\n<tr>\n<td>2100-2199<\/td>\n<td>24<\/td>\n<td>6<\/td>\n<\/tr>\n<tr>\n<td>2200-2299<\/td>\n<td>25<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>2300-2399<\/td>\n<td>26<\/td>\n<td>1<\/td>\n<\/tr>\n<tr>\n<td>2400-2499<\/td>\n<td>25<\/td>\n<td>1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/span><\/div>\n<div><\/div>\n<div><span>Una volta eseguiti i calcoli di D ed E si analizza la loro somma. Se<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span><i>(D + E) <\/i><\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>allora la Pasqua cade il giorno<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span><i>(D + E + 22)<\/i><\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>del mese di <b>Marzo<\/b>, altrimenti essa cade il giorno<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span><i>(D + E &#8211; 9)<\/i><\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>del mese di <b>Aprile<\/b>.<\/span><\/div>\n<div><span><br \/><\/span><\/div>\n<div><span>Vediamo ora il listato completo in pseudo-codice<\/span><\/div>\n<div><\/div>\n<div><a href=\"http:\/\/3.bp.blogspot.com\/_Tg1CIil2fDM\/S7hxkGngYkI\/AAAAAAAAAgw\/TuoQGmpEhj0\/s1600\/codice_pasqua.jpeg\"><img decoding=\"async\" src=\"http:\/\/3.bp.blogspot.com\/_Tg1CIil2fDM\/S7hxkGngYkI\/AAAAAAAAAgw\/TuoQGmpEhj0\/s400\/codice_pasqua.jpeg\" alt=\"\" border=\"0\"><\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Oggi \u00e8 pasqua e quale regalo migliore avrei potuto fare agli amici programmatori se non spiegare un algoritmo con il quale calcolare la tanto misteriosa data bellerina? Di anno in anno, infatti, la data di questa festivit\u00e0 \u00e8 sempre un mistero ed \u00e8 difficile conoscere qualcuno che sappia con largo anticipo quale sar\u00e0 la domenica [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30,52,4],"tags":[],"class_list":["post-173","post","type-post","status-publish","format-standard","hentry","category-algoritmi","category-didattica","category-opencode"],"views":3582,"_links":{"self":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/comments?post=173"}],"version-history":[{"count":0,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/173\/revisions"}],"wp:attachment":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/media?parent=173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/categories?post=173"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/tags?post=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}