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
Ett C++-program Källkod # include <iostream > using namespace std ; int main () { cout << " Hej världen!\ n" << " Nu är det slut " << endl ; return 0; }
Ett C++-program För att kunna köra programmet måste det vara skrivet på ett språk som datorn känner till - Maskinkod För att översätta från C++ till maskinkod används en kompilator Kompilatorn delar upp arbetet i tre steg: Preprocessor Utför alla rader som inleds med # (t.ex. inkluderingar) samt rensar bort kommentarer och annat som inte behövs av kompilatorn Kompilering Själva översättningen av vår källkod Länkning Alla källkodsfiler (inklusive systemets standardbibliotek) kopplas ihop till ett körbart program
Ett C++-program Programmet körs av operativsystemet Med hjälp av anrop till operativsystemet kan vi kommunicera med användaren
Variabler Variabeln är imperativa språks grudsten Med hjälp av variabler kan vi lagra värden i våra program En variabel är en representation av en del av datorns minne En variabel har alltid tre egenskaper: Ett namn En datatyp Ett värde Har vi inte gett variabeln ett värde så är det normalt sätt okänt
Variabler int x; int y {4}; x = y; y: int 4 En variabel måste deklareras innan den används Man kan ge variabeln ett värde vid deklaration - initiering Man kan även ge variabler värden med tilldelning Vid tilldelning beräknas uttrycket till höger varefter värdet stoppas in i variabeln
Datatyper Grundläggande datatyper Heltal Finns i flera typer - signed, unsigned, short, int, long, long long och kombinationer. Använd normalt sätt int. Flyttal En representation av de reella talen. Finns i varianterna float, double, long double. Alla tal kan inte lagras exakt - användning leder ofta till flyttalsavrundningar Tecken Tecken lagras som heltal - representerar position i teckentabellen, Datatypen char vanligast. Sanningsvärden Typen bool har två möjliga värden - true och false
Datatyper Sammansatta datatyper En sammansatt datatyp består av andra datatyper Två enkla : string: En samling av flera tecken vector<d>: En samling av flera värden av datatyp d # include <vector > # include <string > # include <iostream > using namespace std ; int main () { string x {" Hej "}; vector <int > v {1, 4, 6, 10}; cout << x << endl ; for ( int i : v ) cout << i << endl ; return 0; } Hej 1 4 6 10
Datatyper Fältstrukturer Både string och vector kan indexeras med hjälp av ett index kan man komma åt ett specifikt element Kan indexeras på två sätt, klammerparenteser och med funktionen at v[1] Plockar ut index 1 (andra elementet) v.at(1) Plockar ut index 1, ger fel om det inte finns
Datatyper Sammansatta datatyper - Poster Vi kan också skapa egna datatyper poster Poster samlar flera värden som kan vara av olika datatyp struct Person { string name ; int age ; }; int main () { Person p {" Klara ", 14}; cout << p. name << " (" << p. age << " år)" << endl ; } Klara (14 år)
Ett C++-programs uppbyggnad Satser Ett C++-program består av en sekvens av satser Några satser vi pratat om: Uttryckssatsen Deklaration Tilldelningssatsen Satsblocket Villkorssatser Upprepningssatser
Satser Uttryckssatsen: Ett valfritt uttryck följt av ett semikolon Deklaration: Variabeldeklaration: datatyp namn [{värde}] Funktionsdeklaration: returtyp namn ([parametrar]) Tilldelning: variabel = uttryck
Satser Satsblock Ett block kan införas med klammerparenteser (måsvingar) Varje block har ett eget scope med egna variabler
Satser Villkorssatser Finns två varianter av villkorssatser; if och switch
Satser Upprepningssatser Tre upprepningssatser som i grunden har liknande funktion; while, do och for int i {}; while ( i < 5 ) { cout << i << endl ; ++i; } int i {}; do { cout << i << endl ; ++i; } while ( i < 4 ); for ( int i {}; i < 5; ++i ) { cout << i << endl ; }
Ett C++-programs uppbyggnad Uttryck En sats kan bestå av uttryck Några uttryck: Litteraler och identifierare Aritmetiska uttryck Logiska uttryck
Uttryck Litteraler En litteral är ett värde skrivet direkt i källkoden Litteral Typ Värde 1 int 1 0x1b int 27 1.2 double 1.2 Några exempel: 1.2e2 double 120.0 true bool true c char c "c" string "c" "kalle" string "kalle"
Uttryck Identifierare En identifierare är ett namn, antingen som finns inbyggt eller som vi själva hittat på En identifierare får (enligt standarden) endast inledas med en engelsk bokstav eller ett understreck (_) och därefter följas av andra bokstäver, understreck eller siffror. Det finns inga direkta namngivningsregler men följande rekommenderar jag: Använd engelska namn Skilj på ord med understreck Inled namn på egna typer med versal Använd endast gemener i övriga fall
Uttryck Aritmetiska uttryck Aritmetiska uttryck fungerar som i matematiken Har de fyra vanliga operatorerna: + - * / Beräkningsordning samma som i matematiken, kan ändras med parenteser Division mellan heltal ger ett heltalsvärde som svar Operatorn % (modulus) ger resten vid heltalsdivision Stegning: prefix (++i) och postfix (i++)
Uttryck Logiska uttryck Med hjälp av relationsoparatorer jämförs värden. Finns ==!= < > <= >= för kontroll av likhet, olikhet, mindre än, större än, mindre eller lika respektive större eller lika. Logiska uttryck kan kombineras med operatorerna &&! Logiskt OCH och ELLER är kortslutande (första uttrycket beräknas för att se om nästa behövs)
Underprogram funktioner En funktion är i grunden ett namngivet kodblock Funktionen definieras och kan sedan anropas Vid anrop sker parameteröverföring
Underprogram funktioner Parameteröverföring Tre typer: Värdeöverföring Argumentets värde kopieras till parametern int max ( int x, int y) { if ( x > y ) return x; return y; }
Underprogram funktioner Parameteröverföring Tre typer: Värdeöverföring Argumentets värde kopieras till parametern Referensöverföring parametern kommer att referera till (vara ett annat namn för) argumentet void swap ( int & a, int & b) { int c {a}; a = b; b = c; }
Underprogram funktioner Parameteröverföring Tre typer: Värdeöverföring Argumentets värde kopieras till parametern Referensöverföring parametern kommer att referera till (vara ett annat namn för) argumentet Konstant referens för att undvika onödig kopiering av objekt av komplicerad typ void print ( const vector <int > & v);
www.liu.se