algoritmi strukture podataka uvod u oop · 2020. 4. 13. · algoritmi i strukture podataka autor:...

32
АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected] Предмети: Увод у објектно програмирање Алгоритми и структуре података др Милован Миливојевић страна 1 32 Блок 4-P Algoritmi Strukture podataka Uvod u OOP др Милован Миливојевић

Upload: others

Post on 11-Oct-2020

11 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 1 oд 32

Блок 4-P Algoritmi ● Strukture podataka ●

Uvod u OOP

др Милован Миливојевић

Page 2: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 2 oд 32

VAŽNO

• Materijal u ovom Bloku predstavlja kompilaciju materije iz referenci [1], [2] i [7];

• Materija je namenjena samo za internu upotrebu za studente I i II godine - studijskog programa Informacione tehnologije, Akademije zapadna Srbija ● odsek Užice, kao pomoć u pripremi i savladavanju materije vezane za: Algoritme, Strukture podataka i Uvod u objektno programiranje;

• Pri korišćenju ovog teksta za druge namene OBAVEZNO je referenciranje na originalnu literaturu.

Preporučena literatura:

1.

Microsoft Visual C# 2012 korak po korak

Autor: John Sharp

Izdavač: CET Beograd, Srbija Godina izdavanja: 2013.

2.

Microsoft Visual C# Step by Step, Ninth Edition

John Sharp

Izdavač: Published with the authorization of Microsoft Corporation by: Pearson Education, Inc. Copyright © 2018 by Pearson Education, Inc.

3.

Exam Ref 70-483: Programming in C#

Wouter de Kort

Published with the authorization of Microsoft Corporation by: O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, California 95472 /// Copyright © 2013 by O'Reilly Media, Inc.

4.

Osnove dizajna i analize algoritama

Autor(i): Dejan Živković

Godina izdavanja: 2007.

5.

Algoritmi i strukture podataka

Autor: Milo Tomašević

Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008.

6.

Algoritmi i strukture podataka

Autor: Dragan Urošević

Izdavač: Računarski fakultet Beograd (RAF) / CET Beograd, Srbija Godina izdavanja: 2018.

7.

Rešeni zadaci iz programskog jezika C# (drugo izdanje)

Autor: Laslo Klaus

Izdavač: Akademska Misao Beograd, Srbija Godina izdanja: 2018.

Page 3: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 3 oд 32

Sadržaj 4. BLOKA

• Upotreba while petlji.

• Upotreba for iskaza (petlji).

• Upotreba do iskaza iteracije.

• Grafiče aplikacije sa upotrebom petlji... • Debugging - elementi

Pojam iterativnih postupaka.

Postoje različiti iteracioni iskazi (petlje, ciklusi) koji se mogu koristiti da se jedna ili više komandi (programskih sentenci) pokrenu jedna za drugom:

• while

• for

• do ... while.

Kreiranje while iskaza.

Iskaz while se koristi da bi se neki iskaz ili blok komandi ponovio više puta sve dok neki uslov ne bude zadovoljen.

Incijalizacija // inicijalizacija kontrolne promenljive

while (logički iskaz)

{

iskaz;

...

iskaz;

} • Logički iskaz (koji mora biti u zagradama) se izračunava, i ako je tačan, iskazi u bloku,

koji je ograničen vitičastim zagradama, se izvršavaju, a zatim se logički iskaz ponovo proverava. Ako je iskaz i dalje tačan, blok komandi se ponavlja, a zatim se logički iskaz iznova proverava.

• Proces se ponavlja sve dok logički iskaz ne postane netačan, i tada iskaz while prekida rad.

• Program dalje predaje upravljanje prvom iskazu ispod iskaza while.

• Moguće je da se iskazi u telu petlje ne izvrše niti jedan put. Ovo se dešava u slučaju kada je logički iskaz inicijalno netačan (false).

Page 4: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 4 oд 32

Navode se primeri jedne jednostavne konzolne i jednostavne grafičke aplikacije sa upotrebom while iskaza.

Primer koda fajla AISP_B4primer1P.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AISP_B4primer1P { class Program { static void Main(string[] args) { Console.WriteLine("Faktorijel broja n (n!)"); int i, n, fakn=1; Console.WriteLine("-------------------------"); Console.WriteLine("Uneti prirodan broj n:"); n = int.Parse(Console.ReadLine()); i = n; while(i>1) //sve dok je logicki iskaz TACAN { //blok iskaza se ponavlja fakn = fakn * i; i--; } string sentence = String.Format("Faktorijel od {0} je {1}!={2}",n,n,fakn); Console.WriteLine(sentence); } } }

Page 5: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 5 oд 32

Primer koda fajla AISP_B4primer2bP.cs

• U windows aplikacijama, je veoma čest zahtev, da se manipuliše fajlovima u smislu njihovog otvaranja (Open) i memorisanja (Save). Na takvim formama, potrebno je da se operiše sa tzv. dijalozima za otvaranje (OpenFileDialog) ili dijalozima za memorisanje (FileSaveDialog).

• Ako je, na primer u pitanju dijalog za otvaranje fajlove, u podešavanju svojstava ovog dijaloga moguće je definisati filter za prikaz samo pojedinih tipova fajlova (*.docx, *.txt, *.jpg itd.) (sika 4.1).

• Dijalološki prozori su deo razvojnog okruženja i nije potrebno da se programiraju od početka

Slika 4.1. Dijalog (standardni) za otvaranje fajlova u Windows okruženju

Kao primer navodi se dijaloški prozor za otvaranje fajlova (OpenFileDialog).

Uobičajeni redosled koraka pri kreiranju ovog kontrolnog objekta je:

• Postavljanje kontrolnog objekta na formular (obrazac, form)

• Podešavanje svojstava ovog dijaloškog kontrolnog objekta (naslov, filteri, početni direktorijum ...)

• Povezivanje rezultata otvaranje dijaloga i akcije korisnika (najčešće: izbora željenog fajla) sa drugim kontrolama i akcijama na formi, odnosno obrascu.

Page 6: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 6 oд 32

Primer: Kreirati formu kao na slici 4.2 sa sledećim kontrolama (tabela 4.1).

Tabela 4.1. Svojstva kontrola na formi ● Primer: AISP_B4primer2bP ●

Svojstva / properties

Kontrole Name Font Text Multiline Scrollbars

Command button

cmdSelekcijafajla MS Sans Serif 12pt

Odaberi fajl

TextBox txtOdabraniFajl MS Sans Serif 10pt

TextBox txtSonet MS Sans Serif 8pt

True True

TextBox txtSonet_while MS Sans Serif 8pt

True True

PictureBox picBoxWilliam

Labels Font za sve labele je: MS Sans Serif, 8pt

* Sve boje i rasporedi kontrolnih objekata su kao na slici 4.1

Slika 4.2. Windows forma za prikaz sadržaja tekstualnog fajla ● Primer: AISP_B4primer2bP●

Page 7: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 7 oд 32

Koraci:

• U ToolBox-u (leva zona u razvojnom okruženju) aktivirati grupu kotrola Dialogs. Iz ove grupe selektovati kontrolni objekat OpeFileDialog i mišem ga prevući na formu u režimu dizajn. Kontrola se prikazuje na traci ispod formulara i dobija generičko ime OpenFileDialog1 (slika 4.2).

• Podešavanje svojstava OpenFileDialog kontrolnog objekta. o Podešavanje filtera za tip fajlova koji će se pojaviti u OpenFileDijalog-u

▪ Za aktivnu OpenFileDialog kontrolu, u prozoru u donjem desnom uglu

podesiti svojstvo Filter. (slika 4.1)

PRIMER: Tekstualni fajlovi|*.txt|Svi fajlovi|*.*

Značenje prethodog filtera je: U dijaloškom prošoru za otvaranje fajlove biće ponuđena dva filtra: *.txt (fajlovi sa ekstenzijom *.txt, odnosno jednostavni tekstualni fajlovi) / ovaj PRVI filter se aktivira pri otvaranju dijaloga, nakon čega sledi uobičajeno opcija *.* (prikaz svih fajlova) / kao alternativa. Separatori filtera su VERTIKALNE CRTE.

▪ Filter može obuhvatiti istovremeno i više tipova fajlova

Slike|*.jpg;*.png;*.bmp|Video|*.mpg;*.avi;*.mp4

▪ (Primer: Text datoteke|*.txt|Svi fajlovi|*.*) o Podešavanje naslova dijaloga se realizuje pomoću svojstva Title.(Primer:

Otvaranje tekstualnih datoteka) (slika 4.1) o Podešavanje folder-a koji će biti inicijalno otvoren pri aktiviranju dijaloškog

prozora pomoću svostva InitialDirectory: (Primer: E:\AKADEMIJA ZS2020\AISP-UOP 2020) (slika 4.1)

Kontrolni objekat OpenFileDialog poseduje metodu ShowDialog koja beleži akciju korisnika. Ta akcija je kroz ovu metodu zabeležena u obliku enumeracije DialogResult (Bitne se stavke su: DialogResult.OK - korisnik je odabrao fajl; DialogResult.Cancel - korisnik je nije odabrao fajl ... odabrao je Cancel ili zatvorio dijaloški prozor)...

• Na osnovu povratne vrednosti koju prosleđuje metoda ShowDialog.... mogu se preduzeti dalje akcije.

PRIMER

Povratna vrednost OpenFileDijalog-a pomoću koga je selektovan fajl, veže se za komandno dugme cmdSelekcijaFajla:

o 2 x klik na komandno dugme cmdSelekcijaFajla

U metodi cmdSelekcijaFajla_Click dodati kod koji sledi:

(Značenja pojedinih delova koda, data su u komentarima)

Page 8: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 8 oд 32

Primer koda fajla AISP_B4primer2bP.cs

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO;//dodat imenovani prostor System.IO

namespace AISP_B4primer2bP { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void cmdSelekcijaFajla_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) /*pomoću openFileDialog1.ShowDialog() se preuzima povratna vrednost i ispituje da li je korisnik odabrao fajl i odabrao Open / DialogResultOK */

{ /*U svojstvu FileName je naziv odabranog fajla sa punom putanjom ... Ovo ime fajla sa putanjom se dodeljuje naslovnoj liniji FORME*/

this.Text = openFileDialog1.FileName;

/*Imenovani prostor System.IO sadrži klase za otvaranje, citanje fajlova i pisanje u fajlovima Stream.Reader je klasa cijem konstruktoru se prosledjuje putanja i ime fajla preko FileName sr je istanca klase Stream.Reader Inicijalizuje se objekat sr tipa System.IO.StreamReader i u konstruktoru postavlja ime datoteke koju je korisnik izabrao u dijalogu. */

System.IO.StreamReader sr = new System.IO.StreamReader( openFileDialog1.FileName);

/*Metodom ReadToEnd objekta klase Stream.Reader cita se kompletan sadrzaj fajla u obliku stringa i pridruzuje svojstvu Text kontrolnog objekta txtSonet*/ txtSonet.Text = sr.ReadToEnd();

Page 9: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 9 oд 32

/* Zatvaraje StreamReader objekat, metodom Close(). Ako se StreamReader ne zatvorite metodom Close(), fajl koji se čita ostaje zaključan, tako da ni jedna druga aplikacije ne moze da ga otvori. U tom slucaju StreamReader fajl se otvara u eksluzivnom rezimu*/

sr.Close();

//------------------- string putanja = openFileDialog1.FileName; MessageBox.Show(putanja);

//------------------- /*FileInfo je klasa iz imenovanog prostora System.IO koja sluzi za manipulisanje fajlovima. Imenovani prostor je postao dostupan sa using direktivom. src je objekat klase FileInfo src je inicijalizovan na fajl koji je odabran u OpenFileDialog-u*/

FileInfo src = new FileInfo(putanja);

/*Svojstvo Name objekta/promenljive src cuva ime obelezenog fajla u okviru dijloga OpenFileDialog ali bez putanje fajla*/

txtOdabraniFajl.Text = src.Name;

//preko while petlje

/*Deklarise se varijabla citac tipa TextReader TextReader je klasa iz .NET okruzenja za citanje karaktera iz fajlova. Nalazi se u imenovanom prostoru System.IO*/

TextReader citac = src.OpenText();

/*OpenText() je metoda klase FileInfo a src je objekat te klase OpetText() sluzi za otvaranje fajla */

txtSonet_while.Text = "";//briše sav tekst iz ovog TextBox-a

string line = citac.ReadLine();//cita se prva linija u fajlu

while (line != null) //petlja se ponavlja dok se ne dodje do prazne //linije { txtSonet_while.Text += line + "\n"; //upis u TextBox line = citac.ReadLine(); }

citac.Close(); } } } }

