{ 1 } { Time-stamp: "04.05.03 06:53 suchestud.pas klaus@wachtler.de" } { 2 } { Pascal-Programm, um nach einem Studenten zu suchen } { 3 } { Unter Linux: gpc -Wall suchestud.pas -o suchestud } { 4 } { 5 } PROGRAM Sustud(Input, Output); { 6 } { 7 } { Vereinbarung von Konstanten: } { 8 } CONST { 9 } { 10 } Anzahl = 5; { 11 } { 12 } { Vereinbarung von Typen: } { 13 } TYPE { 14 } { 15 } { Definition eines Datentypen: ein Student } { 16 } Student = RECORD { 17 } Vorname: string(100); { 18 } Nachname: string(100); { 19 } Matrikel: integer; { 20 } END; { 21 } { 22 } { Definition eines Feldes davon: } { 23 } ArrayStudenten = ARRAY [1..5] OF Student; { 24 } { 25 } { Sucht in dem Feld MA (mit ANZAHL Matrikelnummern) nach dem } { 26 } { Eintrag mit dem Wert KEY, und liefert den Index (1 bis ANZAHL). } { 27 } { Wenn nichts gefunden wird, dann wird -1 zurückgegeben: } { 28 } FUNCTION SucheStudent( VAR Studenten: ArrayStudenten; { 29 } indexl: integer; { 30 } indexh: integer; { 31 } key: integer { 32 } ): integer; { 33 } { 34 } VAR { 35 } i: integer; { 36 } BEGIN { 37 } FOR i:=indexl TO indexh DO { 38 } BEGIN { 39 } IF ( Studenten[i].Matrikel = key ) THEN { 40 } BEGIN { 41 } return i; { 42 } END; { 43 } END; { 44 } return -1; { 45 } END; { 46 } { 47 } { Variablen für das Hauptprogramm: } { 48 } VAR { 49 } { 50 } Studenten: ArrayStudenten; { 51 } index_erg: integer; { 52 } { 53 } { Beginn des Hauptprogramms: } { 54 } BEGIN { 55 } { 56 } { Vorbelegen des Feldes: } { 57 } Studenten[1].Matrikel := 978123; { 58 } Studenten[1].Nachname := 'Pappnase'; { 59 } Studenten[1].Vorname := 'Kurt'; { 60 } Studenten[2].Matrikel := 987456; { 61 } Studenten[2].Nachname := 'Meier'; { 62 } Studenten[2].Vorname := 'Hein'; { 63 } Studenten[3].Matrikel := 998159; { 64 } Studenten[3].Nachname := 'Schmidt'; { 65 } Studenten[3].Vorname := 'Fritz'; { 66 } Studenten[4].Matrikel := 988123; { 67 } Studenten[4].Nachname := 'Lahm'; { 68 } Studenten[4].Vorname := 'Klaus'; { 69 } Studenten[5].Matrikel := 977111; { 70 } Studenten[5].Nachname := 'Flink'; { 71 } Studenten[5].Vorname := 'Sina'; { 72 } { 73 } { Unter den Studenten nach der Matrikelnummer 988123 suchen: } { 74 } index_erg := SucheStudent( Studenten, 1, Anzahl, 988123 ); { 75 } { 76 } writeln( 'gefunden: ', { 77 } index_erg, ' ', { 78 } Studenten[index_erg].Vorname, ' ', { 79 } Studenten[index_erg].Nachname { 80 } ); { 81 } END.