28
ПРОГРАМСКИ ЈЕЗИК PASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик за програмирање и назвао га Pascal. Програм је добио име по француском научнику и филозофу Blaisea Pascala (1623 — 1662), који је изградио једну од првих механичких рачунара. Првенствена намена Паскала је решавање проблема „алгоритамске природе“, где долази до изражаја структурно програмирање (решавање проблема се одвија по деловима). Проблем у Паскалу се решава тако што се подели на мање блокове при чему сваки блок може имати само један улаз и један излаз. Подаци се преносе из блока у блок док се не дође до коначног решења. На тај начин се прати природан ток мисли што чини програм јасним и разумљивим. Добре особине Паскала у односу на друге програмске јеѕике (Бејзик, Фортран) се огледа у : 1 номенклатура језика 2. току програма 3. структури програма. 1

Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

  • Upload
    others

  • View
    31

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

ПРОГРАМСКИ ЈЕЗИК PASCAL

Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик за програмирање и назвао га Pascal. Програм је добио име по француском научнику и филозофу Blaisea Pascala (1623 — 1662), који је изградио једну од првих механичких рачунара. Првенствена намена Паскала је решавање проблема „алгоритамске природе“, где долази до изражаја структурно програмирање (решавање проблема се одвија по деловима). Проблем у Паскалу се решава тако што се подели на мање блокове при чему сваки блок може имати само један улаз и један излаз. Подаци се преносе из блока у блок док се не дође до коначног решења. На тај начин се прати природан ток мисли што чини програм јасним и разумљивим.

Добре особине Паскала у односу на друге програмске јеѕике (Бејзик, Фортран) се огледа у :1 номенклатура језика2. току програма3. структури програма.

1

Page 2: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

АПСТРАКЦИЈА ОБЈЕКАТА И АЛГОРИТМИ

Реч Алгоритам је настала по имену америчког информатичара Ал Горе. У информатичком смислу Алгоритам је скуп корака који воде ка решењу проблема, тј. опис за решавање неког проблема.

Primer :Problem (zadatak): Odlazak u školuRešenje (algoritam):1. Buđenje i ustajanje.2. Umivanje.3. Oblačenje.4. Doručak.5. Spremanje pribora i torbe za školu.6. Izlazak iz kuće.7. Odlazak na stanicu.8. Sačekati odgovarajući autobus.9. Ulazak u autobus.10. Vožnja autobusom do odredišne stanice.11. Izlazak iz autobusa.12. Ulazak u školu.

У алгоритамском решавању проблема веома је битан редослед корака, чијим мењањем мењамо и ток решавања проблема. Алгоритам чине: улазне величине, поставка задатка (поставка у грубим цртама како доћи до решења), начин решавања ( одређује колико брзо ће алгоритам доћи до решења) и излазне величине.

Алгоритам записујемо у облику дијаграма, тј користимо универзалне графичке симболе и правимо Алгоритамску шему или алгоритамски ток података. Алгоритамска шема представља графичко решење проблема корак-по корак.

Постоје три врсте алгоритамских шема: линијска, циклична и сложена.

Алгоритам представља фазу у процесу израде програма.Уколико желимо да алгоритам реализује рачунар морамо да користимо неке од Програмских језика.

Почетак и крај

Блок алгоритамских корака

Блок улазних података

Логички блок или блок услова

Блок излазних величина

2

Page 3: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

ВРСТА АЛГОРИТАМСКИХ ШЕМА

Шеме се могу поделити у три категорије:1. Линијске алгоритамске шеме2. Цикличне алгоритамске шеме3. Сложене алгоритамске шеме

1. Линијске алгоритамске шеме су оне код којих се сваки алгоритамски корак извршава највише једном у току извршавања алгоритма. Могу бити просте или разгранате. Просте су оне код којих се сваки корак извршава тачно једном у току једног извршавања алгоритма.

ПРИМЕРИ:

Задатак1. Израчунати вредност израза z=3x+7y, где су x,y познате величине.

Задатак2. Написати алгоритам за решавање математичког израза (x2+y2)2

Задатак3. Sastaviti algoritamsku šemu za izračunavanje vrednosti Z po sledećoj formuli:Z = X1 * (X2 – 3X3), tako da u jednom algoritamskom koraku može biti samo jednaaritmetička operacija.

