PROGRAMOVÁNÍ. Úvod. BASIC - Co běželo na osmibitech



Podobné dokumenty
Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

IB111 Programování a algoritmizace. Programovací jazyky

Programovací jazyky Přehled a vývoj

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Maturitní otázky z předmětu PROGRAMOVÁNÍ

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

IB111 Úvod do programování skrze Python Přednáška 13

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

Program a životní cyklus programu

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Programovací jazyk Pascal

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

PHP tutoriál (základy PHP snadno a rychle)

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod do programování

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Matematika v programovacích

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Algoritmizace- úvod. Ing. Tomáš Otáhal

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

ČÁST 1. Základy 32bitového programování ve Windows

Úvod. Programovací paradigmata

ALGORITMIZACE A PROGRAMOVÁNÍ

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Assembler - 5.část. poslední změna této stránky: Zpět

VISUAL BASIC. Přehled témat

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Instalace a konfigurace web serveru. WA1 Martin Klíma

Skriptovací jazyky. Obsah

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

VISUAL BASIC. Práce se soubory

Nové jazykové brány do Caché. Daniel Kutáč

Princip funkce počítače

Sada 1 - Základy programování

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Identifikátor materiálu: ICT-1-21

Vstupní požadavky, doporučení a metodické pokyny

Programovací jazyky. Obsah. Proč používáme programovací jazyky? Programovací jazyk

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

Martin Hejtmánek hejtmmar

Maturitní témata Školní rok: 2015/2016

Inovace bakalářského studijního oboru Aplikovaná chemie

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

language="javascript">... </script>.

C2115 Praktický úvod do superpočítání

Programování. Úvod a základní principy. Martin Urza

Stránka se dá otevřít dvěma způsoby

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Algoritmizace. 1. Úvod. Algoritmus

Stručný návod k programu Octave

Ukázka knihy z internetového knihkupectví

Poslední nenulová číslice faktoriálu

6 Příkazy řízení toku

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Další nutný soubor je laydiv.js, ve kterém jsou uloženy funkce pro zobrazování virů na ploše a funkce pro odkaz na Teachers Guide.

Klávesnice je vstupní zařízení určené pro zadávání písmen, znaků, speciálních symbolů a také pro ovládání počítače.

Programové vybavení počítačů operační systémy

Programovací jazyk univerzální notace pro zápis algoritmů, implementována.

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Sada 1 - Základy programování

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

DTP Základy programování Úvod do předmětu

Základy HTML. Autor: Palito

Úvod do aplikací internetu a přehled možností při tvorbě webu

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu:

Rozklad na prvočinitele. 3. prosince 2010

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

5 Přehled operátorů, příkazy, přetypování

6. Příkazy a řídící struktury v Javě

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Střední odborná škola a Střední odborné učiliště, Hořovice

Tabulkový procesor. Základní rysy

Transkript:

