Home Computer Pascal Kurs Site Map counter

Jetzt lerne ich Pascal... Teil 1

Warum Pascal?

Wie BASIC wurde auch Pascal als eine Sprache konzipiert zum Erlernen des Programmierens. Anders als BASIC wurde bei Pascal aber auf eine strenge Strukturierung geachtet, die auch große Programme übersichtlich macht.

Durch den Compiler Turbo Pascal von Borland wurde Pascal Mitte der achtziger Jahre sehr populär, der Compiler erzeugte nicht nur schnelle Programme, war sehr komfortabel sondern erweiterte auch Pascal stetig. Heute kann man mit dem Nachfolger Delphi alles, was auch mit anderen objektorientierten Programmiersprachen möglich ist, dabei bleibt das Pascal typische - gut verständliche Programme mit einer strengen Compilerprüfung die viele "Leichtsinnsfehler" ausschaltet erhalten.

Pascal ist daher noch immer unter Hobby Programmierern eine wichtige Sprache. Delphi als Nachfolger hat einen Stammplatz bei der Windows Programmierung errungen. Mit der Version 7 kann man auch Programme für Linux und .NET entwickeln. Zu Turbo Pascal (DOS) kompatible Freeware Pascal Versionen gibt es auch: Virtual Pascal und Free Pascal.

Dieser Kurs

Für die Programmbeispiele dieses Kurses brauchen Sie einen Pascal Compiler. Ich empfehle Turbo Pascal 5.5 - als Download frei verfügbar oder Virtual Pascal. Für beide gibt es Vor- und Nachteile. Turbo Pascal 5.5 ist kleiner (1.0 MB) und beherrscht Grafikroutinen, Virtual Pascal dagegen hat eine komfortablere IDE mit Mausunterstützung und Erweiterungen auf 32 Bit. Ich werde aber mich in diesem Kurs auf das beschränken was ein gemeinsamer Standard ist. Wobei ich als Standard hier Turbo Pascal 5.5 definiere - es gibt zahlreiche Erweiterungen zu Pascal die das Leben leichter machen Später werden wir aber auch auf neuere Entwicklungen eingehen, die nur mit einem modernen System möglich sind.


Struktur eines Pascal Programms

Ein Pascal Programm besteht aus folgenden Bestandteilen:

Jeder Teil ist optional und bis auf den Code kann es auch mehrere Teile geben, die in beliebiger Reihenfolge kommen. Typischerweise zerlegt man größere Programme in kleinere Einheiten, die dann jeweils diese Struktur im kleinen wieder haben. Beim ersten Teil gehen wie nur auf einige der möglichen Deklaration ein.

Code

Pascal Code besteht aus einzelnen Anweisungen die immer mit einem Strichpunkt ; enden. Anweisungen werden üblicherweise in Blöcke eingeschlossen die zwischen den Schlüsselwörtern BEGIN und END stehen. Überall wo eine Anweisung stehen kann, kann auch ein solcher Block stehen. Bei den Rümpfen von Prozeduren und Funktionen ist mindestens ein BEGIN END Block vorgeschrieben. Hinter dem END steht in der Regel auch ein Semikolon, da dies auch eine Anweisung ist, außer es folgt noch ein Befehlsteil oder es ist das Ende des Hauptprogramms, dann kommt ein Punkt .: END.

Bei Pascal ist anders als bei C, die Groß- und Kleinschreibung egal, Namen von Variablen, Prozeduren etc. können aus Buchstaben, Ziffern und dem Unterstrich _ bestehen, jedoch nicht mit einer Zahl anfangen. Deutsche Umlaute sind auch nicht möglich. Kommentare setzt man in {} geschweiften Klammern. Optional - nicht vorgeschrieben - aber ganz nützlich, ist es in dem Programmkopf das Schlüsselwort program zusammen mit einem Namen für das Programm zu verwenden. Dieser muss auch den Konventionen für Pascal Namen genügen.

Das einfachste Programm sieht dann so aus:

program ein_einfaches_program;
begin
end.

Das ist gleichwertig mit:

program zweite_version; program dritte_version;


begin begin
; begin
; end;
end. end.

Es gibt auch leere Anweisungen - ;; oder Begin END; Hinter End steht auch in der Regel der Strichpunkt, nur eben beim Ende des Hauptprogramms der Punkt.

Die Konstanten Deklaration

Diese besteht aus dem Schlüsselwort CONST und einer Liste von Konstanten welche die Form
const Name        = Wert;
      NochEinName = EinAndererWert;


haben. Eine Konstante ist wie der Name sagt während des ganzen Programms konstant, man kann ihr also keinen neuen Wert zu weisen. Trotzdem sind sie nützlich, wenn man wichtige Werte und Definitionen einmal deklariert und dann immer auf sie zugreifen kann, ohne das die Gefahr besteht, das ein Schreibfehler an einer Stelle oder das Vergessen einen Wert überall abzuändern, Probleme im Programm verursachen.

