TIK - Technische Informations- und Kommunikationsdienste

Häufig gestellte Fragen zum virtuellen Programmierlabor (ViPLab)

Hier finden Sie häufig gestellte Fragen zum virtuellen Programmierlabor (ViPLab).


Willkommen im FAQ-Bereich. Hier finden Sie alle Fragen und Antworten zu den Diensten. Bei weiteren Fragen können Sie sich an unseren Support wenden.

Häufig gestellte Fragen: Virtuelles Programmierlabor

Oben in ViPLab kann die zu bearbeitende Aufgabe ausgesucht werden. Links im Textfeld steht der Teil des Programms, das zur Lösung der Aufgabe vervollständigt werden muss. Unten kann mit Execute das Programm ausgeführt werden. Oberhalb des Textfeldes kann das Programm gespeichert, geöffnet, gedruckt werden und Zeilennummern kann man sich anzeigen lassen, um die Stelle, an der eine Fehlermeldung auftritt, leichter zu finden. Im rechten Textfeld steht dann die Ausgabe und eventuell Fehlermeldungen.

Aus Sicherheitsgründen sind einige Funktionen deaktiviert. Es kann auch aus didaktischen Gründen sinnvoll sein, eine beschränkende Struktur vorzugeben. Außerdem verbietet bei einigen Programmen die Lizenz, dass man die Programme vollumfänglich im Internet zugänglich macht.

ViPLab läuft im Browser. Wird dieser geschlossen oder die Seite neu geladen, dann gehen alle Änderungen verloren. Man kann seine Arbeit auf dem aktuellen Rechner speichern. Damit ist man vor Datenverlust geschützt und kann auch später weiterprogrammieren.

Es gibt nicht die eine richtige Lösung, sondern es sind immer mehrere Lösungswege denkbar. Man kann zwar beweisen, ob ein Programm korrekt ist oder nicht, es ist allerdings aufwändig und wird in der Praxis nicht gemacht. Deshalb versucht man mit charakteristischen Beispielen zu testen und die Ergebnisse zu prüfen. Falsch-Eingaben sollten ein Programm nicht abstürzen lassen oder falsche Resultate liefern, sondern eine aussagekräftige Fehlermeldung zurückgeben.

Man muss zwei Arten von Fehlern unterscheiden. 
Es gibt syntaktische Fehler, das heißt die Form des Programms entspricht nicht den Regeln der Programmiersprache; vergleichbar einem Grammatikfehler bei Sprachen. Computer sind da sehr strikt. Bei syntaktischen Fehlern bricht das Programm ab und gibt eine Fehlermeldung aus, die Hinweise auf den Fehler geben. Es wird dabei die Zeilennummer mit angegeben, so dass der Fehler in dieser Zeile oder der näheren Umgebung zu suchen ist. 
Die Zeile 


