Ulrich Stein

Ähnliche Dokumente
Angewandte Mathematik und Programmierung

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

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

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Informatik Erste Schritte mit MATLAB

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

Ein- und Ausgabe mit Dateien

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

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

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Advanced Programming in C

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

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

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

Michael Dienert. 8. Dezember 2016

Arrays (Felder/Vektoren)

Einführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin

Ein- und Ausgabe mit Dateien

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

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung.

Übungsblatt 2. Java Vorkurs (WS 2017)

Probeklausur Name: (c)

Vorkurs Informatik WiSe 17/18

E-/A-Funktionalität nicht Teil der Programmiersprache

Grundlagen der Programmierung

MATLAB-Tutorium WS18 Nathalie Marion Frieß

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010

Ein- und Ausgabe. C - Kurs Mario Bodemann. 15. September 2010

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Vorkurs Informatik WiSe 16/17

Datei-Verarbeitung. Peter Sobe 60

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16

Java Einführung Methoden. Kapitel 6

1 Klassen anlegen und Objekte erzeugen

Die Programmiersprache C Eine Einführung

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

Kontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer

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

Programmierkurs C++ Datenstrukturen Seite 1

WS2018/ Oktober 2018

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

Hinweise zur Prüfung Programmieren WS0304 Seite 1. Schreiben Sie folgende For-Schleife in eine äquivalente While-Schleife um.

2. Programmierung in C

Erste Java-Programme (Scopes und Rekursion)

GI Vektoren

Programmiersprachen Einführung in C

Informatik II Prüfungsvorbereitungskurs

Algorithmen und Datenstrukturen II

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Dateizugriff unter C

Grundlagen der Programmierung

Praxis der Programmierung

Klausur Grundlagen der Programmierung

Vektoren 105. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier

Programmiervorkurs für die Numerik Teil 2/4

Informatik II. Woche 10, Giuseppe Accaputo

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Repetitorium Informatik (Java)

1 Klassen anlegen und Objekte erzeugen

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Methoden und Wrapperklassen

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Unterlagen. CPP-Uebungen-08/

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

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

8. Arbeiten mit Dateien

2 Eine einfache Programmiersprache

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

Herzlich willkommen!

Übungspaket 14 Eindimensionale Arrays

Informatik 1 MATLAB-Labor 1

C- Kurs 03 Ausdrücke und Operatoren

Einführung in die Programmierung mit VBA

Mathematische Computer-Software

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Algorithmen zur Datenanalyse in C++

Einführung in die Programmierung

Übungspaket 23 Mehrdimensionale Arrays

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.

Physische Datenstrukturen

Praxis der Programmierung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

ÜBUNGS-BLOCK 7 LÖSUNGEN

Inhaltsverzeichnis. Inhalt. Bemerkung... 9 Vorwort Programme und Programmiersprachen

einlesen n > 0? Ausgabe Negative Zahl

Grundlagen der Programmierung

Grundlagen der Programmierung

Transkript:

Von C nach MATLAB Einführung in MATLAB für Personen mit C-Kenntnissen Datentypen ähnlich in C und MATLAB, dort aber automatische Typzuweisung möglich double a = 2; Arrays a = double( 2 ); aber auch a = 2; nahezu identisch in C und MATLAB, jedoch startet der Index in C mit 0 in MATLAB mit 1. In C verwet man eckige Klammern beim Zugriff auf ein Element, in MATLAB runde: z.b. a(5) = 4711; In MATLAB einfaches Erzeugen von mehrdimensionalen Arrays (Liste): z.b. a = [ 2, 3, 4; 1, 2, 5 ]; length : Länge des Vektors, size : Zahl der Zeilen und Spalten Funktionen in C Funktionskopf: mit Namen + Parameter RTyp FName ( PTyp1 p1, PTyp2 p2,... ) z.b. double sin( double x ) Funktionsrumpf mit Programm-Code in Block {... } mehrere Funktionen in einer c-datei, Deklaration über Header-Datei include... Kompilieren + evtl. Linken, Haupt-Programm main zum Testen, exe-datei mit dem Namen der C-Code- Datei oder obj-file, Library, DLL, Aufruf der exe.datei über den Namen, Konsolenanwung startet dann mit main in MATLAB startet mit Bezeichner function, keine Typ-Angaben function RName = FName ( p1, p2,... ) z.b. function y = sin( x ) Funktionsrumpf mit Programm-Code direkt unter Funktionskopf, bis evtl. nächstes function Name der Datei (M-File) identisch mit Funktion, z.b. M-File sin.m für Funktion sin darunter evtl. weitere lokale (statische) Funktionen Interpretierter Programm-Code (kein Kompilieren) Aufruf der Funktion direkt über den Namen, damit startet direkt diese Funktion Informatik 2 1

