Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Save this PDF as:
 WORD  PNG  TXT  JPG

Storlek: px
Starta visningen från sidan:

Download "Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde."

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

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 mer

Input. Programmering. Andra källor

Input. 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 mer

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

DD2310. 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 mer

Föreläsning 4: for, while, do-while

Fö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 mer

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Vad ä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 mer

7 GRUNDERNA I PROGRAMMERING

7 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 mer

Heltal(int) Programmeringsteknik 54

Heltal(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 mer

Roboten Karel lär sig Java

Roboten 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 mer

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Föreläsning 3

3.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 mer

Föreläsning 5 Mer om funktioner, villkor

Fö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 mer

Laboration 12, Arrayer

Laboration 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 mer

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Nedan 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 mer

PROV. 10 Uppräknade datatyper

PROV. 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 mer

Med denna aktivitet försöker jag

Med 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 mer

7. Inre energi, termodynamikens huvudsatser

7. 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 mer

Hur många registreringsskyltar finns det som inte innehåller samma tecken mer än en

Hur 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 mer

For-sats/slinga. Notis

For-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 mer

Möjlighet att leva som andra

Mö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 mer

Talmönster och algebra. TA

Talmö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 mer

Bedömningar som främjar inkludering Riktlinjer och metoder

Bedö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 mer

När man använder någon annans text

Nä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 mer

Introduktion till MATLAB

Introduktion 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 mer

Tentamen Objektorienterad Programutveckling med C++

Tentamen 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 mer

Att ta fram en tidsplan

Att 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 mer

Näsgård Mobile TID Manual senast ändrad 2012-09-11. Näsgård Mobile TID. Inloggning

Nä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 mer

Att svara på en remiss

Att 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 mer

Referentiell transparens. Programmeringsmetodik DV1 Programkonstruktion 1. Moment 10 Om sidoeffekter In/utmatning och imperativ programmering

Referentiell 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 mer

Konsten att skriva en projektplan

Konsten 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 mer

Provet 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.

Provet 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 mer

Hur länge ska fisken vara i dammen?

Hur 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