PROGRAMOVÁNÍ Úvod 1. Poněkud zastaralejší programovací jazyk. Byl vyvinut v roce 1964 v Darthmouth College v USA. Název vznikl zkratkou Beginners All-purpose Symbolic Instruction Code, což víceméně znamená: Pro začátečníky určený víceúčelový programovací prostředek. Basic nemá pevně danou normu - existuje mnoho "typů" (Basic-G, QBasic, Visual Basic, PDS,). Další vlastností Basicu je jeho vhodnost pro krátké prográmky, ovšem píšete-li něco většího, zaručeně se ve zdrojáku ztratíte. Je to proto, že nemá moc velké formální požadavky - nemusíte vůbec nic definovat (což silně ubírá na přehlednosti). 2. Budu se tu zabývat QBasicem. Pracuje v Dosu a i dnes se ještě někdy vyskytuje. Pokud chcete psát pro Windows, zajímejte se o Visual Basic, ale já osobně bych raději psal pro Windows v Delphi (možná se o tom zmíním v části o Pascalu). BASIC - Co běželo na osmibitech Mám na mysli Basicy na počítačích ZX Spectrum, IQ 151, Každý tento počítač měl trochu odlišnou verzi Basicu (liší se v detailech jako velikost písmene pro proměnné, několika příkazy, ). Z dnešního pohledu to jsou celkem hrozné jazyky: na začátku každého řádku je číslice (větší než předchozí a menší než následující - většinou jdou po desítkách). Tato číslice slouží jako návěstí pro GOTO. je zde omezený počet proměnných (286 číselných a 286 textových). Proměnné jsou ve tvaru: velké nediakritické písmeno nebo velké nediakritické písmeno s jednou číslicí (proto ten přesný počet proměnných - písmen je 26 a číslic 10 + jedno písmeno bez číslice, to je 11 * 26 = 286). K textové proměnné se ještě přidá $. vůbec se nerozlišuje mezi jednotlivými číselnými datovými typy. V podstatě jsou všechny číselné proměnné typu real, i když progamátorovi stačí i integer. chybí cykly WHILE a REPEAT, často neexistuje úplný podmíněný příkaz (tzn., že u IF.. THEN často není ELSE). Zato se zde úplně běžně pracuje s GOTO (které se ve všech normálních jazycích používá jen vyjímečně - pokud tam je), za THEN se GOTO ani nemusí psát!!! neexistuje složený příkaz (k použítí u FOR nebo IF), jeho nedostatek se nahrazuje několika příkazy GOTO. U FOR se konec zdrojového textu k opakování označuje slovem NEXT. Z tohoto všeho vyplývá, že zdrojový text v těchto Basicích je totálně nepřehledný. Už trochu složitější program je vlastně síť příkazů GOTO, kde si ani nemůžeme nějak rozumně pojmenovat návěstí (stejně tak s proměnnými). Vypadalo to asi takhle: 10 CLS 20 PRINT "Napis libovolne kladne cislo"; 30 INPUT A1 40 IF A1<0 THEN 80 50 IF A1=0 THEN 100 60 PRINT "Vyborne, je fakt kladne" 70 GOTO 120 80 PRINT "Je zaporne, mas napsat kladne!!!" 90 GOTO 20 100 PRINT "Je to nula, mas napsat kladne cislo!!!" 110 GOTO 20 120 END 1

Tento příklad je trochu přehnaný, šel by napsat jednodušeji, ale mě nic lepšího nenapadlo. Myslím, že je docela pochopitelný i pro ty, kteří Basic neovládají. Samozřejmě u verzí s ELSE nebo se složeným príkazem by byl podstatně jednodušší. QBasic Je to jedna z nejoblíbenějších verzí Basicu. Jako jedna z mála je vybavena slušnými prostředky pro struturované programování (moderní způsob programování - využití podmínek, procedur, funkcí, cyklů,). Nemá už většinu výše popsaných problémů "osmibitových" Basiců: nemusejí se číslovat řádky (tudíž systém návěstí je obdobný Pascalu). proměnné si člověk může pojmenovat skoro jak chce (opět s podobnými pravidly jako v Pascalu). typ proměné se zde určuje podle posledního znaku. Například znak "%" značí proměnnou typu integer, znak "$" značí string, U typu single (obdoba single - real v Pascalu) se poslední znak nemusí používat. cyklů je až moc (2x víc než v Pascalu), všechny jsou řešeny podobně jako pascalovské repeat-until s pevně určeným začátkem a koncem. podobně zbytečně vysoké je i množství logických operátorů (nejen běžné AND, OR, XOR, NOT, ale i EQV - ekvivalence a IMP - implikace). složený příkaz se řeší psaním příkazů na jeden řádek s dvojtečkou mezi nimi, v podstatě ale není vůbec potřeba (u cyklů ani u podmínky IF jej nevyužijete). neexistuje většina složených datových typů (o záznamech (record) nebo dokonce objektech si můžete nechat zdát) - najdete zde jen pole (array). Stejně tak zde nejsou ukazatele. příkaz IF se zápisuje stylem IF - THEN - ELSE - ELSEIF - END IF, dá se ovšem zredukovat jen na prosté IF - THEN. QBasic podporuje i procedury a funkce, proměnné se jim mohou předávat hodnotou (u funkce - FUNCTION) i odkazem (u procedury - SUB). Kromě toho zde jsou ještě podprogramy - v podstatě blok kódu mimo hlavní program. Editor QBasicu má dost nepříjemnou vlastnost - je velmi aktivní, sám se snaží předělávat autoru program již během psaní, při opuštění řádky kurzorem se pokusí tento řádek zkompilovat, a pokud jej "nepřečte", pošle vás zpět (ale dá se to vypnout). QBasicu jsou nejbližší verze QuickBasic a PDS. QBasic je pouze interpret - tzn., že chcete-li si spustit svůj program, musíte jej vždy spustit v QBasicu, program je kompilován přímo za běhu. Doporučuji QuickBasic - je tu možnost výroby "samospustitelných" programů (lze je spustit jako obyčejný exe soubor, ale musejí mít u sebe BRun45.exe, který je za běhu kompiluje). S PDS nemám žádné zkušenosti. QBasic si můžete stáhnout ze sekce ke stážení, ale pokud vím, tento program je standardní součástí většiny verzí operačního systému MS-DOS. Vyhrabal jsem to ještě z dob, kdy jsem se Qb aktivně zabýval. Ukázka syntaxe SCREEN 8 REM nastavení grafického režimu 640x200 CLS PRINT PRINT " M E T R O N O M " SLEEP 3 k$ = INKEY$ DO PRINT "zadej pomlku (1-32)" PRINT "1=cela " PRINT "2=pulova " INPUT " ", dp% LOOP WHILE dp% > 32 2

