mff

Markéta Popelová - Výuka

Programování 1

Ukázky programů ze cvičení - Programování 1

2. hodina (11.10.2012)

  1. Vyhledávání v setříděném seznamu - algoritmus zapsaný v pseudokódu.

3. hodina (18.10.2012)

  1. Načítání čísel I. - načtení n čísel: ukázka použití for-cyklu. Ke stažení: code.pas.
  2. Načítání čísel II. - načtení posloupnosti čísel ukončených -1: ukázka použití while-cyklu. Ke stažení: code.pas.
  3. Mini kalkulačka - procvičení podmínky (if). Ke stažení: code.pas.

4. hodina (25.10.2012)

  1. Dělitelé v intervalu - procvičení podmínky for-cyklu a operace mod. Ke stažení: code.pas.
  2. Kladná čísla - procvičení while-cyklu (trochu jiné zadání než na hodině). Ke stažení: code.pas.
  3. Obrácený výpis n čísel - procvičení for-cyklu a pole. Ke stažení: code.pas.
  4. Test prvočíselnosti I. - elegantní (ale ne ideálně efektivní) řešení pomocí while cyklu. Ke stažení: code.pas.
  5. Test prvočíselnosti II. - efektivnější řešení pomocí for-cyklu a boolean proměnné. Ke stažení: code.pas.

5. hodina (1.11.2012)

  1. Testík 1 - princezniny korále: první řešení. Ke stažení: code.pas.
  2. Testík 2 - princezniny korále: druhé řešení. Ke stažení: code.pas.
  3. Hádanka 1 - aneb pozor na indentaci, begin a end. Ke stažení: code.pas.
  4. Hádanka 2 - kreslení z hvězdiček. Ke stažení: code.pas.
  5. Hádanka 3 - aneb pozor na indenatci a středníky. Ke stažení: code.pas.
  6. Hádanka 4 - aneb pozor na závorky a prioritu operací. Ke stažení: code.pas.
  7. NSD 1 - pomalá verze Euklidova algoritmu. Ke stažení: code.pas.
  8. NSD 2 - pokus o rychlejší verzi, ale s chybou. Ke stažení: code.pas.
  9. NSD 3 - rychlejší verze Euklidova algoritmu. Ke stažení: code.pas.
  10. Faktoriál malého čísla - ukázka funkce. Ke stažení: code.pas.
  11. Kódy všech znaků - operace chr. Ke stažení: code.pas.
  12. Je zadaný znak cifra? - ukázka funkce a použití ord. Ke stažení: code.pas.
  13. Hodnota cifry - ukázka funkce a použití ord. Ke stažení: code.pas.

6. hodina (8.11.2012)

  1. Testík - funkce jeZnak. Ke stažení: code.pas.
  2. Opisovač vstupu - detekce konce vstupu pomocí EOF, načítání vstupu po znacích. Ke stažení: code.pas.
  3. Jednoduchý devypatlátor - použití ord, chr, převody znaků. Ke stažení: code.pas.
  4. Hornerovo schema - načítání čísla (v desítkové soustavě) po znacích a převedení na integer. Ke stažení: code.pas.
  5. Z dvojkove - načtení čísla zadaného v dvojkové soustavě a převedení na integer pomocí Hornerova schematu. Ke stažení: code.pas.
  6. Rekurzivní výpis sestupný - ukázka jednoduché lineární rekurze na sestupný výpis čísel. Ke stažení: code.pas.
  7. Rekurzivní výpis vzestupný - ukázka jednoduché lineární rekurze na vestupný výpis čísel. Ke stažení: code.pas.
  8. Ladění v Pascalu - součást úkolu - na tomto (chybném) programu si vyzkoušejte ladící prostředky Pascalu a odhalte všechny chyby. Ke stažení: code.pas.
  9. Soubory 1 - převod velkých písmen na malá - ze standardního vstupu na standardní výstup. Ke stažení: code.pas.
  10. Soubory 2 - převod velkých písmen na malá - ze souboru na standardní výstup. Jako vstup můžete použít například tento soubor in1.txt. Ke stažení: code.pas.
  11. Soubory 3 - převod velkých písmen na malá - ze souboru do souboru. Jako vstup můžete použít například tento soubor in1.txt. Výstup hledejte v souboru out1.txt. Ke stažení: code.pas.
  12. Soubory 4 - výpis kódů všech znaků do souboru. Výstup hledejte v souboru znaky.txt. Ke stažení: code.pas.

