%Einige einfache Beispiele zu MATLAB-Sprachelementen.
%Kommentare werden zeilenweise durch % (Prozentzeichen) eingeleitet.
%Nach dem Aufruf von MATLAB (Klicken bei windoofs-Rechnern,
%Tippen des Wortes "matlab" in ein Kommandofenster bei Suns)
%erscheint in jedem Fall ein Fenster mit einem 'Prompt' >>
%Danach werden Befehle sofort ausgeführt:
format loose %das Gegenteil von compact
x=3*4+5
disp('Viel Luft im Format: Enter-Taste drücken'); pause
%Will mann nicht soviel Luft zwischen den Zeilen, schreibe man
format compact
x=pi*4
disp('Luft ist weg und langes Format kommt: Enter-Taste drücken'); pause
%Möchte man mehr Stellen sehen, schreibe man
format long
x=pi*4
%Möchte man wieder zur kurzen Form zurückkehren, schreibe man 
format short
disp('diverse Rechnungen: Enter-Taste drücken'); pause
%Längere Programme schreibe man in eine Datei der Form "datei.m"
%Dabei ist die Endung .m notwendig. Diese Programme werden 
%als MATLAB-Programme identifiziert und mit Tippen von
%"datei" (ohne " ") und ohne Endung aufgerufen.
%Wesentlich in MATLAB sind Variablen vom Typ Matrix oder Vektor,
%wobei explizite Deklarationen nicht möglich  sind. 
%Vektoren sehen entweder so aus
x=[1 2 3 4 5] %Zeilenvektoren oder so
y=[1;2;3;4;5] %oder mit der gleichen Bedeutung
y=[1
   2
   3
   4
   5]; %Spaltenvektor
disp('Matrix: 2 Zeilen, 3 Spalten');
A=[1 2 3; 4 5 6]
%oder
A=[1 2 3
   4 5 6];
       %x kann aber im vorliegenden Fall auch einfach in der Form
x=1:5; %geschrieben werden. Man kann leicht einen 
       %Zeilen- in einen Spaltenvektor umwandeln
y=x';  %Jetzt ist y ein Spaltenvektor wie oben.
       %Das Semikolon am Ende hat eine total neue Bedeutung: 
       %Es verhindert das Ausgeben auf den Bildschirm.
y;      %allein bewirkt, daß y auf dem Schirm angezeigt wird.
       %Man kann Operationen auf alle Vektorkomponeneten gleichzeitig anwenden:
disp('x/3:');
x/3
disp('x+3:');
x+3
disp('x.^2:');
x.^2
disp('x.^x: Enter-Taste drücken'); pause
     %Operationen wie .* oder ./ oder .^ wirken komponentenweise 
     %auf den ganzen Vektor und entsprechend auch
x.^x
disp('x./x: Enter-Taste drücken'); pause
x./x
disp('A.^2: Enter-Taste drücken'); pause
A.^2
     %Ist 
x=0:0.01:2*pi;   %also x=0,0.01,0.02,...,2*pi, so ist 
y=sin(x); %entsprechend der Vektor sin(0),sin(0.01),sin(0.02),...,sin(2*pi)
%Ein Zeichenbefehl hat dann die Foerm
disp('Sinus-Kurve in blau: Enter-Taste drücken'); pause
plot(x,y);
disp('Können Sie auch noch beim nächsten Mal die x-Achse einzeichnen?');
disp('2 Punkte verbinden: Enter-Taste drücken'); pause
%Will man zwei Punkte (x,y), (u,v) geradlinig verbinden, so ist
x=0;y=0;u=2;v=-1; %und
plot([x u],[y v]) %der geignete Befehl. Möchte man eine rote Linie, 
disp('dieselben Punkte in rot verbinden: Enter-Taste drücken'); pause
%so schreibe man
plot([x u],[y v],'r');
disp('dasselbe gepunktet (suchen, wo sind die Punkte?): Enter-Taste drücken'); pause 
plot([x u],[y v],'r.');
disp('Jetzt kommt etwas Langes, nämlich help plot: Enter-Taste drücken'); pause
%Ein wesentliche Informationsquelle sind die beiden Befehle
help plot %(plot nur als Beispiel) und
disp('Jetzt kommt lookfor cyan (dauert), Enter-Taste drücken'); pause
lookfor cyan
disp('cyan kommt also im Programm "cool" vor');
%help gibt Informationen über bestehende Programme, lookfor sucht in den %Kommentaren aller vorhandenen Programme (auch in den selbst geschriebenen)
%nach dem Wort "text".

%Ein wesentlicher Unterschied zu Pascal: Alle Schleifen und alle if-Abfragen
%müssen mit "end" (oder "end;") beendet werden. Als Schleifen gibt es "for"-
%und "while"-Schleifen, kein "repeat". Ein "case ... of" gibt es in der Form 
%von "switch".

%Prozeduren müssen in separate Dateien ausgelagert werden.
%Aufgerufen werden sie mit dem Dateinamen, der mit dem Prozedurnamen
%übereinstimmen sollte. Prozeduren haben immer die Form
%function [Ausgabeliste]=Name(Eingabeliste). 
%Anweisungsteil

%Im Gegensatz zu Pascal, kann bei der Formulierung der Prozedur 
%die Anzahle der eingehenden oder ausgehenden Parameter abgefragt werden: %"nargin", "nargout".
%Strings können über eval(String) direkt ausgeführt werden, bei Funktionen
%beispielsweise 
disp('Sinus an der Stelle 0.4 über einen String: Enter-Taste drücken'); pause
s='sin'; y=feval(s,0.4) %gibt y=sin(0.4);

disp('Probieren Sie zuerst im Dialogfenster alles Mögliche aus!');
disp('Schreiben Sie aber schließlich Ihre Programme in Dateien.');
disp('Schluß der Demonstration!');
