Programování v Pascalu Přednáška 4

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

Pro začátek něco lehčího
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Programování funkcí v Excelu (pole)
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.
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.
Programování v Pascalu Přednáška 8
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 5 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Algoritmizace a programování Podprogramy v Delphi - 10
9. Jednotka - unit Jednotky jsou základem modulárního programování v pascalu. Mohou sloužit jako knihovny, které lze připojovat k různým programům bez.
If-else, do-while, switch, operátory
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ř.
Algoritmizace a programování
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
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.
Informatika I 2. přednáška
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_18 Digitální učební materiál Sada: Úvod do programování.
ALGO – Algoritmizace 2. cvičení
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Ů – 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
Cvičení.
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
2 CYKLUS S PEVNÝM POČTEM OPAKOVÁNÍ Podle řídící proměnné proveď n-krát příkaz P1.
Pascal - cykly.
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.
Algoritmizace a programování Textové soubory - 13 Mgr. Josef Nožička IKT Algoritmizace a programování
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ý.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
ZÁKLADNÍ POJMY. ZDROJOVÝ TEXT PROGRAMU Tvoří: klíčová slova komentáře identifikátory.
doc. RNDr. Zdeněk Botek, CSc.
Pascal – if Mgr. Lenka Švancarová.
4. Typ pole 4.1 Jednorozměrná pole
Pascal – strukturované příkazy
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ
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.
VY_32_INOVACE_PR2_14. Cyklus umožňuje opakování určité posloupnosti příkazů bez nutnosti psát je stále znovu. Používáme tři základní druhy cyklů: cyklus.
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
© Copyright Radim Štefan
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Podprogramy.
Transkript prezentace:

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

Příkazy cyklu for while repeat … until

Cyklus for předem je znám počet opakování cyklu je řízený řídící proměnnou (počitadlem) řídící proměnná musí být ordinálního typu počáteční hodnota a koncová hodnota počitadla je předem dána počáteční hodnota se zvyšuje (snižuje) o 1 do koncové hodnoty jedná se vlastně o cyklus s podmínkou na začátku, takže nemusí proběhnout ani jednou – je-li např. počáteční hodnota větší než koncová a má se zvyšovat proměnná for to do downto := kon. hodnota poč. hodnota příkaz

Příklad cyklu for – součet posloupnosti n čísel var n, i : integer; cislo, suma : real; begin Write('Zadej počet hodnot: '); ReadLn(n); suma := 0; for i := 1 to n do begin Write(i +'. cislo: '); ReadLn(cislo); suma := suma + cislo; end; WriteLn('Soucet je ', suma); ReadLn end.

Příklad for – tabulka druhých odmocnin celých čísel v daném rozsahu const dolni_mez : integer = 1; horni_mez : integer = 100; var n : integer; begin for n := dolni_mez to horni_mez do WriteLn(n : 3, sqrt(n) : 8 : 4); ReadLn end.

Příklad for – výpis násobků 5 od 1 do N var N, i : integer; begin Write('Zadej N: '); ReadLn(N); for i := 1 to N div 5 do Write (5*i ,' '); WriteLn; ReadLn end.

Cyklus while cyklus s podmínkou na začátku podmínka (logický výraz) se vyhodnotí je-li true (podmínka platí), vykonají se příkazy těla cyklu a jde se znovu na další testování podmínky je-li false (podmínka neplatí), provádění cyklu je ukončeno nemusí být předem znám počet opakování cyklu cyklus nemusí proběhnout ani jednou while do log. výraz příkaz

Největší společný dělitel dvou čísel {Eukleiduv algoritmus} var x, y : word; begin Write('Zadej dvě přirozená čísla: '); readLn(x, y); while x <> y do begin if x > y then x := x – y else y := y – x; end; WriteLn('NSD je: ', x); ReadLn end.

Přirozená mocnina čísla - xn var x, mocnina : real; n : byte; begin Write('Zadej číslo: '); ReadLn(x); Write('Zadej přirozený exponent: ');ReadLn(n); mocnina := 1; while n > 0 do begin if Odd(n) then mocnina := mocnina * x; {n je liché} n := n div 2; x := x * x; end; WriteLn('Mocnina je ', mocnina : 16:4); ReadLn end.

