Střední škola stavební Jihlava
Sada 1 - Základy programování 11. Jednotky v TurboPascalu, jednotka CRT Digitální učební materiál projektu: SŠS Jihlava – šablony registrační číslo projektu:CZ.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a zkvalitnění výuky prostřednictvím ICT
Jaromír Železný © 2012
Projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky
Jednotky v TurboPascalu • v TurboPascalu má programátor možnost přístupu k velkému počtu předdefinovaných prvků (= konstanty, datové typy, procedury a funkce) • všechny prvky najednou se obvykle nevyužijí, proto jsou rozděleny do skupin, které se nazývají jednotky (units) • rozdělení do jednotek umožňuje využívat pouze ty prvky, které se používají v dané aplikaci
Jednotky v TurboPascalu • jednotku lze chápat jako knihovnu deklarací konstant, datových typů, proměnných, procedur a funkcí • do jednotky se obvykle ukládají prvky, které spolu souvisí • jména jednotek, které program používá při svém běhu, se uvádějí oblasti deklarací v části uses
Jednotky v TurboPascalu • součástí překladače TurboPascal je sada standardních předem naprogramovaných jednotek: System - obsahuje všechny standardní procedury a funkce CRT - je jednotka pro práci s obrazovkou DOS - je jednotka pro komunikaci s operačním systémem DOS WinDOS - je jednotka pro komunikaci s operačním systémem v prostředí Windows Strings - podporuje práce s řetězci ukončenými nulou Overlay - obsahuje podporu vytváření modulů pro překrývání kódu Printer - je jednotka pro práci s tiskárnou Graph - je jednotka pro grafické aplikace
• programátor má možnost si sestavit vlastní jednotku.
Jednotka CRT • jednotka CRT obsahuje předprogramované funkce pro přímou obsluhu obrazovky a klávesnice • pokud hodláte používat tuto jednotku v programu, musíme její jméno uvést v oblasti deklarací v části uses USES CRT;
Jednotka CRT • Textbackground (barva); – tímto příkazem určíme jednoduše barvu pozadí textu – barva pozadí má vliv na další příkazy této jednotky
• Textcolor(barva); – určuje barvu textu – pokud jej chcete rozblikat, stačí zadat: textcolor(128) číslo vyšší než 15 vždy rozbliká text na obrazovce
• uvedené procedury se nevztahují na již napsané znaky, ale pouze na znaky, které budeme vypisovat
Jednotka CRT • konstanty barev, využívané procedurami TextBackground a TextColor: Black = 0; {černá} Blue = 1; {modrá} Green = 2; {zelená} Cyan = 3; {modrozelená} Red = 4; {červená} Magenta = 5; {fialová} Yellow = 6; {žlutá} LightGray = 7; {světle šedá}
DarkGray = 8; {tmavě šedá} LightBlue = 9; {světle modrá} LightGreen = 10; {světle zelená} LightCyan = 11; {sv. modrozelená} LightRed = 12; {světle červená} LightMagenta = 13; {světle fialová} Yellow = 14; {žlutá} White = 15; {bílá} Blink = 128; {blikající }
Jednotka CRT • HighVideo; – nastaví vysoký jas – barvy textu 0..7 jsou převedeny na 8-15 (hodnoty jsou zvýšeny o 8)
• LowVideo; – nastaví nízký jas – barvy textu 8-15 jsou převedeny na 0..7 (hodnoty jsou sníženy o 8)
• NormVideo; – odstraní efekt procedur HighVideo a LowVideo, vrátí barvám původní hodnoty
Jednotka CRT • Clrscr – smaže aktuální obrazovku a umístí kurzor na souřadnice 1,1 - do levého horního rohu – při tom se barva pozadí smaže nastavenou hodnotou barvy pozadí Textbackground (barva); (tzn. pokud byla barva pozadí nastavena na modrou a necháme obrazovku smazat, tak se nám pozadí obrazovky změní na celou modrou plochu)
• Clreol – Smaže všechny znaky na aktuální řádce (té, na které se nachází kurzor) – maže na aktuální řádce pozadí, pokud byla nastavena hodnota pozadí na jinou než černou barvu, tak se pozadí řádky obarví touto barvou
Jednotka CRT • Delline – smaže aktuální řádek a posune řádek pod ním na místo aktuálního – nová řádka přibude na spodu obrazovky – barva pozadí smaže nastavenou hodnotou barvy pozadí
• Insline – vloží prázdnou řádku na aktuální pozici kurzoru a všechny řádky pod ní se posunou o jednu níže. – poslední řádka na obrazovce zmizí a na její místo se umístí bývalá předposlední řádka – barva pozadí smaže nastavenou hodnotou barvy pozadí
Jednotka CRT • GotoXY (x,y); – nastaví novou pozici textového kurzoru (místa odkud se provede další výstup na obrazovku) – počátek souřadnic (1,1) je v levém horním rohu
• WhereX – vrací aktuální vodorovnou souřadnici kurzoru
• WhereY – vrací aktuální svislou souřadnici kurzoru
Jednotka CRT • Sound(kmitočet); – spustí zvukový generátor na frekvenci kmitočet Hz. – !!!zvuk je vydáván nepřetržitě !!!
• NoSound; – zastaví zvukový generátor
• Delay(čas); – pozastaví provádění programu na čas milisekund
Jednotka CRT • KeyPressed – funkce KeyPressed vrací logickou hodnotu True, byla-li stisknuta libovolná klávesa – ve všech ostatních případech funkce vrací logickou hodnotu False – stisknutý znak se uloží do vyrovnávací paměti klávesnice, ze které se může vyjmout například pomocí funkce ReadKey – pokud se znak z vyrovnávací paměti nevyjme, opakované volání funkce KeyPressed vrací neustále logickou hodnotu True
• ReadKey – Funkce ReadKey přečte jeden znak z klávesnice – přečtený znak se nezobrazí na obrazovce – pokud funkce KeyPressed vrací logickou hodnotu True před voláním funkce ReadKey, funkce vrací znak okamžitě, v opačném případě funkce čeká na stisk klávesy
Jednotka CRT • napište program, který zahraje následující písničku a zobrazí text v okamžiku, kdy zazní příslušná nota
a bb b C1 D1b D1 E1b E1 F1 G1b G1 A1b
220 233 247 262 277 294 311 330 349 370 392 416
A1 B1b B1 C2 D2b D2 E2b E2 F2 G2b G2 A2b
440 466 494 523 554 587 622 659 698 740 784 831
A2 B2b B2 C3 D3b D3 E3b E3 F3 G3b G3 A3b
880 932 988 1047 1109 1175 1245 1319 1397 1480 1568 1661
A3 B3b B3 C4 D4b D4 E4b E4 F4 G4b G4 A4b
1760 1865 1976 2093 2217 2349 2489 2637 2794 2960 3136 3322
A4 B4b B4 C5 D5b D5 E5b E5 F5 G5b G5 A5b
3520 3729 3951 4186 4434 4698 4978 5274 5588 5920 6272 6644
A5 B5b B5 C6 D6b D6 E6b E6 F6 G6b G6 A6b
7040 7458 7902 8372 8870 9396 9956 10548 11176 11840 12544 13288
Program „Ovčáci“ (1/2) program ovcaci; uses crt; begin clrscr; sound (262); write ('Ov'); delay (500); sound (330); write ('ca'); delay (500); sound (392); write ('ci, '); delay (750); nosound; delay (250); sound (262); write ('ctve'); delay (500); sound (330); write ('ra'); delay (500); sound (392); write ('ci. '); delay (750); nosound; delay (250); writeln; sound (330); write ('Vy '); delay (245); nosound; delay (5); sound (330); write ('jste '); delay (250); sound (294); write ('na'); delay (250); sound (330); write ('si '); delay (250); sound (349); write ('vic'); delay (500); sound (294); write ('ku '); delay (495);nosound; delay (5); writeln;
Program „Ovčáci“ (2/2) sound (330); sound (330); sound (294); sound (330); sound (349); sound (294); sound (330); sound (294); sound (262); repeat until end.
write ('I '); delay (245); nosound; delay (5); write ('tu '); delay (250); write ('co'); delay (250); write ('co'); delay (250); write ('vic'); delay (500); write ('ku '); delay (500); writeln; write ('vy'); delay (500); write ('pa');delay (500); write('sli.'); delay (750); nosound; delay (250); keypressed;
Zdroje: TurboPascal 6.0 - příručka uživatele (help) Literatura: Radek HYLMAR: Programování pro úplné začátečníky, Computer Press, Brno, 2009, ISBN 978-80-251-2129-0 Januš DRÓZD, Rudolf KRYL: Začínáme s programováním, GRADA a.s., Praha, 1992, ISBN 80-85424-41-X Tomáš HRUŠKA: Pascal pro začátečníky, SNTL, Praha 1989, ISBN 80-03-00345-8 Materiál je určen k bezplatnému používání pro potřeby výuky a vzdělávání na všech typech škol a školských zařízení. Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je : Jaromír Železný Pokud není uvedeno jinak, byly při tvorbě použity volně přístupné internetové zdroje. Autor souhlasí se sdílením vytvořených materiálů a jejich umístěním na www.ssstavji.cz.