Algoritmide koostamine ja realiseerimine

advertisement
Algoritmide koostamine ja realiseerimine
Vladimir Viies, Lembit Jürimägi
viis@ati.ttu.ee
Tallinn 2015
ALGORITMIDE KOOSTAMINE 1
Что такое алгоритм?
Для чего нужен?
Как пользоватса?
MIS ON ALGORITM ÜLESANNETE
LAHENDAMISEL ARVUTI ABIGA?
Набор правил.
но не всякий набор, а набор с
определенными ограничениями.
Näited
1.ЗАДАНИЕ:найти из N чисел максимальное
Набор правил не пригодное ,как алгоритм:
Сравнивай числа и возми наибольшое
Набор правил прнгодных для алгоритма:
1. Считай,запомни, введи числа .
2.Возми первое число(сравнитель) и сравни со
следующем , если больше, продолжи, пока не наидетса
больше этого или все числа прошли сравнения.
3.Если входе сравнений было выявлено большее, возми
это число за новый сравнитель и повтори действия на
основе 2 правила.
.
Näited
2.Задание:выиграй в лото миллион.
Набор правил не пригодное ,как алгоритм:покупай билеты пока
выиграеш.
Набор пригодных правил для алгоритма: отсутствует.
3.Задание: разменяй 100 euro на «мелкие»
Набор правил,пригодных для алгоритма предпологает
уточнения задания: что значит “на мелкие”, сколько и
какими банкнотами можем пользоватсья. Если
постановщик задания не поставил нужных
ограничений, составитель алгоритма должен их
сформулировать сам.
.
ALGORITMIDE KOOSTAMINE 2
СВОЙСТВА АЛГОРИТМА
• Должен иметь между собой связанные
входные и выходные переменные
• Должен приводить к решению в
конечное время
• Должен быть однозначным
ALGORITMIDE KOOSTAMINE 3
Графические редакторы для
представления алгоритмоф
(vooskeem)
Графические редакторы для представления
алгоритмов
Два типа графических редакторов:
I- алгоритм ( näit. MS Excel,UML activity…);
II-алгоритм+ генерация кода(näit.SFC,JSP….).
SFC skeemide elemente(1)
Такая схема алгоритма имеет
всегда одно начало (START) и
один конец (STOP)..
Все действия происходят
последовательно!
.
В данной схеме использованы
обозначения : в/в , выбор,
действие .
Задание:подчитать число
четных и нечетных чисел в ряду
целых чисел .
Algoritm(sobitatult programmi koodi
kirjutmisele):
1.Вводим данные
2.Присваеваем счетчикам
началные значения
3.В цикле проверяем четность и
увеличиваем значения счетчиков
4.Выводим резултат
Реализация алгоритма, выбор языка
Mis on algoritm?
// Author:
viies // Course:
iag0581
void main ()
{
Redaktor SFC
genereeris
koheselt
algoritmi
kirjelduse
alusel antud
prorrammi C
keeles
mitu arvu sisestan;
loen mitu arvu - N;
paaris ja paaritu=0;
for (i = 1; i <= N; i = i + 1)
{
loen arvu a(i);
if (kas a(i) on paarisarv(jagub 2-ga))
{
paaris=paaris+1;
}
else
paaritu=paaritu+1;
}
väljasta paaris, paaritu;
}
SFC töötab!
ALGORITMIDE KOOSTAMINE 3
Algoritmi esituse graafilised
vahendid 2 (Jacksoni redaktor)
Jacksoni algoritmiredaktori elemendid
TEGEVUS
VALIK(HARGNEMINE)
Tähiseks valikul O paremas nurgas
KORDUS(ITERATSIOON)
Tähiseks * paremas nurgas
ALGORITMI TÄITMISEL LIIGUTAKSE ÜLEVALT
ALLA JA VASAKULT PAREMALE
Struktuurne algoritm
Algoritmi saab koostada kas terviklahendusena
või koosnevana alamülesannete lahendustest.
Viimasel juhul tuleb eelnevalt ülesanne nendeks
jagada.
Iga ülesande saab jagada vähemalt kolmeks osaks:
ANDMETE
ANDMETE
TULEMUSTE
SISESTUS
TÖÖTLUS
VÄLJASTUS
Struktuurseks lähenemiseks sobib hästi Jacksoni redaktor
ALGORITMIDE KOOSTAMINE 4
Algoritmi esituse graafilised vahendid 3 (näide:
reas positiivsete arvude summa leidmine)
Koosta algoritm S=AI , kus I= 1…N ja AI >0 (st tuleb leida rea
positiivsete elementide summa).
arvutus

Algväärtused
S=0
Väljasta S
Töötlus
Sisestus
abi =1.. mitu
Loe
mitu
*
abi =1..mitu
RIDA(abi) >0
*
Loe RIDA(abi)
O
S =S +RIDA(abi)
Antud algoritmis on
selgelt eristatavad
alamülesanded
O
--
Mõningatel juhtudel on piltlikkuse tõstmiseks otstarbekas
kirjutada atribuudid , koos liikumise suunda näitavate nooltega
skeemile.
Algoritmi
skeemi põhjal
genereerib
Jacksoni
redaktor
samasugue
programmi
tooriku nagu
SFC nii C-s,
kui Pascalis.