DO GOSUB zaklad PLAY "O2" READ x DATA 320,260,320,380 IF x = 260 OR x = 380 THEN y = 60 IF x = 320 THEN y = 52 IF x = 380 THEN RESTORE IF x = 260 THEN PLAY "C32" IF x = 380 THEN PLAY "D32" LINE (320, 120)-(x, y), 14 CIRCLE (x, y), 10, 14 IF dp% < 1 THEN dp% = 1 IF dp% > 32 THEN dp% = 32 PLAY "P" + STR$(dp% * 2) k$ = INKEY$ IF k$ = "q" THEN dp% = dp% - 1 IF k$ = "w" THEN dp% = dp% + 1 IF k$ = "k" THEN GOTO blokk CLS LOCATE 21, 2 PRINT "pomlka - "; dp% LOCATE 22, 2 PRINT "q - zpomaleni w - zrychleni k - konec" LOOP UNTIL k$ = "k" blokk: END zaklad: LINE (250, 150)-(390, 150) LINE (250, 150)-(300, 50) LINE (390, 150)-(340, 50) LINE (300, 50)-(340, 50) LINE (320, 50)-(320, 120) LINE (265, 120)-(375, 120) REM konec zakladu,stred je (320,120) RETURN Úkolem tohoto programu je vytvořit metronom, graficky znázorněný i pravidelně pípající. Jak vidíte, zápis je poněkud nepřehledný, ačkoli se tu objevuje podprogram (zakladreturn s odkazem GOSUB). V ukázce jsou pěkně vidět cykly DO-LOOP UNTIL a DO-LOOP WHILE. V programu je návěstí blokk. Proměnné jsou typu string (k$) a single (x, y,), určitá vzláštnost jsou integery (dp%), které se obyčejně v QBasicu nepoužívají. Na začátku není potřeba vypisovat žádné formality (jako třeba výčet proměnných), zde začíná program nastavením modu obrazovky a vypsáním názvu programu (REM jsou poznámky). ASSEMBLER Asm obecně Assembler (oficiálně česky Jazyk symbolických adres) vznikl někdy na konci čtyřicátých let minulého století. Patří mezi nižší programovací jazyky (strojově orientované). To znamená, že "slova" jazyka víceméně odpovídají instrukcím strojového kódu. Jejich podoba je však samozřejmě zapamatovatelnější (alespoň pro ty, kteří umějí anglicky). Kompilátor má tedy podstatně jednodušší práci, než u vyšších jazyků (to jsou prakticky všechny ostatní). Výhodou je vysoká rychlost kompilace, a někdy i programu. Ve své době to byl docela pokrok, programátor si nemusel pamatovat (nebo zdlouhavě vyhledávat v tabulkách) spousty nezapamatovatelných znaků, ale stačilo mu napsat např. pro skok (jump) instrukci 3

