1 Funktioner och procedurell abstraktion

Save this PDF as:
 WORD  PNG  TXT  JPG

Storlek: px
Starta visningen från sidan:

Download "1 Funktioner och procedurell abstraktion"

Transkript

1 1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår förmåga att hantera ett stort komplext problem bygger till stor del på vår förmåga att dela upp problemet i mindre delar och därefter lösa var del för sig. Detta är kärnan i procedurell abstraktion. Procedurell abstraktion förenkling genom uppdelning Man kan enkelt ge exempel på procedurell abstraktion i vardagslivet Exempel, frukosttillagning medelst procedurell abstraktion 1 Koka kaffe 2 Stek två ägg 3 Gör en skinkmacka Detta är en anständig beskrivning av tillagningen av en frukost. Beskrivningen består av tre olika procedurer. Beskrivningen är abstrakt, det vill säga förenklad. Förenklingen/abstraktionen består i att man inte beskriver varje enskild detalj i exempelvis proceduren Koka kaffe. Denna förenkling kan ske på flera olika nivåer. Den enklaste kan vara att helt enkelt ange Laga frukost. En mindre abstrakt variant är de tre stegen som är beskrivna ovan. En ännu mindre abstrakt variant vore om man ytterligare beskrev de olika stegen, ex 1. Koka kaffe: Ta fram kaffepulver, häll 5 dl vatten i bryggaren, mät upp 7 mått kaffepulver i filtret, slå på bryggaren, vänta 2 minuter. Denna förfining kan dras in absurdum såsom exempelvis att ange exakt vila armrörelser och benrörelser man ska utföra föra att hälla 5 dl vatten i någon speciell kaffebryggare. Om man utformar dessa procedurer mer och mer exakt kommer samtidigt beskrivningen att bli mer och mer specialiserad. En angivelse av benrörelser fungerar troligtvis bara för ett speciellt kök, med speciellt placerade köksverktyg, medan den första beskrivningen fungerar i de flesta kök. Vid programmering kommer man aldrig att behöva förfina mer än att det direkt går att översätta till programsatser, eller till välkända lösningar på standardproblem. För att åstadkomma denna uppdelning i procedurer eller underprogram skriver man funktioner. 1.1 Funktioner Av de funktioner vi redan stött på kan vi utläsa på vilket sätt funktioner kommer att anropas. En funktion/ett funktionsanrop representerar ett återanvändbart programavsnitt som utförs då programmet stöter på ett anrop. Utdrag ur Exempel för användning av texthanteringsfunktioner // tilldelning namn1 > namn1och2 strcpy( namn1och2, namn1 ); // lägg till texten ", "

2 strcat(namn1och2, ", "); // lägg till namn2 strcat(namn1och2, namn2); strcpy( namn1och2, namn1 ); är ett funktionsanrop till en redan skriven funktion som utför det arbete som funktionen strcpy antyder, att genom en iteration kopiera över alla tecken i texten namn1 till textfältet namn1och2. Det är en liknande iteration som vi såg göras av en for sats vid tilldelningsoperationen för ett textfält på sidan Error: Reference source not found Funktionsdeklaration och funktionsdefintion En funktion består huvudsakligen av två delar 1. en deklaration som berättar hur funktionen ska användas i ett program 2. en definition som beskriver vilken programkod som ska utföras vid anropet. En deklaration har följande form returtyp funktionsnamn(argumenttypslista ); I vårt tidigare skrivsätt för operationer skulle detta se ut som funktionsnamn( argumentlista): returtyp En definition har följande form returtyp funktionsnamn(argumentdeklarationslista) sats/satsblock; Returtyperna och argumentlistorna måste stämma överens exakt med avseende på datatyperna. Den enklaste datatypen är void (ingenting) den använder man om man inte vill ge något värde till eller från funktionen. De funktioner som har returtyp void ger alltså inget returvärde. Dessa funktioner är av en speciell kategori funktion kallade procedurer. Författaren anser att distinktionen mellan sk. void funktioner(procedurer) och icke void funktioner (funktioner) är onödig, men eftersom många andra gör denna distinktion vill jag påpeka att den förekommer. Det finns däremot anledning att först i en text behandla void funktioner eftersom de är den syntaktiskt enklaste typen. Den enklast möjliga funktionsdeklarationen ser ut som // dra_linje ritar ett streck med tecken void dra_linje(); Kommentaren krävs förstås inte av kompilatorn men det är en god vana att kommentera varje funktionsdeklaration, så att man enkelt kan läsa ut syftet med funktionen.

