Teil II. Programmierung mit MATLAB

Ähnliche Dokumente
Grundlagen der Informatik für Wissenschaftliche Anwendungen

Java I Vorlesung Imperatives Programmieren

Funktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden

Definitionen/Vorarbeit zum Thema Java

WS2017/ Oktober 2017

Übungen zur Vorlesung Wissenschaftliches Rechnen I

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

Bru ckenkurs Programmieren

16. März 2016 artb5-v1.1

Grundlagen der Programmierung

Informatik Erste Schritte mit MATLAB

Vorkurs Informatik WiSe 17/18

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

Datentypen: integer, char, string, boolean

Einführung in die Programmierung mit VBA

Java Datentypen und Variablen

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

2. Programmierung in C

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp

Programmierkurs Python I

WS2018/ Oktober 2018

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

II.1.1. Erste Schritte - 1 -

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Einführung in die Programmierung

Vorkurs Informatik WiSe 16/17

2. Programmierung in C

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

Variablen, Konstanten und Datentypen

Numerik-Programm, mittlerweile mit vielen Erweiterungen (Toolboxen) Matlab = Matrix Laboratory Sehr gute Doku (doc, help, lookfor)

6. Grundlagen der Programmierung

Algorithmen und ihre Programmierung

Elementare Konzepte von

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Javakurs für Anfänger

Programmieren in C / C++ Grundlagen C 2

ECDL MODUL COMPUTING. Syllabus Version 1.0

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

Welche Informatik-Kenntnisse bringen Sie mit?

Intensivübung zu Algorithmen und Datenstrukturen

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

1. Referenzdatentypen: Felder und Strings

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Kurzeinführung in C99

2. Programmierung in C

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

MATLAB Eine Einführung

Programmiersprache. Emily & rica

Programmierkurs II. C und Assembler

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Grundlagen der Informatik 0

Programmieren 1 C Überblick

Programmieren lernen mit Perl

1. Einstieg in MATLAB

II.1.1. Erste Schritte - 1 -

Wertebereich und Genauigkeit der Zahlendarstellung

Programmierkurs C++ Variablen und Datentypen

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Informatik I: Einführung in die Programmierung

Grundlagen von MATLAB

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Werkzeuge zur Programmentwicklung

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Operatoren in C/C++ und Java:

Hello World! Eine Einführung in das Programmieren Variablen

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

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

III.1 Prinzipien der funktionalen Programmierung - 1 -

This image cannot currently be displayed. Java à Matlab. bereitgestellt von Dr. Lukas Faessler 12/4/17

Programming 101. Carl Herrmann IPMB & DKFZ

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Programmierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen

Vorkurs Informatik WiSe 16/17

C-Programmierkurs Mathematik

Programmierkurs Python I

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Grundlagen der Programmierung

Die Programmiersprache C

Programmieren Vorkurs

2 Programmieren in Java I noch ohne Nachbearbeitung

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Einführung in Java. Ausgewählte Quellen zu Java

Kurze Einführung in die Programmiersprache C++ und in Root

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Motivation und Überblick

Programmieren in Haskell Einführung

4.Grundsätzliche Programmentwicklungsmethoden

Kapitel 1: Informationsverarbeitung durch Programme

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Projekt 3 Variablen und Operatoren

Transkript:

Teil II Programmierung mit MATLAB

Überblick 1 Grundlagen der Programmierung 2 MATLAB als Programmiersprache 3 Grundlagen: Variablen, Datentypen, Vektoren 4 Funktionen in MATLAB 5 Kontrollstrukturen 6 Nutzerinteraktion und Visualisierung

Programmentwicklung: Problem Programm muss von Menschen geschrieben werden und auch für andere Menschen verständlich sein Programm muss vom Prozessor ohne Mehrdeutigkeiten und effizient ausgeführt werden

Programmentwicklung: Lösung MATLAB x = input( x = ); if (x>0) fprintf( Positiv.\n ); end if (x==42) fprintf( Zahl 42. \n ); end Programmierer verfasst Programm in sogenannter Hochsprache Machine Code Assembler FA CLI 33C0 XOR AX,AX 8ED0 MOV SS,AX BC007C MOV SP,7C00 8BF4 MOV SI,SP 50 PUSH AX 07 POP ES 50 PUSH AX 1F POP DS FB STI... Für die Ausführung durch den Prozessor wird das Programm auf eine dem Prozessor eigene Maschinensprache umgesetzt

Hochsprache vs. Maschinensprache Programm wird in sogenannten Hochsprachen geschrieben Für die Ausführung durch den Prozessor wird das Programm auf eine dem Prozessor eigene Maschinensprache umgesetzt Zwei Möglichkeiten: Compilierung von Programmen: spezielles Programm (Compiler) übersetzt Programm vor der Ausführung in Maschinensprache eines gegebenen Prozessors Interpretation von Programmen: spezielles Programm (Interpreter) setzt Programmbefehle während der Ausführungszeit auf Prozessorbefehle um