JMP (+ parametry), pro nastavení (přesun) dat (move) MOV (+ parametry), Až o hodně později jej nahradily vyšší programovací jazyky a se dnes používa jen jako jejich doplňek. Podle mého názoru se v dnešní době "čistým" Assemblerem zabývají jen šílenci a špičkoví odborníci. Takhle například vypadá výpis textu TENHLE PROGRAM UMI NAPSAT I $ v čistém Assembleru (pro Turbo Assembler - TASM; tento soubor bude com, ne exe) : A SEGMENT ASSUME CS:A,DS:A ORG 100H START: MOV AH,9 MOV DX,OFFSET TEXT INT 21H MOV DL,'$' MOV AH,2 INT 21H INT 20H TEXT DB 'TENHLE PROGRAM',10,13,'UMI NAPSAT I $' A ENDS END START Pro srovnání v Pascalu by zdroják vypadal asi takto: writeln('tenhle PROGRAM'); writeln('umi NAPSAT I $'); end. V assembleru začíná vlastní program tím START (a končí END START). To před tím je označení segmentu a podobné inicializační "keci". MOV slouží k přiřazení hodnoty proměnné nebo registru (tedy totéž jako : = /dvojtečka + rovná se/ v Pascalu; registr je něco jako paměťový obvod v procesoru, je tedy podstatně rychlejší než RAM). INT 21H značí přerušení Dosu, přičemž vykoná službu jejíž číslo je v registru AH a ostatní instrukce potřebné k této funkci jsou v dalších registrech. Ten znak pro dolar ($) v UMI NAPSAT I $ značí ukončení řetězce, nevypíše se tedy (pokud jej vynecháte, program bude vypisovat text z paměti tak dlouho, dokud náhodou na tento znak nenarazí). K vypsání znaku $ slouží nastavení MOV DL,'$' a MOV AH,2. INT 20H je přerušení - ukončení programu. Myslím, že jako ukázka pro nezasvěcené to docela stačí. Pro programátory má assembler tedy smysl pouze jako doplněk nějakého vyššího jazyka (direktiva ASM v Pascalu; podobně v C), např. při psaní operačního systému se bez assembleru neobejdete. Vkládaný Assembler v jazyce Pascal Pokud umíte alespoň základy Pascalu, může se vám hodit direktiva ASM. V ní vkládáte do zdrojového kódu Pascalu části psané v Assembleru. Nemůžete zde však využívat všechny možnosti Asm. Týká se to zejména 32bitových registrů a speciálních příkazů pro "vyšší" procesory (využívá jen příkazy pro 8086, jde nastavit i pro 80286). Můžete však nejen urychlit program (což je pro normálního programátora dost velký problém, a na většině počítačů to stejně nepoznáte), ale hlavně ovládat myš, joystick, a mít přístup na jednotlivé porty. Podrobně jsou jednotlivé funkce popsány v systémových manuálech (porty, funkce dosu, rom-biosu,). Jeden free manuál (AtHelp) najdete v sekci Ke stažení. Další sehnatelné manuály jsou např.: SysMan, TechHelp, 4

Ovládání myši Jedna z věcí, kterou v praxi určitě využijete: var x,y:word; {může být i Integer} {zobrazení/vypnutí kurzoru:} mov ax,01h {získání aktuální polohy myši -souřadnice x,y} mov ax,03h mov x,cx mov y,dx {získání polohy posledního kliku tlačítka} mov ax,05h mov bx,tl mov x,cx mov y,dx end. Místo tl příjde číslo tlačítka myši. Bude-li místo tl číslo 0, značí to levé tlačítko myši, jednička odpovídá pravému a dvojka prostřednímu (existuje-li). Ovládání NumLocku Pomocí vkládaného assembleru jde také ovládat nastavení Num Locku, Caps Locku a Scroll Locku. Je to překvapivě jednoduché: var x:byte; mov al,0edh out 60h,al mov al,x out 60h,al Proměnná x je osmibitová proměnná na jejímž základě se rozsvítí diody. Zjednodušeně: je-li x=1 zapne se Scroll Lock, je-li 2 zapne se Num Lock a je-li 4 zapne se Caps Lock. Nulou se vypnou všechny. Chcete-li zapnout jejich kombinaci, jednoduše hodnoty sečtete - např. je li x=7, zapnou se všechny. 5

