Grundlagen der Programmierung

Ähnliche Dokumente
Programmiervorkurs für die Numerik Teil 2/4

Einführung in. Pierre Bayerl

Kurze Einführung in Octave

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

10:Exkurs MATLAB / Octave

Grundlagen der Programmierung

Einführung in Matlab Was ist MATLAB? Hilfe Variablen

Matlab Selbstlernkurs

Grundlagen der Programmierung

WiMa-Praktikum 1. Woche 8

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

Mathematische Computer-Software

Matrizen. Jörn Loviscach. Versionsstand: 12. April 2010, 19:00 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung.

Informationsverarbeitung im Bauwesen

Matrizen. Jörn Loviscach

Musterklausur_2 Grundlagen Informatik

2. Einführung in das Ingenieurtool MATLAB

Grundlagen der Programmierung

In den USA verwendet man statt dessen eckige Klammern, was sich in der Software niederschlägt (mit Ausnahmen wie Wolfram Alpha):

Matlab: eine kleine Einführung 2

GI Vektoren

PPS "Bits on Air" 1. Teil, Matlab-Tutorial Vorbereitungsaufgaben (Lösungsvorschläge)

2 Matrizen und Vektoren

Praktikum zur Vorlesung: Numerische Mathematik für Lehramt SS Matlab: Fortsetzung. Jan Mayer. 4. Mai 2006

MATLAB-Tutorium WS18 Nathalie Marion Frieß

Schülerworkshop Computertomographie Mathematik als Schlüsseltechnologie

Programming 101. Carl Herrmann IPMB & DKFZ

MATLAB Sommersemester 2018 Dr. Ulf Mäder

Zyklen: break und continue

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II

Matrizen. Jörn Loviscach. Versionsstand: 14. April 2009, 00:25

Inhaltsverzeichnis. Ulrich Stein. Einstieg in das Programmieren mit MATLAB ISBN: Weitere Informationen oder Bestellungen unter

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

INTELLIGENTE DATENANALYSE IN MATLAB

Inhaltsverzeichnis. Ulrich Stein. Programmieren mit MATLAB. Programmiersprache, Grafische Benutzeroberflächen, Anwendungen

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Tipps und Tricks in MATLAB

Strings. Daten aus Dateien einlesen und in Dateien speichern.

Einführung in die Programmierung für NF. Arrays

Einführung in die Grundlagen von Matlab. Ralph Neubecker

In den USA verwendet man statt dessen eckige Klammern, was sich in der Software niederschlägt (mit Ausnahmen wie Wolfram Alpha):

Octave/Matlab-Übungen

Prof. Dr. Stefan Funken, Dipl.-Ing. Christoph Erath 15. Mai WiMa-Praktikum (Matlab 2/9) Einführung in LATEXund Matlab

Einführung in die Programmierung (MA8003)

Erste Java-Programme (Arrays und Schleifen)

Mathematik am Computer 4. Vorlesung Matlab: Teil 1

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

Ulrich Stein. Einstieg in das Programmieren. mit MATLAB. 2., aktualisierte Auflage. Mit 153 Bildern. Fachbuchverlag Leipzig im Carl Hanser Verlag

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

2D - Plotten / Visualisierung

Grundlagen der Programmierung

Praktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben

Dr. Michael Lehn WS 2013/2014 Iris Häcker Klaus Stolle Institut für Numerische Mathematik Universität Ulm

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

INTELLIGENTE DATENANALYSE IN MATLAB. Einführung in MATLAB

Programmieren in C/C++ und MATLAB

Physische Datenstrukturen

MATLAB Einführung. Numerische Methoden für ITET und MATL Dr. S. May, D. Devaud. ETH Zürich, Seminar for Applied Mathematics

Probeklausur Name: (c)

Grundlagen von MATLAB

Übersicht Shell-Scripten

C/C++-Programmierung

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!

Ausgabe:

Programmieren in MATLAB Mehr als nur ein Taschenrechner

Scilab Consortium (École Polytechnique... Renault) kostenloses Download

Einführung in MATLAB + MATLAB Simulink. Dipl.-Inf. Markus Appel

Einführung in MATLAB Blockkurs DLR:

