Funktionen/Units/Prozeduren

1. Nennen Sie mindestens 4 Gemeinsamkeiten von Funktionen und Prozeduren!

- werden im Deklarationsteil der Unit deklariert

- enthalten nur formale Parameter und lokale Variablen

- bestehen aus Kopf-/Deklarations- und Anweisungsteil zwischen "begin" und "end"

- werden im aufrufenden Unterprogramm mit Namen und evt. Parameterliste  aufgerufen

2. Wie viele Werte können an eine Funktion übergeben werden?

- es können beliebig viele Werte übergeben werden oder auch keiner

3. Wie viele Werte kann eine Funktion zurückliefern?

- gibt genau eien Wert zurück

4. Wie viele Werte kann eine Prozedur zurückliefern?

- beliebig viele

5. Beschreiben sie den allgemeinen Aufbau einer Funktion!

function Funktionsname (formale Parameter: Typ) 
begin

Anweisung 
end;

6. Beschreiben Sie die verschiedenen Varianten zur Rückgabe der Werte bei Funktionen. Welche dieser Varianten sollte man bevorzugen? Warum?

Variablennamen result oder Funktionsname



7. Beschreiben Sie den allgemeinen Aufbau einer Prozedur!

procedure Prozedurenname (formale Parameter:typ) 
var lokale Varible: typ 
begin
Anweisung
end;



8. Nennen Sie drei Vorteile der Arbeit mit Units!

- das Programm ist übersichtlicher

- sie sind compilierbarund bieten somit einen Zeitvorteil

- sie können auch in anderen Programmen verwendet werden

9. Aus welchen drei Teilen besteht eine Unit mindestens?

- mindestens aus Kopfzeile , Interfaceteil und Implementierungsteil

10. Welche zwei weiteren Teile kann eine Unit noch besitzen?

- Initialisierungsteil undFinalisierungsteil


11. Beschreiben Sie die Funktion und den Aufbau der einzelnen Teile der Unit!

UNIT UNIT2;

INTERFACE

IMPLEMENTATION

END.

TITEL-ODER KOPFZEILE: Schlüsselwort: UNIT ;
z.B. UNIT RECHNEN;

- der Unitname  muss mit dem Dateinamen der Unit (Rechnen.pas) übereinstimmen

INTERFACE-TEIL: Schlüsselwort INTERFACE.

- enthält die Liste aller öffentlicher Bezeichner, die an andere Programme oder Programmteile exportiert werden dürfen (z.B. Funktionen, Prozeduren, Variable, Datentypen, Konstanten)

- andere Teile, die als Hilfsprozeduren notwendig sind, können nach außen hin versteckt werden

IMPLEMENTIERUNGSTEIL: Schlüsselwort IMPLEMENTATION.

- dort befinden sich die eigentlichen Programmblöcke zu den unter INTERFACE aufgeführten "Öffentlichen" Funktionen und Prozeduren

- können noch weitere Proz./Funkt. Variablen, Typen,... deklariert werden, die aber nur im Implementierungsteil genutzt werden können und im Interface-Teil nicht zur Verfügung stehen.

INITIALISIERUNGS-TEIL: Schlüsselwort INITIALIZATION

- dient dazu, Operationen durchzuführen, die nur einmal, zum Start des Programms aufgerufen werden sollen

- man kann das vergleichen mit dem Aufruf der Prozedur FORMCREATE (S. Projekt Zahlenraten), nur besitzt unsere selbst geschriebene Unit ja kein Formular.

- Unit wird abgeschlossen mit dem Schlüsselwort end

FINALISIERUNGS-TEIL: Schlüsselwort FINALIZATION.

- dient dazu, Operationen durchzuführen, die nur einmal, nämlich beim Schließen des Programms, durchgeführt werden sollen. Das kann z. B. die Freigabe von Systemressourcen sein, die vorher vom Programm belegt wurden. Der Finalisierungs-Teil beginnt mit dem Schlüsselwort FINALIZATION, er steht noch vor dem abschließenden END. des Programms.


12. Welche Einschränkungen gelten für die Kopfzeile einer Unit?

- der Name der Unit muss mit dem Dateinamen der Unit (Rechnen.pas) übereinstimmen

- keine Umlaute oder Sonderzeichen oder Leerzeichen

13. Wie kann man eine neue Unit erzeugen?

- Menü DATEI, den Punkt NEU. Dann Punkt UNIT und OK 

