Det finns två operatorgrupper som vi hittills inte har tagit upp, och den första av

Storlek: px
Starta visningen från sidan:

Download "Det finns två operatorgrupper som vi hittills inte har tagit upp, och den första av"

Transkript

1 Andra operatorer Bilaga E Andra operatorer Det finns två operatorgrupper som vi hittills inte har tagit upp, och den första av dessa består av de bitvisa operatorerna, vilka gör det möjligt att manipulera enskilda bitar i ett värde. Dessa operatorer är ett arv från C. Den andra gruppen består av två indirekta operatorer för medlemmar, och dessa är tillägg i C++. Den här bilagan ger en kort sammanfattning av de här operatorerna. Bitvisa operatorer De bitvisa operatorerna opererar på bitarna i binära heltalsvärden. Operatorn vänsterskift t.ex. flyttar bitarna åt vänster, och den bitvisa negationsoperatorn byter ettor mot nollor och nollor mot ettor. Allt som allt har C++ sex sådana operatorer: <<, >>, ~, &, och ^. Skiftoperatorerna Operatorn vänsterskift har följande syntax: värde << skift Här är värde det heltalsvärde som ska skiftas, och skift är antalet bitpositioner: 13 << 3 betyder att alla bitar i värdet 13 ska skiftas tre positioner åt vänster. De övergivna positionerna fylls på med nollor och de bitar som skiftas förbi slutet kastas, se figur E.1. Figur E.1 Operatorn vänsterskift. Eftersom varje bitposition representerar ett värde som är dubbelt så stort som värdet närmast till höger (se bilaga A), innebär skiftning med en position åt vänster detsamma som att multiplicera värdet med 2. På samma sätt innebär skiftning med två positioner åt vänster multiplicering med 2 2, och skiftning n positioner innebär multiplicering med 2 n. Alltså är värdet för 13 << 3 detsamma som 13 x 2 3 eller

2 Bilaga E Operatorn vänsterskift ger C++ en egenskap som man ofta finner i assemblerspråk. En skiftoperator i assembler ändrar dock innehållet i ett register, medan operatorn i C++ ger ett nytt värde utan att förändra det ursprungliga. Betrakta t.ex. följande: int x = 20; int y = x << 3; Den här koden ändrar inte värdet i x. Uttrycket x << 3 använder värdet i x för att producera ett nytt värde, ungefär som x + 3 ger ett nytt värde utan att ändra x. Om man vill använda operatorn vänsterskift för att ändra variabelvärdet måste man dessutom använda tilldelning: Antingen vanlig tilldelning eller operatorn <<=, som kombinerar vänsterskift med tilldelning. x = x << 4; y <<= 2; // vanlig tilldelning // skiftning och tilldelning Operatorn högerskift (>>) skiftar som man skulle kunna förvänta sig bitarna åt höger och har följande syntax: värde >> skift Här är värde det heltalsvärde som ska skiftas, och skift är antalet bitar som ska skiftas. Exempelvis betyder 17 >> 2 att alla bitar i värdet 17 ska skiftas två positioner åt höger. För heltal som är unsigned fylls de övergivna positionerna på med nollor och de bitar som skiftas förbi slutet kastas. För heltal som är signed kan övergivna positioner fyllas på med nollor, i annat fall med värdet på den bit som ursprungligen låg längst till vänster. Valet är implementeringsberoende, se figur E.2. Figur E.2 Operatorn högerskift. Att skifta en position åt höger är detsamma som en heltalsdivision med 2. Generellt är skiftning n positioner åt höger detsamma som en heltalsdivision med 2 n. C++ definierar också en operator för högerskift-och-tilldelning (>>=) om man vill ersätta värdet i en variabel med det skiftade värdet: int q = 43; q >>= 2; // ersätt 43 med 43 >> 2, eller 10 I vissa system ger operatorerna vänster- och högerskift snabbare heltalsmultiplikationer och divisioner med 2 än vad som är fallet med multiplikations- och divisionsoperatorer- 1048

