Exercise 6. Compound Types and Control Flow. Informatik I für D-MAVT. M. Gross, ETH Zürich, 2017

Ähnliche Dokumente
Abgeleitete Datentypen

5. Abgeleitete Datentypen

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Informatik I (D-ITET)

Exercise 4. Logical Operators and Branching. Daniel Bogado Duffner - n.ethz.ch/~bodaniel. Informatik I für D-MAVT

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Dynamische Datentypen

Mul$media im Netz (Online Mul$media) Wintersemester 2014/15. Übung 02 (Nebenfach)

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

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

Grundlagen der Programmierung in C++ Kontrollstrukturen

Grundlagen der Informatik 5. Kontrollstrukturen II

Grundlagen der Informatik 12. Strukturen

Grundlagen der Informatik 2. Typen

RO-Tutorien 3 / 6 / 12

Grundlagen der Programmierung in C++ Kontrollstrukturen

Elementare Konzepte von

Algorithmen und Datenstrukturen II

Exercise 3. Data Types and Variables. Daniel Bogado Duffner - n.ethz.ch/~bodaniel. Informatik I für D-MAVT

RO-Tutorien 15 und 16

Grundlagen der Informatik 6. Arrays I

Data Structures. Christian Schumacher, Info1 D-MAVT Linked Lists Queues Stacks Exercise

Anhang A - Weitere Bibliotheken. Die Bibliothek Mail_02.lib ermöglicht das Versenden von s mit dem Ethernet-Controller

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

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

7.0 Arbeiten mit Objekten und Klassen

Modellierung und Programmierung 1

Visuelle Kryptographie. Anwendung von Zufallszahlen

Grundlagen der Informatik 4. Kontrollstrukturen I

Programmierkurs C++ Variablen und Datentypen

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

DAP2 Praktikum Blatt 1

Crashkurs C++ Wiederholung

Grundlagen der Programmierung in C++ Zusammengesetzte Typen

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

Algorithmen zur Datenanalyse in C++

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Konstruktor/Destruktor

Tutorium Rechnerorganisation

C-PROGRAMMIERUNG - STRUKTUREN. Marcel Lebek

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

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

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

GI Vektoren

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

Einführung in die Programmiersprache C

Einführung in die Programmierung Wintersemester 2011/12

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

Interface. So werden Interfaces gemacht

einlesen n > 0? Ausgabe Negative Zahl

19. STL Container Programmieren / Algorithmen und Datenstrukturen 2

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

C++11. neu in C++11: range-based for. Objektorientierte Programmierung mit C++ Ersetzung durch: 1. Elementares C++ int array[] = { 1, 2, 3, 4, 5 };

Initialisierung vs. Zuweisung:

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

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

Selbststudium OOP Programmieren 1 - H1103 Felix Rohrer

Grundlagen der OO- Programmierung in C#

Felder (Arrays) und Zeiger (Pointers) - Teil I

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

OOSE4 Testen mit BlueJ/JUnit 4

Einführung in die Programmierung für NF MI. Übung 04

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung

2 Teil 2: Nassi-Schneiderman

Schleifen in C/C++/Java

WS 2011/2012. Georg Sauthoff 1. November 11, 2011

Hello world. Sebastian Dyroff. 21. September 2009

Exercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Modellierung und Programmierung 1

Klausur Informatik WS 2012/13

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Der Datentyp String. Stringvariable und -vergleiche

Einstieg in die Informatik mit Java

Objektorientierte Programmierung mit C++ den sog. default constructor X (){}

Die Programmiersprache C. 2. Strukturen, Felder und Funktionen

Die Programmiersprache C. 2. Strukturen, Felder und Funktionen

Can I use an older device with a new GSD file? It is always the best to use the latest GSD file since this is downward compatible to older versions.

07 Funktionen (Teil I)

Unterlagen. CPP-Uebungen-08/

Microcontroller VU Exam 1 (Programming)

Einführung in die Programmierung

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

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 1

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 1

C/C++-Programmierung

1 RPC-Protokoll-Definitionssprache (Protocol Definition Language )

VDK-Informatik

C++ Kurs Teil 3. Standard Template Library (STL) Kommunikation mit der shell Hyper Text Markup Language (HTML)

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Einführung in die C-Programmierung

Kontrollstrukturen -- Schleifen und Wiederholungen

Arrays und Schleifen

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

Einführung in die Programmierung WS 2009/10. Übungsblatt 7: Imperative Programmierung, Parameterübergabe

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

Werkzeuge zur Programmentwicklung

Welche Informatik-Kenntnisse bringen Sie mit?

Transkript:

Exercise 6 Compound Types and Control Flow Daniel Bogado Duffner Slides auf: Informatik I für D-MAVT bodaniel@student.ethz.ch n.ethz.ch/~bodaniel

Agenda Recap/Quiz Structures Unions Enumerations Loops 2

Arrays Mit welcher Zahl beginnt der Index und mit welcher endet er allgemein? int e[3]; int zahl=e[3]; Fehler?! Was kann ein Array alles speichern? 1 2 3 4 5 6 7 //beginnt mit 0, endet mit Anzahl Elemente -1 //ja, aber kein Kompilierfehler //immer nur einen festen Typen, aber vor Definition alle e[3][4]=? e[1][3]=? e[0][4]=? 8 9 10 11 12 13 14 15 16 17 18 19 20 21 //n.d. //11 //5 3

