Top Banner
Вовед во програмирање Алгоритми и контролни структури
33

Алгоритми за КС

Dec 15, 2014

Download

Documents

bkumpa

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Алгоритми за КС

Вовед во програмирање

Алгоритми и контролни структури

Page 2: Алгоритми за КС

• Програмирање – процес на пишување на програма

• Се одвива во повеќе фази и тоа:– Поставување на задачата– Дефинирање постапка за нејзино решавање– Пишување програма– Тестирање на програмата

Page 3: Алгоритми за КС

I фаза: поставување на задачата

1. Задачата треба правилно да се разбере2. Да се дефинираат и прецизираат условите

за решавање

• Примери:1. Да се најде збирот на првите 10 броја2. Да се реши систем равенки со 2 непознати

Page 4: Алгоритми за КС

II фаза: дефинирање постапка за решавање

• Постапката треба да биде применлива за извршување на компјутер

• Операциите треба:› јасно да се наведат› да бидат еднозначно дефинирани› точно да се зададе редоследот на нивното

извршување

• Постапката треа да биде конечна, т.е. да даде резултати по конечно време на извршување

Page 5: Алгоритми за КС

Алгоритми• Abu Jafar Mohammed Ibn Musa Al Khowarizmi

(Algorithmi) – узбекистански математичар од IX век кој ги дефинирал

правилата за 4 основни математички операци

Алгоритам за наоѓање најголем од три броеви a, b и c1 чекор: Задавање на броевите a, b и c2 чекор: Споредување на броевите a и b и наоѓање на поголемиот од нив3 чекор: Споредување на поголемиот од броевите a и b со c и наоѓање на поголемиот од нив 4 чекор: Печатење на резултатите

АЛГОРИТАМ е постапка од конечен број еднозначно определени дејства (операции) и точно зададен редослед на нивно извршување

Page 6: Алгоритми за КС

Алгоритамски чекори

• Влезни податоци• Излезни резултати• Меѓурезултати

АЛГОРИТАМ е постапка од конечен број еднозначно определени дејства (операции) и точно зададен редослед на нивно извршување, кои, применети врз влезните податоци даваат излезни резултати

Дејствата од кои се состои еден алгоритам се нарекуваат алгоритамски чекори

1 чекор: Задавање на броевите a, b и c2 чекор: Ако а>b, тогаш p=a, инаку p=b3 чекор: Ако p>c тогаш n=p, инаку n=c4 чекор: Печатење на n

Page 7: Алгоритми за КС

Претставување на алгоритмите• Текстуално претставување– Псевдо јазик:алгоритам, подалгоритам,

почеток, крај, ако, тогаш, инаку, додека, извршувај, повторувај, до, за, чекор, зголемувај, намалувај, читај, печати

• Графичко претставување– Графички симболи/блокови за одредено

дејство– Блокдијаграми/ flowchart

Page 8: Алгоритми за КС

Почеток или крај на алгоритмот

Влез или излез на податоци

Доделување вредност на променлива

Структура за избор

Структура за повторување

Подалгоритам

Редослед на извршување на чекорите на алгоритмот

Page 9: Алгоритми за КС

почеток

a,b

a>b

a b

крај

да не

Алгоритам: поголем од два броја

Алгоритам Поголем;Почеток

читај а,b; ако a>b тогаш печати a;

инакупечати b;

Крај{Поголем}

Графички приказ- блок дијаграм

Текстуален приказ- псевдојазик

Page 10: Алгоритми за КС

Алгоритам: најголем од три бројаАлгоритам Најголем;Почеток

читај а,b, c; ако a>b

тогаш p<-a

инакуp<-b

крај_ако{a>b}ако p>c

тогаш n<-p

инакуn<-c

крај_ако{p>c}печати n;

Крај{Поголем}

почетокпочеток

a,b,ca,b,c

a>ba>b

крајкрај

дада ненеp<-bp<-b

n<-pn<-pn<-cn<-c

p>cp>c

nn

p<ap<a

Page 11: Алгоритми за КС

Структурни алгоритми

• Структурно програмирање– Се користат контролни структури со кои се

контролира дејството на алгоритмите– Структурен алгоритам – алгоритам со конечен

