Informatik I (D-MAVT)

Ähnliche Dokumente
Informatik I (D-ITET)

Informatik I (D-MAVT)

Informatik I (D-MAVT)

Informatik I (D-MAVT)

Abgeleitete Datentypen

3/4/2009. Schalter: Ein vs. Aus Lochkarten: Loch vs. Kein Loch Boolean/Wahrheitswerte: true vs. false

5. Abgeleitete Datentypen

5. Abgeleitete Datentypen

Informatik 1 ( ) D-MAVT F2010. Funktionen. Yves Brise Übungsstunde 7

Grundlagen der Informatik 6. Arrays I

C++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15

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

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

Einführung Pointer. C-Kurs 2013, 2. Vorlesung. Nico Andy

Einführung in die Programmiersprache C

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

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

GI Vektoren

Informatik I (D-MAVT)

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

Zeiger, Arrays und Strings in C und C++

Eine praktische Einführung in die Programmierung mit der Programmiersprache C

Informatik I (D-ITET)

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

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Informatik II. Übungsstunde 6. Distributed Systems Group, ETH Zürich

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

Zeiger. Zeiger ist eine Variable deren Wert eine Adresse enthält. Zeiger werden im Programm definiert. int *pmyinteger; Type *PointerName ;

9. Vektoren. (auch Felder/array)

Algorithmen und Datenstrukturen II

H S R R a p p e r s w i l \0

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

Einführung Programmierpraktikum C Michael Zwick

Elementare Datentypen in C++

Informatik II (D-ITET) Übungsstunde 5

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

Zeiger: Der Adressoperator &

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

RO-Tutorien 3 / 6 / 12

8. Referenzen und Zeiger

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Grundlagen der Informatik 2. Typen

Datentypen: integer, char, string, boolean

Programmier-Befehle - Woche 8

Informatik I (D-MAVT)

Zeiger in C und C++ Zeiger in Java und C/C++

Arrays (Felder/Vektoren)

RO-Tutorien 15 und 16

Kap 7. Funktionen und Arrays

Programmierwerkstatt. Arrays, Pointer und Referenzen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Operatoren in C. Gastvorlesung Andreas Textor

Informatik Vorkurs - Vorlesung 2

Physische Datenstrukturen

Sprachkonstrukte Verzweigungen und Array-Strukturen

Zusammenfassung des Handzettels für Programmieren in C

Kompilieren Datentypen Operatoren. Überblick. 1 Kompilieren. 2 Datentypen. const static volatile. 3 Operatoren. Alexander Batoulis

Informatik I (D-ITET)

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

Informatik II Übung, Woche 10

Informatik II. Woche 10, Giuseppe Accaputo

Praxis der Programmierung

Algorithmen und Datenstrukturen

Zeichenketten sind uns bisher nur als konstante Texte begegnet, welche in "" angegeben waren; z.b. als Formatstring in der printf()-funktion:

Grundlagen der Informatik 11. Zeiger

Informatik I (D-ITET)

Programmierkurs C++ Variablen und Datentypen

Informatik 1 MaVt FS Übung 10

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

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

Informatik II Übung 3

Übungspaket 23 Mehrdimensionale Arrays

Programmier-Befehle - Woche 09

C++ - Einführung in die Programmiersprache Arrays

RO-Tutorien 17 und 18

Informatik 1 ( ) D-MAVT F2011. Pointer, Structs. Yves Brise Übungsstunde 6

Programmieren in C/C++ und MATLAB

EEPROM Strukturen speichern über SPI-Bus

Informatik II Übung 2

Assoziative Container in C++ Christian Poulter

Die Klasse string Verfasser: Christian Bartl

Algorithmen und Datenstrukturen

Programmieren in C++

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

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

6. Bearbeitung von Strings in C Bearbeitung von Strings in C

Programmier-Befehle - Woche 08

Inhalt. Peter Sobe 63. Felder in C

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Felder (Arrays) und Zeiger (Pointers) - Teil II. Zeichen, Texte, Caesar-Code, String Matching; Mehrdimensionale Felder; kürzeste Wege

Lösungsvorschlag zur 3. Übung

Arrays,Strings&Pointer in C/C++

Probeklausur Name: (c)

Übungspaket 23 Mehrdimensionale Arrays

C-Kurs 2010 Pointer. 16. September v2.7.3

Mehrdimensionale Arrays

Transkript:

Informatik I (D-MAVT) Übungsstunde 5 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich

Ablauf Nachbesprechung Übung 4 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 5

Ablauf Nachbesprechung Übung 4 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 5