3 En enkel definition för deklarationen kan se ut som void dra_linje() cout<<" "<<endl; #include<iostream> using namespace std; Kom ihåg att syftet med deklarationen är att berätta för både kompilator och användare hur funktionen ska användas. Definitionen utnyttjas sedan vid länkning för att koppla ihop anrop med programkod. När man skriver ett huvudprogram som använder funktioner bör man komma ihåg att syftet med funktionerna är procedurell abstraktion. Därför bör man ha deklarationerna väl synliga och lättillgängliga vid skrivandet av huvudprogrammet main(). Det är dessutom så att kompilatorn måste tolka deklarationer innan dess definitioner. I annat fall kommer definitionen att även tolkas som en deklaration (deklaration och definition på samma gång) och den efterföljande deklarationen kommer att betraktas som en dubbeldeklaration eller nydeklaration, vilket inte är tillåtet. I ett kort program kan vår funktionsdeklaration och funktionsdefinition fogas in som // Lätttillgängliga deklarationer // dra_linje ritar ett streck med tecken void dra_linje(); int main() dra_linje(); // anropa underprogram cout<<"hello World"<<endl; dra_linje(); return 0; void dra_linje() cout<<" "<<endl; Programmet anropar funktionen dra_linje två gånger. Vid varje anrop styrs programflödet över till satsblocket till funktionen, rad 17: cout<<" " kommer alltså att exekveras två gånger. När satsblocket till funktionen är slut styrs programflödet tillbaka till det anropande uttrycket. Då kompilatorn stöter på anropet till funktionen måste den ha sett en deklaration av funktionen som anropas. Resultatet blir:

4 Hello World Press any key to continue Övning: int dra_linje() Prova att i din utvecklingsmiljö ändra definitionens första rad till int dra_linje(); Observera vilka fel som rapporteras vid kompilering / länkning Ändra tillbaka definitionen till det ursprungliga och ändra istället deklarationen till Observera vilka fel som rapporteras vid kompilering / länkning Funktionsnamn är om möjligt ännu viktigare än variabelnamn. Använd utförliga och tydliga funktionsnamn som beskriver dess syften väl. En funktion som aldrig anropas körs aldrig. Det kan mycket väl tänkas att du skrivit dina funktion korrekt i ditt program, men programmet gör ändå inte som du vill. Ibland beror det på att du glömt anropet av funktionen. Detta är ett fel som kompilatorn inte kan upptäcka. 1.2 Funktioner som behöver indata Vi har sett tidigare i samband med texthanteringen hur vi kunde berätta för funktionen att den skulle göra beräkningar på någon viss variabel, exempelvis den tidigare satsen int len = strlen( namn_1 ); utför en beräkning på variabeln namn_1 för att kontrollera hur många tecken som texten innehåller. Denna data meddelas genom argumenttyper och argumentnamn Den tidigare funktionen dra_linje() som drar ett streck av minustecken är inte vidare flexibel. Man kan till exempel inte ange hur långt strecket ska vara. Det kan man enkelt åstadkomma med funktionsargument. Detta skulle i huvudprogrammet kunna se ut som:

