10
[email protected] Informatik 10 Seite 1 Einführung in die Informatik Informatik ist: die Wissenschaft / Technik / Anwendung der maschinellen Verarbeitung, Speicherung und Übertragung von Information. Das Fach Informatik am Gymnasium vermittelt: - systematisches Basiswissen über informationstechnische Systeme - typische Denkweisen, die den Informations-Techniken zugrunde liegen. ► Fachprofil.ppt (Uli Freiberger) ► Was_ist_Informatik.htm (GI e.V.) 1. Modellierung - objektorientierte Modellierung - funktionale Modellierung - datenorientierte Modellierung - zustandsorientierte Modellierung - Algorithmen - . . . (zur Umgebung) (welche Objekte?) (welche Eigenschaften?) (Klassen) (Beziehungen) ► Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale System Modell: abstrahierte Beschreibung eines Systems mit den (für ein bestimmtes Ziel) wesentlichen Eigenschaften U. Freiberger

Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

Embed Size (px)

Citation preview

Page 1: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 1

Einführung in die

InformatikInformatik ist: die Wissenschaft / Technik / Anwendung der maschinellen Verarbeitung, Speicherung und Übertragung von Information.

Das Fach Informatik am Gymnasium vermittelt:

- systematisches Basiswissen über informationstechnische Systeme

- typische Denkweisen, die den Informations-Techniken zugrunde liegen.

► Fachprofil.ppt (Uli Freiberger)► Was_ist_Informatik.htm (GI e.V.)

1. Modellierung

- objektorientierte Modellierung

- funktionale Modellierung

- datenorientierte Modellierung

- zustandsorientierte Modellierung

- Algorithmen

- . . .

(zur Umgebung)(welche Objekte?)(welche Eigenschaften?)(Klassen)(Beziehungen)

► Modellieren.ppt (Uli Freiberger)

Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale System

Modell: abstrahierte Beschreibung eines Systems mit den (für ein bestimmtes Ziel) wesentlichen Eigenschaften

U. Freiberger

Page 2: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 2

2. Die objektorientierte Modellierung

2.1 Objekte und Klassen in einer DatenbankBsp.: Modell einer Schule in einer Datenbank

Betrachte nur die Personen der Schule als Objekte (Hausmeister, Postbote, ... weglassen), es interessieren nur Name, Vorname, Geschlecht, Fächerverb bei Lehrern, GebDatum bei Schülern (Eigenschaften, Attribute), wir teilen sie ein in zwei Klassen (Schüler, Lehrer) und interessieren uns nur für die Beziehung „unterrichtet“ oder „wird unterrichtet von“

(das ist: Abgrenzung, Abstraktion, Idealisierung, Aggregation und Strukturanalyse)

HafnerBertram

M/Phm

ScheinerMarlies

L/Fw

MeierFranz

14.7.1988m

SilviaHuber

11.2.1987w

VerenaSowieso

26.7.1988w

HeinzHeino

30.11.1987m

MartinaKlein

20.4.1988w

GustavMüller

16.6.1988m

. . .

. . . . . . . . .

Objektemit ihren Attribut-

werten

Klassenmit ihren Attributen

(Eigenschaften)

KlasseLehrer

KlasseSchüler

Lehrer Nachname Vorname Fächerverb Geschlecht

Schüler Nachname Vorname GebDatum Geschlecht

Beziehung zw. Klassen„unterrichtet“

ausführlich sh. Kap. 3 Datenbanken

unterrichtet ►

Page 3: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 3

2.2 Objekte und Klassen in einer objektorientierten Programmiersprache (hier Delphi)

Edit1 ist ein Objekt der Klasse TEdit,

Memo1 ein Objekt der Klasse TMemo.

Die vier Buttons sind Objekte der Klasse TButton.

Das ganze Fenster Form1 ist ein Objekt der Klasse TForm.

Die Eigenschaftswerte (Attributwerte) der Objekte kann man im Voraus mit dem Objektinspektor einstel-len, z.B. hat ein TForm-Objekt die Eigenschafen Caption, Left, Width, Color, ...

