3 Grundstrukturen eines C++ Programms anhand eines Beispiels



Ähnliche Dokumente
3 Grundstrukturen eines C++ Programms anhand eines Beispiels

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Grundelemente von C++

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Angewandte Mathematik und Programmierung

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java vs. C++: Different by Design

Algorithmen zur Datenanalyse in C++

Unterlagen. CPP-Uebungen-08/

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

Vorkurs Informatik WiSe 16/17

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Einführung in die Programmierung Wintersemester 2011/12

Herzlich willkommen!

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Vorkurs Informatik WiSe 17/18

Projekt 3 Variablen und Operatoren

Kapitel 3: Lexikalische Syntax

Grundlagen der Informatik 2. Typen

Variablen, Konstanten und Datentypen

Hello World! Eine Einführung in das Programmieren Variablen

Einführung in die Programmierung

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Programmieren in C/C++ und MATLAB

SE2-6. Übung Johannes Bürdek

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

RO-Tutorien 15 und 16

4.2 Programmiersprache C

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

RO-Tutorien 3 / 6 / 12

Vorlesungsprüfung Programmiersprache 1

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Grundstruktur eines C-Programms

Einführung in die C-Programmierung

Programmierkurs C++ Variablen und Datentypen

4.2 Basisdatentypen und einfache Anweisungen

Repetitorium Programmieren I + II

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

JAVA-Datentypen und deren Wertebereich

3. Anweisungen und Kontrollstrukturen

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einstieg in die Informatik mit Java

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Einstieg in die Informatik mit Java

Elementare Datentypen in C++

Grundlagen der Modellierung und Programmierung, Übung

PIC16 Programmierung in HITECH-C

2 Programmieren in Java I noch ohne Nachbearbeitung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Objektorientierte Programmierung mit C++

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Kapitel 2. Einfache Beispielprogramme

Java: Eine kurze Einführung an Beispielen

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

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

Funktionales C++ zum Ersten

Einstieg in die Informatik mit Java

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Integer Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Einstieg in die Informatik mit Java

Kapitel 3: Variablen

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Grundlagen der Programmierung in C Basics

Einführung in die Programmierung

System.out.println("TEXT");

Algorithmen und Datenstrukturen

3. Java - Sprachkonstrukte I

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Transkript:

Grundstrukturen eines C++ Programms anhand eines Beispiels.1 Einige Grundbegriffe Mit Hilfe eines Programmes wird dem Computer mitgeteilt, wie er eine bestimmte Aufgabe bearbeiten soll. Es besteht im wesentlichen aus Objekten und Funktionen (bzw. Methoden). Unter Objekten kann man sich Datenstrukturen wie z.b. ganzzahlige Zahlen oder Zeichenketten vorstellen. In Funktionen werden die Objekte durch die Anwendung von Operatoren (z.b. Addition zweier ganzen Zahlen) manipuliert. Die Reihenfolge, in der Operationen durchgeführt werden sollen, wird mit Hilfe von Kontrollstrukturen definiert. C++ stellt eine Reihe von Objekten und Funktionen zur Verfügung. Sie können aber auch selbst definiert werden. Die aufgezählten Sprachelemente sollen zunächst anhand eines Beispiels eingeführt werden und in den folgenden Stunden vertieft werden. Beispiel 1: Umrechnung eines gegebenen Temperaturwertes T [ F ] in T [ C]: T [ C] = 5 (T [ F ] 2)/9 Formaler Ablauf: 1. Einlesen eines Temperaturwertes T [ F ] in ein Objekt vom Typ Zahl (z.b. über die Tastatur). 2. Berechnung der Temperatur T [ C].. Ausgabe der berechneten Temperatur (z.b. auf dem Bildschirm). Die formalen Regeln, mit denen Objekte und Funktionen codiert werden, bezeichnet man als Syntax. WS 2001/02 Programmierkurs C++ Seite 2 WS 2001/02 Programmierkurs C++ Seite 24.2 Das Hauptprogramm (die Funktion main) Einschub: Reservierte C++ Schlüsselwörter Jedes C++ Programm muß genau ein Hauptprogramm besitzen. Nach dem Programmstart wird zunächst der Code im Hauptprogramm ausgeführt. Das Programm stoppt, wenn dieses vollständig abgearbeitet ist. Formal gesehen ist auch das Hauptprogramm eine Funktion, d.h. ein in sich geschlossener Programmteil, der einen Namen trägt und von anderen Programmteilen aufgerufen werden kann. Eine Funktion besitzt einen Rückgabetyp. Das Hauptprogramm hat den Namen main und als Rückgabetyp eine ganze Zahl (int = integer). int ist ein reserviertes C++ Schlüsselwort. Das Schlüsselwort für die Wertrückgabe ist return. 1 / / FUNKTIONSKOPF 2 / / Rueckgabetyp Name ( P a r a m e t e r ) i n t main ( ) 4 { 5 / / Der e i g e n t l i c h e Code s t e h t i n g e s c h w e i f t e n 6 / / Klammern ( BLOCK) 7 8 return 0 ; / / J e d e r B e f e h l wird mit ; a b g e s c h l o s s e n 9 } 11 / / KOMMENTARE e r l e i c h t e r n d i e V e r s t a e n d l i c h k e i t!!! and continue if register typedef and_eq try default inline const public typeid asm delete int template typename auto do long short union bitand double mutable signed unsigned bitor for true namespace sizeof using while else new static virtual break enum not void goto static_cast case explicit not_eq protected struct volatile catch extern operator switch wchar_t char return or false bool class float or_eq friend this xor_compl const_cast dynamic_cast private throw xor_eq reinterpret_cast reservierte Zeichen:!"%&/()=?<>;:+ *# {}[]\,. @~ WS 2001/02 Programmierkurs C++ Seite 25 WS 2001/02 Programmierkurs C++ Seite 26