5 int main() dra_linje( 12 ); // skriv tolv minustecken cout<<"hello World"<<endl; dra_linje( 5 ); // skriv fem minustecken return 0; Siffrorna 12 och 5 kallas aktuella argument. Notera att antalet minustecken är ett heltal ( int ), en deklaration kan därför skrivas som // dra_linje(int ) ritar ett streck med ett visst antal tecken void dra_linje(int ); Detta är inte samma funktion som tidigare utan en ny funktion. På samma sätt som operatorer identifieras en funktion med hjälp av dess signatur, dvs. namn + argumenttyper. Våra funktioners signaturer är dra_linje() respektive dra_linje(int ). Notera att returtypen inte ingår i signaturen, det innebär att det kan inte finnas en funktioner döpt int dra_linje() samtidigt som en funktion void dra_linje(). I syntaxen för en funktionsdeklaration och definition anger man en argumenttypslista respektive argumentdeklarationslista Vi kan skriva en funktionsdefintion som void dra_linje(int antal_minus) for(int index=0; index< antal_minus; index++) cout<<" "; cout<<endl; Rad 1: Det görs nu en variabeldeklaration varje gång funktionen anropas. Variabeln inititeras med det värde som anges som aktuellt argument. Variabeln antal_minus kallas formellt argument. Det är det formella argumentet som används i funktionens programkod. Rad 3 6: Repetitionen skriver ut lika många minustecken som värdet i variabeln antal_minus.

6 #include<iostream> using namespace std; I ett komplett program kan de båda funktionerna skrivas och användas som // dra_linje ritar ett streck med tecken void dra_linje(); // dra_linje(int ) ritar ett streck med ett visst antal tecken void dra_linje(int ); int main() dra_linje(); // anropa funktion cout<<"hello World"<<endl; dra_linje(); dra_linje( 5 ); cout<<"hello"<<endl; dra_linje( 78 ); return 0; void dra_linje() cout<<" "<<endl; void dra_linje(int antal_minus) for(int index=0; index< antal_minus; index++) cout<<" "; cout<<endl; Programkörning går till som : Start vid main() Funktionsanropet dra_linje() identifieras som funktionen void dra_linje(), funktionen anropas, cout satsen utförs. Texten "Hello World" skrivs ut Funktionsanropet dra_linje() identifieras som samma funktion void dra_linje(), funktionen anropas, cout satsen utförs. Funktionsanropet dra_linje( 5 ) identifieras som void dra_linje( int ). Funktionen anropas med aktuellt argument 5, Funktionen anropas. I funktionen void dra_linje( int ): Argument deklarationen blir int antal_minus = 5. Repetitionssatsen deklarerar ytterligare ett heltal int index = 0. Iterationen skriver ut 5 minustecken.

7 När funktionens satsblock tar slut upphör variablerna antal_minus och index att vara meningsfulla, och de förstörs därför. Man säger att de har sin räckvidd (eng. scope) inom funktionen. Funktionen styr programflödet tillbaka till cout<<"hello"; Funktionsanropet dra_linje( 78 ) identifieras som void dra_linje( int ). Funktionen anropas med aktuellt argument 78. I funktionen void dra_linje( int ): Argument deklarationen blir int antal_minus = 78. Observera att detta är variabel nummer två med namnet antal_minus som deklareras. (den första har förstörts). Repetitionssatsen deklarerar variabeln index = 0 för andra gången. Iterationen skriver ut 78 minustecken. Funktionen styr programflödet tillbaka till programslut. Det centrala i detta program är återigen abstraktionen/förenklingen av att rita en linje. Då funktionerna dra_linje väl är skrivna är det inte längre intressant på vilket sätt de fungerar utan bara att de fungerar som de är deklarerade. Detta försöker man alltid sträva efter då man utformar sina program. Det är värt att notera att i funktionsdeklarationen har man tillåtelse att ge identifierare för det olika argumenten, för funktionen dra_linje(int ) skulle deklarationen kunna se ut som void dra_linje(int antal_tecken); Syftet med identifieraren är endast att upplysa den person som läser deklarationen om syftet med heltalet. Kompilatorn eller programmet tar ingen som helst hänsyn till den identifierare som skrivs i deklarationens argumentlista. Definitionen använder ju deklarationernas identifierare som variabler inuti funktionskroppen. 1.3 Funktioner som returnerar värden Ofta vill man att en funktion ska utföra en beräkning eller komma fram till något numeriskt resultat. Vi har tidigare sett en funktion som beräknar längden på en text int len = strlen( namn_1 ); Denna funktion ger tillbaka/utvärderas till ett heltalsvärde. Operationen kan beskrivas som strlen(char * ): int Heltalstypen anger som vanligt att uttrycket utvärderas till ett heltal. Vi kan konstruera egna funktioner med liknande utseende. För att beräkna arean av en rektangel tar man basen * höjden. Detta kan förstås skrivas som en funktion. I ett huvudprogram kan man tänka sig att funktionen anropas som