Početak

X1, X2, X3

Z1 = 3 * X3

Z2 = X2 – Z1

Z = X1 * Z2

Z

Kraj

Задатак4. Алгоритам који израчунава хипотенузу правоуглог троугла на основу задатих катета.

Разгранате алгоритамске шеме

3

Page 4: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Разгранате алгоритамске шеме карактерише да се алгоритамски корак извршава највише једном (значи једном или ниједном) и обавезно садржи бар један условни алгоритамски корак.У разгранатим шемама постоји најмање два тока по којима је могуће да се одвија алгоритам. Сваки од тих корака је проста линијска шема. Тако, да ће се, приликом извршавања алгоритма, извршити тачно једна грана шеме.У току једног извршавања алгоритма извршеће се само једна од простих шема (P2 ili P3). Нека од шема P2 или P3 може бити изостављена.Значи алгоритам може имати следећи облик:

ПРИМЕРИ:Задатак1. Саставити алгоритам за израчунавање вредности Z по формули:

4

Page 5: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Задатак2: Саставити алгоритам за израчунавање вредности Z. Ако је X1 оцена из маркетинга X2 оцена из информатике, израчунати Z по формули:

Задатак3: Алгоритам који за унети реални број X израчунава Y и Z на следећи начин:

5

Page 6: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Задатак4: Написати алгоритам за утврђивање да ли је унети цео број паран или не

Задатак5: Написати алгоритам који за унете величине дужи а, б, ц утврђује да ли те дужи могу формирати троугао.

ДОМАЋИ ЗАДАТАК

Задатак. Написати алгоритам који израчунава апсолутна вредност неког израза.

6

Page 7: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

2. Цикличне алгоритамске шемесу оне које код којих се неки алгоритамски корак извршава више пута (најмање 2*). Цикличне ал.ш. би се могле свести на линијске, при чему би се један корак писао више пута и тиме отежавало прегледно и реализацију програма.Цикличне шеме се деле на константне и променљиве.Код константних се закон обраде не мења унутар циклуса Код променљивих шема закон обраде се мења у зависности од тога у ком смо кораку итерације

ПРИМЕРИ:

Задатак1. Написати програм за сумирање и штампање бројева од 1 до 100.

Задатак2. Алгоритам којим се за дато n израчунава факторијeл броја н Факт= n! = 1*2*3*.......n

7

Page 8: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Задатак3 . Саставити алгоритамску шему за степеновање природног броја X природним бројем N(Xn), користећи операцију множења.Z=Xn-> Z= X*X*X*…….X (n puta)

Задатак4 z=(-1)i* xi

3.Сложене шеме

Задатак1. Саставити алгоритам који за познато n>0 и бројеве x1,x2, xn рачуна суму бројева x1,x2, xn увећаних за 5 у случају да су мањи од 100

8

Page 9: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Задатак2. Уносе се природни бројеви Н све док се не унесе нула. Саставити алгоритам који ће избројати колико укупно има парних бројева. Паран број је:

ДОМАЋИ ЗАДАТАК

Задатак: Наћи суму н бројева при чему ако је неки од њих мањи од 100, помножити га неком константом.

АРИТМЕТИЧКИ ИЗРАЗИ ФУНКЦИЈЕ

Математички израз

9

Page 10: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Дељење и множење / i *Апсолутна вредност Abs(x)Квадратни степен Sqr (x)Квадратни корен Sqrt(x)експонент Exp(x)тригонометријске Sin, cos tan, atanЦелобројно дељење divОстатак целобројног дељења mod

ПРИМЕРИ

Задатак1. Написати следеће математичке изразе у Pascalu: 

a)          b)             a)        f:=sqrt(x+(sqr(x)*sqr(x)+sqr(x)*x-2)/cos(x)) b)        f:=abs(x)+exp(-b*x)+cos(x)/sin(x)

 Задатак2: Написати следеће математичке изразе у Pascalu: 

a)    b)             

a)          f:=sqrt(sqr(x)+(sqr(x)*sqr(x)*x+x+1)/sin(x)) 

b) f:=abs(x)+exp(-b*x)+sin(x)/cos(x)

ДОМАЋИ ЗАДАТАК:Написати следеће математичке изразе у Pascalu.

ПРАВИЛНО ПИСАЊЕ ПРОГРАМА

10

