00000001 - Jednoduchá kalkulačka
00000010 - Odebírání zápalek
00000100 - Gregoriánský kalendář
00001000 - Hádání kombinace
00010000 - Vigenérova šifra
00100000 - Hledání min
01000000 - Házení kostkou
10000000 - Conway's Game of Life
Výzva všem místním programátorům a programátorkám!
Letos v prosinci oslavíme 200. výročí narození první počítačové programátorky Ady Lovelace, dlouholeté spolupracovnice anglického filozofa a matematika Charlese Babbage, tvůrce prvního programovatelného číslicového počítače.
Ada byla sice dcera básníka, ale místo říkanek a vyšívání, běžných kratochvílí mladých dam té doby, jí zajímala spíš matematika a přírodní vědy, díky čemuž později pochopila Babbageovu práci mnohem lépe než spousta soudobých vzdělanců. Dokonce se jí připisuje nejdůležitější objev, skok podmíněný výsledkem předchozí operace, což umožňuje v programu vytvářet větvení a cykly. Teprve tím vzniklo skutečné programování a skutečné programy, ne jenom vyměnitelný dírkovaný kotouč do hrací skříně.
Do dnešních dnů se dochoval první počítačový program, počítající Bernoulliho čísla, a sotva si někdo dokáže představit jak těžké bylo vymyslet a zakódovat algoritmus, ovládající přímo páky, spojky, táhla a ozubená kola mechanického počítacího stroje, navíc bez možnosti vyzkoušet ho na skutečném hardwaru. Analytical Engine, jak se onen počítač nazýval, byl totiž tak složitý, že dodnes nebyl postaven, vznikly jenom jeho malé části pro ověření funkce. V konečném výsledku měl mít přibližně velikost fotbalového hřiště a jako pohon parní stroj. Byl to skutečně těžký hardware, a stejně těžká byla i práce s ním, obzvlášť pro křehkou ženu v první polovině devatenáctého století.
Dodnes je programování tvrdá práce, ale i umění, a také hra. Pojďme si tedy hrát! Právě teď začíná
MALÁ HRA O VELKÉHO BAJTA
Hrát může úplně každý kdo má chuť, od čerstvě vylíhnutých jednobitových pulců, kteří se chtějí pochlubit tím co se zrovna naučili, až po děrnou páskou zabandážované digitální mumie, ukazující že ještě všechno nezapomněly. Pravidla jsou jednoduchá:
- Každý hráč (nebo tým) musí přinést vlastní výtvor, program který vymyslel a sepsal sám, bez cizí pomoci. Plagiátorům a podvodníkům bude smazán harddisk a sežere je růžový dinosaurus.
- Je třeba ukázat zdrojový kód v jakémkoliv programovacím jazyce pro jakoukoliv platformu, nikoliv hotový zkompilovaný program, v případě nutnosti dodat i návod na zprovoznění a získání všeho potřebného, třeba použitých knihoven.
- Aspoň jeden další účastník hry musí program úspěšně rozběhat a vyzkoušet, a sdělit nám svůj názor na něj, hodnocení, připomínky, kritiku... A hlavně zjistit jestli funguje.
Každý výpočet musí začít od nejnižšího místa bajtu, a stejně začne naše hra, od nultého bitu úplně vpravo: 00000001
Nejdřív malý náhled do historie. Slovo computer je mnohem starší než ty kouzelné krabičky které se jím nazývají dnes. Původně znamenalo název povolání, označovalo člověka provádějícího výpočty. Anglicky computer, francouzsky ordinateur, německy rechner, česky počtář. Byla to těžká řehole, podobně jako opisování knih před vynálezem knihtisku, a vznikalo přitom mnoho chyb, někdy i s fatálními důsledky. Například špatné údaje v navigačních tabulkách měly na svědomí řadu potopených nebo ztracených lodí.
Proto byla snaha jejich práci zmechanizovat, zjednodušit, a zamezit tak vzniku chyb způsobeným lidským faktorem, to byl i důvod pro který Charles Babbage začal konstruovat automatické počítací stroje. Zpočátku měli počtáři a počtářky jenom jednoduché pomůcky, různá počítadla jako je abakus nebo sčot, časem k nim přibyly kalkulátory, což byly nejdřív knihy předpočítaných tabulek nejčastěji používaných operací, později mechanické počítačky, které se časem vyvinuly do elektromechanických a ještě později elektronických přístrojů.
Úkol pro tento měsíc je naprogramovat právě takový kalkulátor, zvládající čtyři základní aritmetické operace: sčítání, odčítání, násobení, dělení, a to co možná nejjednodušším způsobem. Fantazii se meze nekladou, jestli se někdo bude chtít pochlubit vlastním interpretem BASICu, FORTHu, LISPu, nebo něčím podobným, má samozřejmě také možnost. Ale jednoduchá kalkulačka úplně postačí, program vyhoví zadání když zvládne vypočítat takovéhle a podobné příklady:
Kód: Vybrat vše
3 + 18
3 - 18
4 * 9
56 / 7
Tady je ukázkové řešení pro inspiraci:
http://www.youtube.com/watch?v=3LQI9FRBbTo
Kdo nevlastní ZX Spectrum nebo některý kompatibilní počítač jako byly Didaktiky, může pro vyzkoušení použít emulátor, třeba tenhle běžící přímo v prohlížeči: http://torinak.com/qaop