Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Similar documents
pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

Programiranje III razred

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

NIZOVI.

2. Linijska algoritamska struktura

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

... ; ako je a n parno. ; ako je a n neparno

CALCULATOR APPLICATION

x y = z Zadaci - procedure

f2() f6() main() f3() f7() f4()

VHDLPrimeri Poglavlje5.doc

Prva recenica. Druga recenica.

VRIJEDNOSTI ATRIBUTA

PREDMET. Osnove Java Programiranja. Čas JAVADOC

Uvod u relacione baze podataka

Funkcije, prenos parametara i dinamička alokacija memorije

Programiranje III razred

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

VB komande. Programiranje 1

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

Fortran 90. Numeričke Metode DECEMBAR ĐURĐEVAC NATAŠA

Uputstvo za korišćenje logrotate funkcije

12. Uskladištene procedure (Stored Procedures)

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju

Object oriented lab /second year / review/lecturer: yasmin maki

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Izrada VI laboratorijske vježbe

if (say==0) { k.commandtext = "Insert into kullanici(k_adi,sifre) values('" + textbox3.text + "','" + textbox4.text + "')"; k.

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

Lekcija 02 Uslovni iskazi i petlje, Funkcije. Miljan Milošević

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

PARALELNO PROGRAMIRANJE

Naredbe za kontrolu toka

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Računarske osnove Interneta (SI3ROI, IR4ROI)

Algoritmi i programiranje

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME

Vežbe - XII nedelja PHP Doc

Ugradjena promenljiva ans cuva poslednju vrednost koja nije dodeljena ni jednoj promenljivoj >> ans+3

Osnovne strukture podataka

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora).

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Now find the button component in the tool box. [if toolbox isn't present click VIEW on the top and click toolbox]

Programske paradigme Funkcionalna paradigma

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

VEŽBA 5 do while petlja, switch case

Informacioni sistemi i baze podataka

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Programiranje kroz aplikacije. Kontrola toka programa Nizovi

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

Variable Neighborhood Descent - VND (Metoda promenljivog spusta)

CSIS 1624 CLASS TEST 6

[] znači opciono; znači ili. Strana 3 od 5

First start a new Windows Form Application from C# and name it Interest Calculator. We need 3 text boxes. 4 labels. 1 button

Uputstvo za podešavanje mail klijenta

Algoritmi i strukture podataka 2. Čas, Uvod u C++

PRIJEMNI ISPIT IZ INFORMATIKE

8. NIZOVI. // deklaracija niza od 10 elemenata: data[0], data[1],..data[9] int data[10] ; S elementima niza se operira kao s prostim varijablama

Internet programiranje JavaScript - školska 2017/2018

GUI - događaji (Events) i izuzeci. Bojan Tomić

Proceduralni mehanizmi za kontrolu integriteta relacione baze podataka

JavaScript JS Cookies

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2)

modifier returnvaluetype methodname(list of parameters) { // Method body; }

Aktuelna verzija Matlaba je 7, koja ima dosta poboljšanja u odnosu na prethodne.

PROGRAMIRANJE. Amir Hajdar

NISKE (stringovi) u C-u: podsećanje. 1. Primer programa koji uvodi niske karaktera terminisane nulom

RDF, RDFS i JSON-LD. NIKOLA MILIKIĆ URL: nikola.milikic.info

JavaScript u Web design-u

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI

Experiment 5 : Creating a Windows application to interface with 7-Segment LED display

PROGRAMIRANJE INTERNET APLIKACIJA

You can call the project anything you like I will be calling this one project slide show.

INSTALACIJA RAZVOJNOG OKRUŽENJA DEV-C++

PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development

Jezik Baze Podataka SQL. Jennifer Widom

Iskočni okviri (eng. popup boxes)

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

9. RAD S DATOTEKAMA PODATAKA

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Tema 8: Koncepti i teorije relevantne za donošenje odluka (VEŽBE)

Lekcija 07 C++ funkcije, stringovi, imenski prostor, memorija i fajlovi. Miljan Milošević

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

Ime ograničenja je clients_client_num_pk. Ono inforsira biznis pravila po kojem client_number je PK u clients tabeli Naming Constraints

Editovanje registra u Windowsu

Numerical Computation

Transcription:

1. FUNKCIJE I STRUKTRUE PROGRAMA Složeni problemi lakše se rašavaju ako se podele na manje celine koje mogu nezavisno da se rešavaju. Rešenje celokupnog složenog problema dobija se kombinovanjem rešenja manjih celina. Delovi programa kojima se rešavaju potproblemi nazivaju se potprogramimi. Postoje dve vrste potprograma: funkcije i procedure(void funkcije). Funkcije se obično definišu kao potprogrami koji, na osnovu izvesnog broja parametara, daje jedan rezultat koji se naziva vrednost funkcije. Vrednost funkcije može da se koristi ugrađivanjem poziva funkcije u izraze. Procedure su potprogrami koji, na osnovu svojih parametara, daju više rezultata menjajući vrednosti nekih od svojih parametara. Procedure ne daju vrednost funkcije i zato ne mogu da se pozivaju kao operandi u sastavu izraza. One se pozivaju zasebnim naredbama. 1.1 Definisanje funkcija Opšti oblik definisanja funkcije je: Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije } Vidljivost postavlja službenu reč privateili public (definiše da li je funkcija vidljiva samo u okviru aktivne Form ili šire). Ako se ne navede vidljivost podrazumeva se private. TipPovratneVrednosti predstavlja tip vrednosti funkcije. U obzir dolaze svi standardni tipovi kao i izvedeni tipovi (tipovi koje programer definiše). Za funkcije koje ne stvaraju vrednost kao TipPovratneVrednosti treba koristiti službenu reč void. ImeFunkcije je naziv funkcije koji određuje programer. Ime funkcije se sastoji od jedne reči ili od kombinacije više reči između kojih nema razmaka (primer: NekoIme, Neko_Ime) NizParametara predstavlja parametre funkcije pomoću kojih se vreši unošenje početnih podataka u funkciju. Vrednost funkcije izračunava se na osnovu tih početnih podataka. TeloFunkcije predstavlja sadržaj funkcije. Po formi je blok, tj. niz naredbi unutar velikih zagrada { }. Svaki blok, pa i telo funkcije, može na početku da sadrži deklarativne naredbe, a iza njih izvršne naredbe. Primer: 1. private void primer(int a, int b) 3. label1.text = (a + b).tostring(); 4. }