Page 11: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Pascal је заснован на азбуци. Азбука је коначан скуп основних симбола или знакова.Сваки програм мора да опише тип података које треба обрадити и радње које треба извршити над подацима. Фазе настанка програма:

1. дефинисање проблема2. разумевање проблема3. израда алгоритма4. превођење алгоритма у програмски језик5. интерпретација (превођење) и тестирање програма6. корекција и прилагођавање програма7. израда пропратне документације и упутство за рад

1. Сваки програм се састоји од заглавља и тела или блока програма. У заглављу наводимо име програма и списак параметара преко којих је програм повезан са околином ( дефинишу се потпрограми, функције и процедуре).

-Заглавље почиње резервисаном речи PROGRAM.-У блоку се налази опис података и опис акција. Сви објекти који се користе у програму морају претходно бити описани у одговарајућим одељцима.Блок наредби започиње резервисаном речи BEGIN, а завршава са END.

2. У једном реду пише се једна наредба, а наредбе се раздвајају знаком ;3. Коментари се пишу унутар заграда

Нпр .

PROGRAM ime;VAR a,b,c: tip_podataka;

O,P: tip_podataka;BEGIN

naredba;naredba;. . . naredba;

END..

ОСНОВНЕ КАРАКТЕРИСТИКЕ PASCAL-A

1. Обавезно је декларисање свих варијабли (променљивих) које се користе у програму.2. Одређене кључне речи (наредбе) „резервисане“ су и не смеју се користити у друге

сврхе.

** Декларисање ( дефинисање) варијабли

Varijable користимо да нам програм буде решив над различитим улазним подацима. Вредност варијабле може се мењати. Варијабла има своје ИМЕ и њено својство је да се нека вредност памти под тим именом и да се та вредност може променити током извршавања програма.За декларацију варијабли користимо резервисану реч или наредбу: VAR.

Синтакса (правило) писања варијабли:

11

Подручје дефинисања

Извршни део програма

Page 12: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

VAR ime-var1, ime-var2: tip-podataka1; ime-var3: tip-podataka2;

Тип података варијаблиСтaндардни типови података су:

реални- real целобројни- integer логички- boolean знаковни- char

Постоје и сложени или структурирани типови података, а то су: низ знакова- string поља- array слогови- record скупови- set of датотеке- file of

5. Прецедуре и функцијски програми могу позивати сами себе ( рекурзивно).

Нпр: Декларисати варијабле за израчунавање О и P правоугаоника, при чему су странице дефинисане као реални бројеви:

** Дефинисање константи Као и варијабле, морамо дефинисати и константе које ће се у програму користити. Вредност константи се не сме мењати.

За декларацију константи користимо резервисану реч или наредбу: CONST.

Синтакса (правило) писања:

CONST ime-konstante= vrednost ;

Нпр: CONST Pi=3,14;

** Приgруживање вреgности

Да би некој варијабли доделили вредност, користи се знак :=

Нпр: A:=10 ( A ima vrednost 10)**НАРЕДБА УНОСА

Наредба уноса омогућује писање општег програма.

12

Page 13: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Синтакса (правило) писања:

READ (ime varijable , ime varijable….)READLN (ime varijable…)

Разлика између READ и READLN је само у томе што се код READLN курсор премешта у нови ред.

Нпр READ (a,b); READLN (a,b);

**НАРЕДБА ИСПИСА

Ова наредба омогућује испис решења, текста или вредност варијабле.

Синтакса (правило) писања

WRITE (‘ime varijable ili tekst u polunavodnicima ‘); WRITELN ( ‘ime varijable ili tekst u polunavodnicima’).

Нпр : WRITE (‘Obim i površina pravougaonika’); WRITELN (‘PROGRAMIRANJE’); WRITE (‘Resenje je’, X); WRITELN (‘Zbir brojeva je’, A+B);

ПРИМЕРИ:

Задатак1 Написати програм који ће израчунати О и P правоугаоника.

PROGRAM pravougaonik; VAR a,b,O,P: real;BEGIN WRITE (‘Upisi vrednost stranice’); WRITELN( a,b); O:=2*(a+b); P:=a*b; WRITE (‘Povrsina je:’, P); WRITELN( ‘Obim je:’, O); READLEN;END.

Задаци за вежбу:1. Написати програм који ће уписани угао у степенима претворити у радијане. Формула