8 double bredd, hojd, yta; bredd= 5.0; hojd= 2.5; yta= area( bredd, hojd ); Funktionen utvärderas som ett flyttal och tar två flyttal som argument. Deklarationen blir då double area( double, double); Funktionsdefinitionen innehåller en enkel multiplikation. double area( double b, double h) double a = b * h; return a; Alternativt kan man skriva funktionen på ett enklare (men mindre tydligt) sätt som double area( double b, double h) return b*h; return satsen anger alltså vilket värde som funktionen ska utvärderas till. Datatypen för uttrycket i return satsen måsta vara av samma datatyp som, eller kunna omvandlas till, returtypen angiven i deklaration och definition. Satsblocket som hör till en funktion kallas ofta funktionens implementation. Då man talar om implementering eller implementation avser man programkoden eller skrivandet av programkoden. Funktioner ska skrivas med målet att de ska fungera i så många situationer som möjligt. Man talar om generella funktioner. Det leder oss direkt in på ett mycket vanligt nybörjarmisstag vid implementation av funktioner. En funktion ska aldrig innehålla in eller utmatningssatser om det inte uttryckligen är funktionens syfte. Area funktionen i tidigare exempel fungerar bra för att visa på nackdelarna med detta. Antag att man skrivit funktionen som

9 //Deklaration double area(); //Definition double area() double b,h; cout<<"ange rektangelns bredd:"; cin>>b; cout<<"ange rektangelns höjd:"; cin>>h; return b*h; Funktionen kan mycket väl vara lämpad för uppgiften i ett speciellt fall, men den är långt ifrån så generell som den tidigare area beräkningen. Antag att programmet redan kände till värden för bredd och höjd. Då skulle inmatningssatserna förmodligen göra programmet väldigt förvirrande för användaren, om inte rent obrukbart. Undantaget är alltså funktioner som uttryckligen är till för in och utmatning. Typexempel är funktioner typ dra_linje ovan. Funktioner för utmatning är väldigt ofta void funktioner (procedurer). 1.4 Speciella datatyper för funktionsargument Fälttyper Man kan ge textfält som argument till funktioner på samma sätt som man ger vanliga variabler som argument. Det man måste hålla i minnet är att fältvariabeln inte representerar själva texten utan bara vart texten börjar. Detta får vissa konsekvenser för texter i funktioner. Betrakta programmet

10 #include<iostream> using namespace std; void skriv_10_ggr(char []); int main() char text1[]="ett"; char text2[]="två"; skriv_10_ggr( text1 ); skriv_10_ggr( text2 ); return 0; void skriv_10_ggr( char txt[]) for(int i = 0;i<10;i++) cout<< txt; Programmet ger följande utskrift EttEttEttEttEttEttEttEttEttEttTvåTvåTvåTvåTvåTvåTvåTvåTvåTvåPress any key to continue Det aktuella argumentet i första funktionsanropet är alltså adressen till den minnescell som innehåller tecknet 'E' i texten Ett. Argumentet är alltså ett slags heltal. Detta innebär att den information som behöver föras över till funktionen inte är hela texten, vilket skulle kunna bli väldigt resurskrävande om texten var lång, utan bara adressen till textens första tecken. Variabeln txt och variablerna text1 och text2 representerar alltså inte bara lika texter utan samma texter vid respektive funktionsanrop. Alltså txt==text1 sedan txt==text2, text1 och text2 är naturligtvis aldrig lika. Detta har ytterligare en effekt, förutom att vara resurseffektivt. Man kan nämligen manipulera innehållet i fältet inuti funktionen. Se exempelvis funktionen och anropet