1. Einlesen eines Temperaturwertes T [ F ]: 6 i n t f a h r e n h e i t ; 7 8 / / l i e s d i e Zahl f a h r e n h e i t e i n 9 c i n > > f a h r e n h e i t ; 11 return 0 ; 12 } #include<iostream> Dieser Befehl bewirkt, daß dem Compiler Befehle zur Ein- und Ausgabe von Tastatur und auf dem Bildschirm bekannt gemacht werden. Dies geschieht durch Einfügen von Programmcode aus einer Datei iostream an der Stelle der Include Anweisung. int fahrenheit; Deklaration und Definition eines Objekts. Dem Compiler wird mitgeteilt, daß er Speicherplatz bereitstellen soll und den Namen fahrenheit innerhalb des Blockes {} kennt. int bezeichnet eine ganze Zahl. ; schließt die Anweisung ab. cin» fahrenheit; Eingabe (character in). Der Doppelpfeil zeigt hier an, daß das Objekt fahrenheit Daten von der Tastatur (Standardeingabe) aufnehmen soll. Einschub: selbstdefinierte Namen Selbstdefinierte Namen dürfen ausschließlich die Zeichen a-z, A-Z, 0-9 und _ enthalten. müssen mit einem Buchstaben oder _ beginnen. Letzteres sollte vermieden werden. dürfen nicht mit Schlüsselwörtern übereinstimmen. sind längenmäßig unbeschränkt. Zu lange oder zu kurze Namen sollten vermieden werden. sollten selbsterkärend sein. dürfen keine Leerzeichen enthalten. Groß- und Kleinschreibung C++ ist case-sensitive, d.h. Groß- und Kleinbuchstaben sind verschieden Zeichen fahrenheit ist nicht dasselbe wie FAHRENHEIT! WS 2001/02 Programmierkurs C++ Seite 27 WS 2001/02 Programmierkurs C++ Seite 28 2. Umrechnung von T [ F ]: 6 i n t f a h r e n h e i t, c e l s i u s ; 7 c i n > > f a h r e n h e i t ; 8 9 / / Umrechnung d e r Temperatur c e l s i u s = 5 ( f a h r e n h e i t 2 ) / 9 ; 11 12 return 0 ; 1 } Zu Zeile 9: Die Zahlen 5, 9, 2 werden als Objekte vom Typ int vom Compiler interpretiert. Von fahrenheit wird 2 subtrahiert (Operator -), das Ergebnis mit 5 multipliziert (Operator *) und dieses durch 9 dividiert (Operator /). Das Ergebnis jeder dieser Operationen ist ein neues Objekt vom Typ int. = stellt eine Zuweisung dar. Das Objekt auf der linken Seite (celsius) erhält das Ergebnis des Ausdruckes auf der rechten Seite. Vor der Zuweisung besitzt celsius einen willkürlichen Wert.. Ausgabe des Temperaturwertes T [ C]: 6 i n t f a h r e n h e i t, c e l s i u s ; 7 c i n > > f a h r e n h e i t ; 8 c e l s i u s = 5 ( f a h r e n h e i t 2 ) / 9 ; 9 / / Ausgabe d e r Zahl c e l s i u s 11 c o u t < < c e l s i u s < < e n d l ; 12 1 return 0 ; 14 } cout «celsius «endl; Ausgabe (character out). cout ist die Bildschirmausgabe (Standardausgabe). Alles rechts von «wird zur Ausgabe gesendet. Durch mehrfache Angabe von «können mehrere Ausgabeteile verkettet werden. Durch endl wird ein Zeilenumbruch ausgegeben. (Konstante) Zeichenketten werden duch "..." eingeschlossen Bsp.: cout «" Ergebnis: " «celsius «endl; WS 2001/02 Programmierkurs C++ Seite 29 WS 2001/02 Programmierkurs C++ Seite 0

