Was ist Pascal?
Pascal (1970, Niklaus Wirth) wurde als Sprache für den Programmierunterricht entworfen: klar strukturiert, streng typisiert und gut lesbar. Aus Pascal entstand Object Pascal – die Grundlage von Delphi (Embarcadero) und Lazarus (kostenlose Entwicklungsumgebung). Dieser Kurs nutzt den Free Pascal Compiler (fpc) im Modus objfpc.
Pascal wird in der Ausbildung, bei Delphi-Altprojekten und in Embedded-Bereichen (Free Pascal läuft u. a. auf ARM und AVR) eingesetzt. Bekannte Programme: Skype (ursprünglich), Total Commander, Teile von Photoshop, Inno Setup.
Ausführen
fpc hallo.pas # übersetzen, erzeugt die ausführbare Datei hallo
./hallo # starten
fpc -Mobjfpc -Sh hallo.pas # Object-Pascal-Modus, lange Strings
fpc -O2 hallo.pas # optimiert
lazarus-ide # Entwicklungsumgebung mit Formular-DesignerDas erste Programm
program Hallo;
begin
writeln('Hallo, Welt!');
writeln('1 + 2 = ', 1 + 2);
write('ohne Zeilenumbruch');
writeln;
end.Ausgabe
Hallo, Welt! 1 + 2 = 3 ohne Zeilenumbruch
Ein Programm beginnt mit program Name;, der Hauptteil steht zwischen begin und end. (mit Punkt). Anweisungen enden mit ;. Texte stehen in einfachen Anführungszeichen.
Variablen und Datentypen
Alle Variablen werden im var-Abschnitt vor dem Hauptteil deklariert:
program Typen;
const
Pi2 = 6.28318;
Gruss = 'Hallo';
var
alter: Integer;
preis: Double;
name: String;
ok: Boolean;
buchstabe: Char;
gross: Int64;
begin
alter := 17;
preis := 9.99;
name := 'Mia';
ok := True;
buchstabe := 'z';
gross := 9000000000;
writeln(Gruss, ' ', name, ', ', alter, ' Jahre');
writeln(preis:0:2, ' ', ok, ' ', buchstabe, ' ', gross);
writeln(Pi2:0:3);
writeln(SizeOf(Integer), ' ', SizeOf(Int64), ' ', High(Byte), ' ', Low(ShortInt));
end.Ausgabe
Hallo Mia, 17 Jahre 9.99 TRUE z 9000000000 6.283 4 8 255 -128
Zuweisung mit :=, Vergleich mit =. preis:0:2 formatiert: Mindestbreite 0, zwei Nachkommastellen.
Rechnen
program Rechnen;
uses Math;
var
a, b: Integer;
x: Double;
begin
a := 17; b := 5;
writeln(a + b, ' ', a - b, ' ', a * b);
writeln(a div b, ' ', a mod b); { Ganzzahldivision und Rest }
writeln(a / b:0:3); { / liefert immer Double }
x := 2.0;
writeln(Sqrt(x):0:4, ' ', Sqr(a), ' ', Abs(-5), ' ', Round(3.5), ' ', Trunc(3.99));
writeln(Power(2, 10):0:0);
writeln(Odd(a), ' ', Succ(a), ' ', Pred(a), ' ', Ord('A'), ' ', Chr(66));
writeln((a > b) and (b > 0), ' ', not (a = b), ' ', (a < 0) or (b > 3), ' ', a xor b);
writeln(a shl 2, ' ', a shr 1, ' ', a and 3, ' ', a or 8);
inc(a); dec(b, 2);
writeln(a, ' ', b);
end.Ausgabe
22 12 85 3 2 3.400 1.4142 289 5 4 3 1024 TRUE 18 16 65 B TRUE TRUE TRUE 20 68 8 1 25 18 3
So führst du den Code aus: Datei hallo.pas speichern, mit fpc hallo.pas übersetzen und ./hallo starten (Free Pascal von freepascal.org).
Merke
- Aufbau:
program Name;—var—begin...end. - Zuweisung
:=, Vergleich=, Texte in'einfachen'Anführungszeichen - Wichtige Typen:
Integer,Int64,Double,String,Boolean,Char divundmodfür Ganzzahlen,/liefert Gleitkommazahlen
Aufgabe
Berechne Umfang und Fläche eines Kreises mit Radius 5.