250 likes | 429 Views
Informatika I 1. přednáška. RNDr. Jiří Dvořák, CSc. dvorak @fme.vutbr.cz. Obsah přednášky. Úvod do programování Algoritmus a prostředky jeho vyjádření Programovací jazyky a programovací styly Úvod do jazyka Pascal Úvod do prostředí Delphi. Úvod do programování. program. počítač. vstupy.
E N D
Informatika I1. přednáška RNDr. Jiří Dvořák, CSc. dvorak@fme.vutbr.cz
Obsah přednášky • Úvod do programování • Algoritmus a prostředky jeho vyjádření • Programovací jazyky a programovací styly • Úvod do jazyka Pascal • Úvod do prostředí Delphi Informatika I: přednáška 1
Úvod do programování program počítač vstupy výstupy Program je předpis pro transformaci vstupů na výstupy. Niklaus Wirth: program = algoritmus + datové struktury Informatika I: přednáška 1
Algoritmus Algoritmus je konečný soubor pravidel, jež dávají návod k vyřešení určité třídy úloh. Základní požadavky na algoritmus • determinovanost (algoritmus musí být přesný a jednoznačný) • rezultativnost (v konečném počtu kroků se musí dospět k výsledku) • efektivnost (jednotlivé operace musejí být proveditelné v konečném časovém intervalu) • hromadnost (algoritmus se týká celé skupiny úloh téhož typu) Informatika I: přednáška 1
Prostředky vyjádření algoritmu • Přirozený jazyk • Jazyk matematiky • Grafické prostředky (vývojové diagramy, struktogramy, … ) • Pseudojazyky (liší se od programovacích jazyků volnějšími pravidly syntaxe) • Programovací jazyky Informatika I: přednáška 1
Příklad slovního vyjádření algoritmu Euklidův algoritmus pro výpočet největšího společného dělitele dvou celých kladných čísel (předpokládáme, že zadaná čísla jsou uložena v proměnných M a N): 1. Urči zbytek R po celočíselném dělení hodnoty M hodnotou N. 2. Hodnotu N přesuň do proměnné M a hodnotu R do proměnné N. 3. Je-li N nulové, pak hodnota největšího společného dělitele je obsažena v M a výpočet končí. V opačném případě se výpočet vrací na krok 1. Informatika I: přednáška 1
Programovací jazyky ?. generace - přirozený jazyk? 4. generace - neprocedurální a problémově orientované jazyky 3. generace - procedurální jazyky vysoké úrovně 2. generace - assembler 1. generace - strojový jazyk počítač Informatika I: přednáška 1
Informace o programovacích jazycích http://www.cs.waikato.ac.nz/~marku/languages.html http://www.idiom.com/free-compilers/ http://directory.google.com/Top/Computers/Programming/Languages/ Informatika I: přednáška 1
Definice programovacího jazyka Složky definice programovacího jazyka: • Abeceda základní (terminální) symboly jazyka • Syntaxe pravidla pro tvorbu jazykových konstrukcí • Sémantika význam jazykových konstrukcí Informatika I: přednáška 1
Překladače • Kompilační překladače generují program ve strojovém kódu, který pak může být opakovaně využíván. • Interpretační překladače interpretují příkazy programu. Jejich použití je méně efektivní, protože při každém výpočtu musí být program vždy znovu interpretován. Informatika I: přednáška 1
Programovací styly Algoritmus = logika (funkce) + řízení CO SE DĚLÁJAK SE TO DĚLÁ Imperativní styl - výrazná řídicí složka Procedurální jazyky (Fortran, Pascal, C, ... ) Neimperativní styl - výrazná složka logiky (funkce) Neprocedurální jazyky • logické programování (Prolog) • funkcionální programování (Lisp, Haskell, … ) Informatika I: přednáška 1
Programovací jazyk Pascal Programovací jazyk Pascal navrhnul prof. Niklaus Wirth na počátku 70. let. Autor sledoval dva hlavní cíle: • vytvořit jazyk vhodný pro systematickou výuku programování, založený na jasných, jednoduchých a srozumitelných konstrukcích • umožnit jednoduchou a efektivní realizaci překladačů tohoto jazyka Některé významné implementace jazyka Pascal: • Turbo Pascal, Borland Pascal (nejen jazyk, ale také prostředí pro vývoj programů) • Object Pascal (součást programového prostředí Delphi) Informatika I: přednáška 1
Lexikální jednotky jazyka Pascal • Symboly abecedy písmena, číslice, speciální symboly, klíčová slova • Identifikátory posloupnosti písmen a číslic začínající písmenem • Čísla celá, reálná (v desetinném nebo semilogaritmickém tvaru) • Řetězce posloupnosti znaků uzavřené apostrofy • Komentáře posloupnosti znaků uzavřené do složených závorek • Oddělovače lexikálních jednotek mezera, konec řádku, komentář Informatika I: přednáška 1
Příklady lexikálních jednotek • Klíčová slova begin, end, if, for, while, mod • Identifikátory (nerozlišují se velká a malá písmena, místo písmena může být také podtržítko) alfa, X12, y23b, Beta_1, CelkovySoucet • Čísla 123, -58, 17.35, -0.975, 1E6, 2.5E-7 Pozn.: 2.5E-7 znamená 2,5 ·107 • Řetězce 'alfa', 'Celkovy soucet = ' • Komentáře {Cteni vstupnich udaju} Informatika I: přednáška 1
Identifikátor Identifikátor slouží k označení konstant, typů, proměnných, položek záznamů, procedur a funkcí a jejich parametrů, … Ukázky syntaktické definice identifikátoru: identifikátor ::= písmeno písmeno | číslice identifikátor písmeno písmeno číslice Informatika I: přednáška 1
Výrazy Výraz je pravidlo pro získání nějaké hodnoty. Výraz může obsahovat konstanty, proměnné, volání funkcí, operátory a závorky. Volání funkce začíná jménem funkce, za nímž v závorkách následuje seznam parametrů oddělených čárkami. Operátory: • aritmetické (pracují s číselnými hodnotami a výsledkem je číselná hodnota): + , ,* , /, div (celočíselné dělení), mod(zbytek po celočíselném dělení); • logické (pracují s logickými hodnotami a výsledkem je logická hodnota): not(negace), and(logický součin), or (logický součet); logické hodnoty jsou true (pravda), false (nepravda); negace je unární operátor, logický součin a součet jsou binární operátory; • relační (porovnávají dvě hodnoty stejného typu a výsledkem je logická hodnota): = , <>(nerovno), < , <= (menší nebo rovno), > , >=(větší nebo rovno) Informatika I: přednáška 1
Vyhodnocování výrazů Výrazy se vyhodnocují postupně zleva doprava při respektování priority operátorů a závorek. Aby byl výraz vyhodnocen, musí být zapsán do nějakého příkazu. Úrovně priority operátorů: volání funkcenejvyšší priorita not * , /, div, mod, and + , , or = , <> , < , <= , > , >=nejnižší priorita Informatika I: přednáška 1
Matematický zápis Zápis v Pascalu 2b/c a/(bc) (a+sin(x))/b (-b+sqrt(sqr(b)-4ac))/(2a) (a<=x) and (x<=b) Příklady zápisu výrazů Informatika I: přednáška 1
Přiřazovací příkaz proměnná:=výraz Výraz na pravé straně se vyhodnotí a jeho hodnota se přiřadí proměnné. Příklady přiřazovacích příkazů: X:=2 I:=I+1 y:=sqr(sin(x))-cos(x) D:=sqr(b)-4ac Informatika I: přednáška 1
Příkazy vstupu a výstupu read(proměnná) readln(proměnná) příkazy vstupu readln write(výraz) writeln(výraz) příkazy výstupu writeln Příkazy vstupu mohou obsahovat několik proměnných, oddělených čárkami. Příkazy výstupu mohou obsahovat několik výrazů oddělených čárkami. Informatika I: přednáška 1
Příklady příkazů vstupu a výstupu read(N); read(Zn1,Zn2); readln(a,b,c); readln; write(44); write(x); write((A+B)/2); write(N,sqrt(N); writeln('Prumer = ',Soucet/Pocet); writeln; Informatika I: přednáška 1
Struktura programu v jazyce Pascal program jméno_programu; deklarace návěští; definice konstant; definice typů; deklarace proměnných; deklarace procedur a funkcí; begin příkaz1; příkaz2; . . . end. blok Informatika I: přednáška 1
Příklad jednoduchého programu program prumer; var a,b,p:real; begin writeln('Zadej 2 cisla'); readln(a,b); p:=(a+b)/2; writeln('Prumer = ',p); writeln('Stiskni Enter'); readln; end. Informatika I: přednáška 1
Struktura programu v prostředí Delphi program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Informatika I: přednáška 1
Předdefinovaná struktura jednotky v Delphi unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} end. Informatika I: přednáška 1