TDIU01 - Programmering i C++, grundkurs

Relevanta dokument
TDIU01 - Programmering i C++, grundkurs

C++ - En introduktion

TDDC76 - Programmering och Datastrukturer

C++ - En introduktion

TDIU01 - Programmering i C++, grundkurs

TDIU01 (725G67) - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

Funktionens deklaration

TDIU01 - Programmering i C++, grundkurs

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

TDDC76 - Programmering och Datastrukturer

TDP002 - Imperativ programmering

TDDC76 - Programmering och Datastrukturer

TDIU01 Programmering i C++

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

1 Funktioner och procedurell abstraktion

Introduktionslaboration

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

C++ Objektorientering - Klasser. Eric Elfving

Introduktionslaboration

C++ Slumptalsfunktioner + switch-satsen

TDIU01 - Programmering i C++, grundkurs

Föreläsning 3-4 Innehåll

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

TDDC76 - Programmering och Datastrukturer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

Objektorienterad programmering Föreläsning 5

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java

Java, klasser, objekt (Skansholm: Kapitel 2)

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Övningar Dag 2 En första klass

Programmeringsteknik med C och Matlab

TDDC76 - Programmering och Datastrukturer

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010

Innehåll. Pekare Syntax

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Innehåll. Pekare Exempel

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

Typkonvertering. Java versus C

Innehåll. Pekare Exempel

Föreläsning 1: Momstabellen i C++

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

DD2387 Programsystemkonstruktion med C++ Tentamen 2

TDDC76 - Programmering och Datastrukturer

Att använda pekare i. C-kod

Dynamisk bindning och polymorfism

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Planering Programmering grundkurs HI1024 HT 2014

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

TDIU01 - Datortenta (DAT2)

Föreläsning 5-6 Innehåll

Tentamen EDAF30 Programmering i C++

Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar

Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret L0 - Grunder i C++

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

TDP002 - Imperativ programmering

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Programmeringsteknik I

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr,

Objektorienterad programmering

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Skizz till en enkel databas

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Föreläsning 6: Metoder och fält (arrays)

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

TDDC77 Objektorienterad Programmering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Objekt och klasser - Introduktion

TDIU20 - Objektorienterad programmering i c++ - föreläsning 3

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

F4. programmeringsteknik och Matlab

Funktioner och programstruktur. Föreläsning 5

Objektorienterad Programmering (TDDC77)

1 Namnkontroll (NameControl)

Anteckningar 1: Grundläggande saker

Det finns många flaggor till g++,

TDDC76 Programmering och datastrukturer

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 Operatoröverlagring. 5 In- och utmatning. 6 namnrymder (namespace)

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Funktioner och programstruktur. Föreläsning 5

Tillämpad programmering

*Pekarvärden *Pekarvariabler & *

Metoder. Inledande programmering med C# (1DV402)

Innehåll. Exceptionella händelser (exceptions, undantag ) Felhantering Tre nivåer av felhantering: Nivå 2: exceptions (eller returvärde)

1 Klasser och objektorientering Vad är objektorientering?