1.2 Parametri funkcije NizParametara predstavlja parametre funkcije pomoću kojih se vreši unošenje početnih podataka u funkciju. Vrednost funkcije izračunava se na osnovu tih početnih podataka. Opšti oblik niza parametara je: parametar, parametar,..., parametar Pojedini parametri definišu se na isti način kao i obični podaci: OznakaTipa ImeParametra Za razliku od naredbe za definisanje podataka, ovde se za svaki parametar mora zasebno navesti OznakaTipa. OznakaTipa treba da bude naziv standardnog ili izvedenog tipa. ImeParametra je po formi identifikator ( promeljiva ). Parametri funkcije nisu stvarni podaci. Oni samo formalno predstavljaju podatke koji će se navesti prilikom pozivanja (korišćenja) funkcije i na osnovu čijih vrednosti će se izračunavati vrednost funkcije. Ti podaci se nazivaju argumenti funkcije. Parametri funkcije ponekad se nazivaju i formalniargumenti. Podaci pri pozivanju funkcije se tada nazivaju stvarniargumenti. Primer 1: 1. using System; 2. using System.Collections.Generic; 3. using System.ComponentModel; 4. using System.Data; 5. using System.Drawing; 6. using System.Linq; 7. using System.Text; 8. using System.Windows.Forms; 9. namespace Primer1 10. { 11. public partial class Form1 : Form 1//Ovde počinje javni deo 13. public Form1() 14. { 15. InitializeComponent(); 16. } 17. private void IspisZbira(int a, int b) 18. { 19. MessageBox.Show("Zbir dva broja je " + (a + b)); 20. } 21. private void button1_click(object sender, EventArgs e) 2 23. IspisZbira(18, 33);//Pozivanje funkcije 24. } 25. }//Ovee se završava javni deo 26. }

1.3 Telo funkcije TeloFunkcije predstavlja sadržaj funkcije. Po formi je blok, tj. niz naredbi unutar velikih zagrada { }. Svaki blok, pa i telo funkcije, može na početku da sadrži deklarativne naredbe, a iza njih izvršne naredbe. Deklarativne naredbe prvenstveno se koriste za definisanje podataka koji se koriste u funkciji. Ti podaci su lokalni za funkciju, što zanči da postoje i mogu da se koriste samo unutar funkcije. Oni se ponovo stvaraju pri savakom pozivanju funkcije, a uništavaju pri napuštanju funkcije. Izvršne naredbe određuju šta radi funkcija. Povratak iz funkcije na mesto odakle je ona pozvana postiže se naredbom return, koja spada u grupu upravljačkih naredbi (skokova). Opšti oblik te naredbe je: return izraz; Primer 2: 1. namespace Primer2 3. public partial class Form1 : Form 4. { 5. public Form1() 6. { 7. InitializeComponent(); 8. } 9. private int Zbir (int n) 10. { 11. int Saberi = 0; 12. for (int i = 1; i <= n; i++) 13. Saberi += i; 14. return Saberi; 15. } 16. private void textbox1_textchanged(object sender, EventArgs e) 17. { 18. label3.text = Zbir(Convert.ToInt16(textBox1.Text)).ToString(); 19. } 20. } 21. }