3 Andra operatorer na, men i takt med att kompilatorerna blir bättre på att optimera kod minskar sådana skillnader. De logiska bitvisa operatorerna De logiska bitvisa operatorerna motsvarar de vanliga logiska operatorerna, bortsett från att de arbetar med värdet bit för bit istället för som en helhet. Jämför t.ex. den vanliga negationsoperatorn (!) och den bitvisa negationsoperatorn (~). Operatorn! omvandlar ett sant värde (icke-noll) till falskt (0) och ett falskt värde (0) till sant (1). Operatorn ~ omvandlar varje enskild bit till sin motsats (1 till 0 och 0 till 1). Ta t.ex. en unsigned char med värdet 3: unsigned char x = 3; Uttrycket!x har värdet 0. För att se värdet på ~x skriver vi det i binär form: Varje nolla omvandlas sedan till ett och varje etta till noll, vilket det ger det binära värdet , eller 252 i det decimala talsystemet, se figur E.3. Det nya värdet kallas ursprungsvärdets komplement. Figur E.3 Operatorn bitvis negation. Operatorn bitvis ELLER (, eng. OR) kombinerar två heltalsvärden till ett nytt heltalsvärde. Varje bit i det nya värdet sätts till 1 om den ena eller båda av de motsvarande bitarna i de ursprungliga värdena är 1. Om båda motsvarande bitar är 0 sätts biten till 0, se figur E.4. Figur E.4 Operatorn bitvis ELLER. Tabell E.1 sammanfattar hur operatorn kombinerar bitar. 1049

4 Bilaga E Tabell E.1 Värden på b1 b2 Bitvärden b1 = 0 b1 = 1 b2 = b2 = Operatorn = kombinerar operatorn bitvis ELLER med tilldelning: a = b; // sätt a till a b Operatorn bitvis exklusivt ELLER (^, eng. XOR) kombinerar två heltalsvärden till ett nytt heltalsvärde. Varje bit i det nya värdet sätts till 1 om den ena, men inte båda av motsvarande bitar i de ursprungliga värdena är 1. Om båda motsvarande bitar är 0 sätts biten till 0, se figur E.5. Figur E.5 Operatorn bitvis exklusivt ELLER. Tabell E.2 sammanfattar hur operatorn ^ kombinerar bitar. Tabell E.2 Värden på b1 ^ b2 Bitvärden b1 = 0 b1 = 1 b2 = b2 = Operatorn ^= kombinerar operatorn bitvis exklusivt ELLER med tilldelning: a ^= b; // sätt a till a ^ b Operatorn bitvis OCH (&, eng. AND) kombinerar två heltalsvärden till ett nytt heltalsvärde. Varje bit i det nya värdet sätts till 1 endast om båda motsvarande bitar i det ursprungliga värdet är 1. Om någon eller båda av de motsvarande bitarna är 0 sätts biten till 0, se figur E

5 Andra operatorer Figur E.6 Operatorn bitvis OCH. Tabell E.3 sammanfattar hur operatorn & kombinerar bitar. Tabell E.3 Värden på b1 & b2 Bitvärden b1 = 0 b1 = 1 b2 = b2 = Operatorn &= kombinerar operatorn bitvis OCH med tilldelning: a &= b; // sätt a till a & b Alternativa representationer av bitvisa operatorer C++ tillhandahåller alternativa representationer för flera bitvisa operatorer, se tabell E.4. Detta med tanke på platser där de traditionella bitvisa operatorerna inte ingår i teckenuppsättningen. Tabell E.4 Standard & &= Alternativa representationer för bitvisa operatorer Alternativ representation bitand and_eq bitor = or_eq - compl ^ xor ^= xor_eq 1051