Nejsem si jist, zda to poběží na Win XP nebo Win 2000. Je stisknut shift, ctrl,? Zjistit, zda jsou stisknuty přeřaďovače nebo nastaveny trvalé přeřaďovače není až tak složité: var p,i,z:byte; a:array[1..8] of byte; s:string; {načtení bytu p:} mov ah,02h int 16h mov p,al {zpracovani na array a:} i:=0; repeat i:=i+1; z:=p mod 2; p:=p div 2; a[i]:=z; until p=0; for i:=1 to 8 do s:=' '; if a[i]=1 then case i of 1:s:='pravý Shift'; 2:s:='levý Shift'; 3:s:='Ctrl'; 4:s:='Alt'; 5:s:='ScrollLock'; 6:s:='NumLock'; 7:s:='CapsLock'; 8:s:='Insert'; writeln(s); end. Veškeré stavy přeřaďovačů obsahuje už byte p. Ten se potom ve druhém odstavci zpracuje na array a - jednotlivé bity se převedou na prvky pole (není to potřeba, ale lépe se to čte; v podstatě je to plýtvání místem - jednotlivé prvky pole (byte) obsahují pouze hodnoty 0 a 1). Poslední odstavec pouze ukazuje význam jednotlivých bitů. 6

PASCAL Úvod do Pascalu Pascal je asi nejlepší výukový jazyk pro Dos. Pro Windows existuje Delphi, kt. z něj syntakticky vychází. Pascal byl speciálně vyvinut jako výukový jazyk, a proto není zrovna nejvhodnější pro hodně velké projekty. Vymyslel jej v roce 1970 Švícar N. Wirth. Setkal jsem se s dvěma verzemi - Borland Pascalem a Turbo Pascalem. Programy jsem psal v obou, ale rozdíly mezi nimi jsem nenašel (jenom vzájemně nepasovaly soubory jednotek.tpu). Pascal má obrovské možnosti v tzv. strukturovaných datových typech (složené datové typy, které spojují několik jednoduchých). Má velké formální požadavky - programátor musí definovat téměř úplně vše a to v přesně daném pořadí. Co potřebujete pro začátek Rozhodně si stáhněte BP ze sekce Ke stažení (je to balík všech možných Pascalů, ale Borland je rozhodně nejpoužitelnější). Má českou nápovědu (která se mi zobrazuje neuvěřitelně čajově). Pokud si Pascal chcete jen vyskoušet stačí vám si stáhnout TP ze stejné sekce. Jinak ho ale moc nedoporučuji, je pěkně vykuchaný (nemá např. vůbec unitu Graph). Pokud nemáte žádnou učebnici, odskočte si ze sekce Odkazy na Algoritmy a programování. Doporučuji stáhnout celé stránky. Několik tipů Ukazatel a dynamické datové struktury Je to dost velké, a tak jsem to dal na vlastní stránku. Problémy klávesnice Znak Zkratka ' Altgr + 3 9 (apostrof) Altgr + 9 4 ^ (/"š") < Altgr + 6 0 * > Altgr + "y" * { } Altgr + "b","n" [ ] Altgr + "f","g" Pokud skusíte programovat v Pascalu na české klávesnici, možná zjistíte, že některé znaky neumíte napsat, protože je na klávesnici prostě nenajdete. Obvykle tam jsou, ale mají nějakou šílenou zkratku. Ta většinou je (v Dosu): pravý Alt (Altgr, u starších počítačů údajně Ctrl + Alt) + něco. To něco je buď jedna klávesa na alfanumerické nebo několik čísel na numerické části klávesnice. Předpokládám, že #, @ nebo \ napsat umíte (pro jistotu Alt + x, v, q), a tak vypisuji ty méně používané (pro Dos), které využijete při programování v Pascalu a vlastně při psaní v jakémkoli dosáckém textovém editoru. Dosovský ovladač klávesnice nebere zkratky Alt+ "," (čárka) a Alt+ "." (tečka) pro znaky označené hvězdičkou * jako Windows, ale mnohé klávesnice mají mezi levým Shiftem a Y ještě jednu klávesu, která by s Altem měla vypsat "<", takže nemusíte vypisovat pokaždé tu šedesátku. Pro Windows jsou ty skratky stejné - u číselných kombinací však používáme levý Alt. 7