14. Wie und wo kann man eine vorhandene Unit in ein neues Programm einbinden?

- neue Unit einbinden mit Namen der Unit und uses im Implementierungsteil   

15. Nennen Sie je ein Beispiel für vorhandene Delphifunktionen, die mit keinem, mit einem bzw. mit mehreren Parametern aufgerufen werden!

- die Zufallszahl hat keine Parameter

- Mittelwert hat einen Parameter oder Kreisfläche

- Zahlenordnen hat mehrere Parameter

16. Was passiert, wenn man bei der von uns behandelten Prozedur TAUSCHE das Schlüsselwort VAR in der Kopfzeile weglässt?

- die zu tauschenden Werte können nicht zurückgegeben werden, d.h die Zahlen werden nicht geordnet

17. Wie kann man eine Funktion in eine gleichnamige Prozedur umwandeln? Was ändert sich am Aufruf der Prozedur gegenüber dem Aufruf der Funktion?

function Kreisflaeche (r: real) : real;

begin

result:=Pi*r*r

en; 

---> 

procedure Kreisflaeche (r: real; var kreis: real); 

begin

kreis:= Pi*r*r;

end;


18. Wie kann man den Wert von zwei Variablen tauschen?

procedure Tausche (var Zahl1,Zahl2:integer);
var Merke:integer;
begin
Merke:= Zahl1;
Zahl1:= Zahl2;
Zahl2:= Merke;
end;

mit einer Hilfsvariablen

12.2.07 13:30, kommentieren

1. Wir haben eine Möglichkeit kennen gelernt, eine Grafik auf einen Knopf vom Typ TBitBtn zu erzeugen. Nennen Sie diese Möglichkeit!

kind


2. In welchem Bereich werden Zufallszahlen durch die folgenden Zeilen erzeugt?
a) Zfz:= Random (20)+10;
b) Zfz:= Random (10)+20;
c) Zfz:= Random (55)+44;
d) Zfz:= Random (33)-62;

a) 10 bis 29
b) 20 bis 29
c) 44 bis 98
d) -62 bis -30

3. Durch welchen Quelltext erzeugt man ganzzahlige Zufallszahlen in folgenden Bereichen und weist sie der Variablen Zfz zu?

a) von 20 bis 40
Zfz:=Random (21)+20
b) von 50 bis 100
Zfz:=Random (51)-50
c) von -5 bis 5
Zfz:=Random (11)-5
d) von -30 bis -15
Zfz:=Random (16)-30

4. Was versteht man unter einer lokalen Variablen? Was ist ihr Gültigkeitsbereich und wo kann man sie deklarieren?

Variable in Prozedur und diese vor beginn einstellen

5. Was versteht man unter einer globalen Variablen? Was ist ihr Gültigkeitsbereich und wo kann man sie deklarieren?

Variable der gesamten Anwendung und vor der implementation eingeben (bevor prozedur begonnen wird)

6. Nennen Sie mindestens 4 vordefinierte Farbkonstanten mit ihrer deutschen Bedeutung!

clYellow bedeutet gelb
clGreen bedeutet grün
clRed bedeutet rot
clPurple bedeutet lila

7. Wie kann man die Schriftfarbe eines Labels/Panels zur Laufzeit ändern?

Label.font.color:=clred;

8. Wie kann man die Schriftgröße eines Labels/Panels zur Laufzeit ändern?

Label.font.size:=12;

9. Nennen Sie ein Ereignis, das jeweils beim Start des Programms auftritt. Wie kann man eine Ereignisbehandlungsroutine für dieses Ereignis erzeugen?

Ereignis oncreate (auf eine freie Fläche im Formblatt doppelklicken)

10. Wie kann man den Text in einem Edit-Feld zur Laufzeit löschen?

FEdit.Text:=’ ’;

11. Wie kann man die Ausgabe auf einem Panel zur Laufzeit löschen?

AusgabePanel.caption:=’ ’;

12. Wenn eine bestimmte Bedingung erfüllt ist, sollen 3 Anweisungen ausgeführt werden. Wie kann man das erreichen?

If Bedingung
THAN begin
Anweisung1;
Anweisung2;
Anweisung3
End;

13. Wie kann der Fokus zur Laufzeit auf ein Edit-Feld gelenkt werden?

FeldEdit.Setfocus;

14. Wie kann der Fokus zur Laufzeit auf ein Label gelenkt werden?

Feld.Label.Setfocus;