1.4 Pozivanje funkcije Pozivanje funkcije smatra se binarnim operatorom (operatorom sa dva operanda) i obeležava se sa (). Za razliku od ostalih binarnih operatora, ovaj operator se ne piše između sbojih operanada (kao na primer a+b) već oko drugog operanda. Prvi operand je funkcija koja se poziva, a drugi operand je niz argumenata: funkcija (argument, argument,..., argument) Funkcija označava funkciju čije se izvršavanje traži. Ona je identifikator funkcije koja se poziva. Argumenti predstavljaju vrednosti koje služe za inicijalizaciju parametara funkcije pre obrade tela funkcije. Argumenti, po broju i tipu, moraju da se slažu sa brojem i tipovima parametara pri definisanju funkcije. Tip prvog argumenta mora odgovarati tipu prvog parametra, tip drugog argumenta mora odgovarati tipu drugog parametra idt. Operator za pozivanje funkcije () je najvišeg prioriteta, tako da će se funkcija u nekom izrazu prva izvršavati. Ukoliko funkcija ne vraća vrednost (tip void) može da se poziva samo u zasebnoj prostoj naredbi - funkcija (...);. Takva funkcija ne sme da se koristi na mestima na kojima se očekuje konkretna vrednost. Primer 3: Izračunati izraz 24+3 4+5 pomoću funkcija za zbir i deljenje 1. namespace Primer_3 3. public partial class Form1 : Form 4. { 5. public Form1() 6. { 7. InitializeComponent(); 8. } 9. decimal c = 0; 10. private decimal Zbir(decimal a, decimal b) 11. { 12. return a + b; 13. } 14. private decimal Razlika(decimal a, decimal b) 15. { 16. return a / b; 17. } 18. private void Prikaz(decimal a) 19. { 20. MessageBox.Show("Vrednost izraza je " + a); 21. } 22. private void button1_click(object sender, EventArgs e) 23. { 24. c = Razlika(Zbir(24, 3), Zbir(4, 5)); 25. Prikaz(c); 26. } 27. } 28. }

1.5 Niz kao parametar funkcije Parametri funkcije mogu da budu i nizovi. Pri navođenju takvog parametra nije neophodno navesti broj elemenata niza. Uz ime parametara dovoljno je navesti samo [] što znači da se radi o nizu, a ne o skalarnom podatku. Opšti oblik navođenja parametara nizvnog tipa je: tip [] ime Primer: 1. int Zbir (int[]a, int n) 3. int i, s; 4. for(s=i=0;i<n;i++) 5. s+=a[i]; 6. return s; 7. } 8. private void button1_click(object sender, EventArgs e) 9. { 10. int [] niz = {8,5,3,4,10}; 11. MessageBox.Show("Zbir je: "+Zbir(niz, niz.length).tostring()); 12. } 1.6 Oblast vidljivosti promenljive 1. int X = 20, Y=200; 2. string ispis; 3. void Funkcija (int a, int b) 4. { 5. int X = 30; 6. ispis += "Vrednost u Funkciji: X = " + X + ", Y = " + Y + "\n"; 7. X = a; 8. Y = b; 9. ispis += "Vrednost u Funkciji(dodela parametra a, b): X = " + X + ", Y = " + Y + "\n"; 10. X = 80; 11. Y = 800; 12. ispis += "Vrednost u Funkciji(dodela vrednosti 80, 800): X = " + X + ", Y = " + Y + "\n"; 13. } 14. private void button1_click(object sender, EventArgs e) 15. { 16. ispis = ""; 17. ispis += "Početak\nVrednost na startu programa: X = " + X + ", Y = " + Y + "\n"; 18. Funkcija(55, 555); 19. ispis += "Vrednost posle funkcije: X = " + X + ", Y = " + Y + "\n"; 20. X = 99; 21. Y = 999; 22. ispis += "Vrednost posle funkcije(dodela novih vrednosti 99 i 999): X = " + X + ", Y = " + Y + "\n"; 23. MessageBox.Show(ispis); 24. }

1.7 Rekurzivna funkcija Rekurzivne funkcije su funkcije koje neposredno ili posredno pozivaju same sebe. One omogućavaju lako i razumljivo rešavanje problema koji su, po svojoj prirodi, rekurzivni. Tipičan primer rekurzivnih problema je izračunavanje n! (n faktroijela) koji je definisan 5! = 5*(4!)=5*4*(3!)=5*4*3*(2!)=5*4*3*2*1=120 1. string ispis; 2. int Funkcija (int n) 3. { 4. if (n == 0 n == 1) 5. return 1; 6. else 7. return n * Funkcija(n - 1); 8. } 9. private void button1_click(object sender, EventArgs e) 10. { 11. ispis = ""; 12. ispis =Funkcija(5).ToString(); 13. MessageBox.Show(ispis); 14. }