7. hodina (15.11.2012)

  1. Testík - Str2Int. Ke stažení: code.pas.
  2. Parametry 1 - předávání odkazem a hodnotou. Ke stažení: code.pas.
  3. Parametry 2 - předávání odkazem a hodnotou. Ke stažení: code.pas.
  4. Parametry 3 - předávání odkazem a hodnotou. Ke stažení: code.pas.
  5. Generování 1 - generování čísel o K cfirách v jedničkové soustavě. Ke stažení: code.pas.
  6. Generování 2 - generování čísel o K cfirách ve dvojkové soustavě. Ke stažení: code.pas.
  7. Generování 3 - generování čísel o K cfirách v soustavě o základu N. Ke stažení: code.pas.

8. hodina (22.11.2012)

  1. Testík - část 1 - funkce, procedury a předávání odkazem a hodnotou. Ke stažení: code.pas.
  2. Testík - část 2 - funkce, procedury a předávání odkazem a hodnotou. Ke stažení: code.pas.
  3. Testík - část 3 - funkce, procedury a předávání odkazem a hodnotou. Ke stažení: code.pas.
  4. Faktoriál - ukázka jednoduché nevětvící se rekurze. Ke stažení: code.pas.
  5. Mocnina - ukázka jednoduché nevětvící se rekurze. Ke stažení: code.pas.
  6. Součet - ukázka jednoduché nevětvící se rekurze. Ke stažení: code.pas.
  7. Binární vyhledávání - ukázka nevětvící se rekurze. Ke stažení: code.pas.
  8. Rozklad na sčítance - již větvící se trošku složitější rekurze. Ke stažení: code.pas.
  9. Batoh 1 - část domácího úkolu - co (a jak) dělá tento rekurzivní program? Ke stažení: code.pas.
  10. Batoh 2 - část domácího úkolu - co (a jak) dělá tento rekurzivní program? Ke stažení: code.pas.

9. hodina (29.11.2012)

  1. Dlouhá čísla - ukázka sčítačky celých (tedy kladných i záporných) čísel. Použití vlastního datového typu a recordu. Nejedná se zrovna super-krátké řešení, ale zase je pěkně dekomponované. Ke stažení: code.pas.

11. hodina (13.12.2012)

  1. Fronta - povídání o datové struktuře fronta.
  2. UnitData - jednotka obsahující datový typ pro položky, které budeme ukládat do zásobníku či fronty. Ke stažení: code.pas.
  3. UnitZasobnik - jednotka obsahující datovou strukturu zásobník včetně základních operací pro práci se zásobníkem. Ke stažení: code.pas.
  4. Test zásobníku - program testující, zda nám zásobník funguje správně. Ke stažení: code.pas.
  5. UnitFronta - chcete-li domácí úkol napsat jako knihovnu, můžete vyjít z tohoto kódu. Ke stažení: code.pas.
program obraceniVstupu;
{ Vstup: nezáporné číslo n (<= 1000) a následně n čísel. Všechny se vejdou do integeru.
  Výstup: Těch n čísel vypsaných v opačném pořadí (všechny na jedné řádce).
  Myšlenka řešení: Všech n čísel si načteme do pole. Následně toto pole vypíšeme v opačném pořadí.
  Časová složitost: lineární, tedy O(n) (kde n je nejvyšší možný počet čísel na vstupu).
  Na každé z n čísel se totiž podíváme právě dvakrát:
  když ho ukládáme do pole a když ho vypisujeme z pole.
  Paměťová složitost: lineární, tedy také O(n). Potřebujeme totiž pole velikosti n (a dále už jen 2 proměnné). }

var n,i : integer;
    cisla : array[1..1000] of integer;  { Pole, do kterého si budeme ukládat n čísel ze vstupu. }

begin
  read(n);
  for i:=1 to n do        { Načítání n vstupních čísel do pole - na pozice 1 až n. }
    read(cisla[i]);
  for i:=n downto 1 do    { Výpis pole od n-tého indexu až k prvnímu. }
    write(cisla[i],' ');   { Všimněte si, že za každým číslem vypisujeme mezeru. Kdybychom to neudělali,
                              nerozeznali bychom, kde končí jedno a kde začíná druhé číslo. }
end.

Kdo byste našel v nějakém z těchto programů chybu, dejte mi to vědět - můžete tak získat bonusové body (1 chyba ≈ 5 bodů). ;)

© Markéta Popelová 2009 - 2012