Inhaltsverzeichnis. Angelika Bosl. Einführung in MATLAB/Simulink. Berechnung, Programmierung, Simulation. ISBN (Buch):

Einführung in MATLAB Blockkurs DLR:

9. Vektoren. (auch Felder/array)

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

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

Tipps und Tricks für Matlab

Signale und Systeme 1 (Erste Großgruppenübung)

Übungen zum MATLAB Kurs Teil

Crashkurs: MATLAB (Teil II)

JavaScript O'REILLY. Das umfassende Referenzwerk. Deutsche Übersetzung von Ralf Kuhnert, Gisbert W. Selke & Harald Selke

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Transkript:

Grundlagen der Programmierung 12. Vorlesung 08.01.2019 1

Arrays (Felder, Vektoren) Container für mehrere Objekte Objekte in dem Container werden über Indizes adressiert (beginn bei 1) 1 2 3 4 5 6 Für Indizes dürfen Ausdrücke benutzt werden (d.h. Indizes können berechnet werden) 2

Felder Zeilenvektoren: a = [1 2 3 4] oder a = 1:4 Spaltenvektoren: b = [5; 6; 7; 8] Matrizen: c = [1 2; 3 4; 5 6] Zugriff über Zeilen/Spaltenindex in ( ) a(2) c(1,2) c([1 3], 1) auch schreib: a(2)=42; Hinzufügen: Element mit neuem Index zuweisen! Löschen: Elemente auf leere Matrix [] setzen Z.B.: zweite Spalte löschen: x(:,2) = [] 3

Felder: Operationen Array-Operationen - + -.*./.^ elementweise Felder müssen bgzl. Größe kompatibel sein auch auf mehrdimensionale Felder anwbar Matrix-Operationen Matrixmultiplikation * Lösen linearer Gleichungssysteme / \ Potenzierung ^ 4

Array Op.: Kompatible Größen = n x m n x m n x m = n x m 1 x 1 n x m = n x m n x 1 n x m = n x 1 1 x m n x m = n x m 1 x m n x m Z.B.: Multiplikationstabelle: [1:10]'.* [1:10] 5

Array Op..* vs. Matrix Op. * 6

Array Op../ vs. Matrix Op. \ 7

Traversieren eines Vektors for var = bereich block bereich ist ein Vektor: v = [1 2 3 4 5]; for x = v fprintf( %d\n, x); für jedes Element x aus dem Vektor v: 8

Traversieren eines Vektors Alle Elemente durchlaufen (Zeilenvektor!) for element = vektor... Über Index for idx = [1 : length(vektor) ] % Zugriff auf El.: vektor(idx)... 9

Beispiel: Max. Element in Vektor zz = randi(100, 1, 100); fprintf('max. Element ist: %d\n', maxi(zz)); fprintf('(mit Matlab Fkt: %d)\n', max(zz)); function m = maxi( v ) max_so_far = 0; for x = v if max_so_far < x max_so_far = x; m = max_so_far; 10

Beispiel: Max. Element mit Index zz = randi(100, 1, 10); [e,x] = maxi(zz)); fprintf('max. Element ist: %d an %d\n',e,x); function [m, max_idx] = maxi( v ) max_so_far = v(1); max_idx = 1; for idx = [2:length(v)] if max_so_far < v(idx) max_so_far = v(idx); max_idx = idx; m = max_so_far; 11

Zurück zum Notenhistogramm Aufgabe: Zahlen (Noten von 1-6) von Tastatur einlesen, bis 0 eingegeben wird, Histogramm ausgeben 12

Notenhistogramm (neu) n = zeros(1,6); eingabe = 1; while eingabe ~= 0 eingabe = input('note: '); if (eingabe > 0) && (eingabe < 7) n(eingabe) = n(eingabe) + 1; for x=[1:6] fprintf('\nnote %d: ', x); print_n_stars( n(x) ); Vektor erzeugen Element erhöhen Element ausgeben 13

Notenhistogramm (Version 3) spektrum = 6; n = zeros(1, spektrum); Leichter zu Ändern! eingabe = 1; while eingabe ~= 0 eingabe = input('note: '); if (eingabe > 0) && (eingabe <= spektrum) n(eingabe) = n(eingabe) + 1; for x = [1:spektrum] fprintf('\nnote %d: ', x); print_n_stars( n(x) ); 14