6 Bilaga E Dessa alternativ medger att man skriver exempelvis följande satser: b = compl a bitand b; // detsamma som b = ~a & b; c = a xor b; // detsamma som c = a ^ c; Några vanliga operatortekniker på bitnivå Styrning av maskinvara innebär ofta att vissa enskilda bitar ska avläsas eller ställas som 1 eller 0. De bitvisa operatorerna erbjuder sätt att utföra sådana aktiviteter, och vi ska snabbt gå igenom de vanligaste metoderna. I det följande representerar flerabitar ett generellt värde medan bit representerar värdet på en viss bit. Bitar numreras från höger till vänster med början från 0, vilket betyder att värdet för biten i position n är 2 n. Ett heltal med endast bit nummer 3 satt till 1 har alltså värdet 2 3, eller 8. Generellt uttryckt svarar varje enskild bit mot sin potens av två, enligt beskrivningen av binära tal i bilaga A. Vi använder därför termen bit för att representera en potens av två, vilket motsvarar denna bit satt till 1 och alla andra bitar satta till 0. Ettställa (slå på) en bit Följande två operationer ettställer, slår på, den bit i flerabitar som svarar mot den bit som representeras av bit: flerabitar = flerabitar bit; flerabitar = bit; Båda sätter bit till 1 oavsett dess tidigare värde. Detta beror på att 1 ELLER ger resultatet 1 med både 1 och 0. Alla andra bitar i flerabitar lämnas orörda. Detta beror på att 0 ELLER 1 ger 1 och 0 ELLER 0 ger 0. Ställa om (vippa) en bit Följande båda operationer ställer om, vippar, den bit i flerabitar som representeras av bit. Med andra ord ettställs biten om den var 0 och nollställs om den var 1: flerabitar = flerabitar ^ bit; flerabitar ^= bit; 1 XOR 0 ger 1, vilket ettställer en nollställd bit, och 1 XOR 1 ger 0, vilket nollställer en ettställd bit. Alla andra bitar i flerabitar lämnas orörda. Detta beror på att 0 XOR 0 ger 0, och 0 XOR 1 ger 1. Nollställa (slå av) en bit Följande båda operationer nollställer den bit i flerabitar som representeras av bit: flerabitar = flerabitar & ~bit; flerabitar &= ~bit; Satserna nollställer biten oavsett dess tidigare värde. Först ger operationen ~bit ett heltal med alla bitar satta till 1, utom den bit som ursprungligen var satt till 1, som nollställs. 0 OCH 1 liksom 0 OCH 0 blir båda 0, varför biten ifråga nollställs. Alla andra bitar i 1052

7 Andra operatorer flerabitar lämnas orörda. Detta beror på att 1 OCH 1 i likhet med 1 OCH 0 ger det värde som biten hade från början. Här är ett kortare sätt att göra samma sak: flerabitar &= ~bit; Testa en bits värde Anta att vi vill avgöra huruvida den bit som motsvarar bit är ettställd i flerabitar. Följande test fungerar inte nödvändigtvis: if (flerabitar == bit) // inte bra Detta beror på att även om motsvarande bit i flerabitar är satt till 1 kan också andra bitar vara satta till 1. Likheten ovan är sann bara när endast den motsvarande biten är 1. Knepet är att först utföra operationen flerabitar OCH bit. Detta ger värdet 0 i alla andra bitpositioner, eftersom 0 OCH 1 liksom 0 OCH 0 är 0. Bara den bit som svarar mot bitvärdet lämnas orörd eftersom både 1 OCH 1 och 1 OCH 0 ger detta värde. Rätt sätt att testa blir då: if ((flerabitar & bit) == bit) // testar en enstaka bit I verkliga livet brukar programmerare ofta förenkla det här testet till följande: if (flerabitar & bit) // testar en enstaka bit Eftersom bit består av en bit som är satt till 1 och resten satta till 0 är värdet för flerabitar & bit antingen 0 (vilket ger testresultatet false) eller bit, vilket utvärderas som true eftersom det är icke-noll. Indirekta operatorer för medlemmar C++ tillåter definition av pekare till medlemmarna i en klass, men den processen är inte enkel. För att se vad den innefattar ska vi titta på en exempelklass med vissa inbyggda problem: class Example private: int feet; int inches; public: Example(); Example(int ft); ~Example(); void show_in() const; void show_ft() const; void use_ptr() const; ; Betrakta nu medlemmen inches. Utan ett specifikt objekt är inches endast en etikett, det vill säga klassen definierar inches som en medlemsidentifierare. Men det behövs ett objekt innan du faktiskt har allokerat minne: 1053

