Diapozitiv 1

Podobni dokumenti
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

Strojna oprema

Microsoft Word - M docx

Microsoft PowerPoint - Objekti_gradnja.ppt

Microsoft Word - UP_Lekcija04_2014.docx

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

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

Diapozitiv 1

Microsoft PowerPoint - Java-rekurzija.ppt

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

Microsoft PowerPoint - Java_spremenljivke

Microsoft Word - CNC obdelava kazalo vsebine.doc

Microsoft Word - vaje2_ora.doc

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

Uporaba informacijsko komunikacijske tehnologije v naravoslovju in tehniki

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)

Excel 2016

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

Microsoft Word - M _mod..docx

Microsoft Word - avd_vaje_ars1_1.doc

ANALITIČNA GEOMETRIJA V RAVNINI

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

Delavnica Načrtovanje digitalnih vezij

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

RAČUNALNIŠKA ORODJA V MATEMATIKI

Microsoft Word - M docx

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

Microsoft Word - M docx

Vrste

DIGITALNE STRUKTURE Zapiski predavanj Branko Šter, Ljubo Pipan 2 Razdeljevalniki Razdeljevalnik (demultipleksor) opravlja funkcijo, ki je obratna funk

Osnove matematicne analize 2018/19

Vgrajeni sistemi Uvod & ponovitev C

Uradni list RS - 12(71)/2005, Mednarodne pogodbe

rm.dvi

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

Podatkovni model ER

POPOLNI KVADER

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