Innehåll. 1 Funktionsmallar. 2 Pekare och konstanter. 3 Typomvandlingar. struct Name { string s; //... };

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar

Transkript:

TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014

Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock Parametrar Värdeöverföring Referenser const-referenser Returvärden Inför labben - slumptal med <random>

Satsblock 3/22 En grupp av satser som hör bra ihop Omges av klammerparenteser Ses som en sats i språket Har ett eget universum (scope) med egna lokala deklarationer Kan dela värden med utomstående mha globala variabler

Satsblock 4/22 Vad ska jag göra om jag vill utföra samma satser flera gånger? Upprepningssatser går så klart - men bara om de ska upprepas direkt efter varandra Om man vill ha koden på olika platser i programmet är funktioner bättre!

Funktioner 5/22 Ett kort exempel # include <iostream > using namespace std ; void hello (); // deklaration int main () hello (); // Anrop cout << "------" << endl ; hello (); void hello () // definition cout << " Hejsan " << endl ; Hejsan ------ Hejsan

Parametrar 6/22 Med hjälp av parametrar kan man skicka data till sin funktion void hello ( string name ) // deklaration + definition cout << " Hello " << name <<! << endl ; int main () hello (" Anna "); Hello Anna!

Parametrar 7/22 Värdeöverföring Detta var exempel på värdeöverföring Värden kopieras vid överföring - en lokal kopia skapas i funktionen och kan användas som en lokal variabel Eventuella ändringar vi gör på parametern syns inte utifrån Kan också deklareras const för att förbjuda förändringar

Parametrar 8/22 Värdeöverföring void hello ( string name ); int main () string user " Nisse "; hello ( user ); main user: hello name: string "Nisse" string "Nisse"

Parametrar 9/22 Referensparametrar Om vi vill kunna ändra på vår anropares variabler får vi ta emot parametrarna som referenser En parameter deklareras som en referens med hjälp av & void swap ( int & a, int & b) int c a; a = b; b = c; int main () int v1 2; int v2 5; swap (v1, v2 ); cout << v1 << \ n << v2 << endl ; 5 2

Parametrar 10/22 Referensparametrar void swap ( int & a, int & b); int main () int v1 3, v2 5; swap (v1, v2 ); main v1: v2: swap a: b: c: int 3 int 5 int& int& int 3

Parametrar 11/22 const-referenser Värdeöverföring leder till (ofta onödig) kopiering referensöverföring gör att vi kan råka ändra på anroparens variabler Dessutom kräver referenser att värdet går att ändra på (fungerar inte med konstanter eller litteraler) Därför kan man deklarera sin parameter som const-referens! Bra att ha vid överföring av stora variabler såsom strängar som man inte vill ändra på Kompilatorn kommer ge fel om vi råkar ändra på parametern void hello ( const string & name ) cout << " Hello " << name <<! << endl ;

Parametrar 12/22 Vilken ska jag välja? 1. Vill jag ändra på parametern? referens 2. Är det en inbyggd datatyp (int, double, char, bool)? 2.1 Vill jag kunna ändra på den lokalt? värdeöverföring 2.2 Annars const 3. Annars const-referens (blir vanligaste valet)

Defaultargument 13/22 Om man vill kan man ange defaultvärden (skönsvärden) för sina parametrar Då kan funktionen anropas utan den parametern void print_stars ( const int n = 10) for ( int i ; i < n; ++i ) cout << * ; cout << endl ; int main () print_stars (20); print_stars (); ******************** **********

Defaultargument 14/22 Parametrar med defaultargument måste anges i slutet av parameterlistan void fun ( int a, int b=5, int c); g++ -c args.cc args. cc :1:6: error : default argument missing for parameter 3 of void fun (int, int, int )

Defaultargument 15/22 void fun ( int a=1, int b=5, int c =4); Anrop a b c f() 1 5 4 f(2) 2 5 4 f(3,4) 3 4 4 f(3,4,6) 3 4 6

Funktioner 16/22 En funktion är ett namngivet satsblock Funktioner deklareras innan de kan anropas Liknar vanliga variabeldeklarationer, skrivs på formatet returtyp funktionsnamn([parametrar]); Funktioner används ofta för att beräkna värden, skickar tillbaka resultat av typen returtyp Om man inte vill ge tillbaka värden väljer man typen void [parametrar] betyder att det inte behöver anges

Returvärden 17/22 Alla funktioner vi skapat hittills har haft returtypen void för att symbolisera avsaknad av returvärde. Alla funktioner kan returnera ett värde I C++ görs det med return: return expr; där expr är ett uttryck med samma datatyp som funktionens returtyp. Funktionen avslutas direkt när return nås. En funktion kan ha flera return-satser, all kod efter den första nås inte.

Returvärden 18/22 int max ( const int a, const int b) if ( a > b ) return a; return b; int main () int a, b; cout << " Mata in två tal : "; cin >> a >> b; int m max (a,b) ; cout << " Det största är " << m << endl ; Mata in två tal : 2 6 Det största är 6

Slumptal 19/22 <random> Inkluderingsfilen <random> är ny i C++11 Det finns massor man kan göra, t.ex finns det stöd för olika fördelningar Baseras på typen random_device Ger ett slumptal av typen unsigned int # include <random > # include <iostream > using namespace std ; int main () random_device rnd ; cout << rnd () << endl ;

Slumptal 20/22 Hur får jag ett tal i ett givet intervall?

Slumptal 21/22 # include <random > # include <iostream > using namespace std ; int rand ( const int low, const int high ) random_device rnd ; return rnd () % ( high - low + 1) + low ; int main () for ( int i ; i < 10; ++i) cout << rand (2, 10) << endl ; 7 2 2 2 4 6 6 9 10 5

www.liu.se