1. INFORMATIKKLAUSUR Name: IF1-Informatik 11 GK (GA) Aufgabe 1: Bearbeitungszeit: 90 min. 17.12.2004 − Seite 1 − Kundenwaage Unten sehen Sie zwei Bildschirmfotos, welche zur Simulation einer Kundenwaage gehören. Drückt der Anwender auf die Gewicht-Buttons (z. B. ), so erhöht bzw. verringert sich das angezeigte Gewicht entsprechend der Buttons. Drückt der Anwender anschließend auf den Button einer Obstsorte (z. B. ), so wird das im rechten Bildschirmfoto angezeigte Etikett ausgegeben, welches mit dem Button wieder unsichtbar gemacht wird. a) Welche Oberflächenobjekte wurden bei diesem Projekt benötigt? Nennen Sie jeweils die Art, die Anzahl und einen Vertreter bei seinem möglichen Namen. Beispiel: Es gibt 11 Buttons: Der Button könnte zum Beispiel B_Bananen heißen. Es gibt ...: Das ... könnte z. B. ... heißen. ... b) Wie erreicht man es, dass die Eingabefelder für den Preis/kg gesperrt sind? Nennen Sie zwei Möglichkeiten. c) Implementieren Sie die Ereignisprozeduren zu den Buttons und . Die Ausgabe des Gewichts darf auch unformatiert geschehen. Allerdings soll darauf geachtet werden, dass das Gewicht nicht negativ und nicht größer als 5 kg wird. Um dem vorzubeugen sollen immer nur die Buttons aktiviert sein, die auch wirklich gedrückt werden dürfen. D. h., zu Anfang wären die Buttons und gesperrt. d) Implementieren Sie eine Funktion, welche als Parameter zwei Dezimalzahlen bekommt und als Ergebnis das Produkt beider Parameter zurückgibt. Diese kann dann später dafür verwendet werden, den Gesamtpreis zu berechnen. function Produkt(...): ... bitte umblättern... 1. INFORMATIKKLAUSUR Name: IF1-Informatik 11 GK (GA) Bearbeitungszeit: 90 min. 17.12.2004 − Seite 2 − e) Unten sehen Sie die Ergeignisprozedur zum Button . Sie finden dort den Aufruf einer Prozedur, welche die Ausgabe des Etiketts bewirkt. Implementieren Sie diese procedure EtikettAusgabe(...). Hinweis: Machen Sie innerhalb dieser Prozedur von Ihrer Funktion Gebrauch, die Sie in Aufgabe d) angegebenen haben! procedure TF_Waage.B_BananenClick(Sender: TObject); var Gewicht, PreisProKilo: single; begin Gewicht:= StrToFloat(E_Gewicht.Text); PreisProKilo:= StrToFloat(E_Bananen.Text); EtikettAusgabe('Bananen',Gewicht,PreisProKilo); Groupbox_Etikett.visible:= true; end; Aufgabe 2: Kontrollstrukturen in Delphi a) Geben Sie die Syntax aller Ihnen bekannten Schleifen-Strukturen aus Delphi an. Beispiel: Die Syntax der if-then-else-Anweisung lautet z. B.: if <Bedingung> then <Anweisung> else <Anweisung> b) Analysieren Sie die folgende Prozedur. Was wird im CbR-Parameter zurückgegeben? Veranschaulichen Sie die Arbeitsweise des Algorithmus am Beispiel des Aufrufs Berechne(3, 5, Erg) mit Hilfe einer Variablenbelegungstabelle. procedure Berechne(zahl1, zahl2: integer; var ergebnis: integer); begin ergebnis:= 1; while zahl2 > 0 do begin ergebnis:= ergebnis * zahl1; zahl2:= zahl2-1; end; end; c) Formulieren Sie die Prozedur aus Teil b) unter folgenden Gesichtspunkten um: (i) Ersetzen Sie die while-Schleife durch eine andere ihnen bekannte Schleifenstruktur (ii) Verwenden Sie eine Funktion anstatt einer Prozedur. Viel Erfolg! Name: IF1-Informatik 11 GK (GA) 1. INFORMATIKKLAUSUR Bearbeitungszeit: 90 min. Lösungen d) procedure TF_Waage.PreisAusgabe(Artikel: string; PreisProKG: Double); var Gewicht: Double; Preis: Double; MwSt: Double; begin Gewicht:= StrToFloat(E_Gewicht.Text); Preis:= PreisproKG*Gewicht; E_Preis.Text:= FloatToStrF(Preis,ffFixed,5,2)+' DM'; E_MwSt.Text:= FloatToStrF(Preis*0.16,ffFixed,5,2)+' DM'; E_Artikel.Text:= Artikel; E_Menge.Text:= E_Gewicht.Text; E_PreisProKG.Text:= FloatToStrF(PreisProKG,ffFixed,5,2)+' DM'; GB_Ettikett.Visible:= true; end; 17.12.2004 − Seite 3 −