Skip to content

Programovacie techniky #1 ‐ Hello, World! Mystery Cache

Hidden : 2/15/2021
Difficulty:
4 out of 5
Terrain:
4 out of 5

Size: Size:   regular (regular)

Join now to view geocache location details. It's free!

Watch

How Geocaching Works

Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.

Geocache Description:


Táto séria kešiek Vás postupne prevedie programovacím prostredím od bežného PC možno až po techniky a jazyk využívaný pri kódovaní (ako progravovanie nazývame) mikročipov, displejov a možno aj robotov.

 

Programovanie je moje hobby so začiatkami v 1984 roku. V tom čase som začínal základnú školu a moje prvé pokusy v programovaní boli v jazyku Basic na počítači mojho otca - Sinclair ZXSpectrum (prezývaný gumák kvôli svojej klávesnici). Pamäť tejto mašiny bola 48kB, čo je pre predstavu stotina dĺžky jedinej pesničky vo formáte mp3. Poďte teda somnou nahliadnuť do softvérového sveta tak ako digitálne mašiny uvažujú! Rád by som to poňal ako sériu, no nakoľko som pracujúci živiteľ rodiny s deťmi, kešky budem pridávať podľa časových možností. Hneď z úvodu Vám prajem veľa zábavy pri lúštení i odlove.

 

Takmer každá literatúra o programovaní začína funkciou "Hello, World!", rovnako aj naša séria začne týmto príkladom. Programovacích jazykov je celá škála, no mne najbližší je jazyk C, resp. rozšírený C++ a jeho objektovo orientované verzie Visual C++, resp.C#.

 

//funkciou nazývame časť programu, ktorú vieme opakovane volať s parametrami a jej výstupom môže byť požadovaný výsledok a/alebo úspešnosť jej vykonania

 

V tejto prvej keške sa v listingu zatiaľ nebudeme venovať pre laika zložitým podrobnostiam. Povieme si ale niečo z histórie. Kto chce, môže pokračovať rovno na lúštenie.

 

História:

Programovací jazyk C je vznikol začiatkom sedemdesiatych rokov. Pôvodne bol určený pre použitie na operačných systémoch UNIX. Odvtedy sa rozšíril na mnohé iné operačné systémy a je jedným z najpoužívanejších programovacích jazykov. C sa cení vďaka jeho efektívnosti a je najpopulárnejším jazykom na písanie systémového softvéru, hoci sa používa aj na tvorbu aplikačného softvéru. Tiež sa bežne používa pri výuke programovania, hoci nie je určený pre úplných začiatočníkov.

 

Začiatky vývoja C siahajú do AT&T v Bellovych laboratóriách medzi rokmi 1969 a 1973 Dennisom Ritchie. Pomenovanie "C" dostal, pretože mnohé vlastnosti boli odvodené od skorišieho jazyka zvaného "B".

 

/*Legenda o vzniku jazyka:

vývoj jazyka C bol výsledkom túžby programátorov hrať Spacewar. Hrávali ju na mainframe spoločnosti Bell, ale keďže býval preťažený a musel slúžiť asi 100 používateľom, Thompson a Ritchie zistili, že nemali dostatočnú kontrolu nad hviezdnou loďou aby sa mohli vyhýbať kolíziám s asteroidmi. Tak sa rozhodli hru portovať na nevyužívaný PDP-7. Ten ale nemal operačný systém, tak sa rozhodli jeden vytvoriť. Nakoniec sa rozhodli tento operačný systém portovať na PDP-11, bolo to ale obťažne, pretože všetok kód bol v assembléri. Rozhodli sa použiť portabilný jazyk vyššej úrovne, aby bolo možné operačný systém jednoducho portovať z jedného počítača na druhý. Skúšali použiť B, ale tomu chýbala funkcionalita, aby mohol využiť niektoré vyspelé schopnosti PDP-11. Tak sa rozhodli vytvoriť nový jazyk C - jednoduché no nie?*/

 

Koncom sedemdesiatych rokov začalo C nahrádzať programovací jazyk BASIC ako vedúci programovací jazyk pre mikropočítače. Počas osemdesiatych rokov bol prispôsobený na použitie s IBM PC a jeho popularita výrazne vzrástla.

 

V rovnakom čase Bjarne Stroustrup a iní v Bellovych laboratóriách začali pracovať na pridaní štruktúr objektovo orientovaného programovania do C. Jazyk, ktorý tak vznikol bol nazvaný C++ a dnes je najbežnejším aplikačným programovacím jazykom pre operačný systém Microsoft Windows.

(zdroj: wikipedia, google)

 

Tolko by som Vám vypichol k základom. Nemáme tu priestor na ďalšie podrobnosti, ani nemáme priestor sa učiť základy programovania - je to rozsiahla záležitosť v analógii kombinujúca naučiť sa cudzí jazyk a súčasne sa naučiť myslieť / riešiť úlohy jednotným postupom logickych krokov (algoritmov) a zároveň rozumieť hardvéru, ktorý bude kroky vykonávať.

 

Ku keške na lúštenie: zadania sú časti kódu potrebné pre nájdenie súradníc, neobsahujú potrebné knižnice. Nie je nutné inštalovať príslušné programovacie rozhranie, písať kódy a komplikovať ich, takému postupu však nič nebráni. Rovnako, pokiaľ programovať neviete, ale máte aspoň základnú predstavu o spôsobe ukladania a spracúvania dát vo výpočtovej technike, riešenie nájdete.

 

Zadanie, samozrejme trošku rozšírené pre naše potreby oproti prvému historickému kódu:

int main()

{

   char c[] = "Hello, World!";

   char nc[6] = { c[5]+0x10a, c[3]+0xc2, c[1]+0xce, c[6]+0x114, c[0]+0xf0, 0x0 };

   char en[6] = { c[11]+0xd1, c[08]+0xbf, c[12]+0x110, c[7]+0xdd, c[10]+0xcc, 0x0 };

 

   printf( "N 48 4%s  E 18 3%s\n", nc, en);

   return 0;

 

}

 

Kešku po odlovení dajte tak, aby ostala nenápadnou a čo najmenej vykúkala. Poškodenie s nutnosťou výmeny mi hláste. Ďakujem a prajem pekný odlov 😉

 

//štartovacia výbava: logbook, ceruzka, SWG 1 +1 pre FTF

 


Cez certitude môžete overiť riešenie svojej kešky.

Additional Hints (Decrypt)

uvag x yúšgravh: m!=0k1n, inyberz vagrecerghw fybirafxbh xncryxbh (ON1989) uvag x bqybih: ahyy

Decryption Key

A|B|C|D|E|F|G|H|I|J|K|L|M
-------------------------
N|O|P|Q|R|S|T|U|V|W|X|Y|Z

(letter above equals below, and vice versa)