APS1

Podobni dokumenti
Microsoft Word - UP_Lekcija04_2014.docx

Datum in kraj

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

Strojna oprema

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

Microsoft Word - avd_vaje_ars1_1.doc

1. izbirni test za MMO 2018 Ljubljana, 16. december Naj bo n naravno število. Na mizi imamo n 2 okraskov n različnih barv in ni nujno, da imam

Microsoft PowerPoint - Java_spremenljivke

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

PREDMETNI KURIKULUM ZA RAZVOJ METEMATIČNIH KOMPETENC

Delavnica Načrtovanje digitalnih vezij

Microsoft PowerPoint - IPPU-V2.ppt

4.Racionalna števila Ulomek je zapis oblike. Sestavljen je iz števila a (a ), ki ga imenujemo števec, in iz števila b (b, b 0), ki ga imenujemo imenov

Microsoft Word - Seštevamo stotice.doc

APS1

Diapozitiv 1

Učinkovita izvedba algoritma Goldberg-Tarjan Teja Peklaj 26. februar Definicije Definicija 1 Naj bo (G, u, s, t) omrežje, f : E(G) R, za katero v

Slide 1

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

Microsoft Word - Analiza rezultatov NPZ matematika 2018.docx

Osnove matematicne analize 2018/19

Microsoft Word - M docx

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/testi in izpiti/ /IZPITI/FKKT-februar-14.dvi

Poglavje 3 Reševanje nelinearnih enačb Na iskanje rešitve enačbe oblike f(x) = 0 (3.1) zelo pogosto naletimo pri reševanju tehničnih problemov. Pri te

Teorija kodiranja in kriptografija 2013/ AES

NAJRAJE SE DRUŽIM S SVIČNIKOM, SAJ LAHKO VADIM ČRTE IN KRIVULJE, PA VELIKE TISKANE ČRKE IN ŠTEVILKE DO 20. Preizkusite znanje vaših otrok in natisnite

Microsoft Word - M docx

3. Metode, ki temeljijo na minimalnem ostanku Denimo, da smo z Arnoldijevim algoritmom zgenerirali ON bazo podprostora Krilova K k (A, r 0 ) in velja

Delavnica Načrtovanje digitalnih vezij

Univerza v Ljubljani FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Tržaška c. 25, 1000 Ljubljana Realizacija n-bitnega polnega seštevalnika z uporabo kvan

Diapozitiv 1

Microsoft Word - CNC obdelava kazalo vsebine.doc

predstavitev fakultete za matematiko 2017 A

Microsoft Word - M docx

2. izbirni test za MMO 2017 Ljubljana, 17. februar Naj bosta k 1 in k 2 dve krožnici s središčema O 1 in O 2, ki se sekata v dveh točkah, ter

Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2

NAVODILA AVTORJEM PRISPEVKOV

Zavod sv. Stanislava Škofijska klasična gimnazija Programiranje v Pythonu Program za računanje Maturitetna seminarska naloga iz informatike Kandidat:

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-avgust-17.dvi

SESTAVA VSEBINE MATEMATIKE V 6

Lehmerjev algoritem za racunanje najvecjega skupnega delitelja

INDIVIDUALNI PROGRAM PREDMET: MATEMATIKA ŠOL. LETO 2015/2016 UČITELJ: ANDREJ PRAH Učenec: Razred: 7. Leto šolanja: Ugotovitev stanja: Učenec je lani n

DN5(Kor).dvi

Srednja šola za oblikovanje

Osnove statistike v fizični geografiji 2

ANALITIČNA GEOMETRIJA V RAVNINI

STAVKI _5_

FGG14

Vrste

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf

Microsoft PowerPoint - Mocnik.pptx

Vaje: Matrike 1. Ugani rezultat, nato pa dokaži z indukcijo: (a) (b) [ ] n 1 1 ; n N 0 1 n ; n N Pokaži, da je množica x 0 y 0 x

Microsoft Word - vaje2_ora.doc

resitve.dvi

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

PowerPointova predstavitev

resitve.dvi

Microsoft PowerPoint - Java-rekurzija.ppt

rm.dvi

Optimizacija z roji delcev - Seminarska naloga pri predmetu Izbrana poglavja iz optimizacije

Sestavljanje in re\unhbox \bgroup \let \unhbox \setbox \hbox {s\global \mathchardef \spacefactor }\ac