Die Objekte besitzen auch bestimmte Operationen („Methoden“), z.B. besitzen TEdit-Objekte und TMemo-Objekte die Methoden clear, copyToClipboard, pasteFromClipboard, selectAll, hide, show usw. . Diese Methoden können nur während der Ausführung des Programms aufgerufen werden. Man benutzt sie also nur im Quelltext des Programms. Mit der Taste F12 öffnet und schließt sich das Fenster mit dem Quelltext.

Durch Hinzufügen selbstgeschriebener Ereignis-Methoden können die Objekte auf Ereignisse reagieren, z.B. auf einen Mausklick.

Objekte können andere Objekte enthal-ten: Das Fenster Form1 enthält die Objek-te Button1, Button2, Edit1 und Memo1. Aber auch Memo1 enthält Objekte, z.B. das Objekt Lines von der Klasse TStrings, das den mehrzeiligen Text des Memo auf-nimmt. Das Objekt Lines hat Methoden zum Speichern und Laden des Textes.

Zu jeder Klasse liefert dir die Delphi-Hilfe umfassende Informationen und Beispiele. (Markiere z.B. einen Button und drücke die Taste F1.)

Klasse TEdit<<Eigenschaften>>Text: stringColor: TcolorWidth: integer... (und viele andere)<<Methoden>>createhideshowclearcopyToClipboardpasteFromClipboard... (und viele andere)

Klasse TButton<<Eigenschaften>>Caption: stringenabled: booleanWidth: integer... (und viele andere)<<Methoden>>createhideshowbroadcastclick... (und viele andere)

Page 4: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 4

► etliche Delphi-Komponenten (=Klassen) besprechen/vorführen:► TEdit, TButton, TLabel, TForm

Dabei mit dem Inspektor die Eigenschaften einstellen. Ereignis-Methoden schreiben und Eigenschaften während des Programmlaufs verändern. Methoden der Objekte aufrufen.

► Auto zeichnen mit Shapes, mit Tastendruck fahren lassen, färben ...► TRadiogroup (z.B. für Farbauswahl)► Geschwindigkeit des Autos mit TTrackBar-Objekt regeln► Dialogfenster für Farbe, Öffnen, Speichern► Aufgaben: 1. Auto fahren lassen (Objekte der Klassen: TShape, TButton, TTimer) Zusatz: Tempo variieren (TTrackBar), auch rückwärts; umlackieren (TColorDialog)

2. Zwei TMemo-Objekte sollen über ein TMainMenu-Obj. bearbeitet werden können: mit den Einträgen ’Bearbeiten Memo1 / kopieren, einfügen, löschen’. Ebenso für Memo2.

Zusatz 1: Eintrag für „Sehr geehrter Herr/Frau“ je nach RadioGroup1-Einstellung. Zusatz 2: Eintrag für ’Datei / öffnen, speichern / beenden’ Zusatz 3: Gib jedem TMemo-Objekt ein TPopupMenu-Objekt mit ’kopieren, ... ’

► Dazwischen nochmal deutlich erklären: Projekt speichern, neuen Ordner!, exe-Datei, Kompilieren, was muss ich auf Diskette kopieren?, ... und die folgenden 3 Seiten !!

Page 5: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 5

U.Freiberger

[Attribut = Eigenschaft; Attributwert = Eigenschaftswert][Daten = Attributwerte eines Objekts]

Zugriff auf Objekte:Ein Objekt ist für seine Daten selber verantwortlich. Das bedeutet: Nur mit Hilfe seiner eigenen Metho-den gestattet es anderen Objekten, auf seine Eigenschaftswerte zuzugreifen:

stellt eine Botschaft an das Objekt m2 dar: „Bitte liebes Objekt m2, führe deine Methode KleidungNen-nen() aus.“ Als Ergebnis liefert die Methode ’Pullover’.

Diese Botschaft könnte ein Personalchef an Objekt m1 senden lassen: Sie bedeutet eine Versetzung von der ’Verwaltung’ zum ’Service’. Mit der Methode AbteilungMerken() ändert Objekt m1 selber seinen Eigenschaftswert von Abteilung. Warum sollte den Eintrag ’Service’ nicht der Personalchef vornehmen? Z.B. weil das Objekt bei diesem Vorgang auch den Eigenschaftswert von Kleidung ändern muss. Und da soll es gefälligst selber dran denken. Dieses Prinzip der objektorientierten Modellierung nennt man Datenkapselung: Zugriff auf die Daten eines Objekts hat man nur über seine Methoden. Bei der Model-lierung der Objekt-Klasse wurde festgelegt, wie und auf welche Daten Zugriff möglich sein soll.

