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

Post on 15-Dec-2014

1.276 views 8 download

description

 

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

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

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

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

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

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

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

за решавање

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

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

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

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

извршување

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

почеток

a,b

a>b

a b

крај

да не

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

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

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

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

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

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

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

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

читај а,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

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

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

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

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

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

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

ако a>b тогаш

p<-aинаку

p<-b

ако p>c тогаш

n<-pинаку

n<-c

печати n;

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

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

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

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

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

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

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

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

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

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

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

kрај

стандардно

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

Чекор P

структурно

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

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

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

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

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

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

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

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

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

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

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

чекор А

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

чекор Б

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

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

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

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

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

чекор А

неточно

точно

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

почеток

a,b

a>b

крај

да не

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

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

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

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

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

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

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

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

ba

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

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

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

парен’инаку

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

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

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

aa

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

крајкрај

дане

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

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

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

b)

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

бројпаренеaba

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

___,

___,

инаку

babaF

,0

0,0),,max(

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

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

тогаш fa-b

инакуfa+b;

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

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

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

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

тогаш ако a>b

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

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

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

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

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

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

тогаш ако y<0

тогашx0

инакуx2;

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

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

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

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

тогашx3;

крајинаку

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

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

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

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

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

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

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

израз

a kb

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

… k: чекор K

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

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

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

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

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

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

… k: чекор K

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

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

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

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

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

крај{Успех}

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

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

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

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

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

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

ако к=0тогаш

rr+1инаку

ako k=1тогаш

ss+1инаку

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

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

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

Решение:

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

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

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

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

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

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

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

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

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

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

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

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

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