15. Wie kann man erreichen, dass in einem Programm durch Aufruf der Funktion Random wirklich zufällige Zufallszahlen erzeugt werden?

oncreate
randomize;

16. Beschreiben Sie einen Weg, wie man mit möglichst wenigen Versuchen eine Zufallszahl in einem bestimmten Bereich ermitteln kann. Wie viele Versuche benötigt man nach dem von Ihnen genannten Verfahren maximal, um eine Zahl im Bereich von 100, 1000, 2000 bzw. 10000 Zahlen richtig zu erraten? Begründen Sie Ihre Aussage!

Man benötigt möglichst wenig Versuche, wenn man den Mittelwert der gegebenen Zahl ermittelt.
Bei 100 maximal 8
Bei 1000 maximal 12
Bei 2000 maximal 12
Bei 10000 maximal 15

17. warum ist es sinnvoll, ein Programm strukturiert aufzuschreiben?

Es ist dadurch übersichtlicher

18. Welche Regeln zur Strukturierung von Programmen kennen Sie?

- Anweisungen die zusammengehören werden eingerückt (besser erkennbar wann Einheit beginnt und endet)
- dadurch lassen sich auch Wörter wie BEGIN und END besser finden
- auch für bessere Lesbarkeit und schnellere Fehlersuche

Für die nächsten 4 Aufgaben soll der folgende Sachverhalt gelten: In einem Programm ist eine globale Variable mit Namen ZAHL deklariert. In einer Prozedur (Button1Click) wurde auch eine Variable mit Namen ZAHL deklariert, eine zweite Prozedur (Button2Click) enthält keine Variable mit Namen ZAHL.

20. Wie ändert sich der Wert der globalen Variablen ZAHL, wenn der Inhalt der Variablen ZAHL in der Prozedur Button1Click auf den Wert 20 gesetzt wird?

Das Ende einer Prozedur wird mit end gekennzeichnet und die lokale Variable wird nur in einer Prozedur verändert, d.h. keine andere Prozedur verändert sich.

21. Wie ändert sich der Wert der globalen Variablen ZAHL, wenn der Inhalt der Variablen ZAHL in der Prozedur Button2Click auf den Wert 50 gesetzt wird?

Der Wert ändert sich nur in der Prozedur wenn diese aufgerufen wird.

22. Wie ändert sich der Wert der lokalen Variablen ZAHL in der Prozedur Button1Click, wenn der Inhalt der globalen Variablen ZAHL auf den Wert 100 gesetzt wird?

Wenn in beiden Prozeduren der Wert gesetzt wird ist das ein Fehler, da alle unterschiedliche Namen erhalten sollten. Die lokale Variable passt sich der globalen Zahl an, d.h. sie bekommen beide den gleichen Wert.

23. Wie ändert sich der Wert der Variablen ZAHL in der Prozedur Button2Click, wenn der Inhalt der globalen Variablen ZAHL auf den Wert 100 gesetzt wird?

In dem Button2Click gibt es keine Zahl, d.h. nur die globale verändert sich.

21.11.06 13:24, kommentieren

1. Nennen Sie mindestens 6 Eigenschaften, welche sowohl Pannel- als auch die Editkomponente besitzen, und beschreiben Sie deren Bedeutung!

- individuell Veränderbar: Form, Farbe, Schriftart usw.

- Programmierbar: bestimmte Aufgaben können zugewiesen werden und somit bearbeitet werden

- Ausgabefähigkeit: kann Zahlen und Texte ausgeben

- Eingabefähigkeit: man kann z.B. Zahlen in die Komponenten eingeben

- Name zu weisen: leichteres zurechtfinden

2. Warum ist es sinnvoll, die Eigenschaft NAME bestimmter Komponenten zu ändern? Bei welchen Komponenten macht das wenig Sinn?

Man findet sich besser zurecht. Es lässt sich damit auch schneller und einfacher programmieren.

Bei der Komponenten Label macht das wenig Sinn.

3. Wie kann man ein Ereignis erzeugen, das auf das Drücken eines Knopfes reagiert?

Man öffmet den Quelltexteditor (doppel klick auf den jeweiligen Button) und gibt seinen Befehl (Programmierung), um das gewünschte Ereignis zu erzeugen, dort ein.

4. Geben Sie einen Variablentyp an, in dem man ganze Zahlen speichern kann! Welcher Variablentyp wird zum Speichern gebrochener Zahlen benutzt?

