Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.

Slides:



Advertisements
Podobné prezentace
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_17 Digitální učební materiál Sada: Úvod do programování.
Advertisements

Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Programování funkcí v Excelu
Vstupy a výstupy v JavaScriptu Vstup: použitím metody prompt objektu window čtením hodnot z položek formuláře Výstup : použitím metody alert objektu window.
Programování v Pascalu
Algoritmizace od algoritmu k Pascalu.
Vnitřní řazení v poli (in sito)
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
Fronta - a)Implementace s využitím statických struktur (pole) b)Implementace s využitím dynamických struktur (spojového seznamu) odebírá se ze začátku.
Programování v Pascalu Přednáška 8
Programování v Pascalu Přednáška 4
Programování v Pascalu Přednáška 2
Programování v Pascalu Přednáška 10 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 6
Programování v Pascalu Přednáška 3
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Algoritmizace a programování Datové typy v Delphi - 05
Algoritmizace a programování Podprogramy v Delphi - 10
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
Základy Visual Basicu.
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Informatika I 3. přednáška
Jazyk vývojových diagramů
Procedury a funkce Základní charakteristika a použití v programu.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
Podmienený príkaz. Kĺúčové slová  Pro podmínky se v Pascalu používají klíčové příkazy IF, THEN a ELSE.  Také se jim říká „príkaz vetvenia"..  Příkaz.
Úvod do Pascalu. Co je Pascal? vyšší programovací jazyk poskytuje prostředky pro popis algoritmů, které odrážejí povahu řešených problémů, a nikoliv technickou.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – OPAKOVANÝM VÝBĚREM NEJVĚTŠÍHO PRVKU (SELECTSORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
Informatika I 4. přednáška
Počítače a programování 1
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
Konstanty u jsou datové objekty u jejich hodnoty nelze v programu měnit u Deklarace Const jméno = hodnota Příklad: Textový řetězec ZPRAVA Const ZPRAVA.
Programovací jazyk PASCAL
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Algoritmizace a programování Binární soubory - 14 Mgr. Josef Nožička IKT Algoritmizace a programování
Objektově orientované programování - cvičení 1
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
GYMNÁZIUM, VLAŠIM, TYLOVA
6. Typ záznam Strukturovaný datový typ - znamená spojení několika elementů stejného nebo různých typů do jedné proměnné. Např. pole je strukturovaný datový.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ PROCEDURY S PARAMETRY – NEJBLIŽŠÍ VYŠŠÍ A NIŽŠÍ ČÍSLO Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko,
doc. RNDr. Zdeněk Botek, CSc.
Pascal – if Mgr. Lenka Švancarová.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
4. Typ pole 4.1 Jednorozměrná pole
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ
doc. RNDr. Zdeněk Botek, CSc.
Cvičení 2 Podmíněné příkazy, cykly. Podmíněné příkazy Podmínka – jakýkoliv logický výraz ( a=1,……..) ( a=1,……..) Příkaz – vlastní instrukce, která se.
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ CYKLUS S PŘEDEM DANÝM POČTEM OPAKOVÁNÍ – SOUČIN POMOCÍ SOUČTU Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise,
Algoritmy Úkol: Vytvořte algoritmus pro zadání PIN do mobilu.
M2160 – Úvod do programování II RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové.
Překladače Syntaktická analýza
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
5a. Makra Visual Basic pro Microsoft Escel
program TextovySoubor;
DATOVÉ TYPY určuje druh hodnoty (číslo, text, logická hodnota) a množinu operací (aritmetické, logické, ...) skalární datový typ - hodnoty jsou uspořádané.
CU01 Informatika II 2/13 Základy algoritmizace
Transkript prezentace:

Programování v Pascalu Přednáška 5 RNDr. Hana Havelková

Uživatelské datové typy Deklarace Typová shoda Typová kompatibilita Kompatibilita vůči přiřazení Typová konverze, přetypování Typ množina Procedurální typ

Deklarace typeidentifikátor typu typ =; procedurální typ strukturovaný typ ukazatelový typ řetězcový typ jednoduchý typ identifikátor typu

Příklady type TZnamka = 1.. 5; TTeplota = ; TCislo = real; TJmeno = string[25]; TZnaky = array[1..27] of char; TZnamky = array[1..30] of TZnamka; TUkazatelNaReal = ^real; TUkazatelNaInteger = ^integer;

Příklady type TZima = (prosinec, leden, unor); TMalaPismena = 'a'.. 'z'; TMala = set of TMalaPismena; TRealnaFunkce = function (x : real):real; TRealnaProc = procedure (var x : real); TDatum = object den : integer; mesic : integer; rok : integer; procedure NastavDatum (d, m, r : integer); function ZjistiDatum : string; end;

Typová shoda vyžaduje se u volání procedur a funkcí při náhradě formálních parametrů skutečnými referencí (odkazem) typy T 1 a T 2 jsou shodné, pokud T 1 a T 2 jsou identifikátory stejného typu T 1 je deklarován pomocí pojmenovaného typu ekvivalentního s typem použitým v deklaraci T 2

Příklad shodných typů type T1 = integer; T2 = T1; T3 = integer; T4 = T3;

Příklad různých typů type T1 = ; T2 = ; T3 = T1; var a, b : ; c : T1; T1 a T2 jsou různé typy, T1 a T3 jsou shodné typy proměnné a, b jsou shodného typu, který ovšem není shodný s T1, T2 ani T3

Příklad proměnných různých typů var A, B : set of char; {množina znaků} C : set of char; D : set of char; E : char; F : char; A, B jsou stejného typu C, D jsou různého typu A, C, D jsou navzájem různého typu B, C, D jsou navzájem různého typu E, F jsou shodného typu

Typová kompatibilita vyžaduje se u operandů výrazů nebo v relačních operacích je předpokladem pro kompatibilitu vůči přiřazení oba typy jsou stejné oba typy jsou reálné oba typy jsou celočíselné podtypy jeden typ je podintervalem druhého oba typy jsou podintervalem téhož hostitelského typu oba typy jsou množinové se stejným bázovým typem oba typy jsou packed string se stejnou velikostí jeden typ je string a druhý taky string nebo packed string nebo char jeden typ je Pointer a druhý libovolný ukazatelový jeden typ je PChar a druhý typu array[0..n] of Char (direktiva {$T+}) oba typy jsou ukazatelové typy shodného typu oba typy jsou procedurální s identickým návratovým typem a identickým počtem a identickými typy odpovídajících si parametrů

Kompatibilita vůči přiřazení (1) Hodnota typu T 2 je kompatibilní vůči přiřazení s typem T 1, platí-li: T 1 a T 2 jsou identické typy nepředstavující ani nezahrnující file T 1 a T 2 jsou kompatibilní ordinální typy a obor hodnot typu T 2 je podmnožinou oboru hodnot T 1 T 1 a T 2 jsou reálné typy, obor hodnot typu T 2 je podmnožinou oboru hodnot T 1 T 1 je reálný typ, T 2 je celočíselný typ T 1 a T 2 jsou řetězcové typy T 1 je typu string a T 2 je typu char T 1 je typu string, T 2 je typu packed string T 1 a T 2 jsou typu packed string T 1 a T 2 jsou kompatibilní množinové typy, hodnoty prvků T 2 leží v rozsahu hodnot prvků T 1 T 1 a T 2 jsou kompatibilní ukazatelové typy

Kompatibilita vůči přiřazení (2) Hodnota typu T 2 je kompatibilní vůči přiřazení s typem T 1, platí-li: T 1 je PChar a T 2 je řetězcová konstanta T 1 je typu PChar a T 2 je typu array[0..n] of Char (direktiva {$T+}) T 1 a T 2 jsou kompatibilní procedurální typy T 1 je procedurální typ a T 2 je funkce či procedura s identickým počtem a typy parametrů a identickou návratovou hodnotou T 1 je objektový typ a a T 2 je objektový typ v doméně T 1 Kompatibilita ukazatelů P 1 a P 2 vůči přiřazení P 1 je ukazatel na objektový typ T 1 a P 2 je ukazatel na objektový typ T 2 v doméně T 1

Typová konverze, přetypování implicitní – proběhne automaticky při přiřazení (kompatibilita vůči přiřazení) vyhodnocování výrazů (typová kompatibilita) volání procedur a funkcí hodnotou (typová kompatibilita) explicitní – vynucená konverze uvedením konkrétního typu identifikátor typu identifikátor proměnné výraz )(

Příklady implicitního přetypování var znak : char; jmeno : string; soucet, x : real; vysledek: real; i : integer; b: byte; begin znak :='A'; i := 4; x := 12.56; b := 64; jmeno := znak + 'Jirasek'; soucet := x + i; vysledek := i * b; i := b; b := i; {chyba} ….

Explicitní přetypování var jmeno : string; x : real; vysledek,i: longint; w : word; b: byte; begin x := 12.56; w := 200; b := 150; i := 10; b := byte (i); vysledek := w * b; vysledek := longint(w) * b; b := byte (vysledek); …

Typ množina množina hodnot z bázového ordinálního typu obsahujícího nejvýše 256 různých hodnot ordinalita v rozsahu setordinální typof type TDvoucifernaCisla = ; TMalaCisla = set of TDvoucifernaCisla; TPismena = set of char; var Samohlasky : TPismena; Cislicka: TMalaCisla; begin Samohlasky := ['a', 'e', 'i', 'o', 'u', 'y']; Cislicka := [20, 40, 60, 80];

Příklad použití množin – kontrola psaní i po tvrdých souhláskách (kontroluje pouze h, k, r) var chyba : boolean; znak : char; begin chyba := false; WriteLn('Zadej vetu ukoncenou tečkou a odradkovanim!'); repeat Read(znak); if znak in ['h','k','r'] then begin Read (znak); if znak in ['i','I','í','Í'] then begin chyba := true; break; end; until znak = '.'; if chyba then WriteLn('Veta obsahuje cizi slovo nebo chybu') else WriteLn('Veta je asi v poradku'); ReadLn; end.

Procedurální typ seznam formálních parametrů procedure seznam formálních parametrů function : návratový typ

Příklady {$F+} type Funkce1 = function (x : real) : real; Funkce2 = function (x, y : real) : real; var F1 : Funkce1; F2 : Funkce2; function TretiOdmocnina(x : real) : real; begin TretiOdmocnina := exp(ln(x)/3); end; function Max(x,y : real):real; begin if x > y then Max := x else Max := y; end; begin F1 := TretiOdmocnina; F2 := Max; … end.

Tabelace funkcí jedné reálné proměnné (1) program TabelaceFunkci; {$F+} uses Crt; type fce = function (x:real): real; var klavesa : char; zacatek, konec, prirustek : real; F : fce;

Tabelace funkcí jedné reálné proměnné (2) {deklarace funkci} function sin (x : real) : real; begin sin:=System.sin(x); end; function cos (x : real) : real; begin cos:=System.cos(x); end; function odmocnina2 (x : real) : real; begin odmocnina2 := sqrt(x); end; function mocnina2 (x : real) : real; begin mocnina2 := sqr(x); end;

Tabelace funkcí jedné reálné proměnné (3) {Menu - nabídka} function Menu : char; begin WriteLn ('Tabulky funkcnich hodnot'); WriteLn ('________________________'); WriteLn ('Sinus S'); WriteLn ('Cosinus C'); WriteLn ('2. mocnina....M'); WriteLn ('2. odmocnina..O'); WriteLn ('________________________'); Write ('Stiskni odpovidajici klavesu:'); Menu := UpCase (ReadKey); end;

Tabelace funkcí jedné reálné proměnné (4) {výpis funkcnich hodnot v intervalu <odkud, kam) s prirustkem } procedure Tabulka(odkud, kam, prirustek : real; F:fce); var pom : real; begin pom:=odkud; while pom <= kam do begin WriteLn (pom : 6 : 2, F(pom) : 10 : 2); pom:=pom + prirustek; end;