Jak ovládat myš, ScrollLock, Spousta věcí se dá udělat pouze pomocí vkládaného Assembleru. Jedná se hlavně o ovládání myši a joysticku, o kontrolu přeřaďovacích kláves (ctrl, numlock, ) a další. Několik takových věcí jsem popsal v části o Assembleru. Jak vymazat obsah složky Pascal umožňuje rušit složku, jen pokud je prázdná. Pokud je ve složce velké množství souborů, nebo pokud neznáte její přesný obsah, je nejjednodušší použít příkaz FindFirst: uses dos; var w:integer; dirinfo:tsearchrec; jm:string; s:text; findfirst('*.*',faarchive,dirinfo); repeat {převedení jména souboru z array[0..12] of char na string:} for w:=0 to 12 do jm:=jm+dirinfo.name[w]; assign(s,jm); erase(s); jm:=''; findnext(dirinfo); until doserror<>0; {když je doserror 0, program našel soubor} end. Psaní vlastních jednotek (unit) Pokud pracujete ve více programech se stále stejnými procedurami a funkcemi, můžete v Pascalu využít možnosti psaní vlastních jednotek. Ty se pak zadávají stejně jako např. jednotka Dos, nebo Crt. Psaní jednotek je věc úplně primitivní. V části interface se vypisují názvy (a vztupní + výztupní údaje) procedur, funkcí, konstant (, ), které tvoří obsah knihovny, ve zdrojáku exáče je potom můžeme používat (pokud máme v uses tuto jednotku). Potom je část implementation, ve které jsou jednotlivé výše uvedené fce a procedury vysvětleny (je tam jejich obsah). Mohou tu být i procedury (a fce), které nejsou v interface (a tudíž nemohou být užity ve zdrojáku exáče), jichž využívají ostatní procedury (a samozřejmě fce). V poslední části jsou inicializační věci jednotky, dávají se mezi a end. (s tečkou). Tato část se dost často vynechává, dá se tam prostě jenom end. (s tečkou samozřejmě). Tohle je třeba jednotka, kterou požívám k ovládání myši (trochu jsem ji zkrátil). unit myscz; interface {ukazuje obsah knihovny} type tlmysi=(leve,prave,prostredni); {datový typ použitý v jednotce} function initmys:word; {inicializuj myš} procedure nastkurzor(zk:boolean); {true - zapni / false - vypni kurzor} procedure kdejetlac(tl:tlmysi;var xs:integer; var ys:integer;var poc:integer); {kde se naposledy stisklo požadované tlačítko (xs a ys) a kolikrát se stisklo od posledního měření (poc)} implementation {obsahuje výpis knihovny} 8

function initmys:word; {inicializuj myš} var tl:word; mov ax,01 mov tl,bx initmys:=tl; procedure nastkurzor(zk:boolean); if zk=true then mov ax,01 end else mov ax,02 procedure kdejetlac(tl:tlmysi;var xs:integer; var ys:integer;var poc:integer);{05} var ctl:word; {číslo tlačítka} x,y,p:word; case tl of leve: ctl:=0; prave: ctl:=1; prostredni: ctl:=2; mov ax,05 mov bx,ctl mov x,cx mov y,dx mov p,bx poc:=p; xs:=x; ys:=y; end. Podle tohoto schématu si Pascal sám nakompiluje jednotku TPU. V podstatě stejnou strukturu jako zdroják pascalovské unity má i program v Delphi (jazyk pro Windows odvozený z Pascalu). Zde je většina procedur (nebo funkcí) reakcí na nějakou událost (kliknutí myší na tlačítko, ). Dělení programovacích jazyků Programovací jazyky se dají rozdělit podle mnoha kritérií. Nejčastější způsoby jsou tyto: 9