. Hinzunahme einer weiteren Funktion Oft ist es sinnvoll, eine Folge von Anweisungen als separate Funktion zu definieren, die dann von anderen Programmteilen aufgerufen werden kann. Dadurch werden Programme übersichtlicher, die Fehlerbehandlung wird einfacher und einzelne Programmteile lassen sich wiederverwerten. Beispiel 2 (Abwandlung von Beispiel 1): Ändere Schritt 2: Berechnung der Temperatur T [ C] in einer Funktion ausserhalb des Hauptprogramms, die als Eingangsparameter T [ F ] erhält. Diese Funktion erhält als Objekt eine ganze Zahl (T [ F ]) und gibt eine ganze Zahl (T [ C]) zurück. 1 i n t f a h r e n h e i t 2 c e l s i u s ( i n t f ) 2 { i n t c e l s i u s ; 4 c e l s i u s = 5 ( f 2 ) / 9 ; 5 return c e l s i u s ; 6 } Neu: Die Funktion fahrenheit2celsius erhält einen Parameter f mit dem die Berechnung in Zeile 4 durchgeführt wird. Woher kennt das Hauptprogramm die neue Funktion? Wie mache ich sie ihm bekannt? Einschub: Deklaration und Definition Die Objekte, die in einem Programm manipuliert werden, müssen den Programmteilen, die dies tun, bekannt gemacht werden. Dazu gehören zwei Schritte: Objekte müssen deklariert werden, d.h. es wird ihnen ein symbolischer Name gegeben und ihnen ein Typ zugewiesen, der ihre Eigenschaften beschreibt. Der Compiler erlaubt nur deklarierte Variablen und nur Operationen, die mit dem Typ verträglich sind. Die Deklaration hat die Form Objektyp <Liste von Objektnamen mit, getrennt>; Zur Speicherung des variablen Inhalts der Objekte wird vom Compiler Speicher reserviert. Dies bezeichnet man auch als Definition. Gleiches gilt für Funktionen. Bisher geschah die Deklaration und Definition in unseren Beispielen immer gleichzeitig (z.b. int celsius;) Dies muß nicht so sein (vgl. folgendes Beispiel), so daß zwischen beidem unterschieden werden muß. WS 2001/02 Programmierkurs C++ Seite 1 WS 2001/02 Programmierkurs C++ Seite 2 4 / / D e k l a r a t i o n d e r F u n k t i o n 5 / / S i e e n t h a e l t den Rueckgabetyp und e i n e L i s t e d e r 6 / / P a r a m e t e r t y p e n, d i e uebergeben werden. 7 i n t f a h r e n h e i t 2 c e l s i u s ( i n t ) ; 8 9 i n t main ( ) { 11 / / D e k l a r a t i o n und D e f i n i t i o n d e r O b j e k t e 12 / / f a h r e n h e i t und c e l s i u s ( Typ i n t ) 1 i n t f a h r e n h e i t, c e l s i u s ; 14 15 cout < < " Geben Sie e i n e Temperatur " 16 << " i n F a h r e n h e i t e i n : " ; 17 c i n > > f a h r e n h e i t ; 18 19 / / Aufruf der Funktion u n t e r Uebergabe des Objekts 20 / / f a h r e n h e i t und Zuweisung des E r g e b n i s an c e l s i u s 21 c e l s i u s = f a h r e n h e i t 2 c e l s i u s ( f a h r e n h e i t ) ; 22 2 c o u t < < f a h r e n h e i t < < " Grad F a h r e n h e i t = " 24 << c e l s i u s < < " Grad C e l s i u s. " << e n d l ; 25 return 0 ; 26 } 27 28 / / D e f i n i t i o n d e r F u n k t i o n 29 i n t f a h r e n h e i t 2 c e l s i u s ( i n t f ) 0 { 1 / / D e k l a r a t i o n und D e f i n i t i o n des O b j e k t s c e l s i u s 2 i n t c e l s i u s ; 4 c e l s i u s = 5 ( f 2 ) / 9 ; 5 return c e l s i u s ; 6 } Einschub: Übersichtliche Programmgestaltung C++ Programme werden durch die Zeilenstruktur und Extra Leerzeichen nicht beeinflußt, aber durch Einfügen von Leerzeilen und Einrückungen kann die Lesbarkeit stark gesteigert werden, Kommentare steigern die Verständlichkeit des Programms! Vorschläge: Durch Leerzeilen sinnvoll gliedern. Nur ein Befehl je Zeile. Nach Eröffnung eines Blockes ({...}) um 2 Zeichen einrücken. Geht ein Befehl über mehrere Zeilen, die folgenden Zeilen einrücken. Nicht zu lange Zeilen schreiben. Aussreichend Kommentare einfügen. Sinngebende Namen verwenden. WS 2001/02 Programmierkurs C++ Seite WS 2001/02 Programmierkurs C++ Seite 4