Compiler vs. Interpreter Compiler Allgemein schnellere Ausführung Ursprünglicher Code in der Regel nicht mehr rekonstruierbar Schutz des Quelltextes Breiter Einsatz für Programmierung von Betriebssystemen, Anwendungsprogrammen, etc. C, C++, Pascal/Delphi, FORTRAN und zahlreiche weitere Interpreter Langsamere Ausführung wegen Aufwand für Übersetzung Laufzeitfehler durch Syntaxfehler möglich Quelltext des Programmes bleibt sichtbar: kein Schutz, aber offen für beliebige Anpassungen durch dritte Aber: plattformunabhängige Programme (überall wo Interpreter läuft) Einsatz als Skriptsprachen zur Ausführungssteuerung, und im Web etc. MATLAB, Perl, PHP, JavaScript, Python und viele andere

Compiler vs. Interpreter /2 In letzten Jahren Mischformen populär, wie z.b. Java (Sun) und.net (Microsoft) Compiler übersetzt Programme in maschinennahen, aber plattformunabhängigen Code Laufzeitumgebung (JRE bei Java, CLR bei.net) übernimmt letzten Schritt der Umsetzung Zum Teil auch Compiler für interpretierte Sprachen vorhanden Technisch unproblematisch Dient der Steigerung der Performance und/oder dem Schutz der Quelltexte Compiler auch für MATLAB-Programme

Algorithmen Aber: was genau macht das Programm? Rückblick: Definition (Informatik) Informatik ist die Wissenschaft von der systematischen und automatischen Verarbeitung von Informationen, insbesondere mit Hilfe von Computern. Die systematische und automatische Verarbeitung wird durch den Begriff Algorithmus präzisiert. Definition (Algorithmus) Ein Algorithmus ist eine eindeutige Beschreibung eines in mehreren Schritten durchzuführenden Vorgangs zur Lösung einer bestimmten Klasse von Problemen.

Algorithmusbeispiel: Kuchen Backen Problem: Kuchen Backen Algoritmus: Backrezept Input: Eier, Mehl,... Output: Kuchen 1. Zutaten vermengen 2. Teig kneten 3. Teig in Backform 4. Backform in Backofen 5. Kuchen 1h backen 6. Kuchen entnehmen

Vom Problem zur Lösung Problemanalyse Algorithmus Programmierung Von der Entwicklung bis zur Ausführung von Programmen Programm in Hochsprache Übersetzung Programm in Maschinen- Sprache Ausführung Durch Prozessor Arbeitsschritt Ergebnis Prozess mit Ausgabe des Resultats

Die MATLAB Entwicklungsumgebung Grafische Nutzungsschnittstelle für Interaktives Lösen mathematischer Probleme Verwaltung von Daten in Variablen und Dateien Grafische Ausgabe von Funktionsdiagrammen (Plots) Bearbeitung und Ausführung von Programmen Erweiterungen der Funktionalität

Die MATLAB Entwicklungsumgebung

Die MATLAB Entwicklungsumgebung: Aufbau Hauptfenster: Befehlsfenster (Command Window): interaktive Eingabe einzelner Befehle Editor: Erstellen und Ausführen von Programmen, gespeichert als.m-dateien Weitere Fenster: Dateibrowser (Current Folder): Überblick über Programme und andere Dateien Befehlshistorie (Command History): zuletzt eingegebene Befehle Arbeitsumgebung (Workspace): Belegung, Typ und Speichergröße aktuell genutzter Variablen Fenster können durch nach Bedarf angeordnet oder geschlossen werden

MATLAB als Programmiersprache MATLAB ist eine interpretierte Programmiersprache: Programme werden zu Laufzeit übersetzt MATLAB ist eine imperative Programmiersprache: ein Algorithmus ist dargestellt als Sequenz von hintereinander auszuführenden Befehlen MATLAB ist eine prozedurale Programmiersprache: zur Strukturierung des Quelltextes kann der Gesamtalgorithmus in inhaltlich zusammenhängende und durch Aufruf verwendbare Prozeduren (Funktionen) zerlegt werden MATLAB ist eine objekt-orientierte Programmiersprache: zur weiteren Strukturierung können Daten von Objekten sowie die zugehörige Funktionalität als Methoden in Klassen zusammengefasst werden

MATLAB als Programmiersprache: Grundlagen Variablen halten Werte von Zahlen, Vektoren, Matrizen, Zeichenketten und komplexere Objekten Operatoren können Werte berechnen und Variablen verändern Zahlreiche vordefinierte Funktionen Funktionen können auch vom Nutzer als Teil eines Programms definiert werden Ausdrücke setzen sich aus Variablen, Operatoren und Funktionsaufrufen zusammen Programm besteht aus Sequenz von Ausdrücken Außerdem: Programmablauf über Steueranweisung Bedingte Ausführung/Verzweigungen Programmschleifen

Variablen Variable ist (wie aus der Mathematik gewohnt) ein Name/Platzhalter für einen veränderlichen Wert» x = 7;» y = 3.1415926;» z = Hello! ; Werte können Zahlen, logische Werte, Zeichen/-ketten, Vektoren, Matrizen und komplexere oder nutzerdefinierte Konstrukte sein