Exkurs: Plots 15

Exkurs: Plots x = linspace(0,10,100) y = sin(x) plot(x,y) 16

Exkurs: Plots plot: 2D plots plot3d: 3D plots loglog: Plots mit log. Achsen bar: Balkiagramm histogram: Histogramm pie: Tortiagramm... https://de.mathworks.com/help/matlab/2-and-3dplots.html 17

Beispiel: Zufallszahlenverteilung % Vektor mit 1000 Zahlen in ]0,1[ würfeln : zz = rand(1,1000); oder randi(10,1,1000) zz = zz.* 10; % -> in ]0,10[ zz = zz.+ 1; % -> in ]1,11[ zz = floor(zz); % abrunden -> in {1,2,...,10} % Histogramm generieren (liefert handle ): h = histogram( zz ); % Eigenschaften ändern: h.orientation = 'horizontal'; 18

Notenhistogramm (mit Matlab Plot) spektrum = 6; n = zeros(1,spektrum); eingabe = 1; while eingabe ~= 0 eingabe = input('note: '); if (eingabe > 0) && (eingabe <= spektrum) n(eingabe) = n(eingabe) + 1; diagramm = barh( n ); diagramm.facecolor = [1.0 0 0]; 19

Beispiel: Mastermind Quizmaster wählt Code: 4 Zahlen zwischen 1 und 6 Solange der Code nicht geknackt wurde: Code-Knacker rät 4 Zahlen Quizmaster bewertet den Versuch mit bis zu 4 + oder - Zeichen + für jede Zahl, die an der richtigen Stelle steht - für jede Zahl, die im Code vorkommt, aber im Versuch an der falschen stelle steht 20

Beispiel: Mastermind CODE_LEN = 4; MAX_CODE = 6; correct = correct_solution( CODE_LEN ); code = shuffle_code( CODE_LEN, MAX_CODE ); hints = []; while ~isequal( hints, correct ) guess = read_code( CODE_LEN, MAX_CODE ); hints = check_code( guess, code, CODE_LEN ); fprintf('%s\n', hints); fprintf('yayy, got it!\n'); Zum Schummeln : ; weglassen 21

Beispiel: Mastermind % liefert Vektor mit l Pluszeichen function c = correct_solution( l ) c = []; for z = 1:l c = [c '+']; % würfelt Vektor der Länge l % mit Zahlen zwischen 1 und m function code = shuffle_code( l, m ) code = randi( m, 1, l ); + an Vektor c anhängen 22

Beispiel: Mastermind % Zahl zwischen 0 und 10^l einlesen % und in Vektor umwandeln function guess = read_code( l, m ) in = 0; while in <= 0 in >= 10^l in = input('enter your guess: '); % dirty hack: guess = num2str(in) - '0'; ToDo: sicherstellen, dass Zahlen im Vektor zwischen 1 und m liegen 23

Beispiel: Mastermind % Liefere ein '+' für jede Zahl an der richtigen Pos. % Liefere ein '-' für jede Zahl im Code function hint = check_code( guess, code, l ) correct_pos = 0; % Zähler: korrekte Pos. correct_num = 0; % Zähler: korrekte Zahl for i = 1:l if guess(i) == code(i) correct_pos = correct_pos + 1; elseif ismember( guess(i), code ) correct_num = correct_num + 1; hint = build_hint( correct_pos, correct_num ); 24

Beispiel: Mastermind % Vektor mit n_pos '+', n_minus '-' function hint = build_hint( n_pos, n_minus ) hint = []; for x = 1:n_pos hint = [hint '+']; for x = 1:n_minus hint = [hint '-']; 25

Zeichenketten und Dateien 26

Zeichenketten Eingeschlossen in Sind Vektoren von Zeichen: 27

Beispiel: Leerzeichen entfernen s = 'String mit Leer Zeichen'; s2 = str_strip( s ); fprintf('mit Leerzeichen: >%s<\n', s) fprintf('ohne Leerzeichen: >%s<\n', s2) function out = str_strip( in ) o = 1; out = ''; for i = 1:length( in ) if ( ~isspace( in(i) )) out(o) = in(i); o = o + 1; C Denkweise! 28