C/C++ Programmierung



Ähnliche Dokumente
Übersicht Programmablaufsteuerung

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Erwin Grüner

Fallunterscheidung: if-statement

Dr. Monika Meiler. Inhalt

Einführung in die Programmierung

Kontrollstrukturen, Strukturierte Programmierung

Einführung in die Programmierung

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java-Programmierung mit NetBeans

5. Tutorium zu Programmieren

Projektverwaltung Problem Lösung: Modulare Programmierung

Dr. Monika Meiler. Inhalt

Die Programmiersprache C99: Zusammenfassung

Entwurf von Algorithmen - Kontrollstrukturen

Programmierung in C. Grundlagen. Stefan Kallerhoff

Modellierung und Programmierung 1

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Tutorium Rechnerorganisation

Einführung in die C++ Programmierung für Ingenieure

Angewandte Mathematik und Programmierung

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

25 kann ohne Rest durch 5 geteilt werden! ist wahr

Programmierkurs Java

Einführung in die Programmierung

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Zur drittletzten Zeile scrollen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Einführung in die C-Programmierung

Excel Funktionen durch eigene Funktionen erweitern.

Klausur in Programmieren

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Gierhardt. 1 import javakara. JavaKaraProgram ; 3 public class Playit1 extends JavaKaraProgram. 4 { // Anfang von Playit1. 6 void gehezumbaum ( ) 7 {

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Kontrollstrukturen und Funktionen in C

Sin-Funktion vgl. Cos-Funktion

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Grundlagen der Theoretischen Informatik, SoSe 2008

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Software Engineering Interaktionsdiagramme

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Grundlagen der Programmierung (Vorlesung 14)

Kompaktkurs Einführung in die Programmierung. 4. Kontrollstrukturen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Graphic Coding. Klausur. 9. Februar Kurs A

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

7 Rechnen mit Polynomen

Hochschule München, FK 03 FA SS Ingenieurinformatik

2. Programmierung in C

Hinweise in Leichter Sprache zum Vertrag über das Betreute Wohnen

Tagesprogramm

1 Vom Problem zum Programm

Softwareentwicklung 1. Übungsaufgabe 4 Kontrollstrukturen

Softwarelösungen: Versuch 4

Kontrollstrukturen. Bedingter Ablauf: if. Bedingter Ablauf: if-else

Sudoku-Informatik oder wie man als Informatiker Logikrätsel löst

P r o g r a m m a b l a u f s t e u e r u n g

Wirtschaftsinformatik I

Stand: Adressnummern ändern Modulbeschreibung

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Informatik Grundlagen, WS04, Seminar 13

C/C++-Programmierung

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Java Kurs für Anfänger Einheit 5 Methoden

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Informatik Repetitorium SS Volker Jaedicke

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Mediator 9 - Lernprogramm

Statuten in leichter Sprache

Einführung in die Programmierung II. 3. Kontrollstrukturen

Überblick. Lineares Suchen

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Anleitung für die Version von online 1. Schritt: Rufen Sie die Website auf...

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Einfache Rechenstrukturen und Kontrollfluss II

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Objektorientierte Programmierung

Delegatesund Ereignisse

Übungsaufgaben Tilgungsrechnung

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

3. LINEARE GLEICHUNGSSYSTEME

1. Weniger Steuern zahlen

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Linux Prinzipien und Programmierung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Lehrer: Einschreibemethoden

Diana Lange. Generative Gestaltung Operatoren

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

XML-Namensräume. Marc Monecke

Transkript:

1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010

2 Anweisungen (Statements) 6.8 statement : labeled - statement compound - statement expression - statement selection - statement iteration - statement jump - statement

3 Ausdrucksansweisung 6.8.3 expression - statement : expression? ; Beliebiger Ausdruck gefolgt von Semikolon Ohne den optionalen Ausdruck: Nullanweisung Wird benötigt, wenn Grammatik eine Anweisung verlangt, aber man dort nichts ausführen möchte Falle: Kann auch zu schwer auffindbaren Fehlern führen; besser verwenden (gleich) x = x + 1; ++x; f(x); 42; // Huch? if (x < 0); // Autsch! x = 0;

4 if-anweisung 6.8.4.1 selection - statement : if ( expression ) statement -1 if ( expression ) statement -1 else statement -2 Wenn expression!= 0, dann führe statement-1 aus Ansonsten führe statement-2 aus (falls vorhanden) Falle: if (defcon = 1) launch_nuclear_missiles(); weist 1 an defcon zu beginnt einen Atomkrieg, da 1!= 0; kein Vergleich von defcon mit 1 Achtung: else gehört zum lexikalisch nächstmöglichen if

5 Baumelndes else (Dangling else) if (a) if (b) printf ("a und b\n"); else printf ("a und nicht b!\n"); Falle: else gehört zum zweiten if, auch wenn die Einrückung anderes suggeriert

6 Blockanweisung 6.8.2 compound - statement : block - item * block - item : declaration statement Gruppiert mehrere Anweisungen zu einer Anweisung Anweisungen werden der Reihe nach ausgeführt Unterscheidung zwischen Deklaration und Anweisung: So ist if (expr) int i; nicht erlaubt (jedoch in C++) if (expr) int i; ist erlaubt Vor C99: declaration* statement*

7 switch-anweisung 6.8.4.2 selection - statement : switch ( expression ) statement labeled - statement : case constant - expression : statement default : statement Berechne Wert von expression Springe zu entsprechender case-marke Werte der case-marken müssen ganzzahlige Konstanten sein Ansonsten springe zu default-marke (falls vorhanden) Verlassen des switch durch break-anweisung Achtung: Ansonsten durchfallen zum nächsten Fall! Ist flexibler als in anderen Sprachen, man kann damit wilde Dinge treiben, z.b. Duff s Device

8 Beispiel: switch switch (x) case 0: printf (" keiner \n"); break ; case 1: printf (" einer \n"); break ; case 2: printf (" zwei \n"); break ; default : printf (" viele \n"); break ; switch ( x) // dasselbe nochmal, aber kompakter default : printf (" viele \ n"); break ; // Position egal case 0: printf (" keiner \n"); break ; case 1: printf (" einer \n"); break ; case 2: printf (" zwei \n"); break ;

9 Schleifen: while, do-while 6.8.5.1+2 iteration - statement : while ( expression ) statement do statement while ( expression ) ; Solange expression!= 0 führe statement aus Bei do-while wird statement zuerst mindestens einmal ausgeführt Falle: Vergessenes do ist wieder syntaktisch gültiges Programm do something (i); while (i *= 2, --n!= 0); // oder in einer Zeile : do something (i); while (i *= 2, --n!= 0);

10 Schleifen: for 6.8.5.3 iteration - statement : for ( expression -1? ; expression -2? ; expression -3? ) statement for ( declaration expression -2? ; expression -3? ) statement Werte zuerst einmal expression-1 aus (falls vorhanden) Solange expression-2!= 0 (oder nicht vorhanden), führe statement aus Außer beim ersten Durchlauf wird expression-3 vor expression-2 ausgewertet. Zweite Variante ab C99 und C++ So deklarierte Variablen nur innerhalb der Schleife gültig // Typischer Anwendungsfall for ( int i = 0; i!= 10; ++i) /*... */

11 Sprunganweisungen: break, continue 6.8.6.2+3 jump - statement : continue ; break ; Beziehen sich ausschließlich auf direkt umgebende Schleife oder switch break verlässt diese sofort continue fährt mit nächster Schleifenitertion fort while und do: Sprung zur Bedingung for: Sprung zu expression-3, dann Bedingung for ( int i = 0; i!= n; ++ i) if (! good (i)) continue ; if (! nice (i)) continue ; if ( bad (i)) break ; return i; return -1;

Sprunganweisungen: while statt for 1 The for statement has the form for ( expression -1? ; expression -2? ; expression -3? ) statement This statement is equivalent to expression -1 ; while ( expression -3) statement expression -3 ; 1 Aus The C Programming Language, Abschnitt 9.6 12

Sprunganweisungen: while statt for 1 The for statement has the form for ( expression -1? ; expression -2? ; expression -3? ) statement This statement is equivalent to expression -1 ; while ( expression -3) statement expression -3 ; Falsch: continue als statement expression-3 wird nicht ausgeführt! 1 Aus The C Programming Language, Abschnitt 9.6 12

13 Sprunganweisungen: return 6.8.6.4 jump - statement : return expression? ; Verlässt die umschließenden Funktion sofort Keine expression bei void-funktion Sonst expression mit zum Rückgabetyp der Funktion passenden Typ Kann an beliebigen Stellen und beliebig oft in einer Funktion verwendet werden Falle: C erzwingt nicht das Vorhandensein, dann ist der Rückgabewert undefiniert (Übersetzer warnen heutzutage)

14 Sprunganweisungen: goto 6.8.6.1 jump - statement : goto identifier ; labeled - statement : identifer : statement Führt Ausführung bei angegebener Sprungmarke fort Nur Sprünge innerhalb der umschließenden Funktion möglich Sprungmarke muss in umschließender Funktion eindeutig sein Damit kann mehrstufiges break/continue realisiert werden Schleifen mit mehreren Eingängen möglich (auch mit switch) Oft genügt break, continue, return Manchmal ist goto aber das Mittel der Wahl Häufige Verwendung: Fehlerbehandlung und Resourcenfreigabe

Beispiel: goto, Resourcenfreigabe int allocate ( void ) if (! allocate_a ()) return -1; if (! allocate_b ()) free_a (); return -1; if (! allocate_c ()) free_b (); free_a (); return -1; /* do things */ return 0; Schreibaufwand O(n 2 ), fehleranfällig 15

16 Beispiel: goto, Resourcenfreigabe int allocate ( void ) if ( allocate_a ()) if ( allocate_b ()) if ( allocate_c ()) /* do things */ return 0; free_b (); free_a (); return -1; Viele Einrückungen

17 Beispiel: goto, Resourcenfreigabe int allocate ( void ) if (! allocate_ a ()) goto out_a ; if (! allocate_ b ()) goto out_b ; if (! allocate_ c ()) goto out_c ; /* do things */ return 0; /* error handling */ out_c : free_b (); out_b : free_a (); out_a : return -1;