Datentypen Dienen der Festlegung, welche Arten von Werten genutzt werden können, wie sie gespeichert, verarbeitet und interpretiert werden Grundlegende Klassen von Datentypen Numerische Datentypen: ganze Zahlen (Integer) und Fließkommazahlen (Floating Point) Textdatentypen: Zeichen (Character), Zeichenketten (String) Logische Datentypen (Logical), meist zweiwertige Bool schen Logik mit Werten Wahr oder Falsch Für numerische Daten in der Regel Unterklassen verfügbar je nach Anforderungen bzgl. Speicherverbrauch, Datenbereichsgröße und Genauigkeit Typkonstruktoren wie Felder, Strukturen, Klassen, etc. erlauben Zusammensetzen komplexerer Typen, z.b. für Mediendaten (Bilder, Audio, Video) oder anwendungsspezifische Daten

Grundlegende Datentypen in MATLAB /1 double für beliebige Fließkommazahlen Wird kein Typ für eine numerische Variable angegeben, ist der Typ automatisch double Verwendet 8 Byte, Werte zwischen 3.4 10 38 und 3.4 10 38 Präzision bis ca 15 Dezimalstellen Alternative: single mit 4 Byte Kodierung entsprechend IEEE Standard for Floating-Point Arithmetic (IEEE 754) int32 für ganze Zahlen 4 Byte (32 Bit), Wertebereich von 2 31 und 231 1 Alternativen: int8, int16, int64 bzw. ohne Vorzeichen (unsigned) uint8, uint16, uint32, uint64

Grundlegende Datentypen in MATLAB /2 char für Zeichen und Zeichenketten Unicode: 2 Bytes pro Zeichen Felder für Zeichenktten Automatischer Typ bei Zuweisung mit Hochkommas» s = Das ist eine Zeichenkette. ; Alternative: string als Datentyp mit zusätzlichen Funktionen auf textuelle Daten logical für logische Werte Zweiwertige Logik: Werte 0 (false) oder 1 (true) Erlauben logische Verknüpfungen: and, or, not, xor, etc.

Datentypen Konvertieren oder Festlegen Spezielle Funktionen mit Namen der Datentypen erlauben Typkonvertierung bzw. Typzuweisung bei Erzeugung Können bei der Variablendeklaration verwendet werden» y = int8(5) y = 5 Vorsicht: Typkonvertierung kann zu Präzisionsverlust» i = int32(3.1415) i = 3 oder Fehlern führen» y = uint32(-5) y = 0

Datentypen Anzeigen Anzeige aktueller Variablen mit Datentypen whos» x = 7;» y = 3.1415926;» z = Hello! ;» whos Variables in the current scope: Attr Name Size Bytes Class oder mit x 1x1 8 double y 1x1 8 double z 1x6 6 char» whos <variablenname> für einzelne Variable Hilfe zu Datentypen mit help datatypes

Der Zuweisungsopeator = Zuweisung: Variable auf der linken Seite erhält Wert des evaluierten Ausdrucks auf der rechten Seite Erlaubt z.b.» x = x + 4; Nicht als Gleichung zu verstehen Zu lesen als der neue Wert von x ergibt sich aus dem alten Wert von x plus 4

Weitere wichtige Operatoren Standardisierte Rechenoperatoren wie +,,, etc. Existieren als Operatoren für Einzelwerte (z.b..+) oder für alle Werte von Vektoren oder Matrizen (einfach +) Auch definiert als (überladbare) Funktionen z.b. plus() Vergleichsoperatoren wie == (Gleicheit), = (Ungleichheit), <=, >=, >, < etc. Ergebnis der Auswertung ist logischer Wert Logische Operatoren AND (& oder &&), OR ( oder ) und NOT ( ) Weitere Operatoren für Matrizen und Mengen sowie nutzerdefinierte Operatoren

Vektoren Tupel von Fließkommazahlen unterschiedlicher Dimensionalität In der Programmierung auch als Feld (Array) bezeichnet Spaltenvektor (n 1-Matrix)» v = [1 ; 2 ; 3] v = 1 2 3 Zeilenvektor (1 n-matrix)» u = [1, 2, 3] u = 1 2 3

Vektoren /2 Neben der Belegung mit literalen Werten auch Hilfsfunktionen vorhanden Vorbelegung mit Nullwerten» v = zeros(1,5) v = 0 0 0 0 0 Vorbelegung mit Zahlenbereich» v = 1:4 v = 1 2 3 4 Array von bestimmtem Datentyp durch Kombination mit Typkonvertierungsfunktion» v = int8(1:5) v = 1 2 3 4 5

Matrizen Matrizen von Fließkommazahlen unterschiedlicher Dimensionalität» m = [ 1, 5 ; 7, 2] m = 1 5 7 2 Zahlreiche Funktionen zur Definition vorhanden, z.b.» m = zeros(3,3) m = 0 0 0 0 0 0 0 0 0

Operationen auf Matrizen Manche Operationen können auf ganze Matrix oder auf Komponenten. ausgeführt werden» m = [ 1, 5 ; 7, 2];» m * m ans = 36 15 21 39» m.* m ans = 1 25 49 4