Title | C++ zusammenfassung - Cheatsheet für Klausuren |
---|---|
Course | Programmieren 3 |
Institution | Technische Hochschule Ulm |
Pages | 2 |
File Size | 173.4 KB |
File Type | |
Total Downloads | 3 |
Total Views | 151 |
Cheatsheet für Klausuren...
C++ZUSAMMENFASSUNG ChristianForster,28.August2007 [email protected]
AUFBAUEINESPROGRAMMS #include #include Using namespace std; //stucts, functions, enums int main(void) { system(“pause”); return 0;
= || && == != !
grösser,grössergleich,kleiner “oder” “und” “gleichheit” “ungleich” “nicht”
EINGABE&AUSGABE
\n \t \”
VARIABELN
13 6 3 1 0
int a; int b = 10; float c = a*b – 0.5; CASTS
//Ausgabe //Eingabe
Zeilenende horizontaler Tabulator Anführungszeichen
UMRECHNUNGBINÄR–DEZIMAL
EINFACHEVARIABELN DEKLARIEREN
1 0 1 1
Dezimalzahldurch2teilenundRest notieren.Bitsvonuntennachoben lesen. Bsp:13=1101
ÄnderungeinerVariableineinenanderenTypen. double a = 1.5; b = int (a); b = (int) a;
int b; // b=1
Beiint a[ N];mussNa alsconst i nt N = 10; B N definn iertwerden. Eineconst intkannwä hrenddem Prog grammablaufnichtgeändertwerden. r EinArraybeg E inntimmerm ita[0]unde ndetmita[N‐ n 1 1]
Ü bergibtmaneinArrayeinee rFunktion,s si tdaswie“Caall Ü byReference”.DaasOriginal‐Arrraywirdverän n dert. ARR AYSUNDP OINTER BeiderDefinitionneinesArrayswirdSpeiche rplatzfüreinee bestimmteAnzah lObjektereseerviert.DieArr rayvariable zeigtaufdasersteeObjektdieseesSpeicherplatzes. a Daru umsindfolge ndeAusdrücke n e identisch:
int c[10]; int* pc; pc = c;
/ /Array definieren //Pointer definieren //Pointer zeigt auf Array
1001=1*23+0*22+0*21+0*20=8+0+0+1=9
pc[3] = 10; ↔ c [3]=1 0; ↔ * (p p c+3)=10;
KONTROLLSTRUKTUREN
Folge ndesgenerieertaucheinArraymitPlatzfür3Integer :
ErrmöglichenAuu fspaltungdessProgramms in Un nterprogramm m e.
Au ufbau:rückg gabewert funktionsn f name (a argument) {funktion n skörper} DeerRückgabew w ertistimmerrnur1Elemenntundkannvon beeliebigemTyp sein.Falls dieeFunktionkeineRückgabehat, void. s chreibtman c
DerFunkti onsnamedarf nichtmiteinee rZahlbeginnnen.
NureinWe rtalsRückgab b ewert.Workaa round:Struccts IN NITIALISIEREE N Mankanneine Funktiondekklarierenunderstspäter M e au usführen.
in nt dividie ren(int, int); CA ALLBYVALU U E WenneineFunktionaufgeruufenwird,war denbycall‐byy ‐ W value a dieArgum m enteaufden n Stackkopier t.
vo oid foo(inn t a) { a= 10; } ndere,bleibtsie Au uchwennich ainnerhalb derFunktionä d au usserhalbnoc hgleich.
IF if(a == 10) { b=15; } else b=10; oderkurz:a == 10 ? b=15 : b=10; eineweitereBedingungmit else if() { }
for(int i=1; iString float Kommazahlen32bit,Eingabe:3.0f double Kommazahlen64bit,Eingabe:3.0 short .. ..(int/double)mit16bit(ohne..‐>int) long .. ..mit32bit(Systemabhängig) unsigned .. ..mitnurpositiveZahlen bool Wahrheitswerte(true/1,false/0)
ARR R AYS
LOGISCHEKONSTRUKTE
mathematischeOperatoren ganzzahligerResteinerDivision15%6==3 x = x + i; ebenso *=, /=, -= =1.1*10‐5 erhöht/verkleinertium1
b=5;c=b++;→c=5,b=6verwende++bfürc=6,b=6
FürweiteremathematischeFunktionen: #include fabs(), sqrt(), exp(), log(), cos(), acos()
while(b < 20){ b++; }
oder
Varia belndirektm m itstructddeklarieren: struct point { … } p, q; //er setzt point p, q; Zuwe isung: p=q istgleichbe deutendmit d pp.x=q.x; p.y=q.y; p.c olor = q.color;
Au ufruf: foo(p p a);wennp aeinPointer istoder fo oo(&a); wennakeinPo interist.
Mannkannauc heinerFunkttioneinenderreferenzierten M n Po ointerüberge ben: vo oid foo(in n t a) { a= = 10; }
do { b--; } while(b != 15);
FUN KTIONENINNSTRUC TS
Au ufruf: foo(* * pa); Dasw w irktdannaberwiecall‐by ‐ value. a
DieK K onstruktor‐FunktionwirdbeiderGenerr ierungeines neue e nStructsaufgerufen.
REEKURSION
abbrechenmitbreak;ÜberspringendesRestsdes RumpfeszurnächstenAuswärtungmitcontinue;
struct Bar { Bar() { // Konstruktor };
SWITCH switch(a) { case 15: //a==15 cout A(ausASCIITabelle)
text[i] (int) text[i]
liestn‐1ZeichenvonderTastaturinstr[]undhängt“\0” an:void cin.getline(char str[], int n);
struct element { int key; list* next; };
DerZeigeramEndederListeisteinNull‐Pointer. myLastElement->next=0; NEUELISTE Pointer root istdasersteListenelement.
element* root = new element; root->key = 1; root->next = NULL; NEUERKNOTEN AMENDE RekursiveFunktion.DabeisollkeinneuerPointererstellt werdensonderndernvonrootausgegabenwerden.Darum *&call‐by‐reference.
POINTER
void add(element *&root, int value) { if(root == 0) { root = new element; root->key = value; root->next = NULL; } else add(root->next, value); }
EinPointerspeichertundzeigtaufeineAdresse.Wennan dieserAdresseeinObjektliegt,dannzeigtderPointerauf dasObjekt.
Funktionsaufruf: element* root = NULL; add(root,4);
ASCIITABELLE 65‐90: A‐Z 48‐57: 0‐9
97‐122: a‐z 32: SPACE
Dereferenzierungsoperator*:ZugriffaufInhaltder SpeicherzelleaufdiederPointerverweist.
Referenzierungsoperator&:ErmittlungderAdresseeiner Variable. int* pa = 0; int *pb; pb = NULL;
//Pointer der auf int //zeigen soll 0 (NULL) //setzen.
int a = 3; pa = &a;
//pa zeigt nun auf a
*pb = 3;
//FEHLER: pb zeigt auf 0
PointerundneuesObjekterzeugen:
double *pc = new double; int *pd = new int(3); //*pd=3 int *pe = new int[100]; //Ptr auf Array Löschen: delete pc, pd;
delete [] pe;
POINTERAUFSTRUCTS struct triple { int a,b,c; };
SuchenachElementmitkeyk.pistmeineLaufvariable.
p = root; while(p != NULL) { if(p->key == k) return p; p = p->next; }
//a in tp beschreiben //das selbe wie oben //Funktion in Struct
struct element { int key; element *left, *right; };
//Private Variabeln definieren int size;
EINFÜGEN
//Default Contructor Beispiel() { }
IterativeMethode.RückgabewertisteinPointer. element* search(element* root, int k) { element *p = root; while(p != 0) { if(p->key == k) return p; if(p->key > k) p = p->left; else p = p->right; } } Aufruf: element *x = search(root,2);
O‐NOTATION
pzeigtaufeinElementinderListe.NeuesElementmitKey khinterdemElementaufdaspzeigteinfügen: void insert(int k, element* p) { element *q = new element; q->key = k; q->next = p->next; p->next = q; }
for(int i=0; iright, k); } Aufruf: element *root = NULL; insert(root,2);
NEUERKNOTEN DAZWISCHEN
triple * tp = new struct triple; tp->a=10; (*tp).a=10; tp->getBeer();
LINEARESU CHE
class Beispiel { private:
Formal:lim ∞(ev.Bernoullibenutzen)
Oder:fwächstasymptotischmindestenssoschnellwieg, fallseseinc>0gibt,sodass IndiesemFallschreibtman Bsp: , 7 ist
lim lim ∞ →stimmtnicht
//Funktion deklarieren void foo(int x); //Destruktor zerstört die Klasse ~ Beispiel() { } }; AufrufenvonFunktionenundVariabelnderKlasse: Beispiel myClass; //Instanz der Klasse myClass.y=10; //Variable beschreiben myClass.sety(10); //Funktion aufrufen FunktionausserhalbderKlassedefinieren: void myClass::foo(int _x) {x = _x}; PointerinnerhalbKlasseaufrufen:HierPointeraufListe. myClass.myList = new element; myClass.myList->key=10; ÜBERLADENVONOPERATOREN a + bisteineKurzformfüra.operator+(b); oder operator+(a,b); DieFunktionoperator+()ineinerKlasseerlaubtesdem Operator+neueBedeutungzuzuweisen.Bsp:
Bruch Bruch::operator+(long summand) { } Aufruf: Bruch = Bruch.operator+(summand); Bruch = Bruch + summand; VERERBUNG class myClass : Beispiel { ... } DieKlassemyClass besitztalleElementederBasisklasse Beispiel plus dieneuenElemente....