Excel 2016

M

ŠTEVCI PROMETA IN NJIHOVA UPORABA ZA NAMENE STATISTIK ČRT GRAHONJA

AKCIJSKO RAZISKOVANJE INOVACIJSKI PROJEKT ZA ZNANJE IN SPOŠTOVANJE Udeleženci: Učenci 2. c Razredničarka: Irena Železnik, prof. Učni predmet: MAT Učna

UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA NEŽKA RUGELJ SHOROV ALGORITEM DIPLOMSKO DELO LJUBLJANA, 2017

Microsoft PowerPoint - OAPS1- Uvod.ppt

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be

C:/Users/Matevž Èrepnjak/Dropbox/FKKT/TESTI-IZPITI-REZULTATI/ /Izpiti/FKKT-junij-17.dvi

REŠEVANJE DIFERENCIALNIH ENAČB Z MEHANSKIMI RAČUNSKIMI STROJI Pino Koc Seminar za učitelje matematike FMF, Ljubljana, 25. september 2015 Vir: [1] 1

Slide 1

ACAD-BAU-Analiza-prostorov

Ime in priimek

PowerPointova predstavitev

Diapozitiv 1

Navodila:

Slide 1

ARS1

5 Programirljiva vezja 5.1 Kompleksna programirljiva vezja - CPLD Sodobna programirljiva vezja delimo v dve veliki skupini: CPLD in FPGA. Vezja CPLD (

Kazalo 1 DVOMESTNE RELACIJE Operacije z dvomestnimi relacijami Predstavitev relacij

11. Navadne diferencialne enačbe Začetni problem prvega reda Iščemo funkcijo y(x), ki zadošča diferencialni enačbi y = f(x, y) in začetnemu pogo

Microsoft Word - M doc

Poročilo o opravljenem delu pri praktičnem pouku fizike: MERJENJE S KLJUNASTIM MERILOM Ime in priimek: Mitja Kočevar Razred: 1. f Učitelj: Otmar Uranj

Microsoft PowerPoint - Standardi znanja in kriteriji ocenjevanja 2 r.ppt [Samo za branje] [Združljivostni način]

Povzporejanje metahevristik za NP-polne probleme

Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / Uradni lis

BiokemInfo - Pregled funkcij

MATEMATIKA 2. LETNIK GIMNAZIJE G2A,G2B Sestavil: Matej Mlakar, prof. Ravnatelj: Ernest Simončič, prof. Šolsko leto 2011/2012 Število ur: 140

PowerPointova predstavitev

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNITVO IN INFORMATIKO tqca - Seštevalnik Seminarska naloga pri predmetu Optične in nanotehnologije Blaž Lampre

E-nepremična inženirska zakladnica

Microsoft PowerPoint - Objekti_gradnja.ppt

DES

Vprašanja za 2. izpitno enoto poklicne mature Strokovni predmet NPA Vprašanja Visual C# (4. letnik) 1. Uporabniški vmesnik razvojnega okolja Visual C#

UNIVERZA V LJUBLJANI FAKULTETA ZA MATEMATIKO IN FIZIKO Katja Ciglar Analiza občutljivosti v Excel-u Seminarska naloga pri predmetu Optimizacija v fina

RAČUNALNIŠKI PRAKTIKUM d o c. d r. A N D R E J T A R A N E N K O Kdo bo z vami? Predavatelj: dr. Andrej Taranenko

Mladi za napredek Maribora srečanje DOLŽINA»SPIRALE«Matematika Raziskovalna naloga Februar 2015

Delavnica Načrtovanje digitalnih vezij

OSNOVE UMETNE INTELIGENCE

Transkripcija:

Algoritmi in podatkovne strukture 1 Visokošolski strokovni študij Računalništvo in informatika Algoritmi in problemi Jurij Mihelič, UniLj, FRI

Algoritmi Izvor izraza al-khwārizmī algoritmi Sem Muhammad ibn Mūsā al-khwārizmī Perzijski matmatk iz 9. stletja. Opisal sem algoritme za seštvanje, množenje, deljenje, kvadratni koren, izračun decimalk π, itd. štvil v Arabskem (Indijskem) zapisu.

Algoritmi Primer algoritma: seštevanje celih števil Seštevanje dveh števil števili napišemo eno pod drugo začnemo pri enicah seštevamo po dve števki upoštevamo prenos se pomikamo po mestih proti levi Kako že seštvamo? 1357 + 2846 1110 4203 Ali ta algoritem vedno deluje? V času, ko je živel al-khwārizmī, Evropa uporablja še rimske številke. Znaš zapisati algoritem, ki bi deloval v Evropi? Kdo je v Evropo prinesel arabske/indijske številke? Je predstavitev števil oz. podatkov pomembna? MCDLI + DLXVII MMXVIII

Osnovna vprašanja Kaj je algoritem? Algoritmi Kaj je (računski) problem? Kaj pomeni rešiti nek problem? Kaj je vhod algoritma? Kaj je izhod algoritma? itd.

Algoritmi Algoritem je jasen, nedvoumen in mehaničen postopek za reševanje računskega problema. Neformalna, intuitivno definicija, ki zadošča za potrebe APS.

Algoritmi Algoritem je jasen enostavno razumljiv, skladen z okoljem oz. znanjem nedvoumen razumljiv na samo en način, determinističen, enoličen mehaničen uporablja elementarne operacije, katerih izvajanje ne zahteva genialnosti postopek končen opis izvajanja, korak za korakom za reševanje računskega problema

Računski problemi Rešiti računski problem pomeni, za vse možne naloge problema znati poiskati ustrezno rešitev. Computaton vs. calculaton Primer problema seštevanje števil do 100 za dani celi števili x in y, kjer 0 x, y 100 izračunaj njuno vsoto x + y Ali gre le za računanje (calculation) ali za ka več (computation)?

Računski problem Računski problemi splošno in natančno opisuje želeni odnos med nalogami in Computaton vs. calculaton njihovimi rešitvami.

Naloge in rešitve Računski problemi naloga je konkreten primerek problema rešitev se nanaša na neko nalogo Primer: problem: seštevanje števil do 100 naloga: 12 + 13, rešitev: 15 naloga: 100 + 0, rešitev: 100 ni naloga: 101 + 1 PS: Koliko je možnih nalog in koliko rešitev?

Računski problemi Algoritem torej rešuje računski problem kadar zna za vsako nalogo problema izračunati pravilno rešitev vhod naloga primerek algoritem izhod rešitev rezultat

Računski problemi Vrste računskih problemov iskalni rešitev je objekt, ki zadošča danim omejitvam Za dani števili izračunaj njuno vsoto. Uredi podani seznam elementov. Poišči pot iz predavalnice do menze. odločitveni rešitev je oblike da/ne Za podana števila x, y, in z preveri ali je x+y=z? Ali je podano zaporedje števil urejeno? Ali obstaja pot iz predavalnice do menze krajša od 42 m?

Računski problemi Vrste računskih problemov preštevalni rešitev je število objektov, ki zadoščajo danim omejitvam Na koliko različnih načinov lahko dve naravni števili seštejemo v 42? Koliko je različnih razvrstitev elementov danega seznama? naštevalni podobno kot preštevalni, le da je rešitev množica objektov, ki zadoščajo danim omejitevam optimizacijski iskanje najboljše rešitve izmed vseh možnih kriterijski iščemo le vrednost rešitve konstrukcijski rešitev želimo konstruirati

Računski problemi Formalna definicija računskega problema množica vseh parov naloga problema in njena rešitev Formalna definicija algoritma Turingov stroj,, programski jeziki Church-Turingova teza S Turingovim strojem se da izračunati vse, kar se sploh da izračunati.

Alan Turing Računski problemi utemeljitelj algoritmike, izračunljivosti, razbil nemško kodo Enigma Alan Turing, 1912-1954 umetna inteligenca: Turingov test filmi o Turingu Imitation game, 2014; Codebreaker, 2011; Breaking the Code, 1996

Snovanje algoritmov Kako snovati algoritme? Predpogoj dobro razumevanje problema Cilj opis algoritma Kriteriji pravilnost učinkovitost preprostost implementabilnost Zapisal sem Evklidov algoritm za največji skupni delitlj dveh štvil.

Snovanje algoritmov Kako snovati algoritme? snovanje algoritmov je umetnost TAOCP, Donald Knuth Kdor hoče dobro pisati, mora veliko brati. branje tujih programov How to solve it?, George Polya 1. Razumevanje problema 2. Izdelava načrta 3. Sledenje načrtu 4. Pogled nazaj

Snovanje algoritmov Metode snovanja algoritmov groba sila (brute force) in izčrpno preiskovanje (exhaustive search) sestopanje (backtracking) razveji in omeji (branch & bound) požrešno (greedy) Več o metdah v nadaljevanju. deli in vladaj (divide & conquer) zmanjšaj in vladaj (reduce & conquer) pretvori in vladaj (transform & conquer) dinamično programiranje (dynamic programming) linearno programiranje (linear programming)

Opisni jeziki naravni jezik Snovanje algoritmov diagrami poteka psevdokoda programski jezik strojna koda itd.

Snovanje algoritmov Naravni jezik nejasnost dvoumnost primeren za opis ideje Prepisovalci bodo javno obešeni na oglasni deski. Dvojiško iskanje elementa v urejeni tabeli izvedemo tako, da s primerjavo iskanega elementa s sredinskim elementom tabele ugotovimo ali je iskani element v levi ali desni polovici. Nato gremo iskat element v ustrezni del tabele. Odločitveni ali iskalni problem Naloga: urejena tabela elementov Rešitev: odgovor da/ne indeks iskanega elementa

Snovanje algoritmov Diagram poteka grafični prikaz globalen pogled okoren opis podrobnosti Start Preberi a Preberi b p 0 p p + b a a - 1 Iskalni problem Naloga: par števil a in b Rešitev: zmnožek p = a * b da a > 0 ne Izpiši p Konec

Snovanje algoritmov Psevdokoda prenosljivost? človek/človek človek/stroj, stroj/stroj poljubna natančnost opisa uporaba matematičnih formul Iskalni problem Naloga: par števil a in b Rešitev: zmnožek p = a * b preberi a in b p 0 while a > 0 do p p + b a a 1 endwhile izpiši p Glej tudi: http://en.wikipedia.org/wiki/sieve_of_eratosthenes Naj bo L seznam celih števil od 2 do N Ponavljaj Naj bo X prvi neobdelani element v seznamu L Izpiši X Iz seznama odstrani vse večkratnike X Dokler je X manjši od N Iskalni problem Naloga: število N Rešitev: seznam praštevil

Snovanje algoritmov Programski jezik realnost ogromna izbira algoritem lahko dejansko izvedemo int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); }.text.global pgcd pgcd: push mov mov mov push.loop: cmp je xor div mov mov jmp.end: pop leave ret %ebp %esp, %ebp 8(%ebp), %eax 12(%ebp), %ecx %edx $0, %ecx.end %edx, %edx %ecx %ecx, %eax %edx, %ecx.loop %edx Iskalni problem Naloga: par števil a in b Rešitev: število g - gcd gcd a 0 = a gcd a b = gcd b (a `rem` b) : gcd ( a b -- c ) [ abs ] [ [ nip ] [ mod ] 2bi gcd ] if-zero ; Vir programov: http://rosettacode.org/wiki/greatest_common_divisor