Arrays Deklaration gültig? int blubb[]; int blubb[3]={1,2,3,4}; int blubb[]={1,2}; const int b; int blubb[b]; cin >> b; int blubb[b]; int blubb[2]={13,4}; int b=3; int blubb[b]; int[3][]; //nein, keine Grösse angegeben //nein, zu viele Elemente //ja //nope, da b nicht definiert ist, keine Zahl //ja //ja //ja, aber nicht immer, nicht const (Compiler abhängig) //Nein, geht nur umgekehrt: int[][3] 4

Arrays - Kurzübersicht Arrays sind 0 indexiert (Zählung fängt bei 0 an) Arrays können immer nur Ausdrücke von einem Typ (int, bool, ) speichern int test1[]; geht nicht. Grösse muss bei Compilezeit festliegen! int test2[][3]; geht, aber nicht umgekehrt (int t2[3][] od. int t3[][]) 5

Strings Welche library enthält string anweisungen? char name[]= hallo korrekt? Grossbuchstaben? String kopieren? String Länge? String anfügen? //<cstring> //nein, = hallo //string[0]=toupper(string[0]); //strcpy(string2,string); strcpy(hier wird es reinkopiert, das reinzukopierende); //strlen(string); //strcat(string2,string); 6

Structures are user-defined types Type definition: Variable declaration: Accessing members: Structures struct MyNewDataType { member_type1 member1; member_type2 member2;... }; MyNewDataType mynewdataobject; mynewdataobject.member1 =...; 7

Structures Definition Initialisation struct MyStruct{ int i; float f; }; MyStruct m1; MyStruct m2 = {1, 2.0f}; Assignment m1 = m2; // m1.i = m2.i; m1.f = m2.f; There can also be an struct array (array of struct type) 8

Type of member variables can be arbitrary Self-defined types can also be used Example: Structures: Nesting struct Date{ int day; int month; int year; }; No recursive nesting (no Date struct in Date) Recursive data types: later in course struct Person { Date birthday; string name; int age; }; 9

Definition: Initialisation: Values after initialization: Unions union MyUnion{ char c[4]; // On the same memory int i; // On the same memory }; MyUnion u1; u1.i = 1; c[3] c[2] c[1] c[0] i = 0x00000001 // c[0] == 1, c[1] == 0 // c[2] == 0, c[3] == 0 If they don t have the same size, the union takes the size of the biggest element. 10

Enumerations Definition: enum Months{January, February, March}; enum Months{January = 1, February, March}; enum Months{January = 1, June = 6, March = 3}; Assignment is limited: int a = February; Months a = 2; // ERROR 11

Loops for loops while loops do while loops 12

Loops: for Loop Declare and initialize loop variable: Check continue condition BEFORE: Increment AFTER loop: int i=0; i < 4; i++; for (int i=0; i < 4; i++) { } cout << i is: << i; Sidenote: Shown here is the C99 standard. Older C-code might require this: int i; for (i=0; i < 4; i++) 13

Declare and initialize loop variable: Check continue condition BEFORE: Increment AFTER loop: Loops: while Loop int i=0; while (i < 4) { cout << i is: << i; i++; } int i=0; i < 4; i++; Sidenote: Shown here is the C99 standard. Older C-code might require this: int i; for (i=0; i < 4; i++) 14

Loops: for and while Comparison for and while can be used equivalently Loop variable i stays valid after the loop if declared outside of the braces for loops for known length iteration while loops to loop until complex condition is met int i; for (i=0; i < 4; i++) { cout << i is: << i; } int i=0; while (i < 4) { cout << i is: << i; i++; } 15

Loops: do while Loop Declare and initialize loop variable: Check continue condition AFTER: Increment AFTER loop: int i=0; i < 4; i++; int i=0; do { cout << i is: << i; i++; } while (i < 4); Sidenote: Shown here is the C99 standard. Older C-code might require this: int i; for (i=0; i < 4; i++) 16

Exercise 6 Programming: Extend means program to use loops Programming: Use 3 loop types to calculate factorials Programming: Implement Sieve of Erathostenes Experiment with UNIX processes Hand in: Program source codes for tasks 1 3 Screenshot for task 4 17

Task 1: Durchschnitt Durchschnitt aus 5 Zahlen mittels Schleife (Haben einige von euch auch schon bei Übung 5 gemacht) Task 2: Fakultät Exercise 6 Task 1,2 Hier soll mittels 3 unterschiedlichen Funktionen die Fakultät berechnet warden. Alle Funktionen sollen das gleiche Ergebnis liefern und dieses jeweils durch einen anderen Schleifen-Typ erreichen Fakultät von 5: 5!= 5*4*3*2*1 Benutzt eine Zwischenspeicher Variable und rechnet von oben herab 18

Task 3: Primzahlen Es sollen aus einem Array mit Zahlen von 1 bis n alle Zahlen, die keine Primzahlen sind herausgestrichen werden. Typ des Arrays: Bool, Grösse des arrays durch cin eingelesen Wenn Primzahl dann Ergebnis true, wenn nicht, dann false 2 Schleifen, eine äussere zum überprüfen ob true oder false und eine innere, die wenn das Ergebnis true ist, alle vielfache dieser Zahl herausstreicht Am Ende alle Primzahlen auf die Konsole ausgeben Task 4: UNIX Exercise 6 Task 3 Einfach gemacht und verstanden schreiben, wenn es geklappt hat, ansonsten eventuelle Fragen, kein Screenshot (unnötiger Aufwand) 19