2. Datentypen und Variablen I

Ähnliche Dokumente
Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Informatik I - Übung 2 Programmieren in Eclipse

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

Informatik I (D-ITET)

C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue

Ein paar Kleinigkeiten zum Einstieg

1 EINFÜHRUNG PROGRAMMAUFBAU IN C++

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

9. Funktionen Teil II

Strukturierte Programmierung und Funktionen

Angewandte Mathematik und Programmierung

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

Elementare Datentypen in C++

5. Abgeleitete Datentypen

5. Abgeleitete Datentypen

4. Verzweigungen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Informatik für Mathematiker und Physiker Woche 6. David Sommer

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

Einführung in die Programmierung Wintersemester 2008/09

Die erste C++ Funktion

Abgeleitete Datentypen

Programmierung und Angewandte Mathematik

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Objektorientierte Programmierung mit C Datentypen (Strukturtypen)! p.name = "Willibald Wusel";

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C

Crashkurs C++ Wiederholung

Grundlagen der Informatik 2. Typen

Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

8. Referenzen und Zeiger

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Überladen von Operatoren

Grundlagen der Informatik 5. Kontrollstrukturen II

7. Übung Informatik II - Objektorientierte Programmierung

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

Grundlagen der Informatik 4. Kontrollstrukturen I

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

9. Vektoren. (auch Felder/array)

Projekt 3 Variablen und Operatoren

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

Einführung in die Programmierung

Praxis der Programmierung

Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt).

1.4. Funktionen. Objektorientierte Programmierung mit C++

Auswahlen (Selektionen)

Funktionales C++ zum Ersten

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

1 pulsierender Speicher

Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente

Programmierkurs C++ Kapitel 6 Module Seite 1

Definition und Deklaration

Herzlich willkommen!

Einleitung Grundlagen Erweiterte Grundlagen Zusammenfassung Literatur. C: Funktionen. Philip Gawehn

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

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

Propädeutikum. Dipl.-Inf. Frank Güttler

Variablen, Konstanten und Datentypen

Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Funktionen: Rückgabewert

Systemnahe Programmierung in C (SPiC)

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces

Grundlagen der Informatik 8. Funktionen I

Algorithmen und Datenstrukturen

Repetitorium Programmieren I + II

C++ - Variablen: Gültigkeit - Sichtbarkeit

C++ - Einführung in die Programmiersprache Ein- und Ausgabe in die Konsole. Leibniz Universität IT Services Anja Aue

HSR Rapperswil 2001 Markus Rigling. Programmieren: Exceptions Auflage

Die Programmiersprache C

Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do

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

Propädeutikum. Dipl.-Inf. Frank Güttler M. Sc. Stephan Fischer

Funktionen in JavaScript

C++ - Funktionen und mehr -

Methoden und Wrapperklassen

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Hydroinformatik I: Klassen

Übungsstunde: Informatik 1 D-MAVT

Unterlagen. CPP-Uebungen-08/

Globale Variablen Diverses. Globale Variablen. Globale Variablen

2. Programmierung in C

Repetitorium Programmieren I + II

Programmier-Befehle - Woche 08

VORBEMERKUNGEN ZUM INFORMATIK-KURS : PROGRAMMIEREN MIT C++

Programmierung und Angewandte Mathematik

Java-Applikationen (Java-Programme)

C/C++-Programmierung

Einführung in die Programmierung mit C++

Programmiersprachen Einführung in C

Peter Prinz. Das Übungsbuch. CTestfragen und Aufgaben mit Lösungen

Grundlagen der Programmierung in C Funktionen

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Polymorphismus 179. Function.h. #include <string>

Klausur in Programmieren

Polymorphismus 44. Function.hpp. #include <string>

Transkript:

2. Datentypen und Variablen I Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Elemente eines C++ Programmes!Präprozessor #include!main()-funktion!ein- und Ausgabe mit cin und cout-objekten!deklaration und Verwendung von Variablen!Einfache C++-Funktionen

