Informatik 1 ( ) D-MAVT F2010. Einführung C++ Yves Brise Übungsstunde 1

Ähnliche Dokumente
Informatik 1 ( ) D-MAVT F2011. Einführung C++ Yves Brise Übungsstunde 1

Das erste C++ Programm

Kurze Einführung in die Programmiersprache C++ und in Root

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

Kapitel 1: Einführung

C++ Teil 1. Sven Groß. 9. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 1 9. Apr / 19

Informatik I (D-MAVT)

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

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.

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Einführung in die Programmierung Wintersemester 2011/12

Hydroinformatik I: Hello World

Einführung in die C-Programmierung

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

Selber Programmieren

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

Elementare Datentypen in C++

Dr. Monika Meiler. Inhalt

Elementare Konzepte von

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

Grundlagen. Kapitel 1

C++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen

Programmieren für Physiker: C++

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

Programmieren 3 C++ Prof. Peter Sommerlad Fredy Ulmer

Objektorientiertes Programmieren für Ingenieure

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++

Quiz und Übungen. C++ Übung am 19. Mai 2016

Klausur in Programmieren

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Programmieren in Haskell Einführung

5. Elementare Befehle und Struktogramme

0. Einführung & Motivation

Codingstandard. Softwareentwicklung Praktikum Stand:

Grundlagen der Informatik - 6. Praktikum

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Grundlagen der Informatik I (Studiengang Medieninformatik)

Programmieren in C/C++ und MATLAB

Einführung in die Programmierung 1

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Programmieren in C / C++ Grundlagen C 2

Die Programmiersprache C

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Kapitel 3: Variablen

C++ Einführung. und Datenanalyse mit ROOT. Jörg Marks, Physikalisches Institut, INF 226

Programmierung mit C Zeiger

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Vorlesung 2: Programmieren mit C

Einführung in die Programmierung

Einstieg in die Informatik mit Java

Prinzipien der Softwareentwicklung S. Strahringer

Algorithmus: Kochrezept

Werkzeuge zur Programmentwicklung

Die Programmiersprache C Eine Einführung

Klausur in Programmieren

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

Angewandte Mathematik und Programmierung

Einheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Hello world. Sebastian Dyroff. 21. September 2009

Grundelemente der C++ Programmierung Pearson Education, Inc. All rights reserved.

Programmieren für Physiker: C++ SS 2016

Programmier-Befehle - Woche 10

Organisatorisches. Einführung in die Programmierung in C Hochschule Regensburg Universitätsstraße 31, Regensburg

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

L4. Erster Schritt zum Programmieren

Informatik I Übung, Woche 40

16. März 2016 artb5-v1.1

C++ - Eine Ubersicht fur Java-Programmierer

Operatoren und Ausdrücke

Repetitorium Informatik (Java)

Primitive Datentypen

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Welche Informatik-Kenntnisse bringen Sie mit?

Grundstruktur eines C-Programms

Erster Kontakt mit Java und Pseudocode

JAVA-Datentypen und deren Wertebereich

Grundlagen der Programmierung

Programmieren in C++ Überladen von Methoden und Operatoren

Angewandte Mathematik und Programmierung

Grundlagen der Programmierung

Zeiger, Arrays und Strings in C und C++

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

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

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

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

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Praktikumstermin B-07: make & Makefiles

Definition: Algorithmus

Deklarationen in C. Prof. Dr. Margarita Esponda

Installation und Inbetriebnahme von Microsoft Visual C Express

RO-Tutorien 3 / 6 / 12

Einführung in die Informatik I (autip)

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Einführung in die Programmierung mit VBA

Transkript:

Informatik 1 (251-0832-00) D-MAVT F2010 Einführung C++

Organisatorisches Yves Brise, ybrise@inf.ethz.ch, CAB G19.3 Homepages: http://www.inf.ethz.ch/personal/ybrise/data/teaching/ifmv/f10/ http://www.info1-mavt.inf.ethz.ch Übungsabgabe: Per Email bitte [IFMV10] <Name>, <Übung> ins Betreff Als Ausdruck in der Übungsstunde Keine compilierten Dateien! Nur.cpp,.C, o.ä. Punktevergabe: 1, 0.75, 0.5, 0.25 oder 0 Testat: 9 von 12 Punkten Bei Krankheit oder Militär werden 0.75 Punkte angerechnet

Disclaimer Die Referenz für den Prüfungsstoff sind Prof. Arbenz Folien. Diese Folien sind nur eine Dienstleisung. Zusätzliches Material auf diesen Folien ist nicht Prüfungsstoff. Fragen! Fragen! Fragen! In der Übungsstunde Vor der Übungsstunde (Wünsche für Stoff) Mitarbeit während der Übungsstunde, Schnellübungen Üben! Üben! Üben! Programmierfrust muss selbst erlebt werden.