Arrays Folge von Elementen desselben Typs Deklaration: int my_array[#elements]; Initialisierung: int my_array[#elements] = {e1,e2,..,en}; Zugriff über Index: my_array[4]; 4

Arrays Anzahl der Elemente eines Arrays muss Konstante sein const int max_size = 250; int my_array[max_size]; Anzahl der Elemente eines Arrays muss Konstante sein const int max_size = 250; int my_array[max_size]; (das hier ist keine Wiederholung!) Mehrdimensionale Arrays (Matrizen, Tensoren) const int max_cols = 10; const int max_rows = 5; int my_matrix[max_rows][max_cols]; 5

Arrays Anzahl der Elemente eines Arrays muss Konstante sein const int max_size = 250; int my_array[max_size]; (das hier ist auch keine Wiederholung!) Abgaben zu Uebung 5, welche diesen Code enthalten: int max_size; cin >> max_size; int my_array[max_size];...bekommen direkt 0 Punkte! 6

Einige Algorithmen...Aufsummieren der Elemente. Welchen Aufwand hat das? -> Aufwand O(n) O(n): «Aufwand steigt linear mit Laenge des Arrays» 7

Einige Algorithmen...Finden des groessten Elements Aufwand: O(N) 8

Einige Algorithmen Sortieren eines Arrays Aufwand: N*(N/2) = O(N 2 ) 9

Einige Algorithmen Suchen eines Elements im Array Aufwand: N/2 = O(N) 10

Einige Algorithmen Array a[], bereits sortiert Suchen in einem sortierten Arrays Aufwand: O(log 2 (N)) 11

C-Strings C-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 } Beide Ausdrucksweisen sind GLEICH! Bibliothek <cstring> für weitergehende Kommandos (z.b. strlen()) 12

C-Strings 13

Adressen von Variablen Der Adressoperator: & Gibt die physische (tatsaechliche!!) Speicheradresse einer Variablen zurück. Beispiel: Adresse von Variablen am Stack int i = 5; cout << &i << endl;...sehen wir s uns grad mal mit Arrays an. 14

Ablauf Nachbesprechung Übung 4 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 5

Vorbesprechung / Übung 5 Theorieaufgabe 1: Algorithmen Was machen die Programmstuecke in a) und b)? Theorieaufgabe 2: Pseudocode Elektronisches Speichern von Kinoticketreservierungen Reservierung: Name + Reihe/Platz + Anzahl Abfrage: Name Ausgabe auf Abfrage: Reihe/Platz + Anzahl Array benutzen Hilfe: Eingaben immer gueltig, nur eine Vorstellung

Vorbesprechung / Übung 5 Programmieraufgabe 3: Vektoren Maximale Dimension: Nach Dimension n fragen 2 * n Elemente einlesen Skalarprodukt und Supremumsnorm berechnen 10 (d.h. Arrays Laenge 10 benutzen)

Vorbesprechung / Übung 5 Programmieraufgabe 4: «Caesar Cipher» Satz im Klartext + Passwort Verschluesselter Satz char Array char text [500]; Befehl zum Einlesen: cin.getline(text, 500); Effektive Laenge des Textes mit: strlen(text); Verschluesselung: char atextchar = h ; char apasswordchar = x ; char ciphertext = atextchar ^ apasswordchar; Bitwise XOR

Programmieraufgabe 4: «Caesar Cipher» Wir kennen schon die logischen Operatoren: AND && OR NOT! Es gibt auch Bitweise Operatoren diese arbeiten auf Bit-Ebene! Bit-AND: & Bit-OR: Bit-NOT: ~ Bit-XOR: ^

char mychar = x ; // ASCII 120, Hex 0x78, Binary 0111 1000 char anotherchar = a ; // ASCII 97, Hex 0x61, Binary 0110 0001 char bitandchar = mychar & anotherchar; // bitandchar ist nun: 0110 0000 -> 0x60 KLAR?! char bitorchar = mychar anotherchar; // bitorchar ist nun: 0111 1001 -> 0x79 KLAR?! char bitnotchar = ~anotherchar; // bitnotchar ist nun: 1001 1110 -> 0x9e KLAR?! char bitxorchar = mychar ^ anotherchar; // bitxorchar is nun: 0001 1001 -> 0x19 KLAR?!

Vorbesprechung / Übung 5 Programmieraufgabe 4: «Caesar Cipher» Xor: Exclusive OR: «Entweder das eine, oder das andere, aber nicht beide» Toller Effekt von Xor: Umkehrbarkeit nachricht: 1101 0010 passwort: 1010 ciphertext: 0111 1000 passwort: 1010 cleartext: 1101 0010

Vorbesprechung / Übung 5 char atextchar = h ; char apasswordchar = x ; Bitwise XOR char ciphertext = atextchar ^ apasswordchar; Problem 1: Password wrap-around Im Allgemeinen Passwort kuerzer als Text Also:??? Problem 2: Steuerzeichen Erste 32 ASCII Zeichen sind Steuerzeichen, diese sollen im Ciphertext nicht vorkommen! Loesung: VOR dem XOR sollen die obersten 3 Bits des Passworts auf 0 gesetzt werden! Mittels: veranden des Passwort-chars mit 0x1f char ciphertext = atextchar ^ (apasswordchar & 0x1f);

Informatik I (D-MAVT) Übungsstunde 5 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich