pondělí 7. června 2010

Logická hra

Hra Kdo bere poslední, prohrál


 uses Crt;
 var i, bere, pocet:integer;
 begin
   Randomize;
       { Píše text v náhodných barvách }
     i:= (Random(5)+6);
     writeln('Mam', i,'sirek');
     writeln('Kolik beres Ty *1-2*');
     readln (bere);
     pocet:= i-bere;
     writeln('zbylo', pocet);
     if pocet mod 2 = 1 then bere := 1 else bere := 2;
     pocet:= i-bere;

     readln (bere);
 end.

Náhodná čísla v Pascalu

RANDOMIZE to zamíchá, RANDOM vybere náhodné číslo z intervalu 0..(to, co je v závorce)
Následující ukázka vypisuje náhodná celá čísla z intervalu 0..1

pondělí 12. dubna 2010

Vývojové diagramy


zdroj: http://cs.wikipedia.org/wiki/Vývojový_diagram

úkoly:

  1. Vytvořte vývojový diagram popisující vaši ranní činnost.
  2. Vytvořte vývojový diagram z některých předchozích programů.

Třídění, řazení, uspořádání... zkrátka sort

Třídění, řazení, uspořádání... zkrátka sort
Jeden z algoritmů je tzv. Probublávání (boublesort). 


princip boublesortu
Program prohledá všechna zadaná čísla, najde největší z nich a v každé fázi největší číslo (ze zbyvajicich) probublá až na konec (doprava). To dělá pořád dokola, až není co probublávat:)

Novou věcí zde je pojem POLE (v pascalštině array). Zde je použito jednorozměrné pole. Chápejme ho jako řadu čísel. Dvourozměrné pole si představme jako tabulku, kdy každé číslo je určeno souřadnicí X a souřadnicí Y. Třírozměrné pole si představme jako kvádr (souřadnice X, Y, Z). Čtyřrozměrné pole si raději nepředstavujme vůbec.

pondělí 22. března 2010

Týmová tvorba programu

Program řešící výpočet kořenů kvadratické rovnice.
Postup tvorby:
team leader vysvětlí problém, uvede dohodu o použitých proměnných
tým č. 1 píše proceduru na vkládání dat
tým č. 2 píše proceduru na výpočet diskriminantu
tým č. 3 píše proceduru na výpočet kořenů
tým č. 4 píše proceduru na zobrazení výsledků
tým č. 5 píše hlavičku programu včetně deklarace proměnných
tým č. 6 píše vlastní program
tým č. 7 ladí program, odstraňuje chyby

úterý 16. března 2010

Kudy dál?

  • algoritmy 
    • třídění (sort)
  • výpočty: 
    • vyznamenání / prospěl / neprospěl
    • kvadratická rovnice

Grafika: final cut

Program elegantně řešící grafiku

  • Menu
  • Procedury
  • Snadná modifikovatelnost


pondělí 1. března 2010

Hustě zapsaný program s menu a grafikou

Vo co de?
Úkol:
  1. Nejdřív namaluješ menu
  2. Pak se zeptáš, co BFUchce, aby se namalovalo
  3. Pak se to namaluje
  4. Pak se to zeptá jestli ještě jednou, pokud jo, tak menu...
Upozornění:
  • návrhy některých procedur jsou psány záměrně chybně, copy and paste tu stačit nebude
  • procedury je nutno seřadit tak, aby procedura volající proceduru, byla umístěna zásadně níže než procedura, která je volaná (v ukázce tomu tak není)


pondělí 15. února 2010

Opravdová grafika

Následující program využívá jednotku GRAPH. To jsou příkazy, které nebyly součástí původního Pascalu. Byly dopsány z pohodlnosti, protože ne každému se chce malovat čáru tak, že naprogramuje cyklus pokládající do řady za sebe bod po bodu. Jednodušší jistě je napsat něco jako LINE (souradnice zacatku, souradnice konce).
Tato ukázka namaluje 5 soustředných kružnic

pondělí 8. února 2010

Práce se soubory III

