1 / 32

Einführung in die Programmiersprache C/C++

Einführung in die Programmiersprache C/C++. “Montag” Andreas Döring doering@inf.fu-berlin.de SS 2004. Organisation. Homepage: www.inf.fu-berlin.de/inst/agbio

Download Presentation

Einführung in die Programmiersprache C/C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ “Montag” Andreas Döring doering@inf.fu-berlin.de SS 2004

  2. Seminar: "Einführung in C/C++" Organisation • Homepage: www.inf.fu-berlin.de/inst/agbio • Vormittags: 10.00-12.00 Uhr Seminar Mo:  Raum 031  (Arnimallee 2-6) Di:  Raum 005  (Takustr. 9) Mi:  Raum 055  (Takustr.9) Do:  Raum 005  (Takustr.9) • Nachmittags: Übungen am Rechner Raum 017 (Arnimallee 2-6) • Es gibt keine benoteten Scheine • Fortsetzung der Veranstaltung:“Hardcore C++” jeweils Freitag 10-12

  3. Seminar: "Einführung in C/C++" Warum sind wir hier? Warum überhaupt C/C++? • C++ ist schnell. • C++ ist weit verbreitet. • C++ verfügt über viele Sprachkonstrukte. • C++ erlaubt „maschinennahes“ Programmieren. Ziel des Kurses • Die wichtigsten Sprachelemente lernen. • Einfache Programme in C++ schreiben. Eventuell werden gewisse grundlegende Programmierkenntnisse vorausgesetzt.

  4. Seminar: "Einführung in C/C++" Überblick Mo.: “Grundlagen”Compiler-Workflow, Deklarationen, Operatoren, Anweisungen, Funktionen, ... Di.: “Pointermagie” Zeiger, Referenzen, Felder, Speicherverwaltung Mi.: “Klassen” Klassendefinition, Member, Vererbung Do.: “Mehr Klassen”Operatoren, Polymorphie, Standardbibliotheken

  5. Seminar: "Einführung in C/C++" Die Geschichte von C/C++ Was man wissen muss: • C/C++ hat eine Geschichte! • C++ ist aus C entstanden und (weitgehend) abwärts-kompatibel. • Es gibt inzwischen einen Standard. • Es gibt noch keinen Compiler, der den Standard vollständig erfüllt (aber alle entwickeln sich in diese Richtung)

  6. Seminar: "Einführung in C/C++" “Hallo Berlin!” Ein einfaches C++-Programm: Speichern als test.cpp ab und compiliere mit: g++ test.cpp –o test Dann Programm ausführen mit: ./test • #include <iostream> • int main() • { • std::cout << "Hallo Berlin!"; • return 0; • }

  7. Seminar: "Einführung in C/C++" Der Workflow • Input: .cpp und .h Dateien. • Für jede .cpp Datei: • Preprocessor: Headerdateien (.h) einfügen. • Compiler: Erzeugt .obj Dateien. • Linker: • Erzeugt .exe Programm aus allen .obj Dateien. • Nimmt Stücke aus verwendeten Libraries. • Output: .exe Datei

  8. Seminar: "Einführung in C/C++" Der Preprocessor • Befehle für den Preprocessor beginnen mit #. • #include fügt eine Datei in den Quelltext ein.(z.B. eine Headerdatei) • #define definiert ein Macro: Das Schlüsselwort wird im ganzen Programm durch den angegebenen Text ersetzt. • #include <iostream> • #define PI 3.141596

  9. Seminar: "Einführung in C/C++" Ein C/C++-Programm ist ein Text • Quelltext ist case-sensitiv. • Preprocessor: Befehle enden mit Zeilenumbruch.Compiler: Zeilenumbruch ist whitespace. • Ausnahme: Kommentarezeilen beginnen mit // und enden mit dem nächsten Zeilenumbruch.Bsp: return 0; //gib eine 0 zurueck • Anweisungen enden mit einem ; -Zeichen.Kein ; steht jedoch... ... hinter Preprocessor-Befehlen ... hinter } -Zeichen (außer bei Klassen und Enums)

  10. Seminar: "Einführung in C/C++" Deklarationen & Definitionen Deklaration von X = Beschreibung, was X ist Definition von X = Deklaration von X + Erzeugung von X Anmerkung: Ein X darf beliebig oft deklariert, aber nur einmal definiert werden.

  11. Seminar: "Einführung in C/C++" Variablen Variablen definieren: int j; float x, y; Optional sind auch Initialisierungen möglich: int i = 32; float z = 2.781; char c = 'x'; Deklaration von Variablen mit extern: extern int i;

  12. Seminar: "Einführung in C/C++" Gültigkeit von Deklarationen Regel 1: »Ein Symbol ist im Programmtext nur unterhalb seiner Deklaration bekannt.« Regel 2: »Eine Deklaration, die innerhalb eines { } -Blockes steht, gilt auch nur lokal innerhalb dieses Blockes.«

  13. Seminar: "Einführung in C/C++" “Eingebaute” Typen Jede Variable kann nur Werte eines bestimmten Typs speichern. char: Zahlen von 0 bis 255 signedchar: Zahlen von -128 bis 127 shortint: Zahlen von -32768 bis 32767 unsignedshortint: Zahlen von 0 bis 65535 int: Zahlen von -231 bis 231-1 unsigned int: Zahlen von 0 bis 232-1 bool: 0 oder 1

  14. Seminar: "Einführung in C/C++" weitere “eingebaute” Typen Typen zur Speicherung von Kommazahlen: float: Fließkommazahl mit einfacher Genauigkeit double: Fließkommazahl mit doppelter Genauigkeit

  15. Seminar: "Einführung in C/C++" ... und was ist mit Buchstaben? Buchstaben sind ganze Zahlen: 'A' == 65  einfache Anführungszeichen für einzelne Zeichen: ASCII-Code Auch Wahrheitswerte sind Zahlen: true == 1 (und alle anderen Zahlen 0) false == 0 (Zeichenketten sind allerdings komplizierter...)

  16. Seminar: "Einführung in C/C++" Felder (arrays) Felder = Mehrere Variablen, die im Speicher direkt hintereinander liegen. int X[20]; Ein Feld von 20 int-Variablen int X[3]={2,3,5}; Auch Felder kann man initialisieren. int X[]={1,2,3,4}; Bei initialisierten Feldern kann man sich die Dimension sparen.

  17. Seminar: "Einführung in C/C++" Strings sind Felder In C sind Stings einfach Arrays von char: char X[] = "hallo"; ist das gleiche wie char X[] = {104, 97, 108, 108, 111, 0}; Man beachte die Null am Ende!

  18. Seminar: "Einführung in C/C++" Zeiger (pointers) Zeiger sind Variablen, deren Inhalt auf andere Variablen verweist. int * X; Zeiger auf eine int Variable float * Y; Zeiger auf eine flaot Variable

  19. Seminar: "Einführung in C/C++" kleine Lesehilfe Faustregel: Bsp: char * X1 [3]; array von pointern char (* X2) [3];  pointer auf array int X3 [10][3]; array von arrays int * const X4; const pointer auf int int const * X5; pointer auf const int »Variablendefinitionen liest man von innen nach außen.«

  20. Seminar: "Einführung in C/C++" Casts Einige Typen werden von C/C++ automatisch als ein anderer Typ interpretiert. Bsp: short s = 30000; int i = s;  Kein Problem. char c = s;  Fehler! Passt nicht! Ein Cast erzwingt eine Uminterpretation: char c = (char) s;  Geht jetzt: c enthält nun 30000 modulo 256

  21. Seminar: "Einführung in C/C++" Zuweisungen Variablen kann man Werte zuweisen: • Durch die Initialisierung • Durch eine Zuweisung Bsp: int x = 12; // initialisiert x auf 12 x = 13; // setzt den Wert auf 13 int y = x + 1; // initialisiert y auf 14 Allgemein: L-VALUE = R-VALUE;

  22. Seminar: "Einführung in C/C++" Operatoren Es gibt in C/C++ die üblichen Operatoren. Besonderheiten: • Test auf Gleichheit ist == (und nicht etwa =) • Test auf Ungleichheit ist != • & und | stehen für bitweise UND bzw. ODER,&& und || logisches UND bzw. ODER sind • ~ steht für bitweises NOT,! steht für logisches NOT

  23. Seminar: "Einführung in C/C++" ...noch mehr Operatoren Increment und Decrement: ++X;  X = X + 1; --X;  X = X - 1; Zuweisungsoperatoren: z.B: X += 20;  X = X + 20; X -= 12;  X = X - 12; X *= Y;  X = X * Y; X /= 2;  X = X / 12; X <<= 1;  X = X << 1; ...

  24. Seminar: "Einführung in C/C++" Anweisungen Es gibt (unter anderem) folgende Anweisungen: • if und else • while und do • for • switch-case

  25. Seminar: "Einführung in C/C++" if und else if (TEST) { IFBLOCK } else { ELSEBLOCK }

  26. Seminar: "Einführung in C/C++" while while (TEST) { BLOCK }

  27. Seminar: "Einführung in C/C++" do-while do { BLOCK } while (TEST);

  28. Seminar: "Einführung in C/C++" for for (INIT;TEST;STEP) { BLOCK }

  29. Seminar: "Einführung in C/C++" switch-case switch (X) { case 1: case 2: //Code für X==1 und X==2 break; case 3: //Code für X==3 break; default: //Code für alle anderen Werte von X }

  30. Seminar: "Einführung in C/C++" Quiz: Was gibt diese Programm aus? int i = 14; for (i = 0; i < 10; ++i); { std::cout << i; }

  31. Seminar: "Einführung in C/C++" Funktionen Definition: Deklaration: int max (int x, int y) { if (x > y) { return x; } return y; } int max (int x, int y);

  32. Seminar: "Einführung in C/C++" ...nochmal Funktionen Funktionen ohne Rückgabewert: Funktionsaufruf: Argumente werden by value übergeben. void print (int x) { std::cout << x; } int y = max(1, 2); print (y);

More Related