Modellierung und Programmierung 1



Ähnliche Dokumente
Dr. Monika Meiler. Inhalt

Einführung in die Programmierung

Einführung in die Programmierung

Erwin Grüner

Objektorientierte Programmierung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

2. Programmierung in C

Die Programmiersprache C99: Zusammenfassung

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Datenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein

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

Programmierung in C. Grundlagen. Stefan Kallerhoff

Grundlagen der Programmiersprache C++

Klausur in Programmieren

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung

Einführung in die Programmierung (EPR)

Tutorium Rechnerorganisation

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

2. Semester, 2. Prüfung, Lösung

Studentische Lösung zum Übungsblatt Nr. 7

Ingenieurinformatik Diplom-FA (C-Programmierung)

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

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Java Kurs für Anfänger Einheit 5 Methoden

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java-Programmierung mit NetBeans

Informatik Repetitorium SS Volker Jaedicke

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

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Informations- und Kommunikationsinstitut der Landeshauptstadt Saarbrücken. Upload- / Download-Arbeitsbereich

Fallunterscheidung: if-statement

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

Deklarationen in C. Prof. Dr. Margarita Esponda

Lehrer: Einschreibemethoden

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

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

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

Einführung in die Programmierung

5. Tutorium zu Programmieren

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

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Zugriff auf die Modul-EEPROMs

Dokumentenverwaltung im Internet

Datentypen: Enum, Array, Struct, Union

Einführung in die Programmierung

Graphic Coding. Klausur. 9. Februar Kurs A

Vorkurs C++ Programmierung

Wirtschaftsinformatik I

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Übersicht Programmablaufsteuerung

1 Vom Problem zum Programm

Funktionale Programmierung mit Haskell

IT-Basics 2. DI Gerhard Fließ

Zusammenfassung des Handzettels für Programmieren in C

Excel Funktionen durch eigene Funktionen erweitern.

C/C++ Programmierung

Zusammengesetzte Datentypen -- Arrays und Strukturen

Arrays Fortgeschrittene Verwendung

Propädeutikum zur Programmierung

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Hochschule München, FK 03 FA SS Ingenieurinformatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Mediator 9 - Lernprogramm

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Projektzeit erfassen. Allgemeines. Projektzeit erfassen - Maske. Erklärung der Tabellenspalten. In Arbeit!

Kontrollstrukturen, Strukturierte Programmierung

Zwischenablage (Bilder, Texte,...)

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Zählen von Objekten einer bestimmten Klasse

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Softwarelösungen: Versuch 4

NODELOCKED LIZENZ generieren (ab ST4)

Propädeutikum. Dipl.-Inf. Frank Güttler

Scala kann auch faul sein

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Programmierkurs Java

7.3 Einrichtung 13. Monatslohn. Auszahlung Ende Jahr / Ende der Beschäftigung

Computeranwendung und Programmierung (CuP)

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar CAP-News 40

Anleitung über den Umgang mit Schildern

II. Daten sichern und wiederherstellen 1. Daten sichern

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!

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

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Felder. November 5, 2014

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Transkript:

Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015

Gültigkeitsbereich (Scope) von Variablen { int m; { int n; { int o; } scope of m scope of n scope of o accessability m, n, o m,n m } }

Gültigkeitsbereich (Scope) von Variablen Variablen, die am Beginn eines Programmblocks deklariert wurden, sind in diesem Block und dessen inneren Blöcken verfügbar. Eine bereits deklarierte Variable kann in einem inneren Block nicht neu deklariert werden. alle Änderung, die an einer Variable in einem inneren Block vorgenommen werden, bleiben nach Beendung des inneren Blockes erhalten Man unterscheidet globale Variablen (größtmöglicher Gültigkeitsbereich) und lokale Variablen (begrenzter Gültigkeitsbereich, z.b. innerhalb von Schleifen).

Endlosschleifen Ursachen dafür, dass das Programm die Schleife nicht verlassen kann: Abbruchbedingung kann nicht erfüllt werden z.b. int i = 1; while (i == 1) {... } Bedingung!(i == 1) kann nicht eintreten, da i im inneren der Schleife nicht verändert wird es gibt unendlich viele Schritte bis die Abbruchbedingung erfüllt ist z.b. for (double d = 10.0; d <= 0; d = d/2) {... } asymptotische Annäherung an 0 ein ganz bestimmter Wert wird nicht erreicht z.b. for (double d = 1.0; d!= 2.0; d += 0.2) {... } der letzte Wert vor 2.0 ist 1.9999... und der nächste 2.1999... der präzise Wert 2.0 wird nie erreicht Lösung: statt (d!= 2.0) besser (d <= 2.0) der Schleifenindex wird (irrtümlich) manipuliert z.b. for (int i = 1; i!= 10; ++i) {... i++;... } Lösung: statt (r!= 10) besser (r <= 10) und Index innerhalb der Schleife nicht verändern

Expliziter Ausstieg aus einer Schleife continue continue (fortsetzen) break (abbrechen) return (zurückgeben) continue - statement (unlabled) continue; springt zum nächsten Schleifendurchlauf der innersten Schleife, überprüft zunächst die Abbruchbedingung der Schleife. continue - statement (labled) continue [label]; springt zum nächsten Schleifendurchlauf der gelabelten, äußeren Schleife, überprüft zunächst die Abbruchbedingung dieser Schleife.

Expliziter Ausstieg aus einer Schleife break break - statement (unlabled) break; bricht den Schleifendurchlauf der innersten Schleife ab. Das Programm wird hinter/nach der Schleife fortgesetzt. break - statement (labled) break [label]; bricht den Schleifendurchlauf der gelabelten, äußeren Schleife ab. Das Programm wird hinter/nach dieser Schleife fortgesetzt.

Expliziter Ausstieg aus einer Schleife return return - statement (void) return; erlaubt das Verlassen der gegenwärtigen Methode. Das Programm wird dort fortgesetzt, wo die Methode aufgerufen wurde. return - statement (value) return [value]; erlaubt das Verlassen der gegenwärtigen Methode und gibt [value] an das Programm zurück. Das Programm wird dort fortgesetzt, wo die Methode aufgerufen wurde.

Endlosschleife mit Absicht Berechnen der ersten 30 Primzahlen.

Strukturierte Datenypen/ Referenzdatentypen Ein Array (Feld) ist ein Objekt, das eine geordnete Menge von Daten gleichen Typs enthält. Die Variablen in einem Array werden (Array-)Elemente oder auch Feldkomponenten genannt. Die Größe eines Arrays wird bei der Deklaration fixiert. Auf einen Array wird über eine Referenz zugegriffen. Eine Referenz ist eine Variable, mit einer Speicheradresse als Wert (sie verweist auf den Anfang eines Speicherbereichs, hier: des Arrays) Referenz alternative Namen: Zeiger, Pointer eindimensionaler Array alternative Namen: eindimenionales Feld, Liste, Vektor zweidimensionaler Array alternative Namen: zweidimenionales Feld, Liste von Listen (lol), Matrix

Deklaration: Elemetardatentypen Wiederholung: Deklaration von Variablen dient der Zuweisung eines Datentyps (z.b. char), der die Belegung des notwendigen Speichers (hier: 2 byte) und Art der Interprestion (hier: als char) der Bitfolge bestimmt Syntax: [data type] [variable name]; Beispiel: char symbol; variable name variable name variable name byte char int n 1 n 2 n 3 n 4 address