Real Programmers vs. Quiche Eaters Real Programmer Quiche Eater Nikaus Wirth (*1934) ist intuitiver Programmierer (hat s im Blut und ist Autodidakt) kann in seiner Programmiersprache schon alles und lehnt andere Programmiersprachen deshalb ab kann und braucht keine Theorie Macht sich Gedanken über gutes Programmieren will mit seiner Programmiersprache gar nicht alles können, sondern nur das Richtige ist meist Akademiker

Real Programmers vs. Quiche Eaters Real Programmer Quiche Eater C++ Nikaus Wirth (*1934) Artikel von Ed Post, 1983, wurde zum Informatik-Klassiker Real Programmers don t use Pascal programmiert in C, Fortran oder Assembler Bekanntester CH-Informatiker 1968-1999 Professor an der ETH Entwickler der Programmiersprachen Pascal (1968), Modula-2 (1977) und Oberon (1986)

Syntax und Semantik Syntax Was ist ein C++ Programm? Ist es grammatikalisch korrekt? korrekt Die Tasse liebt ein Gebäude. Semantik Was bedeuted ein C++ Programm? Welchen Algorithmus realisiert es? fragwürdig

Die C++ Bibel 700+ seitiges Dokument Legt Syntax und Semantik von C++ fest Neuauflage schon verspätet (Rev 2003, TR 2006) schwierig zu lesen, kostenpflichtig vor allem für Compiler-Entwickler

Was ist mit Java? Java hat viele Vorteile: Strikt objektorientiert Läuft in einer sicheren Umgebung Ist sehr portabel Bound checking grosse Standardbibliothek Aber: Die echten Programmierer sind nicht zufrieden (Optimierung, Zugriff auf Systemresourcen). Zum Glück sind die Sprachen sehr ähnlich.

Register Machine / von Neumann Rechner Instruktionen sind für gewönlich sehr einfach (z.b. inc, add, mul, mov, jump) Sogenannte Assembly Sprachen sind plattformabhängig. Der Compiler muss für jede Plattform neu geschrieben werden.

Algorithmus vs. Programm أ,& -12 ا 0 -./" +, )*&" ا)'&ارز"! Abū ʿAbdallāh Muḥammad ibn Mūsā al-khwārizmī (ca. 780 - ca. 850), Begründer der Algebra und erster, der lineare Gleichungen systematisch löst. Programm Algorithmus Eine endliche Sequenz von Anweisungen zur Lösung einer bestimmten Aufgabe. Bsp: Quadratische Gleichung, Kochrezept Sollte im Idealfall einen Algorithmus in einer bestimmten Programmiersprache umsetzen, kann aber auch etwas sinnloses tun.

Datenstrukturen Felder Listen Bäume Zeiger (pointer) in C++ zeigen auf ein Objekt Datenstrukturen + Algorithmen = Programme Wirth (1975)

Der Compiler Quelltext:.cpp,.C Dateien Objektdateien:.o Programmdateien:.exe (Windows), keine Endung Quelltext:.cpp,.C Dateien

Ihr erstes C++ Programm #include <iostream> using namespace std; int main() { cout << "Hello World" << endl; return 0; }

Code::Blocks IDE Integrated Development Environment ist ein Programm, welches die Verwaltung der Quelldateien erleichtert, Software Projekte unterhält und das sogenannte Debugging ermöglicht. Eigentlich sind Programme nichts anderes als Textdateien. Code::Blocks fügt nur ein wenig mehr Komfort hinzu (aber auch Komplexität) http://www.codeblocks.org/ Windows: Stellt sicher, dass ihr alles installiert (g++)

Kommandozeile (UNIX) Textbasiertes Fenster zu den Innereien ihres Computers Siehe unix_intro.pdf Manuelles Compilieren von Programmen Aufrufen von Programmen Dateiverwaltung cd, ls, mv, cp, g++ Unter Windows: cmd.exe

C++ Identifier Definition Ein C++ identifier ist eine Sequenz von Zeichen, die aus den 52 Buchstaben a..z und A..Z, den zehn Ziffern 0..9 und den Unterstrich _ bestehen. Das erste Zeichen muss ein Buchstabe sein. Nicht als Variablennamen zugelassen Es gibt reservierte Namen in C++. Die Liste ist ziemlich lang (siehe Internet C++ keywords ). Z.B. if, for, while, do, int, bool, char, enum, new, void, break, naked,...

Schnellübung Welche der folgenden Zeichenketten sind gültige C++ identifier? a) identifier b) int c) x_i d) 4x e) A99_ f) _tmp g) T# h) x12 b Lösung: d) und f) beginnen nicht mit einem Buchstaben. g) enthält das Zeichen #. b) ist ein reserviertes Wort, aber an sich ein gültiger identifier. Alle anderen sind gültige identifier.