број контролни структури– Структурите се подредени секвенцијално и не

може ниту една од нив да се прескокне – една влезна и една излезна точка

Page 12: Алгоритми за КС

задавање на броевите а, b и c

ако a>b тогаш

p<-aинаку

p<-b

ако p>c тогаш

n<-pинаку

n<-c

печати n;

стандардно структурно

Page 13: Алгоритми за КС

Контролни структури

• Редоследна контролна структура - секвенца– (линиска структура)

• Структура избор – селекција– (разгранета структрура)

• Структура повторување – итерација– (циклична структура)

• Структура скок

Page 14: Алгоритми за КС

Редоследна контролна структура

• Посебна целина која може да се појави било каде во алгоритмот

• Се користат резервираните зборови почеток и крај• При пишување на наредбите од КС се користи

назабување – Ова важи и за пишувањето програми

почетокчекор А;чекор B;…. чекор P;

kрај

стандардно

Чекор АЧекор Б

Чекор P

структурно

Page 15: Алгоритми за КС

ЗАДАЧИ1. Да се напише алгоритам со која ќе се

конвертира сума дадена во евра во сума во денари. 1евро=61,5 денари

2. Да се напише алгоритам со која ќе се определи сумата на цифрите од некој троцифрен број n.

3. Да се напише алгоритам со која ќе се најде спротивниот број на троцифрениот број n.

Page 16: Алгоритми за КС

Контролни структури за избор

АКО-ТОГАШСЛУЧАЈ

Page 17: Алгоритми за КС

ако логички израз тогаш

чекор А; инаку

чекор Б;крај_ако{логички израз}

Логички израз може да има две вредности ТОЧНО или НЕТОЧНОВо зависност од вредноста, се прави избор меѓу две можности

Логички израз

чекор А

неточноточно

чекор Б

Контролна структура АКО –ТОГАШ- ИНАКУ

Page 18: Алгоритми за КС

ако логички израз тогаш

чекор А;крај_ако{логички израз}

Се проверува вистинитоста на логичкиот израз, па ако има вредност точно се извршува наредбата чекорАСЕ ДОНЕСУВА ОДЛУКА ДАЛИ ДА СЕ ИЗВРШИ НЕКОЈА НАРЕДБА

Логички израз

чекор А

неточно

точно

Контролна структура АКО - ТОГАШ

Page 19: Алгоритми за КС

почеток

a,b

a>b

крај

да не

Алгоритам: поголем од два броја

Алгоритам Поголем;Почеток

читај а,b; ако a>b

тогашпечати a;

инакупечати b;

крај_ako{a>b}Крај{Поголем}

Графички приказ- блок дијаграм

Текстуален приказ- псевдојазик

ba

Page 20: Алгоритми за КС

Алгоритам: ПаренИлиНепаренАлгоритам ПаренИлиНепарен;Почеток

читај а; ако a МOD 2 = 0

тогаш печати ‘бројот е

парен’инаку

печати ‘бројот е непарен’крај_ако{a МOD 2 = 0 }

Крај{ПаренИлиНепарен}

почетокпочеток

aa

а МОД 2 =0а МОД 2 =0

крајкрај

дане

непареннепаренпаренпарен

Page 21: Алгоритми за КС

ЗАДАЧИ1. Да се напише програма со која ќе се пресмета

вредноста на фукцијата F, зададена на следниот начинa)

b)

1. Што ќе биде резултат од извршувањето на следниве програмски сегменти

бројпаренеaba

бројнепаренеabaF

___,

___,

инаку

babaF

,0

