Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Forschungszentrum caesar
ACM ICPC Praktikum Kapitel 8: Backtracking. Übersicht Backtracking Aufzählung aller Teilmengen Aufzählung aller Permutationen n-Königinnen-Problem.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Variablen und Datentypen
Zusammenfassung der Vorwoche
10. Grundlagen imperativer Programmiersprachen
Lösung 6.3 Denksportaufgabe
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
SWITCH - Anweisung.
SWITCH - Anweisung.
Basisinformationstechnologie WS 2003/04 T.Schaßan
= Zahl: 5 2. Zahl: 5 3. Zahl: 5 4. Zahl: 5 Prüfe auf: 1.Gleichheit aller Zahlen 2.Gleichheit mind. 2er Zahlen 3.Ungleichheit.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
Datentyp  Zusammenfassung von Mengen von "Werten" mit auf
Einführung Wat jibt´s denn? Mit Computa kenn´ ick mir aus! Guten Tag,
Einführung in die Programmierung mit Java
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Problemstellung Berechne die Summe der Quadrate aller natürlichen Zahlen bis zu einer vorgegebenen Zahl (bspw. 100)! Oder mathematisch: Berechne.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Das erste Programm (Folie 16)
Informationen zur Klausur
Verzweigung.
Informatik 1 Übung 2.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Allgemeines zu Java Universelle, objektorientierte Programmiersprache
Informatik 1 Letzte Übung.
Informatik 1 Übung 4.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
2. Zustandsorientiertes Modellieren 2.1 Einfachauswahl
Informatik I for D-MAVT
Arduino Kurs Abend 2.
Purga - Scriptengine Ein Einblick.
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Algorithmen und Datenstrukturen SS 2005
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Datentypen: integer, char, string, boolean
Datentypen Überblick Datentypen Einfache / fundamentale Datentypen
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
programmieren des casio FX-7400GII
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Gib die Zahl 4 ein!. VB-Skript ColTrue = RGB(0, 255, 0) ColFalse = RGB(255, 0, 0) ColSelected = RGB(255, 255, 0) TextBox1.BackColor = ColSelected If Not.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Einführung in die Programmierung mit Java
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Variablen und Datentypen
X. Übungsblatt – Aufgabe X Das Bild zeigt ein Diagramm, dass die Nachbarschafsbeziehungen für einen Code mit 3 Binärstellen darstellt. a)Welche Hamming-Distanz.
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Hello World! Javakurs 2013 Arne Kappen
Aufgaben zu Rückgabewerten
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Variable: typ varName = Wert Kiste: Art Aufschrift  Inhalt
Gib die Zahl 4 ein!.
W Passen Sie dieses Banner mit Ihrer eigenen Aussage an! Markieren Sie den Buchstaben, und fügen Sie eigenen Text hinzu. Verwenden Sie pro Folie ein einziges.
W Passen Sie dieses Banner mit Ihrer eigenen Nachricht an! Wählen Sie den Buchstaben aus, und fügen Sie Ihren eigenen Text hinzu. Verwenden Sie ein Zeichen.
G Passen Sie dieses Banner mit Ihrer eigenen Nachricht an! Wählen Sie den Buchstaben aus, und fügen Sie Ihren eigenen Text hinzu. Verwenden Sie ein Zeichen.
a Passen Sie dieses Banner mit Ihrer eigenen Aussage an! Markieren Sie den Buchstaben, und fügen Sie eigenen Text hinzu. Verwenden Sie pro Folie.
H Passen Sie dieses Banner mit Ihrer eigenen Nachricht an! Wählen Sie den Buchstaben aus, und fügen Sie Ihren eigenen Text hinzu. Verwenden Sie ein Zeichen.
H Passen Sie dieses Banner mit Ihrer eigenen Aussage an! Markieren Sie den Buchstaben, und fügen Sie eigenen Text hinzu. Verwenden Sie pro Folie ein einziges.
The Programming Language Pascal
 Präsentation transkript:

Informatik 1 Übung 5

NACHBESPRECHUNG Übung 5

Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein – Testat gibt es für ernst gemeinte Lösungsversuche Formatiert euren Code schön – sonst geb ich mir auch keine Mühe Musterlösungen anschauen