гласи:

13

Page 14: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

2. Написати програм који ће рачунати удаљеност две тачке у равни. Уносе се

координате тачака Т1 и Т2. Формула гласи:

3. Написати програм који ће рачунати површину троугла, ако су позната његова темена.

Уносе се координате темена В1, В2 и В3. Формула гласи:

НАРЕДБЕ УСЛОВА- ГРАНАЊА

* IF naredbaНаредба избора: има два облика:

IF THEN (ако је услов задовољен тада учинити...)IF THEN ELSE (ако је услов тачан тада учинити... иначе учинити....)

IF logički izraz THEN naredba;IF logički izraz THEN naredba1 ELSE naredba2:

За писање логичких израза користимо следеће:* логичке релације:

* логичке операције:

* логичка функција: ОDD ( c) где је c варијабла целобројног типа.

Задатак 1. Испитати да ли је учитани број паран или непаран.

14

Page 15: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Задатак 2. Написати програм који учитава два броја и исписује мањи па већи броја.

Задатак 3 Написати програм који за задато x израчунава f по формули:

 

                        Rešenje:       if  x >= 1 then f:=-2*x                else if x > 1 and x < 5 then f:=sqrt(sqr(x)*x-2*x)                       else f:=abs(x);

Задатак4.Написати програм који ће за задато а,b израчунати y.

* CASE naredba Када је потребно направити вишеструки избор,

односно када је потребно изабрати између више наредби једну наредбу може се користити

15

Page 16: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

више IF наредби. Међутим, ако постоји израз чија вредност одређује која ће се наредба извршити, лакше је употребити CASE наредбу.Синтаксни дијаграм ове наредбе је приказан на слици

Дијаграм тока извршавања CASE наредбе приказан је на слици :

Израз чија вредност одређује која ће се наредба извршити називa се селектор. Вредност селектора може бити било који стандардни тип, осим реалног. Тип константе и тип селектора морају бити исти.CASE наредба извршава се на следећи начин :1. израчунава се вредност израза;2. извршава се наредба чија је ознака једнака вредности израза.

Пример 1: Написати CASE наредбу којом се на основу редног броја дана исписује његово име. CASE brojdana OF         0 : writeln('NEDELJA');       1 : writeln('PONEDELJAK');        2 :writeln('UTORAK');        3 : writeln('SREDA');        4 : writeln('CETVRTAK');      5 : writeln('PETAK');       6 : writeln('SUBOTA')END;

Ако је вредност променљиве brojdana=3, извршиће се наредба са обележјем 3, односно на екрану ће писати : SREDA.

Пример 2 : Написати CASE наредбу којом се на основу задатог слова исписује да ли се ради о самогласнику или сугласнику.

CASE slovo OF        'a','e','i','o','u' : WRITELN('SAMOGLASNIK')        ELSE WRITELN('SUGLASNIK')END;

Пример 3.. Заменити if наредбу са case наредбом:

       if n1>n2 then n1 :=n1+5                        else n1:=n2+3; 

case n1>n2 of                     true:  n1 :=n1+5;                     false: n1 :=n2+3                end.

PETLJE (CIKLUSI)

Pascal има 3 наредбе за понављање које зовемо „петље“

16

Page 17: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

FOR petljaWHILE petljaREPEAT petlja

* FOR petlja

FOR петља се користи када израз треба поновити одређени број пута. У оквиру петље се налази: почетни услов, крајњи услов и бројач. Општи облик ове петље је:

FOR контролна променљива := izraz-1 TO izraz-2 DO izraz;

Контролна променљива је бројач у петљи, izraz-1 почетна вреднст, izraz-2 крајња вредност.Све три променљиве морају бити истог типа (никад реалне).Када је вредност бројача већа од крајње онда се уместо инкрементирања користи декрементирање, јер се петља никад неће извршити. За декрементирање се уместо ТО користи DOWNTO:

FOR kontrolna promenljiva := izraz-1 DOWNTO izraz-2 DO

Задаци:

Задаци за вежбу:

17

Page 18: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

* WHILE petlja WHILE petlja се састоји од услова који треба да буде задовољен (тачан) да би се завршила петља, при чему не постоји никакав бројач. Општи облик петља је:

WHILE uslov DO izraz;

