Informatik I (D-ITET)

Ähnliche Dokumente
Programmierkurs C++ Variablen und Datentypen

5. Abgeleitete Datentypen

Datentypen: integer, char, string, boolean

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Informatik Vorkurs - Vorlesung 2

Grundlagen der Programmierung

C-Programmierkurs Mathematik

Programmiervorkurs Einführung in Java Tag 1

ÜBUNGS-BLOCK 7 LÖSUNGEN

Schleifen Datenfelder (Arrays) Verzweigungen

RO-Tutorien 3 / 6 / 12

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Martin Unold INFORMATIK. Geoinformatik und Vermessung

2.1 Fundamentale Typen

Algorithmen und Datenstrukturen

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Grundlagen der Informatik 2. Typen

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.

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

Welche Informatik-Kenntnisse bringen Sie mit?

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

C++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

Variablen, Konstanten und Datentypen

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

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

Wertebereich und Genauigkeit der Zahlendarstellung

Repetitorium Programmieren I + II

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Hello World! Eine Einführung in das Programmieren Variablen

Vorkurs Informatik WiSe 16/17

if ( Logischer Operator ) { } else { Anweisungen false

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

GI Vektoren

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

Einführung in die Programmiersprache C

Probeklausur Name: (c)

Physische Datenstrukturen

Informatik I (D-ITET)

Vorkurs Informatik WiSe 17/18

Java Referenzdatentypen genauer betrachtet

RO-Tutorien 15 und 16

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Elementare Datentypen in C++

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

INE1 Arrays, Zeiger, Datenstrukturen

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Algorithmen zur Datenanalyse in C++

Informatik II Übung, Woche 10

Sprachkonstrukte Verzweigungen und Array-Strukturen

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

Tag 2 Repetitorium Informatik (Java)

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

3. Operatoren und Ausdrücke

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

3. Operatoren und Ausdrücke

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

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

Grundlagen der OO- Programmierung in C#

Übungsblatt 1. Java Vorkurs (WS 2017)

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Transkript:

Ablauf Informatik I (D-ITET) Übungsstunde 5, 26.10.2009 simonmayer@student.ethz.ch ETH Zürich Nachbesprechung Übung 3 Besprechung/Vertiefung der Vorlesung [21.10.2009] Vorbesprechung Übung 5 2.c) Test auf Primzahl mittels for bool foo(unsigned int n) { 3. Verschachtelte Schleifen Beispiel... for(int i = 2; i < n/2; i++) { if (n%i == 0) return false; } 4. Euler Nochmal: Die Abbruchbedingung return true; } Ablauf Arrays Demo: arrays.cpp Nachbesprechung Übung 3 Folge von Elementen desselben Typs Deklaration: int my_array[#elements]; Besprechung/Vertiefung der Vorlesung [21.10.2009] Vorbesprechung Übung 5 Initialisierung: int my_array[#elements] = {e1,e2,..,en}; Zugriff über Index: my_array[4]; 6 1

Arrays Summe von Arrayelementen Anzahl der Elemente eines Arrays muss Konstante sein const int max_size = 250; int my_array[max_size]; Mehrdimensionale Arrays (Matrizen, Tensoren) const int max_cols = 10; const int max_rows = 5; int my_array[max_rows][max_cols]; 7 8 grösstes Arrayelement Suchen eines Elements 9 10 Matrix-Vektor Produkt C-Strings Demo: cstrings.cpp Strings sind Arrays von chars (Zeichen) Letztes Zeichen: null-character ( \0 ) char x[7] = 123456 char x[7] = { 1, 2, 3, 4, 5, 6, \0 } Bibliothek <cstring> für weitergehende Kommandos (z.b. strlen()) 11 12 2

C-Strings Der Typ String Vereinfachung! Bibliothek <string> Neu (z.b): Zuweisen: Zusammenfügen: string1 = string2 string1 = string2 + string3 13 14 Strings Nochmal Typen Demo: shortintfloat.cpp Erlauben Interpretation des Speicherinhalts Wiederholung: Demo + wichtige Datentypen Limits Unsigned Typen Explizites Initialisieren von Variablen wichtig Unterschiede zwischen Typen: 42 dezimal 0x42 hexadezimal 15 16 Nochmal Typen: char Nochmal Typen: bool Grösse: 1 Byte > 8Bit -> 2 8 = 256 Zeichen speicherbar Numerische Werte werden als boolesche Werte interpretiert Speicherung von Buchstaben/Zeichen als Integer-Werte gemäss ASCII code 0 -> false!= 0 -> true Escape-Sequenzen in char-ausgabe (z.b. \n, \t, \\, \ ) 17 18 3

Nochmal Typen: Casts Nochmal Operatoren Demo: binops.cpp Typenkonversion / Casts: Explizit oder Implizit Implizit, wenn Zuweisung verschiedener Typen int my_int = 2.4; Ausdrücke mit verschiedenen Typen 2.4 / 4; Funktionsargumente int my_func (int input_a) {... } my_func(2.4); Explizit mit Cast-Notation (int) 35.4 Int (35.4) Funktionsaufruf, oder? Funktion int, Argument 35.4 Leftshift << haben wir schon gesehen... Wenn eine nicht-vorzeichenbehaftete Ganzzahl um 1 Bit nach links geschoben wird, wird sie verdoppelt (unsigned int) 6 = 4 + 2 = 2 2 + 2 1 = 0000 0110 0000 0110 << 1 = 0000 1100 = 2 3 + 2 2 = 8 + 4 = 12 Wenn eine nicht-vorzeichenbehaftete Ganzzahl um 1 Bit nach rechts geschoben wird, wird sie halbiert und auf eine Ganzzahl abgerundet (unsigned int) 9 = 8 + 1 = 2 3 + 2 0 = 0000 1001 0000 1001 >> 1 = 0000 0100 = 2 2 = 4 Warum eigentlich nur bei nicht-vorzeichenbehafteten Ganzzahlen? Antwort: Codierung von negativen Zahlen (2er Komplement) 19 20 Nochmal Operatoren Structs AND a & b OR a b NOT ~a XOR a ^ b Exklusives OR true, wenn a true oder b true, aber nicht wenn beide true Struct: Deklaration: struct type_name { type_of_member_1 type_of_member_2... } declarations; [int][char][double] name_of_member_1; name_of_member_2; Später Deklaration von Variablen des Typs type_name mit type_name my_variable_of_type_typename; 21 22 Structs Demo: struct.cpp Unions Demo: unions.cpp Initialisierung durch Aufzählen der Elemente type_name my_struct = {...,...,...}; Eigentlich wie Structs,... Zugriff my_struct.name_of_member Aber: Members sind nicht nebeneinander gespeichert, sondern an derselben Speicherstelle Weitere Möglichkeiten: Array of Structs: type_name my_struct[25]; Arrays in Structs: struct type_name { int my_array[25]; double my_array2[25]; } Verschachtelte Structs 23 24 4

Enums Demo: enums.cpp Aufzählungstypen enumerations Verschiedene Arten, Arrays zu sortieren... enum colors {red, green, blue} Unterschiede Laufzeit (#Vergleiche/Kopieraktionen) Wie schnell? -> Demo Neuer Typ colors So wie man der Veriable int a; die Werte 0, 1, 4550 zuweisen kann, kann man der Variable colors my_color die Werte red, blue, green zuweisen Stabil Welches Resultat? In situ/in place vs. Ex situ/out of place Wieviel Speicher / Wo? Natürlich Was ist mit sortierten Daten? 25 26 Verschiedene Arten, Arrays zu sortieren, z.b. Verschiedene Arten, Arrays zu sortieren, z.b. Bogosort Sehr langsam, intuitiv Zufällig schütteln, schauen ob ok Worst Case: inf. Avg. Case: O(n! * n) Best Case: O(n) Selectionsort In der Vorlesung Suche nach Minimum, vertausche mit erstem Element des aktuellen Teilbereichs Worst Case: O(n 2 ) [n 2 / 2] Average Case: O(n 2 ) [n 2 / 2] Best Case: Übung 5 Bubblesort Langsam, einfach zu implementieren Nebeneinanderliegende Elemente vertauschen Worst Case: O(n 2 ) [n 2 / 2] Average Case: O(n 2 ) [n 2 / 4] Best Case: O(n) Insertionsort In Übung 5 Nimm nächstes Element, füge es an korrekter Stelle in den sortierten Bereich ein Worst Case: O(n 2 ) [n 2 / 2] Average Case: O(n 2 ) [n 2 / 2] Best Case: Übung 5 27 28 Verschiedene Arten, Arrays zu sortieren, z.b. Bubblesort... Quicksort Schnell, rekursiv ( Divide-and-Conquer Prinzip) Wähle ein Element (das Pivotelement) und teile das Array in 2 Teil-Arrays ( Divide ) L enthält Elemente kleiner als das Pivotelement; R entählt Elemente grösser als das Pivotelement Sortiere die Teil-Arrays mittels Quicksort ( Conquer ) Vereine die Teil-Arrays Worst Case: O(n 2 ) Average Case: O(n log n) Best Case: O(n log n) Quicksort... Quicksort mit zufälliger Wahl des Pivotelements... Slowsort Langsam, rekursiv ( Multiply-and-Surrender Prinzip) Worst Case: O(n log(n) / (2) ) Best Case: O(n log(n) / (2 + epsilon) ) 29 30 5

Ablauf Nachbesprechung Übung 3 1. Insertionsort Beispielsortierung (Tafel) Besprechung/Vertiefung der Vorlesung [21.10.2009] Vorbesprechung Übung 5 2. Algorithmenanalyse Insertionsort vs. Selectionsort a) Vergleich der Anzahl Vergleichsoperationen b) Vergleich der Anzahl Zuweisungsoperationen Achtung!! Haben wir nicht betrachtet! Folien online unter www.n.ethz.ch/student/mayersi 3. Farbdecoder Widerstände mit Farbringcodierung In Tabelle (ist aber falsch...) a. Structs designen widerstand mit 4 Farbe -Members nennwert mit Ohm als double, Toleranz als int b. nennwert decode_widerstand(widerstand r) Informatik I (D-ITET) Übungsstunde 5, 26.10.2009 simonmayer@student.ethz.ch ETH Zürich c. main(...) anpassen 6