Izgled aktivirane forme dat je na slici 4.3.

Page 10: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 10 oд 32

Slika 4.3. Aktivirana forma sa prikazima sadržaja tekstualnog fajla ● Primer: AISP_B4primer2bP●

Kreiranje for iskaza.

• Za razliku od while iskaza koji podrazumeva prethodnu inicijalizaciju kontrolne promenljive može se koristiti formalniji pristup gde se u jednoj stukturi vrši inicijalizacija kontrolne promenljive, postavlja logički iskaz i kod koji ažurira kontrolnu promenljivu:

NAPOMENA: Lista argumenata for iskaza mora biti odvojena sa znakom ;

for (inic. logičke var.; logički iskaz; ažur. kontrolne var.)

{

iskaz;

...

iskaz;

}

Inicijalizacija se pojavljuje samo jednom, na samom početku petlje. Zatim, ako je logički iskaz vrednuje kao true, blok komandi sa iskazima se izvršava. Vrši se ažuriranje kontrolne promenljive, a logički iskaz se ponovo proverava. Ukoliko je vrednost logičkog iskaza još uvek true, blok komadni u telu for petlje će se ponovo izvršiti. Kontrolna promenljiva ponovo se ažurira, logički izraz se ponovo izračunava, odnosno određuje se njegova istinitosna vrednost itd.

Page 11: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 11 oд 32

• Iskazi u telu petlje se uvek izvršavaju pre nego što dođe do ažuriranja kontrolne promenljive.

• U okviru for petlje mogu se inicirati vrednosti brojačkih promenljivih.

• Promenljiva ima područje važenja samo u telu for iskaza i nestaje kada se for iskaz završi.

