Strings
program Texte;
{$mode objfpc}{$H+}
uses SysUtils, StrUtils;
var
s: String;
i: Integer;
begin
s := 'Hallo Pascal';
writeln(Length(s), ' ', UpperCase(s), ' ', LowerCase(s));
writeln(s[1], ' ', Copy(s, 7, 6), ' ', Pos('Pascal', s));
writeln(s + '!', ' ', StringOfChar('*', 5));
s := Trim(' x ');
writeln('[', s, ']');
writeln(StringReplace('a-b-c', '-', '+', [rfReplaceAll]));
writeln(IntToStr(42) + StrToIntDef('x', -1).ToString);
writeln(StrToInt('17') + 1, ' ', FloatToStr(2.5), ' ', StrToFloat('3.5') * 2:0:1);
writeln(Format('%d: %s (%5.2f)', [7, 'Wert', 3.14159]));
writeln(Format('%-6s|%6s|%.3d|%x', ['li', 're', 5, 255]));
writeln(ReverseString('Pascal'), ' ', DupeString('ab', 3));
writeln(SameText('ABC', 'abc'), ' ', CompareStr('a', 'b'));
writeln(Chr(Ord('A') + 1), ' ', UpCase('q'));
for i := 1 to Length('abc') do write(Ord('abc'[i]), ' ');
writeln;
writeln(WordCount('ein kleiner Satz hier', [' ']));
writeln(ExtractWord(2, 'ein kleiner Satz', [' ']));
end.12 HALLO PASCAL hallo pascal H Pascal 7 Hallo Pascal! ***** [x] a+b+c 42-1 18 2.5 7.0 7: Wert ( 3.14) li | re|005|FF lacsaP ababab TRUE -1 B Q 97 98 99 4 kleiner
Arrays
program Felder;
type
TFeld = array[1..5] of Integer;
TMatrix = array[1..2, 1..3] of Integer;
var
f: TFeld;
m: TMatrix;
dyn: array of Integer;
i, j, summe: Integer;
begin
for i := 1 to 5 do f[i] := i * i;
summe := 0;
for i := Low(f) to High(f) do summe := summe + f[i];
writeln(summe, ' ', Length(f));
for i := 1 to 2 do
for j := 1 to 3 do m[i, j] := i * 10 + j;
writeln(m[2, 3]);
SetLength(dyn, 3);
for i := 0 to High(dyn) do dyn[i] := (i + 1) * 100;
SetLength(dyn, 5);
dyn[3] := 7; dyn[4] := 8;
for i := 0 to High(dyn) do write(dyn[i], ' ');
writeln;
writeln(Length(dyn));
end.55 5 23 100 200 300 7 8 5
Records und Aufzählungen
program Daten;
type
TFarbe = (Rot, Gruen, Blau);
TWochentag = (Mo, Di, Mi, Do_, Fr);
TPerson = record
Name: String;
Alter: Integer;
Lieblingsfarbe: TFarbe;
end;
TZiffern = set of 0..9;
TTage = set of TWochentag;
var
p: TPerson;
farbe: TFarbe;
z: TZiffern;
t: TTage;
begin
p.Name := 'Mia';
p.Alter := 17;
p.Lieblingsfarbe := Blau;
writeln(p.Name, ' ', p.Alter, ' ', Ord(p.Lieblingsfarbe));
with p do writeln(Name, ' ist ', Alter);
for farbe := Low(TFarbe) to High(TFarbe) do write(Ord(farbe), ' ');
writeln;
z := [1, 3, 5];
Include(z, 7);
Exclude(z, 1);
writeln(3 in z, ' ', 1 in z, ' ', 7 in z);
t := [Mo..Mi] + [Fr];
writeln(Mi in t, ' ', Do_ in t);
writeln(Succ(Rot) = Gruen, ' ', Pred(Blau) = Gruen);
end.Mia 17 2 Mia ist 17 0 1 2 TRUE FALSE TRUE TRUE FALSE TRUE TRUE
Zeiger und dynamischer Speicher
program Zeiger;
type
PInt = ^Integer;
PKnoten = ^TKnoten;
TKnoten = record
Wert: Integer;
Weiter: PKnoten;
end;
var
p: PInt;
kopf, k: PKnoten;
i: Integer;
begin
New(p);
p^ := 42;
writeln(p^);
Dispose(p);
kopf := nil;
for i := 1 to 4 do
begin
New(k);
k^.Wert := i * 10;
k^.Weiter := kopf;
kopf := k;
end;
k := kopf;
while k <> nil do
begin
write(k^.Wert, ' ');
k := k^.Weiter;
end;
writeln;
while kopf <> nil do
begin
k := kopf^.Weiter;
Dispose(kopf);
kopf := k;
end;
writeln(kopf = nil);
end.42 40 30 20 10 TRUE
Merke
String-Funktionen:Length,Copy,Pos,Trim,Format(UnitsSysUtils,StrUtils)- Arrays: statisch (
array[1..5]), mehrdimensional und dynamisch (SetLength) record, Aufzählungstypen und Mengen (set of) modellieren Daten- Zeiger:
New/Dispose,^zum Dereferenzieren,nilfür leer
Aufgabe
Sortiere ein Integer-Array mit Bubblesort und gib es aus.