Průměr posloupnosti čísel zakončené pomocí CTRL-Z (eof stand. vstupu) var pocet : integer; cislo, suma : real; begin pocet := 0; suma := 0; Write('Zadej první číslo: '); while not eof do begin readLn(cislo); Inc(pocet); suma := suma + cislo; Write('Další číslo: '); end; if pocet > 0 then WriteLn('Průměr: ', suma/pocet : 12:4) else WriteLn('Prázdná posloupnost'); ReadLn end.

Nekonečný cyklus  while true do WriteLn('Ahoj'); Ukončení nekonečného provádění programu: CTRL - Break

Tabelace funkce sin, cos Nekonečný cyklus  const PI : real = 3.14159265359; var x, prirustek, dolni_mez, horni_mez : real; begin dolni_mez := 0; horni_mez:= 2*PI; prirustek := PI/20; x := dolni_mez; while x <> horni_mez do begin WriteLn(x:10:8, sin(x) :12:8, cos(x) : 12 : 8); x := x + prirustek; end; ReadLn end. Proč asi?

Cyklus repeat cyklus s podmínkou na konci podmínka (logický výraz) se vyhodnotí je-li false (podmínka neplatí), vykonají se příkazy těla cyklu a jde se znovu na další testování podmínky je-li true (podmínka platí), provádění cyklu je ukončeno předem není znám počet opakování cyklus proběhne vždy aspoň jednou repeat until příkaz log. výraz

Kontrola zadávání známky v rozsahu 1 – 5 var znamka : byte; begin repeat Write('Zadej známku: '); ReadLn(znamka); until (znamka > 0) and (znamka < 6); …. end.

Největší společný dělitel podruhé var x, y, zbytek : word; begin Write('Zadej dvě přirozená čísla'); ReadLn(x, y); repeat zbytek := x mod y; x := y; y := zbytek; until zbytek = 0; WriteLn('NSD je ', x); ReadLn end.

Blok představuje jistou ucelenou část programu programové jednotky procedury funkce metody je složen z deklarací (mohou být v libovolném pořadí) návěští konstant typů proměnných procedur a funkcí příkazů

Rozsah platnosti identifikátorů veškeré identifikátory a návěští deklarované v deklarační části bloku mají omezenou platnost pro tento blok – jsou lokální použijeme-li tedy v různých blocích stejné identifikátory, mohou se překrývat, jsou-li bloky do sebe vnořeny

Test platnosti program TestPlatnosti; var a, b : integer; procedure Pokus; a : integer; begin a:=77; WriteLn(a:3, b:3, a*b:5); end; {hlavní program} a:=5; b:= 10; WriteLn(a:3, b:3, a*b:5) ; {vypíše 5 10 50} Pokus; {vypíše 77 10 770} end.

Podprogramy ucelené části kódu, které se mají opakované využití umožňují strukturovat (zpřehlednit) kód Dělí se na procedury – nevracejí hodnotu funkce – vracejí hodnotu

Deklarace procedury hlavička procedury blok procedury identifikátor seznam formálních parametrů kvalifikovaný identifikátor procedure

Tělo procedury blok near ; forward external far asm blok interrupt direktiva inline

Parametry seznam formálních parametrů deklarace parametru ( ) deklarace parametru ; deklarace parametru seznam parametrů var const : typ

Druhy formálních parametrů hodnotové nepředchází jim var je uveden jejich typ konstantní předchází jim const proměnné předchází jim var netypové předchází jim var nebo const není uveden jejich typ

Hodnotové parametry formální parametr představuje lokální proměnnou v dané proceduře (funkci) jako skutečný parametr může figurovat výraz, který se vyhodnotí a dosadí do příslušné lokální proměnné náhrada formálního parametru skutečným je tzv. náhrada hodnotou typ skutečného parametru nesmí být file nebo strukturovaný typ zahrnující typ file skutečný a formální parametr musí být kompatibilní vůči přiřazení je-li skutečný parametr podtyp typu string, musí být formální parametr typu string