m2.KleidungNennen();

m1.AbteilungMerken(’Service’);

Page 6: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 6

Zugriff auf Delphi-Objekte im Quellcode des Programms:

a) Methoden aufrufen

(Objekt) (Methode)

Beispiele:

Memo1.Clear; (Memo1 löscht seinen Text)

Button1.Hide; (Button1 macht sich unsichtbar)

Form1.Close; (Formular1 schließt sich)

OpenDialog1.Execute; (Öffnen-Dialogfenster führt sich aus)

Memo2.CopyToClipboard; (Memo2 kopiert seinen Text in die Zwischenablage)

Memo2.PasteFromClipboard; (Memo2 fügt Text aus der Zwischenablage ein)

(Objekt) (Objekt) (Methode von Picture) (Parameter der Methode)

Das Objekt Image1 enthält ein Picture-Objekt, dessen Methode LoadFromFile aufgerufen wird.

(Objekt) (Objekt) (Methode) Parameter: (Objekt) (Eigenschaft)

Hier wird der Parameter (Dateiname mit Pfad) nicht direkt angegeben sondern aus der Eigenschaft Filename von OpenDialog1 herausgelesen.

b) Eigenschaftswerte zuweisen (schreiben) und abfragen (lesen)

(Objekt) (Eigenschaft) (zugewiesener Eigenschaftswert)

Das Symbol ’:=’ benutzt Delphi als Zuweisungs-Istgleich. Das Attribut Caption erhält durch diese Anweisung den Wert ’mein Programm’.

Dies scheint auf den ersten Blick dem Prinzip der Datenkapselung zu widersprechen. In Wirklichkeit ist diese Schreibweise eine Abkürzung für: Form1.setCaption(’mein Programm’). Es wird also nicht einfach nur der Wert einer Variablen verändert, sondern eine unsichtbare Methode setCaption() aufgerufen. Diese sorgt dafür, dass der Wert in eine unsichtbare Variable FCaption geschrieben wird und dass der veränderte Wert auf dem Bildschrim erscheint. Du siehst: Eigenschaften von Delphi-Objekten, die der Objektinspektor anzeigt, sind mehr als nur Attribute. Die Wertzuweisung an eine Objekt-Eigenschaft ist in Delphi immer ein Methoden-Aufruf.

Die Schreibweise ’:=’ wurde ursprünglich nur für die Wertzuweisung bei Variablen benutzt (a := 5; b := a-3). Dass Delphi sie auch bei Objekt-Eigenschaften benutzt, ist sehr praktisch: man muss sich nicht merken, ob es bei einer Klasse nun heißt setCaption() oder changeCaption() oder writeCapti-on(). Das weiß dann schon das Objekt selber. Und vor allem: diese Methoden lassen sich durch den Objekt-Inspektor bereits zur Entwicklungszeit aufrufen. Sobald du im Inspektor einen Wert in eine Eigenschaft eintippst, wird die Methode ausgeführt.

Memo1.Clear;

Image1.Picture.LoadFromFile(OpenDialog1.Filename)

Form1.Caption := ’mein Programm’

Image1.Picture.LoadFromFile(’C:\Bilder\Foto.jpg’)

Page 7: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 7

Beispiele:

Edit2.Text := ’Hier Name eingeben!’; Shape1.Left := 120; Shape2.Left := Shape1.Left + Shape1.Width + 20; Shape3.Brush.Color := clgreen; Label1.Autosize := false; Timer1.Enabled := true;

Die Kontrollstrukur if ...(Bedingung) then ...(Anweisung1) else ...(Anweisung2) nennt man Entscheidungsanweisung oder bedingte Anweisung. Diese ist in allen Programmiersprachen ein wichtiger Baustein für die Programmierung. Lässt man den else-Teil weg, nennt man die Entschei-dungsanweisung einseitig, sonst zweiseitig.

