Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Lennart Frei Geändert vor über 7 Jahren
1
ESP Tutorium Studienassistent: Ewald Moitzi E-Mail: prog-tutor-ewald@iicm.tugraz.at Gruppe 1
2
Plan für Heute Datentypen Abfragen, Schleifen Fehlerquellen Fehlersuche
3
Datentypen
4
Operatoren a = (b + c) * (d % e);
5
Funktionen functionName (,, …) { … }
6
printf printf (, param1, param2,..); Formatstring Text + Platzhalter für Variablen %[width][.precision]f width: Mindestlänge precision: Anzahl Kommastellen
7
Abfragen if ( ) { … } else //optional { }
8
Abfragen switch ( ) { case : case : …; break; … default: break; }
9
condition if (( a == b) && (c <= d))
10
Schleifen Wiederholen bis/solange Bedingung erfüllt 3 Typen Zähler (for) Kopfgesteuert (while) Fußgesteuert (do - while)
11
for-Schleife for ( ; ; ) { … } Bsp: int count; for (count = 0; count < 10; count++)
12
(do -) while while ( ) {... } do {... } while ( );
13
Debugging Ablauf per printf-Ausgaben verfolgen IDE (zB eclipse) Debugger: gdb (Kommandozeile) Mit ”-g” kompilieren gdb cgdb wo vorhanden (nicht am pluto) Textgrafikfenster
14
gdb Befehle break, b Setzt einen Breakpoint (programm wird angehalten) break oder break run Startet das Programm step, s nächste Zeile, springt in Unterfunktionen next, n Nächste Zeile, springt über Funktionen
15
Gdb Befehle print Gibt den Wert der variable aus backtrace, bt Aufrufliste Durch wird der letzte Befehl wiederholt
16
Fehlerquellen sprechende variablen namen! (nicht h, b, i) Zuweisungsoperator bei Deklaration immer gleich Wert zuweisen int count = 5; //good kein == if (count = 5) Modulo vs. Real-Division vs. Integer-Division 7 % 3 = ? 7 / 3 = ? 7. / 3 = ?
17
Fehlerquellen Faustregel: bei arithmetischen Operationen bestimmen Operanden den Ergebnistyp (float, int) Pre- und Post-Increment a = count++; // zuweisen, erhöhen a = ++count; // erhöhen, zuweisen (++x == x++) - T/F?!
18
Fehlerquellen Short Circuit Evaluation: von links nach rechts wird so wenig wie möglich ausgewertet Möglichst keine Werte in If-Konstrukten verändern! int a = 1;... if (a == 1 || b++) //b won‘t get incremented
19
Fehlerquellen Klammern if (b == 2) { if (a == 3) formatHdd(); } else doNothing(); Switch/Case/Break switch(a) { case 1: playMusic(); case 2: stopMusic();...
20
Fehlerquellen Klammern if (b == 2) { if (a == 3) formatHdd(); } else doNothing(); Switch/Case/Break switch(a) { case 1: playMusic(); break; //very important case 2: stopMusic();...
21
Fehlerquellen Off-by-one Error int count; int int_array[5] = {1,2,3,4,5}; for (count = 0; count <= 5; count++) { printf(int_array[count]); } //zählt bis int_array[5], //obwohl int_array[4] das letzte Element ist //gibt kein Warning, schwer zu entdeckender //Fehler!
22
Links C-Referenz: www.cplusplus.comwww.cplusplus.com
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.