Kommentieren und Einrücken #include<iostream> int main() {std::cout<<"is a= positive? ";int a;std::cin>>a;if(a>=0){ std::cout<< Yes\n ;}else {std::cout<< No\n ;}return 0;} Dem Compiler ist es egal! Uns aber nicht! Faustregel: Der Inhalt von {...} wird eingerückt. #include<iostream> int main(){ std::cout << "Is a= positive? "; int a; std::cin >> a; if (a >= 0) { std::cout << Yes\n ; } else { std::cout << No\n ; } return 0; }

Kommentare in C++ #include<iostream> /* Program that reads a integer number a and outputs Yes if it is positive, and No if it is negative.*/ int main(){ std::cout << "Is a= positive? "; int a; // variable declaration std::cin >> a; // read number if (a >= 0) { // check positive std::cout << Yes\n ; // output } else { // a < 0 std::cout << No\n ; // output } return 0; // return statement } Blockkommentare Zeilenkommentare

Kommentare in C++ Jedes gute Programm hat Kommentare Werden vom Compiler ignoriert Dokumentieren, was das Programm macht. Ich wette mit jedem Anfänger-Programmierer, dass er mir in 12 Monaten nicht mehr erklären kann, was sein erstes kompliziertes (aber unkommentiertes) Programm macht.

Variablen in C++ Variablendefinition int a = 1; Typenbezeichnung Ende Befehl Variablenname Literal zur Initialisierung Zuweisungsoperator Literale sind konstante Werte von festen Typ.

Typen in C++ ganze Zahlen int a = 1; bool b = true; char c = a ; unsigned int u = 1u; float f = 1.5f; double d = 2.5; Wahrheitswerte Buchstaben natürliche Zahlen reelle Zahlen reelle Zahlen, immerhin bessere Genauigkeit als float Literale haben unterschiedliche Syntax!

Algebraische Operatoren Primarschule revisited! Die Operatoren sind Plus (+), Minus (-), Mal (*), Durch (/) und Modulo (%) Regel 1: Punkt (/,*,%) vor Strich (+,-) Bsp: 1+2*3 1+(2*3) Regel 3: Unär vor binär Bsp: -3*2 (-3)*2 Regel 2: Auswertung von links nach rechts Bsp: 1+2+3 (1+2)+3

Ausdrücke I Definition Ausdrücke sind zusammengesetzt aus Literalen, Operatoren und Ausdrücken. Bsp: 1+2/3%4 Ausdrücke haben einen Wert, einen Typ und einen Effekt. Kennen Sie schon! Bsp: Zuweisungsoperator (=) Dazu später mehr! a = 2;

Ausdrücke II Bei gemischten Ausdrücken wird automatisch zum allgemeineren Typ konvertiert. bool < int < float < double Bsp: 1+2.0f 1.0f+2.0f int nach float 3.0/0.5f 3.0/0.5 float nach double

Schnellübung Sind folgende Ausdrücke gültig? Falls ja, werten sie sie aus! Welchen Wert und Typ haben die Ausdrücke? Lösung: a) 1+(2*3) b) 7/3 c) 3.5+4 d) 4*3%2 e) (1 f) 1.0f*5/2 g) -2*3+4*5 a) 7 int b) 2 int c) 7.5 double d) 0 int e) ungültig f) 2.5 float g) 14 int

Ihr erstes C++ Programm #include <iostream> using namespace std; int main() { cout << "Hello World" << endl; return 0; } Die using Direktive Streams als Operatoren #include <iostream> int main() { std::cout << "Hello World" << std::endl; return 0; }

Eine Berechnung #include <iostream> int main() { std::cout << Eingabe von a...\n ; int a; std::cin >> a; Berechnet die achte Potenz von a } // computation int b = a * a; // b = a^2 b = b * b; // b = a^4 b = b * b; // b = a^8 std::cout << Resultat: ; std::cout << b << std::endl; return 0; Eingabe einer Zahl Verwendung von Eingabestream

Explizite Typenkonvertierung Sogenannte cast expressions, übliche Schreibweise: type(expr) Bsp: int(9.5+0.6) (double)2+1.5f (double)(7/3) Es wird abgerundet Wie unärer Operator Beide Klammern erlaubt Eigentlich besser: static_cast<int>(9.5+0.6)

Schnellübung Welchen Wert und Typ haben die Ausdrücke? Lösung: a) 1.0+(double)2*3 b) int(13.0/2) c) int(2.3)-float(3) d) 5/(float)2 e) float(5)/2 f) double((int)1.5) a) 7.0 double b) 6 int c) -1.0f float d) 2.5f float e) 2.5f float f) 1.0 double