Eine Spezialität von Turbo Pascal sind auch vordefinierte Variablen, die bei den Konstanten stehen, obgleich es Variablen sind. Es handelt sich dabei um Variablen, die mit einem Wert vorbelegt sind. Die Definition sieht so aus:

Name: Typ = Wert;

Typ bekommen wir noch bei Variablen. Hier eine Konstantendefinition:

CONST
  version = '13.10.2000';
  Startwert: integer = 100;
  Mein_einkommen = 12*1245.50;

Man sieht hier das der Wert auch berechenbar sein kann, allerdings nur durch andere Konstanten. 12*Startwert für Mein_Einkommen wäre falsch, da Startwert eine Variable ist. Aber der Compiler wird dies merken und einen Fehler anzeigen. Der Ausdruck muss zur Übersetzungszeit berechenbar sein. Wie sie sehen, stehen Zeichenketten in einfachen Anführungszeichen und Fliesskommazahlen haben einen Dezimalpunkt, kein Komma. Der Doppelpunkt steht eigentlich für eine Variablen Deklaration. Im Folgenden haben wir also Variable Startwert geschaffen und gleich mit einem Wert vorbelegt. Die anderen Konstanten sind wirklich konstant und können ihren Wert nicht ändern.

Variablendeklaration

Hier folgen dem Schlüsselwort VAR die Variablen in der Form:
Name: Typ;

Name ist wie bei den Konstanten ein Name den sie im Programm benutzen können. Der Typ ist einer der von Pascal schon definierten Typen, oder ein selbst definierter. Letzteres kommt noch später bei eigenen Typen. Turbo Pascal definiert daneben zahlreiche Typen für den Aufruf bestimmter Funktionen. Hier eine Liste einiger einfacher Ganzzahl Typen:

Diese Variablen nehmen nur ganze Zahlen innerhalb des Wertebereiches auf und repräsentieren die Zahlen die der Prozessor direkt verarbeiten kann. Rechnungen und Operationen mit Ganzzahlwerten sind daher schneller als Fliesskommazahlen.

Ein besonderer Typ ist der Typ Boolean. Boolean hat nur zwei Werte nämlich False und True. False steht für eine falsche Aussage und True für eine wahre. Dieser Typ benötigen wir bei Vergleichen und logischen Abfragen. Er wird später noch genauer besprochen.

Es soll aber nicht verschwiegen werden, dass die Wertebereiche nur für Turbo Pascal gilt (16 Bit System). Bei dem 32 bittigen Delphi oder beim 32 bittigen Vpascal ist Integer ein 32 Bit Typ und identisch mit longint. Das klingt allerdings schlimmer als es ist, denn der Bereich ist größer als der eines 16 Bit Wertes. Der Grund ist einfach: Die Benutzung von 16 Bit Werten bringt bei 32 Bit Code keine Vorteile sondern nur Nachteile, analog bringt auch die Verwendung von Byte oder Shortint keinen Vorteil beim 16 Bit Turbo Pascal. Sie sollten sich daher angewöhnen als Regeltyp den höchsten Integertyp ihrer Plattform zu nehmen.

Für Fliesskommaberechnungen gibt es 3 Typen:

Der frühere Pascal Typ Real sollte nicht verwendet werden, da die obigen Datentypen mit dem Coprozessor berechnet werden, während Real vom Prozessor errechnet wird. Er ist zudem kein international standardisiertes Format. Im Standard Pascal gab es allerdings nur den Typ Real.

Bei den Fliesskomma Variablen kommt es mehr darauf an, was sie an Rechengenauigkeit oder Speicherplatz benötigen, nicht so sehr die Geschwindigkeit. Der Gleitkommaprozessor rechnet immer in Extended und rundet dann auf den gewünschten Wert, somit sind Single's nicht langsamer bei Berechnungen als Double. Sehr große und sehr kleine Werte werden als Exponentialzahlen geschrieben z.B. steht 1.2345e6 für die Zahl 1.2345 × 106 = 1.2345 × 1000 000 = 1234500. Die Zahl nach dem "e" steht für die Zahl der Nullen der Zehnerpotenz die man multiplizieren muss um zu der Zahl zu gelangen.

Strings gibt es beim alten Turbo Pascal als Zeichenketten die max. 255 Zeichen aufnehmen. Neuere Versionen sprengen diesen Rahmen, doch für unsere Zwecke reichen die alten Strings. Der Inhalt von Strings steht immer in Hochkommas (' '). Sollen Sonderzeichen eingefügt werden, so geht dies mit der Angabe des ASCII Codes entweder als #num oder $hex. Num steht für numerische Schreibweise hex für Hexadezimale.

