Astronomiczne kodowanie - Python cz.2
-
jacek
30/01/2015
- Programowanie
- 3739 czytań 0 komentarzy
Oto prosty kod algorytmu obliczania daty Wielkanocy (święto ruchome) we wskazanym roku:
y = 2015 # podajemy dowolny rok
a = y % 19
b = int (y/100)
c = y % 100
d = int (b/4)
e = b % 4
f = int ((b+8)/25)
g = int ((b-f+1)/3)
h = (19*a+b-d-g+15) % 30
i = int (c/4)
k = c % 4
l = (32+2*e+2*i-h-k) % 7
m = int ((a+11*h+22*l)/451)
p = (h+l-7*m+114) % 31
p = (p+1)
n = int ((h+l-7*m+114)/31)
print(p,n)
Uwagi:
% - oznacza modulo czyli wynik dzielenia w postaci reszty z działania.
int - oznacza wzięcie części całkowitej i odrzucenie części ułamkowej (od integer)
# - po tym znaku wpisana treść jest tylko komentarzem
Algorytm to przepis. Tu na obliczenie daty święta ruchomego. Warto zapoznać się z istotą wyznaczania terminu tej daty.
Podczas soboru nicejskiego w 325 roku ustalono, że będzie się ją obchodzić w pierwszą niedzielę po pierwszej wiosennej pełni Księżyca. Ta skomplikowana zasada jest w istocie przełożeniem na solarny w swej naturze kalendarz juliański konkretnej daty 14 nisan z religijnego kalendarza hebrajskiego, który jest kalendarzem lunarno-solarnym. Data 14 nisan wyznacza w kalendarzu hebrajskim początek święta Paschy, wokół którego działy się wydarzenia zbawcze. Wielkanoc jest więc świętem ruchomym: może wypaść najwcześniej 22 marca, zaś najpóźniej 25 kwietnia. Z datą Wielkanocy powiązany jest termin większości ruchomych świąt ogólnochrześcijańskich i katolickich, m.in.: Środa Popielcowa, wielki post, Triduum Paschalne, Wniebowstąpienie Pańskie, Zesłanie Ducha Świętego, Boże Ciało i inne. Po wprowadzeniu kalendarza gregoriańskiego znów pojawiły się odmienności: w prawosławiu Wielkanoc obchodzi się bowiem zgodnie z kalendarzem juliańskim.
Św. Pius X próbował ustalić stałą datę Wielkanocy. W 1913 r. został rozesłany do biskupów stosowny kwestionariusz. Większość odpowiedzi była przychylna proponowanej zmianie, jednak 9 grudnia tego samego roku projekt oprotestowała Kongregacja Rytów, argumentując, że groziłoby to „naturalizacją wielkiego wydarzenia, jakim było Zmartwychwstanie Chrystusa”[6].
Ostatnio niektóre środowiska chrześcijańskie postulują ustanowienie Wielkanocy, jako święta niezależnego od faz księżyca. Między innymi proponuje się obchodzenie Wielkanocy zawsze w drugą niedzielę kwietnia, czyli od 8. do 14. Inna opcja to propozycja utrzymywania siedmiu niedziel pomiędzy Świętem Trzech Króli a Środą Popielcową. Daje ona również termin od 8. do 14. kwietnia w roku zwykłym, a w przestępnym od 7. do 13. [WikiPedia]
Jak widzimy powyżej ustalenie terminu w jakim przypadnie to święto wymaga uwzględniania kilku czynników. Do tego celu komputer nadaje sie wspaniale. ale nasz kod po uruchomieniu w interpreterze Pythona wyświetla dwie liczby. Możemy zmienić tak powyższy kod by wyświetlał wynik nie w postaci cyfr ale by miesiące nazywał słownie ich nazwą.
Aby to uzyskać musimy zastosować funkcję warunkową w postaci if, która pozwoli wykonać działanie jeśli będzie spełniony określony przez nas warunek: jeśli wynikiem będzie cyfra 3, to napisz marzec w innym przypadku napisz kwiecień - gdyż Wielkanoc przypada w marcu lub kwietniu.
Jak to zapisać w postaci kodu Python'a?
if warunek:
instrukcje
else:
instrukcje
Co w naszym przypadku da treść tej części kodu:
if n==3:
miesiac="Marca" # miesiąc wielkiej nocy
else:
miesiac="Kwietnia"
print('Wielkanoc przypada: ',p,miesiac,y)
a cały kod programu wyglądać będzie tak:
y = 2015 # podajemy dowolny rok.
a = y % 19
b = int (y/100)
c = y % 100
d = int (b/4)
e = b % 4
f = int ((b+8)/25)
g = int ((b-f+1)/3)
h = (19*a+b-d-g+15) % 30
i = int (c/4)
k = c % 4
l = (32+2*e+2*i-h-k) % 7
m = int ((a+11*h+22*l)/451)
p = (h+l-7*m+114) % 31
p = (p+1)
n = int ((h+l-7*m+114)/31)
# print(p,n)
if n==3:
miesiac="Marca" # miesiąc wielkiej nocy
else:
miesiac="Kwietnia"
print('Wielkanoc przypada: ',p,miesiac,y)
W ten sposób poznaliśmy konstrukcję warunkową if ... else. Jest ich oczywiście więcej i kolejne wprowadzimy w kolejnych prezentacjach. Jak widzisz samo kodowanie nie jest jakieś specjalne trudne. Komputery wspaniale nadają się do zadań związanych z obliczeniami. Idzie im to zdecydowanie szybciej niż nam.
Na kolejnym spotkaniu poznamy obliczenia Daty Juliańskiej oraz wykorzystamy ją do obliczenia fazy księżyca. Zapraszamy na kolejne spotkanie z kodowania astronomicznego.
Aby uruchomić powyższy kod pobierz program Python (dla Windows 32 bity) lub Python (dla Windows 64 bity). Zapoznaj się tez z poniższym przykładem rozpoczęcia kodowania w Pythonie.
y = 2015 # podajemy dowolny rok
a = y % 19
b = int (y/100)
c = y % 100
d = int (b/4)
e = b % 4
f = int ((b+8)/25)
g = int ((b-f+1)/3)
h = (19*a+b-d-g+15) % 30
i = int (c/4)
k = c % 4
l = (32+2*e+2*i-h-k) % 7
m = int ((a+11*h+22*l)/451)
p = (h+l-7*m+114) % 31
p = (p+1)
n = int ((h+l-7*m+114)/31)
print(p,n)
Uwagi:
% - oznacza modulo czyli wynik dzielenia w postaci reszty z działania.
int - oznacza wzięcie części całkowitej i odrzucenie części ułamkowej (od integer)
# - po tym znaku wpisana treść jest tylko komentarzem
Algorytm to przepis. Tu na obliczenie daty święta ruchomego. Warto zapoznać się z istotą wyznaczania terminu tej daty.
Podczas soboru nicejskiego w 325 roku ustalono, że będzie się ją obchodzić w pierwszą niedzielę po pierwszej wiosennej pełni Księżyca. Ta skomplikowana zasada jest w istocie przełożeniem na solarny w swej naturze kalendarz juliański konkretnej daty 14 nisan z religijnego kalendarza hebrajskiego, który jest kalendarzem lunarno-solarnym. Data 14 nisan wyznacza w kalendarzu hebrajskim początek święta Paschy, wokół którego działy się wydarzenia zbawcze. Wielkanoc jest więc świętem ruchomym: może wypaść najwcześniej 22 marca, zaś najpóźniej 25 kwietnia. Z datą Wielkanocy powiązany jest termin większości ruchomych świąt ogólnochrześcijańskich i katolickich, m.in.: Środa Popielcowa, wielki post, Triduum Paschalne, Wniebowstąpienie Pańskie, Zesłanie Ducha Świętego, Boże Ciało i inne. Po wprowadzeniu kalendarza gregoriańskiego znów pojawiły się odmienności: w prawosławiu Wielkanoc obchodzi się bowiem zgodnie z kalendarzem juliańskim.
Św. Pius X próbował ustalić stałą datę Wielkanocy. W 1913 r. został rozesłany do biskupów stosowny kwestionariusz. Większość odpowiedzi była przychylna proponowanej zmianie, jednak 9 grudnia tego samego roku projekt oprotestowała Kongregacja Rytów, argumentując, że groziłoby to „naturalizacją wielkiego wydarzenia, jakim było Zmartwychwstanie Chrystusa”[6].
Ostatnio niektóre środowiska chrześcijańskie postulują ustanowienie Wielkanocy, jako święta niezależnego od faz księżyca. Między innymi proponuje się obchodzenie Wielkanocy zawsze w drugą niedzielę kwietnia, czyli od 8. do 14. Inna opcja to propozycja utrzymywania siedmiu niedziel pomiędzy Świętem Trzech Króli a Środą Popielcową. Daje ona również termin od 8. do 14. kwietnia w roku zwykłym, a w przestępnym od 7. do 13. [WikiPedia]
Jak widzimy powyżej ustalenie terminu w jakim przypadnie to święto wymaga uwzględniania kilku czynników. Do tego celu komputer nadaje sie wspaniale. ale nasz kod po uruchomieniu w interpreterze Pythona wyświetla dwie liczby. Możemy zmienić tak powyższy kod by wyświetlał wynik nie w postaci cyfr ale by miesiące nazywał słownie ich nazwą.
Aby to uzyskać musimy zastosować funkcję warunkową w postaci if, która pozwoli wykonać działanie jeśli będzie spełniony określony przez nas warunek: jeśli wynikiem będzie cyfra 3, to napisz marzec w innym przypadku napisz kwiecień - gdyż Wielkanoc przypada w marcu lub kwietniu.
Jak to zapisać w postaci kodu Python'a?
if warunek:
instrukcje
else:
instrukcje
Co w naszym przypadku da treść tej części kodu:
if n==3:
miesiac="Marca" # miesiąc wielkiej nocy
else:
miesiac="Kwietnia"
print('Wielkanoc przypada: ',p,miesiac,y)
a cały kod programu wyglądać będzie tak:
y = 2015 # podajemy dowolny rok.
a = y % 19
b = int (y/100)
c = y % 100
d = int (b/4)
e = b % 4
f = int ((b+8)/25)
g = int ((b-f+1)/3)
h = (19*a+b-d-g+15) % 30
i = int (c/4)
k = c % 4
l = (32+2*e+2*i-h-k) % 7
m = int ((a+11*h+22*l)/451)
p = (h+l-7*m+114) % 31
p = (p+1)
n = int ((h+l-7*m+114)/31)
# print(p,n)
if n==3:
miesiac="Marca" # miesiąc wielkiej nocy
else:
miesiac="Kwietnia"
print('Wielkanoc przypada: ',p,miesiac,y)
W ten sposób poznaliśmy konstrukcję warunkową if ... else. Jest ich oczywiście więcej i kolejne wprowadzimy w kolejnych prezentacjach. Jak widzisz samo kodowanie nie jest jakieś specjalne trudne. Komputery wspaniale nadają się do zadań związanych z obliczeniami. Idzie im to zdecydowanie szybciej niż nam.
Na kolejnym spotkaniu poznamy obliczenia Daty Juliańskiej oraz wykorzystamy ją do obliczenia fazy księżyca. Zapraszamy na kolejne spotkanie z kodowania astronomicznego.
Aby uruchomić powyższy kod pobierz program Python (dla Windows 32 bity) lub Python (dla Windows 64 bity). Zapoznaj się tez z poniższym przykładem rozpoczęcia kodowania w Pythonie.
Dodaj komentarz
Zaloguj się, aby móc dodać komentarz.
Oceny
Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się , żeby móc zagłosować.
Zaloguj się , żeby móc zagłosować.
Brak ocen. Może czas dodać swoją?