Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.

Ähnliche Präsentationen


Präsentation zum Thema: "ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1."—  Präsentation transkript:

1 ESP Tutorium Studienassistent: Ewald Moitzi 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:


Herunterladen ppt "ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1."

Ähnliche Präsentationen


Google-Anzeigen