begin repeat ClrScr; klavesa := Menu; if klavesa = 'K' then break; if not (klavesa in ['S','C','M','O']) then begin WriteLn(#10#13'Chybna klavesa!!!'); Delay(2000); continue; end; Write(#10#13#10'Zacatek intervalu:'); ReadLn(zacatek); Write('Konec intervalu:'); ReadLn(konec); if zacatek > konec then begin WriteLn('CHYBA');Delay(2000); continue; end; Write('Prirustek:'); ReadLn(prirustek); if prirustek <= 0 then prirustek := (konec – zacatek) / 10; case klavesa of 'S':beginWriteLn('Funkce sinus'); Tabulka(zacatek, konec, prirustek, sin); end; 'C':begin WriteLn('Funkce cosinus'); Tabulka(zacatek, konec, prirustek, cos); end; 'M':begin WriteLn('Funkce druhá mocnina'); Tabulka(zacatek, konec, prirustek, mocnina2); end; 'O':beginWriteLn('Funkce druhá odmocnina'); Tabulka(zacatek, konec, prirustek, odmocnina2); end; Delay(4000); until false; end. Hlavní program

Typové konstanty deklarují se v klauzuli const jedná se vlastně o inicializované proměnné ! identifikátortyp : procedurální typ konstanta pole konstanta záznam adres. konstanta konstanta =

Jednoduché typové konstanty const MinTeplota : integer = -10; MaxTeplota : integer = 50; Zrychleni : real = 2.5; Tlak : real = 960.5; Odradkovani : char = #10; Odpoved : char = 'A'; Test : boolean = false;

Řetězcové typové konstanty const Odradkovani : string[2] = #13#10; Zahlavi : string = 'Programovani v Pascalu'; Zapati : string = 'ZS 2008/2009'; CS_Odpoved : string[3] = 'Ano'; EN_Odpoved : string[3] = 'Yes';

Množinové typové konstanty type TTeplota = 0..50; const Samohlasky = set of char = ['a', 'e', 'i', 'o', 'u', 'y']; Cislice : set of char = ['0'.. '9']; Teplota : set of TTeplota = [10..30];