Израз се извршава све док је услов испуњен.

Задатак1 :

1. Написати програм за израчунавање n-тог степена целог броја а.

Задатак2: Написати програм који ће исписивати бројеве из интервала од 1 до n, који се могу написати као збир квадрата двају цифара целих бројева. Нпр: 2=12+12, 5=22+12 итд.

18

Page 19: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

* REPEAT-UNIT petlja Ова петља је супротна од претходне у том смислу што омогућује понављање наредбе или више наредби све док је услов лажан тј. све док услов не постане истинит. Када услов постане истинит, прекида се извођење ове петље и програм се наставља следећом наредбом.

Задатак1:Израчунати суму парних бројева у инетрвалу од k до n.

PROGRAM suma_par;VAR i,k,n,s:integer;BEGIN REPEAT Write (‘Granice k, n’); Readln (k,n); UNTIL k<=n; s:=0; FOR i:=k TO n DO IF i MOD 2=0THEN s:=s+i; Writeln (‘Od”, k, ‘do’, n, ‘suma parnih je’, s); Readln;END.

Задатак2:

На основу алгоритма исписати програм који за познато n>0 и бројеве x1,x2, . . xn рачуна суму бројева x увећаних за 5% у случају да су мањи од 100.

19

Page 20: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

ФУНКЦИЈЕ И ПРОЦЕДУРЕФУНКЦИЈЕ

Функције представљају потпрограме који враћају једну вредност. Функције су део неког израза који се користи у главном програму. Означавају се резервисаном речи FUNCION, иза које следе име функције и формални параметри. Разликује се од процедуре јер се мора одредити тип функције, односно тип резултата. Синтакса функције је следећег облика:

FUNCTION Ime_funkcije(VAR formalni_parametri : tip; parametri : tip):tip_funkcije;

Задатак1: Написати фунцију abs и odd.

Задатак2 . Написати функцију за израчунавање n-tog степена целог броја а

20

Page 21: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Задатак3. Написати функцију која израчунава суму квадрата целих бројева од m до n.

ПРОЦЕДУРЕПроцедуре се дефинишу слично као и програм, и састоји се од заглавња, дела за декларацију и израза. Процедура почиње резервисаном речи PROCEDURE. Параметри који су резервисани за израз морају битит декларисани као променљиви параметри. Синтаксни запис процедуре је следећег облика:

procedure ime_procedure(var formalni_parametri : tip);begin... naredbeEnd;

Процедура се позива на следећи начин:

procedure ime;илиprocedure ime(lista parametara);

Задатак1. Написати процедуру којом се израчунава минимум и максимум на основу два задата цела броја.

21

Page 22: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

ЗАДАЦИ ЗА ВЕЖБУ

Задатак1 Написати алгоритам и програм који израчунава хипотенузу правоуглог троугла на основу задатих катета.

Задатак2. Написати алгоритам и програм којим се променљивој Маx додељује вредност већег између бројева а и b.

Задатак3. Написати алгоритам и програм за учитавање, сумирање и штампање бројева од 1 до 100.

22

Page 23: Програмски језик Pascal · Web viewPASCAL Крајем 60-тих година Niklaus With ( професор у Швајцарској) је дефинисао језик

Задатак4. Написати алгоритам и програм за израчунавање н-тог степена целог броја а.

Задатак5: Написати програм и функцију за израчунавање производа свих парних бројева до n - тог.

program funkcija3(input,output);

var n,k,i : integer;

function paran(a : integer) : boolean;begin        if odd( a ) then                              paran:=false                      else                              paran:=trueend;begin         writeln('Unesite broj');         readln(n);         k:=1:         for i:=1 to n do                               if paran( i ) then k:=k*i;         writeln('Proizvod svih parnih brojeva od 1 do ',n,' je : ',k);         readln;

Задатак6 : Написати програм којим се израчунавају збир и разлика два броја употребом процедуре zbirraz.

program procedura;var a, b, z, r : integer;procedure zbirraz(x,y : integer, var zbir, razlika : integer);begin       zbir:=x+y;       razlika:=x-yend;begin       zbirraz(5,1,z,r);       writeln(z:4,r:4);       read(a,b);       zbirraz(a,b,z,r);       writeln(z:4,r:4);       zbirraz(a+1,2*b,z,r);       writeln(z:4,r:4)end.

23