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

Relevanta dokument
Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

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

C++ - En introduktion

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

TDIU01 - Programmering i C++, grundkurs

C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories.

TDIU01 - Programmering i C++, grundkurs

TDDC76 - Programmering och Datastrukturer

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

Tecken & Strängar. Kapitel 7

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

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

TDIU01 - Programmering i C++, grundkurs

C++ Lektion Tecken och teckenfält

C++ - En introduktion

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

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

TDIU01 - Programmering i C++, grundkurs

F3 Datarepresentation teckenkodning och datakompression EDAA05 Datorer i system! Roger Henriksson!

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

F3 Datarepresentation teckenkodning och datakompression

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

Kap 4: Mer om char och stränghantering

TDIU01 - Programmering i C++, grundkurs

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

Tentamen EDAF30 Programmering i C++

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

Introduktionslaboration

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

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

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

TDDC76 - Programmering och Datastrukturer

Introduktion till programmering SMD180. Föreläsning 7: Strängar

TDDD78, TDDE30, 729A Tecken och strängar med och utan Java

Tentamen EDAF30 Programmering i C++

Tecken och strängar i Java

Tentamen i Datakunskap NT

TDDC76 - Programmering och Datastrukturer

Introduktionslaboration

TDIU01 - Programmering i C++, grundkurs

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

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

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

Innehåll. Heltalstyper. Heltalstyper. Heltalstyper Storlekarna specificeras i <climits>

F2 Datarepresentation talbaser, dataformat och teckenkodning

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

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

(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

Introduktion till programmering SMD180. Föreläsning 8: Listor

Innehåll. 1 Typer. 2 C-strängar. 3 union. 4 Bitoperationer. 5 Komma-operatorn. struct Foo; void print ( const Foo& f) } void print (int i)

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Föreläsning 11. Strängar

1 Funktioner och procedurell abstraktion

Innehåll. 1 volatile. 2 Kuriositeter. 3 Klasser och arv. 4 Råd och tumregler. 5 Mer om standard-containers. Trigraphs

Föreläsning 7 Strängar

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.

Användning av typeid. Operatorerna typeid och. Filen typeinfo.h måste inkluderas. typeid

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

Del6 Strömmar Ämnesområden denna föreläsning:

Tentamen EDAF30 Programmering i C++

Föreläsning 4: Filer och strömmar

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

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

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Tecken och strängar i Java

+LVWRULHQ. .XUVLQQHKnOO 2EMHNWRULHQWHUDGSURJUDPXWYHFNOLQJ ª 2EMHNWRULHQWHUDGDQDO\V ª 2EMHNWRULHQWHUDGGHVLJQ ª 2EMHNWRULHQWHUDGSURJUDPPHULQJ

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

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Programmering i C++ EDA623 Containerklasser och algoritmbibliotek. EDA623 (Föreläsning 10) HT / 33

Strängar. Elektronikcentrum i Svängsta AB

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

1 Språket C Valet av språket C++ för kompendiet. 1.2 Språket. 1.3 Att programmera. 1.4 Hello World Börja programmera

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

4. Standard-containers. Strömmar och filer

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

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 19.

Innehåll. Pekare Syntax

4 Sammansatta datatyper

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

Lektion 1 - Steg 1. Introduktion. Hello World

TDIU01 - Datortenta (DAT2)

6 In- och utmatning, strömmar

TDP005, Projekt: objektorienterade system

Objektorienterad Programmering (TDDC77)

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Datorlaborationer, Programmering i C++ (EDAF30)

Objektorienterad Programmering (TDDC77)

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

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

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

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.

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

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

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

Frågor TDP004. ExaminaBon. KursinformaBon. Tid i kursen. Tid i kursen Första chansen Bll frågor.

Föreläsning 3. Programmering, C och programmeringsmiljö

Instuderingsfrågor, del D

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Enkla datatyper minne

Transkript:

Programmering i C++ EDAF30 7.5 hp EDAF30 (Föreläsning 2) HT 2014 1 / 18

Tecken och texter char char ch = A ; teckenfält = strängar i C char str[] = "123"; standardklass i C++ string s = "C++"; EDAF30 (Föreläsning 2) HT 2014 2 / 18

Tecken 8-bitars tecken (ej 16-bitars som i Java) char c1, c2; c1 = A ; c2 = 106; // Samma som j cout << c1 << c2 <<! << endl; Två olika 8-bitars-tabeller ISO-8859-1 (Latin-1) (Se Appendix B) Windows code page 28591 (ISO-8859-1) (Latin-1) Windows code page 1252 (Windows Latin-1) 850 (IBM-ASCII): Används bara i DOS EDAF30 (Föreläsning 2) HT 2014 3 / 18

Tecken 16-bitars tecken wchar_t c1, c2; c1 = A ; c2 = 106; // Samma som j wcout << c1 << c2 <<! << endl; UTF8 Linux/Mac Ett tecken (t.ex. åäö) kan vara två eller flera byte EDAF30 (Föreläsning 2) HT 2014 4 / 18

Svenska tecken Ändra kodning i konsollfönstret #include <iostream> #include <cstdlib> using namespace std; int main() { system("chcp 1252 >nul 2>nul"); } char ch = 7 ; int code, val; code = ch; val = ch - 0 ; cout << "Siffran " << ch << " har koden " << code << " och värdet " << val << endl; EDAF30 (Föreläsning 2) HT 2014 5 / 18

