Seznam úloh
k přednášce Informatika a výpočetní technika ve vědecké praxi
Pro úspěšné absolvování kurzu Informatika a výpočetní technika ve vědecké praxi musí každý účastník
odevzdat vlastnoručně napsaný program v C/C++. Seznam možných témat je relativně obsáhlý, pokud si ovšem účastník
vymyslí nějaké vlastní zajímavé téma odpovídající složitosti, budiž mu přáno.
Témata jsou seřazena dle obtížnosti. Jednoduchá témata zpracuje jeden účastník, středně složitá dva a složitá
tři. Výběr témat bude proveden dne 9. 2. 2007. Bude-li někdo na této hodině nepřítomen, může si nějaké téma vzít
i později prostřednictvím emailu (ale riskuje, že ta nejzajímavější budou již rozebrána :-) ). Úlohy musí účastníci
odevzdat včetně zdrojového kódu do konce května 2007.
Jednoduché úlohy
- Převody mezi libovolnými číselnými soustavami
Uživatel zadá z klávesnice číslo v libovolné číselné soustavě (pro praktičnost
max do 36tkové soustavy, kde je poslední symbol Z) a cílovou soustavu. Program musí
číslo vypsat ve zvolené soustavě.
Zpracuje : O. Polívka
- Převod mezi římskou a desítkovou číselnou soustavou
Program umožní uživateli převádět čísla mezi římskou a soudobou desítkovou soustavou
tam a zpět.
Zpracuje : G. Salajová
- Problém dam na šachovnici
Program najde všechna možná umístění n dam na šachovnici o rozměrech n x n
tak aby se navzájem neohrožovaly. Toto je typická úloha na rekurzi - tj. volání funkce sama
sebou.
Zpracuje : Z. Švancara
- Simulace šikmého vrhu pomocí diskretizace času
Jedná se o simulaci základní mechanické úlohy pomocí diskretizace času. Popis diskretizace času
je možno nalézt v dokumentu --- Under construction ---. Program provede simulaci šikmého vrhu s počátečními
podmínkami zadanými uživatelem a závislost polohy H.B. na čase zapíše do souboru ve formě tabulky.
Data pak mohou být zobrazena v programu Excel, gnuplot a podobných. Protože výpočet fyzikálního problému
ležícího za touto úlohou je plně v možnostech středoškolské fyziky, účastník zároveň se simulací
naprogramuje přímý výpočet a oba výsledky srovná.
Zpracuje : P. Sedláček
- Simulace problému dvou těles pomocí diskretizace času
Jedná se o simulaci základní mechanické úlohy pomocí diskretizace času. Popis diskretizace času
je možno nalézt v dokumentu --- Under construction ---. Program provede simulaci pohybu dvou gravitujících
těles (planety, družice a pod) s počátečními podmínkami zadanými uživatelem a závislost polohy těles
na čase zapíše do souboru ve formě tabulky. Data pak mohou být zobrazena v programu Excel, gnuplot a podobných.
Zpracuje : J. Sýkora
- Simulace Rutherfordova rozptylu pomocí diskretizace času
Jedná se o simulaci základní mechanické úlohy pomocí diskretizace času. Popis diskretizace času
je možno nalézt v dokumentu --- Under construction ---. Program provede simulaci rozptylu nabitých částic
nalétávajících na pevný nabitý bod (částice alfa nalétávající na jádro zlata) pro širokou množinu
srážkových parametrů (důkladnější popis v dokumentu --- Under construction ---). Závislosti polohy
částic na čase zapíše do souboru ve formě tabulky. Data pak mohou být zobrazena v programu
Excel, gnuplot a podobných.
Zpracuje :
- Simulace pohybu nabité částice v magnetickém poli pomocí diskretizace času
Jedná se o simulaci základní mechanické úlohy pomocí diskretizace času. Popis diskretizace času
je možno nalézt v dokumentu --- Under construction ---. Program provede simulaci pohybu nabité částice
v magnetickém poli, jehož siločáry jsou kolmé na vektor rychlosti částice. Pole však nemusí být homogenní,
jeho indukce je dána funkcí závislou na x a y (důkladnější popis v dokumentu --- Under construction ---).
Závislosti polohy částice na čase zapíše do souboru ve formě tabulky. Data pak mohou být zobrazena v programu
Excel, gnuplot a podobných.
Zpracuje : V. Schneider
- Datové struktury - aplikace spojového seznamu
Program umožní vytvořit, spravovat, zrušit a setřídit spojový seznam libovolných nespecifikovaných objektů. Toto
je typická úloha na využití oběktově orientovaného programování, dědičnost a virtuální metody.
Zpracuje : A. Dominec
- I/O operace - spojte seznamy jmen z více souborů do jednoho a setřiďte jej podle křestního jména nebo příjmení
Program načte libovolné množství souborů obsahující jména a příjmení, spojí je do jednoho seznamu, dle přání
úživatele seznam setřídí podle jména nebo příjmení a zapíše jej do jednoho výstupního souboru.
Zpracuje :
- Matematické operace - numerický výpočet integrálu metodou prokládání obdélníků a metodou Monte Carlo
Program spočítá určitý integrál (plochu uzavřenou mezi osou x a libovolnou spojitou funkcí) pomocí proložení funkce
"schodištěm" a pomocí metody Monte Carlo (podrobnější popis úlohy v dokumnentu --- Under construction ---).
Zpracuje : R. Marciňa
- Matematické operace - generování všech permutací, kombinací a variací ze zadané množiny čísel
Program podle uživatelem zadaných parametrů vypíše do souboru všechny permutace, kombinace nebo variace zadané číselné množiny.
Zpracuje : M. Kovář
Středně složité úlohy
- Generátor postav pro DrD/DrD+
Program nabídne snadné a uživatelsky příjemné prostředí pro generování postav do hry Dračí doupě, respektive Dračí
Doupě Plus v textovém módu (nebo i v grafickém, pokud se na to posluchač cítí). program musí obsahovat databázi
všech ras, povolání, zbraní, vybavení a podobně. Musí umožňovat všechny režimi určování vlastností postavy a
musí obsahovat jednoduchou databázi postav. Hotové postavy pak musí být použitelné pro soubojové výpočty
(následující úloha) - předpokládá kooperaci programátorských týmů, které si musí dohodnout společný formát dat.
Zpracují : H. Štulcová, K. Opatrná
- Soubojové výpočty a generátor nestvůr pro DrD/DrD+
Program umožní simulaci soubojů pro DrD resp. DrD+ s vytvořenými postavami z předchozí úlohy (vyžaduje kooperaci
týmů - dohodu o společném formátu dat) a nestvůrami, které si pán jeskyně v programu "nahází" na základě bestiáře,
taktéž v programu přítomném jako databáze. Program by měl zahrnovat všechny možné aspekty souboje, včetně iniciativy,
pozice postav a nestvůr a podobně.
Zpracují :
- Generátor postav pro D&D/AD&D+
Program nabídne snadné a uživatelsky příjemné prostředí pro generování postav do hry Dungeons and Dragons, respektive
Advanced Dungeons and Dragons v textovém módu (nebo i v grafickém, pokud se na to posluchač cítí). Program musí
obsahovat databázi všech ras, povolání, zbraní, vybavení a podobně. Musí umožňovat všechny režimi určování vlastností
postavy a musí obsahovat jednoduchou databázi postav. Hotové postavy pak musí být použitelné pro soubojové výpočty
(následující úloha) - předpokládá kooperaci programátorských týmů, které si musí dohodnout společný formát dat.
Zpracují :
- Soubojové výpočty a generátor nestvůr pro D&D/AD&D+
Program umožní simulaci soubojů pro D&D resp. AD&D s vytvořenými postavami z předchozí úlohy (vyžaduje kooperaci
týmů - dohodu o společném formátu dat) a nestvůrami, které si pán jeskyně v programu "nahází" na základě bestiáře,
taktéž v programu přítomném jako databáze. Program by měl zahrnovat všechny možné aspekty souboje, včetně iniciativy,
pozice postav a nestvůr a podobně.
Zpracují :
- Vyhledání nejkratší cesty na silniční mapě
Jako vstup do programu bude seznam měst a silnic mezi nimi, charakterizovaných vzdáleností v km. Program pak
vyhledá nejkratší možnou trasu mezi dvěmi uživatelem zadanými městy a vypíše ji ve formě seznamu měst, kterými
musí řidič projet.
Zpracují : P. Marek, M. Pavlů
- Jednoduchý kalkulátor
Kalkulátor vyhodnotí libovolný výraz, např. ( sin( ( 3 + 2) - (2 - 3)^2 ) + cos( 3*pi - 2.7) ), a napíše výsledek.
Výraz může obsahovat operace +,-,*,/, unární mínus, umocňování, odmocňování, všechny elementární funkce a základní
konstanty typu pi, e a tak dále.
Zpracují : J. Hofrichter, T. Přeučil
- Práce s textem - jednoduchý editor
Program umožní nahrát text ze souboru do paměti, jeho základní editaci a opětovné uložení. Kromě těch nejzákladnějších
operací typu pohyb kurzoru, vložení a smazání znaku musí obsahovat také funkce pro blokové kopírování.
Zpracují : J. Švancara, T. Peták
- Hra "Tamagoči" v textovém režimu
Pro vytvoření této hry musí posluchači samostatně dostudovat běh programu a ošetření vstupních událostí
v reálném čase. Jedná se o klasické Tamagoči - co k tomu dodat. Potřebné funkce pro ovládání v reálném čase
(např. kontrola, zda uživatel stiskl klávesu) se nachází v knihovně conio.h pro Windows (Borland C), nebo
v knihovně ncurses.h (viz reference).
Zpracují :
- Hra "Pacman" v textovém režimu
Pro vytvoření této hry musí posluchači samostatně dostudovat běh programu a ošetření vstupních událostí
v reálném čase. Jedná se o klasického Pacmana - malou žlutou kuličku pobíhající po bludišti, utíkající před
duchy a požírající rozházené pamlsky. Potřebné funkce pro ovládání v reálném čase (např. kontrola, zda uživatel
stiskl klávesu) se nachází v knihovně conio.h pro Windows (Borland C), nebo v knihovně ncurses.h
(viz reference). Programování této
úlohy zahrnuje vymyslet rozumnou umělou inteligenci duchů - tak, aby hraní nebylo ani příliš obtížné, ani příliš
jednoduché.
Zpracují : O. Kovář, J. Kubant
- Hra "Formule" v textovém režimu
Pro vytvoření této hry musí posluchači samostatně dostudovat běh programu a ošetření vstupních událostí
v reálném čase. Jedná se o klasické formulky - na obrazovce je vykresleno autíčko, se kterým je možné pohybovat
do všech směrů. Silnice plná překážek ubíhá kolem něj odshora dolů. Potřebné funkce pro ovládání v reálném čase
(např. kontrola, zda uživatel stiskl klávesu) se nachází v knihovně conio.h pro Windows (Borland C), nebo
v knihovně ncurses.h (viz reference).
Zpracují :
- Hra "Space raiders" v textovém režimu
Pro vytvoření této hry musí posluchači samostatně dostudovat běh programu a ošetření vstupních událostí
v reálném čase. Jedná se o klasické střílení emzáků - vetřelic jsou srovnáni v několika řadách v horní části
obrazovky, v dolní části se pohybuje vlevo a vpravo loď hráče. Emzáci střílí dolů, hráč nahoru a jeho úkol je
postupně všechny protivníky zlikvidovat. Potřebné funkce pro ovládání v reálném čase (např. kontrola, zda
uživatel stiskl klávesu) se nachází v knihovně conio.h pro Windows (Borland C), nebo v knihovně ncurses.h
(viz reference).
Zpracují :
Složité úlohy
- Hra "Přistání na měsící" v textovém režimu
Pro vytvoření této hry musí posluchači samostatně dostudovat běh programu a ošetření vstupních událostí
v reálném čase. Jedná se o klasické Přistání - Hráč má k dispozici loď s omezeným množstvím paliva, ovládání
hlavní trysky a bočních trysek. Rozumným dávkováním paliva do motorů (a tedy velikosti tahu v daném směru) se
snaží dosáhnout přistávací plochy tak, aby dosedl kolmo a s minimální rychlostí. Dosedne-li jinam nebo příliš
rychle, loď rozbije. Paliva je ovšem velmi omezené množství a pokud jej hráš spotřebuje, loď se zřítí. Potřebné
funkce pro ovládání v reálném čase (např. kontrola, zda uživatel stiskl klávesu) se nachází v knihovně conio.h
pro Windows (Borland C), nebo v knihovně ncurses.h (viz reference).
Kromě toho hra předpokládá reálnou simulaci fyzikálních dějů - tj. simulování zrychlených pohybů v homogenním
gravitačním poli pomocí diskretizace času (viz --- Under construction ---).
Zpracují : V. Humpál, A. Bělohlávek, J. Smrčina
- Vektorová grafika - zobrazení scény v perspektivě a v kolmém promítání
Program načte ze souboru seznam těles zadaných souřadnicemi jejich vrcholů v 3D prostoru a dle volby
uživatele je vykreslí na obrazovku - tj. provede projekci do plochy. Zobrazování bude mít dva režimy
- perspektivní a rovnoběžné promítání. Pro tuto úlohu je třeba, aby posluchači samostatně nastudovali
grafický výstup (kreslení čar na obrazovku) pod Windows nebo linuxovým systémem X-window. Podrobnější
údaje o matematice problému je možno najít v dokumentu --- Under construction ---.
Tuto úlohu je vhodné řešit pomocí objektově orientovaného programování.
Zpracují : M. Tejc, J. Dočkal, M. Labuť
- Vektorová grafika - transformace scény
Program načte vstupní data určená pro úlohu předchozí skupiny a provede transformaci celé scény, jako zmenšení,
zvětšení, otočení, zrcadlení, různé deformace a podobně. Transformovanou scénu pak opět uloží ve formátu vhodném
pro zobrazení programem předchozí skupiny (vyžaduje kooperaci - domluvu na společném formátu dat). Tuto úlohu je
vhodné řešit pomocí objektově orientovaného programování.
Zpracují :
- Program pro generovánní školních rozvrhů
Program dle seznamu tříd, vyučovacích hodin, volných učeben a požadavků vyučujících na časy, které jim
vyhovují, sestaví rozvrh pro celou školu. Aplikuje při tom definované optimalizační pravidla (např. co
nejméně nultých hodin, pokud možno ne dva předměty ve stejný den, méně náročné předměty odpoledne, přestávku
na obět ve smysluplném čase a ne pro všechny třídy najednou a pod). Neřešitelné konfliky oznámí. Výsledný
rozvrh zapíše ve formě textových tabulek do souboru.
Zpracují :
- Jednoduchý engine hry typu "Red Dragon" či "Melior Annis"
Skupina posluchačů vymyslí hru typu Red Dragon, Melior Annis a pod. (včetně pravidel) a realizuje ji pro hraní
více hráčů na jednom počítači (v textovém módu).
Zpracují :