Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Слични документи
Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language

PowerPoint Presentation

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

P11.3 Analiza zivotnog veka, Graf smetnji

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

ZADACI ZA VEŽBU 1. Realizovati konzolnu aplikaciju koja će računati površinu kvadrata, pravougaonika ili trougla. 2. Preko konzole se unosi ocena od 1

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Uvod u računarstvo 2+2

Računarski praktikum I - Vježbe 09 - this, static

Uvod u računarstvo 2+2

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Microsoft Word - 11 Pokazivaci

Tutoring System for Distance Learning of Java Programming Language

Programski jezik C

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

070-ALIP2-udzbenik.indb

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Logicko projektovanje racunarskih sistema I

Uvod u računarstvo 2+2

PowerPoint Presentation

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Programiranje za UNIX Okruženje unix procesa

PowerPoint Presentation

P9.1 Dodela resursa, Bojenje grafa

Slide 1

07_PJISP_II_Predavanja

3.Kontrlne (upravlja~ke) strukture u Javi

Strukture predavač: Nadežda Jakšić

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Uvod u računarstvo 2+2

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

Microsoft PowerPoint - C-4-1

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Programski jezik C

1

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

P3.2 Paralelno programiranje 2

Microsoft PowerPoint - JavaP9_2019

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

PowerPoint Presentation

PowerPoint Presentation

Uvod u takmičarsko programiranje

Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

PROMENLJIVE, TIPOVI PROMENLJIVIH

Sveucilište u Zagrebu

Tutoring System for Distance Learning of Java Programming Language

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Datum: 20

PowerPoint Presentation

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Programiranje 1

PowerPoint Presentation

Slide 1

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71

Računarski praktikum I - Vježbe 01 - Uvod

Slide 1

Microsoft PowerPoint - Timer0 16F887.ppt [Compatibility Mode]

Analiticka geometrija

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik JAVA PREDAVANJE

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Увод у организацију и архитектуру рачунара 1

1. Vremensko ograničenje Memorijsko ograničenje ulaz izlaz 0,1 s 64 MB standardni ulaz standardni izlaz Banka želi da upozori kupce na sumnjive aktivn

Z-16-45

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

PowerPoint Presentation

P1.2 Analiza efikasnosti algoritama 2

P2.1 Projektovanje paralelnih algoritama 1

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

Z-15-85

Zbirka resenih zadataka iz arhitekture racunara

Programski jezici i strukture podataka

Matematka 1 Zadaci za vežbe Oktobar Uvod 1.1. Izračunati vrednost izraza (bez upotrebe pomoćnih sredstava): ( ) [ a) : b) 3 3

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Транскрипт:

Osnove programiranja Funkcije - Metode

Prenos parametara Po vrednosti Po referenci Po izlazu Sadržaj Opseg važenja promenljive u drugim strukturama Rekurzije

Prenos parametara Metoda može vratiti isključivo jednu vrednost uz pomoć return operatora. Za više od jedne vrednosti koriste se mehanizmi za prenos parametara metode: preko vrednosti vrši se inicijalizacija ulaznih parametara u glavnom kodu. Podaci se prenose u metodu, ali se NE mogu preneti iz nje. Svi prethodi primeri koristili su ovaj način prenosa parametara; preko reference inicijalizacija ulaznih i izlaznih parametara. Podaci se prenose u metodu i mogu se preneti i iz nje; preko izlaza inicijalizacija izlaznih parametara. Podaci se prenose iz metode, ali se NE mogu preneti u nju;

Prenos parametara

Prenos parametra po vrednosti Vrednosni tipovi (int, char, long, float, ) prenose KOPIJU svoje VREDNOSTI. Referentni tipovi (niz, string) prenose KOPIJU svoje REFERENCE.

