Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.
|
|
- Helen Lund
- för 9 år sedan
- Visningar:
Transkript
1 Programmering hh.se/db2004 Föreläsning 7: Funktioner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Funktioner Statiska metoder 1 Kan ta 0 eller flera argument. 2 Kan producera ett resultatvärde. 3 Kan ha sidoeffekt, till exempel skriva eller rita (mer generell än en funktion i matte.) Användning Både för att definiera matematiska funktioner (räkna ut en formel) och för att skriva modulära program. Center for Research on Embedded Systems IDE-sektionen 1 / 1 2 / 1 Egendefinierade funktioner i Java En Java-funktions anatomi 10 Input sum1to(n) = Σ n i=1 i Output 55 Summor private static long sum1to(int n){ for(int i = 1; i<=n; i++){ sum = sum + i; Headern (eller signaturen) private static long sum1to ( int n ) 1 resultattypen 2 metodnamn 3 argumenttypen 4 argumentvariabeln 3 / 1 4 / 1
2 En Java-funktions anatomi Styrflöde Kroppen 1 Lokala variabler 2 return-kommandot for(int i = 1; i<=n; i++){ sum = sum + i; Summor igen long x = 0; System.out.println("n n"); System.out.println(" "); for(int k = 1; k<=n; k++){ x = sum1to(k) ; System.out.println(k+" "+x); Vad händer när man anropar funktionen? 5 / 1 6 / 1 Styrflöde När man anropar en funktion 1 Kontrollen förs över till funktionens kod. 2 Argumentvariabler tilldelas värdena som används i anropet. 3 Funktionens kod exekveras. 4 Returvärdet tilldelas istället för funktionen där man anropat den. 5 Kontrollen återgår till koden där anropet skedde. Detta kallas för pass by value. Räckvidd public class Sums { private static long sum1to(int n){ for(int i = 1; i<=n; i++){sum+=i; public static void main(string []cmdln){ long x = 0; for(int k = 1; k<=n; k++){ x = sum1to(k); System.out.println(k+" "+x); Räckvidd för ett namn: den delen av koden som kan använda namnet. Här kan man inte använda cmdln, N, x. Här kan man inte använda n, sum. 7 / 1 8 / 1
3 public class Cubes1{ int j = i*i*i; return j; public class Cubes2{ int i = i*i*i; 9 / 1 10 / 1 public class Cubes3{ i = i*i*i; public class Cubes4{ i = i*i*i; 11 / 1 12 / 1
4 public class Cubes5{ return i*i*i; Primtal private static long primenr (int n){... int n = Integer.parseInt(cmdLn[0]); System.out.println( primenr (n)); 13 / 1 14 / 1 private static boolean isprime (long n) {... private static long primenr(int n){ int count = 1; long i = 2; while(count<n){ i++; if( isprime (i)){count++; / 1 Slutligen private static boolean isprime(long n) { if (n < 2) return false; for (long i = 2; i*i <= n; i++) { if (n % i == 0) return false; return true; private static long primenr(int n){ Observera användningen av return-kommandot: då avslutas exekvering av funktionens kod och kontrollen återgår till där funktionen anropades. 16 / 1
5 Fält som argument Fält som argument Hjälpfunktioner Om man vill skriva ut alla element i ett fält av heltal kan man tänka sig följande hjälpfunktioner: void printlnarray(int[] a) void printarray(int[] a) Observera returtypen void: Java kräver en returtyp hos en funktions signatur, men dessa funktioner producerar inget resultat, de bara har en sidoeffekt. Utskrift av fält private static void printlnarray(int[] a){ printarray(a); System.out.println(); private static void printarray(int[] a){ for(int i = 0; i < a.length; i++){ System.out.print(a[i]+" "); 17 / 1 18 / 1 Pascals triangel Fält som resultat Det är lätt att räkna nästa rad. Kuriosa 1 Summan av rad i är 2 i 2 Summan av 1 i finner man genom att följa andra diagonalen tills i och sedan titta ner och höger. 3 Om andra talet i en rad är primtal har alla tal i raden primtalet som faktor. 4 Rad i är koefficienterna för utvecklingen av (x + y) i Nästa rad i Pascals triangel private static long[] nextrow(long[] row){ long[] thenextrow = new long[row.length+1]; thenextrow[0] = 1; thenextrow[row.length] = 1; for(int i = 1; i < row.length; i++){ thenextrow[i] = row[i-1] + row[i]; return thenextrow; 19 / 1 20 / 1
Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer
Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel
Läs merInput. Programmering. Andra källor
Programmering hh.se/db2004 Föreläsning 13: Undantag - med exempel från input klassen Scanner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Input Standard Input Med standard
Läs merDD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye
DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye James Gosling pappa till Java Hej.java public class Hej { public static void main( String[] args ) { System.out.println( "Hej" ); Java basics
Läs merFöreläsning 4: for, while, do-while
TDA 545: Objektorienterad programmering Föreläsning 4: for, while, do-while Magnus Myréen Chalmers, läsperiod 1, 2014-2015 Evaluering Det är viktigt att ni kan se hur kod körs. ( se = simulera på papper,
Läs merVad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel
Objekt Instansvariabler Instansmetoder Klassvariabler Klassmetoder Inkapsling Föreläsning 6 Vad är ett objekt? Ett objekt har egenskaper, som kallas för objektets attribut Egenskaperna beskriver tillsammans
Läs mer7 GRUNDERNA I PROGRAMMERING
Grunderna i programmering 7 GRUNDERNA I PROGRAMMERING Detta kapitel är bokens största kapitel och kanske det viktigaste. Vi kommer här att gå igenom grunderna för sekventiell programmering. Det vi går
Läs merHeltal(int) Programmeringsteknik 54
Heltal(int) Datatypen int används tillsammans med char, short int och long int för att lagra heltal i C. Matematisk sett finns det oändligt många heltal. På en dator måste det införas en begränsning på
Läs merRoboten Karel lär sig Java
Verónica Gaspes Högskolan i Halmstad 23 augusti 2010 Roboten Karel lär sig Java Tacksägelse Detta är en översättning och en anpassning till Högskolan i Halmstads programmeringsmiljö av delar av Karel the
Läs mer3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Föreläsning 3
Föreläsning 3 3.3 for-satsen I programmering talar man om tre sätt på vilket ett programflöde kan vara beskaffat: 1. Saker kan hända efter varandra, i sekvens. 2. Flödet kan innebära att ett val görs,
Läs merFöreläsning 5 Mer om funktioner, villkor
Föreläsning 5 Mer om funktioner, villkor Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 15.9.2011 Varför? Det finns sammanhang där ett
Läs merLaboration 12, Arrayer
Laboration 12, Arrayer Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration12 i ditt laborationsprojekt innan du fortsätter på denna laboration. Uppgift 1
Läs merNedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:
8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),
Läs merPROV. 10 Uppräknade datatyper
10 10.1 10.2 Definition 10.3 Användning och regler 10.4 switch-satsen 10.5 Iteration över samtliga värden 10.6 Instansvariabler och instanstjänster 10.7 Värdespecifika implementationer 10.1 Hur ser vi
Läs merMed denna aktivitet försöker jag
LAURA FAINSILBER Ett funktionsrum Under Vetenskapsfestivalen i Göteborg 2001 bjöd matematiska institutionen på Chalmers och Göteborgs universitet på matematiska experiment för skolklasser. I en av aktiviteterna
Läs mer7. Inre energi, termodynamikens huvudsatser
7. Inre energi, termodynamikens huvudsatser Sedan 1800 talet har man forskat i hur energi kan överföras och omvandlas så effektivt som möjligt. Denna forskning har resulterat i ett antal begrepp som bör
Läs merHur många registreringsskyltar finns det som inte innehåller samma tecken mer än en
Föreläsning 10 Multiplikationsprincipen Additionsprincipen Permutationer Kombinationer Generaliserade permutationer och kombinationer. Binomialsatsen Multinomialsatsen Lådprincipen (Duvslagsprincipen)
Läs merFor-sats/slinga. Notis
Notis I koden för exemplen förekommer kommentarer. Kommentarer i Matlabkoden identieras med prexet %. Kommentarer är text/kod som Matlab bortse från. Alltså all text/kod som ligger till höger och på samma
Läs merMöjlighet att leva som andra
Möjlighet att leva som andra Lättläst sammanfattning Slutbetänkande av LSS-kommittén Stockholm 2008 SOU 2008:77 Det här är en lättläst sammanfattning av en utredning om LSS och personlig assistans som
Läs merTalmönster och algebra. TA
Talmönster och algebra. TA Diagnoserna i området avser att kartlägga om eleverna kan upptäcka talmönster samt på olika sätt bearbeta algebraiska uttryck och ekvationer. Förståelse av koordinatsystem och
Läs merBedömningar som främjar inkludering Riktlinjer och metoder
Bedömningar som främjar inkludering Riktlinjer och metoder European Agency for Development in Special Needs Education The Agency s projekt om bedömningar påbörjades under 2005 med 23 deltagande länder.
Läs merNär man använder någon annans text
Kursmaterial om hänvisningar, från kursen FÖ1002 Företagsekonomi A, Handelshögskolan, Örebro universitet, läsåret 2010/11 När man använder någon annans text Citat Ett citat återger exakt originaltexten,
Läs merIntroduktion till MATLAB
c 2004 Liber AB, Lennart Harnefors, Johnny Holmberg, Joop Lundqvist Signaler och system med tillämpningar Introduktion till MATLAB 1 Inledning MATLAB (för Matrix laboratory) är ett interaktivt programpaket
Läs merTentamen Objektorienterad Programutveckling med C++
Tentamen Objektorienterad Programutveckling med C++ Datum 2001-06-08. Tid 14:30-19:30 Ordinarie Tentamen CD 5250 Ansvarig: Martin Skogevall Omtentamen CD 5250 Ansvarig: Daniel Flemström Omtentamen CD 5050
Läs merAtt ta fram en tidsplan
Att ta fram en tidsplan KAMP Företagsutveckling Tidplaner GANTT-schema När det gäller att ta fram tidsplaner för ett projekt är en av de vanligaste och också mest användbara metoderna det så kallade GANTT-schemat.
Läs merNäsgård Mobile TID Manual senast ändrad 2012-09-11. Näsgård Mobile TID. Inloggning
Näsgård Mobile TID Generellt Näsgård Mobile TID är en tilläggsmodul och måste användas tillsammans med Näsgård Online modul i PC program. Näsgård Mobile TID kan användas separat eller tillsammans med Näsgård
Läs merAtt svara på en remiss
Att svara på en remiss Varje år skickar Regeringskansliet betänkanden, utredningar och andra förslag på remiss. Det betyder att myndigheter, organisationer och personer har möjlighet att svara på vad de
Läs merReferentiell transparens. Programmeringsmetodik DV1 Programkonstruktion 1. Moment 10 Om sidoeffekter In/utmatning och imperativ programmering
Programmergsmetodik DV1 Programkonstruktion 1 Moment 10 Om sidoeffekter In/utmatng och imperativ programmerg Referentiell transparens I ren funktionell programmerg kan man byta lika mot lika utan att programmets
Läs merKonsten att skriva en projektplan
Konsten att skriva en projektplan En projektplan är ett dokument som skrivs i det syfte att beskriva vad man gör och när man utför de olika aktiviteterna i projektgruppen. Genom att planera sitt projekt
Läs merProvet består av Del I, Del II, Del III samt en muntlig del och ger totalt 75 poäng varav 28 E-, 23 C- och 24 A-poäng.
Del I Del II Provtid Hjälpmedel Uppgift 1-10. Endast svar krävs. Uppgift 11-15. Fullständiga lösningar krävs. 10 minuter för del I och del II tillsammans. Formelblad och linjal. Kravgränser Provet består
Läs merHur länge ska fisken vara i dammen?
Hur länge ska fisken vara i dammen? Frågeställning Uppgift 10 fiskodling Uppgiften går ut på att ta reda på hur länge ett stim fisk ska växa upp i en fiskodling för att få den maximala vikten tillsammans.
Läs mer