TDIU01 - Programmering i C++, grundkurs

Relevanta dokument
TDDC76 - Programmering och Datastrukturer

C++ - En introduktion

TDIU01 - Programmering i C++, grundkurs

C++ - En introduktion

TDIU01 - Programmering i C++, grundkurs

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

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

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

TDIU01 - Programmering i C++, grundkurs

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

Programmering i C, 7,5 hp

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

F4. programmeringsteknik och Matlab

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

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

Data, typ, selektion, iteration

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

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

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

OOP Objekt-orienterad programmering

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

TDIU01 - Programmering i C++, grundkurs

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Programmeringsteknik med C och Matlab

TDIU01 - Programmering i C++, grundkurs

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

TDDC76 - Programmering och Datastrukturer

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

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

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Lite logik. Kap 6: Sid 2

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Logik och kontrollstrukturer

Objektorienterad Programmering (TDDC77)

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

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

Exempel på ett litet Ada-program

TDDC76 - Programmering och Datastrukturer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Övning2. Variabler. Data typer

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

Objektorienterad Programmering (TDDC77)

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

Uttryck och villkor. Föreläsning 2

Variabler och konstanter

Repetition C-programmering

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

C++ Slumptalsfunktioner + switch-satsen

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Introduktion C-programmering

Visual Basic, en snabbgenomgång

Imperativ programmering. Föreläsning 2

Föreläsning 2 Programmeringsteknik och C DD1316

Enkla datatyper minne

Användarhandledning Version 1.2

Introduktionslaboration

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

Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)

Innehållsförteckning

SMD 134 Objektorienterad programmering

Objektorienterad programmering Föreläsning 4

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

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

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

Lektion 4. Datateknik A, Java I, 5 poäng

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

Introduktionslaboration

Översikt över Visual Basic

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.

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Planering Programmering grundkurs HI1024 HT data

Uttryck och villkor. Föreläsning 2

Språket Python - Del 1 Grundkurs i programmering med Python

Planering Programmering grundkurs HI1024 HT TIDAA

Föreläsning 4. Val, boolska värden, läsbarhet, osv

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.

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

JavaScript del 3 If, Operatorer och Confirm

Laboration 1. Utgåva 1 Gäller från

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

JAVAUTVECKLING LEKTION 4

DD1314 Programmeringsteknik

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

BASH. Bourne-Again SHell. Eric Elfving Institutionen för datavetenskap (IDA)

OOP Objekt-orienterad programmering

C++ Lektion Tecken och teckenfält

Loopar och datatyper. Föreläsning 3

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

Loopar och datatyper. Föreläsning 3

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

"if"-satsen. Inledande programmering med C# (1DV402)

Funktionens deklaration

Beräkningsvetenskap föreläsning 2

TDIU01 Programmering i C++

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2

Transkript:

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

Litteraler Litteraler är värden som skrivs direkt i källkoden. Litteraler konverteras till inbyggda typer med regler givna i språket. Litteral Typ Värde 1 int 1 0x1b int 27 Exempel: 1.2 double 1.2 1.2e2 double 120.0 c char c "c" string "c" "kalle" string "kalle" Sista exemplen är inte helt rätt, egentligen får man en char *. Återkommer till detta senare i kursen.

Operatorer Aritmetiska operatorer C++ har de vanligaste matematiska operatorerna inbyggt: +,-,*,/ utför normalt sett det man väntar sig... Beräkningsordning precis som i matematiken, kan ändras med parenteser. Det finns ett undantag från första punkten, heltalsdivision! Matematiskt: a b = c + d b C++: a b = c a%b = d Två heltal (int) dividerade ger ett heltal (hur många gånger kan jag dela a med b?) För att få resten används modulus (vanligtvis kallat mod), i C++ används operatorn %.

Operatorer Sammansatt tilldelning Man kan modifiera en variabel med sammansatt tilldelning x += 3 ökar x med tre. Kan såklart även skrivas x = x + 3 Fungerar för alla aritmetiska operatorer (och några fler)

Operatorer Stegning En vanlig operation är att öka eller minska en variabel med värdet 1 Därför finns det operatorer för just detta: ++ och -- Finns i prefix- (++x) och postfix-versioner (x++) Båda ökar värdet med 1, varför finns det två?

Operatorer Prefix stegning Prefix stegning är den som används oftast Ökar värdet och resultatet är det nya värdet int x {1}; cout << x << endl ; cout << ++x << endl ; cout << x << endl ; 1 2 2

Operatorer Postfix stegning Ökar värdet och resultatet är det gamla värdet. x++ motsvarar följande beräkning, resultatet är tmp: int tmp {x}; x = x + 1; int x {1}; cout << x << endl ; cout << x++ << endl ; cout << x << endl ; 1 1 2

Operatorer Jämförelseoperatorer Man vill ofta jämföra värden, då använder man jämförelseoperatorer Operator Betydelse == Likhet!= Olikhet < Mindre än > Större än >= Större eller lika <= Mindre eller lika Alla ger logiska värden som svar (bool, true eller false)

Operatorer Logiska operatorer Med hjälp av logiska operatorer kan man slå ihop logiska värden (eller uttryck) Operator Betydelse && Logiskt OCH Logiskt ELLER! Logiskt ICKE Beräkningsordning:! > && > (> tolkas som beräknas innan )

Strömoperatorer Det finns två strömoperatorer: << och >>. Utskriftsoperatorn << används för att skriva ut ett värde på en ström. Värdet kan vara konstant, till exempel en litteral. Inläsningoperatorn >> används för att hämta ett värde från en ström till en variabel. Vi har tagit upp två grundläggande strömmar, cin för inläsning och cout för utskrift. Vi kommer prata mer om strömmar senare i kursen. int x; cout << " Mata in ett tal : "; cin >> x;