8 Bilaga E Example ob; // nu existerar ob.inches Man specificerar alltså ett minnesområde genom att använda identifieraren inches tillsammans med ett specifikt objekt. (I en medlemsfunktion kan man utelämna objektets namn, men då blir objektet underförstått det som pekaren pekar på.) C++ låter dig definiera en medlemspekare till identifieraren inches enligt följande: int Example::*pt = &Example::inches; Det här pekaren skiljer sig en aning från en vanlig (eng. regular) pekare. En vanlig pekare pekar på ett specifikt minnesområde. Men pekaren pt pekar inte på ett specifikt minnesområde eftersom deklarationen inte identifierar ett specifikt objekt. Istället identifierar pekaren pt platsen på inches-medlemmen inom vilket Example-objekt som helst. Precis som identifieraren inches är pt utformat för att användas i samverkan med en objektidentifierare. Uttrycket *pt får samma roll som identifieraren inches. Du kan alltså använda en objektidentifierare för att specificera vilket objekt som ska kommas åt och pekaren pt för att specificera inches-medlemmen av det objektet. En klassmetod kan exempelvis använda den här koden: int Example::*pt = &Example::inches; Example ob1; Example ob2; Example *pq = new Example; cout << ob1.*pt << endl; // visa inches-medlemmen av ob1 cout << ob2.*pt << endl; // visa inches-medlemmen av ob2 cout << po->pt << endl; // visa inches-medlemmen av *po Här är.* och -> indirekta operatorer för medlemmar. När man har ett visst objekt, t.ex. ob1, identifierar ob1.*pt inches-medlemmen av ob1. På samma sätt identifierar pq->pt inches-medlemmen av det objekt som pq pekar på. Att ändra objekt i exemplet ovan ändrar vilken inches-medlem som används. Men du kan även ändra själva pekaren pt. Eftersom feet är av samma typ som inches kan du ändra pt så att den pekar på feet-medlemmen istället för inches-medlemmen. ob1.*pt kommer då istället att åsyfta feet-medlemmen av ob1: pt = &Example::feet; cout << ob1.*pt << endl; // ändra pt // visa feet-medlemmen av ob1 Kombinationen *pt får samma roll som ett medlemsnamn och kan användas för att identifiera olika medlemsnamn (av samma typ). Man kan även använda medlemspekare för att identifiera medlemsfunktioner. Syntaxen blir då något mer invecklad. Du kanske kommer ihåg att deklarationen av en pekare till en vanlig funktion av typen void med inga argument såg ut så här: void (*pf) (); // pf pekar på en funktion Deklarationen av en pekare till en medlemsfunktion måste indikera att funktionen tillhör en viss klass. Så här deklarerar du en pekare till en metod i klassen Example: void (Example::*pf) () const; // pf pekar på en medlemsfunktion i Example 1054

9 Andra operatorer Detta talar om att pf kan användas i samma sammanhang som en Example-metod. Observera att termen Example::*pf måste skrivas inom parentes. Du kan tilldela adressen för en viss medlemsfunktion till den här pekaren: pf = &Example::show_inches; Observera att till skillnad från vid tilldelning till en vanlig funktionspekare kan och måste adressoperatorn användas här. När denna tilldelning gjorts kan ett objekt användas för att aktivera medlemsfunktionen: Example ob3(20); (ob3.*pf) (); // aktivera show_inches() genom att använda objektet ob3 Hela konstruktionen ob3.*pf måste omges av parentestecken för att klart och tydligt identifiera att uttrycket representerar ett funktionsnamn. Eftersom show_feet() har samma prototyp som show_inches() kan pf också användas för att komma åt metoden show_feet(): pf = &Example::show_feet; (ob3.*pf) (); // använd show_feet () på objektet ob3 Klassdefinitionen i listning E.1 har en use_ptr()-metod som använder medlemspekare för att komma åt både datamedlemmar och funktionsmedlemmar i klassen Example. Listning E.1 memb_pt.cpp // memb-pt.cpp -- indirekta pekare till klassmedlemmar #include <iostream> using namespace std; class Example private: int feet; int inches; public: Example(); Example(int ft); ~Example(); void show_in(); void show_ft() const; void use_ptr() const; ; Example::Example() feet = 0; inches = 0; Example::Example(int ft) feet = ft; inches = 12 * feet; 1055

10 Bilaga E Example::~Example() void Example::show_in() const cout << inches << tum\n ; void Example::show_ft() const cout << feet << fot\n ; void Example::use_ptr() const Example yard(3); int Example::*pt; pt = &Example::inches; cout << Sätt pt till &Example::inches:\n ; cout << this->pt: << this->*pt << endl; cout << yard.*pt: << yard.*pt << endl; pt = &Example::feet; cout << Sätt pt till &Example::feet:\n ; cout << this->pt: << this->*pt << endl; cout << yard.*pt: << yard.*pt << endl; void (Example::*pf) () const; pf = &Example::show_in; cout << Sätt pf till &Example::show_in:\n ; cout << Använder (this->*pf) (): ; (this->*pf) (); cout << Använder (yard.*pf) (): ; (yard.*pf) (); int main() Example car(15); Example van(20); Example garage; cout << car.use_ptr() utmatning:\n ; car.use_ptr(); cout << \nvan.use_ptr() utmatning:\n ; van.use_ptr(); return 0; Här är ett prov på utmatningen från programmet i listning E.1: car.use_ptr() utmatning: Sätt pt till &Example::inches: this->pt: 180 yard.*pt:: 36 Sätt pt till &Example::feet: 1056

