Arbeitsblatt Übungen in Delphi Informatik Klasse: 11-12

Werbung
Arbeitsblatt
Übungen in Delphi
Informatik
Klasse: 11-12
Datum: 1. Juni 2007
1.
Es gibt verschiedene Objekte:
1.1.
TLabel
Das erste Label, das man auf dem Formular platziert erhält automatisch den Namen ‚label1’
Eigenschaften
Caption (typ: string)
Ändern der Anzeige eines Labels : label1.caption:= ' neuer Text'
Color (typ: integer)
Beispiele: clred, clblue oder 255 für rot
Ändern der Farbe mit label1.color:=clblue;
1.2.
Tedit
Das erste Edit-Feld erhält automatisch den Namen ‚edit1’
Eigenschaften
Text
Jede Eingabe erfolgt durch Text, auch Zahlen werden als Text (Zeichenkette) interpretiert.
Ändern der Anzeige durch Schreiben in das Feld oder durch eine Wertzuweisung
Edit1.text:= 'neuer Text'
Font
Beim Anklicken der Eigenschaft Font im Objektinspektor öffnet sich das bekannte FontMenü.
1.3.
Tbutton
Der erste Button erhält automatisch den Namen ‚Button1’. Da Nach Doppelklick auf
den Button eine neue Prozedur erstellt wird, sollte man den Namen des Buttons sofort ändern.
Die zuordnung zu seinen Aktionen wird leichter lesbar.
Name
Im Objektinspektor die Eigenschaft ‚Name’ suchen und ändern, sollte einen Bezug zu
den ausglösten Aktionen stehen.
Caption
Ist die Beschriftung des
button1.caption:= ' neuer Text'
Buttons.
Ändern
der
Anzeige
eines
Buttons:
1.4. TListbox
Ist vergleichbar mit einem TEdit.
Eigenschaften
Items
Im Objektinspektor kann man Listenelemente eintragen.
Im Programm sind folgende Aktionen möglich:
Listbox1.items.add('Text’);
Hängt an die vorhandene Liste ein neues Element (Item)
an.
Delphi_1.doc
Seite 1
von8
Arbeitsblatt
Übungen in Delphi
Informatik
Klasse: 11-12
Datum: 1. Juni 2007
Listbox1.itemindex;
Liefert die Nummer des markierten Items. (Zählung beginnt bei
0).
Beispiel:
showmessage(inttostr(listbox1.itemindex));
showmessage(listbox1.items[listbox1.ItemIndex]); Liefert den Inhalt des markierten
Items.
showmessage(listbox1.items[3]);
Listbox1.clear;
1.5.
Liefert den Inhalt des 4. Items.
Löscht alle Listeneinträge
TMemo
Ist ein erweitertes TEdit.
Eigenschaften
Text
Ist der gesamte Inhalt des TMemo
Memo1.text:=’Neuer Text’;
Lines
Überschreibt den alten Text mit dem neuen.
Ist der Inhalt einer Zeile im TMemo
memo1.lines.Add('Neue Zeile');
Hängt eine neue Zeile an den vorhandenen Text
an.
showmessage(memo1.Lines[2]);
Zeigt die 3. Zeile des TMemo. (Beginnt mit 0 zu
zählen.
SelText
Selektierter Text
a:=memo1.SelText;
Schreibt den selektierten Text in die Variable a (Typ: String)
memo1.lines.Add(memo1.SelText);
Hängt den slektierten Text als neue Zeile an den
vorhandenen an.
Clear
Memo1.clear oder memo1.lines.clear Löscht den Inhalt des TMemo.
CommaText
showmessage(memo1.Lines.CommaText);
Zeigt den Text des TMemo’s an, wobei die
einzelnen Zeilen durch Kommata getrennt
sind.
Delete(Zahl)
memo1.Lines.Delete(2);
Löscht die 3. Zeile in einem TMemo.
IndexOf
showmessage(inttostr(memo1.Lines.indexof('memo1')));
Zeigt die Zeilenummer, in der der
Text steht.
1.6.
TCombobox
Die TCombobox hat die gleichen Eigenschaften wie eine Tlistbox.
Delphi_1.doc
Seite 2
von8
Arbeitsblatt
Übungen in Delphi
Klasse: 11-12
1.7.
Informatik
Datum: 1. Juni 2007
TStringGrid
Das TStringGrid ist ein Element, das vergleichbar mit einer Tabelle ist.
Die 1. Spalte und 1. Zeile sind standardmäßig als Bezeichner vorgesehen. Die Nummerierung
beginnt bei 0. Das graue Feld links oben hat demnach die Koordinaten ( 0 | 0 ).
Jede Zelle lässt sich direkt beschreiben.
Eigenschaften
Colcount
legt die Anzahl der Spalten fest.
Stringgrid1.colcount:=4
Es werden 4 Spalten angelegt, mit der Nummerierung 0..3,
Stringgrid1.rowcount:=6
Rowcount
legt die Anzahl der Zeilen fest.
Es werden 6 Zeilen angelegt, mit der Nummerierung 0..5,
Cells (Typ String)
Stringgrid1.Cells[2,4]:=’Text’;
FixedRows
schreibt einen String in die Zelle
(Typ Integer)
Anzahl der fixierten Spalten (grau hinterlegt)
FixedCols
(Typ Integer)
Anzahl der fixierten Zeilen (grau hinterlegt)
GridLineWidth
(Typ Integer)
Breite der Gitternetzlinien
DefaultRowHeight
(Typ Integer)
Höhe der Zeilen
DefaultColWidth
(Typ Integer)
Breite der Spalten
Beispiel:
For i := 1 to 5 do begin
For j := 1 to 5 do begin
stringGrid1.cells[ i , j ]:= inttostr( j );
end;
end;
In die Zellen wird geschrieben, und zwar nacheinander in die Zellen der Reihe 1 (2. Reihe), Reihe 2
(3. Reihe) die Zahlen ' 1 ’ , ' 2 ’ , ' 3 ’ , ' 4 ’ , ' 5 ’ als Zeichen.
Delphi_1.doc
Seite 3
von8
Arbeitsblatt
Übungen in Delphi
Klasse: 11-12
2.
Informatik
Datum: 1. Juni 2007
ASCII
Alle druckbaren und nichtdruckbaren Zeichen werden durch einen Zahlencode dargestellt, den
sog ASCII-Code.
Es gibt dabei eine Entwicklung seit „Erfindung“ dieser Codierung zu verzweichnen.
Zunächst gab es nur 128 Zeichen. Das Problem war, dass nationale Sonderzeichen immer nur
für ein Land darstellbar war, d.h. je nach Ländercode sahen einzelne Zeichen völig anders aus.
Bei der Erweiterung auf 255 Zeichen fielen dies Probleme weg. Aber auch dies reichte nicht
mehr aus, daher war die folgerichtige Entwicklung der „ANSI“-Code. Der alte ASCII wurde übernommen und deutlich erweitert, so dass nun auch chinesische Zeichen etc. darstellbar wurden.
In Delphi werden alle Zeichen, Buchstaben wie Zahlen und Satz- wie auch Sonderzeichen im
herkömmliche ASCII-Code verschlüsselt.
Ord
Definition:
Function Ord(x
: String)
:Integer;
Die Funktion erwartet einen String als Eingabe und liefert als Ergebnis einen IntegerWert.
Beispiel:
Edit1.text:=inttostr(Ord(‘a’));
schreibt in das TEdit die Zeichenfolge 97.
Chr
Definition:
Function Chr(x
: Integer)
:String;
Die Funktion erwartet einen Integer-Wert als Eingabe und liefert als Ergebnis einen
String.
Beispiel:
Edit1.text:=Chr(65));
schreibt in das TEdit das Zeichen A.
Beispiel2
Schreibt in die Listbox die Buchstaben A .. Z
For i:=65 to 90 do begin
Listbox1.items.add(chr( i ))
End;
Schreibt in die Listbox die Buchstaben a .. z
For i:=97 to 122 do begin
Listbox1.items.add(chr( i ))
Schreibt in die Listbox die Zeichen 0 .. 9
End;
For i:=48 to 57 do begin
Listbox1.items.add(chr( i ))
End;
Delphi_1.doc
Seite 4
von8
Arbeitsblatt
Übungen in Delphi
Klasse: 11-12
3.
Informatik
Datum: 1. Juni 2007
Caesar-Verschlüsselung
Der Text steht in einem TEdit (Edit1), der verschlüsselte Text soll in ein zweites TEdit (Edit2) Geschrieben werden, mit festem Code.
Procedure codieren
const
code=3;
var
i,r:integer;
z:char;
begin
For i:=1 to length(edit1.text) do begin
z := edit1.text[i];
// das i-te Zeichen wird gelesen
r := ord(z)
;
// Umwandlung in ASCII-Code
r := r+code;
//Codieren, verschieben entlang der Buchstabenachse
edit2.text := edit2.text+chr(r); //Eintragen in edit2
end;
Problem: Es können auch “Nichtbuchstaben” entstehen.
Durch Weglassen von
r := r+code
und stattdessen durch Einfügen von
If r > 90 then r:=r – 32;
r := r + code;
if r > 90 then r := r – 26;
// werden Großbuchstaben erzeugt
// Die Zeichen nach “Z” werden in Zeichen beginnend mit
“A” umgewandelt.
Frage:
Wie wird entschlüsselt?
Delphi_1.doc
Seite 5
von8
Arbeitsblatt
Übungen in Delphi
Klasse: 11-12
4.
Informatik
Datum: 1. Juni 2007
Funktionen
Funktionen haben den Kopf:
function name (x : Typ1) : Typ2
begin
….
Result:=…..;
(name:=…….;)
end;
x
ist dabei das Argument, die Variable, deren Wert an die Funktion übergeben wird.
Typ1
ist der Typ der Variablen
Typ2
ist der Typ der Funktion
Result
In der Funktion muss diese Zeile stehen. In ihr wird der Funktion ihr Wert zugewiesen. Als Alternative ist auch " Funktionsname:= Wert “ möglich.
Der Aufruf erfolgt immer in der folgenden Form:
Y:=name(Wert);
Beispiele für in Delphi „eingebaute“ Funktionen:
IntToStr(x
:
Integer)
:
String;
Eine Integer-Zahl wird übergeben, das Ergebnis ist ein String.
StrToInt( x :
String)
:Integer
Ein String wird übergeben, Das Ergebnis ist eine Zahl.
5.
Prozeduren
Erfolgt die Deklaration in der Form:
Procedure Name
Begin
…
end;
werden in dieser Prozedur globale Variablen verwendet, so wird ihre Wertänderung global gültig.
Erfolgt die Deklaration in der Form:
Procedure Name (x
:
Typ)
Begin
…
end;
werden von global deklarierten Variablen nur die Kopien verwendet, d.h. globale Werte werden
übernommen, Änderungen sind aber nur innerhalb der Prozedur gültig.
Erfolgt die Deklaration in der Form:
Procedure Name (var
x
:
Typ)
Begin
…
end;
werden global deklarierte Variable direkt verwendet, d.h. globale Werte werden übernommen,
Änderungen sind aber global gültig.
In allen drei Formen sind lokal deklarierte Variablen nur lokal gültig, selbst wenn eine global Variable unter dem gleichen Namen deklariert wird.
Delphi_1.doc
Seite 6
von8
Arbeitsblatt
Übungen in Delphi
Klasse: 11-12
6.
Informatik
Datum: 1. Juni 2007
Typ-Deklarationen
Neben den standarmäßig vorhandenen Typen lassen sich eigene neue Typen dekarieren
6.1.
Record
Ein Record ist eine Zusammenfassung mehrer Variablen mit (möglicherweise) unterschidelichem Typ zu einer neuen.
Type
TRecord = record
a:
integer;
b:
String;
end;
var
einrecord
:
TRecord;
Wertzuweisung mit
Einrecord.a:=4;
Einrecord.b:=’text’;
Oder:
With einrecord do begin
a := 4;
b := ' text ’ ;
end;
6.2.
Eigenständige Variablen – Typen
Type
Menge1 = 'a' .. 'z' ;
Menge2 = (mo , di , mi , dn , fr);
Zaehlmenge = mo..fr ;
Var
X : menge1;
(x ist vom Typ char. Es kann aber auch als Zähler verwendet werden
Y : Zaehlmenge;
(Y ist ein Enumerationswert, also weder Text noch Zahl,
sondern nur als Zähler zu verwenden
Beispiele:
For x:= 'a’ to 'n’ do begin
Showmessage(x);
Hier wird der Inhalt der Variablen in einem Fenster
ausgegeben
End;
For y:=mo to fr do begin
Showmessage('x’);
Hier geht nicht das gleiche wie oben, da dieser Typ
„enumerisch“ ist, d.h. weder String noh integer.
End;
Delphi_1.doc
Seite 7
von8
Arbeitsblatt
Übungen in Delphi
Klasse: 11-12
Informatik
Datum: 1. Juni 2007
Aufgabe:
Schreibe ein Programm mit folgenden Objekten: Label, Edit-Feld und Button. Nach Drücken auf den
Button wird im Feld Edit1 "ein neuer Text" angezeigt. Nach Doppelklick im Editfeld erscheint der Text
auch im Label.
Tip: Wähle bei Edit1 im Objektinspektor Ereignisse "OnDblClick" und schreibe in die Prozedur
den entsprechenden Befehl.
7.
Umgang mit Zahlen
Gibt man in Edit eine Zahl ein und will damit rechnen, muß der "String" in eine Zahl verwandelt werden:
StrToInt
Wandelt einen String in eine Zahl (Integer) um !!!Der String darf nur aus Ziffern
bestehen!!!
IntToStr
Wandelt einen Zahl in eine String um
StrToFloat
Wandelt einen String in eine Zahl (Float oder Turbo3 Real) um !!!Der String darf
nur aus Ziffern bestehen!!!
FloatToStr
Wandelt einen Zahl in eine String um
Aufgabe:
Schreibe ein Programm mit drei Edit-Feldern und einem Button. Nach Start soll in das erste Feld eine
'3' in das zweite eine '5' eingegeben werden. Nach Druck auf den Button sollen die Zahlen addiert
werden und das Ergbnis im dritten Edit-Feld ausgegeben werden.
Tip
Die Befehle in der Prozedur lauten:
a := stroint(edit1.text)
b := stroint(edit2.text)
c := a + b
edit2.text(inttostr( c ))
!!!Vergiß nicht, die Variablen zu deklarieren!!!
Es geht auch kürzer, in einer Zeile! Wie?
7.1
Auf \\ntserver\schueler\delphi\Aufgaben\ befinden sich die Verzeichnisse Aufgabe_1 und Aufgabe_2.
7.2
Beschreibe die Funktionen des Programmes aus Aufgabe_!.
7.3
In Aufgabe_2 kann man Text auf verschiedene Arten unter den Feldern austauschen.
Notiere die Prozeduren, die es erlauben den Text per Drag und Drop von einem Feld in
ein anderes zu kopieren. (Es sind hierzu Prozeduren beim Sender (Source) und Empfänger nötig.
7.4
Übertrag das Gelernte in ein eigenes Programm. Ein Edit-Feld und ein Label. Es soll der in dem
Edit-Feld eingegebene Text per Drag und Drop in das Label kopiert werden.
Delphi_1.doc
Seite 8
von8
Herunterladen