Beispiel: Funktionalität: Addition zweier Zahlen a und b, Rückgabe der Summe c = a + b; C-Version in Datei addiere.c #include <stdio.h> #include "addiere.h" // mit Funktionskopf void main( void ) { double a = 2, b = 3, c = 0; c = addiere( a, b ); printf( "%g + %g = %g \n", a, b, c ); Header-Datei addiere.h mit Funktions-Deklaration: double addiere( double a, double b ); Vor dem Aufruf noch Kompilieren und Linken von addiere.exe } MATLAB-Version in Datei addiere.m double addiere( double a, double b ) function c = addiere( a, b ) { return( a+b ); c = a+b; %% keine Typ-Angabe } Aufruf im Command-Window: Aufruf in Konsole: >> addiere; >> c = addiere( 2, 3 ); 2 + 3 = 5 c = 5 Parameter-Übergabe ähnlich in C und MATLAB, dort Übergabe an Funktion ohne Typ-Check double addiere( double a, double b ) function c = addiere( a, b ) Rückgabe: als Funktionswert, in C über return(c), in MATLAB über Zuweisung an Parameter c =... in C auch über Zeiger: void fname( double * pc ) {...; *pc = a + b;... } Mehrere Rückgabe-Parameter über Zeiger void fname( double * pc1, double * pc2,... ) Rückgabe als Liste function [u,f] = Kreis( r ) u = Umfang( r ); f = Flaeche( r ); Informatik 2 2

Ausgabe auf dem Bildschirm nahezu identisch in C und MATLAB, dort ' an Stelle von " printf( "Hello, world %s \n", t ); fprintf( 'Hello, world %s \n', t ); Daten von Tastatur einlesen x = input( 'Bitte Zahl eingeben: ' ); t = input( 'Bitte Text eingeben: ' ); Option s für reine Text-Eingabe: x = input( 'Bitte Text eingeben: ', 's' ); Operatoren nahezu identisch in C und MATLAB, wobei dort die Kurzformen (++, +=,...) fehlen: Arithmetisch: +, -, *, /, ++, -- Zuweisungen: =, +=, - =, *=, /= Vergleiche: >, >=, <, <=, = =,!= (ungleich) Logisch: && (UND). (ODER),! (NICHT) +, -, *, / = >, >=, <, <=, = =, ~= (ungleich) && (UND), (ODER), ~ (NICHT) Bedingungen identisch in C und MATLAB, mit den oben angeführten Operatoren, z.b. ( x < 9 ), ( x = = 0 ), ( x >-1 && x < 1 ) Informatik 2 3

Verzweigungen (if... else) nahezu identisch in C und MATLAB, dort Schlüsselwort an Stelle der Blöcke {... } if( x > 0 ) if( x > 0 ) {... }... else else {... }... Beispiel function r = mysqrt( p ) if( p < 0 ) fprintf( 'FEHLER: Negatives Argument %g \n', p ); r = 0; else r = sqrt( p ); Zählschleife nahezu identisch in C und MATLAB, leicht unterschiedliche Notation k++ für Inkrement um 1 Inkrementwert 1 als 2. Parameter for ( k=1; k<=5; k++ ) for ( k = 1 : 1 : 5 ) { a(k) = k * k; a[k] = k * k; } Beispiel function quadrat( ) for( n=1:6 ) %% automatisch Inkrement 1 q = n * n; fprintf( ' %3d %3d \n', n, q ); Wiederholschleife nahezu identisch in C und MATLAB while( x > 0 ) {... } while( x < 0 )... Informatik 2 4

Strukturen nahezu identisch in C und MATLAB dienen zum Strukturieren von Daten, z.b. Personal-Karte in Einwohnermeldeamt struct mytyp {double n1; double n2;} var; var.n1 = 5; var.n2 = var.n1 * 2; Beispiel pers.vorname = 'Otto'; pers.nachname = 'Müller'; pers.nummer = '0815'; pers.gebdat = '24.12.1980';... var = struct('n1',0, 'n1',0); var.n1 = 5; var.n2 = var.n1 * 2; Vereinfacht die Datenübergabe, da kompletter Struct übergeben werden kann. In MATLAB: Deklaration pers= struct( 'Vorname', [ ], 'Nachname', [ ],... ); nicht zwing notwig, es reicht direkte Zuweisung: pers.vorname = 'Otto';... Datei-Operationen nahezu identisch in C und MATLAB FILE * fid = fopen( "d.txt txt", "w"); fid = fopen( 'd.txt txt', 'w'); fprintf( fid, "Hello file \n" ); fprintf( fid, 'Hello file \n' ); fclose( fid ); fclose( fid ); Datei öffnen: fopen, mit den Optionen: w = write : Schreiben r = read : Lesen a = app : Zeilen anhängen Rückgabe File-Identifier, zum Zugriff auf geöffnete Datei, z.b. zum Beschreiben über fprintf oder zum Auslesen von Daten z.b. über fgetl Datei nach den Operationen schließen: fclose Informatik 2 5

Strings nahezu identisch in C und MATLAB, in C mit abschließem Null-Byte char txt[5] = "vier"; txt = 'vier'; printf( "%s \n", txt ); fprintf( '%s \n', txt ) String-Funktionen meist identisch sprintf int2str str2double strcmp length... Zusammenbau von Texten, analog fprintf wandelt Ganz-Zahl in String wandelt String in Zahl vergleicht zwei Texte, gibt in MATLAB 1 zurück, wenn gleich Länge des Arrays, in diesem Fall des Strings Grafik in C nicht Bestandteil des Basis-Moduls 2-dimensionale Grafik: Plot eines Vektors plot( [2,3,0,4,3] ); oder Plot zweier Vektoren zueinander (x/y) plot( [10,20,30,40,50], [2,3,0,4,3] ); 3-dimensionale Grafik: Plot eines Vektorfeldes [X,Y] = meshgrid(-8:.5:8); R = sqrt(x.^2 + Y.^2) + eps; Z = sin(r)./r; surf(x,y,z) Informatik 2 6