0000280 0e 00 00 00 20 00 00 00 0c 00 00 00 2f 75 73 72 0000290 2f 6c 69 62 2f 64 79 6c 64 00 00 00 00 00 00 00 00002a0 1b 00 00 00 18 00 00 00 56 2d 90 64 27 5b 38 9c 0000000 cf fa ed fe 07 00 00 Snovanje 01 03 00 00 80 02 00 00 00 algoritmov 00002b0 a0 e1 79 d4 ab 94 a6 a1 24 00 00 00 10 00 00 00 0000010 0f 00 00 00 38 03 00 00 85 00 20 00 00 00 00 00 00002c0 00 0a 0a 00 00 09 0a 00 2a 00 00 00 10 00 00 00 0000020 19 00 00 00 48 00 00 00 5f 5f 50 41 47 45 5a 45 00002d0 00 00 00 00 00 00 00 00 28 00 00 80 18 00 00 00 0000030 52 4f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00002e0 70 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000040 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00002f0 0c 00 00 00 38 00 00 00 18 00 00 00 02 00 00 00 0000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000300 01 01 ad 04 00 00 01 00 2f 75 73 72 2f 6c 69 62 0000060 00 00 00 00 00 00 00 00 19 00 00 00 38 01 00 00 0000310 2f 6c 69 62 53 79 73 74 65 6d 2e 42 2e 64 79 6c 0000070 5f Strojna 5f 54 45 58 54 koda 00 00 00 00 00 00 00 00 00 00 0000320 69 62 00 00 00 00 00 00 26 00 00 00 10 00 00 00 0000080 00 00 00 00 01 00 00 00 00 10 00 00 00 00 00 00 0000330 38 10 00 00 08 00 00 00 29 00 00 00 10 00 00 00 0000090 00 00 00 razumljiva 00 00 00 00 00 00 le 10 00 računalniku 00 00 00 00 00 0000340 40 10 00 00 00 00 00 00 2b 00 00 00 10 00 00 00 00000a0 07 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 0000350 40 10 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00000b0 5f 5f 74 65 78 74 00 00 00 00 00 00 00 00 00 00 0000360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000c0 5f 5f 54 45 58 54 00 00 00 00 00 00 00 00 00 00 * 00000d0 20 0f 00 hitro 00 01 00 izvajanje 00 00 77 00 00 00 00 00 00 00 0000f20 55 48 89 e5 48 83 ec 10 89 7d f8 89 75 f4 81 7d 00000e0 20 0f 00 00 04 00 00 00 00 00 00 00 00 00 00 00 0000f30 f4 00 00 00 00 0f 85 0b 00 00 00 8b 45 f8 89 45 00000f0 00 04 00 80 00 00 00 00 00 00 00 00 00 00 00 00 0000f40 fc e9 14 00 00 00 8b 7d f4 8b 45 f8 99 f7 7d f4 0000100 5f 5f 75 6e 77 69 6e 64 5f 69 6e 66 6f 00 00 00 0000f50 89 d6 e8 c9 ff ff ff 89 45 fc 8b 45 fc 48 83 c4 0000110 5f 5f 54 45 58 54 00 00 00 00 00 00 00 00 00 00 0000f60 10 5d c3 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 0000120 98 0f 00 00 01 00 00 00 48 00 00 00 00 00 00 00 0000f70 55 48 89 e5 48 83 ec 10 bf 2a 00 00 00 be 17 00 0000130 98 0f 00 00 02 00 00 00 00 00 00 00 00 00 00 00 0000f80 00 00 e8 99 ff ff ff be 00 00 00 00 89 45 fc 89 0000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000f90 f0 48 83 c4 10 5d c3 90 01 00 00 00 1c 00 00 00 0000150 5f 5f 65 68 5f 66 72 61 6d 65 00 00 00 00 00 00 0000fa0 00 00 00 00 1c 00 00 00 00 00 00 00 1c 00 00 00 0000160 5f 5f 54 45 58 54 00 00 00 00 00 00 00 00 00 00 0000fb0 02 00 00 00 20 0f 00 00 34 00 00 00 34 00 00 00 0000170 e0 0f 00 00 01 00 00 00 18 00 00 00 00 00 00 00 0000fc0 98 0f 00 00 00 00 00 00 34 00 00 00 03 00 00 00 0000180 e0 0f 00 00 03 00 00 00 00 00 00 00 00 00 00 00 0000fd0 0c 00 01 00 10 00 01 00 00 00 00 00 00 00 00 01 0000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000fe0 14 00 00 00 00 00 00 00 01 7a 52 00 01 78 10 01 00001a0 19 00 00 00 48 00 00 00 5f 5f 4c 49 4e 4b 45 44 0000ff0 10 0c 07 08 90 01 00 00 00 00 00 00 00 00 00 00 00001b0 49 54 00 00 00 00 00 00 00 10 00 00 01 00 00 00 0001000 00 01 5f 00 05 00 03 5f 6d 68 5f 65 78 65 63 75 00001c0 00 10 00 00 00 00 00 00 00 10 00 00 00 00 00 00 0001010 74 65 5f 68 65 61 64 65 72 00 26 67 63 64 00 2a 00001d0 d0 00 00 00 00 00 00 00 07 00 00 00 01 00 00 00 0001020 6d 61 69 6e 00 2f 02 00 00 00 03 00 a0 1e 00 03 00001e0 00 00 00 00 00 00 00 00 22 00 00 80 30 00 00 00 0001030 00 f0 1e 00 00 00 00 00 a0 1e 50 00 00 00 00 00 00001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0001040 fa de 0c 05 00 00 00 14 00 00 00 01 00 00 00 00 * 0001050 00 00 00 00 00 00 00 00 02 00 00 00 0f 01 10 00 0000210 00 10 00 00 38 00 00 00 02 00 00 00 18 00 00 00 0001060 00 00 00 00 01 00 00 00 16 00 00 00 0f 01 00 00 0000220 58 10 00 00 04 00 00 00 98 10 00 00 38 00 00 00 0001070 20 0f 00 00 01 00 00 00 1b 00 00 00 0f 01 00 00 0000230 0b 00 00 00 50 00 00 00 00 00 00 00 00 00 00 00 0001080 70 0f 00 00 01 00 00 00 21 00 00 00 01 00 00 01 0000240 00 00 00 00 03 00 00 00 03 00 00 00 01 00 00 00 0001090 00 00 00 00 00 00 00 00 20 00 5f 5f 6d 68 5f 65 0000250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00010a0 78 65 63 75 74 65 5f 68 65 61 64 65 72 00 5f 67 * 00010b0 63 64 00 5f 6d 61 69 6e 00 64 79 6c 64 5f 73 74 00010c0 75 62 5f 62 69 6e 64 65 72 00 00 00 00 00 00 00