11 void mata_in_textrad(char txt[]); void mata_in_tal( int ); int main() char inmatningsyta[200]; int talet; mata_in_textrad( inmatningsyta ); mata_in_tal( talet ); // går ej cout<<"du har matat in:"<< inmatningsyta<<endl; cout<<"och talet: "<<talet<<endl; return 0; void mata_in_textrad(char txt[]) cin.getline( txt, 80); void mata_in_tal( int tal) cin>>i; Det fält som skapas i och med deklarationen char inmatningsyta[200]; används direkt i funktionen eftersom variabeln inmatningsyta och txt (i funktionen mata_in_textrad) avser samma minnesyta med 200 tecken. Detta fungerar inte med vanliga datatyper som i funktionen mata_in_tal(int ) eftersom de deklareras som nya variabler oberoende av den anropande funktionens variabler. Dessa egenheter motiverar två speciella datatyper konstanter och referenser Konstanter Man kan definiera upp konstanter i c++ genom nyckelordet const. const double PI = ; const int NOLL = 0; const char ALFABET[] = "abcdefghijklmnopqrstuvwxyzåäö"; Konstanter har ofta identifierare som bara består av versaler. Den sista deklarationen skall läsas som ett fält bestående av const char. Tecknen i fältet får inte ändras. Att deklarera en variabel som konstant gör att man inte har tillåtselse att ändra variabelns värde. Samtliga följande satser är otillåtna PI = 3.14; NOLL += 1; ALFABET[3] = 'D'; // otillåtet för const double // otillåtet för const int // otillåtet för const char För funktioner innebär det att om den tidigare funktionen mata_in_textrad( char [] ) istället skulle skrivits som

12 void mata_in_textrad(const char txt[]); // och definition void mata_in_textrad(const char txt[]) cin.getline(txt, 80); är det en otillåten operation att ändra värdet på tecknen i fältet. cin.getline( txt, 80) är då en otillåten operation, kompilatorn ger felmeddelande, eftersom satsen ändrar innehållet i fältet. Jämför deklarationerna av texthanteringsfunktionerna i cstring Referenser int i = 3; int & ref = i; En annan speciell deklaration får man om man deklarerar en variabel som referens. Detta ser ut som Rad 2: Deklarerar identifieraren ref att vara en så kallad referens. En referensvariabel är en synonym till en redan existerande variabel. Referensen fungerar på exakt samma sätt som den ursprungliga variabeln. Genom referensen får man alltså här två variabelnamn/identifierare att referera till exakt samma data. Betrakta int i = 3; int j = 4; int & ref = i; ref = j; // obs tilldelning värdet i j kopieras till ref/i i++; cout<<"i:"<<i<<endl; cout<<"j:"<<j<<endl; cout<<"ref:"<<ref<<endl; ref++; cout<<"i:"<<i<<endl; cout<<"j:"<<j<<endl; cout<<"ref:"<<ref<<endl;

13 Programsnutten ger resultatet i:5 j:4 ref:5 i:6 j:4 ref:6 Detta kommer sig alltså av att ref och i representerar samma instans (samma faktiska heltal). Tilldelningssatsen på rad 4 ger alltså endast värdet av j till instansen i/ref. Med tanke på att referenser är synonymer till redan existerande instanser måste de initieras i samband med en deklaration, detta görs automatiskt om man gör dem till funktionsargument (de initieras då med de aktuella argumenten), men inte om man deklarerar dem som ovan. Följande sats är otillåten eftersom den inte refererar till något existerande heltal. int & j; int & k = 4; // otillåtet 4 är ingen heltalsvariabel I exempel som detta är det svårt att se nyttan med referenser. Nyttan blir tydligare om man visar hur det fungerar för ett funktionsargument. Betrakta funktionen och programmet void mata_in_tal( int&, int &); int main() int tal1, tal2; cout<<"mata in ett tal"<<endl; mata_in_2_tal( tal1, tal2 ); cout<<"du har matat in "<<tal; return 0; void mata_in_tal( int& i, int& j) cin>>i>>j; Denna programsnutt fungerar som tänkt eftersom de identifierare som deklarerats i funktionen, i och j, är synonymer till redan existerande variabler tal1 respektive tal2. De refererar till samma heltal. Se även funktionen swap( int&, int& ) i avsnittet standardalgoritmer.

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet 1 Texthantering I detta avsnitt tas det upp två sätt att arbeta med text i C++ program. Det första sättet som behandlas är hanteringen av textfält. Texter i C++ består utav en serie med enstaka tecken

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs 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