Vyšší a nižší Nižší programovací jazyky jsou jazyky primitivní, jejichž instrukce (víceméně přesně) odpovídají příkazům procesoru. To znamená, že procesor bude vykonávat ty instrukce, které programátor napíše. Jsou závislé na svém procesoru a nepřenositelné na jiný (nepříbuzný) procesor (program z 386 na Pentiu pojede, ale na Atari (procesor Motorola) ne). V praxi to vypadá tak, že programátor musí vypisovat "každou pitomost", i jednoduchý program má neúměrně složitý zdrojový kód. Výhodou je, že programátor má takto přístup i k funkcím počítače, které by měl ve vyšším programovacím jazyce nedosažitelné. Patří sem jazyk symbolických adres (Assembler), strojový kód, vzláštním typem nižšího jazyka je tzv. autokód, který spojuje prvky nižších a vyšších jazyků. Vyšší (problémově orientované) programovací jazyky jsou podstatně srozumitelnější, struktura jejich zdrojáků je logická, nejsou závislé na strojových principech počítače. Do strojového kódu se převádějí kompilátorem. V praxi je vyšší programovací jazyk vše, co není Assembler, to znamená: Pascal, C, Basic, Prolog, Lisp, Algol, Fortran, Procedurální a neprocedurální Procedurální jazyky jsou téměř všechny jazyky, které se běžně používají. K řešení úlohy se používá algoritmu (postup, jak se má daná úloha vyřešit). U neprocedurálních jazyků se pouze logickými výroky popisuje daný problém a cíl k řešení úlohy. Např. Prolog, Lisp. Interpretované a kompilované Interpretované jazyky jsou překládány až za běhu programu. Jsou pomalejší, ale nemají tak velké formální požadavky (není potřeba inicializovat proměnnou, její datový typ se může měnit, ). Např. většina verzí Basicu, všechny skriptovací jazyky. Kompilované jazyky jsou celé přeloženy a až potom mohou být spušněny. Jsou rychlejší, mají vyšší nároky na formální správnost kódu. Patří sem většina klasických programovacích jazyků. Teoreticky může mít jeden programovací jazyk verzi interpretovanou i kompilovanou. Některé další programovací jazyky Ada Jazyk určený k výrobě bezpečných a spolehlivých programů. Vyznačuje se velmi silnou typovou kontrolou. Velmi univerzální jazyk, píše se v něm i řídící software pro různé stroje včetně letadel, raketoplánů a dalších. Syntakticky vychází z Pascalu. Algol Algorithmic Language = algoritmický jazyk. Jeden z nejstarších programovacích jazyků (byl vytvořen na přelomu 50. a 60. let). Byl zaměřen na řešení zejména vědeckých a technických úloh. Ačkoliv obsahoval mnoho moderních prvků (které se používají dodnes), příliš se nerozšířil. Je základem všech moderních jazyků. Existuje spousta verzí Algolu, např. Algol 58, Algol 60, Algol 68. ASP Active Server Pages. Serverový skriptovací jazyk od Microsoftu. Má zhruba stejné možnosti jako PHP, ale poněkud složitější syntaxi. Existuje jen na serverech s operačním systémem windows. 10

Assembler Basic Assembler = sestavitel (programu). Mám jej na vlastní stránce. Beginners All-purpose Symbolic Instruction Code = Pro začátečníky určený víceúčelový programovací prostředek. Opět je na vlastní stránce. C Jazyk relativně nízké úrovně, původně zaměřený na programování operačních systémů. Má velmi úsporné vyjadřování, a proto je velmi nepřehledný. Existuje velké množství rozšíření jazyka, nejznámější je objektově orientované C++. Cobol Common Business Oriented Language = obecně obchodně orientovaný jazyk. Jeden z nestarších vyšších programovacích jazyků. Vznikl z potřeby programovacího jazyka pro obchodní a ekonomické úlohy, pro úlohy s hromadným zpracováním dat. Opět existuje mnoho verzí tohoto jazyka, např. Cobol- 60, Cobol-61, Cobol-65, Cobol-69, Delphi Programovací jazyk pro Windows vycházející synatkticky z Pascalu. Jeho protředí je vizuální, to znamená, že programátor určuje vzhled programu "kreslením" myší, stejným způsobem i vytváří některé části kódu. Samotný kód se celý skládá z procedur - reakcí na události (klik na prvek, ). Fortran Formula Translation = překlad vzorců. Vůbec první vyšší programovací jazyk. Vznikl v padesátých letech 20. století (první oficiální verze 1957), byl vhodný spíše k matematickým výpočtům. Znamenal ohromný pokrok ve vývoji programování, v podstatě všechny vyšší jazyky z něj (alespoň nepřímo) vycházejí. Dnes se již nepoužívá. HTML Není programovací jazyk, ale jazyk pro práci s hypertextem. HyperText Markup Language = značkovací jazyk pro tvorbu hypertextu (= textu s aktivními odkazy). Základní nástroj pro vytváření internetových stránek. Zobrazený text je doplněn značkami(tagy; jsou v špičatých závorkách), popisujícími jeho vlastnosti. Java Objektově orientovaný programovací jazyk nezávislý na platformě. Vyvinula jej firma Sun Microsystems. Používá se téměř všude, jako doplnění internetových stránek klientským skriptem (java applet), serverový skript (JSP), stejně jako na hry do mobilů i obyčejné programy pro jakýkoli operační systém. Vychází z jazyka C++ (jako mnoho jiných jazyků), který poněkud zjednodušuje. Jako konkurenční jazyk od Microsoftu vznikl C#. JavaScript Nejčastěji používaný internetový klientský skriptovací jazyk. Proběhne až v internetovém prohlížeči (na rozdíl např. od PHP, které proběhne už na serveru). Z bezpečnostních důvodů může ovlivňovat jen 11