Prenos parametra po static void Main() int i = 10; int ikopija = i; i++; Console.WriteLine("i=0, ikopija=1", i,ikopija); vrednosti i referenci Uvećanje promenljive i ne utiče na njenu kopiju. static void Inkrementiraj(int a) a++; Console.WriteLine("a="+a); static void Main() int i = 10; //argument f-je Console.WriteLine("i=" + i); Inkrementiraj(i); Console.WriteLine("i="+i); i=10 a=11 i=10 SM1 static void Inkrementiraj(ref int a) a++; Console.WriteLine("a="+a); static void Main() int i = 10; Console.WriteLine("i=" + i); Inkrementiraj(ref i); Console.WriteLine("i="+i); i=10 i=10 a=11 a=11 i=11 i=11

Slide 6 SM1 Kada se prosledi argument metodi, odgovarajući parametar se inicijalizuje kopijom argumenta. Ovo važi bez obzira na to da li je parametar vrednosnog tipa (npr. int) ili je referentnog tipa (npr. string). To znači da bilo kakva promena vrednosti parametra ne može da utiče na promenu vrednosti originalnog argumenta. Ako se parametru doda prefiks ref, on postaje referenca na originalni argument (umesto njegova kopija). Zbog ovoga svaka izmena nad ref parametrom je automatski izmena originalnog argumenta. Ovaj prefiks se mora dodati i ispred originalnog argumenta i ispred parametra u metodi. Suzana Markovic; 9.12.2015.

Upoređenje parametar vrednosnog tipa Kada se promenljiva vrednosnog tipa predaje metodi, u stvari se predaje kopija promenljive metodi. Svaka promena izvršena nad parametrom unutar metode neće imati nikakvog uticaja na originalne podatke koji su smešteni u promenljivoj izvan metode. Metoda koja će promeniti vrednost parametra, mora da se prenese po referenci koristeći ref ili out ključne reči (referenca na originalni argument).

SM6 Upoređenje parametar vrednosnog tipa Svaka promena unutar metode Kvadrat nećeimati uticaja na promenljivu n izvan metode. static void Kvadrat(ref int n) n *= n; Console.WriteLine("Vrednost unutar je: 0", n); static void Main() int n = 5; Console.WriteLine("Vrednost pre je: 0", n); //5 Kvadrat(ref n); Console.WriteLine("Vrednost posle je: 0", n);

Slide 8 SM6 static void Kvadrat(int n) n *= n; Console.WriteLine("Vrednost unutar je: 0", n); static void Main() int n = 5; Console.WriteLine("Vrednost pre je: 0", n); //5 Kvadrat(n); Console.WriteLine("Vrednost posle je: 0", n); Suzana Marković; 7.5.2018.

Upoređenje parametar referentnog tipa Promenljiva referentnog tipa ne sadrži podatke direktno, već sadrži referencu na podatke. Kada se preda parametar referentnog tipa po vrednosti, moguće je promeniti podatke na koje pokazuje referenca, ali se NE menja vrednost same reference. Unutar metode se može stvoriti novi objekat i referenca preusmeriti na njega, ali to će trajati koliko i metoda. Promene nisu trajne zato što se zapravo metodi predaje kopija reference kada se NE koristi ključna reč ref. Kopija se menja unutar metode, ali original ostaje isti. Izvan metode, referenca će opet pokazivati na stari objekt. Za promene se moraju koristiti ref ili out ključne reči. Kada se koristi ref, realokacija niza postaje trajna.

SM5 Prenos parametra referentnog tipa po vrednosti static void Change(int[] niz) niz = new int[5] -3, -1, -2, -3, -4 ; niz[0] = 0; System.Console.WriteLine("Unutar metode, prvi element je: 0", niz[0]); static void Main() int[] vektor = 1, 4, 5 ; System.Console.WriteLine("Unutar metode Main, pre pozivanja metode, prvi element je: 0", vektor[0]); Change(vektor); System.Console.WriteLine("Unutar metode Main, posle pozivanja metode, prvi element je: 0", vektor[0]); 1 0 1

Slide 10 SM5 Isključiti niz[0] = 0; Kako se sada ponaša funkcija? 1, -3, 1 Ako zamenimo mesta biće 1, -3, 0 pošto se prenosi kopija reference, ali se objekat promenio Suzana Marković; 7.5.2018.