Semantične vrzeli ideja algoritma Snovanje algoritmov opis algoritma (algoritem) izvorna koda strojna koda snovanje, metode snovanja programiranje, implementacija prevajanje / tolmačenje izvajanje A b s t r a k c i j a proces

Implementacija algoritmov Programiranje 1, 2, 3, branje vhoda in izpis izhoda aritmetične in logične operacije nizi in tabele (polja, array) odločitveni stavki Predpostavljamo, da programiranje obvladat. iteracija oz. zanke

Implementacija algoritmov Razhroščevanje kode printf metoda sledenje programu (trace) prekinitvena točka (breakpoint) opazovanje (watch) Profiliranje in instrumentacija kode ugotavljanje, koliko časa/pomnilnika/itd. porabijo posamezni deli programa programu dodamo ukaze za merjenje

Implementacija algoritmov Izvajanje programa prevajanje izvorne kode v strojno kodo interpretiranje izvorne kode Izvedba algoritma program zaženemo na ustreznem računalniku izvajanje eksperimentov znanstvena metoda: hipoteza eksperimentalno ovrednotenje algoritma

Sled algoritma Sled algoritma izpis podatkov tekom izvajanja, npr.: spremenljivke, podatkovne strukture št. korakov, globina rekurzije, itd. Izvajanje Computr simuliranje na papir dejansko z računalnikom