internetovou stránku, nikoli uživatelský počítač. Neco mám o něm vzlášť. Podobně je na tom i méně používaný VBScript. Lisp List processing. Nejstarší neprocedurální jazyk. Veškeré problémy řeší pomocí symbolů a jejich seznamů. Používá se v programování umělé inteligence. Má velké množství dialektů. Modula 2 Vychází z Pascalu, používal se i ke tvorbě hodně velkých projektů, podporuje modulární programování. MySQL Zjednodušená a free verze SQL - Structured Query Language. Jazyk pro práci s databází. De facto jediná jeho práce spočívá v tom, že vytváří tabulky, ukládá do nich data a vyhledává v nich údaje podle pokynů uživatele. V praxi jej využívají hlavně jiné jazyky (PHP, ) za použití několika spolupracujících tabulek. Pascal Perl Mám jej na vlastní stránce. Practical Extraction Report Language. Téměř univerzální interpretovaný jazyk. Dá se v něm napsat prakticky cokoliv, ale v praxi se používá zejména k psaní CGI skriptů (internetová technologie, serverový skript založený na výstupu.exe souboru) a v těch případech, kdy je potřeba složitě zpracovávat text. Je dosti nepřehledný. PHP Personal Home Page Tools (zkratka se vyvíjela - např.:personal Home Page Construction Kit, dnes: PHP:Hypertext Preprocesor, a to první P je z historických důvodů.). Internetový skriptovací jazyk (serverový) používaný k tvorbě webových stránek. Instrukce se vkládájí do HTML kódu, syntaxe je podobná jazyku C. Práce programu probíhá v serveru, na uživatelský počítač se dostávají jen výsledky. Podobně jsou na tom i zastaralé SSI a výlučně windowsácké ASP. PHP je volně šiřitelné. Prolog Programming in Logic = logické programování. Je to neprocedurální jazyk (na rozdíl od většiny ostatních jazyků), popisuje programátorský problém pomocí logických výroků. Používá se k řešení problémů, které se dají popsat ve formě objektů a vztahů mezi nimi, k tvorbě umělé inteligence. Python Snobol Přehlednější, avšak ne tak oblíbená obdoba Perlu. String Oriented Symbolic Language - Jazyk určený pro práci s řetězci. První jazyk zaměrený zejména na zpracování textových řetězců. V dnešní době byl nahrazen zejména Perlem a dalšími jazyky. 12

SSI Server Side Includes - vsuvky na straně serveru. Jednoduchý zastaralý serverový skriptovací jazyk. Nemá zdaleka takové možnosti jako PHP nebo ASP. Tcl Tool Command Language. Univerzální skriptovací jazyk. Je oblíben zejména díky knihovně Tk, která umožňuje psát programy s grafickým rozhraním. Visual Basic Programovací jazyk pro Windows od Microsoftu. Má vizuální prostředí. S ostatními Basici nemá příliš společného. VBScript Visual Basic Script. Internetový skriptovací jazyk, běžící u klienta, obdoba JavaScriptu. Syntakticky vychází z Visual Basicu. Jeho největší nevýhoda (oproti JavaScriptu) je, že jej podporuje jen IE. V podstatě se jedná o nepovedený pokus Microsoftu konkurovat JavaScriptu. XML není programovací jazyk, ale jazyk pro práci s daty. Zjednodušená verze jazyka SGML, který sloužil (dnes se už nepoužívá) ke tvorbě datových formátů založených na stejném základě (vždy se jedná o text doplněný pomocnými znaky, určujícími kvalitu a vlastnosti daného textu). Nejpožívanější z těchto formátů je HTML. XML vznikl odstraněním nepotřebných prvků SGML a jeho modernizací. Skládá se z tagů (s libovolným textem), které však nemají pevný význam, ten se musí definovat v dalším jazyku (např. DTD, XML Schema, SOX nebo XDR) - čímž se vytvoří nový datový formát, pro zobrazení textu na internetu je potřeba ještě definovat vzhled prvků (pomocí CSS nebo XSL FO). Například jazyk XHTML vznikl jako předefinování HTML v XML. Další požívaný jazyk vytvořený v XML je RDF. 13