Läs mer

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler 1 Datorn som miniräknare I detta avsnitt tas upp hur man kan skriva program som utför enkla räkneoperationer och skriver resultat på skärmen. Syftet är i huvudsak att se hur flera satser kan bygga upp

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik för ingenjörer, VT06 2 Repetition Repetition -

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

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

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print. 1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i java med hjälp av objekten System.out och System.in. Dessa båda objekt är exempel på strömmar. En ström är en typ som

Läs mer

Funktionens deklaration

Funktionens deklaration Funktioner - 1 Teknik för stora program #include #include......... cout

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer

5 Grundläggande in- och utmatning

5 Grundläggande in- och utmatning 5 Grundläggande in- och utmatning För att användaren skall kunna kommunicera med programmet krävs att man inkluderar ett eller flera bibliotek med rutiner. I Ada finns det ett antal paket som gör detta

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Inledande programmering med C# (1DV402) 27+15=42 1 (22) 27+15=42 1 (22) Variabler Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll

Läs mer

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

Föreläsning 4: Poster

Föreläsning 4: Poster Föreläsning 4: Poster Följande är genomgånget: type Person_Type is Namn : String(30); Skonr : Float; Kon : Boolean; Diskussion runt detta med olika typer m.m. Har tagit upp vilka operationer man kan göra

Läs mer

float Mindre rella tal ( floating point number ) double Rella tal/flyttal ( double precision floating point number )

float Mindre rella tal ( floating point number ) double Rella tal/flyttal ( double precision floating point number ) 1 Datatyper och Uttryck I räkneprogrammet tidigare såg vi att C++ kräver deklarationer av alla variabler som används. I räkneprogrammet användes bara variabler av heltalstyp, int, men det finns naturligtvis

Läs mer

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är 1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende

Läs mer

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Instuderingsfrågor till Steg 1

Instuderingsfrågor till Steg 1 Instuderingsfrågor till Steg 1 Följande frågor har till avsikt att underlätta inläsningen av det teoriavsnitt som hör till steg1. Frågorna är anpassade till kursboken C++ from the Ground Up av Herbert

Läs mer

1 Egna klasser. 1.1 En punkt-klass

1 Egna klasser. 1.1 En punkt-klass 1 Egna klasser Vi har bekantat oss med klasser genom att se hur vi kan använda olika klasser. I synnerhet klassen Scanner och klassen Math. För scannerklassen skapade vi en instans för att sedan utnyttja

Läs mer

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4 Modul 2 Byggstenar PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4 Byggstenar 4 Nyckelord 4 Tecken 4 Syntax 5 Standardbibliotek 5 Vårt första program 5 Variabler 6 Konstanter 9 Operatorer 9 Övningar 9 Mer operatorer

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

Läs mer

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm. Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills

Läs mer

Pascal... Pascal. Pascal... Pascal...

