Pascal und Delphi – strukturierte Programmierung

Pascal (Niklaus Wirth, 1970) wurde als Lehr- und Systemsprache entwickelt und ist bekannt für klare Struktur, strenge Typisierung und lesbaren Code. Delphi (Embarcadero, früher Borland) erweitert Pascal zu Object Pascal mit Klassen, Properties und einer visuellen Entwicklungsumgebung (VCL/FMX). Der freie Compiler Free Pascal (fpc) mit der IDE Lazarus hält die Sprache am Leben.

Compiler

  • fpc --version – Version prüfen
  • fpc prog.pas – kompilieren (erzeugt prog)
  • fpc -O2 prog.pas – mit Optimierung
  • fpc -gl prog.pas – Debug-Info (gdb) einbinden
  • Delphi/Windows: dcc32 prog.dpr (Kommandozeilen-Compiler)

Basissyntax

program hallo;
uses crt;
var
  name: string;
begin
  write('Wie heisst du? ');
  readln(name);
  writeln('Hallo, ', name, '!');
end.
  • program – Programmkopf, uses – Units/Bibliotheken einbinden
  • var – Variablendeklaration: i: integer; x: real; s: string; ok: boolean; c: char;
  • const – Konstanten: const pi = 3.14159;
  • type – eigene Typen/Records: type Punkt = record x, y: integer; end;
  • Blöcke: begin ... end (Ende des Programms mit end. – Punkt!)

Kontrollstrukturen

if x > 0 then
  writeln('positiv')
else
  writeln('negativ');

case n of
  1: writeln('eins');
  2: writeln('zwei');
else
  writeln('anders');
end;

for i := 1 to 10 do
  writeln(i);

while x < 100 do
  x := x * 2;

repeat
  readln(eingabe)
until eingabe = 'ende';

Prozeduren und Funktionen

function quadrat(x: integer): integer;
begin
  quadrat := x * x;   { Pascal weist das Ergebnis dem Funktionsnamen zu }
end;

procedure begruesse(name: string);
begin
  writeln('Hallo, ', name);
end;

Object Pascal / Delphi

type
  TPerson = class
  private
    FName: string;
  public
    constructor Create(aName: string);
    procedure Vorstellen;
  end;

constructor TPerson.Create(aName: string);
begin
  FName := aName;
end;

procedure TPerson.Vorstellen;
begin
  writeln('Ich bin ', FName);
end;
  • Klassen: class mit private/public-Bereichen
  • Properties: property Name: string read FName write FName;
  • Vererbung: TKind = class(TPerson)
  • Units: jede Unit in eigener .pas-Datei mit interface/implementation

Unit-Aufbau (Free Pascal / Lazarus)

unit meineunit;

interface
function verdoppeln(x: integer): integer;

implementation
function verdoppeln(x: integer): integer;
begin
  verdoppeln := x * 2;
end;

end.

Verwandte Einträge: C und C++ für Systemprogrammierung, Python für moderne Alternativen, sowie die Glossar-Begriffe Compiler, Adresse (Speicher) und Stack.