Det vi pratat om hittills kallas uttryck Ett C++-program består av satser som körs i en sekvens Ett programs satser körs alltid i den ordning de står i källkoden Satser består av uttryck Satser avslutas alltid med ett semikolon

Deklarationer En variabel deklareras innan den kan användas. Ett namn får endast användas en gång i ett program. Vi får ett kompileringsfel om vi omdeklarerar en variabel. int x {3}; int x {4}; // Ger ett fel! x = 5; // korrekt double x {4.3}; // Fel!

Uttryckssatsen Uttryckssatsen är den enklaste formen av sats. Uttryck följt av ett semikolon. x ++; cout << x; 4;

Satsblock Man kan när man vill skapa ett nytt block. Block används för att gruppera satser som hör bra ihop. Görs med klammerparenteser ({... }) Deklarationer som görs i ett block gäller endast där. Blocket skapar ett eget område (scope) där variabler lever och dör. Ett block ses som en sats. int x {3}, y {5}; { int x {4}; // EJ fel, x skapas lokalt! int z; cout << x << << y; // skriver ut "4 5" } z = 6; // Fel, z finns inte här!

Villkor if ( uttryck ) sats else sats if-satsen: om sant, gör följande uttryck ska ge ett logiskt värde (bool) eller kunna konverteras enligt de vanliga reglerna. else: annars, gör detta else kan utelämnas

Villkor if ( uttryck ) { sats1 ; sats2 ;... } Ibland räcker inte en sats i villkoret, då kan man använda block! Detta är det vanliga skrivsättet, använd alltid block för att slippa problem.

Villkor if ( uttryck1 ) sats1 else if ( uttryck2 ) sats2 else sats3 Ibland vill man kontrollera flera villkor Byt ut else-grenens sats mot en ny if-sats! Väldigt vanlig operation - många språk har egna namn såsom elsif och elif Kan byggas på med valfritt antal else if

Villkor uttryck1 T sats1 F if ( uttryck1 ) sats1 else if ( uttryck2 ) sats2 else sats3 uttryck2 F sats3 T sats2

Uppräkning switch ( uttryck ) { case v1: sats1 case v2: sats2 default : sats3 } Ibland vill man kontrollera värdet på ett uttryck (ofta en variabel) Det går bra med if-satsen men switch-satsen är specialgjord för detta Om ett värde hittas utförs alla satser nedanför detta. Det kallas att man faller igenom övriga villkor.

Uppräkning switch ( uttryck ) { case v1: sats1 case v2: sats2 default : sats3 } uttryck == v1 F uttryck == v2 F sats3 T T sats1 sats2

Uppräkning switch ( uttryck ) { case v1: case v2: sats1 break ; case v3: sats2 break ; default : sats3 } För att utföra samma satser för flera värden har man flera case. Om man vill få switch-satsen att fungera mer som if, kan man använda sig av break.

Uppräkning switch ( uttryck ) { case v1: case v2: sats1 break ; case v3: sats2 break ; default : sats3 } uttryck == v1 uttryck == v2 F uttryck == v3 F sats3 T T sats1 sats2

Upprepning Ofta vill man upprepa kod C++ har tre upprepningssatser; while do... while for

Upprepning - while while ( uttryck ) { satser } while - den enklaste. Utför satser så länge uttryck är sant En förtestad upprepningssats

Upprepning - while while ( uttryck ) { satser } uttryck T satser F

Upprepning - do-while do { satser } while ( uttryck ); do-while - en eftertestad while-loop. Utför satser minst en gång.

Upprepning - do-while do { satser } while ( uttryck ); satser uttryck T F

Upprepning - for for ( init ; cond ; end ) { satser } for - En loop med inbyggd räknare. Utför init en gång, kör satser följt av end så länge cond är sant.

Upprepning - for init for ( init ; cond ; end ) { satser } end cond F T satser

Upprepning Vilken ska jag välja 1. Ska jag upprepa oändligt många gånger for (;;) 2. Vet jag hur många gånger det ska upprepas for 3. Ska jag utföra det minst en gång do-while 4. Annars Det som känns bäst... (ofta while)

Exempel

Skriv ut talen 1..5 int i {1}; while ( i <= 5 ) { cout << i << endl ; ++i; } int i {1}; do { cout << i << endl ; ++i; } while ( i <= 5 ); for ( int i {1}; i <= 5; ++i ) { cout << i << endl ; }

Räkna antal vita tecken Alla inläsningsoperationer ger ett resultat som kan tolkas som om det gick bra att läsa. Detta kan man utnyttja i en while-loop: # include <iostream > # include <cctype > using namespace std ; int main () { char c; int space {}; while ( cin. get (c) ) { if ( isspace (c) ) { ++ space ; } } cout << " Du matade in " << space << " vita tecken." }

cctype I inkluderingsfilen <cctype> finns teckenhanteringsfunktioner Samtliga tar emot ett tecken och ger 0 som svar vid falskt, nollskiljt vid sant. Endast garanterat att de fungerar som väntat för engelska tecken (ASCII) Namn Funktion isaplpha(c) c är ett alfabetiskt tecken isblank(c) c är ett vitt tecken (tab och mellanslag) isspace(c) isblank eller nyrad isdigit(c) c är ett numeriskt tecken isupper(c) c är en versal islower(c) c är en gemen

www.liu.se