eindimensionale Arrays [ ] Deklaration es wird eine Referenz angelegt, zeigt vorerst ins nirgendwo Syntax: [element data type][ ] [array name]; or [element datatype] [array name][ ]; Beispiele: char[] word1; char word2[]; Definition Reservierung des nötigen Speicherplatzes Angabe von Datentyp und Anzahl der Elemente (Länge des Arrays) Syntax: [array name] = new [element data type] [ length ]; Beispiel: word = new char[4]; Deklaration & Definition Beispiele: char[] word = new char[4]; array name same data type indices reference a 1 n 1 n 2 n 3 array length [0] [1] [2] element (at index 2) n 4 [3]

eindimensionale Arrays [ ] array name same data type indices reference a 1 n 1 n 2 n 3 array length [0] [1] [2] element (at index 2) n 4 [3] Deklaration & Initialisierung Syntax: [element data type][ ] [array name] = { element1, element2,... element n }; Indexierung beginnt immer bei 0 Beispiel: char[] word = { M, a, u, s }; Beispiel: double[] vector = { 0.5, 1.5, 1 };

eindimensionale Arrays [ ] Zugriff auf einzelne Elemente Syntax: [array name][ index ] bzw. [array name][ expression ] wobei [expression] eine ganze Zahl zwischen 0 und der Länge des Arrays sein sollte Beispiel: word[2] u Durchlaufen eines Arrays Länge des Arrays (Anzahl der Elemente): [array name].length Beispiel: for (int i = 0; i < word.length; ++i) { word[i]; } Basis für komponentenweise Manipulation

Beispiel: Primzahlen Primes4.java: nach Ivor Horton s Beginning Java 7th Edition, Chapter 3 Konzept: Überprüfen der Teilbarkeit einer Zahl i > 2 durch alle Zahlen 2 <= j < i. Ist die Zahl i durch keine der Zahlen j teilbar, handelt es sich um eine Primzahl. Identifizierte Primzahlen werden ausgegeben (nicht im Speicher gehalten). Primes5.java: Primzahlen in einem Array speichern Konzept wie oben Speichern der Primzahlen in einem Array. Ausgabe der Primzahlen wenn die Berchnung komplett abgeschlossen ist. Primes6.java: gefundene Primzahlen zur Primzahlbestimmung verwenden Überprüfen der Teilbarkeit einer Zahl i > 2 durch alle Primzahlen j im Intervall [2..i 1] Speichern der Primzahlen in einem Array. Überprüfen der Teilbarkeit einer Zahl i > 2 nur durch alle Primzahlen 2 <= j < i. Ist die Zahl i durch keine der Primzahlen j teilbar, handelt es sich um eine Primzahl.

Vergleich von Arrays float[] vek1 = { 0.0, 0.5f, 1 }; float[] vek2 = { 0.0, 0.5f, 1 }; a3 a4 a5 b4 b5 b6 Falsch! Vergleich: (vek1 == vek2) false vergleicht die Speicheradressen(a3 und b4) gespeichert in vek1 und vek2, diese sind verschieden. Richtig! Vergleich: (vek1[0] == vek2[0]) && (vek1[1] == vek2[1]) && (vek1[2] == vek2[2]) true vergleicht die Werte der korrespondierenden Arrayelemente. Vergleiche sind komponentenweise auszuführende.

Kopieren von Arrays Falsch! float[] vek1 = { 0.0, 0.5f, 1 }; float[] vek2 = vek1; (vek1 = vek2) kopiert die Speicheradresse des Arrays. Beide Referenzen zeigen auf den selben Array. a3 a4 a5 Verändert man Elemente über eine der Referenzen so wird die Änderung auch von der anderen Referenz aus sichtbar. Richtig! float[] vek2 = { vek1[0], vek1[1], vek1[2] }; kopiert die Werte der Arrayelemente. Das Kopieren ist komponentenweise auszuführende.

Sonstiges Leeren von Arrays float[] vek1 = { 0.0, 0.5f, 1 }; float[] vek1 = new float[3]; Uniformes Initialisieren von Arrays double[] biglist = new double[100]; java.util.arrays.fill( biglist, 1.0 ); initialisiert alle Elemente des Arrays mit dem Wert 1.0