Výpočetní technika a programovaní
Nějaký hovado přišlo na to, že Pascal je programovací jazyk vhodný pro pedagogické účely. Pokud dotyčného znáte, pošlete na jeho adresu bandu sfetovanejch negrů s kleštěma a letlampama. Třeba po středověké tortuře jeho prdele si snad tato osoba uvědomí svojí chybu. Rodina Charlie Mansona by na zeď napsala HELTER SKELTER (krví)!
A to můžem být rádi, že už se neučí Fortran a nebo jak jsem se dozvěděl později – ,,Fortran pascalským způsobem``. Proč se teda neučí třeba C pascalovsky a nebo Java, o jejíž výuce se prý na FELu mluví už několik let?
Zdrojáky z cvičení
- Zjišťování zda bod leží v 1. nebo 3. kvadrantu
- Zjišťování zda bod leží v 1. nebo 3. kvadrantu (pomocí pole)
- Prvky v poli (pomocí pole)
- Soucet prvku v tabulce (pomocí 3D pole)
- Databáze pacientů (příklad se strukturovanou proměnou)
- Vzestupné setřídění čísel ze vstupu
- Zjistí průměr, max, min, medián u zadaných prvku v poli
- Procedura, která rozdělí vstupní string na jednotlivá slova
- Program, který načte jednotlivá slova ze souboru, nerekurzivně(!) je obrátí, vyhledá zadané a vypíše nejdelší slovo.
- Porovnání dvou souboru obsahujících čísla.
- Databáze jezdců formule 1. K programu je potřeba datový soubor.
- Mergesort pro soubory file of integer, které vytvoříte tímto programkem.
- Insertsort.
Semestrální práce
- Nokia Melody Player – přehrávač mobilních melodií na Nokii, pozor soubory dodáváne v balíku mají unixové konce řádků a v WindowsNT to hazí errory (nutno zkonvertovat).
- Analýza televizního formátu
- Databáze knížek
- Telefonní seznam
- Videostop
- Piškvorky 1
- Piškvorky 2
- Databáze zájezdů
- Triangulace koule v prostoru. Je to psáno v Borland C++ Builderu 5. Obsahuje dynamické proměnné i objektové programování.
Odkazy
- Algoritmy a programování
- Pascal v příkladech
- FreePascal – 32 bitový kompilátor jazyka Pascal, fungující na různých procesorech (kompatibilních s Intel 80386 a Motorola 680x0) a operačních systémech (Linux, FreeBSD, DOS, Win32, OS/2, BeOS, SunOS (Solaris), QNX a klasická Amiga). Je dostupný pod licencí GNU GPL, obsahuje všechny potřebné unity a kompatibilita s Turbo Pascalem 7.0 je více než ucházející a navíc obsahuje některá vylepšení.
Minitest
Psáno ve cvičení ing. Fürychové. Max. skore 6 bodů.
Varianta A
- Co je to deklarace?
- Převeďte z desítkové na dvojkovou číslo 317,4.
- Vstup: x, y. Výstup: leží bod v 1. nebo 3. kvadrantu? Pokud se zadá x,y=(0,0) program se ukončí.
Varianta B
- Co je to bloková struktura?
- Převeďte z desítkové na šestnástkovou číslo 4025,0625.
- Vstup: n, x. Výstup: Zadat počet n a pak zadávat n čísel a zjistit kolik čísel měla nejdelší sekvence po sobě jdoucích členů čísel.
Maxitest z VT
Tohle zadávala ing. Fürychová. Byla to pouze jediná varianta, na jejíž řešení bylo dáno asi 60 minut. Paní Fürychová má takovou zvláštní libůstku, během psaní písemky asi čtyřikrát odešla pryč, pokaždé aspoň na 5 minut a pokud byla přítomna fyzicky, tak si dávala šlofíka a probudil ji jen hluk větší než malý. Byl zrovna čas po obědě, takže je to pochopitelné :) A jaké, že byly otázky?
- Jaký je rozdíl mezi voláním vlastní a funkční procedury?
- Analyzujte:
procedure VYM(x, y : integer); begin x := p; x := y; p := y; end
(Tohle se mělo analyzovat a opravit.) - Byly zadané datové typy:
type DM = record D,M,R : byte; end; PL = record DL : DM; H : real; end; DAT = array[1..100] of PL;
Úkolem bylo naprgat proceduru, která v poli typu DAT vymaže prvky kde H je menší než 0, a navíc to pole setřídí tak, aby tam nebyly nulové buňky po těch vymazanejch.
Já osobně na to šel tak, že jsem nejdřív všechny záporný H přesunul nakonec pole a pak ho prošel a vynuloval ty záporný, jde to udělat i líp, ale s tím už si vyhrajete :)
Letní semestr
Vstupní test
Test za 6 bodů, který zadala doc. Fürychové.
- Napište program, který porovná dva soubory:
Var S1, S2 : file of integer;
Soubor S1 je setříděný a S2 je nesetříděný, jednotlivá čísla se neopakují. - Byly zadané datové typy:
type DM = record D,M,R : byte; end; PL = record DL : DM; H : real; end; DAT = array[1..100] of PL; ZAD = record ID : string; VAL : DAT; end;
Úkolem bylo naprgat proceduru, která v záznamu ZAD vymaže prvky kde H je menší než 0, a navíc to pole setřídí tak, aby tam nebyly nulové buňky po těch vymazanejch. Vlastně je to skoro to samé jako příklad z maxitestu ze zimního semestru.
Maxitest Fürychová
Skupina A (TestL99A)
- Napište funkci, která určí počet prázdných řádků textového souboru. Parametrem je textový soubor
- Napište proceduru, která obrátí pořadí prvků jednocestně zřetězeného seznamu čísel. Algoritmus nechť pracuje s ukazateli, nepřehazujte jen čísla.
- Pro tabulku implementovanou dvoucestně zřetězeným seznamem navrhněte
proceduru, která upravý prvek se zadaným klíčem tak, že v položce typu
pole čísel ponechá čísla pouze v jednom výskytu, čísla v položce typu
pole jsou uspořádaná vzestupně. Tabulka je uspořádána na klíčí vzestupně. Prvek
se zadaným klíčem je nutno nejprve nalézt. Napište k tomu proceduru
Vyhledání prvku se zadanym klicem.
Type pl = array[1..100] of integer; zaz = record klic : integer; cisla : pl; end; uk = ^prv; prv = record z : zaz; tam, zpet : uk; end;
Skupina B (TestL99B)
- Napište funkci, která porovná, zda jsou textové soubor stejné. Parametrem jsou dva textové soubory.
- Napište proceduru, která sloučí dva jednocestně zřetězené seznamy, ve kterých jsou čísla uložena vzestupně. Využijte setříděnosti.
- Stejná jako v předchozím zadání pro skupinu A.