Turbo-Pascal Ein Programm hat grundsätzlich die EVA-Struktur (Eingabe-Verarbeitung-Ausgabe) Will man irgendwelche Daten eingeben so benötigt man dafür Speicherplätze; Speicherplätze sind Buchstaben und alle Buchstabenkombinationen, also z. B. a, m, xwier, anzahl, radius, laenge, wort, name usw. Es gibt Speicherplätze für Zahlen und Speicherplätze für Worte, also muss man im Programm erklären, welche Daten man in die Speicherplätze eingeben möchte (Variablendeklaration) Es gibt verschiedene Arten von Zahlen: 1. Die Zahlen von 0 bis 255 haben das Format byte 1. Zahlen von –32767 bis +32768 haben das Format Integer 2. Zahlen von –2 147 483 647 bis 2 147 483 648 Longint 3. Kommazahlen haben das Format Real 4. Buchstaben haben das Format Char 5. Zeichenketten aus Buchstaben und Zahlen wie z. B. Müller aber auch 0201-77 55 43 haben das Format String[20] Dabei gibt die Zahl in der Klammer die Anzahl der ‚ Zeichen an. Wird die Variable direkt unter der Titelzeile Program Programmname; geschrieben, so gilt die Variable für alle Prozeduren und das Hauptprogramm. Steht sie in einer Prozedur unter Procedure Prozedurname; so gilt die Variable nur in dieser Prozedur, in einer anderen wäre sie unbekannt.!! Die Variablendeklaration erfolgt z.B. durch Var Laenge,Breite: integer; Name: string[20]; Eingabe Variablenbelegung: Man belegt die Variable direkt mit einem Wert belegen: Laenge:=5; Fortan kann mit dem Speicherplatz Laenge als Zahl 5 gerechnet werden. Verarbeitung Mit Speicherplätzen kann man rechnen und die Werte der Rechnungen in einen neuen Speicherplatz ablegen. Das Format ist Speicherplatz:=Rechnung Also z. B. Preis:=Menge*kilopreis+3; oder Zahl:= 4+7; oder U:=2*a+2*b; Bei Worten und Buchstaben sind Anführungszeichen (Hochkomma) notwendig: Name:=’Müller’; Zeichen:=’x’; Ausgabe auf dem Bildschirm: Der Befehl write (Speicherplatz) schreibt den Inhalt eines Speicherplatzes auf den Bildschirm z. B. writeln(umfang); schreibt die Zahl, die im Speicherplatz Umfang steht auf den Bildschirm write(’irgendein Text’); schreibt den Text in Anführungszeichen auf den Bildschirm Beim Befehl writeln statt write wird eine neue Zeile erzeugt. Beispiel für ein vollständiges Programm: program irgendetwas; var x,y,z,ergebnis: integer ; procedure rechnen; begin ergebnis:=x+y+z; end; procedure eingabe; begin x:=5; y:=7; z:=9; end; procedure ausgabe; begin writeln(ergebnis); end; begin eingabe; rechnen; ausgabe; READLN; end. Dieser Befehl ist notwendig, wird später erklärt Aufgabe 1: Es soll ein Programm geschrieben werden, bei dem man die Länge und die Breite eines Rechtecks (nur ganze Zahlen) eingeben kann, damit soll dann sofort der Umfang und die Fläche des Rechtecks berechnet werden. Zuerst testet man ein Programm auf Fehlerfreiheit mit <F9> Man startet ein Programm zur Ausführung mit <STRG> + <F9>. program rechteck; program rechteck; var a,b,U,F: integer; var a,b,U,F: integer; procedure eingabe: begin a:=5; b:=9; end; procedure eingabe: begin write(‘a=’); readln(a); write (‘b=’); readln (b); procedure verarbeiten; begin A:=a*b; U:=2*a+2*b; end; end; procedure ausgabe; begin writeln(A); writeln(U); end; begin eingabe; verarbeiten; ausgabe; end. hält das Programm an und wartet auf Tastatureingabe procedure verarbeiten; begin A:=a*b; U:=2*a+2*b; end; procedure ausgabe; begin writeln(‘Fläche=’,A); writeln(‘Umfang=’,U); end; begin eingabe; verarbeiten; ausgabe; end. Aufgabe 2: Schreibe ein Programm zur Berechnung eines Quaders, (Volumen und Oberfläche) mit ganzzahligen Werten. Aufgabe 3: Schreibe in Programm zur Berechnung eines Kreises, (Fläche und Umfang). Aufgabe 4: Schreibe ein Programm zur Prozentrechnung. Auf dem Bildschirm soll eine Auswahl stehen 1=Prozentsatz berechnen 2= Prozentwert berechnen 3= Grundwert berechnen. Dann soll eine Zahl eingegeben werden und entsprechender Wert berechnet werden. Verbessere das Programm in der Weise, dass es so lange wiederholt wird, bis man das Zeichen e eingegeben hat. Aufgabe 5: Schreibe entsprechend zur Aufgabe 4 ein Programm zur Zinsrechnung. Aufgabe 6: Schreibe ein Programm, welches entscheidet ob man wahlberechtigt ist. Es soll das Geburtsjahr eingegeben werden, dann soll auf dem Bildschirm entweder „Du bist wahlberechtigt“ oder „Du bist nicht wahlberechtigt“ stehen. Aufgabe 7: Schreibe ein Programm, bei dem man 2 Zahlen eingibt. Das Programm soll die Entscheidung treffen, welche Zahl größer ist und die größere Zahl ausgeben. Aufgabe 8: Schreibe ein Programm, bei dem man 3 Zahlen eingibt. Das Programm soll die Entscheidung treffen, welche Zahl größer ist und die größere Zahl ausgeben. program wahlrecht; program groessenvergleich_2_zahlen; procedure wahlrecht_bestimmen; var geburtsjahr, dieses_jahr, alter: integer; begin write(´Heutiges Jahr eingeben ´); readln(dieses_jahr); write(´Geburtsjahr eingeben ´); readln(geburtsjahr); alter:=dieses_jahr-geburtsjahr; if alter>17 then writeln(´wahlberechtigt´) else writeln(´nicht wahlberechtigt´); end; procedure vergleichen; var a,b: integer; begin write(´1. Zahl eingeben ´); readln(a); write(´2. Zahl eingeben´); readln(b); if a>b then writeln(a,´ ist größer´) else writeln(b,´ ist größer); end; begin wahlrecht_bestimmen; end; program groessenbestimmung_3_zahlen; var a, b, c: integer; begin vergleichen; end. procedure a_und_c_vergleichen; begin if a>c then writeln(a,´ ist größte Zahl’) else writeln(c,´ ist größte Zahl’); end; procedure b_und_c_vergleichen; begin if b>c then writeln(b,´ ist größte Zahl’) else writeln(c,´ ist größte Zahl’); end; procedure groessenvergleich; begin write(´1. Zahl eingeben ´); readln(a); write(´2. Zahl eingeben´); readln(b); write(´3. Zahl eingeben ´); readln(c); if a>b then a_und_c_vergleichen else b_und_c_vergleichen; end; begin groessenvergleich; end; begin groessenvergleich; end; a>b ja nein b und c vergleichen a und c vergleichen procedure a_und_c_vergleichen a>c ja nein c ist größte Zahl a ist größte Zahl procedure b_und_c_vergleichen b>c ja a und c vergleichen nein b und c vergleichen Zählschleifen Wenn man eine fest vorgegebene Anzahl von Wiederholungen einzelner Befehle vorhersehen kann, dann benutzt man Zählschleifen: Schreibweise For I:=1 to 10 do Begin Befehl1; Befehl2; .... .... end; bei nur einem Befehl kann man sich begin und end einsparen: for i:=1 to 10 do befehl1; Dabei ist der Speicherplatz i eine Zählvariable. Die Schleife beginnt mit i:=1, bei jeder Wiederholung wird i um 1 erhöht. Wenn i=10 ist, wird die Schleife beendet. Aufgabe 9. Schreibe ein Programm, welches 20 mal den Satz Programmieren ist schön schreibt. (Vergiss nicht den readln-Befehl zum Schluss, damit das Programm nicht sofort in den Schreibmodus umschaltet) Aufgabe 10: Schreibe ein Programm, welches die Zahlen 2 4 6 8 10 12 14 ... insgesamt 50 Zahlen auf den Bildschirm schreibt. b) Es sollen 30 Zahlen 2 5 8 11... geschrieben werden c) Es sollen 20 Zahlen -3 2 7 12 17 ... geschrieben werden d) Es sollen 64 Zahlen 1 2 4 8 16 32 64 ... geschrieben werden e) Es sollen 100 Zahlen 1 3 6 10 15 21 28 36 geschrieben werden (1+2+3+4+5+6+....) Aufgabe 11: Schreibe ein Programm, mit dem eine zufällige Zahl zwischen 0 und 10000 bestimmt wird. Du sollst 11 mal raten. Der Computer gibt Dir die Information, ob die Zahl zu klein oder zu groß ist. Dann musst Du die Zahl geraten haben. Der Befehl zur Festlegung einer Zufallszahl zwischen 1 und 10000 lautet: zufallszahl:=random(1,10000); Aufgabe 12 Schreibe ein Programm welches 2 Zufallszahlen zwischen 2 und 10 auf den Bildschirm schreibt, dazwischen ein * also z. B. 5*8= Dann sollst Du ein Ergebnis eingeben und der Computer soll bewerten mit richtig oder falsch. Insgesamt soll man 20 Aufgaben gestellt bekommen. Aufgabe 13 Vokabelübung program zahlenraten; var zahl,i,zufallszahl: integer; procedure zufallszahl_ermitteln; begin randomize; zufallszahl:=random(10000); end; procedure zahl_eingeben_und_pruefen; begin write('Zahl eingeben '); readln(zahl); if zahl>zufallszahl then writeln(' Deine Zahl ist zu groß'); if zahl<zufallszahl then writeln(' Deine Zahl ist zu klein'); if zahl=zufallszahl then begin writeln('Deine Zahl ist richtig'); i:=15; end; writeln; end; begin zufallszahl_ermitteln; for i:=1 to 15 do zahl_eingeben_und_pruefen; readln; end. program multiplikationsuebung; var zahl,ergebnis,i,zufallszahl: integer; procedure aufgaben_stellen; begin zufallszahl:=random(10)+1; write(zufallszahl,' * 8 = '); readln(zahl); ergebnis:=zufallszahl*8; if zahl=ergebnis then writeln(' richtig') else writeln('falsch, das Ergebnis lautet ',ergebnis); end; begin randomize; for i:=1 to 20 do aufgaben_stellen; readln; end.