M1160 – Úvod do programování I RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická 68a, 602 00 BRNO kanc.: A209, : +420 – 549 495 751 E-mail: pelikan@fi.muni.cz http://www.fi.muni.cz/usr/pelikan
Cíl předmětu Seznámit studenty se základními principy používanými při řešení problémů na počítači Předmět je vyučován s pomocí programova-cího jazyka Pascal Na konci tohoto předmětu bude student scho-pen: navrhnout algoritmus řešící zadaný problém zapsat algoritmus v programovacím jazyce Pascal provést odladění programu 13/04/2017
Organizace předmětu 1 přednáška (učebna A318): pondělí 14:00 – 15:50 3 cvičební skupiny (učebny B116 a B117): úterý 16:00 – 17:50 pátek 10:00 – 11:50, 14:00 – 15:50 Předmět pokračuje v jarním semestru před-náškou M2160 Úvod do programování II 13/04/2017
Požadavky ke kolokviu Zápočet: „úspěšné“ napsání průběžných písemek splnění všech domácích úkolů (v termínu) maximálně dvě neomluvené neúčasti na cvičení Zápočet musí být zapsán na ISu nejpozději 12 hodin před začátkem kolokvia Kolokvium probíhá ve dvou částech: vypracování programu (na počítači): 90 minut diskuse nad řešeným problémem + další otázky 13/04/2017
Literatura (1) Pelikán, Jaroslav: Prezentace k přednáškám z předmětu M1160 Úvod do programování I http://www.fi.muni.cz/usr/pelikan Dokumentace k Free Pascalu: http://www.freepascal.org/docs.var Hála, Tomáš: Učebnice Pascalu, Computer Press 2002 Drózd, Januš – Kryl, Rudolf: Začínáme s pro-gramováním, Grada 1992 13/04/2017
Literatura (2) Wirth, Niklaus: Algoritmy a štruktúry údajov: Algorithm + Data Structures = Programs, Bratislava Alfa 1989 Teixeira, S. – Pacheco, X.: Mistrovství v Delphi 6, Computer Press 2002 Lischner, R.: Delphi v kostce, Computer Press 2000 13/04/2017
Programovací jazyky Strojový kód Jazyk symbolických instrukcí – Assembler vědeckotechnické výpočty FORTRAN, ALGOL, COBOL hromadné zpracování dat SIMULA, LISP, SIMSCRIPT PL/1, ADA, Prolog, C/C++, C#, Pascal, Java 13/04/2017
Překladač – Compiler Program provádějící transformaci určitého textu (alfanumericky kódované informace, např. program v Pascalu) na posloupnost bytů reprezentující program ve strojovém kódu 13/04/2017
„Životopis“ programu Zdrojový kód (např. Pascal) Makroexpanze Překlad (compilation) lexikální, syntaktická a sémantická analýza Sestavení (linking) Spuštění programu 13/04/2017
Programovací jazyk Pascal (1) prof. Niklaus Wirth, Švýcarsko 1971 – 1973 Základní cíle: vytvořit jazyk vhodný pro výuku programování definovat jazyk, jehož implementace na součas-ných počítačích vedou k efektivním a spolehli-vým programům 13/04/2017
Programovací jazyk Pascal (2) Hlavní výhody: standardizace řídících struktur, které vedou k vytváření dobře strukturovaných a čitelných programů bohatost datových typů relativně snadná přenositelnost na různé typy počítačů 13/04/2017
Programovací jazyk Pascal (3) 1980 – zveřejněn návrh normy ISO jazyka Pascal Borland: Turbo (Borland) Pascal 7.0 (pro MS-DOS) Turbo Pascal for Windows Borland Delphi – do verze Borland Delphi 2006 Embarcadero Technologies: Delphi XE7 (pro Windows 2000, XP, Vista, 7, 8, Andorid, a iOS 7) 13/04/2017
Programovací jazyk Pascal (4) SourceForge.net – Free Pascal: volně šiřitelný překladač jazyka Pascal http://sourceforge.net/projects/freepascal/ obsahuje vývojové prostředí pracující v texto-vém režimu je k dispozici pro různé platformy, např.: Win32, Win64 Linux BSD Mac OS 13/04/2017
Základní pojmy (1) Identifikátor: konečná posloupnost písmen a číslic začínající písmenem. Překladač rozlišuje vždy jen určitý počet znaků nesmí obsahovat mezeru název volíme mnemonicky např.: teplota, tlak, x1, x2, … 13/04/2017
Základní pojmy (2) Klíčová slova: slova mající v programovacím jazyce svůj speciální význam identifikátor nesmí být pojmenovaný stejně jako klíčové slovo neobsahují mezeru např: program, begin, end, ... 13/04/2017
Poznámka Dva sousedící identifikátory, klíčová slova nebo čísla musí být od sebe oddělena ales-poň jednou mezerou nebo jiným oddělova-čem Přebytečné mezery a oddělovače řádků jsou překladačem ignorovány Pascal nerozlišuje velká a malá písmena (case insensitive) 13/04/2017
Struktura programu v jazyce Pascal program identifikátor; uses seznam knihovních modulů; label deklarace návěští; const definice konstant; type definice datových typů; var deklarace proměnných; deklarace procedur a funkcí; begin end. hlavička část deklarací a definic příkazová část 13/04/2017
Příkazy výstupu (1) Příkaz Write: Příkaz WriteLn: obecný tvar: Write (p1, p2, …, pn) funkce: zobrazí hodnoty parametrů p1, p2, …, pn na standardním výstupu (nejčastěji obrazovka monitoru) Příkaz WriteLn: obecný tvar: WriteLn (p1, p2, …, pn) funkce: zobrazí hodnoty parametrů p1, p2, …, pn na standardním výstupu a následně provede pře-chod na nový řádek (odřádkování) 13/04/2017
Příkazy výstupu (2) Poznámky: parametry p1, p2, …, pn mohou být: výrazy (např. aritmetické nebo logické): příkazy Write a WriteLn zobrazí jejich výsledné hodnoty proměnné: příkazy Write a WriteLn zobrazí hodnoty těchto proměn-ných řetězce – posloupnosti znaků uzavřené v apostrofech: příkazy Write a WriteLn provedou jejich zobrazení (bez jakékoliv změny) příkaz WriteLn může být použit i bez parametrů, což způsobí pouze odřádkování 13/04/2017
Úprava programu Klíčová slova begin a end psát pod sebe Příkazy mezi begin a end odsadit o dvě až tři mezery Středník oddělující dva příkazy psát bezpro-středně za první z nich Záhlaví programu opatřit komentářem, který obsahuje zadání problému, jehož řešení pro-gram představuje 13/04/2017
Komentáře Poznámky, které jsou překladačem ignoro-vány Nemají žádný vliv na funkci programu Zapisují se: mezi znaky (*, *) nebo {, } za znaky // za poznámku jsou považovány všechny znaky až do konce řádku 13/04/2017
Konstanty a výrazy Konstanty: Pojmenované konstanty: Výrazy: pevně dané hodnoty určitého typu (např. číslo) čísla v Pascalu celá (integer): 264, –1, 8765 reálná (real): 3.1415926, –427.812, 1.0, 4E–5, 1.2E3 Pojmenované konstanty: const identifikátor=konstanta; např: const PI=3.14159; HorniMez=40; Výrazy: tvořeny pomocí +, –, *, /, (,), … např: 8+4.5/2.0*2 13/04/2017
Formátovaný výstup Používán nejčastěji v souvislosti s parametry, jejichž výsledkem je číselná hodnota: formátování celočíselných parametrů: obecný tvar: X:N funkce: způsobí, že číslo dané parametrem X je zobrazeno na N míst formátování reálných parametrů: obecný tvar: X:N:D způsobí, že číslo dané parametrem X je zobrazeno celkem na N míst, z nichž D míst je vymezeno pro desetinnou část 13/04/2017
Proměnné Proměnná: Poznámka: identifikátor, který může být v různých okam-žicích realizace programu spojen s různými hodnotami (téhož typu). deklarace: var id11, id12, …, id1n: datový typ1; id21, id22, …, id2m: datový typ2; např: var i, j, k: integer; x, y: real; Poznámka: konstanta ne; má pevně danou hodnotu 13/04/2017
Příkazy vstupu Příkaz Read: Příkaz ReadLn: obecný tvar: Read (p1, p2, …, pn) funkce: načte hodnoty parametrů p1, p2, …, pn ze standardního vstupu (nejčastěji klávesnice) Příkaz ReadLn: obecný tvar: ReadLn (p1, p2, …, pn) funkce: načte hodnoty parametrů p1, p2, …, pn ze standardního vstupu a následně provede přechod na nový řádek Pozn.: V roli parametrů p1, p2, …, pn mohou vystupovat pouze proměnné 13/04/2017
Program v Pascalu Program v jazyce Pascal je tvořen symboly a oddělovači Symboly: speciální symboly slovní symboly identifikátory čísla znakové řetězce návěští 13/04/2017
Speciální symboly + - * / . , : ; := .. += -= *= /= + - * / . , : ; := .. += -= *= /= = <> < <= > >= ( ) [ ] @ { } $ % # ^ (* *) (. .) 13/04/2017
Speciální symboly – ekvivalence [ je ekvivalentní (. ] je ekvivalentní .) { je ekvivalentní (* } je ekvivalentní *) 13/04/2017
Slovní symboly (1) Klíčová (rezervovaná) slova: and, array, as, asm, begin, case, class, const, constructor, destructor, dispose, div, do, downto, else, end, except, exit, exports, false, file, finalization, finally, for, function, goto, if, implementation, in, inherited, initialization, inline, interface, is, label, library, mod, new, nil, not, object, of, on, operator, or, out, packed, procedure, program, property, raise, record, reintroduce, repeat, self, set, shl, shr, string, then, threadvar, to, true, try, type, unit, until, uses, var, while, with, xor 13/04/2017
Slovní symboly (2) Modifikátory: absolute, abstract, alias, assembler, cdecl, cppdecl, default, export, external, far, far16, forward, index, local, name, near, nostackframe, oldfpccall, override, pascal, private, protected, public, published, read, register, safecall, softfloat, stdcall,virtual, write 13/04/2017
Identifikátory (1) Identifikátor může mít libovolnou délku, ale Free Pascal rozlišuje jen prvních 255 znaků Písmeno Podtržítko Písmeno Číslice Podtržítko 13/04/2017
Identifikátory (2) Podtržítko: Číslice: _ 9 13/04/2017
Identifikátory (3) Písmeno: Hexadecimální číslice: A Z a z Číslice A F 13/04/2017
Čísla (1) Celá: – – dekadická: hexadecimální: + Číslice + $ Hex. číslice – 13/04/2017
Čísla (2) – binární: pozn.: binární číslice: + % Bin. číslice 1 1 13/04/2017
Čísla (3) Reálná: Exp: – – + Číslice . Číslice Exp E + Číslice e 13/04/2017
Řetězce (1) Posloupnost (žádného nebo více) znaků uzavřených mezi apostrofy napsaná na jednom řádku Rozlišují se velká a malá písmena Může obsahovat české znaky a mezery Může obsahovat i řídící („netisknutelné“) znaky 13/04/2017
Řetězce (2) Znak: libovolný znak ASCII Hodnota: celé číslo <0; 255> ‘ ‘ Znak # Hodnota 13/04/2017
Návěští Označují pascalovský příkaz Od příkazu se oddělují dvojtečkou (:) Celá čísla bez znaménka Free Pascal umožňuje použít i identifikátor Posloupnost číslic Identifikátor 13/04/2017
Oddělovače Mezera Tabulátor Oddělovač řádku Poznámky (komentáře): mohou obsahovat libovolnou posloupnost znaků včetně oddělovače řádků mohou být všude tam, kde se může objevit mezera 13/04/2017
Poznámka – mezery Nesmí se vyskytnout v: klíčových slovech identifikátorech dvojznacích, např.: := <> (* .. atd. 13/04/2017