Informatikkurs (Menzel) - Dokumentation
Stoffverteilung 2013/14/15
Schuljahr 2013/14 |
|
1. HJ | |
2. HJ | Programmieren mit C# |
Schuljahr 2014/15 |
|
1. HJ |
Operating Systems
|
2. HJ |
Algorithmen, Sortierverfahren, Aufwandsabschätzung
Programmieren mit C#
|
Schuljahr 2015/16
|
|
1. HJ
|
in Planung
|
2. HJ
|
in Planung
|
Bundeswettbewerb Informatik
Die vier Teilbereiche der Informatik:
- Theoretische Informatik
- Praktische Informatik
- Technische Informatik
- Angewandte Informatik
1.1.1 Aufbau und Arbeitsweise eines PCs / Netzwerks
EVA
Das EVA-Grundprinzip der Datenverarbeitung lautet "Eingabe → Verarbeitung → Ausgabe"
John-von-Neumann-Architektur:
- Der BUS verbindet unter anderem die CPU, das Speicherwerk und das Ein-/Ausgabewerk
- Es gibt einen gemeinsamen Speicher für Daten und Programme: Das Speicherwerk
- Die Daten im Arbeitsspeicher sind wesentlich schneller austauschbar als Daten auf permanenten Speichermedien, wie z.B. der Festplatte, einem USB-Stick, einer Speicherkarte oder einer DVD
- Grundsätzliche Unterscheidung von vier Formen des Speichers:
a) permanenter Speicher: sehr groß (1 TB), sehr langsamer Zugriff
b) Arbeitsspeicher: groß (8 GB), mittel schneller Zugriff
c) Cache (in der Regel in der CPU): klein (1 MB), schneller Zugriff
d) Stack (Stapelspeicher oder Kellerspeicher im Kern der CPU): sehr klein (wenige Byte), sehr schneller Zugriff, für Zwischenergebnisse bei Berechnungen
Der "John-von-Neumann-Flaschenhals"
Als Flaschenhals bezeichnet man die Tatsache, dass der Datentransport durch den BUS bezogen auf die Geschwindigkeit die Bremse im Computersystem darstellt. Die CPU war es früher, heutige CPUs sind jedoch sehr schnell. Viele Daten müssen durch den Engpass (BUS) zwischen Arbeitsspeicher und CPU hin- und her transportiert werden, die CPU ist fast nie ausgelastet. Um den Verkehr auf der Datenautobahn etwas zu entlasten, gibt es einen zusätzlichen Speicher, den Cache. Er kann in die CPU integriert sein, muss aber nicht. Der noch kleinere und schnellere stack hingegen ist immer Teil der CPU (Prozessor). Die Zugriffsgeschwindigkeiten unterscheiden sich jeweils etwa um den Faktor 10.
- Funktion des Arbeitsspeichers (RAM = Random Access Memory = Hauptspeicher)
-
Funktion der Hauptplatine (mainboard, motherboard)
-
Funktion des BUS
- Funktion des Arbeitsspeichers
- Funktion des Prozessors: Rechnen (+ - * /) Vergleichen ( < > <= >= != ) Logische Operationen: NOT AND OR NAND
- Der Prozessor enthält ein Rechenwerk und ein Steuerwerk. Das Steuerwerk ist eine Art "Mini-Betriebssystem".
- Funktion des cache: Entlastung des BUS
- Funktion des stack: Zwischenergebnisse größerer Berechnungen in der CPU ablegen, mit denen aber gleich weiter gerechnet wird.
Das Betriebssystem ist unter anderem verantwortlich für die Kommunikation zwischen den wichtigsten Komponenten eines PC.
Schnittstellen (alle mit dem BUS auf dem mainboard in Verbindung):
Der stack
Wie arbeitet der "stack" (= Kellerspeicher / Stapelspeicher) in der CPU?
- nach dem LIFO-Prinzip: last in first out = was zuletzt obenauf gelegt wurde, wird zuerst wieder entnommen. Auf den Stapel kann man nur von oben zugreifen.
- einfache Prozessorbefehle (Assembler = Maschinensprache):
init | Erzeuge einen neuen Stapel |
push a | Lege ein "a" auf den Stapel |
add |
Addiere die beiden obersten Werte, entferne sie
und lege dann das Ergebnis oben auf den Stapel
|
mul |
Multipliziere die beiden obersten Werte, entferne sie
und lege dann das Ergebnis oben auf den Stapel
|
pop | Hole das oberste Element vom Stapel, dabei wird es entfernt |
top | Lies den Wert des obersten Elements, dabei wird es NICHT entfernt |
- Programme, die in Hochsprachen wie "Java" oder "C#" geschrieben sind, werden von einem Compiler übersetzt in "Bytecode". Dieser Bytecode wird in einem zweiten Schritt in Assembler, also Maschinensprache, übersetzt und können so auch schnell ausgeführt werden. Die komplette Liste aller Assembler-Befehle finden Sie z.B. hier .
- Wie wandelt ein Betriebssystem einen Rechenausdruck so um, dass er vom Prozessor mit der LIFO-Stapelverarbeitung abgearbeitet werden kann? Vorgehen: Den Term von außen nach innen betrachten und als Baum darstellen, der auf dem Kopf steht:
Man verfolgt nun den Weg gegen den Uhrzeigersinn und schreibt jedes Element auf, wenn man es zum ersten Mal besucht. Man erhält so die Präfix-Notation des Terms. Dreht man diese herum, erhält man die Postfix-Notation. In dieser Reihenfolge werden die Befehle vom Betriebssystem zum Prozessor geschickt, damit dieser nach dem LIFO-Prinzip den Term auswerten kann.
Anmerkung: Man erhält die Postfix-Notation auch direkt, wenn man den Weg von hinten (rechts oben) nach vorne (links oben) im Uhrzeigersinn schreitet und immer dann ein Element notiert, wenn man es auf der folgenden Strecke nicht mehr besuchen wird.
Nun wird zunächst die 17 in den Kellerspeicher gelegt, dann die 8, die 6, die 5 und dann wird der "+"-Operator auf die beiden obersten Elemente angewandt. Nun wird die 3 auf den Stapel gelegt, gefolgt vom *, welches wiederum angewandt wird usw.
***
Weiteres Beispiel: Der PC soll ausrechnen, was a+2*(b+1)+c ergibt.
Compiler (Programmübersetzer) und Betriebssystem (genau genommen auch noch das Steuerwerk in der CPU) arbeiten nun zusammen. Sie leiten an, wann welche Daten aus dem Hauptspeicher (oder cache) über den BUS mit welcher Befehlsfolge zur CPU transportiert werden.
Infix: a + 2 * ( b + 1 ) + c
Aus der Infix-Form gelangt man über einen Binärbaum zur Präfix-Form:
Präfix: + + a * 2 + b 1 c
Umdrehen führt zur Postfix-Form:
Postfix: c 1 b + 2 * a + +
Aus der Postfix-Form ergibt sich folgende mögliche (nicht die einzige) Befehlsfolge für die CPU:
Programmierbefehle auf dieser sehr tiefen (prozessornahen) Ebene stehen in der Sprache "Assembler". Ein "richtiges" Assemblerprogramm enthält auch noch Angaben über die Adressen im Hauptspeicher, aus denen die Daten geholt werden sollen. Diese Adressen werden für gewöhnlich im Hex-Code dargestellt.
Umrechung von bit, byte, kB, MB, GB, TB:
8 bit = 1 Byte
1.024 Byte = 1 kB, 1.024 kB = 1 MB, 1.024 MB = 1 GB, 1.024 GB = 1 TB
Erläuterung des Dualsystems (=Binärsystem) (Basis 2) und des Hexadezimalsystems (Basis 16). Umrechnung zwischen Dezimal- und Dualsystem. Es gibt auch das Hexadezimalsystem (Basis 16). Im Hexadezimalsystem gibt die letzte Stelle rechts die 1er an, die zweite von rechts die 16er.
Beispiele:
dezimal | dual = binär | hexadezimal |
9 | 1001 | 9 |
10 | 1010 | A |
15 | 1111 | F |
26 | 11010 | 1A |
255 | 11111111 | FF |
Hexadezimal werden Farbtöne auf Webseiten dargestellt, je 2 Stellen für den Rot-/ Grün- und Blau-Anteil ergeben 6 Stellen, die jeweils die Werte 0 bis F (16 Werte annehmen können).
Beispiele:
# 0000FF = blau
So können z.B. 16 x 16 = 256 verschiedene Blautöne unterschieden werden. Für die Mischungsmöglichkeiten von rot, grün und blau ergibt sich:
256^3 = 2^24 = 16,7 Millionen Farben können somit unterschieden werden. Zur Speicherung eines Farbwertes benötigt man 24 bit. Im Dualsystem wären das 24 Stellen, im Hexadezimalsystem stellt man dies mit 6 Stellen dar, es dient also vor allem der Übersichtlichkeit bei sehr großen Zahlen und wird somit auch für Speicheradressen verwendet.
Der HexViewer
Einblicke mit dem HexViewer in die Form, wie Dateien auf der Festplatte gespeichert werden => Vergleich von *.txt und *.doc bzw. Grafikformaten. Ergebnis: Ein HexViewer zeigt jedes Zeichen als Kombination aus zwei Hexadezimalzeichen, z.B. "3F". Das bedeutet, dass 16*16 = 256 Zeichen hier unterschieden werden können. Da 256 = 2^8 gilt: Der Speicherbedarf für ein Zeichen beträgt im HexViewer also 8 bit = 1 Byte. In diesem Fall werden die Bytes als ASCII interpretiert, da dies der gebräuchlichste 1-Byte-Code ist. Hierbei gilt es zu beachten, dass diese Darstellung nur dann brauchbar ist, wenn es sich bei den Daten auch wirklich um Text handelt. So wirken Bilder häufig wie eine zufällige Aneinanderreihung von Zeichen, manchmal sind aber auch noch Muster zu erkennen (besonders in unkomprimierten Bildern wie z.B. in Bitmaps).
Es wurde deutlich, dass .doc-Dateien im Vergleich mit .txt-Dateien mehr Informationen hinzufügen als "notwendig" (abgesehen von den Infos zur Formatierung, z.B. Schriftgröße, Schriftart, ...). Im Vergleich der Grafikformate zeigt sich, dass .bmp jeden Pixel einzeln abspeichert, .gif hingegen nach geometrischen Mustern in Grafiken sucht und somit teilweise weniger als 1% des Speicherplatzes einer .bmp-Datei benötigt!
Standards in der Codierung:
Es gibt auf der Welt viel mehr Zeichen als nur 256, man denke nur an die chinesische Sprache. Deshalb reichten der alte ASCII-Code (7 bis 8 bit = 128 bis 256 Zeichen) und auch der ISO-Standard (8 bit = 256 Zeichen) sowie andere (z.B. ANSI) nicht aus.
Aktuell wird deshalb der Unicode weltweit als Standard verwendet. Früher hatte er noch einen Zeichenvorrat von 65.536 Zeichen. Um ein einzelnes Zeichen darzustellen, verwendete man zunächst 16 bit, da 2^16 = 65.536 verschieden Kombinationsmöglichkeiten an 0en und 1en ermöglicht (16 bit = 2 Byte). Doch auch hier hat sich gezeigt, dass man noch mehr Zeichen unterscheiden können möchte. Deshalb wurde der Unicode nochmals auf ca. 21 bit erweitert, so dass nun über 1 Mio. Zeichen unterschieden werden können, davon sind aktuell bereits 109.242 definiert (Unicode 6.0, Stand 2011), also ca. 10%.
Datenübertragung im Internet
PC → DSL-Router (Modem) → Telefonbuchse → Verteilerkasten → Router → Provider → Router → webserver → und wieder zurück
Besichtigung eines Servers mit switches und einem Rangierfeld (patchpanel)
Weg einer Anfrage zu einem Server über alle Router wird gezeigt über ein traceroute: Start - Ausführen - cmd - tracert www.gmx.de
Netzwerktechnik:
- Aufbau eines Netzwerks: Bestandteile, Übertragungsgeschwindigkeiten, OSI-Schichtenmodell, …
a) Grundbegriffe: DSL-Modem, Router, Provider, Server
b) Routing zwischen Client und Server über einen switch (Sternverteiler)
c) IP-Adressen (dynamisch vom Provider zugewiesen), Ports ("Eingänge" bei der Datenübertragung), MAC-Adressen sind statisch an Netzwerkkarten gebunden
d) LAN-Topologie: Bis ca. 52 Workstations reicht meistens EIN switch. Jede Workstation ist mit diesem verbunden. Diese Topologie heißt "Stern". Ab ca. 53 braucht man mehrere switches, es entsteht ein "Baum". Der Stamm des Baumes entspricht den starken Kabeln, welche die switches verbinden, die Äste hingegen entsprechen den Kabeln, welche eine Workstation mit einem switch verbinden. Andere Topologien machen in der Regel keinen Sinn (Ring, Bus, vollvermascht, ...). Im Gegensatz zu einem Hub, der mit einer Mehrfachsteckdose verglichen werden kann, ist ein switch in der Lage, IP-Adressen zu speichern und somit sinnvoller.
e) Patchkabel: twisted-pair-Kupfer-Kabel (CAT 5 / 6 / 7) im Vergleich mit Glasfaserkabel:
Geschwindigkeit Datentransfer |
max. Distanz zwischen zwei switches |
Biegeradius | Störungsanfälligkeit | Preis | |
twisted pair
Kupferkabel
|
CAT 5:100 Mbit/sec CAT 7:bis 1 Gbit/sec |
100m | gut |
zwar gering, aber negativ: Einfluss durch elektrische Felder |
günstig |
Glasfaser (LWL) | 2,5 Gbit/sec bis 32 Tbit/sec !!! | ca. 100 km | sehr gut |
sehr gering gut: kein Einfluss durch elektrische Felder, keine Erdung notwendig selten: Glasfaser kann theoretisch brechen |
teuer |
Nebenbei:
Trotz der unterschiedlichen Geschwindigkeiten (erste Spalte) gilt:
Die Ausbreitung eines Signals über Kupferkabel entspricht theoretisch 2/3 der Lichtgeschwindigkeit (300.000 km/sec), also ca. 200.000 km/sec. Praktisch gibt es jedoch noch einige Störquellen, welche die Signalausbreitung leicht verzögern.
Im Glasfaserkabel (LWL) erreicht die Signalausbreitung ebenfalls nur ca. 0,7 * Lichtgeschwindigkeit.
Die ca. 300.000 km/sec erreicht das Licht nur im Vakuum.
f) Tatsächliche Geschwindigkeit der Datenübertragung
Die Geschwindigkeiten aus der Tabelle sind natürlich sehr viel größer als das, was wir tatsächlich zu Hause nutzen können. Dies liegt daran, dass sich alle Menschen diese Leitungen teilen müssen. CAT-7-Kabel übertragen 1 GBit, also 0,125 GByte (GB), pro Sekunde. In der Realität können wir aber nicht 128 MB pro Sekunde übertragen, sondern sehr viel weniger.
Das schwächste Glied in der Kette bestimmt die Geschwindigkeit:
- Vertrag mit dem Provider (z.B. DSL 16.000 oder DSL 50.000), z.B. Telekom, 1&1, Vodafone, O2, Alice, Kabel BW, Kabel Deutschland)
- Maximale Geschwindigkeit des DSL-Modems im Haus (der "alte" Speedport W502V kann z.B. nicht mehr als DSL 16.000)
- Art der Kabel (Glasfaser oder Kupfer) vor und nach dem Verteilerkasten der Telekom, der Ihrer Wohnung am nächsten ist
- Technik im Verteilerkasten und damit die DSL-Variante, die an Ihrer Adresse verfügbar ist:
- ADSL 2+ ermöglicht 24 Mbit/sec = 3 MB/sec im Downstream
- VDSL ermöglicht 50 Mbit/sec = 6 MB/sec im Downstream
- VDSL mit Vectoring-Technik ermöglicht 100 Mbit/sec = 12,5 MB/sec im Downstream. Vectoring-Technik = Unterbindung von Störsignalen in Kupferkabeln zwischen Verteilerkasten und Haus.
- VDSL2 ermöglicht 200 MBit/sec = 25 MB/sec im Downstream
- Belastung des webservers, von dem gerade etwas angefordert wird
- Signalverbreitung vom DSL-Modem zum PC: mit RJ45-Netzwerk-Kabel (schnell) oder WLAN (langsam)
- Nähe der Wohnung zum nächsten Verteilerkasten der Telekom: Je näher, desto besser.
- traffic in der Nachbarschaft
- Anzahl der Geräte, die sich die Bandbreite teilen: mehrere PCs (Netzwerk), gleichzeitiges Entertain-TV, Telefonie (VIP = Voice over IP) oder andere Anwendungen über den Router
- Wettereinflüsse
Manche verteilen die Daten hausintern weder über WLAN noch über Netzwerkkabel, sondern über das Stromnetz. Das macht z.B. dann Sinn, wenn man dicke Wände hat, die das WLAN stören.
Viele haben zu Hause wohl Leitungen mit z.B. DSL 16.000. Das bedeutet, dass für den DOWNLOAD theoretisch bis zu 16.000 kBit/sec (= 2.000 kByte/sec = ca. 2 MB/sec) bereit stehen. Für den UPLOAD hat man dann in der Regel nur 1/8 bis 1/9 davon zur Verfügung, also 2 MB/sec. Bei Geschwindigkeitsmessungen, z.B. hier, ergeben sich trotzdem meistens geringere Geschwindigkeiten. Manchmal hat nach einer Vertragumstellung der Telekommunikationsanbieter noch nicht alle technischen Schritte erledigt, hierzu bitte dort anrufen. Liegt die Geschwindigkeit in etwa bei der Hälfte der vertraglich zugesicherten Geschwindigkeit, dann sind die technischen Voraussetzungen in der Regel erfüllt und es liegt ein anderer Grund aus der oben stehenden Liste vor.
Frage:Eine Taube fliegt in 4 Stunden 100 km mit einer 8 GB Speicherkarte im Schnabel.
Transportiert sie die Daten schneller als eine ADSL 2+ Leitung?
Antwort:
Senderate der ADSL 2+ Leitung: 1/8 der Downloadgeschwindigkeit:
Download: 24 Mbit/sec
Upload: 3 MBit/sec = 3.072 kBit/sec = 384 kB/sec
8 GB / (384 kB/sec) = 8.388.608 kB / (384 kB/sec) = 21.845 sec = 364 min = 6 h (gerundet)
Die Taube ist schneller.
|
OSI-Schichtenmodell
Es gibt sieben Schichten, die durchlaufen werden, bevor Daten auf die Reise gehen. Dabei werden die Daten so angepasst, dass sie Sprachkonventionen ("Protokolle") einhalten, über welche z.B. geregelt wird, wer Sender und Empfänger ist:
- Schicht 7 – Anwendungsschicht
- Schicht 6 – Darstellungsschicht
- Schicht 5 – Kommunikationssteuerungsschicht
- Schicht 4 – Transportschicht
- Schicht 3 – Vermittlungsschicht
- Schicht 2 – Sicherungsschicht
- Schicht 1 – Physikalische Schicht
1.1.2 Datenbankmodellierung
Kennzeichen eines Datenbankmanagementsystems (DBMS)
- Speichern und auslesen von Daten möglich
- Trennung von Daten und Ansicht auf die Daten: Zugriffsrechte, komfortable Eingabemasken, Berichte für die Ausgabe generieren, ...
- Gleichzeitiger Zugriff mehrerer Nutzer auf dieselbe Datei ist möglich, das DBMS liefert dafür diverse Schutzfunktionen zur Fehlervermeidung
- Sinnvolle Organisation der Daten ohne Redundanzen (doppelt geführte Informationen)
Bekannte Datenbank-Management-Systeme: MS Access, MySql, Oracle
Grundbegriffe: siehe Arbeitsblatt
Arbeitsschritte zur Erstellung einer Datenbank
Schritt 1: Entwurf eines Entity-Relationship-Modells (ER-Modell)
... im Unterricht durchgeführt am Beispiel eines Versandhandels
Achtung: In einer guten Datenbank MÜSSEN Redundanzen (doppelte Informationsspeicherung) vermieden werden!
Kardinalitäten: 1:1, 1:n oder n:m
Zwischen den Entitymengen (Tabellen) werden relationships ("wohnt in" / "bestellt" / "liefert") gesetzt.
Welche relationships erhalten Attribute?
1:1-Beziehungen und 1:n-Beziehungen erhalten keine Attribute, sie werden später auch nicht zu Tabellen.
Eine m:n-Beziehung erhält Attribute und wird später zu einer Tabelle.
Konkrete Umsetzung des ER-Modells in MS Access
Schritt 1 (ER-Modell) ist erledigt.
Schritt 2: In einer Datei "Stammdaten.accdb" Tabellen erzeugen und Primärschlüsselattribute festlegen
Achtung auf die Datentypen: Primärschlüssel aus Tabelle A und Fremdschlüssel aus Tabelle B müssen vom gleichen Datentyp sein!
WICHTIG: Alle Primärschlüsselattribute (in der Regel eines je Relation) generell als "Text" deklarieren!
Grund: Eine Kundennummer z.B. sollte Text sein, nicht Zahl, da sonst eine Nummer "000123" zu "123" umgewandelt werden würde.
Übersichtlich wird das Menü auf der linken Seite, wenn man im Pulldown-Menü "Objekttyp" und "Alle Access-Objekte" einstellt.
Eingabe über Pulldown-Menü ermöglichen: Entwurfsansicht der Tabelle - das gewünschte Attribut anklicken - Registerkarte "Nachschlagen": folgende Einträge: "Steuerelement anzeigen: Kombinationsfeld" - "Herkunftstyp: Wertliste" - "Datensatzherkunft: xxx;yyy;zzz" (die einzelnen Einträge werden jeweils durch Strichpunkt getrennt) ODER "Herkunftstyp: Abfrage" - ...
Schritt 3: Beziehungen definieren
- Beteiligte Tabellen vorher schließen
- Verbinden von Primär- mit Fremdschlüsselattributen (gleicher Datentyp ist vorausgesetzt)
- Voreingestellt ist die 1:n-Beziehung
- Eine n:m-Beziehung wird über zwei 1:n-Beziehungen implementiert, die über die relationship verbunden werden
- Referentielle Integrität unbedingt ankreuzen! Dies gewährleistet, dass keine Fremdschlüssel (als Datensatz) eingegeben werden dürfen, die nicht bereits als Primärschlüssel eingegeben worden sind. Wenn z.B. in der Tabelle "Orte" noch keine PLZ 72469 angelegt wurde, kann 72469 auch nicht als Fremdschlüssel-PLZ in der Tabelle "Kunden" eingetragen werden. Dies beugt Fehlern vor.
- Redundanz = Gleiche Information, die mehrfach auftritt = im Alltag manchmal sinnvoll, in Datenbanken unbedingt zu vermeiden!
Schritt 4: Aufteilung der Datenbank in Stammdaten und Ansichtsdateien
- Stammdaten.accdb enthält alle Tabellen und Beziehungen
- Ansichtsdateien (z.B. "Ansicht für Lohnabrechnungsabteilung.accdb") enthalten nur Verknüpfungen mit den Tabellen der Stammdaten, zusätzlich aber noch: Formulare, SQL-Abfragen, Berichte und Makros.
- Zweck der Ansichtsdateien: Trennung von Daten und Ansicht a) zur Sicherheit, b) um verschiedene Zugriffsrechte zu ermöglichen (Chef, Azubi, ...) und c) gleichzeitiger Zugriff mehrerer Nutzer auf die Stammdaten-Datei über die verschiedenen Ansichtsdateien bzw. Kopien der Ansichtsdateien auf den Workstations
Frage: Muss man die Beziehungen zwischen den Tabellen auch in den Ansichtsdateien definieren?
Antwort: Nein, die Beziehungen werden automatisch in die Ansichtsdatei übernommen, sobald die Verknüpfungen mit den Tabellen aus der Stammdaten-Datei erzeugt werden.
Schritt 5: Beispieldaten eingeben
Hinweis 1: Wenn in einer Tabelle Fremdschlüssel auftauchen, dann zuerst nachschauen, welche bereits vergeben worden sind.
Hinweis 2: Sobald Daten zwischen zwei Tabellen verknüpft werden (Fremdschlüsseleingaben), darf nichts mehr an den Primärschlüsseln verändert werden.
Schritt 6: Formulare erzeugen (mit dem Assistent)
Auf Formularen kann man z.B. unterbringen:
- alle Datenfelder einer Tabelle
- Überschrift mit Hilfe eines Bezeichnungsfeldes (in der Toolbox)
- Manche Felder, insbesondere die Fremdschlüssel, sollte man (rechte Maustaste) in ein Kombinationsfeld wandeln, das Eingabemöglichkeiten vorschlägt. Über rechte Maustaste - Eigenschaften kann man (unter "alle") bei "Datensatzherkunft" die Quelle angeben sowie bei "Gebundene Spalte" und "Spaltenzahl" einstellen, was angezeigt werden soll.
- Button "Datensatz suchen": Variante 1: mit dem Fernglas. Variante 2: Als Kombinationsfeld.
- Eine Bemerkung am Rande: Felder können für die Eingabe gesperrt werden (rechte Maustaste - Eigenschaften - Alle - gesperrt = ja. Manchmal weiß man nicht, welchen Schlüssel man einem neuen Datensatz geben soll. Vorschlag: Ein "gesperrtes" Feld rechts daneben kann auch dazu dienen, bereits vergebene Schlüssel nur anzeigen zu lassen. Hierzu erzeugt man ein "Textfeld", ändert es nachträglich zu einem Kombinationsfeld und stellt dann in dessen Eigenschaften Datenquelle, Gebundene Spalte, Anzahl der Spalten und Spaltenbreiten ein. Das Feld muss auf "gesperrt = ja" gesetzt werden. Alternativ könnte man auch direkt ein Kombinationsfeld einfügen, muss sich dann aber durch viele Dialoge durchklicken, was etwas länger dauert. Im ersten Dialog muss man den Radiobutton oben lassen, der Rest wird intuitiv eingestellt.
- Buttons (z.B. "Neuer Datensatz" / "Sprung zu anderem Formular" / "Bericht anzeigen" / "Bericht drucken")
- Unterformular: Im Formular "Lieferanten" sollen alle Artikel angezeigt werden, die der angezeigte Lieferant liefert. Lösung: Toolbox - Unterformular - Bereits vorhandene Tabelle [...] verwenden - Tabelle "Artikel" auswählen und alle (gewünschten) Felder >> rüberklicken - Fertig stellen - das Element in die Breite strecken, damit mehr Attribute auf den Bildschirm passen
Schritt 7: Ein Startformular einrichten (leeres Formular) und "aktivieren"
- Formulare - Entwurfsansicht (ohne Assistent) - Mit Hilfe der Toolbox Überschrift (Bezeichnungsfeld) und Buttons einfügen mit der Formularoperation "Formular öffnen" - speichern unter dem Namen "Startformular"
- Aktivierung des Startformulars: Office-Feld (links-oben) - Access-Optionen - Aktuelle Datenbank - Formular anzeigen: [Name des Startformulars]
Schritt 8: Abfragen erstellen
a) ... mit dem Hilfseditor
b) ... mit SQL
c) INNER JOIN
Lösung der INNER JOIN - Zusatzaufgabe:
SELECT Bestellungen.Status, Bestellungen.BNr, Bestellungen.ANr, Bestellungen.Anzahl, Artikel.Bezeichnung
FROM Bestellungen INNER JOIN Artikel ON Bestellungen.ANr=Artikel.ANr
WHERE Bestellungen.Status='verschickt und nicht bezahlt';
Anmerkung: In Abfragen lassen sich auch Berechnungen durchführen. Das haben wir aber nicht im Unterricht behandelt.
Schritt 9: Berichte
... mit Verwendung des Assistenten, um SQL-Abfragen (oder Tabellen) schöner darzustellen.
Schritt 10: Makros
Ein Makro ist die Zusammenfassung mehrerer Befehle unter einem Namen.
Aufgabe: Ein Button soll mit einem Klick 1. das Startformular öffnen und 2. das Artikel-Formular schließen.
Lösung: Makros - Neu - Erste Zeile: Aktion: "Schließen" (unten leer lassen) - Zweite Zeile: "ÖffnenFormular" und unten "Startformular"
-----
Selbstabfrage eines Kombinationsfeldes in einem Formular mit dem Schlüsselwort "DISTINCT":
Vorarbeit: Ändern zu Kombinationsfeld, dann: Eigenschaften - Herkunftstyp: Tabelle/Abfrage - Datensatzherkunft:
SELECT DISTINCT PLZ,Ort FROM Orte;
Anzahl Spalten: 2
Gebundene Spalte: 1 oder 2
------
Übungsaufgabe:
Erstellen Sie eine Access-Datenbank für eine Arztpraxis mit folgenden Inhalten:
- Relationen (Primärschlüssel sind fett und unterstrichen, Fremdschlüssel nur unterstrichen):
- Patienten: PNr, Name, Vorname, PLZ
- Orte: PLZ, Ort
- Behandlungen: BNr, PNr, LNr, Datum, Status [Wertliste für Status: "geplant"; "Zahlung ausstehend"; "Zahlung erfolgt"]
- Leistungen: LNr, Name, Preis
- ER-Modell auf Papier
- Stammdaten mit Beziehungen wie gelernt
- Ansichtsdatei mit Verknüpfungen zu den Tabellen aus den Stammdaten und Formularen wie geübt
- Startformular mit Buttons zu den anderen Formularen, die im Folgenden noch erzeugt werden
- Das Formular "Patienten" muss enthalten:
- Unterformular "Behandlungen"
- Suchfeld als Kombinationsfeld, das bei Klick auf den Pulldown-Pfeil zwei Spalten zeigt (Name, Vorname) und bei Auswahl eines Namens den entsprechenden Datensatz anzeigt
- Button zum Hinzufügen eines neuen Datensatzes
- Button zum Springen auf ein Startformular
- Abfrage, die alle relevanten Informationen von Behandlungen anzeigt, deren Status "Zahlung ausstehend" ist
- Bericht, dessen Quelle die eben erstellte Abfrage ist
**************************************************************
1.1.3 Einführung in das Java-Hamstermodell
Herstellerseite mit Download der Universität Oldenburg)
Grundbefehle: vor(); linksUm(); nimm(); gib();
// Dies ist ein Kommentar
Eigene Befehle unter der main-Methode:
Eine Methode ist ein kleines Unterprogramm. Verwandte Begriffe sind z.B. "Prozedur", "Subroutine" oder "Funktion". Eine Funktion benötigt immer Parameter zur Übergabe oder als Ergebnis, der Begriff "Methode" setzt dies nicht zwingend voraus. Das void vor dem Methodenname bedeutet, dass die Menge der Rückgabeparameter leer ist. Die leeren runden Klammern () nach dem Methodenname bedeuten, dass der Methode keine Parameter übergeben werden.
Die main-Methode ist die Methode, welche bei Programmstart ausgeführt wird.
Drei Hamstersensoren liefern true oder false: vornFrei() maulLeer() kornDa()
Negation eines Wahrheitswertes durch das Ausrufezeichen: !maulLeer() liefert true, wenn der Hamster Körner im Maul hat.
Bedingte Anweisung: if
Mache n mal: for
Solange (Bedingung) mache {...]: while
Ablaufsteuerung
verschachtelete while-Schleifen
Hamsterprogrammierung mit Unterprogrammen
1.1.4 Hinweise zur Klausur am ...
Bitte Taschenrechner mitbringen!
1. Theorieteil auf Papier (18 VP)
- Empfohlene Bearbeitungszeit: 40 Minuten
- John-von-Neumann-Architektur
- Zugriffsgeschwindigkeiten
- Kellerspeicher (stack), LIFO versus FIFO, Auswertung einer Befehlsfolge
- Dual-, Dezimal- und Hexadezimalsystem
- Kabel
- Topologien
- ISO-Schichtenmodell (eine beliebige Schicht erklären können)
- Downloadzeit berechnen (hierfür wird der Taschenrechner benötigt)
- Datenbanken: Grundbegriffe
- SQL: INNER JOIN
- Zwei Aufgaben aus dem Informatik-Biber (Klick auf "Archiv"): http://informatik-biber.de/
2. Praxisteil am PC (33 VP)
- Empfohlene Bearbeitungszeit: 50 Minuten
- Anmeldung nicht mit dem normalen Account, sondern einem speziellen Klassenarbeitskonto. Anmeldung: Benutzername: [Ihr PC-Name] Passwort: [bleibt leer]. Wird dann noch einmal erklärt.
- Es wird ein Szenario für eine Datenbank vorgegeben. Sie müssen dann:
- ... ein ER-Modell zeichnen auf Papier oder in Powerpoint (dürfen Sie selbst entscheiden)
- ... die zugehörige Access-Datenbank erstellen. Achtung: Alles in EINE Datei, also keine Aufteilung in Stammdaten und Ansicht.
Es kommen keine Aufgaben zum Java-Hamster dran, die Programmierfähigkeiten werden in 11.2 beurteilt.
Bei weiteren Fragen bitte Mail an mich!
*********************************
1.2 Programmierung mit C#
Grundbegriffe:
Variablentypen int, double, ...
typecast mit dem Befehl *.Parse
if im Vergleich mit if ... else ...
switch ... case ... break ... default
1. Hallo Welt
2. Taschenrechner
3. Schaltjahrberechnung: Struktogramm und Programm
4. BMI
5. pq-Formel: Struktogramm und Programm:
void Button1Click(object sender, System.EventArgs e)
{
double p = double.Parse(textBoxP.Text);
double q = double.Parse(textBoxQ.Text);
double d = ((p/2)*(p/2)-q);
if (d<0)
{
labelX1.Text=("Keine Lösung!");
labelX2.Text=("Keine Lösung!");
}
else if (d==0) // das "else" muss hier stehen!
{
double x1=-(p/2);
labelX1.Text=x1.ToString("0.###");
}
else
{
double x1=-(p/2)+Math.Sqrt(d);
double x2=-(p/2)-Math.Sqrt(d);
labelX1.Text=x1.ToString("0.###");
labelX2.Text=x2.ToString("0.###");
}
}
6. Notenskala mit switch ... case ... break ... default ...
Globale Variablen:
- werden außerhalb der ButtonClick-Methoden deklariert
- "leben" ab da überall, also in allen folgenden Methoden
- können von lokalen Variablen mit gleichem Namen innerhalb einer bestimmten Methode überdeckt werden. Die globale Variable ist in diesem Fall lebendig, aber nicht sichtbar.
Zufallszahlen
Programm: "Zahlenraten"
- Die for-Schleife in C#
- Reihen
weitere Aufgaben zu for-Schleifen:
Fakultät, Potenz, Summe zwischen Zahlen, n-te Fibonaccizahl berechnen
Primzahltest - Verschachtelung von for-Schleifen
Black Jack
- Download des kompletten Projekts (zip-komprimierter Ordner, öffnen mit 7zip oder WinZip etc.)
// globale Summenvariablen für Spieler 1 und 2
int summe1 = 0;
int summe2 = 0;
double guthaben1 = 100;
double guthaben2 = 100;
void Button1Click(object sender, EventArgs e)
{
Random r = new Random();
int wurf = r.Next(1,12); // alles von 1 bis 11
listBox1.Items.Add(wurf);
summe1 = summe1 + wurf;
if (summe1<21)
{
label2.Text="Noch eine Karte? Aktuelle Summe: "+summe1;
}
else if (summe1==21)
{
label2.Text="Black Jack!";
}
else
{
label2.Text="Sie haben verloren!";
}
} // Button1Click
void Button2Click(object sender, EventArgs e)
{
Random r = new Random();
int wurf = r.Next(1,12); // alles von 1 bis 11
listBox2.Items.Add(wurf);
summe2 = summe2 + wurf;
if (summe2<21)
{
label3.Text="Noch eine Karte? Aktuelle Summe: "+summe2;
}
else if (summe2==21)
{
label3.Text="Black Jack!";
}
else
{
label3.Text="Sie haben verloren!";
}
}
void Button3Click(object sender, EventArgs e)
{
// einsatz einlesen
double einsatz = double.Parse(textBox1.Text);
// Sieger ehren
// Fall 1: Beide über 21
if (summe1>21 && summe2>21)
MessageBox.Show("Sie haben beide verloren!");
// Fall 2: Nur Spieler 2 hat zu viel
if (summe1<=21 && summe2>21)
{
MessageBox.Show("Spieler 1 hat gewonnen!");
guthaben1 = guthaben1+einsatz;
guthaben2 = guthaben2-einsatz;
label6.Text = guthaben1.ToString();
label8.Text = guthaben2.ToString();
}
// Fall 3: Nur Spieler 1 hat zu viel
if (summe1>21 && summe2<=21)
{
MessageBox.Show("Spieler 2 hat gewonnen!");
guthaben1 = guthaben1-einsatz;
guthaben2 = guthaben2+einsatz;
label6.Text = guthaben1.ToString();
label8.Text = guthaben2.ToString();
}
// Fall 4: Beide haben höchstens 21
if (summe1<=21 && summe2<=21)
{
// unentschieden
if (summe1 == summe2)
MessageBox.Show("Unentschieden!");
// Spieler 1 hat mehr Punkte
if (summe1 > summe2)
{
MessageBox.Show("Spieler 1 hat gewonnen!");
guthaben1 = guthaben1+einsatz;
guthaben2 = guthaben2-einsatz;
label6.Text = guthaben1.ToString();
label8.Text = guthaben2.ToString();
}
// Spieler 2 hat mehr Punkte
if (summe1 < summe2)
{
MessageBox.Show("Spieler 2 hat gewonnen!");
guthaben1 = guthaben1-einsatz;
guthaben2 = guthaben2+einsatz;
label6.Text = guthaben1.ToString();
label8.Text = guthaben2.ToString();
}
}
}
void Button4Click(object sender, EventArgs e)
{
label2.Text="";
label3.Text="";
listBox1.Items.Clear();
listBox2.Items.Clear();
summe1=0;
summe2=0;
label6.Text = guthaben1.ToString();
label8.Text = guthaben2.ToString();
}
* Struktogramm mit Formulierungen im Pseudocode
* Bausteine im Struktogramm: Variable deklarieren, Zuweisung, Bedingte Anweisung, Schleife (evtl. verschachtelt), Ausgabe
* Syntaxdiagramm eines Befehls
* Syntax = Rechtschreibung (wird vom Compiler geprüft, bevor das Programm ausgeführt wird)
* Semantik = Sinn (macht das Programm das, was es soll? Kann nicht vom Compiler geprüft werden)
* Daraus ergibt sich das Problem, dass bestimmte Eingaben ohne spezielles exception-handling trotz korrekter Syntax zum Programmabsturz führen können, z.B. wenn die Zahl 0 eingegeben wurde und eine Division durch diese Zahl stattfindet, oder eine Endlosschleife erzeugt wird, weil die Schleifen-Wiederholungsbedingung niemals false wird.
* while (...) {...} // erst die Bedingung, dann die Anweisungsfolge; kein Semikolon!
* do {...} while (...); // erst die Anweisungsfolge, dann die Bedingung, also mindestens einmal wird die Anweisung durchgeführt; Semikolon!
* Achtung: Es muss dafür gesorgt werden, dass die Bedingung irgendwann false wird, z.B. durch Erhöhung eines Schleifenzählers, der vor der Schleife deklariert wird, z.B. int i = 0, und in der Schleife erhöht wird, z.B. i = i+1;
* Der Zähler darf nicht innerhalb der Schleife deklariert werden, sonst würde die Variable mehrfach deklariert werden, was verboten ist.
* Übungsaufgaben von den Arbeitsblättern
Iteration
Heron-Verfahren mit for-Schleife
Heron-Verfahren mit while-Schleife
Zeichnen mit der Turtle
Aufwandsabschätzung / Optimierung von Programmen
Frage- und Wiederholungsstunde
Klausur - Bitte die gelben Blätter mit den Befehlen mitbringen.
Arbeiten mit Zeichenketten
Exception-Handling mit try { } catch () {}
try {
// Anweisungen
}
catch(Ausnahmetyp) {
// Anweisungen
}
// Anweisungen
Beispiel:
class Program {
static void Main(string[] args) {
StreamReader stream = null;
Console.Write("Welche Datei soll geöffnet werden? ... ");
string path = Console.ReadLine();
// Fehlerbehandlung einleiten
try {
// Die folgende Anweisung kann zu einer Exception führen.
stream = new StreamReader(path);
Console.WriteLine("--- Dateianfang ---");
Console.WriteLine(stream.ReadToEnd());
Console.WriteLine("--- Dateiende -----");
stream.Close();
}
catch(FileNotFoundException e) {
// Falls die angegebene Datei nicht existiert,
// eine fehlerspezifische Meldung ausgeben.
Console.WriteLine("Datei nicht gefunden.");
}
Console.WriteLine("Nach der Exception-Behandlung");
Console.ReadLine();
}
}
Hilfe zur Selbsthilfe:
- Index-Funktion in Sharp Develop
Hilfreiche Links:
http://openbook.galileocomputing.de/visual_csharp_2010/
http://de.wikipedia.org/wiki/Sprachelemente_von_C-Sharp
Programmieren mit Feldern:
int[] a = new int[100];
a[0] = 5;
a[1] = 8;
[...]
a[99] = 21;
Logikaufgaben
Graphenalgorithmen: Vergleich von Breiten- und Tiefensuche
- Sortierverfahren: selectionsort / quicksort
- C#: Methoden (Prozedur / Funktion), Parameterübergabe (Übergabe und Rückgabe, Schlüsselwort "return"), Werte- und Referenzparameter
Exkurs: Klicken Sie in einem beliebigen deutschsprachigen Wikipedia-Artikel immer auf das erste verlinkte Wort innerhalb des Artikels, das nicht in Klammern () oder "Anführungszeichen" steht. Warum landen Sie nach einer Weile IMMER bei dem Artikel "PHILOSOPHIE"? Tipp: Denken Sie an Achill und bipolare Bäume!
- UML und OOP
Grundbegriffe:
Klasse: Zusammenfassung aller Objekte mit gemeinsamen Attributen und Methoden
Objekt: Eine Instanz einer Klasse. Sie übernimmt die Attribute und Methoden der zugehörigen Klasse.
Vererbung: Eine Klasse kann von einer ihr übergeordneten Klasse Attribute und Methoden erben.
Konstruktormethode: Diese Methode erlaubt es, Objekte anhand der Klasse zu generieren. Sie muss bei jeder Klasse vorhanden sein und hat den gleichen Namen wie die Klasse.
Klassendiagramm:
Beispiel für eine Klasse:
Fahrzeug |
- farbe: string- PS: int |
+ fahrzeug()+ gibFarbe():string+setzeFarbe(string): void |
Beispiel für ein Objekt:
herbie: Fahrzeug |
- farbe: gelb- PS: 100 |
+ fahrzeug()+ gibFarbe():string+ setzeFarbe(string):void |
Kapselung: + = public - = private
Wenn man zwei Klassen durch einen Pfeil mit leerer Pfeilspitze verbindet, dann zeigt das, dass die untere Klasse von der oberen, auf die die Pfeilspitze zeigt, Attribute und Methoden erbt.
Bei der Entwicklung großer Softwaresystemen, kann es auch sinnvoll sein, andere Diagramme zu verwenden (Sequenzdiagramme, Aktivitätsdiagramme, Use-Case-Diagramme).
- Umsetzung der OOP (Objektorientierten Programmierung) mit greenfoot und C# (evtl. auch BlueJ)
Einstieg in Greenfoot:
http://www.greenfoot-center.de/einstieg-in-greenfoot/schnelleinsteig.html
DEZEMBER / ANFANG JANUAR:
- Kryptographie (Caesar, Vigenère, RSA, private key und public key)
- Kurzreferat zu thread-handling in Java
- Gesetze der Aussagenlogik: Distributivgesetz, Kommutativgesetz, Absorbtionsgesetz:
Hans hat Asthma und er hat Asthma oder Bronchitis = A && (A || B)
Hans hat Asthma oder er hat Asthma und Bronchitis = A || A && B
Für die Klammersetzung: UND bindet stärker als ODER
Beispiele aus der OOP
Zusammenfassung OOP und Beispielprogramm "Ziel 15"
Algorithmen:
Ein Algorithmus ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems.
Eigenschaften eines guten Algorithmus:
1. Determinismus = Eindeutigkeit: Die Anweisung ist eindeutig und die nächste anzuwendende Regel ist zu jedem Zeitpunkt eindeutig definiert
2. Determiniertheit: Der A. muss bei denselben Voraussetzungen das gleiche Ergebnis liefern
3. Endlichkeit: Endlich viele Anweisungen
4. Terminierung: Das Verfahren darf nur endlich viele Schritte benötigen, Endlosschleifen sind also auszuschließen
5. Endlich viel Speicherplatz benötigt
6. Ausführbarkeit: Jeder Schritt muss ausführbar sein
Klassifizierung von Algorithmen:
Brute Force: Radikal alle Möglichkeiten durchtesten (einfach, aber sehr aufwändig (hohe Laufzeit)), Beispiel: Bubble Sort
Greedy: Gierige Vorgehensweise: Vom aktuellen Standpunkt aus immer das scheinbar Beste nehmen, Beispiele: Minimaler Spannbaum, Breitensuche. Ist eine Möglichkeit, die aber auch nicht immer zum besten Ergebnis führt.
Graphen-Algorithmen: Breitensuche, Tiefensuche, Dijkstra-Algorithmus
backtracking: Einen Weg bis zum Ende gehen (z.B. "gehe bei jeder Kreuzung links"), falls der Weg falsch war: gehe zurück bis zur letzten Kreuzung, an der noch ein Weg unbesucht ist und wähle dort denjenigen, der am weitesten links ist, Beispiele: Achtdamen-Problem, Weg aus Labyrinth finden. Ist wie auch Greedy eine Möglichkeit, die zu einer Lösung führt, die aber nicht zwingend die beste sein muss. Kann im worst case sehr aufwändig sein.
Teile und Herrsche (divide and conquer / divide et impera): Prinzip der Rekursion: Problem wird aufgeteilt in Teilprobleme, dann ruft sich der Algorithmus selbst auf, bis keine Teilung mehr möglich ist. Beispiel: Quicksort.
Randomisierte Algorithmen (abhängig von einer Zufallszahl):
richtiges Ergebnis? | Terminierung? | schneller als alternative Algorithmen? | |
Las-Vegas-Algorithmen | immer | nicht immer |
in der Regel |
Monte-Carlo-Algorithmen | nicht immer | in der Regel | in der Regel |
Der Quicksort mit Zufallswahl des Pivot-Elements kann demnach auch als Las-Vegas-Algorithmus gesehen werden, weil er fast immer schneller ist als der selectionsort, abhängig von der zufälligen Wahl des Pivot-Elements. Im worst case (Teillisten sind immer extrem ungleich lang) erreicht der Quicksort zwar auch nur die Aufwandsklasse O(n2), in der Regel beträgt der Aufwand jedoch nur n * log n und ist somit besser als selectionsort und andere.
Dynamische Algorithmen: Wiederverwendung von Zwischenergebnissen, z.B. Textsuche, Rucksackproblem, Multiplikation von Matritzen, ...
*************************
webdesign mit dem CMS "Joomla 1.5"
Bitte bringen Sie entweder ein notebook oder einen USB-Stick mit.
Folgende Vorarbeiten bitte schon zu Hause leisten:
Möglichkeit 1: Eigener Laptop BESSERE VARIANTE |
Möglichkeit 2: USB-Stick mit 8 GB SCHLECHTERE VARIANTE NACHTEIL: Erweiterungen sind fast nie installierbar |
1. Laden Sie XAMPP herunter. Noch nicht installieren! 2. Laden Sie Joomla 1.5 oder 2.5 herunter. Noch nicht installieren! Joomla 1.5 verwenden wir im Unterricht. Joomla 2.5 können Sie auch nehmen, dann sind einige Dinge allerdings ziemlich anders als im Unterricht. Wie Sie XAMPP und Joomla installieren, erfahren Sie im Unterricht.Falls Sie damit noch keine Erfahrung haben, warten Sie bitte noch den Unterricht ab! |
USB-Stick, 8 GB, darauf schon vorbereitet: 1. mowes portable herunterladen mit folgenden vier Paketinhalten (Kreuze setzen): Apache2, MySQL5, PHP5, Joomla 1.5 Mit mowes können Sie also über apache, php, mySQL und Joomla verfügen, trotz fehlender Installationsrechte im Schulnetz. 2. Die zip-Datei auf den USB-Stick kopieren Ihre Website ("frontend") können Sie bei laufendem Apache im Browser starten mit: http://localhost/joomla/ In den Administrationsbereich ("backend") gelangen Sie mit: http://localhost/joomla/administrator 5. Bevor sie Ihren USB-Stick wieder entfernen, müssen Sie erst das laufende mowes wieder stoppen. Falls das Fenster nicht mehr offen sein sollte, erhalten sie es wieder über ein kleines blaues Symbol in der Schnellstartleiste neben der Uhr (Windows). 6. Fügen Sie in Joomla bei "Extensions" das deutsche Sprachpaket für diese Version hinzu, erhältlich hier. Danach muss es sowohl für die "site" als auch für den "admin" als Standard definiert werden. |
Zur Variante "Eigenes notebook":
- Gut: Sie haben admin-Rechte beim Installieren von Erweiterungen
- Gut: Sie müssen nicht zu Hause alles doppelt machen, wenn Sie dort eine eigene homepage entwerfen
- Gut: Sie können in Ihrer gewohnten Umgebung arbeiten, mit allen Rechten und Programmen, die zusätzlich benötigt werden
- Gut: Sie lernen, eine lokale Serverumgebung einzurichten
- Schlecht: Zugriffs auf das Internet im Schulnetz funktioniert bei manchen Systemen nicht (wenn Sie z.B. Erweiterungen parallel zum Arbeiten herunterladen möchten)
- Schlecht: Vereinzelt passiert es, dass nach der Installation von XAMPP einzelne Programme auf dem PC nicht mehr funktionieren. Der Versuch, dieses Problem mit VirtualBox zu umgehen, ist beim ersten Versuch gescheitert.
Zur Variante "mowes portable (USB-Stick)":
- Schlechte: Erweiterungen funktionieren fast nie
- Schlecht: Gebunden an die spezielle Joomla-Version, die mowes anbietet
- Umständlich: Sie müssen evtl. noch die deutsche Sprachdatei nachinstallieren (siehe oben)
- Gut: Sie können parallel immer im Internet sein
XAMPP stellt unter anderem die benötigte Software apache, php und mySQL zur Verfügung.
***************************
Erstellung einer eigenen Website
Eine ordentliche und informative Website erstellen zu können, bedeutet für Sie eine wertvolle Qualifikation, die Ihnen im Beruf sowie privat helfen kann. Ihr Ziel sollte sein, unabhängig von professionellen (bezahlten) Programmierern und Werbeagenturen zu werden.
Joomla! ist eine Open Source Software, es fallen daher keine Lizenz-Gebühren an. Bereits mit grundlegenden EDV-Kenntnissen bietet Joomla! die Möglichkeit, eine einfache, aber professionell aufgebaute und eigene Internetpräsenz zu erstellen. Mit einer riesigen Anzahl an ebenfalls kostenfreien Erweiterungsmöglichkeiten können Sie Ihre Internetseite entweder von Beginn an oder auch sukzessive erweitern und optimieren. Selbstverständlich bietet Joomla! ein Content Management System, mit dem Sie sich von jedem PC mit Internetanschluss auf den Administrationsbereich einwählen und somit Inhaltsänderungen spielend einfach durchführen können.
Wir wollen im Kurs alle Schritte zur Erstellung einer Seite durchspielen. Sie sollen Gelegenheit haben, eigene Vorstellungen und Ideen einzubringen und auszuprobieren. Wir starten mit einem Überblick über die grundlegenden Möglichkeiten, die Joomla! bietet. Nachfolgend lernen Sie die Voraussetzungen und die Vorgehensweise zur Installation von Joomla! auf einem lokalen System sowie auf einem webserver kennen. Nach einem Funktionstest geht es an den Verwaltungsbereich mit seinen umfangreichen Möglichkeiten. Dieser lässt sich schwerpunktmäßig in die Bereiche "Design" und "Struktureller Aufbau" untergliedern.
Lernen Sie im Rahmen des strukturellen Aufbaus die Funktionen von Bereichen, Kategorien und Berichten kennen, erstellen und veröffentlichen Sie eigene Texte. Integrieren Sie Bilder oder Animationen über die Medienbibliothek. Lernen Sie Komponenten und Module wie Banner, Kontaktformulare, Routenplaner oder Statistikbereiche kennen und testen Sie diese in der Praxis.
Installieren Sie sich ein selbst gewähltes Template (Erscheinungsbild) bzw. passen Sie Ihr Design an Ihre individuellen Vorstellungen an. Sie erlernen also sowohl die optische Anpassung an Ihre Vorstellungen, als auch die Anordnung und Integration der einzelnen Texte, Bilder und Objekte. Dabei achten Sie auch auf eine schlüssige und verständliche Navigation. Zu den Selbstverständlichkeiten gehören die Information und der korrekte Aufbau eines rechtssicheren Impressums.
***************************
Erwartungshorizont für die Benotung Ihrer homepage:
Erfüllen Sie folgende 15 Punkte:
1. Basiskonfigurationen gemäß der Doku (Word-Dokument aus dem Unterricht) vornehmen
2. Einen weiteren Benutzer erzeugen, der sich nur im frontend anmelden kann (z.B. "registriert" oder "publisher")
3. Dem administrator und dem zweiten Benutzer den Editor JCE (falls es funktioniert...) oder den Editor Tiny_MCE zuordnen, zusätzlich noch in den Editor-Einstellungen den vollen Funktionsumfang einstellen (für den Tiny_MCE bei "Plugins")
4. Unter "Site"- "Medien" - ("stories") eine eigene Verzeichnisstruktur für Ihre Bilder und pdf-Dokumente erstellen und diese mit z.B. jpg-/pdf-Dateien füllen
5. Das Template (frontend) individuell anpassen, z.B. durch Einfügen eines eigenen Farbverlaufsbalken mit Bild im header
6. Im backend Bereiche und Kategorien erzeugen, in die später die Beiträge einsortiert werden müssen
7. Mindestens acht Beiträge erstellen und zumindest einige davon in eine selbst erstellte Kategorie einsortieren. Fügen Sie auch Bilder in einige Beiträge ein.
8. Mindestens einmal auf Ihrer homepage soll ein Bild die Funktion haben, dass es nur in einer Vorschau angezeigt wird, und bei Klick darauf groß erscheint. Speichern Sie hierzu das Bild klein (ca. 15 kB) und groß (ca. 100 kB, aber nicht über 200 kB !!!) vorher in Ihrem Medienverzeichnis ab, fügen Sie das kleine Bild in den Beitrag ein und verlinken Sie es mit dem großen Bild.
9. Nachdem die Beiträge erstellt worden sind: Das Hauptmenü mit zwei Hierarchieebenen füllen, z.B. so:
Startseite
Berühmte Griechen
- Achill
- Schildkröte
- Aristoteles
Nicht berühmte Griechen
- Xantippos
- Zeuss' Psychotherapeut
Kontakt
Impressum
10. In mindestens einem Ihrer Beiträge muss eine Tabelle (mit oder ohne sichtbaren Rahmenlinien) verwendet werden. Außerdem muss es einen Beitrag geben, der als Kontaktformular mit Formularfeldern und einem "Senden"-Button dient (Menüeintrag vom Typ "Layout: Kontakt", Beispiel)
11. In einen Beitrag ein youtube-Video per html-Code einbetten. Tipp: man kann beim Erstellen eines Beitrages auf "html"-Ansicht umschalten. Beispiel
12. Erzeugen Sie einen Menüeintrag mit zugeordnetem Beitrag, der ausschließlich angezeigt wird, wenn man sich als registrierter Benutzer im frontend anmeldet.
13. Lassen Sie das "Anmelden"-Modul auf genau einer Ihrer Seiten anzeigen, also z.B. nur, wenn der Menüpunkt "Impressum" im Hauptmenü angeklickt ist.
14. Erstellen Sie eigenes Modul ("Leeres Modul" mit einem Foto und Unterschrift oder eine Erweiterung, wie z.B. ein Google-Routing), das auch nur auf einer bestimmten Unterseite angezeigt wird, z.B. rechts oben in der Ecke
15. Erzeugen Sie einen Menüeintrag, der einen Blog mit mehreren Einträgen anzeigt. Beispiel
***************************
Mögliche weitere Themen könnten z.B. sein:
- Apps für das smartphone mit Java in Eclipse programmieren
- Betriebssysteme
- Dateisysteme (z.B. Windows: NTFS als Weiterentwicklung des "alten" FAT 32)
- Excel
- Einblicke in das Uni-Studium "Informatik": Endliche Automaten, Chomsky-Grammatiken, np-Vollständigkeit, Halbaddierer, ...
Und zum Abschluss noch einige paradoxe Theorien (z.B. Achilles und die Schildkröte, Großvater-Paradoxon, das chinesische Zimmer, Hilberts Hotel, Zwillingsparadoxon, Schrödingers Katze, ...)