Pascal... Pascal. Pascal... Pascal... ... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010 Föreläsning 6 Kapitel 5 5.1 switch-satsen Vi ser på ett par exempel ur boken: int a; srand(time(0)); a=rand()%6+1; if(a==1) printf("hej Du glade\n"); else if(a==2) printf("god dag\n"); else if(a==3) printf("är

Läs mer

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp

Läs mer

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 Betygsgränser: 3 16 poäng 4 23 poäng 5 30 poäng Maxpoäng: 36 poäng Hjälpmedel: inga Lycka till Per Ekeroot Uppgift 1 Kortfrågor

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

Björn Abelli Programmeringens grunder med exempel i C#

Björn Abelli Programmeringens grunder med exempel i C# Björn Abelli Programmeringens grunder med exempel i C# Övningshäfte (bearbetning pågår) Senaste uppdatering: 2004-12-12 I denna version finns övningar för de mest centrala avsnitten. Häftet kommer att

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

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

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion

Läs mer

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Klasser och objekt, referenser Grundkurs i programmering med Python

Klasser och objekt, referenser Grundkurs i programmering med Python Hösten 2009 Dagens lektion Klasser och objekt Referenser 2 Klasser och objekt 3 KLASSER OCH OBJEKT Relaterat data Information om en fyrkant Bredd Höjd Färg 4 KLASSER OCH OBJEKT Egna datatyper Skapa en

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

C-programmering, föreläsning 2 Jesper Wilhelmsson

C-programmering, föreläsning 2 Jesper Wilhelmsson C-programmering, föreläsning 2 Jesper Wilhelmsson Funktioner void Globala och lokala variabler, scope static Arrayer Strängar ASCII, ANSI Argument till main Slumptal Funktioner Nu är det dags att börja

Läs mer

Introduktionslaboration

Introduktionslaboration LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system (SaS) Tommy Olsson 2006-08-31 TDIU06 Programmering g.k Introduktionslaboration Ht1, 2006 Detta häfte

Läs mer

Föreläsning 6 pekare och pekare tillsammans med arrayer

Föreläsning 6 pekare och pekare tillsammans med arrayer Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går

Läs mer

Enkla datatyper minne

Enkla datatyper minne Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in

Läs mer

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner GPT föreläsning 8 Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner Denna gång Reflektioner kring OU1 Funktioner Reflektioner

Läs mer

*Pekarvärden *Pekarvariabler & *

*Pekarvärden *Pekarvariabler & * *Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C 1 of 7 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

Funktioner. Linda Mannila

Funktioner. Linda Mannila Funktioner Linda Mannila 13.11.2007 Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering Intro till funktioner och moduler Villkorssatsen

Läs mer

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

C++ - En introduktion

C++ - En introduktion C++ - En introduktion De imperativa grunderna för dig som kan programmera Eric Elfving Institutionen för datavetenskap 1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna

Läs mer

4 Sammansatta datatyper

4 Sammansatta datatyper 4 Sammansatta datatyper De enkla datatyper som vi hittills använt är otillräckliga när man ska hantera stora datamängder. Vill man exempelvis läsa in 100 reella mätvärden, som man tillfälligt vill spara

Läs mer

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

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26 Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623

Läs mer

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Modul 3 - Modularisering

Modul 3 - Modularisering Modul 3 Modularisering MODULARISERING 2 FUNKTIONER 3 Funktionsdefinition 4 Funktionsanrop 5 Funktionskroppen 5 Slumpa funktionen rand() 6 Värdeanrop 6 Variablers räckvidd 8 Referensanrop 8 DELPROGRAM 10

Läs mer

Objektorienterad programmering Föreläsning 4

Objektorienterad programmering Föreläsning 4 Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion

Läs mer

Funktioner. Jan Erik Moström,

Funktioner. Jan Erik Moström, Funktioner Biblioteksfunktioner Top-down design Funktioner Något om konstanter I dag Ett program #include int main(void) { double x, result; /* Läs in ett tal från användaren */ printf("skriv

Läs mer

2D1339 Programkonstruktion för F1, ht 2004

2D1339 Programkonstruktion för F1, ht 2004 2D1339 Programkonstruktion för F1, ht 2004 Kontrollskrivning 1 Onsdag 24/11 2004 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

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

Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret 2014-2015. L0 - Grunder i C++ Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret 01-015 L0 - Grunder i C++ Det här är den första lektionen i kursen Introduktion till algoritmer vid Matematikgymnasiet, läsåret

Läs mer

Lathund. C för inbyggda system

Lathund. C för inbyggda system Lathund C för inbyggda system Revision 1 2000-09-21 Anders Arvidsson Jonny Martinsson Synpunkter välkomnas! Innehållsförteckning 1 Introduktion...3 1.1 Assembler kontra C...3 1.2 Kodexempel...3 1.3 MPLAB...4

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

Innehåll. Pekare Exempel

Innehåll. Pekare Exempel Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.

Läs mer

int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element

int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element 1 Arrayer Vid beräkningar med större datamängder än några enstaka tal är det bekvämt att kunna betrakta en talmängd som en enhet. Detta åstadkommer man genom att deklarera och instantiera fält. Ett annat

Läs mer

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

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42 Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser

Läs mer

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander F4 Klasser och Metoder ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Klasser och objekt Klasser definierar (utgör idén) Objekt instantierar (utgör förekomsten) En klassdefinition Många

Läs mer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012 1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

C-programmering, föreläsning 1 Jesper Wilhelmsson

C-programmering, föreläsning 1 Jesper Wilhelmsson C-programmering, föreläsning 1 Jesper Wilhelmsson Introduktion till C Variabler, Typer, Konstanter Operatorer Villkorliga satser if-else, switch Loopar for, while, do... while Inmatning och utmatning stdin

Läs mer

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK

Läs mer

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

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

Programmering för språkteknologer I, VT2012. Rum

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

Läs mer

Anteckningar 1: Grundläggande saker

Anteckningar 1: Grundläggande saker UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering

Läs mer

Exempel på ett litet Ada-program

Exempel på ett litet Ada-program Exempel på ett litet Ada-program -- En kommentar som beskriver något. with Ada.Text_IO; procedure Mini is -- Deklarationer. K : constant Integer := 5; X, Y : Integer; -- Körbar kod. Ada.Text_IO.Put( Utskrift

Läs mer

Tentamen i Datakunskap NT

Tentamen i Datakunskap NT Datateknik A, 5 p, Datakunskap NT Sid: 1 (9) Jan-Erik Jonsson 060-14 87 90, Karl Pettersson, 060-14 85 91 DTAA04 Utbildningsprogram: Tentamen i Datakunskap NT 2000-12-02 Step by Step Datakunskap NT A 5p

Läs mer

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

Föreläsning 1: Momstabellen i C++ Nu sätter vi igång med C++! Föreläsning 1: Momstabellen i C++ På den här föreläsningen skall jag ta ett stort exempel och ett par små och med dessa hoppas jag att täcka in mycket av det som är grundläggande.

Läs mer

( ostream ) << ( annan datatyp ) : ostream

( ostream ) << ( annan datatyp ) : ostream 1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i C++ med hjälp av strömmar. Vi har tidigare sett exempel på utskrift. Vi kommer i det här avsnittet även ta upp inmatning

Läs mer

Metoder. Inledande programmering med C# (1DV402)

Metoder. Inledande programmering med C# (1DV402) Metoder Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i detta verk av

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser.

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Dynamisk bindning och polymorfism

Dynamisk bindning och polymorfism Dynamisk bindning och polymorfism I C++ är pekare till basklasser polymorfa, dvs de kan peka på objekt av en subklass typ Vid statisk bindning sker all bindning vid kompileringen -> Vid ett metodanrop

Läs mer

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

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010 Programsystemkonstruktion med C++: Övning 2 Karl Palmskog palmskog@kth.se september 2010 Specalfunktioner i klasser Konstruktorer i konstruktorerna för en klass initieras klassens medlemmar initialvärden

Läs mer

Grunderna i stegkodsprogrammering

Grunderna i stegkodsprogrammering Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer

Läs mer

Testning. 1. Inledning

Testning. 1. Inledning Testning 1. Inledning I all ingenjörsmässig verksamhet är testning en vedertagen metod för att fastställa om en hypotes, konstruktion eller produkt är korrekt och fungerar som avsett. Datorprogram är ofta

Läs mer

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

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

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser. Vi får också möjlighet att referera

Läs mer