EMZETT.
Login

Kurz: for i := 1 to 2 do for j := 1 to 3 do m[i, j] := i * 10 + j; writeln(m[2, 3]);

Teil des Kurses Pascal

Kapitel 3 von 8 im Kurs Pascal. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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.

Ausgabe:

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.

Ausgabe:

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.

Ausgabe:

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.

Ausgabe:

42
40 30 20 10
TRUE

Merke

  • String-Funktionen: Length, Copy, Pos, Trim, Format (Units SysUtils, StrUtils)
  • Arrays: statisch (array[1..5]), mehrdimensional und dynamisch (SetLength)
  • record, Aufzählungstypen und Mengen (set of) modellieren Daten
  • Zeiger: New/Dispose, ^ zum Dereferenzieren, nil für leer

Übungsaufgabe

Sortiere ein Integer-Array mit Bubblesort und gib es aus.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Kontrollfluss, Prozeduren und Funktionen

Weiter: Units, Klassen und Objekte

Alle Kapitel: Pascal im Überblick