Copyright: M. Gross, ETHZ, 2003 2 Vorbemerkungen! C++ ist case-sensitive, d.h. Gross- und Kleinschreibung haben unterschiedliche Bedeutung! cout versus COUT! Kommentarzeilen beginnen mit // und beinhalten Anmerkungen des Programmierers! Sind von höchster Bedeutung für die Lesbarkeit von Code! Unterschied zu C:! Kommentare in /*...*/! Wir verwenden ausschliesslich C++ Syntax! C++ Quelldateien (source files) enden üblicherweise mit *.cpp

Copyright: M. Gross, ETHZ, 2003 3 Beispiel_1: myfirst.cpp // myfirst.cpp--displays a message #include <iostream> // a PREPROCESSOR directive using namespace std; // make standard defs visible int main() // heading summarizes // function { // start of function body cout << "Come up and C++ me some time."; // message cout << "\n"; // start a new line return 0; // terminate main() } // end of function body

Copyright: M. Gross, ETHZ, 2003 4 Elemente von myfirst.cpp! Präprozessor-Anweisung #include zur Einbindung weiterer Header-Files! Header files enthalten zusätzliche Deklarationen! Enden oft mit *.h! Nicht-standard, veraltet: #include <iostream.h>! using namespace macht bestimmte Definitionen für Progamm sichtbar (später)! cout ist C++ Objekt zur Ausgabe! entspricht printf() bei C-Programmen! Funktionskopf int main()! Funktionskörper begrenzt durch Klammern {}! Klammern {} bilden einen sogenannten Block! return Anweisung zum Beenden der Funktion

Copyright: M. Gross, ETHZ, 2003 5 Die main()-funktion! main() hat die generelle Form int main() { statements; return 0; }! Obiges Beispiel ist eine Funktions-Definition! Besteht aus Funktionskopf (function heading) und Funktionskörper (function body)! Funktionskörper besteht aus einem Block von Anweisungen (statements)! Eine C++-Anweisung ist eine abgeschlossene Instruktion! Muss mit einem Semikolon (;) enden! return Anweisung beendet die Funktion

Copyright: M. Gross, ETHZ, 2003 6 Funktionsaufruf! In C++ werden Funktionen aufgerufen (function call)! Der Funktionskopf bildet das Interface zur aufrufenden Funktion! Teil vor dem Funktionsnamen gibt den Rückgabetyp (return type) an! Heading von main() beschreibt Interface mit dem Betriebssystem! return 0 gibt Wert 0 an die aufrufende Funktion zurück - Rückgabewert

Copyright: M. Gross, ETHZ, 2003 7 Funktionsaufruf! main() heisst, dass die Funktion keine Werte von der aufrufenden Funktion übernimmt! main() hat also keine Argumente! Argumente dienen also zur Uebergabe von Information an die aufgerufene Funktion! int main(void) heisst, dass main einen Rückgabetyp int hat und keine Argumente besitzt! void sagt explizit aus, dass keine Argumente verwendet werden! dient der Lesbarkeit - Stilfrage! return 0 wird für main() angenommen, falls nicht explizit programmiert

Copyright: M. Gross, ETHZ, 2003 8 Besonderheit von main()! Main-Funktion muss in jedem C++ Programm vorliegen! Programmausführung beginnt immer in der Main- Funktion! Ausnahme z.b. sind dll-libraries unter Windows

Copyright: M. Gross, ETHZ, 2003 9 Zeichenausgabe! cout << "This is Info I"; zur Ausgabe der Zeichen in Anführungszeichen! Zeichensatz in " " ist ein String! Ein C++ String ist eine wohldefinierte Folge von Zeichen! Mehr später! cout ist ein vordefiniertes Objekt! Es kann viele verschiedene Datentypen darstellen! Hat ein einfaches Interface! cout gibt also einen Zeichenstrom (stream) aus! << Operator übergibt Daten an cout! Kann auch Bedeutung des bitweisen Links-Shift haben! << ist also überladen (overloaded) (mehrfache Bedeutung)