Primer koda fajla AISP_B4primer3P.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AISP_B4primer3P { class Program { static void Main(string[] args) { Console.WriteLine("Primena For petlje"); Console.WriteLine("---------------------"); int n; //int nfak; long nfak=1; Console.WriteLine("Uneti prirodni broj n:" + "\n"); n=int.Parse(Console.ReadLine()); for(int i=n;i>1;i--) { nfak = nfak * i; } string zapis = String.Format("Faktorijel broja {0} " + "je {1}!={2} ", n,n,nfak); Console.WriteLine(zapis); } } }

Page 12: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 12 oд 32

Kreiranje do iskaza.

• Iskazi while i for tretiraju svoje logičke iskaze na početku petlje.

• Ovo znači da ako logički iskaz ima vrednost false na prvom ispitivanju, telo petlje se neće izvršiti nijednom.

• Kod do petlje mora doći do bar jednog izvršavanja tela petlje.

inicijalizacija

do

{

iskaz;

iskaz;

} while (logički iskaz)

• Pored toga što se iskaz break može koristiti za izlazak iz switch iskaza, na sličan način se može koristiti za izlazak iz iterativnih ciklusa: while, for i do.

• Kada se sa break izađe iz petlje, petlja prestaje sa radom a upravljanje se predaje prvoj komandi (iskazu) nakon petlje.

U nastavku je dat jednostavan primer upotrebe do ...while petlje.

Primer koda fajla AISP_B4primer4P.cs

Kreirati program koji daje zbir neparnih (S) i proizvod parnih (P) brojeva iz intervala [nmin, nmax].

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AISP_B4primer4P { class Program { static void Main(string[] args) { Console.WriteLine("Primer upotrebe do petlje"); Console.WriteLine("-----Akademija ZS Uzice----");

Page 13: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 13 oд 32

int nmin,nmax,S=0,P = 1; do // kontrola unosa pomocu do petlje { Console.WriteLine("Uneti nmin>0:" + "\n"); nmin = int.Parse(Console.ReadLine()); }while (nmin<=0); do //kontrola unosa pomocu do petlje { Console.WriteLine("uneti> nmin<nmax<=100"); nmax = int.Parse(Console.ReadLine()); } while(nmax<=nmin||nmax>100); Console.WriteLine("Granice korektne ..."); for (int i=nmin;i<=nmax;i++) { if (i % 2 == 0) { P *= i; } else { S +=i; } } Console.WriteLine("Rezultat za nmin= {0} i nmax={1}", nmin,nmax); Console.WriteLine("Zbir NEPARNIH je S=" + S); Console.WriteLine("Proizvod PARNIH je P=" + P); } } }

Page 14: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 14 oд 32

Sledi elementarni primer aplikacije sa while, for i do ... while petljama u jednom programu:

Primer koda fajla AISP_B4primer5P.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AISP_B4primer5P { class Program { static void Main(string[] args) { Console.WriteLine("Petlje...while...for...do... "); Console.WriteLine("-----Akademija ZS Uzice-------" +"\n"); Console.WriteLine("while ... petlja"); int i = 0; //while petlja se izvrsava sve dok je logicki izraz tacan while (i < 5) //izraz u zagradi mora biti logicki { // preporuka je da while iskazi budu u //bloku cak ako ima i samo 1 iskaz Console.WriteLine(i); i++; } /*Kada logicki izraz postane netacan upravljanje se predaje na prvi izraz ispod while bloka ----------------------------------- *** Sledi primer for petlje strukture for petlje je for(inicijal.kontrolne var., logicki iskaz, azuriranje kontr. var.) petlja se izvrsava sve dok je logicki uslov ispunjen */ Console.WriteLine("For ... petlja"); for (i = 0; i < 5; i++) // napomena argumenti se uvek odvajaju sa ; { Console.WriteLine(i); } // moguce je i ovo for (int m = 1, j = 10; m <= j; m++, j--) // da je stavljeno != umesto <= bio bi beskonacan ciklus { Console.WriteLine("i=" + m + " j=" + j); } /*napomena ako se u pelji for vrsi i deklaracija vrijable onda je njen opseg vazenja samo telo for petlje... primer varijabla j prethodnoj petlji ----------------------------------------------

Page 15: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 15 oд 32

*** sledi primer do petlje... do petlja se mora izvrsiti bar jedanput jer se uslov ispituje na kraju*/ Console.WriteLine("Primer do ... petlje..."); i = 0; do { Console.WriteLine(i); i++; } while (i < 5); } } }

Primer koda fajla AISP_B4primer6P.cs

Kreirati grafičku aplikaciju koja omogućava prevođenje zadatog prirodnog broja iz dekadnog u odabrani brojčani sistem: binarni, oktalni, duodekadni ili heksadekadni.

Kreirati formu kao na slici 4.4 sa sledećim kontrolama (tabela 4.2):

Tabela 4.2. Svojstva kontrola na formi ● Primer: AISP_B4primer6P ●

Svojstva / properties

Kontrole Name Font Text Multiline Scrollbars

Command button

btnKodiranje MS Sans Serif 14pt

KODIRANJE

TextBox txtN MS Sans Serif 12pt

TextBox txtKoraci MS Sans Serif 10pt

True True

Panel panel1 MS Sans Serif 8pt

RadioButton rbDecToBin MS Sans Serif 12pt

RadioButton rbDecToOct MS Sans Serif 12pt

RadioButton rbDecToDuoDec MS Sans Serif 12pt

RadioButton rbDecToHex MS Sans Serif 12pt

PictureBox pictureBox1

Labels Sve labele su fonta: MS Sans Serif, 10pt

* Sve boje i rasporedi kontrolnih objekata su kao na slici 4.1

Page 16: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 16 oд 32

Forma aplikacije i Design mod-u Nazivi kontrolnih objekata Slika 4.4. Izgled aplikacije u režimu Design i prikaz naziva kontrolnih objekata

● Primer: AISP_B4primer6P ●

• U formi na slici 4.4. upotrebljeni su i kontroloni objekti RadioButton (radio dugme) i Panel.

• Kontrolni objekat RadioButton je sličan kontroli CheckBox (potvrđeno/nepotvrđeno). Razlika je u tome što potvrda jednog radio dugmeta, isključuje potvrdu drugih radio dugmadi u nekom okviru (objektu) (slično dugmadima na starim radio aparatima pomoću kojih se birao frekventni opseg).

• Kada su u pitanju kontrolni objekti iz porodice CheckBox, moguća je višestruka selekcija.

• Radio dugmad se najčešće postavljaju na samu formu i onda čine celinu, medjusobno se kontrolišući (istovremeno samo jedno dugme može biti potvrđeno) ili se grupišu u kontrolni objekat Panel koji služi kao kontejner. U slučaju Panel-a, radio dugmad koja se u njemu nalaze se medjusobno kontrolišu (samo jedno od njih može biti potvrđeno).

Page 17: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 17 oд 32

Komandnom dugmetu btnKodiranje pridružen je (2 x klik) sledeći kod:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace AISP_B4primer6P { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnRezultat_Click(object sender, EventArgs e) { int broj = int.Parse(txtBoxN.Text); int broj10 = broj; txtBoxKoraci.Text = " "; string kod = ""; int kodOsnova;

//int kodOsnova; //selekcija: u koji brojcani sistem se kodira //dekadni broj if (rbDecToBin.Checked == true) { kodOsnova = 2; } else if (rbDecToOct.Checked == true) { kodOsnova = 8; } else if (rbDecToDuoDec.Checked == true) { kodOsnova = 12; } else { kodOsnova = 16; }

43:2=1

21:2=1

10:2=0

5:2=1

2:2=0

1:2=1

0

4310=1010112

Page 18: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 18 oд 32

do { //deljenje po modulu 2,8,12 ili 16 int ostatak = broj % kodOsnova; char charCifra; int asciiKod; switch (ostatak) /*prilagodjavanje ostatka pri deljenju, posebno za kodiranje u DuoDecimalni i Heksadecimalni brojcani sistem*/ { case 10: case 11: case 12: case 13: case 14: case 15: asciiKod = 55 + ostatak;//65 je ASCII kod slova A // … cifre A,B,C,D,E,F break; default: { asciiKod = 48 + ostatak; //cifre 1,2,3,4,5,6,7,8,9 } break; } charCifra = Convert.ToChar(asciiKod); kod = charCifra + kod; txtBoxKoraci.Text += kod + "\r\n"; broj /= kodOsnova; } while (broj != 0); lblRezultat.Text = "R: "+Convert.ToString(broj10) + "(10)"+"="+ kod+"("+Convert.ToString(kodOsnova)+")"; btnRezultat.Text = kod; } } }

Pikaz aktiviranih formi dat je na slici 4.5:

1235:16=3

77:16=13=D

4:16= 4

0

123510=4D316

Page 19: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 19 oд 32

Slika 4.5. Izgled aktiviranih formi aplikacije ● Primer: AISP_B4primer6P ●

Preporuka: Pročitati tekst o Džordžu Bulu na narednoj strani ...

Page 20: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 20 oд 32

Preuzeto sa: https://sh.wikipedia.org/wiki/George_Boole

Džordž Bul (engl. George Boole; 1815 - 1864)

je bio engleski matematičar i filozof. Njegovo najveće dostignuće je bilo uvođenje u matematiku i logiku pojma algebre Bula. Zbog značaja tog termina kao i njegove

primene u informatici i matematičkoj logici Bul se smatra za jednog od tvoraca tih oblasti nauke.

Biografija

• Otac Džordža Bula, Džon Bul, je bio obućar, ali je bio zainteresovan za nauku. Džordža Bul je rođen kao slabo i bolesno dete, pa su se roditelji plašili da neće preživeti. Ipak, Džordž je postao jak i zdrav. Kada je imao dve godine, Džordž je pohađao školu za decu trgovaca u Linkolnu. Posle godinu dana, prešao je u trgovačku školu gde je ostao do svoje sedme godine. Ali njegovo rano učenje matematike dolazi od njegovog oca. Sa sedam godina krenuo je u osnovnu školu, gde je počeo da se interesuje za jezike, i otac mu je doveo prodavca knjiga da ga uči latinski. Kada je naučio latinski, počeo je sam da uči grčki. Sa četrnaest godina, toliko je dobro znao grčki, da je preveo pesmu jednog grčkog pesnika. To je njegovog oca učinilo veoma ponosnim da je odmah objavio. Njegov talenat je bio toliki da su lokalni profesori osporavali činjenicu da neki dečak sa samo četrnaest godina može da piše sa takvom dubinom.

• U to vreme, Džordž je pohađao trgovačku akademiju Beinbridž u Linkolnu, na koju je ušao 1828. Ova škola nije obezbeđivala vrstu edukacije kakvu je Džordž želeo, ali bila je sve što su roditelji mogli da mu priušte. Sam je naučio i nemački i francuski, a sa šesnaest godina postao je asistent učitelju u školi u Dančesteru. Na ovo je bio primoran s obzirom da je posao njegovog oca propao, i morao je da izdržava roditelje, braću i sestru. Zadržao je interes za jezike, počeo je ozbiljno da se bavi matematikom. Godine 1834. otvorio je svoju školu u Linkolnu, iako je imao samo devetnaest godina. Godine 1838. umire Robert Hol, koji je vodio Hol akademiju u Vedingtonu. Bul je bio pozvan da preuzme školu, što je i uradio.

• U to vreme, Bul je proučavao Laplasove i Lagranževe radove, praveći beleške, koje su kasnije činile osnovu njegovom prvom matematičkom radu. Ohrabrivao ga je Gregori Dankan koji je u to vreme bio urednik matematičkih novina na Kembridžu. U leto 1840. otvorio je internat u Linkolnu, i cele porodica se opet preselila sa njim. Pod uticajem Dankana, počeo je da uči algebru i da svoje članke redovno objavljuje u matematičkim novinama Kembridža. Počeo je da sarađuje sa De Morganom 1842. i sledeće godine je napisao rad “On a general method of analysis applying algebraic methods to the solution of differential equations”. Rad je objavio 1844. i za njega je, novembra 1844, dobio medalju kraljevskog društva.

• Njegov rad na matematici počeo je da mu donosi slavu. Dobio je mesto predavača matematike na Kvins koledžu 1849. Otac mu je umro u decembru 1848, a u avgustu 1849, Bul je proglašen za prvog profesora matematike na Kvins koledžu. Tamo je ostao do kraja svog života, stekavši reputaciju posvećenog profesora. Maja 1851. Bul je izabran za dekana nauke (eng. Dean of Science). U međuvremenu, upoznao je Meri Everest, čiji je ujak bio profesor grčkog. Bul je počeo da daje Meri časove matematike, tada je imao 37 godina, a Meri 20. 1855. umro je Merin otac, ostavivši je bez ičega, i Bul je tada zaprosio. Venčali su se 1855. Imali su veoma skladan brak i pet ćerki.

Rad i dela

• Bulovo najvažnije delo bilo je „Istraživanje zakona misli na kome se zasniva matematička teorija logike i verovatnoće“, objavljeno 1854. Bul je prišao logici na nov način, sažimajući je u prostu algebru, pretvarajući logiku u matematiku. To je algebarska struktura koja sažima osnovu operacija I (AND), ILI (OR), NE (NOT), kao i skupovnih operacija kao što su unija, presek i komplement. I kolo će pokazati TAČAN rezultat (binarno 1), samo ako su svi ulazi 1. ILI kolo će pokazati TAČAN rezultat ako mu je jedan od ulaza 1. NETAČAN rezultat će pokazati samo ako su oba ulaza 0. NE kolo ima samo jedan ulaz, i signal na izlazu je suprotan od signala na ulazu. NI kolo može biti kombinovano sa I, što daje NI (NAND), i sa ILI, što daje NILI (NOR). Ova kola imaju isti proces ulaza signala, ali na kraju izlazi suprotan signal. Stvorio je algebru logike koja je nazvana Bulova algebra, i koja nalazi primenu u konstrukciji računara, uključujući strujna kola i td.

• Nažalost, nije živeo dugo, umire u 49-oj godini života, 8. decembra 1864. od prehlade, koju je dobio tako što je pešačio dve milje po kiši, kako bi stigao na predavanje, i predavao je u mokroj odeći.

Page 21: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 21 oд 32

Debugging - elementi.

Referenca:

https://docs.microsoft.com/en-us/visualstudio/debugger/debugger-feature-tour?view=vs-2019

• The Visual Debugger

• Debugging - ispravljanje grešaka

• Bez obzira koliko vremena software developer provede u razvoju (pisanju) aplikacije, često se dešava da ona ne radi ono što on želi. Kada se to desi, potrebno je utvrditi razlog.

• Umesto da to radi tako što će satima gledati kod, za developer-a je efikasnije i lakše, da koristi alat za ispravljanje grešaka (debugger).

• Visual Studio Debugger, nije savršen i ne može otkloniti sve greške (bugs), ali može značajno pomoći. Otkalanjanje grešaka (debugging) podrazumeva da se aplikacija (kod) izvršava korak po korak (ili segment po segment), sa ciljem da se utvrdi mesto gde se počinju javljati greške.

• Kada se utvrdi mesto gde je nastala greška, veoma često će Debugger dozvoliti ispravljanje grešaka na licu mesta i nastavljanje sa izvršavanjem programa.

• Korišćenje debugger-a, na efikasan i pravilan način, takođe je veština koja zahteva trening i vreme, ali je neophodna za svakoga ko želi da postane software developer (programer), odnosno za svakoga ko želi da se bavi projektovanjem i razvojem aplikacija.

Nekoliko preporuka treba poštovati tokom debagging-a, da bi taj proces bio efikasan:

• Pojasniti problem postavljajući prava pitanja (software developer samome sebi)

• Istražiti i vrednovati pretpostavke: Šta je moglo da se desi? Da li je korišćen odgovarajući API? Da li su korišćeni odgovarajući objekti, klase i/ili metode? Da li su korišćeni odgovarajući parametri? ... Da li su objekti upotrebljeni na pravi način? Da li postoje sintaksne greške? ...)

• Proći kroz kod u Debugging mod-u sa ciljem da se utvrdi mesto gde bi mogla nastati greška itd.

• Pokretanje programa kroz debugger, odnosno u takozvanom debagging mod-u, znači da debugger aktivno nadgleda sve što se dešava dok program radi.

• Debugger omogućava korisiku da u svakom trenutku zaustavi izvršavanje programa i da istraži i oceni pojedine elemente koji se trenutno izvršavaju u okviru samog koda kao i da prolazi kroz program liniju po liniju analizirajući šta se dešava sa svim varijablama, objektima, okruženjem ... korak po korak.

Prikaz palete Debbuger-a (slika 4.6), realizuje se kroz sledeće korake

o View → Toolbars → Debug

Page 22: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 22 oд 32

Slika 4.6. Paleta Debug sa prikazom ključnih ikona i odgovarajućih prečica

• Pokretanje programa u debugging mod-u realizuje se sa F5 funkcijskim tasterom (ili sa Start Debugging / trouglić udesno Start, u paleti na sredini vrha ekrana )

• Debugger analizira program i ukoliko su se desilli neki izuzeci (exceptions ), upućuje korisnika na odgovarajuće linije koda i daje puno dodatnih objašnjenja.

• Ako se ne jave exceptions, a program ne radi dobro onda je korisno postaviti breakpoints, pomoću debugger-a i na taj način software developer, sebi daje šansu, da odgovarajući deo programskog koda, detaljnije analizira.

• Tačke prekida (Breakpoints) su najzazičnija i esencijalna osobina svakog debugger-a.

• Breakpoints su indikatori mesta na kojima Visul Studio prekida program. Na tim mestima programer može detaljno analizirati stanje varijabli, vrednosti varijabli, stanje memorije itd...

Postavljane Breakpoits-a je veoma jedostavno:

• Pozicioniranje - F9 ili

• 1 x klik sa leve strane linije kod-a u Code and Text editor-u.

Page 23: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 23 oд 32

Primer je dat u obliku konzolne aplikacije: Fibonačijev niz.

Preporuka: https://fibonacijevniz.wordpress.com/

Leonardo Fibonači

Leonardo Fibonači je rođen u Italiji, ali se obrazovao u Severnoj Africi, gdje je njegov otac bio angažovan u diplomatiji i predstavljao trgovačke poslove republike Piza.

Tamo je podučavao matematiku i dosta putovao sa svojim ocem te tako prepoznao ogromne prednosti decimalnog brojnog sisetma koji se tad u svakodnevnom životu koristio u arapskim zemljama. Kada je završio svoja putovanja, vratio se u Pizu gde je napisao važne tekstove koji su igrali bitnu ulogu u oživljavanju drevnih matematičkih veština i u tome je njegov veliki doprinos.

U knjizi o kvadratnim brojevima (Liber quadratorum, 1225.godine) nalazi se jedan od njegovih problema, tzv. Fibonačijev niz. Ova knjiga ga postavlja kao matematičara koji je dao glavni doprinos teoriji brojeva, jer je učinio prvi napredak zapadne civilizacije u aritmetici, od vremena Diofanta.

Šta je Fibonačijev niz?

• Fibonačijev niz, poznat i kao zlatni presek, predsavlja niz brojeva u kome zbir prethodna dva broja u nizu daju vrednost narednog člana niza. Indeksiranje članova ovog niza počinje od nule a prva dva člana su mu 0 i 1.

0

1

1 2

0

1

; 2n n n

f

f

f f f n− −

=

=

= +

To jest: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

• Fibonačijev niz se osim brojevima može prikazati i putem serije pravougaonika, kao i spiralom koju možemo nacrtati koristeći te pravougaonike. U tom obiku se najčešće pojavljuje u prirodi, umetnosti kao i u arhitekturi.

Page 24: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 24 oд 32

Fibonačijev niz u prirodi

Najzanimljiviji primeri ovog niza se nalaze u prirodi, možemo ga uočiti posmatrajući galaksije, biljke, životinje…

Listovi na grani rastu na međusobnim udaljenostima, koje odgovaraju Fibonačijevom nizu.

Cvetovi najčešće imaju 3, 5, 8, 13, 21, 34, 55 ili 89 latica.

Cvetići, smešteni u glavi suncokreta, razmešteni su u dva niza spirala: jedne u pravcu kretanja kazaljke na satu i druge u suprotnom.

ibonačijev niz u prirodi

Najzanimljiviji primeri ovog niza se nalaze u prirodi, možemo ga uočiti posmatrajući galaksije, biljke, životinje…

Listovi na grani rastu na međusobnim udaljenostima, koje odgovaraju Fibonačijevom nizu.

Cvetovi najčešće imaju 3, 5, 8, 13, 21, 34, 55 ili 89 latica.

Cvetići, smešteni u glavi suncokreta, razmešteni su u dva niza spirala: jedne u pravcu kretanja

Page 25: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 25 oд 32

Preporuke: http://www.avantartmagazin.com/fibonaci-i-njegov-carobni-niz/ https://pavlebasic.me/2017/02/08/fibonacijevi-magicni-brojevi/ http://drustvenimagazin.blogspot.com/2015/09/zlatni-broj.html https://www.iserbia.rs/da-li-ste-znali/tajna-zlatnog-preseka-2212 https://zlatnipreseci.wordpress.com/ https://aleksmilovic.wordpress.com/fibonacijev-niz-u-prirodi/

Primer koda fajla AISP_B4primer7P.cs

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AISP_B4primer7P { class Program { static void Main(string[] args) { Console.WriteLine("---Akademija Zapadna Srbija----"+"\n"); Console.WriteLine("---Fibonacijev niz----"); int nG; //gornja granica niza int a=0, b=1; double phi; do { Console.WriteLine("Unestite 10<=nG<=500"); nG = int.Parse(Console.ReadLine()); } while(nG<10||nG>500); do { phi = Convert.ToDouble(b) / Convert.ToDouble(a); string sentenca = String.Format("Plocica: a={0},

b={1} Phi={2:F4}", a, b, phi); Console.WriteLine(sentenca); int c = a + b; a = b; b = c; } while (b <= nG); Console.WriteLine("\n"+"Leonardo Fibonaci (1170-1250)"+"\n"); } } }

Page 26: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 26 oд 32

Nakon što se unese aplikacija, program se startuje sa F5 (u debugging mod-u)

Program će biti kompajliran bez prijava o greškama.

U cilju prikaza nekih mogućosti Debugger-a realizuje se sledeća procedura:

• 1 x klik levo pored linije broj 29 ... pojaviće se crveni kružić .... (slika 4.7)

Slika 4.7. Primer postavljanja BreakPoint-a na liniji 29 ● Primer: AISP_B4primer7P ●

• Potom treba ponovo startovati kompajliranje programa sa debugging-om (F5), ili u pojedinim situacijama realizovati Restart sa .... Ctrl + Shift + F5

• Aplikacija se ponovo izvršava i pauzira na mestu Breakpoint indikatora. Ovo je označeno i žutom transparentnom podlogom (linija koda obojena žutom nije još realizovana) (slika 4.8)

Slika 4.8. Primer komajliranja i izvršavanja programa do BreakPoint-a na liniji 29 ● Primer: AISP_B4primer7P ●

Page 27: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 27 oд 32

• Ukoliko se mišem pređe i zadrži pokazivač iznad neke od varijabli u označenom žutom iskazu (primer: varijbla b, slika 4.8), Visual Studio Debugger će prikazati tekuću vrednost odgovarajuće varijable (b=1, slika 4.8 - desno; sentenca=”Plocica> a=1, b=2, Phi=2.0000, slika 4.9 na kraju iskaza - desno)

Slika 4.9. Primer prikaza prozora Autos ● Primer: AISP_B4primer7P ●

• Za navigaciju i kretanje kroz kod veoma često se koristi komada Debugger-a, Step

Into (taster F11) (eng. stepping into the method - ulaženje u metod) (slika 4.10)

Slika 4.10. Primer primene Debugger-a: F11- Step Into ● Primer: AISP_B4primer7P ●

• Step Into komanda obezbeđuje kretanje kroz program liniju po liniju. Programska linija koja će biti izvršena i debugg-ovanaje žute boje, a odgovarajući broj linije je (na levoj strani) označen žutom strelicom (primer: linija br. 32). F11 je dobar način da se istraži tok izvršavanja programa do najsitnijih detalja.

Odgovarajuća ikonica je .

• U cilju ubrzanja kretanja kroz kod (izvršavanje linije koda bez debugg-ovanja), može se aktivirati F10 (Debug > Step Over), umesto F11. Sa F10 se odnosni iskaz

Page 28: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 28 oд 32

izvršava i prelazi se na sledeću liniju koda. Ovo ubrzava analizu programskog koda u slučaju kada je software developer siguran, da pojedini ikazi i linije koda, funkcionišu pravilno. Drugim rečima, sa F10 se preskače neinteresantni deo programerskog koda (sa aspekta grešaka) i prelazi brže na deo koda koga treba

detaljnije analizirati. Odgovarajuća ikonica je .

• Ukoliko programer želi da se program izvrši do određene pozicije (tekuće pozicije kurzora), efikasna je neka od opcija debugger-a:

o ctrl +F10 o Run Execution to here (slika 4.11). Postupak: Mišem kliknuti levo od

iskaza (primer: levo od varijable b u liniji koda br. 35). Nakon pojavljivanja malog zelenog trouglića usmerenog u desnu stranu i vertikalne crte / /, kliknuti mišem a ovaj indikator. Program će se izvršiti do pozicije kurzora. Ova opcija je veoma korisna ako se koristi za brz prolazak kroz petlje (cikluse, loop): Dok je u debugging režimu, programer se pozicionira mišem na levoj strani iskaza while, for ili do...while a potom višestrukim pritiskanjem miša (1 x klik, 1 x klik, 1 x klik ...) prolazi kroz petlju ciklus, po ciklus.... dok u prozorima Local, Autos ili Watch može se pratiti stanje varijabli, parametara i okruženja nakon svakog ciklusa. Ova tehnika funkcioniše kao privremeni BreakPoints.

Slika 4.11. Aktiviranje debugger-a do tekuće pozicije kurzora sa Run Ececution here ● Primer:

AISP_B4primer7P ●

o Desni taster miša na tekućoj poziciji kurzora → Run to Cursor (iz pomoćnog menija) (slika 4.12). Ova komanda startuje debugger i postavlja privremenu tačku prekida (Breakpoint) na tekućoj liniji kod-a.

Page 29: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 29 oд 32

Slika 4.12. Jedan od metoda aktiviranja komande debugger-a Run to Cursor ● Primer:

AISP_B4primer7P ●

• Za restatovanje debugger-a upotrebiti Restart dugme ili (Ctrl + Shift +F5). Ako se želi zaustaviti debugger i vratiti u Code and Text editor, aktivira se ikona u bliku malog crvenog kvadrata (u sredii gornje zone ekrana):

• Tokom korišćenja debugger-a (na primer analiza sa F11), u donjem delu ekrana biće otvoren jedna od prozora: Autos, Locals ili Watch (slika 4.13 i slika 4.14), sa prikazom tekućih vrednosti varijabli. Ovi prozori su raspoloživi samo u debugging režimu rada.

Page 30: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 30 oд 32

Slika 4.13. Primer prikaza prozora Autos ● Primer: AISP_B4primer7P ●

Slika 4.14. Primer prikaza prozora Autos ● Primer: AISP_B4primer7P ●

Page 31: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 31 oд 32

• Prozor Autos prikazuje varijable korišćene u okolini tekuće tačke prekida (alternativa za pokretanje: Debug > Windows > Autos, or press Ctrl+Alt+V > A).

• Prozor Locals prikazuje varijable definisane u lokalnoj oblasti važenja*, što je uobičajeno tekuća funkcija ili metod (alternativa za pokretanje: Debug > Windows > Locals, or press Alt+4.).

local scope* - pojmovi oblasti važenja biće objašnjeni naknadno

o Objekti u Loacals i Autos prozorima se prikazuju u obliku strukture stabla. Za takve objekte aktiviranjem miša levo od objekta se može dobiti rašireni oblik strukture

o Vrednosti koje su u Autos i Locals prozorima crvene boje označavaju da je tokom prethodne debugging komande - evaluacije (na primer sa F11), došlo do promene vrednosti ovih varijabli. Promena može nastati i direktim unošenjem vrednosti u ovim prozorima.

o Da bi se promenila vrednost neke varijable direktno u Locals ili Autos prozorima, potrebno je marikarti odgovarajuću varijablu sa 2 x klik a potom uneti željenu vrednost i potvrditi je sa Enter.

• Pored prozora Autos i Localc veoma je korisan i prozor Watch u koji se mogu izdvojiti za monitoring varijable i objekti od posebnog značaja za developer-a (varijable, objekti i sl.). Te vrednosti programer može posebno da proprati tokom procesa analize pomoću debugger-a. Primer postupaka

o U prozoru Locals, DTM na željenu varijablu, na primer: b o Add Watch / iz pomoćnog menija o U prozoru Locals, DTM na željenu varijablu, na primer: Phi o Add Watch / iz pomoćnog menija o Aktivirati prozor Watch. U okviru ovog prozora može se pratiti promena

vrednosti varijabli b i Phi, tokom na evaluacije pomoću, na primer, komande F11 (slika )

Slika 4.15. Primer prikaza prozora Watch ● Primer: AISP_B4primer7P ●

Page 32: Algoritmi Strukture podataka Uvod u OOP · 2020. 4. 13. · Algoritmi i strukture podataka Autor: Milo Tomašević Izdavač: Mikroknjiga Beograd, Srbija Godina izdavanja: 2008. 6

АКАДЕМИЈА СТРУКОВНИХ СТУДИЈА ЗАПАДНА СРБИЈА Одсек Ужице 31000 Ужице • Трг Светог Саве 34 www.vpts.edu.rs [email protected]

Предмети: Увод у објектно програмирање Алгоритми и структуре података

др Милован Миливојевић страна 32 oд 32

• Prozori Locals, Watch i Autos mogu biti veoma korisni u radu sa listama, strukturama i raznim vrstama kolekcija (slika 4.16).

Slika 4.16. Primer prikaza prozora Locals i Watch

Za detaljnije upozavanje sa velikim brojem dodatnih mogućnosti Visual Studio Debugger-a, preporučuje se: https://docs.microsoft.com/en-us/visualstudio/debugger/debugger-feature-tour?view=vs-2019

kao i druga referntna literatura.

●●● ●●●