0,0),,max(

Page 22: Алгоритми за КС

алгоритам Функција1;почеток

читај а,b; ако а MOD 2=0

тогаш fa-b

инакуfa+b;

крај_ако{а MOD 2=0}печати f;

крај{Функција1}

Page 23: Алгоритми за КС

алгоритам Функција2;почеток

читај а,b; ако а>0 И b>0

тогаш ако a>b

тогаш faинаку fb;

крај_ако{a>b}инаку

f0;крај_ако{а>0 И b>0}печати f;

kрај{Функција2}

Page 24: Алгоритми за КС

ЗАДАЧА: Што ќе биде резултат од извршувањето на следниов програмски сегмент? (x=?, y=?)

x1;y-5; ако abs(y)>2

тогаш ако y<0

тогашx0

инакуx2;

крај-ако{y<0} крај-ако{abs(y)>2}

Page 25: Алгоритми за КС

ЗАДАЧА: Што ќе биде резултат од извршувањето на следниов програмски сегмент? (x=?, y=?)

x10;y-2; ако abs(y)>3

тогаш почеток ако y<0

тогашx3;

крајинаку

x4;крај-ако{y<0}

крај-ако{abs(y)>3}

Page 26: Алгоритми за КС

Избор од повеќе можности - СЛУЧАЈ• Се овозможува разгранување на програмата со избор од повеќе

можности• Вредноста на израз може да биде една од можностите а, b, …. ,k,

– Во случај израз да добие една од вредностите а,b,..k, ќе се изврши соодветната наредба/чекор

– Во случај израз да недобие ниту една од вредностите, ќе се изврши наредбата X, т.е. дејството продолжува со чекор X

чекор Xчекор Б чекор B чекор K

израз

a kb

Page 27: Алгоритми за КС

случај израз а: чекор А; b: чекор B;

… k: чекор K

инаку чекор X;крај_случај{израз}

случај израз а,b: чекор А; d: чекор B;

… k,g,m,b: чекор K

инаку чекор X;крај_случај{израз}

Вредностите a,b,…,k мора да се од ист тип податок како изразАко е потребно ист чекор да се изврши за различни вредности, тогаш тие се ставаат во листаАо се случи иста вредност да се најде во повеќе чекори, тогаш се извршува првиот чекор на кој ќе се наидеНаредбата ИНАКУ може да се изостави, па ако вредноста на изразот не се најде во ниту еден чекор, дејството на алгоритмот продолжува после структурата СЛУЧАЈ

случај израз а,: чекор А; b: чекор B;

… k: чекор K

крај_случај{израз}

Page 28: Алгоритми за КС

алгоритам Успех;почеток

читај ocena;случај ocena

1: печати ‘недоволен’; 2: печати ‘доволен’; 3: печати ‘добар’; 4: печати ‘мн.добар’; 5: печати ‘одличен’инаку

печати ‘грешка’;крај_случај{ocena}

крај{Успех}

Page 29: Алгоритми за КС

алгоритам Месеци;почеток

читај m;случај m

1,3,5,7,8,10,12: печати ’31 ден’; 4,6,9,11: печати ’30 дена’; 2: печати ’28 дена’; инаку печати ‘не постои месец со таков реден

број’;крај_случај{m}

крај{Месеци}

Page 30: Алгоритми за КС

ЗАДАЧА: Да се напише СЛУЧАЈ наредба која ќе биде еквивалентна на следнава АКО-ТОГАШ-ИНАКУ наредба.

ако к=0тогаш

rr+1инаку

ako k=1тогаш

ss+1инаку

ако (к=2) ИЛИ (к=4)тогаш tt+2;

крај_ако{(к=2) ИЛИ (к=4)}крај-ако{k=1}

крај-ако{k=0}

Page 31: Алгоритми за КС

Решение:

случај к 0: rr+1; 1:ss+1; 2,4: tt+1;

крај_случај{k}

Page 32: Алгоритми за КС

ЗАДАЧИ1. Да се отпечати следново мени:

1. Понеделник2. Вторник3. Среда4. Четврток5. Петок

Потоа се внесува еден број 1-5 и во зависност од внесениот број се испечатува соодветна наредба

Пр. 5 Party time!!!1. Да се внесат два броја и еден од знаците +, -, * или

/ и да се отпечати резултатот од соодветната операција

2. Ако во некоја година 1 јануари се паѓа во понеделник, кој ден ќе биде n-тиот по ред ден во годината?

Page 33: Алгоритми за КС

алгоритам НтиДен;почеток

читај n;случај n MOD 7

1: печати ‘понеделник’; 2: печати ‘вторник’; 3: печати ‘среда’; 4: печати ‘четврток’; 5: печати ‘петок’ 6: печати ‘сабота’; 0: печати ‘недела’инаку

печати ‘грешка’;крај_случај{n MOD 7}

крај{НтиДен}