Matematika Diferencialne enačbe prvega reda (1) Reši diferencialne enačbe z ločljivimi spremenljivkami: (a) y = 2xy, (b) y tg x = y, (c) y = 2x(1 + y

DES

STAVKI _5_

Delavnica Načrtovanje digitalnih vezij

Datum in kraj

11. srednješolsko tekmovanje ACM v znanju računalništva Šolsko tekmovanje 22. januarja 2016 NASVETI ZA TEKMOVALCE Naloge na tem šolskem tekmovanju pok

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 - NAVODILA ZA UPORABO.docx

Slide 1

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

IND-L Zakon o državni statistiki (Uradni list RS, št. 45/95 in št. 9/01) Letni program statističnih raziskovanj za leto 2011 (Uradni list RS, št. 92/1

Mrežni modeli polimernih verig Boštjan Jenčič 22. maj 2013 Eden preprostejših opisov polimerne verige je mrežni model, kjer lahko posamezni segmenti p

Poslovilno predavanje

DOMACA NALOGA - LABORATORIJSKE VAJE NALOGA 1 Dani sta kompleksni stevili z in z Kompleksno stevilo je definirano kot : z = a + b, a p

MERE SREDNJE VREDNOSTI

Microsoft Word - Seštevamo stotice.doc

Delavnica Načrtovanje digitalnih vezij

Naloge 1. Dva električna grelnika z ohmskima upornostma 60 Ω in 30 Ω vežemo vzporedno in priključimo na idealni enosmerni tokovni vir s tokom 10 A. Tr

03C

Microsoft Word - Analiza rezultatov NPZ matematika 2018.docx

5 SIMPLICIALNI KOMPLEKSI Definicija 5.1 Vektorji r 0,..., r k v R n so afino neodvisni, če so vektorji r 1 r 0, r 2 r 0,..., r k r 0 linearno neodvisn

Microsoft Word - N _moderacija.docx

Microsoft PowerPoint - 14 IntrerspecifiOna razmerja .ppt

Matematika 2

Kotne in krožne funkcije Kotne funkcije v pravokotnem trikotniku β a c γ b α sin = a c cos = b c tan = a b cot = b a Sinus kota je razmerje kotu naspr

Microsoft Word - EV-2-projekt.doc

%

Revija 124 za PDF.p65

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

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Poročanje izdanih računov pri gotovinskem poslovanju

(Microsoft PowerPoint - vorsic ET 9.2 OES matri\350ne metode 2011.ppt [Compatibility Mode])

Bilten 13. državnega srednješolskega tekmovanja ACM v znanju računalništva, 2018

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

IND/L Zakon o državni statistiki (Uradni list RS, št. 45/1995 in št. 9/2001) Letni program statističnih raziskovanj (Uradni list RS, št. 97/2013) Spor

Univerza v Mariboru Fakulteta za naravoslovje in matematiko Oddelek za matematiko in računalništvo Enopredmetna matematika IZPIT IZ VERJETNOSTI IN STA

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

PowerPoint Presentation

6.1 Uvod 6 Igra Chomp Marko Repše, Chomp je nepristranska igra dveh igralcev s popolno informacijo na dvo (ali vec) dimenzionalnem prostoru

Uporaba informacijsko komunikacijske tehnologije v naravoslovju in tehniki

Navodila:

SPLOŠNI POGOJI SODELOVANJA IN PRAVILA NAGRADNE IGRE»S PRINGLESOM DO EUR«Uvodne določbe 1. člen S temi splošnimi pogoji so urejena pravila sodelo

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

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#

DEDOVANJE BARVNE SLEPOTE

Sistemi Daljinskega Vodenja Vaja 3 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubl

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

mat soda liha stevila fotke eval_tretji

BiokemInfo - Pregled funkcij

11/21/2017 SQL-ODBC Povezava do podatkovne baze modul pyodbc povezovalni niz (eksplicitno, ali z uporabo DSN) In [6]: import pyodbc from future import

FGG13

12. tekmovanje ACM v znanju računalništva Institut Jožef Stefan, Ljubljana, 25. marca 2017 Bilten

(Microsoft Word - Dodatek \232t. 1 k DIIP - Oskrba s pitno vodo Obale in Krasa s sklepom)

NAVODILA AVTORJEM PRISPEVKOV

Upravljanje sistema COBISS Navodila za uporabo tiskalnika CITIZEN S310II V1.0 VIF-NA-27-SI

Teorija kodiranja in kriptografija 2013/ AES

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andraž Drčar Prevajanje javanskih programov z vstavljeno zložno kodo DIPLOMSKO DELO UNI

Četrta vaja iz matematike 1 Andrej Perne Ljubljana, 2006/07 zaporedja Zaporedje je predpis, ki vsakemu n N priredi a n R. Monotonost zaporedij: Zapore

Transkripcija:

9. Funkcije 1 9. 1. F U N K C I J A m a i n () 9.2. D E F I N I C I J A F U N K C I J E 9.3. S T A V E K r e t u r n 9.4. K L I C F U N K C I J E I N P R E N O S P A R A M E T R O V 9.5. P R E K R I V A N J E F U N K C I J Kaj je funkcija? funkcija (podprogram) je samostojna enota ukazov, ki rešijo nek problem preprosi problemi rešljivi z eno funkcijo zahtevnejši problemi razdelimo na manjše (lažje rešljive) probleme opišemo jih s funkcijami funkcije omogočajo delitev naloge na samostojne enote stavke v funkciji zapišemo enkrat, izvedemo večkrat s klicem funkcije lahko ponovno uporabimo znotraj različnih programov 2 1

kliče jo operacijski sistem 9.1. Funkcija main() ne kliče je uporabnik v njej se prične program izvajati ima dve možni obliki 3 // brez parametrov // s parametri int main(int argc, char **argv) return 0; return 0; Še o funkciji main() stavek return znotraj funkcije main() smemo izpustiti brez tega stavka prevajalnik vrne privzeto vrednost 0 4 OPOMBA: V jeziku C je dovoljeno tudi, da je funkcija main() tipa void. Standard C++ to eksplicitno prepoveduje! 2

9.2. Definicija funkcije definicija funkcije je del programa, ki določa: ime funkcije tip rezultata funkcije parametre funkcije kaj funkcija dela sintaksa definicije funkcije je naslednja glava funkcije stavki 5 telo funkcije Tip funkcije glavi funkcije pravimo tudi prototip funkcije sintaksa glave funkcije je naslednja: tip ime(deklaracije_parametrov) 6 POMEN: tip določa tip vrednosti, ki je rezultat funkcije. Pravimo, da funkcija vrača to vrednost. Če funkcija ne vrača nobene vrednosti, je tipa void. 3

Ime funkcije sintaksa glave funkcije je naslednja: tip ime(deklaracije_parametrov) 7 POMEN: ime določa identifikator, ki predstavlja funkcijo. S tem identifikatorjem izvedemo stavke v funkciji pravimo, da kličemo funkcijo. parametri Parametri funkcije predstavljajo podatke brez katerih ne moremo rešiti naloge lahko jih je nič ali več če parametrov ni, lahko pustimo seznam prazen ali pišemo void deklaracija parametra je deklaracija (lokalne) spremenljivke lahko jih uporabimo znotraj funkcije več parametrov ločimo z vejicami formalni parametri parametri so spremenljivke vsebujejo vrednost, ki jo podamo ob klicu funkcije 8 4

telo funkcije Telo funkcije je zaporedje stavkov, ki reši dano nalogo stavki, ki pridejo do rezultata lahko vsebuje poljubne stavke uporabljamo lahko tudi formalne parametre deklarirani so v glavi funkcije 9 Kje definiramo funkcije? funkcije definiramo "kjerkoli" v programu ne smemo jih definirati znotraj drugih funkcij definirati jih moramo, preden jih uporabimo 10 če je funkcija napovedana s prototipom funkcije, jo lahko definiramo tudi za tem, ko jo uporabimo. Deklaracija funkcije mora biti podana pred uporabo. 5

stavek return 9.3. Stavek return nemudoma prekine izvajanje funkcije nadzor izvajanja se vrne na mesto klica funkcije če stavku return sledi še izraz, se na mesto klica funkcije posreduje še vrednost izraza sintaksa dopušča dve možni obliki: return; ali return izraz; 11 funkcije tipa void: 9.3. Stavek return (2) uporabljati smemo le prvo obliko stavka return (brez izraza) ne rabimo uporabiti stavka return izvajanje funkcije se v tem primeru zaključi, ko pridemo na konec funkcije če je funkcija tipa različnega od void: mora vsebovati vsaj en stavek return z njim povemo, kaj je rezultat funkcije uporabiti moramo drugo obliko (z izrazom) izraz mora biti združljivega tipa s tipom funkcije 12 6

Primer 01 (definicija funkcije) /* Funkcije vrne večje od dveh celih števil. */ int maksimum(int st1, int st2) if (st1 > st2) return st1; else return st2; Maksimum dveh celih števil je celo število, zato je funkcija tipa int. 13 Če je prvo število večje, je to rezultat funkcije (povemo s stavkom return). V nasprotnem primeru je rezultat drugo število. Če iščemo maksimum dveh celih števil, moramo ti dve števili poznati. Predstavimo ju s formalnima parametroma. Brez da poznamo ti dve števili, ne moremo rešiti naloge. 9.4. Klic funkcije in prenos parametrov funkcije izvedemo s klicem funkcije funkcijo kličemo z imenom vsemi parametri, ki jih funkcija zahteva parametri se morajo ujemati v številu in tipu formalnih parametrov dejanski parametri parametri, ki jih podamo ob klicu funkcije klic funkcije predstavlja izraz takega tipa, kot je tip funkcije 14 7

Formalni in dejanski parametri formalni parametri tisti podani v definiciji funkcije dejanski parametri tisti podani v klicu funkcije povezava med njimi je odvisna od načina prenosa parametrov način prenosa parametrov določa obnašanje formalnih parametrov funkcije 15 9.4.1. Prenos parametrov po vrednosti privzeti način prenosa parametrov formalni parametri prejmejo vrednost dejanskih parametrov formalni parametri so lokalne spremenljivke 16 te lokalne spremenljivke se inicializirajo na vrednost dejanskih parametrov parametri, ki se prenašajo po vrednosti imenujemo tudi vhodni parametri ustvarijo se nove spremenljivke z vrednostmi dejanskih parametrov 8

Primer 01 (celoten primer) 17 #include <iostream> using namespace std; int maksimum(int st1, int st2) if (st1 > st2) return st1; else return st2; cout << "Vnesi dve celi stevili: "; cin >>a >> b; int vecje; vecje = maksimum(a,b); cout << "Vecje izmed prebranih stevil je " << vecje << endl; vecje = maksimum(2*a+b, 100); cout << "Vecje izmed stevil " << 2*a+b << " in 100 je " << vecje << endl; vecje = maksimum(a+b,2*a-b); cout << "Vecje izmed stevil " << a+b << " in " << 2*a-b << " je " << vecje << endl; return 0; Primer 01 kaj se dogaja 18 int maksimum(int st1, int st2) if (st1 > st2) return st1; else return st2; int vecje; vecje = maksimum(a,b); vecje:??? 9

Primer 01 kaj se dogaja 19 int maksimum(int st1, int st2) if (st1 > st2) return st1; else return st2; int vecje; vecje = maksimum(a,b); kličemo funkcijo maksimum() vecje:??? st1: st2: dve novi spremenljivki Primer 01 kaj se dogaja 20 int maksimum(int st1, int st2) if (st1 > st2) return st1; else return st2; int vecje; vecje = maksimum(a,b); vrednosti se prekopirajo vecje:??? st1: 12 st2: 23 dve novi spremenljivki 10

Primer 01 kaj se dogaja 21 int maksimum(int st1, int st2) if (st1 > st2) return st1; else return st2; int vecje; vecje = maksimum(a,b); vecje:??? st1: 12 st2: 23 dve novi spremenljivki Primer 01 kaj se dogaja 22 int maksimum(int st1, int st2) if (st1 > st2) return st1; else return st2; int vecje; vecje = maksimum(a,b); vecje:??? st1: 12 st2: 23 dve novi spremenljivki 11

Primer 01 kaj se dogaja 23 int maksimum(int st1, int st2) if (st1 > st2) return st1; else return st2; int vecje; vecje = maksimum(a,b); Preneha z izvajanjem funkcije. Vrne vrednost spremenljivke st2. vecje:??? st1: 12 st2: 23 dve novi spremenljivki Primer 01 kaj se dogaja 24 int maksimum(int st1, int st2) if (st1 > st2) return st1; else return st2; int vecje; vecje = maksimum(a,b); vecje: 23 st1: 12 st2: 23 12

9.4.2. Prenos parametrov po referenci pred ime formalnega parametera zapišemo operator & formalni parametri predstavljajo isto lokacijo v pomnilniku, kjer so dejanski parametri za dejanske parametre ne smemo uporabljati konstant in izrazov 25 dejanski parameter mora biti lokacija, kamor lahko shranimo vrednost - spremenljivka predstavljamo si lahko, da je formalni parameter začasno novo ime obstoječe spremenljivke začasno znotraj funkcije #include <iostream> using namespace std; Primer 02 (z napako) 26 /* Napiši funkcijo, ki zamenja vrednosti dveh celoštevilskih spremenljivk. */ void zamenjaj(int st1, int st2) cout << "Vnesi dve celi stevili: "; int a,b; cin >> a >> b; Razmisli, zakaj imata po zamenjavi spremenljivki a in b še vedno enako vrednost! cout << "Pred zamenjavo: " << endl; cout << "a=" << a << " b=" << b << endl; cout << "Po zamenjavi: " << endl; cout << "a=" << a << " b=" << b << endl; return 0; 13

Primer 02 zakaj ne deluje 27 void zamenjaj(int st1, int st2) Primer 02 zakaj ne deluje 28 void zamenjaj(int st1, int st2) kličemo funkcijo zamenjaj() dve novi spremenljivki st1:??? st2:??? 14

Primer 02 zakaj ne deluje 29 void zamenjaj(int st1, int st2) vrednosti se kopirajo dve novi spremenljivki st1: 12 st2: 23 Primer 02 zakaj ne deluje 30 void zamenjaj(int &st1, int &st2) st1: 12 st2: 23 t: 12 nova lokalna spremenljivka 15

Primer 02 zakaj ne deluje 31 void zamenjaj(int &st1, int &st2) st1: 23 st2: 23 t: 12 Primer 02 zakaj ne deluje 32 void zamenjaj(int &st1, int &st2) st1: 23 st2: 12 t: 12 16

Primer 02 zakaj ne deluje 33 void zamenjaj(int &st1, int &st2) Preneha z izvajanjem funkcije. Pobriši lokalne spremenljivke. st1: 23 st2: 12 t: 12 Primer 02 zakaj ne deluje 34 void zamenjaj(int &st1, int &st2) st1: 23 st2: 12 t: 12 17

Primer 02 (pravilna rešitev) 35 #include <iostream> using namespace std; /* Napiši funkcijo, ki zamenja vrednosti dveh celoštevilskih spremenljivk. */ void zamenjaj(int &st1, int &st2) cout << "Vnesi dve celi stevili: "; int a,b; cin >> a >> b; cout << "Pred zamenjavo: " << endl; cout << "a=" << a << " b=" << b << endl; cout << "Po zamenjavi: " << endl; cout << "a=" << a << " b=" << b << endl; return 0; Primer 02 kaj se dogaja 36 void zamenjaj(int &st1, int &st2) 18

Primer 02 kaj se dogaja 37 void zamenjaj(int &st1, int &st2) kličemo funkcijo zamenjaj() dve začasni imeni st1: st2: Primer 02 kaj se dogaja 38 void zamenjaj(int &st1, int &st2) dve začasni imeni st1: st2: t: 12 nova lokalna spremenljivka 19

Primer 02 kaj se dogaja 39 void zamenjaj(int &st1, int &st2) dve začasni imeni st1: a: 23 st2: t: 12 nova lokalna spremenljivka Primer 02 kaj se dogaja 40 void zamenjaj(int &st1, int &st2) dve začasni imeni st1: a: 23 st2: b: 12 t: 12 nova lokalna spremenljivka 20

Primer 02 kaj se dogaja 41 void zamenjaj(int &st1, int &st2) Preneha z izvajanjem funkcije. Pobriši začasna imena in lokalne spremenljivke. dve začasni imeni st1: a: 23 st2: b: 12 t: 12 nova lokalna spremenljivka Primer 02 kaj se dogaja 42 void zamenjaj(int &st1, int &st2) a: 23 b: 12 t: 12 nova lokalna spremenljivka 21

že vemo: 9.5. Prekrivanje funkcij 43 znotraj istega bloka ne smemo deklarirati dveh spremenljivk z istim identifikatorjem kaj pa funkcije? C++ dovoljuje, da imamo več funkcij z istim imenom morajo se razlikovati v številu parametrov in / ali tipu parametrov prekrivanje funkcij 9.5. Prekrivanje funkcij (2) imamo dve ali več funkcij z istim imenom in različnim seznamom parametrov 44 tip funkcije ni merodajen ne smemo imeti funkcije z istim imenom in istim seznamom parametrov, tudi, če je se tipa funkcije razlikujeta katero funkcijo kličemo, se razbere iz seznama parametrov 22

Primer 03 45 #include <iostream> using namespace std; /* Funkcija izračuna kvadrat števila. */ int kvadrat(int x) return x*x; double kvadrat(double x) return x*x; int a; double b; cout << "Vnesi eno celo stevilo: "; cin >> a; cout << "Vnesi eno realno stevilo: "; cin >> b; Naslednje funkcije ne moremo imeti v tem programu, zakaj? double kvadrat(int x) return x*x; cout << "Kvadrat stevila " << a << " je " << kvadrat(a) << endl; cout << "Kvadrat stevila " << b << " je " << kvadrat(b) << endl; return 0; 23