Svenska tecken Översätt mellan program och konsoll #include <iostream> #include "iodos.h" using namespace std; int main() { dos_console(); } char ch = 7 ; int code, val; code = ch; val = ch - 0 ; cout << "Siffran " << ch << " har koden " << code << " och värdet " << val << endl; EDAF30 (Föreläsning 2) HT 2014 6 / 18

Specialtecken Escape-sekvenser (s. 71 i boken) \n (asciikod 10 = new line, line feed) \a (asciikod 7 = bell) \t (asciikod 9 = tab) \r (asciikod 13 = carriage return) \b (asciikod 8 = backspace) \nnn (tecken med asciikod nnn (oktalt)) \xnn (tecken med asciikod nn (hexadecimalt) \\ (backslash) \" (citationstecken) \ (apostrof) EDAF30 (Föreläsning 2) HT 2014 7 / 18

Teckenfält ("C-strängar") Lagring av teckenfält Fält bestående av char Avslutas alltid med tecknet \0 char namn[]= "Nils"; cout << namn[1] << namn[3]; //is EDAF30 (Föreläsning 2) HT 2014 8 / 18

Teckenhantering In- och utmatning av tecken cout << c cout.put(c) cin >> c cin.get(c) cin.peek() cin.ignore() // Skriver ut tecknet c // Skriver ut tecknet c // Läser in nästa icke-vita tecken till c // Läser in nästa tecken till c // Returnerar nästa tecken som förblir oläst // Läser nästa tecken men slänger det EDAF30 (Föreläsning 2) HT 2014 9 / 18

Inmatning Exempel 1 #include <iostream> using namespace std; int main(){ char namn[30]; cout << "Vad heter du? "; cin >> namn; cout << "Hej, " << namn << "!" << endl; } Vid körning: Vad Heter du? Lars Olof Persson Hej, Lars! Byt ut cin» namn mot cin.getline(namn,30). EDAF30 (Föreläsning 2) HT 2014 10 / 18

Inmatning Exempel 2 #include <iostream> using namespace std; // Kryptiskt program char kod[33]="qwertyuiopasdfghjklzxcvbnm012345"; int main() { char c; cout << "Avslutning sker med Ctrl-z" << endl; while (cin.get(c)) { cout << kod[c%32]; } cout << endl; } EDAF30 (Föreläsning 2) HT 2014 11 / 18

Inmatning Exempel 3 #include <iostream> using namespace std; int main() { string s; int tal = 0; cout << "Ange ett tal: "; cin >> s; for (char ch : s) { // C++11 tal = 10 * tal + ch - 0 ; } cout << "Talets värde: " << tal << endl; } EDAF30 (Föreläsning 2) HT 2014 12 / 18

Teckenfält Funktioner In- och utmatning av tecken #include <cstring> // Bibliotek att inkludera strcpy(s,t) strncpy(s,t,n) strcat(s,t) strncat(s,t,n) strlen(s) // Kopierar t till s // Variant med max n tecken // Lägger till t till slutet av s // Variant med max n tecken // Returnerar längden av s strcmp(s,t) // Jämför s och t strncmp(s,t,n) // Variant med max n tecken // s<t, s==t, s>t ger resp. <0, =0, >0 EDAF30 (Föreläsning 2) HT 2014 13 / 18

Initiering och tilldelning Initiering char s[4]="abc"; // ok char s[]="abc"; // ok char s[3]="abc"; // Inte ok (pga \0) Tilldelning s = "def"; //Felaktigt! s[0]= d ; s[1]= e ; s[2]= f ; // ok // Bättre variant: strcpy(s, "def"); // kräver #include <cstring> EDAF30 (Föreläsning 2) HT 2014 14 / 18

Standardklassen string Enklare hantering än med teckenfält #include <string> string s1("abc"), s2="def", s3; s3 = "ghij"; s3 = s1 + s2 + s3 + "klmnop"; s3 += "qrstuvwxyz"; EDAF30 (Föreläsning 2) HT 2014 15 / 18

Standardklassen string Operatorer på string #include <string> s = t; s.assign(t); s = s + " " + t; cout << s << t; cin >> s; getline(cin, s); s<t, s==t s[k] s.at(k) // Tilldelning // Tilldelning // Konkatenering // Utskrift // Inmatning av ord // Inmatning av hel rad // Jämförelse // Indexering, hämta eller sätta värdet // Indexering med indexkontroll EDAF30 (Föreläsning 2) HT 2014 16 / 18

Standardklassen string Funktioner (metoder) i string s.substr(k,n) s.erase(k,n) s.clear() s.size() s.append(t) s.insert(k,t) s.replace(k,m,t) s.find(t) EDAF30 (Föreläsning 2) HT 2014 17 / 18

Sekvenser i C++11 std::vector int fib[] {1,1,2,3,5,8,13,21}; vector<int> vfib(begin(fib), end(fib)); for (int i : vfib) {cout << i << " ";} cout << endl; vector<int> v2 {1,2,3}; char str[] = "Hello World!"; // kräver = vector<char> v3(begin(str), end(str)); std::array array<char,13> a1 {"Hello Again!"}; // extra {} for (char ch : a1) {cout << ch << " ";} cout << endl; EDAF30 (Föreläsning 2) HT 2014 18 / 18