SM4 Prenos parametra referentnog tipa po referenci static void Change(ref int[] niz) niz = new int[5] -3, -1, -2, -3, -4; //niz[0] = 0; System.Console.WriteLine("Unutar metode, prvi element je: 0", niz[0]); static void Main() int[] vektor = 1, 4, 5; System.Console.WriteLine("Unutar metode Main, pre pozivanja metode, prvi element je: 0", vektor[0]); Change(ref vektor); System.Console.WriteLine("Unutar metode Main, posle pozivanja metode, prvi element je: 0", vektor[0]);

Slide 11 SM4 Isključiti niz[0] = 1; Kako se sada ponaša funkcija? Suzana Marković; 7.5.2018.

Parametar out Za prenos po referenci se koristi ključna reč ref, a za izlazni parametar - out Ove ključne reči se koriste i u definiciji metoda i na mestu poziva. Izlazni parametri ne moraju da budu inicijalizovani u glavnom delu programa pre prosleđivanja metodi. Izlaznom parametru se mora pridružiti vrednost u metodi.

Parametar out static void Metoda(out int x) x = 5; Console.WriteLine(x); static void Main() int x; //može i int x=1; Metoda(out x); x = 5

Izlazni parametar static void Change(out int[] niz) niz = new int[5] ; //neinicijalizovani niz System.Console.WriteLine("Unutar metode, prvi element je: 0", niz[0]); static void Main() int[] vektor = 1, 4, 5; System.Console.WriteLine("Unutar metode Main, pre pozivanja metode, prvi element je: 0", vektor[0]); 1 0 0 Change(out vektor); System.Console.WriteLine("Unutar metode Main, posle pozivanja metode, prvi element je: 0", vektor[0]);

SM2 Opseg važenja promenljive u drugim strukturama

Slide 15 SM2 int i; for (i=0;i<10;i++) string text = "za i="+i; Console.WriteLine("For petlja 0",text); Console.WriteLine("Van petlje 0", text); Console.ReadKey(); Suzana Marković; 29.11.2016.

Opseg važenja promenljive u drugim strukturama Zašto promenljiva text posle petlje ne zadržava vrednost koja joj je dodeljena pre petlje? Kada se promenljivama dodele vrednosti, one se raspoređuju u memoriji. Kada se ova raspodela dogodi unutar petlje, vrednost je deklarisana kao lokalna i izlazi izvan opsega važenja kada je van petlje.

Opseg važenja promenljive u drugim strukturama Iako sama promenljiva nije lokalnog karaktera za petlju, vrednost koju sadrži jeste. Dodeljivanje vrednosti izvan petlje omogućava (u primeru string text= ) da ta vrednost postane lokalna za glavni deo koda, a da i dalje bude u opsegu unutar petlje. To znači da promenljiva ne izlazi iz svog opsega važenja, dokle god ne izađe iz bloka glavnog dela koda, tako da imamo pristup njenim vrednostima izvan petlje.

Rekurzivne metode Rekurzija je tehnika programiranja u kojoj metoda poziva samu sebe (lat. "recurrere" (re nazad, currere izvršavati). Rekurzivni algoritam mora da ima bazni slučaj (engl. base case); Rekurzivni algoritam mora da menja svoje stanje i da napreduje ka osnovnom slučaju rekurzivni korak ili rekurzivni slučaj (engl. recursive case); Rekurzivni algoritam mora da poziva samog sebe.

Rekurzije primer static int Faktorijel(int n) if (n <= 1) return 1; return n * Faktorijel(n 1); static void Main(string[] args) Console.WriteLine("Unesi broj za koji će se izračunati faktorijel: "); int n = int.parse(console.readline()); Faktorijel(n); Console.WriteLine("\n" + n + "! = " + Faktorijel(n)); static int Fibonaci(int n) if (n <= 1) return 1; return Fibonaci(n 1) + Fibonaci(n 2); static void Main(string[] args) Console.WriteLine("unesi n\n"); int n = int.parse(console.readline()); for (int i=0; i < n; i++) Console.WriteLine(Fibonaci(i));