n = length(b; 


führt zur Fehlermeldung wie 


>> {#??? Error: File: /work/16/source.m Line: 31 Column: 13 Unbalanced or unexpected parenthesis or bracket. 

die angibt, dass die Zahl der öffnenden und schließenden Klammern ( bzw. ) unterschiedlich ist. Damit sollte der Fehler zu finden sein. 
Schwieriger zu finden sind semantische Fehler, also logische Fehler im Programm. Bei Sprache wären das korrekte Sätze mit einer falschen Aussage. Inhaltliche Fehler sind schwerer zu finden. Es gibt einige klassische Fehler. Oft werden Schleifen einmal zu viel oder zu wenig durchlaufen, Vorzeichenfehler in Bedingungen oder Dimensionsfehler bei Vektoren und Matrizen treten auf. Manchmal bricht das Programm ab, wenn der Befehl nicht ausgeführt werden kann. Dann ist der Fehler leicht einzugrenzen. Stimmt allerdings das Ergebnis nicht, muss das Programm noch einmal durchdacht werden. Es kann helfen Zwischenergebnisse mit disp, printf ausgeben zu lassen. Oft haben die Variablen andere Werte, als man fälschlicher Weise vermutet.

Quelltext sollte formatiert werden, damit man ihn leichter lesen und verstehen kann. Innerhalb einer Funktion, Schleife oder If-Verzweigung wird um zwei Leerzeichen oder ein Vielfaches davon eingerückt. 
if t > 0 
  disp('Positiv.'); 
else 
  disp('Negativ.'); 
end;
 
Sind mehrere Schleifen oder Verzweigungen geschachtelt, so wird jedesmal weiter eingerückt. Durch Einrücken ist schnell erkennbar, wo eine Schleife oder Verzweigung endet. 
for i = 1:n   for j = i:n 
    if (i == j) 
      disp('Gleichheit.'); 
    end; 
  end; 
end;
 
Vor inhaltlich zusammenhängenden Teilen sollte eine Kommentarzeile stehen, die beschreibt was warum im Folgenden passiert. 
% bilde Betrag von t um negative Zeit auszuschließen 
if t < 0 
  t = t * (-1); 
end;
 
Bei Klammern und Leerzeichen nicht geizig sein, denn Zeichen-Bandwürmer sind schwer lesbar. Vor und nach jedem Gleichzeichen ein Leerzeichen, nach if, while und for ein Leerzeichen und bei logischen Ausdrücken sorgen Klammern ebenfalls für mehr Klarheit. 
if ((t > 0) && (t * (2 + i) == 10)) || (t ~= 2) 
  disp('wahr.'); 
end;

Diese Begriffe haben beim Programmieren eine leicht andere Bedeutung als in der Mathematik. 
Iterativ bedeutet schrittweises Lösen. Meistens wird dies mit For- oder While-Schleifen erledigt. Beispielsweise kann die Vektorsumme berechnet werden, indem mit einer Schleife alle Vektoreinträge auf eine Zwischensumme addiert wird. Als iteratives Programm: 
summe = 0; 
for i = 1:len(vector) 
   summe = summe + vector(i); 
end;
 
Rekursiv bedeutet, dass sich die Funktion selbst aufruft, allerdings mit einem etwas leichteren Problem, bis das Problem trivial ist und die einzelnen Schritte leicht zu lösen sind. Rekursive Programme sind am Anfang meist nicht so leicht zu verstehen, ergeben aber oft kompakte und elegante Lösungen. 
Die Vektorsumme als rekursives Programm könnte den ersten Eintrag auf die Summe der restlichen Vektoreinträge addieren, welche wiederrum durch das Programm selbst aufgerufen wird; bei einem eindimensionalen Vektor ist die Summe offensichtlich: 
function [summe] = vectorsumme(vector) 
  if len(vector) == 1 
    summe = vector(1); 
   else 
     summe = vector(1) + vectorsumme(vector(2:len(vector))); 
   end; 
end;

Da ViPLab das Programm an einen Server schickt und dieser das Programm mit Matlab ausführt, beschränken sich die Unterschiede vor allem auf die Oberfläche. ViPLab läuft im Browser und muss deshalb nicht installiert werden. Außerdem sind für die Aufgaben bereits Programmteile hinterlegt, so dass nur noch der eigentliche Algorithmus implementiert werden muss. 
Aus Lizenzgründen sind einige für die jeweilige Aufgabe nicht notwendige Matlab-Funktionen für ViPLab gesperrt.

Imperative Programmiersprachen wie Matlab, C, C++, Java und viele weitere sind sich sehr ähnlich. Wenn man die Konzepte und die Vorgehensweise mit einer Programmiersprache verinnerlicht hat, ist das Erlernen weiterer Sprachen nicht mehr schwer. 
Matlab hebt sich aber durch die Möglichkeit Vektoren und Matrizen direkt zu verwenden von den anderen Sprachen ab. Auch die zahlreichen mathematischen Funktionen erleichtern das Programmieren von numerischen Algorithmen. Außerdem ist Matlab und das darauf aufbauende Simulink der Marktführer für mathematische Software in der Industrie. Auch in der Forschung wird es gerne eingesetzt. Es lohnt sich also, sich Matlab anzueignen.

Matlab bietet sehr viele mathematische Funktionen an. Da man unmöglich alle kennen kann, gibt es eine Liste aller Befehle. Oft helfen auch Einführungen, wie der Mathe-Online-Kurs Matlab, How-Tos und FAQs zu Matlab oder Suchmaschinen weiter, wenn sich der gesuchte Befehl sonst nicht finden lässt. Leider kann man bei ViPLab nicht alle Funktionen einsetzen, da der volle Funktionsumfang nicht allgemein zugänglich gemacht werden darf.

Ja, das ist problemlos möglich. Auf zahlreichen Rechnern an der Universität ist Matlab installiert. Matlab direkt zu benutzen bietet eine interaktive Eingabe, bei der man Schritt für Schritt rechnen kann, anstatt ein ganzes Programm zu schreiben. Außerdem gibt es mit dem Debugger eine hilfreiche Möglichkeit Laufzeitfehler zu suchen. Für den eigenen Rechner kann Matlab in einer Campuslizenz von der studGOODS-Homepage des RUS heruntergeladen werden. Darüber hinaus gibt es mit GNU Octave und SciLab freie Software, die weitgehend kompatibel mit Matlab ist.

Zum Seitenanfang