11 Andra operatorer this->pt: 15 yard.*pt:: 3 Sätt pf till &Example::show_in: Använder (this->*pf) (): 180 tum Använder (yard.*pf) (): 36 tum van.use_ptr() utmatning: Sätt pt till &Example::inches: this->pt: 240 yard.*pt:: 36 Sätt pt till &Example::feet: this->pt: 20 yard.*pt:: 3 Sätt pf till &Example::show_in: Använder (this->*pf) (): 240 tum Använder (yard.*pf) (): 36 tum Det här exemplet tilldelar pekarvärden under kompileringen. För en mer sofistikerad klass kan man använda medlemspekare till datamedlemmar och metoder för vilka den medlem som exakt associeras med pekaren bestäms under programmets körning. 1057

12 1058 Bilaga E

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

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

TDIU01 Programmering i C++

TDIU01 Programmering i C++ TDIU01 Programmering i C++ Föreläsning 6 - Klasser Eric Elfving, eric.elfving@liu.se Institutionen för datavetenskap (IDA) Avdelningen för Programvara och system (SaS) Klasser När vi skapade vår lista

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

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

Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( )

Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( ) TDDC76 PoD OH Föreläsning C++ 83 Operatoröverlagring endast operatorsymboler definierade i C++ kan överlagras + - * / % ^ & ~! > = += -= *= /= %= ^= &= = = < > = ==!= && ++ -- -> ->*, [ ]

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 20 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 20 Internminne

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

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

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

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 21 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 21 Internminne

Läs mer

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

System.out.println(Jaså du har + antalhusdjur+  husdjur); if ( antalhusdjur > 5 ) System.out.println(Oj det var många); 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

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

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33 Programmering i C++ EDA623 Typer EDA623 (Föreläsning 4) HT 2013 1 / 33 Typer Innehåll Heltalstyper Flyttalstyper Pekare Minnesallokering Funktionspekare Typdeklarationer med typedef Typomvandlingar (casting)

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

Data, typ, selektion, iteration

Data, typ, selektion, iteration Data, typ, selektion, iteration En programmeringkurs på halvfart IDT, MDH ttp://www.negative-g.com/nolimits/no%20limits%20defunct%20coasters.htm 1 Dagens agenda Talrepresentation Typkonvertering Sekvens

Läs mer

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

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY Grunderna i C++ ARK 385: Virtuella Verktyg i en Materiell värld AT Arkitektur & Teknik Chalmers Tekniska Högskola 2009 - Kursen skapades (3 förel.) 2010-6 förel. + 2 projekt 2011-8 förel. Helt omarbetade

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

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning:

Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning: 2D1387, Programsystemkonstruktion med C++ 00/01 1 Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning: Synlighet Överlagring av operatorer Slide 1 Vänner till klasser och funktioner

Läs mer

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med. Det objektorienterade synsättet A - 1 Objekt A - 2 Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med. De enskilda variablerna i programmet, de s.k. objekten,

Läs mer

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

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

Tommy Färnqvist, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings

Läs mer

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

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap TDP004 Minne och pekare Eric Elfving Institutionen för datavetenskap 1 / 23 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 23 Internminne - RAM Datorns internminne (RAM,

Läs mer

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

Logik och kontrollstrukturer

Logik och kontrollstrukturer Logik och kontrollstrukturer Flödet av instruktioner i ett programmeringsspråk bygger vi upp med hjälp av dess kontrollstrukturer. I C har vi exemplen if, if else, while, do while. Dessutom finns switch

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

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

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

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

Föreläsning 3: Booleans, if, switch

Föreläsning 3: Booleans, if, switch TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt

Läs mer

Introduktion C-programmering

Introduktion C-programmering Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder

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

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

1 Funktioner och procedurell abstraktion

1 Funktioner och procedurell abstraktion 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

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

Repetition C-programmering

Repetition C-programmering Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition

Läs mer

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

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

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4 TDIU20 - Objektorienterad programmering i c++ - föreläsning 4 Pontus Haglund Department of Computer and information science 1 Vad gjorde vi förra gången? Felhantering Operatorer Typkonvertering 2 Grundläggande

Läs mer

Föreläsning 10. Pekare (Pointers)

Föreläsning 10. Pekare (Pointers) Föreläsning 10 Pekare (Pointers) Dagens kluringar int a=5; int f(int b) a--; b++; return b; int main() int a=3; printf("%d,",f(a)); printf("%d",a); return 0; int f(int a) if(a==1) return a; else return

Läs mer

1 Namnkontroll (NameControl)

1 Namnkontroll (NameControl) 1 Namnkontroll (NameControl) När en ny variabel, ett objekt, en konstant o s v introduceras måste programmeraren namnge denna. Allting identifieras m h a namn. När ett program består av väldigt många komponenter

Läs mer

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

TDIU01 (725G67) - Programmering i C++, grundkurs . TDIU01 (725G67) - Programmering i C++, grundkurs Program, datatyper och IO Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/14 Struktur på ett C++-program Köra ett program Variabler

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

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

Övriga byggstenar. Övriga byggstenar. Några tips under programutveckling. Beroenden Pekare till funktioner Typkonvertering

Övriga byggstenar. Övriga byggstenar. Några tips under programutveckling. Beroenden Pekare till funktioner Typkonvertering Övriga byggstenar Beroenden Pekare till funktioner Övriga byggstenar Beroenden er Definitioners synlighet Funktionspekare Icke-medlemsfunktioner Medlemsfunktioner 2D1387 Programsystemkonstruktion med C++

Läs mer

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera Föreläsning 2 Operatorer Tilldelning Kodblock if satsen Logiska uttryck Att programmera En operator tar ett eller två data och producerar ett svar. Typexemplet är +. Den tar t.ex två heltal och producerar

Läs mer

Repetera snabbt vad du lärde dig förra veckan. Du är nu redo att kasta dig in i nästa fas, teorin om villkor.

Repetera snabbt vad du lärde dig förra veckan. Du är nu redo att kasta dig in i nästa fas, teorin om villkor. Lektion C2 Villkor Repetera snabbt vad du lärde dig förra veckan. Du är nu redo att kasta dig in i nästa fas, teorin om villkor. Du gör ofta val i livet, och valet du gör får olika konsekvenser och följder.

Läs mer

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Minnestilldelning (allokering) och frigörande (avallokering) av minne Pekare i C++ Pekare används mycket i C++. De är bra både för att de tillåter dynamisk minnesallokering och för att de är referenser. En pekarvariabel innehåller en adress till ett element, den pekar på

Läs mer

SP:PROG3 HT12 Tenta 2013-01-19

SP:PROG3 HT12 Tenta 2013-01-19 DSV SU/KTH sid 1 (5) SP:PROG3 SP:PROG3 HT12 Tenta 2013-01-19 Tentan består av tre uppgifter. Max poäng är 30. För betyget E (godkänd) krävs minst 18 poäng och minst en poäng på varje uppgift. Betygskriteria

Läs mer

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

public och private Obs: private inte skyddar mot access från andra objekt i samma klass. public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private

Läs mer

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

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr, 051019 1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13. Denna tenta kommer att vara färdigrättad Må 24/10 och kan då hämtas på

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

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

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

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

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

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Övningsuppgifter till föreläsning 2 Variabler och uttryck Sid 1 (5) Övningsuppgifter till föreläsning 2 Variabler och uttryck Syfte Syftet med övningsuppgifterna är att träna på: Aritmetik, variabler, tilldelning, scanf och printf Generellt Diskutera gärna uppgifterna

Läs mer

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00 TENTAMEN CD5250 Objektorienterad programutveckling med C++, 5p Max poäng: 40 Betygsgränser: 3: 20 4: 28 5: 36 Datum: 1999-06-01, Tid: 14:00-19:00 Ansvarig: Ivica Crnkovic Upp till 5 poäng kan komma från

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

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar KLASSER Inkapsling Abstrakt datatyp Public och private Klassmedlemmar Datamedlemmar Funktionsmedlemmar Initiering av objekt Konstruktor Ta del av objektets tillstånd Förändra objektets tillstånd Avinitiera

Läs mer

Innehåll. Pekare Syntax

Innehåll. Pekare Syntax Innehåll EDAF30 Programmering i C++ Typer, pekare Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Typer och arrayer Operatorn -> Typer, pekare 2/1 Påminner om referenser i Java, men en pekare är minnesadressen

Läs mer

Datorteknik 2 (AVR 2)

Datorteknik 2 (AVR 2) Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra

Läs mer

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten

Läs mer

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00 DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00 Introduktion Skriv dina svar på separata papper, dessa scannas in efter inlämning. Du kan skriva på både fram- och

Läs mer

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar. Värmdö Gymnasium Programmering A 110123 Lektion C1 Grunder Att programmera handlar mycket om att lära sig att analysera det problem eller den funktion man vill att programmet ska ha, och översätta det

Läs mer

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera Föreläsning 2 Variabler, tilldelning och kodblock if-satsen Logiska operatorer Andra operatorer Att programmera Variabler Det är i variabler som all data (information) lagras. Genom att ändra värde på

Läs mer

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående

Läs mer

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar

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

C++ Objektorientering - Klasser. Eric Elfving

C++ Objektorientering - Klasser. Eric Elfving C++ Objektorientering - Klasser Eric Elfving 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med struct är åtkomst... 2 / 20 Följande

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

Hur implementera algoritmerna på maskinnivå - datorns byggstenar Hur implementera algoritmerna på maskinnivå - datorns byggstenar Binära tal Boolesk logik grindar och kretsar A A extern representation intern representation minnet i datorn extern representation 1000001

Läs mer

1 Klasser och objektorientering Vad är objektorientering?

1 Klasser och objektorientering Vad är objektorientering? 1 Klasser och objektorientering Vad är objektorientering? Det finns olika synsätt på programmering, dessa olika synsätt kallas för paradigm. De vanligaste paradigmen är det imperativa/proceduriella, det

Läs mer

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående

Läs mer

Ansvarig lärare: Olof Andersson, Telefon 021-101314 (besöker skrivsalen)

Ansvarig lärare: Olof Andersson, Telefon 021-101314 (besöker skrivsalen) MÄLRLENS HÖGSKOL Institutionen för elektroteknik Tentamen Mikrodatorteknik T3760 atum 2005-10-28 Tid 08.30 12.30 nsvarig lärare: Olof ndersson, Telefon 021-101314 (besöker skrivsalen) Om du klarat samtliga

Läs mer

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer Innehåll EDAF30 Programmering i C++ 8. Klasser; resurshantering och polymorfism Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Klasser 2 Operatorer 3 Klasser, resurshantering Rule of three Move semantics

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

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall

Läs mer

Uttryck och villkor. Föreläsning 2

Uttryck och villkor. Föreläsning 2 Uttryck och villkor Föreläsning 2 Dagens kluring Finn fem fel! #include int main(void) printf("resistans hos R1 (ohm) : ") scanf("%d",r1); printf("resistans hos R2 (ohm) : "); scanf("%d",r2);

Läs mer

CE_O3. Nios II. Inför lab nios2time

CE_O3. Nios II. Inför lab nios2time IS1200 Exempelsamling till övning CE_O3, 2015 CE_O3. Nios II. Inför lab nios2time 3.1. Logiska operationer (se uppgift 1.2 c) Repetera (eller lär dig) innebörden av de logiska operationerna "bitvis AND",

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19 Programmering i C++ EDA623 Strömmar och filer EDA623 (Föreläsning 9) HT 2013 1 / 19 Strömmar och filer Innehåll Klassen ios Läsning av strömmar Utskrift av strömmar Koppling av filer till strömmar Direktaccess

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

(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

Beräkningsvetenskap föreläsning 2

Beräkningsvetenskap föreläsning 2 Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa

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

5 Arv och dynamisk bindning FIGUR

5 Arv och dynamisk bindning FIGUR 5 Arv och dynamisk bindning Arv är en av hörnstenarna i objektorienterad programmering. Med hjälp av arv kan man skapa underhållsvänliga och förändringsvänliga system. Att hitta arvsrelationer är en viktig

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

Tillämpad programmering

Tillämpad programmering Tillämpad programmering C++ polymorfism overload, cast, ärvning, template Johan Montelius 1 polymorfism Att se och använda en variabel, ett objekt eller en funktion i olika former overload olika versioner

Läs mer

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av

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

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

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

PROV. 12 Egenskaper (provavsnitt)

PROV. 12 Egenskaper (provavsnitt) 12 Egenskaper (provavsnitt) 12.1 Egenskaper 12.2 Deklaration av egenskaper 12.3 Åtkomsttjänster för egenskaper 12.4 Åtkomsttjänster med genererade instansvariabler 12.5 Åtkomsttjänster med egna instansvariabelnamn

Läs mer

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng

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

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

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