Evklidov algoritem Sled algoritma int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } gcd(264, 72) # a b q r 0 264 72 3 48 gcd(264, 72) = 1 72 48 1 24 gcd(72, 48) = 2 48 24 2 0 gcd(48, 24) = 3 24 0 gcd(24, 0) = 24

Eratostenovo sito Sled algoritma Naj bo L seznam celih števil od 2 do N Ponavljaj Naj bo X prvi neobdelani element v seznamu L Izpiši X Iz seznama odstrani vse večkratnike X Dokler je X manjši od N Eratostenovo sito za n = 30 # izbrani X in seznam L 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2 2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 3 2 3 5 7 11 13 17 19 23 25 29 4 2 3 5 7 11 13 17 19 23 29 5 2 3 5 7 11 13 17 19 23 29 6 2 3 5 7 11 13 17 19 23 29 7 2 3 5 7 11 13 17 19 23 29 8 2 3 5 7 11 13 17 19 23 29 9 2 3 5 7 11 13 17 19 23 29 10 2 3 5 7 11 13 17 19 23 29 11 2 3 5 7 11 13 17 19 23 29

Kaj delamo pri APS? Razumevanje algoritma psevdokoda, sled, Pravilnost algoritma Ali algoritem res računa tisto, kar mislimo, da računa? Zahtevnost algoritma Katere in koliko virov (čas, pomnilnik) potrebuje algoritem? Se da bolje?

Povzetek Algoritem, računski problem naloga, rešitev, vrste problemov Snovanje algoritmov opis algoritma, metode snovanja Implementacija algoritmov eksperimenti Sled algoritma