.4 Hinzunahme einer Kontrollstruktur Kontrollstrukturen bieten die Möglichkeit, Programmteile nur bedingt oder mehrfach auszuführen. Beispiel : Ausgabe einer Umrechnungstabelle zwischen T [ F ] und T [ C]. Hierzu muß unsere Funktion fahrenheit2celsius mehrfach für unterschiedliche Temperaturen ausgewertet werden. Für unser Beispiel soll mit der while Schleife gearbeitet werden. Weitere Kontrollstrukturen später: Notation: while( Bedingung ) { Folge von Anweisungen } Ablauf der Schleife: Die Bedingung wird ausgewertet, und wenn sie wahr ist, wird die Folge von Anweisungen innerhalb des Blockes {...} abgearbeitet. Dieser Vorgang wird solange wiederholt, bis die Bedingung falsch wird. Bemerkungen zu while : Die Bedingung kann leer bleiben. Damit ist sie immer erfüllt. while(){...} ist daher eine Endlosschleife. Die Bedingung wird vor dem Schleifendurchlauf geprüft. while Schleifen können geschachtelt werden: 1 while ( Bedingung1 ) { 2... while ( Bedingung 2 ) { 4... 5 } 6 } Bemerkung zu Bedingung: Eine Bedingung kann erfüllt (true) oder nicht erfüllt (false) sein. Beispiele: 1 > 2 ist false (2+4) == 6 ist true (s. auch Vergleichs /Äquivalenzoperatoren) WS 2001/02 Programmierkurs C++ Seite 5 WS 2001/02 Programmierkurs C++ Seite 6 4 i n t f a h r e n h e i t 2 c e l s i u s ( i n t ) ; 5 6 i n t main ( ) 7 { 8 i n t f a h r e n h e i t, c e l s i u s ; 9 i n t lower, upper, s t e p ; 11 lower = 0 ; / / u n t e r e Grenze T a b e l l e 12 upper = 0 0 ; / / o b e r e Grenze T a b e l l e 1 s t e p = 2 0 ; / / S c h r i t t w e i t e 14 15 f a h r e n h e i t = lower ; / / I n i t i a l i s i e r u n g von f a h r e n h e i t 16 17 while ( f a h r e n h e i t < = upper ) { 18 c e l s i u s = f a h r e n h e i t 2 c e l s i u s ( f a h r e n h e i t ) ; 19 c o u t < < f a h r e n h e i t < < " Grad F a h r e n h e i t = " 20 << c e l s i u s < < " Grad C e l s i u s. " << e n d l ; 21 22 / / Erhoehung von f a h r e n h e i t um s t e p 2 f a h r e n h e i t + = s t e p ; 24 } 25 return 0 ; 26 } 27 28 i n t f a h r e n h e i t 2 c e l s i u s ( i n t f ) 29 { 0 i n t c e l s i u s ; 1 c e l s i u s = 5 ( f 2 ) / 9 ; 2 return c e l s i u s ; } Bemerkungen: Nach der Vereinbarung von fahrenheit (Z.8) besitzt das Objekt einen willkürlichen Wert. Erst nach der Initialisierung (Z. 15) besitzt es einen definierten Anfangswert (lower). Die while Schleife wird wiederholt, solange fahrenheit kleiner oder gleich upper ist (Operator <=). In Z. 2 wird fahrenheit um step erhöht. Die Operation fahrenheit += step; ist gleichbedeutend mit fahrenheit = fahrenheit + step;. Ohne dies wäre die Bedingung der while Schleife immer true, und das Programm würde die Schleife nicht mehr verlassen. WS 2001/02 Programmierkurs C++ Seite 7 WS 2001/02 Programmierkurs C++ Seite 8

