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