Nejjednodušší ukázka práce se soubory!
Postup:

  1. Uložte si tenhle soubor (text viz níže) na svůj disk.
  2. Do stejné složky k němu vytvořte textový soubor s názvem "muj.txt". Obsah tohoto textového souboru může být libovolný. Měl by však obsahovat několik řádků (zhruba 200 znaků či více).
  3. Spusťte pascalský program z této ukázky.
  4. Tento program 
    1. otevře textový soubor "muj.txt"
    2. načte soubor "muj.txt"
    3. vypíše tento soubor na obrazovku
    4. po stisknutí klávesy skončí
    5. zavře soubor "muj.txt"

Úkol:
Upravte tento program tak, aby vstupem byl textový soubor a výstupem byla melodie hraná pomocí SOUND.
Vstup bude tvořen dvojicemi číslic frekvence, délka tónu.

Soubory II

Zde najdete dvojici programů. 
První vytvoří soubor, druhý ho čte.

Práce se soubory I

Funkce
Význam
  assign(f: file, jmeno)
  Přiřadí proměnné typu file jméno souboru
  reset(f: file)
  Otevře soubor
  rewrite(f: file)
  Vytvoří nový soubor (nebo přepíše starý se stejným jménem)
  append(f: text)
  Otevře textový soubor a nastaví pozici na konec souboru
  close(f: file)
  Ukončí práci se souborem
  Filesize(f: file)
  Vrátí počet dat stejného typu jako soubor
  seek(f: file, pozice)
  Přejde na pozici v souboru
  filepos(f: file)
  Vrátí pozici v souboru
  rename(f: file, jmeno)
  Přejmenuje soubor na zadané jméno
  erase(f: file)
  Smaže soubor
  eof(f: text): boolean
  Logická hodnota - je pozice na konci souboru?
  eoln(f: text): boolean
  Logická hodnota - je pozice na konci řádku?
  readln(f: text, prom)
  Načte řádek do textové proměnné
  read(f: file, prom)
  Načte hodnotu do proměnné stejného typu jako soubor
  writeln(f: text, text)
  Zapíše text do textového souboru
  write(f: file, prom)
  Zapíše hodnotu stejného typu jako soubor

pondělí 1. února 2010

Typy čísel a operace s nimi

 

Zvuk v Pascalu (pozor zvlášť ohavné)

Následující program vyluzuje kvílivé zvuky.
Nic moc na poslech.
Čím je užitečný?
  1. Dokumentuje využití procedury volané hodnotami.
  2. Uvádí na scénu typ proměnné WORD.

úterý 26. ledna 2010

Volání procedury hodnotou: hodně základní info

Následující ukázka demonstruje, kterak volat proceduru hodnotou. Hodnoty jsou ta čísla v závorce za názvem procedury.
Pozor: Mohou to být čísla i proměnné! Název procedury je pak tvořen jejím jménem a seznamem proměnných. Ten je uveden v závorce.
Za seznamem proměnných je uveden jejich typ. Tedy něco jako integer, character a tak...:)



pondělí 18. ledna 2010

Volání procedury hodnotou

Proceduru nemusíme volat pouze jejím jménem, k jménu můžeme přidat i vstupní hodnoty, s kterými bude procedura pracovat. Hezky to ukazuje elegantní program z Pedagogické fakulty Jihočeské univerzity:

Písmenka pomocí procedur

Následující program namaluje svislou a vodorovnou čáru i obě šikmé čáry pomocí pseudografiky.
Voláme v něm procedury. Je to zdánlivě zbytečné. Jde ovšem o přípravu volání procedury hodnotou.
Pak bude moci z našeho programu zmizet vždy jedna z dvojice procedur "svisla1" + "svisla2" atd.
Každou proceduru zkrátka zavoláme hodnotami určujícími, kde má čára začínat a kde má končit...
See U later:)

pondělí 4. ledna 2010

Pseudografika

Pseudografika je vcelku k ničemu. 
Její jediný význam spočívá v tom, že se na ni pěkně pocvičí cykly a prvotní programátorské dovednosti. 
Zásadní je tu příkaz gotoXY (cislo, cislo)
je to asi o tom, že se položí kurzor na místo zadané souřadnicemi X a Y a tam se pak píše příkazem write