32
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ “Montag” Andreas Döring [email protected] SS 2004

Einführung in die Programmiersprache C/C++

Embed Size (px)

DESCRIPTION

Einführung in die Programmiersprache C/C++. “Montag” Andreas Döring [email protected] SS 2004. Organisation. Homepage: www.inf.fu-berlin.de/inst/agbio - PowerPoint PPT Presentation

Citation preview

Seminar: "Einführung in C/C++"

Einführung in die Programmiersprache C/C++

“Montag”

Andreas Dö[email protected]

SS 2004

Seminar: "Einführung in C/C++" 2

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 RechnerRaum 017 (Arnimallee 2-6)

Es gibt keine benoteten Scheine Fortsetzung der Veranstaltung:

“Hardcore C++” jeweils Freitag 10-12

Seminar: "Einführung in C/C++" 3

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.

Seminar: "Einführung in C/C++" 4

ÜberblickMo.: “Grundlagen”

Compiler-Workflow, Deklarationen, Operatoren, Anweisungen, Funktionen, ...

Di.: “Pointermagie”Zeiger, Referenzen, Felder, Speicherverwaltung

Mi.: “Klassen”Klassendefinition, Member, Vererbung

Do.: “Mehr Klassen”Operatoren, Polymorphie, Standardbibliotheken

Seminar: "Einführung in C/C++" 5

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)

Seminar: "Einführung in C/C++" 7

“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;}

Seminar: "Einführung in C/C++" 8

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

Seminar: "Einführung in C/C++" 9

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

Seminar: "Einführung in C/C++" 10

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)

Seminar: "Einführung in C/C++" 11

Deklarationen & DefinitionenDeklaration 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.

Seminar: "Einführung in C/C++" 12

VariablenVariablen 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;

Seminar: "Einführung in C/C++" 13

Gültigkeit von DeklarationenRegel 1:

»Ein Symbol ist im Programmtext nurunterhalb seiner Deklaration bekannt.«

Regel 2: »Eine Deklaration, die innerhalb eines{ } -Blockes steht, gilt auch nur lokal innerhalb dieses Blockes.«

Seminar: "Einführung in C/C++" 14

“Eingebaute” TypenJede Variable kann nur Werte eines

bestimmten Typs speichern.

char: Zahlen von 0 bis 255signed char: Zahlen von -128 bis 127short int: Zahlen von -32768 bis 32767unsigned short int: Zahlen von 0 bis 65535int: Zahlen von -231 bis 231-1unsigned int: Zahlen von 0 bis 232-1bool: 0 oder 1

Seminar: "Einführung in C/C++" 15

weitere “eingebaute” TypenTypen zur Speicherung von Kommazahlen:

float: Fließkommazahl mit einfacher

Genauigkeitdouble: Fließkommazahl mit

doppelter Genauigkeit

Seminar: "Einführung in C/C++" 16

... und was ist mit Buchstaben?Buchstaben sind ganze Zahlen:

'A' == 65 einfache Anführungszeichenfür einzelne Zeichen:ASCII-Code

Auch Wahrheitswerte sind Zahlen:true == 1 (und alle anderen Zahlen 0)false == 0

(Zeichenketten sind allerdings komplizierter...)

Seminar: "Einführung in C/C++" 17

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 maninitialisieren.

int X[]={1,2,3,4}; Bei initialisierten Feldern kann man sichdie Dimension sparen.

Seminar: "Einführung in C/C++" 18

Strings sind FelderIn 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!

Seminar: "Einführung in C/C++" 19

Zeiger (pointers)Zeiger sind Variablen, deren Inhalt auf andere

Variablen verweist.

int * X; Zeiger auf eine int Variablefloat * Y; Zeiger auf eine flaot Variable

Seminar: "Einführung in C/C++" 20

kleine LesehilfeFaustregel:

Bsp:char * X1 [3]; array von pointernchar (* X2) [3]; pointer auf arrayint X3 [10][3]; array von arraysint * const X4; const pointer

auf intint const * X5; pointer auf

const int

»Variablendefinitionen liest man von innen nach

außen.«

Seminar: "Einführung in C/C++" 21

CastsEinige 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

Seminar: "Einführung in C/C++" 22

ZuweisungenVariablen kann man Werte zuweisen:

1. Durch die Initialisierung2. Durch eine Zuweisung

Bsp:int x = 12; // initialisiert x auf 12x = 13; // setzt den Wert auf 13int y = x + 1; // initialisiert y auf 14

Allgemein:L-VALUE = R-VALUE;

Seminar: "Einführung in C/C++" 23

OperatorenEs 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

Seminar: "Einführung in C/C++" 24

...noch mehr OperatorenIncrement 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;...

Seminar: "Einführung in C/C++" 25

AnweisungenEs gibt (unter anderem) folgende

Anweisungen:

if und else while und do for switch-case

Seminar: "Einführung in C/C++" 26

if und else

if (TEST){IFBLOCK

}else{ELSEBLOCK

}

Seminar: "Einführung in C/C++" 27

while

while (TEST)

{

BLOCK

}

Seminar: "Einführung in C/C++" 28

do-while

do

{

BLOCK

} while (TEST);

Seminar: "Einführung in C/C++" 29

for

for (INIT;TEST;STEP)

{

BLOCK

}

Seminar: "Einführung in C/C++" 30

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

}

Seminar: "Einführung in C/C++" 31

Quiz: Was gibt diese Programm aus?

int i = 14;

for (i = 0; i < 10; ++i);

{

std::cout << i;

}

Seminar: "Einführung in C/C++" 32

FunktionenDefinition:

Deklaration:

int max (int x, int y)

{

if (x > y)

{

return x;

}

return y;

}

int max (int x, int y);

Seminar: "Einführung in C/C++" 33

...nochmal FunktionenFunktionen ohne Rückgabewert:

Funktionsaufruf:

Argumente werden by value übergeben.

void print (int x)

{

std::cout << x;

}

int y = max(1, 2);

print (y);