Alle Programmiersprachen unterscheiden zwischen dem Vergleichs-Istgleich (in Delphi ’=’) und dem Zuweisungs-Istgleich (in Delphi ’:=’). Der Ausdruck Edit.Text=’männlich’ ergibt einen Wahrheitswert (true oder false). Je nach dem wird die Anweisung hinter then oder die Anweisung hinter else ausgeführt.

Beachte:1. Die Methoden der Objekte können nur während des Programmlaufs („zur Laufzeit“) aufgerufen

und ausgeführt werden, denn die Objekte werden erst beim Druck auf den „Start“-Knopf (d.h beim Compilieren des Quellcodes) im Computerspeicher erschaffen.

Dagegen kann man viele Eigenschaftswerte von sichtbaren Delphi-Objekten auch im Voraus („zur Entwicklungszeit“) mit dem Objektinspektor festlegen. Dabei wird auch eine Methode aufgerufen, deren Wirkung man sofort sieht. Man hat damit alle sichtbaren Eigenschaften des Objekts besser im Überblick und braucht nicht so viel Code zu schreiben.

2. Ein Delphi-Programm arbeitet ereignis-orientiert:

Jede Aktion wird von einem Ereignis ausgelöst, z.B. Click auf einen Button, Timer-Ereignis, Drü-cken einer Taste, Schließen eines Fensters, Auswählen eines Menüeintrags usw.

Deswegen besitzt ein sichtbares Delphi-Objekt normalerweise eine Vielzahl von Standard-Ereignis-sen, auf die es reagieren kann, wenn du zu einem Ereignis eine Ereignis-Methode schreibst. Mache im Objekt-Inspektor auf das gewünschte Ereignis einen Doppelklick und ergänze die Methode, wel-che Delphi dir anbietet, mit selbstgeschriebenen Anweisungen zwischen begin und end.

Beispiel: Du möchtest mit einem Click auf Button1 den Timer1 einschalten und dieser soll immer nach 0,1 Sekunden Shape1 veranlassen, sich um 1 Pixel nach rechts zu bewegen:

procedure TForm1.Button1Click(Sender: TObject);begin Timer1.Interval:=100; Timer1.Enabled:=true;end;procedure TForm1.Timer1Timer(Sender: TObject);begin shape1.Left:=shape1.Left + 1;end;

if RadioGroup1.ItemIndex = 2 then Form1.Color := clred;

if Edit1.Text = ’männlich’ then Label1.Caption := ’Sehr geehrter Herr ’ + Edit2.Text else Label1.Caption := ’Sehr geehrte Frau ’ + Edit2.Text;

Page 8: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 8

1. Termin-Aufgabe:

Erstelle ein Delphi-Programm, mit dem du in einem TMemo-Objekt Texte schreiben und bearbeiten kannst. Das Programm soll mindestens folgenden Anforderungen genügen:

- Es soll eine Menü-Leiste besitzen mit den Einträgen

’Datei / öffnen, speichern, beenden’ (Speichern als txt-Datei)

’Bearbeiten / kopieren, ausschneiden, einfügen’

’Text / Schriftauswahl’

- Es soll eine ListBox haben, in der ein paar Namen eingetragen sind. Durch Click auf einen Namen in der ListBox soll ein fertiger Briefkopf mit diesem Namen in das Memo eingefügt werden.

Wenn du magst, kannst du dir noch Zusätzliches ausdenken, z.B. eine RadioGroup, in der du auswäh-len kannst Brief förmlich oder privat.

Viel Spaß! Hn