4 Einfache Datentypen C++ stellt eine Reihe von Datentypen zur Verfügung. Ein einfacher Datentyp (int) wurde bereits verwendet, weitere werden jetzt eingeführt. 4.1 Ganzzahlige Datentypen Darstellung ganzer oder natürlicher Zahlen. Mit n Bits können entweder 2 n natürliche Zahlen von 0 bis 2 n 1 oder 2 n ganze Zahlen von 2 n 1 bis 2 n 1 1 dargestellt werden. Dabei ist n = 8, 16, 2, 64... Zum Typ int gibt es verschiedene Varianten: Mit short und long stehen neben int verschieden lange ganzzahlige Werte zur Verfügung. Über signed und unsigned kann gekennzeichnet werden, ob nur positive (incl. Null) Werte oder auch negative Werte angenommen werden können. Ohne Angabe wird eine Deklaration int vom Compiler als signed int interpretiert. Mindestgrößen der ganzzahligen Datentypen: Typ Bits Wertebereich char 8 128... 127 unsigned char 8 0... 255 short 16 2768... 2767 unsigned short 16 0... 6555 long 2 214748648... 214748647 unsigned long 2 0... 4294967295 Die Anzahl der Bits und Wertebereiche sind abhängig von der Maschienenarchitektur. Nach dem C++ Standard muß aber gelten: Bits(char) Bits(short) Bits(int) Bits(long) Der Typ int bzw. unsigned int stimmt je nach System mit den entsprechenden Typen short oder long überein. Bemerkung: 8 Bits = 1 Byte WS 2001/02 Programmierkurs C++ Seite 9 WS 2001/02 Programmierkurs C++ Seite 40 Einige Operatoren für ganze Zahlen Operator Beispiel Bedeutung * x * y Multiplikation / x / y Division + x + y Addition - x - y Subtraktion < x < y kleiner > x > y größer <= x <= y kleiner gleich >= x >= y größer gleich == x == y gleich!= x!= y ungleich = x = y Zuweisung += x += y x = x + y -= x -= y x = x - y Rangfolge: Arithmetische Operatoren (*/ vor +-) vor Vergleichsoperatoren vor Äquilvalenzoperatoren vor Zuweisungen. WS 2001/02 Programmierkurs C++ Seite 41