Der Variablentyp für ganze Zahlen heißt Integer und der Variablentyp für gebrochene Zahlen heißt Real (Float).

5. Wie kann man einer Variablen in Delphi einen Wert zuweisen?

Man gibt im Quelltext zuerst eine Variable ein, diese wird mir var gekennzeichnet, dann weist man ihr einen Wert zu, indem man hinter die Variable z.B. folgendes schreibt:

Variable:=StrToFloat(variableEdit.Text);

6. Welche Funktionen zur Umwandlung von Variablentypen haben Sie bisher kennengelernt? Beschreiben Sie deren Aufgaben.

StrToInt

- wandelt Text in eine ganze Zahl um

StrToFloat

- wandelt Text in eine gebrochene Zahl um

FloatToInt

- wandelt gebrochene Zahl in ganze Zahl um

IntToFloat

- wandelt ganze Zahl in gebrochene Zahl um

IntToStr

- wandelt ganze Zahl in Text um

FloatToStrF

- wandelt gebrochene Zahl in einen formatierten Text um

7. Wie kann man die Wurzel aus einer eingegebenen integer-Zahl ziehen? Was muss dabei beachtet werden?

Um eine Wurzel ziehen zu können, muss man sqrt und die Variable eingeben.

Beispiel:

Um eine Wurzel einer Diagonalen zu ziehen schreibt man:

Diagonale:=sqrt(Seite1*Seite1+Seite2*Seite2);

Man muss dabei aber beachten das Integer keine gebrochenen Zahlen ausgeben kann, das heißt man muss eine Integer-Zahl möglicherweise in eine Real-Zahl umwandeln.

8. Eine gebrochene Zahl soll auf 3 Nachkommastellen genau auf einem Edit-Feld ausgegeben werden. Wie lautet der entsprechende Quelltext?

Der entsprechende Quelltext lautet:

VariableEdit.Text:=FloatToStrF(Variable,ffFixed,5,3);

Die 5 sagt in dem Fall aus, wie viele Stellen vor einem Komma stehen können (in dem Fall 5 Stellen) und die 3 sagt aus, wie viele Stellen nach dem Komma stehen (in dem Fall 3 Stellen)

9. Welche Regeln gelten für die Namensgebungen bei Bezeichnern?

- bei Kommazahlen einen Punkt und kein Komma setzen

- keine Sonderzeichen wie z.B. ? ! § & > verwenden

10. Welche der folgenden Namen sind gültige Bezeichner, welche nicht? Begründen Sie!

richtig sind:

a)Seite1

e)Fläche2

i)Seitenquadrat

l)2malHoehe

n)Hoehemal2

p)DM2Euro

- nur diese sind gültig, da die anderen Sonderzeichen oder Leerzeichen enthalten, was ungültig ist.

  

17.10.06 13:31, kommentieren

1. Welche Vor- und Nachteile hat das Programmieren in Maschinensprache?

Vorteile:

- benötigt wenig Speicherplatz
- mnemotechnischer Code zum leichteren Merken der Befehle (Assembler)
- niedriges Sprachniveau, deshalb kein Übersetzer notwendig

Nachteile:
- Maschinensprache für Menschen schwer verständlich
- jede Prozessorfamilie benötigt eine andere
- Maschinensprache nicht mit der menschlichen Sprache vergleichbar
- Assembler vom Mikroprozessor abhängig

2. Welche Unterschiede bestehen zwischen Interpreter und Compiler?

Interpreter: - Übersetzung des Programmes zeilenweise
Compiler: - Übersetzung des Programmes komplett
Interpreter: - langsam
Compiler: - schnell
Inerpreter: - funktioniert sofort
Compiler: - funktioniert erst, wenn es keine Fehler mehr gibt

3. Nenne Vor- und Nachteile von Interpreter und Compiler!

Interpreter:

Vorteile:
- funktioniert sofort
- besserer Überblick durch zeilenweise Übersetzung

Nachteile:
- langsam
- bricht bei Fehlern ab

Compiler:

Vorteile:
- ist schnell
- keine Fehler mehr enthalten

Nachteile:
- nicht überschaubar bei der Übersetzung

4. Nenne mindestens 3 wesentliche Unterschiede zwischen einer höheren Programmiersprache und Maschinensprache.

Programmiersprache:

- unabhängig von Mikroprozessor
Maschinensprache:
- vom Mikroprozessor abhängig

 

3.9.06 19:12, kommentieren