Die Klasse TCanvasAußer den Objekt-Klassen, die in der Komponenten-Palette von Delphi zur Verfügung stehen, gibt es viele weitere Objekt-Klassen. (Im nächsten Kapitel werden wir sogar selber neue Klassen erstellen.) Eine häufig gebrauchte Klasse ist TCanvas, das ist eine Zeichenfläche, die viele andere Klassen verwenden, z.B. TForm.Canvas, TImage.Picture.Bitmap.Canvas, TPaintbox.Canvas, TPrinter.Canvas. Immer wenn etwas grafisch dargestellt werden soll, macht man das in einem TCanvas-Objekt. Die häufig gebrauchten Eigenschaften und Methoden von TCanvas habe ich hier zusammengestellt. Wie du siehst, benutzt TCanvas wiederum Objekte weiterer Klassen:Brush: ist zuständig für den Hintergrund (Farbe, ...).Pen: definiert einen Zeichenstift (Farbe, Dicke, ...).Font: legt die Schrift für Textausgabe fest.Mit der Eigenschaft PenPos liest oder schreibt man die aktuelle Position des Stifts, und mit der Eigenschaft Pixels kann man die Farbe einzelner Punkte lesen oder schreiben.Die Zeichen-Methoden von TCanvas probierst du am besten selber aus und studierst dabei jeweils die Bei-spiele in der Delphi-Hilfe.

Klasse TCanvas<<Eigenschaften>>Brush: TBrushPen: TPenPenPos: TPointFont: TFontPixels[x,y]:TColor

... (und andere)<<Methoden>>arcdrawellipsemovetolinetotextoutfloodfill ... (und viele andere)

Page 9: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 9

Beachte das Koordinatensystem von TCanvas: In der Mathe-matik läuft die x-Koordinate nach rechts, die y-Koordinate nach oben. Bei TCanvas (und generell bei Ausgaben auf dem Bildschirm) zeigt die y-Koordinate nach unten und der Koor-dinaten-Ursprung liegt in der Ecke links oben.

Aufgabe:1. Füge in das Hauptformular Form1 ein TPaintbox-Objekt ein und spiele mit den Methoden

von TCanvas. Probiere am besten das nachfolgende Beispiel aus und füge selber noch was hinzu. Dort wird anstelle eines Button ’zeichne’, der mit onClick den Zeichenvorgang auslöst, einfach das Ereignis onPaint der Paintbox verwendet. Dieses Ereignis tritt immer ein, wenn das Objekt sich zeichnen muss, z.B. beim Start des Programms. Beachte auch die praktische Anweisung with ... do ...

x

Bildschirm-Koordinaten

y

Wenn du anstatt

with PaintBox1.Canvas ...schreibst:

with Form1.Canvas ...

so wird die ganze Grafik auf die Zei-chenfläche von Form1 gezeichnet.

Wenn du das gleiche mit Printer.Canvas machst:

with Printer.Canvas ...

dann kannst du das auf den Drucker ausgeben. Dazu muss man aber noch ein bißchen mehr wissen.

Page 10: Einführung in die Informatik - bertram-hafner.de · Modellieren.ppt (Uli Freiberger) Vorteil eines Modells: leichtere formale Beschreibung, größere Anschaulichkeit als das reale

[email protected] Informatik 10 Seite 10

2. Probiere das folgende Beispiel aus. Hier wird das Ereignis onMouseMove verwendet, das immer eintritt, wenn die Maus bewegt wird. Du siehst, dass die Methode die Koordi-naten der Maus x, y übergibt, das kann man doch prima ausnutzen . . .

3. Zeichne in ein Paintbox-Objekt ein Schachbrett. Zeichne 9 Linien waagrecht und 9 Linien senkrecht. Benutze dafür eine Wiederholungsanweisung:

for i := 0 to 8 do ... (siehe 11. Klasse) Zum Ausfüllen der Flächen benutze die Methode floodfill. Zuvor musst du die Hinter-

grundfarbe in brush festlegen. Für floodfill brauchst du die Koordinaten eines Punkts der Fläche. Ihre Berechnung innerhalb einer Wiederholungsanweisung ist nicht ganz einfach!

4. In dieser Aufgabe benutzen wir kein TCanvas-Objekt, passt aber gut zum Thema Grafik: Ein TImage-Objekt kann fertige Bilder aufnehmen und auf dem Bildschirm unterschied-

lich darstellen. Dazu besitzt es ein Objekt Picture, und dieses hat eine Methode zum Laden einer Bilddatei; ebenso Methoden zum Vergrößern oder Verkleinern des Bildes.

Wie du siehst, soll dein Programm ein Bild öffnen, in verschiedener Größe anzeigen und auch mit Scrollbar-Objekten horizontal und vertikal verschieben können.

Die Maus-Koordinaten als Parameter