Copyright: M. Gross, ETHZ, 2003 10 \n Zeichen und Formate! \n ist ein Steuerzeichen zum Beginn einer neuen Zeile (newline character)! Kann beliebig innerhalb einer Ausgabe verwendet werden! << endl; als Alternative! Semikolon am Ende jeder Anweisung erfoderlich entspricht nicht dem Zeilenende!! Formate sind generell frei und vom individuellen Programmierstil abhängig! Sogenannte white space characters (space, tab, cr) zwischen Tokens! Tokens sind untrennbare Elemente einer Anweisung (z.b. Funktionsname! int ma in() im Gegensatz zu int main ( )

Copyright: M. Gross, ETHZ, 2003 11 Guter Stil ist...! Nur eine Anweisung pro Zeile! Klammern als Blockgrenzen immer in eigene Zeilen! Anweisungen im Block immer eingerückt durch Tab! Kein space zwischen Funktionsname und Argumentenliste! Mehr Stilhinweise folgen...

Copyright: M. Gross, ETHZ, 2003 12 Beispiel_2: Variablen // fleas.cpp -- display the value of a variable #include <iostream> using namespace std; int main() { int fleas; Deklaration einer Variablen // declares an integer variable fleas = 38; // gives a value to the variable cout << "My cat has "; cout << fleas; // displays the value of fleas } cout << " fleas.\n"; return 0; Zuweisung eines Wertes Ausgabe der Variablen

Copyright: M. Gross, ETHZ, 2003 13 Deklaration und Definition! int fleas; ist eine Deklaration (s-anweisung)! Deklarationen machen einen Namen für ein C++ Programm kenntlich! int fleas; ist auch eine Definition! Definitionen kreieren auch eine Entität, die für den Namen steht! Beispiel: Speicherplatz dazu reservieren! Bei einfachen C++ Variablen ist Deklaration = Definition! Bei komplexeren Datentypen und Funktionen kann Deklaration und Definition getrennt erfolgen

Copyright: M. Gross, ETHZ, 2003 14 Deklaration und Definition! int fleas; deklariert den Namen fleas vom Typ Integer und ordnet entsprechend Speicher zu! Speichergrösse hängt von der jeweiligen Implementation ab! Einfache Variablendefinition besteht aus 3 Teilen:! <type> <name>;! C++ erlaubt die Variablendefinition (mit wenigen Restriktionen) an beliebigen Stellen im Programm! Guter Stil: So nah wie möglich an der Stelle, wo die Variable zum ersten Mal verwendet wird! Gültigkeitsbereich (scope) muss beachtet werden

Copyright: M. Gross, ETHZ, 2003 15 Zuweisungen! = ist der Zuweisungsoperator (assignment)! Kann in Serie angewandt werden int a; int b; int c; a = b = c = 1;! Zuweisungsoperatoren können beliebig überladen werden (später)

Copyright: M. Gross, ETHZ, 2003 16 Beispiel: Eingabe // yourcat.cpp -- input and output #include <iostream> using namespace std; int main() { int fleas; cout << "How many fleas does your cat have?\n"; cin >> fleas; // C++ input // next line concatenates output } cout << "Well, that's " << fleas << " fleas too many!\n"; return 0;! cin Objekt zur Dateneingabe an das Programm! cin liest Zeichenstrom von der Eingabe und weist Werte der Variablen zu! Typenumwandlung erfolgt implizit! << kann Ausgabe konkatenieren! << ist also überladen (overloaded) (mehrfache Bedeutung)! cin ist ein Objekt der Klasse istream! cout ist ein Objekt der Klasse ostream! Beide sind in iostream definiert

Copyright: M. Gross, ETHZ, 2003 17 Funktionen! Zwei Arten von Funktionen in C++! Funktionen mit Rückgabewert! Funktionen ohne Rückgabewert! Bei einem Funktionsaufruf springt das Programm zur Adresse der aufgerufenen Funktion und führt die dortigen Instruktionen aus! Programmfluss wird durch einen Sprung unterbrochen! Nach Beenden der Funktion wird zurückgesprungen! X = sqrt(6.35); beschreibt einen Funktionsaufruf (function call)! Uebergabewerte werden auch Argumente oder formale Parameter der Funktion genannt

Copyright: M. Gross, ETHZ, 2003 18 Funktionsaufruf Aufrufende Funktion Aufgerufene Funktion int main() {... 1... X = sqrt(6+25);... 5... } Funktionsaufruf 2 3 4 Rückkehr zur aufrufenden Funktion double sqrt() {............ return...; }

Copyright: M. Gross, ETHZ, 2003 19 Funktionsprototypen! Zur korrekten Typenprüfung muss der Compiler folgende Information haben! Anzahl und Typen der Argumente! Rückgabetyp! Beispiel: double sqrt(double)! Zu diesem Zweck dienen Funktionsprototypen! Für jede Funktion in einem C++ Programm sollte auch ein Prototyp vorhanden sein! Funktionsprototypen können! Explizit im Sourcecode eingefügt werden! Aus vorhandenen Headerfiles entnommen werden! double sqrt(double) finden wir in <cmath> oder <math.h>

Copyright: M. Gross, ETHZ, 2003 20 Beispiel_4: Funktionsprototypen // sqrt.cpp -- use a square root function #include <iostream> using namespace std; #include <cmath> // or <math.h> int main() { double cover; Präprozessor: include header file // use double for real numbers cout << "How many square feet of sheets do you have?\n"; cin >> cover; double side; // create another variable side = sqrt(cover); Funktionsaufruf // call function, assign return value } cout << "You can cover a square with sides of " << side; cout << " feet\nwith your sheets.\n"; return 0;

Copyright: M. Gross, ETHZ, 2003 21 Funktionsprototypen! Prototypen sind Funktionsdeklarationen! Funktionsdefinition erfolgt an anderer Stelle! Typischerweise in einem anderen File! Vorcompilierte Bibliotheken für mathematische Funktionen! Werden bei Compilation explizit eingebunden:! gcc o sqrt sqrt.cpp -lm! Funktionen können zur Initialisierung von Variablen verwendet werden! Beispiel: double side = sqrt(power);! Weglassen der Argumente bedeutet void! Beispiel: int foo(); entspricht int foo(void);

Copyright: M. Gross, ETHZ, 2003 22 Beispiel_5: Eigene Funktionen // ourfunc.cpp -- defining your own function #include <iostream> using namespace std; void simon(int); // function prototype for simon() int main() { simon(3); // call the simon() function } cout << "Pick an integer: "; int count; cin >> count; simon(count); // call it again return 0; void simon(int n) // define the simon() function { cout << "Simon says touch your toes " << n << " times.\n"; } // void functions don't need return statement! Explizite Deklaration der Funktion simon() durch Prototypen ausserhalb von main()! Definition der Funktion an getrennter Stelle ebenfalls ausserhalb von main()! Aufruf der Funktion innerhalb von main()! main() kennt die Funktion simon() aufgrund der Deklaration! Gültigkeitsbereich der Funktion ist global

Copyright: M. Gross, ETHZ, 2003 23 Funktionsdefinitionen! Allgemeine Form einer Funktionsdefinition Type Funktionsname(Argumentenliste) { Statements; }! Funktionsdefinitionen erfolgen hintereinander in einer Quelldatei! Bis auf main() können alle Funktionen im Programm aufgerufen werden! main() wird vom Betriebssystem aufgerufen! Return-Wert von main() wird auch Exit-Wert genannt! 0 bedeutet, dass das Programm korrekt beendet wurde