Arvutus
S
S
mitu, RIDA
,mitu, RIDA
S
Töötlus
Algväärtused
S=0
Väljasta S
Sisestus
abi =1.. mitu
Loe
mitu
*
abi =1..mitu
RIDA(abi) >0
*
Loe RIDA(abi)
O
S =S +RIDA(abi)
Refereeritud lehekülgedelt:
Entity Life Histories (ELH) (01.09.2009)
http://www.doc.mmu.ac.uk/online/SAD/T08/elh.htm
How to Draw Jackson System Development (JSD) Diagrams (01.09.2009)
http://www.smartdraw.com/resources/centers/software/jsd.htm
Tutorial on JSP & JSD (01.09.2009)
O
--
ALGORITMIDE KOOSTAMINE 5
Algoritmi esituse graafilised vahendid 4 (UMLi
tegevusdiagrammi kasutamine algoritmide koostamisel)
Algoritmi koostamine kasutades UMLi (ArgoUML) :
Ülesanne: leida reas
positiivsete elementide
summa.
ALGORITMIDE KOOSTAMINE 6
Ekstreemumid ja sortimised “mulli” meetodil
Ekstreemumid ja sortimised
Üheks sagedasemaks ülesandeks andmete töötlemisel
on nende sortimine, suurimate ja vähimate väärtuste
leidmine.Selliste ülesannete lahendusalgoritmid
sisaldavad alati kahte tegevust:
Kahe suuruse
võrdlemine
Kahe võrreldava suuruse
“kohtade vahetus”
Esimene tegevus sisaldab ühte, teine aga kolme tehet
Lihtne sortimise algoritm, saab edukalt kasutada
eksreemumite leidmiseks


< MAKSIMUM
Analoogselt saab üheläbivaatusega
leida MIINIMUMi
ALGORITMIDE KOOSTAMINE
Shell’i sortimise algoritm
Shell’i sortimise algoritm (1)
(vähendab kohavahetuste arvu, eeldab et reas leidub järjestatud lõike)



Maatriks1( a’la tabel,kus lahtrid nummerdatud)
A11 A12 A13 A14
A21 A22 A23 A24
A31 A32 A33 A34
A41 A42 A43 A44.
{AIJ }-igal elemendil kaks indeksit,
millega on määratud tema asukoht.
Maatriks2( a’la tabel,kus lahtrid nummerdatud)
A11 A12 A13 A14
A21 A22 A23 A24
A31 A32 A33 A34
{AIJ }-igal elemendil kaks indeksit,
millega on määratud tema
asukoht.Indeksite väärused võivad
muutuda kas 1-st või 0-st(olenevalt keelest,
kus neid kasutatakse) veergude/ridade
arvuni või 0-korral ühe võrra vähem.
A41 A42 A43 A44.
Maatriksi elementide eristamine, teatud üldistuste alusel, on
enamlevinud loogika ülesandeid programmeerimises
kasutuskõlblike algoritmide loomise õppimisel.
Maatriks 3 ( a’la tabel,kus lahtrid nummerdatud)
A11 A12 A13 A14
A21 A22 A23 A24
A31 A32 A33 A34
A41 A42 A43 A44.
{AIJ }-igal elemendil kaks indeksit,
millega on määratud tema asukoht.
Ruutmaatriksil(ridade arv=veergudearv)
eristatakse:
*peadiagonaali ,sinna kuuluvad elemendid,
kus i=j ;
*kõrvaldiagonaali ,sinna kuuluvad
elemendid, kus i+j=const ;
On vaja osata üldistades leida need
elemendid, mis asuvad diagonaalide peal ja
all!
Peadiagonali kohal I<J; all J<I;
Maatriksi rea väljastus max elemendi alusel
Maatriksi rea väljastus max
elemendi alusel
Maatriksi sisestus
A(i,j) i,j=1..N
Max A(i,J)
leidmine,
max(i)
Rea eraldamine
max(i) alusel
Jagame ülesande
alamülesanneteks
ja lahendame
need hiljem!
Kokkuvõtteks:
1.Algoritmi koostamine võimaldab
Mis on algoritm?
eraldada ülesande sisulise lahendamise
programmi
Millekskoodi
sedakirjutamisest
kasutada?ja seega
muudab lahenduse sõltumatuks keelest.
Kuidas seda kasutada?
2.Võimaldab eritasanditel rühmatööd.
3.Muudab lahenduse jälgitavust, lihtsustab
algoritmi kontrollimist ja tõstab töökindlust.
Kokkuvõtteks:
Kokkuvõtteks:
1.Algoritmi
1.Algoritmi koostamine
koostamine võimaldab
võimaldab
eraldada
eraldada ülesande
ülesande sisulise
sisulise lahendamise
lahendamise
programmi
programmi koodi
koodi kirjutamisest
kirjutamisest ja seega
muudab
muudab lahenduse
lahenduse sõltumatuks
sõltumatuks keelest.
keelest.
2.Võimaldab
2.Võimaldab eritasanditel
eritasanditel rühmatööd.
rühmatööd.
3.Muudab
3.Muudab lahenduse
lahenduse jälgitavust,
jälgitavust, lihtsustab
lihtsustab
algoritmi
algoritmi kontrollimist
kontrollimist ja
ja tõstab
tõstab töökindlust.
töökindlust.
Sortimismeetodite programmikoode saab
leida järgnevalt aadressitlt:
www.tud.ttu.ee/material/vladimir
Download