Konstantní parametry formální parametr se chová jako read-only lokální proměnná procedury (funkce) této proměnné není možné přiřadit nějakou hodnotu hodnota této proměnné je získána z odpovídajícího skutečného parametru při použití konstantních parametrů se generuje efektivnější kód, než kdyby se použily hodnotové parametry, které by byly neměnné

Proměnné parametry používají se, pokud je nutné voláním procedury (funkce) zajistit výstup hodnoty – výstupní parametry (vlastně vstupně-výstupní) formální parametr představuje skutečnou proměnnou existující ještě před voláním procedury (funkce) jakýkoliv odkaz na formální parametr je vlastně odkazem na skutečný parametr náhrada formálního parametru skutečným je tzv. náhrada odkazem (referencí) skutečný parametr musí být proměnná stejného typu jako formální parametr direktiva $P reguluje použití parametrů typu string {$P+} typ string představuje parametr open-string {$P-} typ string odpovídá string[255]

Netypové parametry skutečným parametrem může být odkaz na libovolnou proměnnou nebo konstantu netypový parametr uvedený klíčovým slovem var se dá modifikovat netypový parametr uvedený klíčovým slovem const je read-only

Příklad – podtržený text procedure PodtrzenyText (txt : string); var delka, i : byte; begin delka := Length(txt); Writeln(txt); for i := 1 to delka do Write('_'); WriteLn; end; Poznámka: mohl by být použit konstantní parametr tj. procedure PodtrzenyText (const txt : string);

Převod čísla na řetězec procedure IntToStr (n : integer; var S : string); var cifra : char; A : integer; begin S := ''; A := Abs(n); repeat cifra := Chr((A mod 10) + Ord('0')); S := cifra + S; A := A div 10; until A = 0; if n < 0 then S := '-' + S ; end;

Procedura vyměňující hodnoty dvou proměnných procedure Vymena(var a : real; var b : real) var tmp : real; begin tmp := a; a := b; b := tmp; end;

Near a far TP podporuje dva modely volání procedur a funkcí near – efektivnější kód, ale tyto procedury a fce se dají použít jen z modulu, v němž jsou deklarovány far – méně efektivní kód, ale procedury a fce se dají použít z libovolného modulu, tj. nejen z toho, v němž jsou deklarovány Překladač automaticky korektně volí vhodný model procedury a fce deklarované v implementation části programové jednotky (unit) – model near procedury a fce deklarované v interface části programové jednotky (unit) – model far direktiva {$F+} vynucuje far model direktiva {$F-} ponechává volbu na překladači

Forward zveřejňuje pouze uvádí hlavičku procedury či funkce umožňuje použít proceduru (fci) v kódu dříve, než je definována definice této procedury či funkce musí následovat někde dále, není pak již nutné uvádět seznam formálních parametrů (ani návratový typ fce)

External umožňuje použít (připojit, přilinkovat) procedury a fce původně napsané v assembleru, které byly již přeloženy do souborů OBJ příslušný kód se musí připojit direktivou {$L jmeno_souboru} procedure MoveWord(var Source, Destination; Count : word); external; procedure FillWord(var Destination; Data:integer; Count : word); external; {$L d:\ASM\PROC.OBJ}

Assembler umožňuje psát celé procedury (fce) v assembleru assembler deklarační část asm příkaz ;

Inline umožňuje psát místo bloku příkazů pascalského kódu rovnou psát strojový kód

Deklarace funkce hlavička funkce hlavička funkce blok funkce function identifikátor seznam form. parametrů kvalif. identifikátor function návratový typ :

Funkce signum function Signum (cislo : real) : shortint ; begin if cislo > 0 then Signum := 1 else if cislo = 0 then Signum := 0 else Signum := -1; end;

Ciferný součet function CifernySoucet(cislo : word) : byte; var suma, cifra : byte; begin suma := 0; while cislo > 0 do begin cifra := cislo mod 10; cislo := cislo div 10 suma := suma + cifra; end;