{Bsp.: Dieser String endet mit einem Zeilenumbruch (CR+LF = ASCII (13) + ASCII (10)}

var
  meinstring: string;
begin
  meinstring:='Ein String mit Zeilenumbruch'#13$0A;
end.

An dem Beispiel sehen Sie auch wie in Pascal Zuweisungen an eine Variable gemacht werden: Es ist nicht das Gleichheitszeichen sondern die Kombination von Doppelpunkt und Gleichheitszeichen :=. Auch zeigt das Beispiel wie Kommentare eingefügt werden. Ein Kommentar steht immer zwischen zwei geschweiften Klammern {}. Alles was dort steht dient nur zum besseren Verständnis des Programms.

Variablen werden nicht mit einem Wert vorbelegt, das müssen sie im Programm tun über den Zuweisungsoperator := Deswegen gibt es auch die bei den Konstanten erwähnten Variablen mit Vorbelegung. Die Form:

wert: integer = 12.2;

ist auch eine Mischung von Konstantendefinition (=) und Variablendeklaration (.) und entspricht so der Zuweisung (:=).

Typen Definitionen

.. Sind Bestandteil eines späteren Kursteiles. Es ist damit möglich neue Variablentypen zu schaffen oder alte zu kombinieren bzw. im Wertebereich einzuschränken.

Das erste Programm

Nun haben wir alles für das erste Programm. Wir brauchen aber noch zwei Routinen um etwas auszugeben und eingeben zu können. Ausgaben macht man mit Writeln(). Zwischen den Klammern kommt das auszugebende, das auf dem Bildschirm erscheint. Das können mehrere Strings aber auch der Inhalt von Variablen sein. Mehrere Ausgaben werden durch Kommas getrennt z.B.:

writeln('Heute ist der ',tag,'.te ',monat,' ',jahr);

Dabei sollen tag,monat und Jahr Variablen sein, die das Datum beinhalten. Das "ln" am Ende gibt an das ein Zeilenvorschub nach der Ausgabe erfolgt. Will man das nicht so erfüllt write() dasselbe nur ohne Zeilenvorschub.

Nun fehlt noch eine Routine die Daten einliest. Dies macht Readln(Variable) bzw. Read(Variable). Auch hier besteht der Unterschied nur in einem Zeilenvorschub nach dem Einlesen. Auch hier sind mehrere Werte möglich die durch Kommas getrennt werden. Beim Eingeben steht ein Leerzeichen als Trenner. Es ist klar das mehrere String Werte nicht so eingelesen werden können, da Strings Leerzeichen enthalten können.

Kommen wir zum ersten Programm: es gibt nur einen Text aus und wartet dann darauf das der Anwender auf die ENTER Taste drückt (readln liest gar keinen Wert ein).

Const
  Titel = 'Mein erstes Programm!';
begin
  writeln(Titel);
  writeln('ENTER drücken zum Beenden!');
  readln;
  writeln('That''s all!');
end.

Es gibt hier zwei Besonderheiten: Erstens Readln liest gar nichts ein, dann kann man die Klammern weglassen. Zweitens: Ich will ein Hochkomma ausgeben, da dies aber das Stringende Zeichen ist gibt es die Vereinbarung es doppelt anzugeben, dann weis der Compiler , dass es hier nicht um das Stringende sondern ein Hochkomma geht. Alternativ hätte ich den ASCII Code angeben können dann stände da:

writeln('That''s all!');

Nun sind Sie dran. Als erste Übung sollten Sie folgendes Programm schreiben:
Der Benutzer sollte die Zinsen von Bundesschatzbriefen berechnen können. Diese haben variable Zinsen von

1.tes Jahr 4.5 %
2.tes Jahr 4.75 %
3.tes Jahr 5.0 %
4.tes Jahr 5.25 %
5.tes Jahr 5.50 %
6.tes und 7 Jahr mit 5.75 %.

Die Zinsen werden jährlich ausgeschüttet und das Programm sollte diese Addieren. Da sowohl die Zinsen wie auch Laufzeit fest liegen, bietet es sich an, diese als Konstanten festzulegen und den Benutzer nur um den anzulegenden Betrag als Variable zu fragen. Die Formel für die Berechnung der Zinsen ist:

zinsen:=zinsen+(Kapital*Zinssatz/100);

Das heißt: Die Zinsen sind der alte Wert der Zinsen (vom letzten Jahr) + dem Kapital * Zinssatz. Da der Zinssatz in % ist muss man dies noch durch 100 teilen.

Eine Lösung findet sich hier.

Zusammenfassung

Sie sollten nun gelernt haben was:

Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt: einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensäufen von Ed Roberts, Bill Gates, Steve Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen.

Das Buch wird abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt, dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die Technik eingeht.

Die 2014 erschienene zweite Auflage wurde aktualisiert und leicht erweitert. Die umfangreichste Änderung ist ein 60 Seiten starkes Kapitel über Seymour Cray und die von ihm entworfenen Supercomputer. Bedingt durch Preissenkungen bei Neuauflagen ist es mit 19,90 Euro trotz gestiegenem Umfang um 5 Euro billiger als die erste Auflage. Es ist auch als e-Book für 10,99 Euro erschienen.

Mehr über das Buch auf dieser eigenen Seite.

Sitemap Kontakt Neues Hier werben Bücher vom Autor Buchempfehlungen Top 99