PRM044 Programování I zimní semestr 2007/8
Hromadná konzultace k předmětu PRM044
se koná v pondělí 14.ledna 14:00-16:00 v posluchárně S3 na MS
- přednáška paralelka Y - úterý 9:00 posluchárna M1
- přednáška paralelka X - čtvrtek 14:00 posluchárna M1
Můžete navštěvovat kteroukoli paralelku, výuka v obou bude ekvivalentní. Není však rozumné střídat různé paralelky,
protože se výuka v nich může "rozejít" a také mohu použít odlišné příklady.
- seminář - skupina X/51 - středa 14:00 posluchárna K3
První semestr dvousemestrového základního kursu programování pro 1.ročník studentů matematiky
O předmětu
Hlavním cílem předmětu je naučit studenty algoritmickému myšlení a základním programátorským dovednostem.
Přednáška je vedena na bázi programovacího jazyka Pascal. Programovací jazyk však není cílem,
ale prostředkem. V prvním semestru probereme v podstatě celý jazyk mimo prostředků
pro objektové programování.
V praktickém testu musí studenti prokázat schopnost vytvořit a odladit v daném čase program řešící středně obtížnou úlohu.
Systém CodEx
Studenti budou mít možnost testovat automaticky správnost svých programů odkudkoli z internetu pomocí systému CodEx.
Systém není primárně určen ke kontrole studentů, ale k tomu, aby získali zpětnou vazbu. Přesto však vedoucí skupiny může
předepsat vyřešení jistého počtu úloh v tomto systému jako podmínku pro získání zápočtu. Typicky bude používán k odevzdávání domácích úkolů,
jejichž řešením má být zdrojový text programu.
Proto je třeba, aby se všichni studenti zaregistrovali co nejdříve na stránce. Login i heslo udáváte tak, jako v SISu.
Informace pro studenty kombinovaného studia
Studenti kombinovaného studia nemají povinnost navštěvovat výuku. Mohou se však sami rozhodnout, že budou navštěvovat některý ze seminářů a získají tedy zápočet od příslušného cvičícího. Pokud se tak nerozhodnou, domluví si náhradní podmínky udělení zápočtu s přednášejícím.
Pro studenty kombinovaného studia nejsou pořádány žádné "hromadné" přednášky či konzultace. Důvodem je především to, že jejich potřeby a možnosti bývají velmi individuální. To však neznamená, že jim nejsem k dispozici ke konzultacím, jen se předpokládá jejich aktivita. Berte na vědomí, že žádost o konzultaci nebude žádný z vyučujících považovat za obtěžovaní, ale naopak o projevení zájmu a snahu předejít případným nedorozuměním o požadavcích, které jsou na studenty kladeny.
Je velmi rozumné, aby si každý student kombinovaného studia hned na počátku semestru domluvil s přednášejícím úvodní konzultaci, na které mu mohu na základě toho, jaké má (či nemá) zkušenosti s programováním, jaké jsou jeho časové možnosti a jaké jsou cíle, kterých chce prioritně při studiu dosáhnout, navrhnout nejvhodnější postup při studiu tohoto předmětu. Domluvíme se také na nejvhodnějším způsobu (a frekvenci) další komunikace.
Je potřeba, aby všichni studenti kombinovaného studia co nejrychleji
Podmínky pro získání zápočtu
Student může získat zápočet pokud
- splní podmínky na semináři
- složí úspěšně praktický test
Zápočet zapíše vedoucí semináře po té, co student splnil všechny podmínky ze semináře a vedoucí semináře dostane od přednášející zprávu,
že student úspěšně složil praktický test. Pro studenty kombinovaného studia, kteří nenavštevovali žádný ze seminářů, plní roli vedoucího semináře přednášející.
Podmínky ze semináře :
- Aktivní účast na seminářích a průběžné znalosti během semestru.
- Vytvoření a odladění zápočtového programu.
K zápočtovému programu je potřeba vytvořit smysluplnou
dokumentaci.
Podmínky ze semináře kontroluje a upřesňuje vedoucí semináře, na který student chodí.
Pokud student nemůže ze závažných důvodů navštěvovat seminář se skupinou kam patří,
musí se nejpozději do dvou týdnů po zahájení výuky přihlásit do jiné skupiny
(o přijetí či nepřijetí rozhoduje vedoucí semináře, kam chce student přejít).
Pokud student nemůže ze závažných důvodů (např. u kombinovaného studia) semináře navštěvovat,
dohodne si začátkem semestru s přednášejícím náhradní podmínky udělení zápočtu .
Praktický test
Obecně
Praktický test organizuje přednášející pro paralelky obě společně.
Student musí v laboratoři během tří hodin vytvořit a odladit v programovém prostředí Borland Pascal program
řešící středně obtížný problém.
Výsledek testu se neznámkuje, hodnotí se pouze ano/ne.
Student se může pokusit o složení praktického testu nejvýše třikrát. Opakovaný pokus o složení
praktického testu není opravným pokusem z hlediska studijních předpisů
(a neeviduje se tedy v záznamech o studijních výsledcích studenta).
Pro skládání praktických testů platí tato pravidla:
- Každý student má nejvýše tři pokusy, po skončení studijního období (15.února)
má každý student řádného studia nejvýše dva (bez ohledu na to, zda již termín fakticky vyčerpal nebo ne).
- Každý student má povinnost se nejpozději do 20.ledna zapsat na nějaký termín praktického testu.
- Po skončení zkušebního období bude již laboratoř v rozumných termínech obsazená výukou, proto bude méně termínů na výběr a mohou být i v nestandardní dobu - např. v sobotu.
- Po 31.březnu má každý student řádného studia již jen jeden termín (bez ohledu na to, zda již dva termíny fakticky vyčerpal nebo ne)
- Po 27.dubnu již nebudou žádné další termíny pro skládání praktických testů vypisovány.
Vyjímečné případy (typicky dlouhodobá nemoc) se řeší individuálně.
Přihlašování k jednotlivým termínům praktických testů
Studenti se ke skládání praktických testů přihlašují ve studijním informačním systému jako k zápočtu z předmětu PRM044.
Zapisování bude možné od 2.ledna 2008.
Termíny budou většinou v pondělí a ve čtvrtek, vždy v laboratoři SW2, která se nalézá v přízemí budovy fakulty na Malé straně, hned vlevo za vrátnicí. Nemusíte mít
účet v laboratořích na MS, při testech nebudete mít přístup na internet ani k poště.
V laboratoři je 25 počítačů, termíny vypisuji pro 23 studentů. Pokud bude volno, budou moci praktický test skládat i studenti,
kteří na daný termín nebyli přihlášeni. Přihlášeným se místa v laboratoři rezervují nejdéle 10 minut po plánovaném začátku testu.
Termínů budete mít během zkouškového období dostatek, budu je však otevírat postupně,
jak se budou plnit okolní otevřené termíny. Dosud neotevřené termíny jsou označeny jako "zatím fiktivní". V případě nutnosti
mohu některé týdny přidat i termíny další.
Přihlašujte se až když budete skutečně rozhodnuti, že na daný termín skutečně chcete jít, nezneužívejte možnost odhlašování - blokovali byste kapacitu svým
kolegům. Pokud budete nemocni a nestačíte se již z termínu odhlásit, omluvte se mailem (pokud možno nejpozději v den konání termínu).
Respektujte přednostní práva na některé termíny - například termíny v posledním týdnu zkouškového období budou vyhrazeny pro druhé resp. třetí pokusy.
Pravidla pro přihlašování k testům po skončení zkouškového období.
- Zapisujte se až když si budete jisti, že na termín skutečně chcete přijít. Odhlašování nebude povoleno. V odůvodněných případech (nemoc) provede odhlášení přednášející.
- Každý student, který má ještě k dispozici dva termíny (to jsou všichni, kteří neuspěli nejvýše jednou) se přihlásí na jeden z termínů 14. nebo 31. března
- Termín 14.dubna je rezervován těm, kteří kteří neuspějí na termínech 14. nebo 31. března, přihlásit se na něj půjde až po 1.4.2008
Žádné z pravidel není samo sobě účelem. Pokud by v konkrétním případě mělo důsledky příčící se zdravému rozumu, lze pochopitelně udělat
výjimku (Dobrá pravidla mají ještě lepší výjimky). Nestyďte se v takovém případě o ní požádat - nanejvýš neuspějete.
Požadadavky a pokyny k vypracování testu
Při testu má student prokázat, že ovládl základy algoritmizace
a praktické dovednosti nutné k vytvoření a odladění programu na počítači.
Během 3 hodin musí student samostatně sestavit
a odladit na počítači program řešící středně obtížnou úlohu. Pracuje se v prostředí Borland Pascal 7.0.
Úlohy jsou formulovány tak, aby nevyžadovaly použítí "pokročilejších" částí jazyka Pascal,
které budeme probírat až v druhém semestru
(dynamicky alokované proměnné, datové soubory, objektové programování), můžete je ale použít pokud je znáte.
Student musí svůj program předvést, vysvětlit jeho funkci,
případně být schopen ho v reálném čase jednoduše modifikovat.
Hodnotí se nejen funkčnost vytvořeného programu, ale i to, jak je program navržen a naprogramován.
Není při tom vyžadována (časová) optimalizace algoritmu. Stačí, nejsou-li ani algorimus ani jeho implementace "vysloveně hloupé".
Vzhledem k omezenému času se nepožaduje, aby byl program komentován (i když komentáře
vytvářené současně s programemem vám mohou práci na programu podstatně zjednodušit i zrychlit).
Spolu s programem musí student předat zkoušejícímu i dostatečný počet testovacích dat,
na kterých funkčnost programu testoval.
Pokud je vstup/výstup
programu ze/do souboru, pak předá tyto soubory na disku, pokud program komunikuje z konzole, pak papír,
na který opsal
vyzkoušené vstupy a jim odpovídající výstupy,
Součástí hodnocení výkonu studenta je i způsob, jak navrhl testovací data.
Data by měla program vyzkoušet jak v typických tak i v anomálních situacích.
Správnost výsledku by měla být alespoň pro některá vstupní data
nějak jednoduše a na programu nezávisle ověřitelná.
Lze jen doporučit navrhovat zkušební data současně s výběrem algoritmu,
tedy dříve než se začnete zabývat detaily vlastního programu.
Při návrhu programu myslete na to, aby jeho spuštění netrvalo zbytečně dlouho.
Pokud je např. při každém spuštění programu potřeba zadat 20 čísel z klávesnice,
můžete tak při opakovaném spouštění programu ztratit neúnosně mnoho času.
Pokud zkoušející zjistí, že předávaný program nefunguje správně, může studentovi dát možnost
program opravit. Zpravidla však student nedostane takovou možnost více než jednou.
Při práci na testu nejsou povoleny žádné pomůcky (knihy, zápisky z přednášek, flash disky a jiná paměťová media, ...).
Případné potřebné informace o detailech programovacího jazyka student může zjistit z helpu Borland Pascalu. Student si pochopitelně může
dělat poznámky na papír - je to dokonce doporučeníhodné .
Pro úspěšné složení testu jsou potřeba m.j. následující znalosti:
- Znalost programovacího jazyka Pascal, resp. Borland Pascal v rozsahu:
jednoduché a strukturované datové typy (čísla, znaky, typ boolean, pole, záznamy, množiny, znakové řetězce),
jednoduché a strukturované příkazy (:=, if, while, repeat, for, case, with),
práce s textovými soubory, procedury a funkce, separátní překlad a programové jednotky - unity,
lokalita identifikátorů, předávání parametrů, rekurze.
- Aktivní znalost integrovaného prostředí Borland Pascal verze 7.0.
(editor, překlad, výpočet, trasování, breakponty, sledování hodnot proměnných (watches) atd.).
- Ovládnutí konkrétních jednoduchých algoritmů a programovacích technik, např. :
- Eukleidův algoritmus
- Eratosthenovo síto
- Hornerovo schéma
- práce v pozičních číselných soustavách
- aritmetika s vyšší přesností ("dlouhá čísla")
- algoritmy vyhledávání v poli (binární, zarážka)
- maticové operace a jejich implementace
- použití rekurze
- backtracking (prohledávání do hloubky)
- algoritmus vlny (prohledávání do šířky)
- konstrukce minimální ekvivalence zadané (některými) dvojicemi ekvivalentních prvků (faktorová množina)
- jednoduché algoritmy pro práci s permutacemi
zjištění pořadového čísla permutace, zjištění permutace z jejího pořadového čísla, přímé nalezení následující permutace
(vše v lexikografickém uspořádání)
- vyčíslování aritmetických výrazů
- zarovnávání vstupního textu "do bloku"
Poznámky k testům
- Je naprosto nutné, abyste prakticky zvládli vstup a výstup do textových souborů.
Některé úlohy to výslovně vyžadují, většinu bez toho nelze v krátkém čase odladit.
Při tom nejde vůbec o nic složitého. Pokud se Vám to nepodaří zvládnout samostatně,
nestyďte se vyhledat pomoc někoho, kdo programovat umí (např. cvičící nebo já).
- Pokud neovládáte dobře ladící prostředky, které Borland Pascal poskytuje, velmi snižujete pravděpodobnost úspěchu.
- Přečtěte si zadání. Je to většinou jen několik vět, přesto se občas vyskytne student, který řeší jinou úlohu.
Není zcela jasné, zda má být skutečnost, že "neumí číst", přitěžující či polehčující okolností.
Nebude-li Vám v zadání něco jasného, zeptejte se.
- Dodržte způsob vstupu a výstupu, na kterém se při zadávání úlohy dohodneme
- Nejprve promyslete algoritmus a teprve pak začněte "bušit do klávesnice".
- Při návrhu programu předpokládejte, že v něm může být chyba.
Navrhujte ho proto tak, abyste ji mohli jednoduše odhalit.
- Dodržujte při psaní testů "pravidla fair play", tím mi umožníte, abych jejich dodržování nemusel vynucovat "násilím".
Využijte při přípravě možnost konzultací.
Nenaučíme se to "za Vás", ale můžeme Vám pomoci.
Literatura
V podstatě nebudete žádnou potřebovat, můžete si vystačit s poznámkami z přednášek a seminářů
-
P. Töpfer: Algoritmy a programovací techniky
Prometheus Praha 1995
Pěkná knížka, ve které najdete většinu algoritmů, které na přednášce probereme.
Algoritmy jsou zpravidla uvedeny i s důkazem správnosti a odhadem složitosti.
Většina znich je dovedena až do stádia programu v Pascalu. Knížku oceníte především při přípravě ke zkoušce v letním semestru.
-
P. Satrapa: Pascal pro zelenáče
Neokortex Praha 2000
Svižně napsaná knížka o programovacím jazyku Pascal
-
N. Wirth: Algorithms + Data Structures = Programs
Prentice Hall Englewood Cliffsů; New Jersey 1975
slovenský překlad
N. Wirth: Algoritmy a štruktúry údajov
Alfa, Bratislava 1989
Klasická učebnice programování dodnes neztratila svúj půvab. Dnes poslouží především jako učebnice algoritmů.
Překladače Pascalu
K dispozici jsou tři překladače
- Borland Pascal verze 7 - "starý, ale osvědčený" překladač
- Free Pascal - volně šiřitelný, pracuje jak pod OS Windows, tak pod OS Unix
- Delphi - de facto jde o překladač jiného jazyka navazujícího na Pascal
Při praktických testech bude používán překladač
Borland Pascal verze 7 v prostředí operačního systému DOS.
Počítače v laboratoři budou odpojeny od sítě.
Důvodem použití tohoto překladače na praktické testy je především ověřená funkce helpů a ladění. Nevýhody plynoucí z toho,
že jde přece jen o starší program, se v úlohách, které se vyskytnou v praktických testech, prakticky nemohou projevit.
Tento překladač může pracovat i v prostředí Windows - např. pro ladění zápočtových programů.
Pro zápočtové programu můžete použít i překladač Free Pascal. Má několik výhod:
- Je volně k dispozici na síti
- Může pracovat jak pod OS Windows, tak pod OS Unix
- Je modernější, proto v něm neplatí některá omezení Borland Pascalu.
Tato omezení se však na úlohách praktických testů ani na typických zápočtových programech zimního semestru neprojeví.
- Může pracovat v režimu, ve kterém je téměř úplně kompatibilní s Borland Pascalem.
Především v letním semestru mohou studenti použít k vytvoření zápočtového programu i programovací systém Delphi.
Výhodou může být možnost vytvořit plnohodnotnou aplikaci pod MS Windows včetně grafický výstupů. Nevýhodou je složitost systému.
Proto nelze doporučit použití systému Delphi těm, kdo jej již neznají, v zimním semestru. Systém má režim, který umožňuje vytvářet "konzolové aplikace".