Ich gebe nicht auf Code schön formatieren if (x > 0) { a = 1; b = 1; // Kommentar. if (y > 0) { c = 1; } else { d = 1; } e = 1; }

Variablentyp Richtige Typen verwenden TypVerwendungWerte boolWahrheitswerttrue, false char/wchar_tEin Zeichen'a', 'b',... intEine ganze Zahl0, 1,... float/doubleEine reelle Zahl0.0, 0.1,...

Ganzzahldivision Auf Ganzzahl-Division achten AusdruckWert 1/ / /

Charakter Buchstaben entsprechen Zahlen Wenn möglich Buchstaben verwenden bool isCapital = 'A' < c && c < 'Z';bool isCapital = 65 < c && c < 90; char c = 'A';char c = 65; if(antwort == 'y')if(antwort == 121)

Identische Blöcke Copy-Paste vermeiden if(i<10) { switch(i) { case 0: cout << "Null"; break; case 1: cout << "Eins"; break; } } else { switch(i%10) { case 0: cout << "Null"; break; case 1: cout << "Eins"; break; } string s; switch(i%10) { case 0: s = "Null"; break; case 1: s = "Eins"; break; } if(i<10) { cout << s; } else { cout << s; }

Division durch 0 Arithmetische Operationen prüfen – Division durch 0 – Logarithmus einer negativen Zahl –... In if-Bedingung: als erstes prüfen – Vorzeitiger Abbruch der Auswertung int x = 1; int y = 0; int z = x / y; if(y!=0 && x/y > 1)

Arithmetische Operationen CPU kann nur multiplizieren und addieren x y, sin(x), x,... müssen berechnet werden – Iterative multiplikation (siehe Übung 4) – Tabellierte Werte – Gleichungssystem lösen – Taylorreihe –...

WIEDERHOLUNG Vorlesung 5

VARIABLEN Einzelne Werte

Variablen Variablen in Speicherzellen gespeichert Jede Speicherzelle hat Adresse und Inhalt Vereinfachtes Bespiel – Nur integer – Nur 7 Speicherzellen

Variablen Variablen in Speicherzellen gespeichert Jede Speicherzelle hat Adresse und Inhalt NameAddresseInhalt

Variablen Variablen in Speicherzellen gespeichert Jede Speicherzelle hat Adresse und Inhalt NameAddresseInhalt x0000??? int x;

Variablen Variablen in Speicherzellen gespeichert Jede Speicherzelle hat Adresse und Inhalt NameAddresseInhalt x int x; x = 10;

Variablen Variablen in Speicherzellen gespeichert Jede Speicherzelle hat Adresse und Inhalt NameAddresseInhalt x y0001??? int x; x = 10; int y;

Variablen Variablen in Speicherzellen gespeichert Jede Speicherzelle hat Adresse und Inhalt NameAddresseInhalt x y int x; x = 10; int y; y = x;

ARRAYS Aufeinanderfolgende Werte

Arrays Mehrere aufeinanderfolgende Zellen NameAddresseInhalt x y z[0]0002??? z[1]0003??? int x = 10; int y = 10; int z[2];

Arrays Mehrere aufeinanderfolgende Zellen NameAddresseInhalt x y z[0] z[1] int x = 10; int y = 10; int z[2]; z[0] = 20; z[1] = 30;

POINTER (ZEIGER) Verweise auf Werte

Pointer Pointer verweisen auf andere Speicherzellen Wert vom Pointer – Adresse einer anderen Speicherzelle // Variablen, welche auf eine andere Speicherzelle zeigt, // welche wiederum den gegebenen Typ speichert. typ* name;

Pointer Pointer verweisen auf andere Speicherzellen Wert vom Pointer – Adresse einer anderen Speicherzelle int x; // x speichert eine ganze Zahl int* p; // p speichert die Adresse einer ganzen Zahl p = &x; // die Adresse von x wird in p gespeichert // Variablen, welche auf eine andere Speicherzelle zeigt, // welche wiederum den gegebenen Typ speichert. typ* name;

Pointer Pointer verweisen auf andere Speicherzellen NameAddresseInhalt x y p0002??? int x = 10; int y = 10; int* p;

Pointer Pointer verweisen auf andere Speicherzellen NameAddresseInhalt x y p0002[0001] int x = 10; int y = 10; int* p; p = &y;

Pointer NULL bedeutet zeigt auf nichts NameAddresseInhalt x y p0002[NULL] int x = 10; int y = 10; int* p; p = NULL;

Pointer Pointer verweisen auf andere Speicherzellen Dereferenzieren – Zugriff auf die adressierte Speicherzelle int x; int* p = &x; *p = 10; // p zeigt auf x, also wird in x die 10 gespeichert

Pointer Pointer verweisen auf andere Speicherzellen NameAddresseInhalt x y p0002[0001] int x = 10; int y = 10; int* p; p = &y;

Pointer Pointer verweisen auf andere Speicherzellen NameAddresseInhalt x y p0002[0001] int x = 10; int y = 10; int* p; p = &y; *p = 20;

Pointer &x – Adresse der Variablen x *x – Wert der Zelle, auf welche x zeigt – dem Pfeil folgen

Pointer Beliebig viele Indirektionen NameAddresseInhalt x px0001[0000] ppx0002[0001] pppx0003[0002] int x; int* px = &x; int** ppx = &px; int*** pppx = &ppx; ***pppx = 1;

Pointer-Arithmetik Addition auf Adressen Zeiger + konstante Zahl NameAddresseInhalt x[0] x[1] p0002[0000] q0003[0001] int x[2] = {10,10}; int* p = &x; int* q = p+1;

ARRAYS UND ZEIGER Gemeinsamkeiten

Arrays Name des Arrays = Zeiger auf die erste Zelle int x[2]; int* p = x; // p zeigt auf das erste Element in x int* p = &(x[0]); // p zeigt auf das erste Element in x

Arrays Array-Index = Pointer-Arithmetik int x[2]; int x1 = x[1]; // x1 wird das zweite Element von x zugewiesen int x1 = *(x+1); // x1 wird das zweite Element von x zugewiesen

LESEN VON ZEIGERN

Leseweise Beim Variablennamen starten Nach aussen arbeiten – nach rechts, dann nach links const int * const x[2]; x ist...

Leseweise Beim Variablennamen starten Nach aussen arbeiten – nach rechts, dann nach links const int * const x[2]; x ist ein Array von zwei...

Leseweise Beim Variablennamen starten Nach aussen arbeiten – nach rechts, dann nach links const int * const x[2]; x ist ein Array von zwei konstanten...

Leseweise Beim Variablennamen starten Nach aussen arbeiten – nach rechts, dann nach links const int * const x[2]; x ist ein Array von zwei konstanten Zeigern...

Leseweise Beim Variablennamen starten Nach aussen arbeiten – nach rechts, dann nach links const int * const x[2]; x ist ein Array von zwei konstanten Zeigern auf ein integer...

Leseweise Beim Variablennamen starten Nach aussen arbeiten – nach rechts, dann nach links const int * const x[2]; x ist ein Array von zwei konstanten Zeigern auf ein integer, der konstant ist

DYNAMISCHER SPEICHER

Speicher reservieren Operator new Erstellt eine neue Speicherzelle – Typ muss angegeben werden – Gibt Zeiger auf die neue Zelle zurück int* p; // Erstellt Speicherplatz für einen neuen integer // p zeigt auf die neu angelegte Speicherzelle p = new int;

Speicher freigeben Operator delete Löscht eine zuvor erstellte Speicherzelle – Achtung: Zeiger werden ungültig // Erstellt Speicherplatz für einen neuen integer int* p = new int; // Löscht die Speicherzelle, auf welche p zeigt delete p; // p zeigt hier immer noch auf die Speicherzelle, die nicht mehr gibt

Speicher freigeben Operator delete Löscht eine zuvor erstellte Speicherzelle – Achtung: Zeiger werden ungültig // Erstellt Speicherplatz für einen neuen integer int* p = new int; // Löscht die Speicherzelle, auf welche p zeigt delete p; // p zurücksetzen p = NULL;

Arrays Arrays anlegen und freigeben int N; // Erstellt Speicherplatz für N neue integer int* p = new int[N]; // Zugriff mit und ohne Array-Syntax p[1] = 10; *(p+1) = 10; // Löscht alle Speicherzellen delete[] p;

QUIZ

Quiz Was gibt das Programm aus? int x = 10; int y = 20; cout << x;

Quiz Was gibt das Programm aus? int x = 10; int y = 20; int* p = &y; cout << p;

Quiz Was gibt das Programm aus? int x = 10; int y = 20; int* p = &y; cout << *p;

Quiz Was gibt das Programm aus? int x = 10; int y = 20; int* p; cout << p;

Quiz Was gibt das Programm aus? int x = 10; int y = 20; int* p = &x; *p = 11; p = &y; *p = 21; cout << x; cout << y;

Quiz Was gibt das Programm aus? int x[2] = {10, 20}; cout << (x+1);

Quiz Was gibt das Programm aus? int x[2] = {10, 20}; cout << *x + 1;

Quiz Was gibt das Programm aus? int x[2] = {10, 20}; cout << *(x + 1);

STRUCTS Variablenverbunde

Structs Ein struct fasst mehrere Variablen zusammen Definiert einen neuen Typ // Definiere einen neuen Typ mit zwei integer-Elementen struct vector2D { int x; int y; }; vector2d v;

Structs Zugriff auf Elemente member auf Englisch vector2D v; v.x = 10; v.y = 10;

Structs Zuweisung kopiert alle Elemente – Anderst als bei Arrays vector2D v; vector2D w; v = w;

Structs Elemente vom Struct in benachbarten Zellen Wie beim Array NameAddresseInhalt v.x0000??? v.y0001??? vector2D v;

Structs Elemente vom Struct in benachbarten Zellen Wie beim Array NameAddresseInhalt v.x v.y vector2D v; v.x = 10; v.y = 20;

Structs und Zeiger Zeiger auf structs möglich Verkürzte Syntax für Elementzugriff vector2D v; vector2D* pv = &v; (*pv).x = 10; // Setze Element x vom referenzierten Vektor auf 10 pv->x = 10; // Setze Element x vom referenzierten Vektor auf 10

ÜBUNG Serie 6