Úvod do Pascal u

Post on 13-Mar-2016

53 views 2 download

description

Úvod do Pascal u. Co je Pascal ?. vyšší programovací jazyk poskytuje prostředky pro popis algoritmů, které odrážejí povahu řešených problémů, a nikoliv technickou realizaci výpočetních procesů na počítači. 1 967-71: Niklaus Wirth. Jednoduch ý p rogram. program ahoj ; begin - PowerPoint PPT Presentation

transcript

Ú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 realizaci výpočetních procesů na počítači.

• 1967-71: Niklaus Wirth

2

Jednoduchý program

program ahoj;begin writeln (‘Hello World’);

end.

jméno programu

klíčová slova

Je velmi důležité program

správně členit.

3

Program a zdrojový kód

• proces začíná v textovém editoru• zde píšeme zdrojový kód• ten je uložen s příponou .PAS• počítač nerozumí textu v Pascalu; jazyk musí

být přeložen do strojového kódu• toto zajistí překladač (compiler => kompilovat)

4

Jak funguje překlad?

fáze 1: překladač zkontroluje, zda se v kódu vyskytují syntaktické chyby (např. překlepy)

Pokud jsou chyby nalezeny, vypíšou se a překlad je ukončen. Programátor může nyní nalezené chyby opravit.

2 fáze překladu

5

Jak funguje překlad?

fáze 2: Po odstranění všech chyb je zdrojový kód převeden do spustitelného programu (.exe)

6

7

Klíčová (rezervovaná) slova

8

ČteníV Pascalu je čtení prováděno příkazem Readln

Readln: pracuje s textem i s číselnými hodnotami

Readln: samostatně může být použit pro zastavení běhu programu (čeká se na stisk ENTER)

9

ČteníV Pascalu je čtení prováděno příkazem Readln

Readln: pracuje s textem i s číselnými hodnotami

Readln: samostatně může být použit pro zastavení běhu programu (čeká se na stisk ENTER)

var A,B,C: integer;S: string;

begin readln(A);readln(B,C);

readln(S); readln;end.

10

ČteníV Pascalu je čtení prováděno příkazem Readln

Readln: pracuje s textem i s číselnými hodnotami

Readln: samostatně může být použit pro zastavení běhu programu (čeká se na stisk ENTER)

var A,B,C: integer;S: string;

begin readln(A);readln(B,C);

readln(S); readln;end.

47 A=471234 -45 B=1234 a C=-45Zaciname s Pascalem S = ’Zaciname s Pascalem’

ENTER

ENTER

ENTER

ENTER 11

Zápis (tisk)je prováděn příkazy Write nebo Writeln

Writeln(‘Zadej cislo: ‘); … zobrazí řetězec napsaný v uvozovkách a odřádkuje

Writeln(A); … vytiskne hodnotu proměnné A a odřádkuje

Write(A); … stejné jako dříve, ale bez odřádkování

Writeln; … odřádkuje12

Zápis (tisk)

13

Zápis (tisk)

14

Proměnná

• veličina určitého typu, která může měnit svou hodnotu, ne však svůj typ

• proměnná musí být deklarována• deklarace proměnných začíná klíčovým

slovem var (což je zkratka ze slova variable)

Byte Char

Integer String

Real Boolean15

Datové typy

• Boolean : logická proměnná: true, false• Integer: celá čísla mezi –32768 a 32767• Real : reálná čísla• Char : znaky (např. @; t; 6)• String : řetězec - složen z žádného nebo více

znaků• Array: pole prvků určitého typu

např. A:array[1..100] of Real;

16

17

18

19

20

21

22

23

Datové typy definované uživatelem

var M,N:Integer; K,L:1..100;

type TypSto=1..100;

var M,N:Integer; K,L:TypSto;

M, N … standardního celočíselného typu IntegerK,L … celočíselné prom., mohou nabývat jen

hodnot od 1 do 100

Je možno nejprve deklarovat celočíselný typ vázaný na příslušný interval (označen bude např. identifikátorem TypSto), a teprve potom pomocí identifikátoru typu deklarovat proměnné K, L

možnost definovat další typy

24

Datové typy definované uživatelem Příklad: Mají-li např. X, Y představovat body v třírozměrném prostoru, jejichž souřadnice se mohou v průběhu programu měnit, lze příslušná proměnná třísložková pole deklarovat přímo zápisem

var X,Y:array[1..3] of Real;

25

Příklad: Mají-li např. X, Y představovat body v třírozměrném prostoru, jejichž souřadnice se mohou v průběhu programu měnit, lze příslušná proměnná třísložková pole deklarovat přímo zápisem

var X,Y:array[1..3] of Real;

nebo nejprve deklarovat příslušný typ (bude označen identifikátorem TypBod), tj. psát

Datové typy definované uživatelem

26

Příklad: Mají-li např. X, Y představovat body v třírozměrném prostoru, jejichž souřadnice se mohou v průběhu programu měnit, lze příslušná proměnná třísložková pole deklarovat přímo zápisem

var X,Y:array[1..3] of Real;

nebo nejprve deklarovat příslušný typ (bude označen identifikátorem TypBod), tj. psát

type TypBod=array[1..3] of Real;

var X,Y:TypBod;

Datové typy definované uživatelem

27

Datové typy definované uživatelem

28

Pojmenování proměnných

• identifikátor - musí začínat písmenem, může obsahovat číslice a znak podtržení

29

Konstanty

• data, která nemění svou hodnotu– literál, tj. přímý zápis hodnoty v programu, – pojmenovaná konstanta, tj. pomocí

identifikátoru, který je pro příslušnou hodnotu použit v úseku deklarací konstant (úsek deklarací konstant začíná klíčovým slovem const).

const T0=273.15; Dimenze=2;

30

Příkaz přiřazení

31

Příkaz přiřazení

32

Příkaz přiřazení

33

Příkaz přiřazení

zapíše data do již dříve deklarované proměnnénapř.cislo := 25;adresa := ’25 High Street’;

34

Matematické operace

+ sčítání

- odčítání

* násobení/ div mod dělení

mod zbytek po celočíselném dělení div celočíselné dělení

35

36

3.5

37

3.5

38

39

40

41

Matematické operace• není definován aritmetický operátor pro

umocňování

• mocniny s malým přirozeným exponentem:– funkce Sqr nebo opakované násobení

• jiné mocniny (s reálným exponentem, a tedy též pro zápis odmocnin)– funkce Power nebo matematický vztah

AB = e B*ln A (pro A > 0)42

Matematické operace

43

Matematické operace

44

Matematické operace

45

Matematické operace

46

Přepona trojúhelníka

47

Přepona trojúhelníka

48

Podmínky

• proměnné typu BooleanTrue / False

= je rovno <> není rovno> větší než < menší než

>= větší nebo rovno <= menší nebo rovno

49

50

51

52

53

and, or, not

54

Určete hodnoty proměnných X a Y po vykonání kódu:

55

Určete hodnoty proměnných X a Y po vykonání kódu:

56

57

58

59

60

61

62

63

64

Příkaz case slouží k zápisu n-árního větvení

65

Příkaz case slouží k zápisu n-árního větvení

66

Příkaz case V proměnných Den, Měsíc, Rok je uloženo datum. Napište část programu, která zajistí, že do proměnné Počet bude uložen počet dnů v příslušném měsíci.

67

Příkaz case V proměnných Den, Měsíc, Rok je uloženo datum. Napište část programu, která zajistí, že do proměnné Období bude uložen název příslušného ročního období.

68

Příkaz case V proměnných Den, Měsíc, Rok je uloženo datum. Napište část programu, která zajistí, že do proměnné Období bude uložen název příslušného ročního období.

Jak to funguje?

69

70

71

72

73

Prázdný příkaz

• nepředepisuje žádnou akci a je definován jako prázdný řetězec znaků abecedy jazyka

• obvykle se využívá jako kompoziční prvek ve strukturovaných příkazech.

Příklad: if X<5 then else Write('*')

• přehledněji (neúplným příkazem if): if X>=5 then Write('*')

NIC

74

Cykly

• Cyklus je část algoritmu, která předepisuje (několikanásobné) opakování části algoritmu (těla cyklu).

75

Cykly

• se známým počtem opakovánífor… to… do…

• s neznámým počtem opakovánírepeat… until…while… do…

76

se známým počtem opakování77

78

s neznámým počtem opakování79

s neznámým počtem opakování80

81

82

83

84

85

nebo

Jaké chyby mohou nastat?

mohou nastat 3 typy chyb

1. Syntaktické chyby: např. překlepy2. Logické chyby: chyby v logice (algoritmu)3. Run-Time chyby (za běhu) : chyby, které se

vyskytnou až při běhu programu (např. nedostatek paměti)

86

Používání procedur• Procedura je dílčí algoritmus• stejně jako program musí mít své jméno• definuje vlastní proměnné zvané lokální

proměnné nebo používá globální proměnné použité v programu

• pro vymezení procedury používáme begin a end, ale na konci bude středník.

• např. chceme zahrát melodii na začátku a na konci programu

• na konci však jiným tempem

87

Používání funkcí

• jsou podobné procedurám• mají vlastní proměnné a mohou pracovat také

s parametry.• hlavní rozdíl je v tom, že funkce vrací hodnotu

zpět do programu

88

Deklarace funkce

• tvořena záhlavím, deklarační částí a příkazovou částí

• Záhlaví – začíná klíčovým slovem function a názvem

(identifikátorem) funkce– obsahuje parametry funkce (kolik a jakého typu) a

jakého typu je výsledek (jedna výsledná hodnota).

89

Deklarace funkce

• V příkazové části funkce (tj. mezi begin a end funkce) je třeba přiřadit identifikátoru funkce, nějakou hodnotu => výsledná funkční hodnotu.

90

Používání funkcíPříklad Deklarujte funkci pro výpočet aritmetického průměru dvou reálných čísel.

vstupní parametry

výstupní parametry

91

Používání funkcíPříklad Deklarujte funkci pro výpočet n!.

92

Používání funkcí

93

Volání procedury a funkce

má jeden ze dvou tvarů • identifikátor podprogramu • identifikátor podprogramu (seznam skutečných

parametrů)

rozdílný je však význam volání: • volání procedury představuje příkaz (příkaz

procedury), • volání funkce představuje výraz.

94

Formální parametry podprogramů

z hlediska algoritmizace (podle směru předávaných hodnot) na:

• parametry vstupní, • parametry výstupní, • parametry vstupně-výstupní,

z hlediska Pascalu na: • parametry volané hodnotou, • parametry volané odkazem (vztahuje se na ně

klíčové slovo var).

dělíme:

95

Formální parametr volaný hodnotou

• představuje v těle podprogramu jen lokální proměnnou, které je na počátku provádění podprogramu přiřazena hodnota skutečného parametru.

• Přípustným skutečným parametrem může být proto libovolný výraz, jehož hodnota je kompatibilní vzhledem k přiřazení s typem formálního parametru.

• Případné změny hodnoty formálního parametru při provádění podprogramu nemění hodnotu skutečného parametru.

96

Formální parametr volaný hodnotouprogram UkazkaFunkci; ~~~ function Moc3(X:Real):Real; begin

Moc3:=X*Sqr(X); end; ~~~var

X,Y,Z:Real; begin

X := 5.5;Y := 2.5;Z := Moc3(X-Y);~~~

end. 97

Formální parametr volaný odkazem

• představuje v těle podprogramu vždy tu konkrétní proměnnou, která je určena skutečným parametrem.

• Přípustným skutečným parametrem proto může být obecně jen proměnná, jejíž typ je totožný s typem formálního parametru

98

Vyjádřete algoritmus pro výpočet součtu 20 reálných čísel dodávaných ze vstupního zařízení.

99

100

Vstupní údaje tvoří nejprve přirozené číslo N z intervalu <2, 1000> a dále posloupnost N reálných čísel. Vyjádřete algoritmus pro nalezení největší hodnoty z hodnot prvků posloupnosti.

101

Vstupní data tvoří přirozené číslo N > 2 a posloupnost N celých čísel. Vyjádřete algoritmus, podle kterého se zjistí, zda jsou v posloupnosti bezprostředně po sobě dvě stejná čísla. V případě, že ano, zajistěte tisk jejich společné hodnoty a tisk příslušné dvojice indexů.

102

Vstupní data tvoří přirozené číslo N > 2 a posloupnost N celých čísel. Vyjádřete algoritmus, podle kterého se zjistí, zda jsou v posloupnosti bezprostředně po sobě dvě stejná čísla. V případě, že ano, zajistěte tisk jejich společné hodnoty a tisk příslušné dvojice indexů.

103

Vstupní data tvoří přirozené číslo N > 2 a posloupnost N celých čísel. Vyjádřete algoritmus, podle kterého se zjistí, zda jsou v posloupnosti bezprostředně po sobě dvě stejná čísla. V případě, že ano, zajistěte tisk jejich společné hodnoty a tisk příslušné dvojice indexů.

104

Vstupní údaje tvoří přirozené číslo N z intervalu <2, 100> a dále posloupnost N celých čísel. Vyjádřete algoritmus pro nalezení všech míst výskytu maxima posloupnosti.

105

Vstupní údaje tvoří přirozené číslo N a dále posloupnost N celých kladných čísel. Vyjádřete algoritmus, podle kterého se zjistí, zda jsou v posloupnosti alespoň dva prvky stejné.

106

107

108