160 likes | 337 Views
Modularisering. ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare felsökning Större möjlighet till återanvändning. Egna funktioner. returtyp funktionsnamn ( parameterlista ) { deklarationer satser }. huvud. kropp. Formella parametrar. returtyp.
E N D
Modularisering • ”svarta lådor” • Väl definierade arbetsuppgifter • Enklare validering • Enklare felsökning • Större möjlighet till återanvändning Programmeringsteknik, 4p vt-00
Egna funktioner returtypfunktionsnamn(parameterlista) { deklarationer satser } huvud kropp Programmeringsteknik, 4p vt-00
Formella parametrar returtyp int maximum(int a, int b) { if (a > b) return a; else return b; } /* maximum */ returvärde exempel Anrop : int x,y,z; x=2; y=3; z=4; z=maximum(x,y); Programmeringsteknik, 4p vt-00
…funktioner • Returtyp : allt vi sett hittills eller void • Restriktioner kommer senare • Funktionsnamn - identifierare • Parameterlista typ identifierare, flera separeras med komma • Saknas parametrar void • Tumregel : en funktion max en sida Programmeringsteknik, 4p vt-00
return-satsen • När satsen nås avbryts funktionen och återhopp sker • Kan men behöver inte efterföljas av ett uttryck • Ev. uttryck evalueras och resultatet skickas tillbaka • Uttryckets värde konverteras om nödvändigt Programmeringsteknik, 4p vt-00
...return • Noll eller flera return-satser • Om return saknas utförs alla satser i kroppen och därefter sker återhopp Programmeringsteknik, 4p vt-00
Prototyper • Alla funktioner måste vara deklarerade innan de används • Prototyp duger som deklaration • Prototyp = funktionshuvudet (identifierarna i param.listan behöver ej vara med, typerna måste vara med) • Funktionsdefinitionen fungerar som prototyp Programmeringsteknik, 4p vt-00
Funktionsanrop • Ett program består av en eller flera funktionsdefinitioneråtminstone main() • Programet startar alltid med main() • När ett funktionsnamn förekommer sker ett anrop och funktionen exekveras Programmeringsteknik, 4p vt-00
Parameteröverföring • Parametrarna ska överensstämma i typ och antal • Varje argument evalueras och värdet kopieras till identifieraren i motsvarande position i funktionen • Detta medför att ev. ändringar av parameterns värde i funktionen inte påverkar något i den miljö där anropet gjordes Exempel! Programmeringsteknik, 4p vt-00
Identifierares räckvidd existerar bara inom det block de är deklarerade void fun1(int a, int b) { int i,j; ... } void fun2(int i, int j) { float a,c; ... } void main(void) { float a; int i; fun1(i,i); fun2(a,i) ... } Programmeringsteknik, 4p vt-00
Rekursion • Rekursivt definierade problem n! = n·(n-1)! där 0!=1 och 1!=1 • Funktioner kan anropa sig själva int nfac(int n) { if (n==0 || n==1) return 1; else return n*nfac(n-1); } /* nfac */ Programmeringsteknik, 4p vt-00
Storage class Varje variabel & funktion har typ & ”lagrings”klass • auto - default om inget anges, existerar i blocket ”lokala” • extern - deklarerad utanför funktion, global till alla efterföljande funktioner -> sök någon annanstans, i samma eller annan fil (ex. s.218) • register- minnesberoende • static - en lokal variabel behåller sitt värde när ett block åter nås (ex. s.220) Programmeringsteknik, 4p vt-00
All kommunikation bör ske via parametrarna! Programmeringsteknik, 4p vt-00
HiLo - igen • Presentera spelet • Generera hemligt tal • Fråga användaren om gissning • Läs in gissning som är acceptabel • Om gissning = hemlig tal så skriv ”Helt rätt” annars skriv ut en ledtråd och upprepa • Spelet slut Upprepas-till rätt eller maxgissat Programmeringsteknik, 4p vt-00
Presentera spelet • Syfte : med hjälp av utskrifter presentera spelet • Indata : ingenting • Utdata : ingenting • Anrop : presentation(); Programmeringsteknik, 4p vt-00
Acceptabel gissning • Syfte : Kontrollera värdet mot givet intervallom fel skriv felmeddelande och upprepa tills ok • Indata : värdet v (heltal) undre gräns minv (heltal) övre gräns maxv (heltal) • Utdata : acceptabel gissning • Anrop : gissning = valideraGissning(gissning,MIN,MAX); Programmeringsteknik, 4p vt-00