8
Informatik I+II Basisprüfung ETHZ BAUG Semester 1+2 06. August 2011 Seite | 1 Christoph Hager INFORMATIK I © chager - Version 2.0 B. Waldvogel, ETHZ COMPUTER NETZWERKE BGERIFFE Internet: Weltweites Netzwerk mit dem Rechner miteinander Daten austauschen können. World-Wide-Web: Eine Nutzungsart des Internets. Mit einem Webbrowser können weltweit elektronische (Hypertext)-Dokumente (Webseiten) abgerufen werden, welche durch Hyperlinks verknüpft sind. LAN, MAN, WAN: local, metropolian, wide area Network Client-Server: Clients beziehen Dienstleistungen von Servern. Mail, Web, Lizenz, Druckserver. VPN: virtual private network, Tunnel zu Intranet, Internet Stellt Sichere Verbindung her; Datenverschlüsselung FTP: File Transfer Protokoll zur Datenübertragung in FTP-Servern Protokolle: Vereinbarung über Art und Abfolge des Datenaustausches zwischen Computer und Prozessen. Protokollstack im Internet (gilt auch für FTP): Jede Schicht bietet der darüberliegenden einen Dienst an, modulrarer Aufbau, für jede Aufgabe eine Ebene HTTP: Hypertext Transfer Protocol, Protokoll zum Übertragen von Webinhalten TCP: Transmission Control Protocoll: Erstellt Verbindung, garantiert zuverlässige Übertragung und richtige Reihenfolge IP: Internet Protocoll, Schickt Datenpackete an richtige Adresse Ethernet: Physikikalische Ebene, effektive Verbindung Peer to peer: Alle Rechner gleichwertig (zB illegales Filesharing) URL: Universal Remote Locator, Internetadresse http://www.ethz.ch , http: Verwendetes Protokoll, Rest = Host Ports: Anschluss“, 80=http, webserver 110=POP-Mailserver SYSTEMARCHITEKTUR PROZESSOR/CPU CPU (Central Processing Unit) , Hauptrechnereinheit. Sie führt Programmcode aus, kann Daten vom Hauptspeicher lesen, modifizieren und wieder zurückschreiben. Kann durch Programmbefehle angesteuert werden. Besteht aus ALU (Arithmetic Locical Unit) und Register. Die CPU holt Instruktionen vom Hauptspeicher und führt diese aus. Nur auf Daten die in die Register der CPU geladen wurden, können Operationen ausgeführt werden. Da der Arbeitsspeicher im Vergleich sehr langsam arbeitet, holt die CPU im Voraus die Daten und speichert diese im Cache zwischen. Das führt zu einem Geschwindigkeitsvorteil. Sind Cache, Register und CPU schlecht abgestimmt, muss die CPU immer sehr lange auf den Arbeitsspeicher warten, bis dieser die Daten zur Verfügung stellt. SPEICHER Harddisk: Harddisk besitzt grosse Speicherkapazität und kann grosse Daten dauerhaft speichern. Die Daten befinden sich auf Scheibe, auf welche mit Mechanik zugegriffen wird, daher ist Zugriffszeit eher gross. Wird in beinahe jedem PC verbaut um Daten permanent zu speichern. Langsam. SSD: Solid State Drive verfügt über relativ langsame Zugriffszeit und ist, da keine Mechanik benötigt wird, schockfest. Besitzt nicht flüchtigen Speicher, ist zur Datensicherung geeignet. Durch immer grössere Speicherkapazität wird sie Harddisk ablösen. Arbeitsspeicher, RAM: (Random Access Memory) Inhalt muss permanent aufgefrischt werden, volatil. Chip als DRAM oder SRAM. Im RAM wird das auszuführende Programm geladen, sodass die CPU Instruktionen abrufen kann. Programme können Arbeitsspeicher als Zwischenspeicher verwenden. Arbeitsspeicher wird über die CPU gesteuert. RAM verfügt über eine relativ schnelle Zugriffszeit. Kann auf jedes Byte einzeln zugegriffen werden, der Speicher ist jedoch flüchtig. WEITERE KOMPONENTEN Motherboard: Platine mit wichtigen KomponentenSchnittstellen: Diese stellen die Verbindung zwischen Peripheriegeräten und der CPU dar. Grafikchip (onboard): Dieser besteht aus einem Prozessor (GPU) der für Bildoperationen spezialisiert ist. Die GPU kann mit der CPU kommunizieren und ebenfalls aufs RAM zugreifen. Das Programm sendet via Treiber die Steuerbefehle. Batterie: Sorgt dafür, dass die Systemuhr weitertickt. Netzwerkkarte AUFGABEN DES BETRIEBSSYSTEMS: Es stellt das Bindeglied dar zwischen der Hardware und der Benutzeroberfläche und Regelt die Abläufe dazwischen. Es steuert die Verwaltung der vorhandenen Ressourcen (Prozess, Speicher und Dateiverwaltung) → Lokalitätsprinzip. So kann u.a. auch Multitasking betrieben werden. Das BS steuert die Hardwarekomponenten und angeschlossenen Geräte wie Drucker, Scanner und Netzwerk. Es stellt den Schutz gegen aussen sicher und verwaltet Benutzerrechte. Es behandelt Fehler und stellt Dienstprogramme zur Verfügung. Unterschied Betriebssystem und graphischer Oberfläche: BS alleine kann alles obengenannte, es wäre aber zu umständlich direkt damit zu arbeiten, da keine Oberfläche vorhanden ist. Die grafische Oberfläche dient dazu, um Bedürfnissen des Benutzers mit einer ansprechenden und intuitiven Art gerecht zu werden. Anstatt Bytes herum zuschieben, Dateien mit Maus per Drag & Drop verschieben TREIBER Um Hardware zu betreiben benötigt BS Treiber zur Ansteuerung der Komponenten. ZAHLEN BINÄR BASIS 2 Bit oder 1 Byte bit k byte T M P G [ ] E → effektiver Speicherplatz meist kleiner wegen: Formatierung, Blockgrösse OS, Organisation (FileAllocation Table) Dateigrösse, komprimierte Formate Gibt Ansatz dass: kbyte 1000byte, kibyte 1024byte AND OR XOR XNOR Halbadierer: 2 Eingänge → 2 Ausgang: X,Y → 1 Summe, 1 Carry/Übertrag Volladierer: 3 Eingänge → 2 Ausgänge X,Y,C → 1 Summe, 1 Carry/Übertrag Basiswerte: 4096 2048 1024 512 256 128 64 32 16 4 2 1 → Zahlen starten mit 0! HEX BASIS 16 Basiswerte: 4096 256 16 1 UMRECHNUNG Dez→Binär: , Ziffer ganz rechts , 2. Ziffer v. rechts Dez→Hex: , Ziffer ganz rechts Hex/Binär→Dez: 10111 → Tabelle mit Basis und Zahl INTERPRETATION Bitmuster werden als Text, Zahlen, Multimedia… codiert ZEICHEN ASCII AMERICAN STANDART CODE F INFORMATION INTERCHANGE 128 Zeichen (7 bit) 8. Bit als Erweiterung/Fehlerkorrektur 0-31: Steuerzeichen für Drucker 32-64: Sonderzeichen 65-90: Grossbuchstaben 97-122: Kleinbuchstaben UNICODE 16 bit pro Zeichen → Alle Sprachen (Chin.,Jap, Russ., Arab…) 0- 127: identisch mit ASCII 128-255: kann abweichen von erweitertem ASCII Text mit Unicode braucht doppelt so viel Speicher wie ASCII FARBEN RGB Additives Farbmodell: Alle Farben → weiss Als RGB: (Rot,Grün,Blau) Werte: oder Schwarz: 0,0,0 #000000 Weiss: 255,255,255 #FFFFFF Mittelwerte: 128, #80 CMYK Subtraktives Farbmodell: Alle Farben → schwarz CMYK: Cyan, Magenta, Yellow, Black Wird häufig in Druckern verwendet. PUPLIKATIONEN Peer-Review: Artikel werden durch Experten begutachtet AUFBAU 1. Abstract 2. Einleitung 3. Related Work 4. Daten 5. Experiment 6. Resultat 7. Diskussion / Ausblick 8. Dank 9. Verzeichnisse 16 8 4 2 1 1 0 1 1 1

ETHZ BAUG Semester 1+2 INFORMATIK AUFGABEN DES …blogs.ethz.ch/chager/files/2012/04/ZF-Informatik.pdf · Bedürfnissen des Benutzers mit einer ansprechenden und ... Ziffer ganz rechts,

Embed Size (px)

Citation preview

Informatik I+II Basisprüfung ETHZ – BAUG – Semester 1+2

06. August 2011 S e i t e | 1 Christoph Hager

INFORMATIK I © chager - Version 2.0 B. Waldvogel, ETHZ

COMPUTER

NE TZWE RKE

BGERIFFE

Internet: Weltweites Netzwerk mit dem Rechner miteinander Daten austauschen können. World-Wide-Web: Eine Nutzungsart des Internets. Mit einem Webbrowser können weltweit elektronische (Hypertext)-Dokumente (Webseiten) abgerufen werden, welche durch Hyperlinks verknüpft sind. LAN, MAN, WAN: local, metropolian, wide area Network Client-Server: Clients beziehen Dienstleistungen von Servern. Mail, Web, Lizenz, Druckserver. VPN: virtual private network, Tunnel zu Intranet, Internet Stellt Sichere Verbindung her; Datenverschlüsselung FTP: File Transfer Protokoll zur Datenübertragung in FTP-Servern Protokolle: Vereinbarung über Art und Abfolge des Datenaustausches zwischen Computer und Prozessen. Protokollstack im Internet (gilt auch für FTP): Jede Schicht bietet der darüberliegenden einen Dienst an, modulrarer Aufbau, für jede Aufgabe eine Ebene

HTTP: Hypertext Transfer Protocol, Protokoll zum Übertragen von Webinhalten TCP: Transmission Control Protocoll: Erstellt Verbindung, garantiert zuverlässige Übertragung und richtige Reihenfolge IP: Internet Protocoll, Schickt Datenpackete an richtige Adresse Ethernet:

Physikikalische Ebene, effektive Verbindung

Peer to peer: Alle Rechner gleichwertig (zB illegales Filesharing) URL: Universal Remote Locator, Internetadresse http://www.ethz.ch, http: Verwendetes Protokoll, Rest = Host Ports: „Anschluss“, 80=http, webserver 110=POP-Mailserver

SY ST EM ARCH IT EKTU R

PROZE SSOR /CP U

CPU (Central Processing Unit) , Hauptrechnereinheit. Sie führt Programmcode aus, kann Daten vom Hauptspeicher lesen, modifizieren und wieder zurückschreiben. Kann durch Programmbefehle angesteuert werden. Besteht aus ALU (Arithmetic Locical Unit) und Register. Die CPU holt Instruktionen vom Hauptspeicher und führt diese aus. Nur auf Daten die in die Register der CPU geladen wurden, können Operationen ausgeführt werden. Da der Arbeitsspeicher im Vergleich sehr langsam arbeitet, holt die CPU im Voraus die Daten und speichert diese im Cache zwischen. Das führt zu einem Geschwindigkeitsvorteil. Sind Cache, Register und CPU schlecht abgestimmt, muss die CPU immer sehr lange auf den Arbeitsspeicher warten, bis dieser die Daten zur Verfügung stellt.

SPEIC H ER

Harddisk: Harddisk besitzt grosse Speicherkapazität und kann grosse Daten dauerhaft speichern. Die Daten befinden sich auf Scheibe, auf welche mit Mechanik zugegriffen wird, daher ist Zugriffszeit eher gross. Wird in beinahe jedem PC verbaut um Daten permanent zu speichern. Langsam. SSD: Solid State Drive verfügt über relativ langsame Zugriffszeit und ist, da keine Mechanik benötigt wird, schockfest. Besitzt nicht flüchtigen Speicher, ist zur Datensicherung geeignet. Durch immer grössere Speicherkapazität wird sie Harddisk ablösen. Arbeitsspeicher, RAM: (Random Access Memory) Inhalt muss permanent aufgefrischt werden, volatil. Chip als DRAM oder SRAM. Im RAM wird das auszuführende Programm geladen, sodass die CPU Instruktionen abrufen kann. Programme können Arbeitsspeicher als Zwischenspeicher verwenden. Arbeitsspeicher wird über die CPU gesteuert. RAM verfügt über eine relativ schnelle Zugriffszeit. Kann auf jedes Byte einzeln zugegriffen werden, der Speicher ist jedoch flüchtig.

WEI TER E K OMP ONE NT E N

Motherboard: Platine mit wichtigen Komponenten… Schnittstellen: Diese stellen die Verbindung zwischen Peripheriegeräten und der CPU dar. Grafikchip (onboard): Dieser besteht aus einem Prozessor (GPU) der für Bildoperationen spezialisiert ist. Die GPU kann mit der CPU kommunizieren und ebenfalls aufs RAM zugreifen. Das Programm sendet via Treiber die Steuerbefehle. Batterie: Sorgt dafür, dass die Systemuhr weitertickt. Netzwerkkarte

AUFGAB EN D ES B E TRIEB SS YS TE MS:

Es stellt das Bindeglied dar zwischen der Hardware und der Benutzeroberfläche und Regelt die Abläufe dazwischen.

Es steuert die Verwaltung der vorhandenen Ressourcen (Prozess, Speicher und Dateiverwaltung) → Lokalitätsprinzip. So kann u.a. auch Multitasking betrieben werden.

Das BS steuert die Hardwarekomponenten und angeschlossenen Geräte wie Drucker, Scanner und Netzwerk.

Es stellt den Schutz gegen aussen sicher und verwaltet Benutzerrechte.

Es behandelt Fehler und stellt Dienstprogramme zur Verfügung.

Unterschied Betriebssystem und graphischer Oberfläche: BS alleine kann alles obengenannte, es wäre aber zu umständlich direkt damit zu arbeiten, da keine Oberfläche vorhanden ist. Die grafische Oberfläche dient dazu, um Bedürfnissen des Benutzers mit einer ansprechenden und intuitiven Art gerecht zu werden. Anstatt Bytes herum zuschieben, Dateien mit Maus per Drag & Drop verschieben

TREIB ER

Um Hardware zu betreiben benötigt BS Treiber zur Ansteuerung der Komponenten.

ZAHLE N

BINÄR – BAS IS 2

Bit oder 1 Byte bit k byte T

M P G [ ] E → effektiver Speicherplatz meist kleiner wegen:

Formatierung, Blockgrösse

OS, Organisation (FileAllocation Table)

Dateigrösse, komprimierte Formate

Gibt Ansatz dass: kbyte 1000byte, kibyte 1024byte

AND OR XOR XNOR

Halbadierer: 2 Eingänge → 2 Ausgang: X,Y → 1 Summe, 1 Carry/Übertrag Volladierer: 3 Eingänge → 2 Ausgänge X,Y,C → 1 Summe, 1 Carry/Übertrag Basiswerte:

4096 2048 1024 512 256 128 64 32 16 4 2 1

→ Zahlen starten mit 0!

HE X – BAS IS 16

Basiswerte:

4096 256 16 1

UMRE CH NU NG

Dez→Binär:

, Ziffer ganz rechts

, 2. Ziffer v. rechts

Dez→Hex:

, Ziffer ganz rechts

Hex/Binär→Dez: 10111 → Tabelle mit Basis und Zahl

INTER PRE TA TION

Bitmuster werden als Text, Zahlen, Multimedia… codiert

ZE ICH EN

ASCI I A M E R I C A N S T A N D A R T C O D E F I N F O R M A T I O N I N T E R C H A N G E

128 Zeichen (7 bit) 8. Bit als Erweiterung/Fehlerkorrektur

0-31: Steuerzeichen für Drucker

32-64: Sonderzeichen

65-90: Grossbuchstaben

97-122: Kleinbuchstaben

U NIC OD E

16 bit pro Zeichen → Alle Sprachen (Chin.,Jap, Russ., Arab…)

0- 127: identisch mit ASCII

128-255: kann abweichen von erweitertem ASCII

Text mit Unicode braucht doppelt so viel Speicher wie ASCII

FARBE N

RGB

Additives Farbmodell: Alle Farben → weiss Als RGB: (Rot,Grün,Blau) Werte: oder

Schwarz: 0,0,0 #000000 Weiss: 255,255,255 #FFFFFF Mittelwerte: 128, #80

CMY K

Subtraktives Farbmodell: Alle Farben → schwarz CMYK: Cyan, Magenta, Yellow, Black Wird häufig in Druckern verwendet.

PUPL IKA TIO NE N

Peer-Review: Artikel werden durch Experten begutachtet

AUFBAU

1. Abstract 2. Einleitung 3. Related Work 4. Daten 5. Experiment 6. Resultat 7. Diskussion / Ausblick 8. Dank 9. Verzeichnisse

16 8 4 2 1

1 0 1 1 1

Informatik I+II Basisprüfung ETHZ – BAUG – Semester 1+2

06. August 2011 S e i t e | 2 Christoph Hager

HTML

CHARA KTE RIST IK

Markup Language: Auszeichnungssprache, schreiben nicht programmieren, definierter Syntax, beschreibt Inhalt und Aufbau eines Dateiformates, keine Interpretation der Darstellung.

HTML: Hyperthreading Markup Language für Internet-dokumente (Spezialisierung von XML (Austauschformat für Strukturierte Daten))

GML: Geography Markup Language, basiert auf XML

KML: Keyhole Markup Language (Google pandant)

Wysiwyg Editoren: Seamonkey, GoLive, Dreamweaver

Ist nicht Case-sensitiv (Gross-Kleinschreibung egal)

Zeichen: < &lt; > &gt; & &amp; ä &auml; Ö &Ouml;

Start und Endtags sauber setzen: keine Überlappung…

Attribute immer in Anführungszeichen

Browser interpret. HTML sehr tolerant, nicht immer gleich

BEISPI E L <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<!-- Christoph Hager, ETHZ, Informatik I, v1 28sep -->

<html>

<head>

<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">

<link rel="SHORTCUT ICON"

href="http://www.ethz.ch/icons_site/kuppel_icon_c000.gif" />

<title>Hobby</title>

</head>

<!-- Main Page -->

<body style="background-color: rgb(88, 103, 102); color: rgb(0, 0, 0);"

vlink="#000000" alink="#000000" link="#000000">

<!-- Kopfbalken -->

<table style="text-align: center; width: 800px; height: 160px; margin-left:

auto; margin-right: auto; font-family: Calibri;"

border="0" cellpadding="0" cellspacing="0"> <tbody>

<tr>

<td style="text-align: center; vertical-align: top;">

<!-- Picture -->

<img alt="hobby" src="hobby.jpg" style="border: 0px solid ;

height: 160px;"><br>

</td>

</tr>

</tbody>

</table>

<!-- Mainframe -->

<table style="text-align: left; width: 800px; margin-left: auto; margin-

right: auto; font-family: Calibri;"

border="0" cellpadding="15" cellspacing="0">

<tbody>

<tr>

<td style="vertical-align: top; width: 650px; height: 600px;

background-color: rgb(192, 192, 192);"><big>

<span style="font-weight: bold;">Meine

Hobbys</span></big><br>

<br>Boarden<br>

<img style="width: 220px;" alt="snow" src="snow.jpg"><br>

<a target="_top" href="aufgaben.html">InfoI</a><br>

</td>

</tr>

</tbody>

</table>

<br style="font-family: Calibri;">

<br>

</body>

</html>

ERGÄ NZ U NG EN

alink: beim drüberfahren, vlink: visited link

Farben: #00,33,66…, rgb(r,g,b), Text; black, red

FORMA TIER U NG MI T CSS

Bessere Methode zur Gestaltung (im head einbauen) <style type=“text/css“>

h1 {color:#FFCCDD; background-color:black }

body {background-color:rgb(51,0,102)}

</style>

LATEX Markup Language…

DATE I- AUFB AU

Grundgerüst: Dokument-Definition, -Anfang und -Ende. \documentclass[Optionen]{class}

+EINSTELLUNGEN/DEFINITIONEN

\begin{document}

+INHALT

\end{document}

STRU KTUR

Optionen [] und Werte {} von Kommandos sind optional \documentclass[a4paper]{scartcl}

DATE IE ISNT ELLUL NG E N

KOMME NTAR E

Mit % am Zeilenanfang kann auskommentiert werden

PACK E TE

Zusätzliche Packete einbinden \usepackage[ansinew]{inputenc}

IN HALT

TIT E LB LAT T

→ dokumentclass Option titlepage \title{Ich bin der Titel}

\author{Der Autor}

\date{Heute}

\maketitle

INHA LTSV ER ZEI CH NIS \tableofcontents → 2-3 mal kompilieren

KAPI TE LS TRU K TUR ( JE NAC H D OM UM ENT KLA SSE) \section{}

\subsection{}

\subsubsection{}

\paragraph{}

TE X T

Fliesstext: einfach ohne Steuerzeichen schreiben

Sonderzeichen mit \ vornedran: \#, \{, \%, \_ …

Neue Seite mit \newpage

Neue Zeile kann mit \\ begonnen werden

Eine Leerzeile ergibt einen neuen Abschnitt

\bigskip Ende eines Abschnittes ergibt grössen Abstand

Um den Zeilenumbruch zwischen zwei Wörter zu verhindern benötigt man eine Tilde ~ (wird als Leerzeichen dargestellt)

Für … gibt es auch den Tag: \ldots

UMG EBU NG E N \begin{kommando}

Text, Inhalt…

\end{kommando}

FORM ELN

\(...\), $...$ für Inline \[...\], $$...$$ für zentriert In equation-Umgebung für separate Formel mit Nummer (I)

$$\sum_{i=1}^{n} 2^{i} = 1 $$

$$\forall x \in {\mathrm R}:x^{2} \geq 0 $$

$$\int_{0}^{\frac{\pi}{2}} \sin x dx $$

Zeichen allgemein wie in Word

B ILD ER U ND GRAFI KE N

graphix-Package einbinden \begin{figure}[Option] h für hier

\centering

\includegraphics[parameter]{bild.pdf}

\caption{Beschreibung}

\label{fig:bild1}

\end{figure}

VERW EIS E

Auf Objekte die mit \label{definition} gelabelt wurden, können mit \ref{X} zugegriffen werden

PUPL IZ IER E N

Es sollten keine Fehler oder Warnungen gemeldet werden

Mit kompilieren wird eine ps-Datei erstellt die dann wenn gewünscht in PDF geplottet wird.

Etwa 2-3 mal kompilieren damit alles geupdatet wird und erstelltes PDF vorher schliessen.

Vorsicht mit Sonderzeichen in Dateinamen ect…

Braucht für alles ein Package

Informatik I+II Basisprüfung ETHZ – BAUG – Semester 1+2

06. August 2011 S e i t e | 3 Christoph Hager

MATLAB

WICHT IG E BEF EHL E

ALLGEM EI N Eingaben Pfeiltasten Letzte Befehle zurückholen ans Variable für letztes Resultat (answer) …; Unterdrückt Anzeige des Resultats clc Clear command Window

Hilfen doc … Öffnet Thema in der Hilfe (separates Fenster) help … Schreibt kurzen Hilfetext ins Command Window lookfor … Durchsucht Einträge nach Thema (Ctrl+C zum

Abbrechen) F1 Öffnet neues Fenster mit Hilfethemen zu akt.

Eingabe

Variablen syms … Zeichen(kette) als variable definieren X=… Variable definieren Workspace Hier werden die Variablen gespeichert. Es lassen

sich auch selber neue definieren (u.a. mit Tabellenansicht)

pi Zahl Pi

REC H NE N Operationen + - * / Es wird immer mit Matrizen gerechnet

(Dimensionen!) ^ Potenzen . vor Operator Eingaben/Zahlen werden Elementweise verrechnet

Folgen linspace(a,b,n

) Erstellt linearverteilte Folge (Vektor) von a bis und mit b aus n Elementen

a:i:b Erstellt linearverteilte Folge (Vektor) von a bis b in i-er Schritten

Matrizen [] Umgebung ,/Leerzeichen Nächste Spalte ; Neue Zeile eye(m,n) m x n Einheitsmatrix (Bei n x n Matrix einfach nur

eye(n)) ones(m,n) Matrix mit lauter 0en zeros(m,n) Matrix mit lauter 1en rand(m,n) Matrix mit Zufallszahlen round

(rand(m,n)*r)

Matrix mit Zufalls-Ganzzahlen zwischen 1 und r

A(i,j) Ausgabe des Elementes der i-ten Zeile, j-ten Spalte B(m:n,k:l) Bereichsangabe: Von m bis n-ter Zeile…

Bei (:,k:l) werden Alle Zeilen ausgegeben C(:,j)=[a;b;c] Damit können auch einzelne/mehrere

Matrixelemente angepasst werden [V,D]=eig(A) Liefert 2 Matrizen: V=normiertes T, D=Eigenwerte x=A\b A*x=b nach x Auflösen

PLOTT E N Vorgehen Beispiel

x definieren (x=Folge) x=linspace(-10,10,21);

Funktionen definieren y=2x^2-3;

Funkionen plotten plot(x,y)

Mit hold on/off Plottüberschreibung abschalten

Vorgehen kann auch geschachtelt werden

plot(x,cos(x))

Befehle Siehe auch Hilfe plot(x,y„…„) Plottet Funktionen linespec Steuert Farbe, Linientyp und Stützpunkte

xlabel ylabel Beschriftung x und Y-Achse title Titel Text(x,y,„Text„) Erstellt Beschreibung im Graph (Es kann auch

mit Formelsyntax von Tex und Word gearbeitet werden)

legend Erzeugt Legende grid Gitternetz

Die ganzen Formatierungen lassen sich auch im neu geöffneten Fenster anpassen. Mit RM Property Editor stehen praktisch alle Möglichkeiten offen. Im Figures-Window kann auch über File/Generate Code der „Erstell-Code“ betrachtet werden – um Einiges effizienter als alles von Hand vorgängig einzustellen. Damit könnte dann auch ein Skript erstellt werden, damit die Formatierung wieder verwendet werden kann. Beispiel:

x=-5:0.01:5;

hold on

plot(x,sinh(x),'b')

plot(x,cosh(x),'--c')

plot(x,tanh(x),'-.m')

title('Hyperbolikus-Funktionen','FontSize',20,

'FontName','Calibri');

legend('Sinh','Cosh','Tanh');

grid;

3D P LOT T EN Befehle Siehe auch Hilfe

meshgrid Erstellt ein Gitternetz aus 2 Folgen surf Generiert eine Oberfläche aus Daten colormap Farbgebung der Oberfläche

Einstellungen funktionieren analog dem 2D-Plotten Beispiel:

[X,Y] = meshgrid(-2:.2:2, -2:.2:2);

Z = X .* exp(-X.^2 - Y.^2);

surf(X,Y,Z)

colormap(winter)

WEI TER ES Datentypen

Int32 Ganze Zahl, 32bit double Reelle Zahl mit doppelter Genauigkeit char Zeichenkette Logical Wahrheitswerte

Diverses disp() Anzeigen von Text zB. num2str(x) Umwandeln von String to Number (str2num gibt’s auch) sprintf(x) Zur Kombiniereung von Text, variablen ect. mit grosser

Formatierungsmöglichkeit.

FU NK TI ONE N function [a,b] = test(x,y) %Beschrieb Funktion a=x+3*y; b=5+y; end

Ausführen: >>[u,v] = zahlen(3,4);

SCH LAU FE N while (Bedingugen)

Anweisungen

end

for i=1:n

Anweisung

end

if (Bedingung)

Anweisung

elseif (Bedinung)

Anweisung

else

Anweisung

end

ALLGM E IN E H INW E ISE

Folgende Punkte sollten beim Arbeiten mit MATLAB beachtet werden:

Es wird immer mit Matrizen gerechnet

Variablen müssen vorgängig als solche definiert werden (syms)

Zwischen Gross und Kleinschreibung wird unterschieden

Malzeichen (*) müssen grundsätzlich immer geschrieben werden (nicht wie beim voyage 200)

Zeichenketten werden in Hochkomas geschrieben: ‘mein Text‘

Bei grösseren Rechnung eigenes M-File erstellen und mit F5 ausführen

Über File/Preference… Keyboard lassen sich Shortcuts definieren. zB (Clear Command Window)

GU I GRAF IC AL U SER INT ERF A CE

Mit GUIDE können eigene Progrämmchen erstellt werden.

AUFBAU MI T DA T EIE N:

GUI_Programm.fig: Oberfläche der GUI

GUI_Programm.m: Automatisch generierter Code zur GUI Programm kann angepasst werden: Mit handles.var Variablen definieren. Diese müssen beim Start initalisiert werden:

function GUI_Programm_OpeningFcn() %HAC Startwerte definieren handles.a=1; handles.b=1;

Für die Einzelnen Objekte in .fig werden automatisch Grundstrukturen generiert. Diese Objekte können nun die Variablen füttern:

function slider1_Callback() %HAC Slider,Kurve1() val=get(hObject,'Value'); handles.a=val; % Wert in handles.a schreiben guidata(hObject, handles);

… function pushbutton1_Callback()

%HAC

cla reset % clear the current plot kurve1( handles.a, handles.b);

Zum Beenden folgenden Button erstellen: function pushbutton1_Callback()

%Fenster Schliessen delete(handles.figure1)

kurve1.m Das eigentliche Programm, das ausgeführt wird. kurve1( handles.a, handles.b);

Als Parameter werden Werte von handles weitergegeben

BEIP SIEL E

PLOT EI NER F UNK TI ON MI T S UMM E x=-(5*pi):0.01:5*pi; % x Werte definieren

summe=0; for k=1:n %n muss definiert werden summe=summe+sin(x*(2*k-1))/(2*k-1); end y=summe; % Berechnet Summe [ 1/n*sin(n*x) ] von 1 bis n, n

sind ungerade Zahlen

plot(x,y); end

GRÖSS E D ER MASC HINE N ZAH L %Epsilon-Test %Parameter: n=52; %--------- epsilon=1; frmt=get(0,'Format'); format long; for k=1:n epsilon=epsilon/2; end epsilonend=epsilon; a=epsilonend+1; txt1=sprintf('\tVersuch mit n = %d',n); txt2=sprintf('\tepsilon+1 = %.16u',a); txt3=sprintf('\tepsilon =

%.16u',epsilonend); txt4=sprintf('\teps (MATLAB) = %.16u\n',eps); disp('Aufgabe 37') disp(txt1) disp(txt2) disp(txt3) disp(txt4) format(frmt); %n max ist 52

ANA LYSIS - NI VEA U LI NIE NP ORTRAI T cl clear syms x y y=linspace(-10,10,2000);

x0=sqrt(2*y.^2-4*y); x1=sqrt(2*y.^2-4*y+1); x2=sqrt(2*y.^2-4*y+2); x3=sqrt(2*y.^2-4*y+3); x4=sqrt(2*y.^2-4*y+4); %Niveaulinien hold on plot(x0,y,'color',[0 .6 1]) plot(x1,y,'color',[0 .1 1]) plot(x2,y,':','color',[1 .2 .1]) plot(x3,y,'color',[1 .5 .2]) plot(x4,y,'color',[1 .8 .3]) plot(-x0,y,'color',[0 .6 1]) plot(-x1,y,'color',[0 .1 1]) plot(-x2,y,':','color',[1 .2 .1]) plot(-x3,y,'color',[1 .5 .2]) plot(-x4,y,'color',[1 .8 .3]) xlim([-3,3]) ylim([-2,4]) grid title(['Aufgabe 2 b)'

,sprintf('\n'),'Niveaulinienportrait'],'FontSize',14) legend('c=0','c=1','c=2','c=3','c=4','location','Best') xlabel('X-Achse'); ylabel('Y-Achse'); %axis square fh = figure(1); set(fh, 'color', 'white'); hold off

Informatik I+II Basisprüfung ETHZ – BAUG – Semester 1+2

06. August 2011 S e i t e | 4 Christoph Hager

DATENBANKEN

BEGR IFF S ERKLÄR UN G EN

DBVS: Datenbankverwaltungssystem, Software zur Verwaltung Oracle, MySQL. Integritätsbedingungen:

Minimalanforderungen für Instanzen einer Relation

Primärschlüssel besteht aus 1 oder mehreren Schlüsselattr.

Es kann mehrere mögliche Schlüssel geben

Festlegung, welches Attribut Primärschlüssel ist.

Entität/Tupel: Ein eindeutig zu bestimmendes Objekt (Abstraktion, Model), dem Informationen/Eigenschaften (Attribute) zugeordnet werden können (Wie ein Zeileneintrag in Tabelle). Entitätsmenge/Relation: Alle Entitäten mit denselben Attributen (zB eine Tabelle). Eine Relation kann sich im Laufe der Zeit verändern. Zu einem gewissen Zeitpunkt liegt immer eine Instanz der Relation vor. Entitätstyp: Strukturbeschreibung der Menge. Beschreibung durch eindeutigen Namen und einer zugehörigen Menge von Attributen (Kopfzeile in Tabelle). Attribut: Lateinisch für zuteilen, zuordnen. Eine Eigenschaft, Information, nähere Bestimmung, die etwas beschreibt oder näher definiert (Die Definition einer Spalte in der Tabelle). Schlüsselkandidat/Schlüssel: Ein oder mehrere Attribute mit eindeutige Identifizierung einer Entität. Muss zeitunabhängige Invariante sein und auch für zukünftige Entitäten gelten. Primärschlüssel: Eine Integritätsbedingung; gewählter Schlüsselkandidat zur eindeutigen Identifikation. (können auch mehrere sein) einer Entität innerhalb einer Entitätsmenge. Häufig eine ID. Jedes Tupel muss sich hier von anderen unterscheiden. Fremdschlüssel: Fremdschlüssel ist ein Sekundärschlüssel in einer Relation, der in einer anderen Relation Primärschlüssel (oder Schlüsselkandidat) ist. Also ein Schlüssel, der auch in einer anderen Tabelle verwendet wird, in Beziehung steht. Beziehungstyp: Lassen Beziehungen zwischen Entitäten herstellen. Wird mit Kardinalitäten beschrieben: n:m-Beziehung. Beispiel: Ein Kunde bestellt m verschiedene Produkte. Ein Produkt wird von n Kunden bestellt. Kardinalität: Anzahl Elemente in einer Menge. zB Anzahl Zeilen in Tabelle. Kann aber auch als Vorkommens-Häufigkeit verwendet werden. Hohe Kardinalität einer Spalte heisst das hier wenige Duplikate vorahnden sind, niedrige Kardinalität, dass wenig verschiedene Eigenschaften beschrieben werden. → siehe auch ERM: N:M-Beziehungen E/R-Modell (Entwurf) Relationale Datenbank Anwendung als Tabelle

Entität Tupel Zeileneintrag

Entitätsmenge Relation Inhalt der Tabelle

Entitätstyp Relationstyp/-Schema Kopfzeile

Relationship(Beziehung) Fremdschlüsselbezeichnung (Verknüpfung von Tabellen)

Attribut Attribut Spalte (Definition)

Attributwert Attributwert Zelleneintrag

Mehrbenutzerbetrieb: DBVS koordinieren die Aktivitäten aller Benutzer im Hintergrund, so dass man ein Mehrbenutzerbetrieb möglich ist. Einerseits muss dabei ein hoher Grad an Parallelität erzielt, andererseits stets die Konsistenz der Daten gewährleistet werden. Transaktion: Bezeichnung einer Abfolge von Aktionen die als eine logische Einheit betrachtet wird und entweder vollständig oder gar nicht ausgeführt wird. Damit wird sichergestellt, dass bei vielen parallel verlaufenden Transaktionen wie zB. bei Banküberweisungen die Daten richtig verarbeitet werden. Das Transaktionssystem muss dabei die ACID-Eigenschaften einhalten. ACID-Prinzip: ACID bedeutet: Atomicity, Consistency, Isolation, Durability und ist Voraussetzung für Transaktionen.

Atomarität: Alles oder nichts-Eigenschaft. Entweder wird die ganze Transaktion ausgeführt oder nichts.

Konsistenz: Nach (nicht unbedingt während) der Transaktion müssen die Daten wieder in konsistenter Form sein, die Integritätsbedingungen dürfen nicht verletzt sein.

Isolation: Transaktionen dürfen sich nicht gegenseitig beeinflussen.

Dauerhaftigkeit: Das Ergebnis der Transaktion wird dauerhaft in der Datenbank gespeichert: (commit oder rollback)

Redundanz: Eine Information kommt nur an einer Stelle in der Datenbank vor. Kann sonst zu Inkonsistenz führen. Anomalien:

Einfüge-Anomalie: Schlüsselattribut fehlt oder ist bereits vorhanden. Eintrag kann nicht erstellt werden.

Änderungs-Anomalie: Bei Redundanz wird Änderung nicht an allen Werten vorgenommen.

Lösch-Anomalie: Bei löschen eines Datensatzes gehen mehr Informationen verloren als beabsichtig. (Bei Beziehungen)

ERM

Datenbankmodell mit Darstellung als Entity-Relationship-model:

Rechtecke: Entitätstyp/Entität Kreise: Attribute, Unterstriechungen sind Primärschlüssel Rhomben: Beziehungen/Relationship

NOR MALF ORM E N

Um Redundanzen und Anomalien in Datenbanken zu vermeiden sollten diese Normalisiert werden.

1. NORMA LF ORM

Jedes Attribut muss einen atomaren Wertebereich mit einer Information haben: Ein Attribut für eine einzige Einheit: Vorname, Nachnahme, Adressenelemente alle separat.

In der Relation gibt es keine Wiederholungsgruppen oder mehrere gleiche Information in einem Attribut: Nicht mehrere Telefonnummern in einem Attribut. Ob man Telefon1, Telefon2 als Attribute oder eine separate Relation verwenden will, hängt je nach Situation ab.

Probleme: Suchen und Filtern schwierig, Anzeigen einer nicht-atomaren Einheit schwierig.

Lösung: Aufteilen von Attributen und aufspalten in mehrere Datensätze.

2. NORMA LF ORM

1NF erfüllt

Jedes Nichtschlüsselattribut von allen Schlüsselkandidaten voll funktional abhängig. Es geht hier nur um die verwendeten Primärschlüssel-Attribute. Die restlichen Attribute können theoretisch immer noch voneinander abhängig sein.

Problem: Redundanz

Lösung: Aufteilen in mehrere Relationen unter Verwendung von Fremdschlüsseln

3. NORMA LF ORM

2NF erfüllt

Jedes Nichtschlüsselattribut von keinem Schlüsselkandidaten transitiv abhängt. Ein Nichtschlüsselattribut darf nicht von einer Menge aus Nichtschlüsselattributen abhängig sein. Ein Nichtschlüsselattribut darf also nur direkt von einem Schlüssel abhängen.

Problem: Redundanz

Lösung: Aufteilen der Relationen unter Verwendung von Fremdschlüsseln

Merke:

Ist die Relation in 1. Normalform und besteht der Primärschlüssel aus nur einem Attribut, so liegt automatisch die 2. Normalform vor.

Ist eine Relation in 2. Normalform und besitzt sie ausser dem Primärschlüssel höchstens ein weiteres Attribut, so liegt die Tabelle in 3. Normalform vor.

MY SQL

SQL: structured query language Kann Erstellen, Modifizieren Abfragen von Daten und Tabellen

BEM ERK U NGE N:

Vorsicht mit Codierung: Sonderzeichen ect, charakter SET Latin 1/latin_1_german1 verwenden, Firefox: UTF-8

Error 1064: Syntaxproblem

Error 1062: Eintrag bereits vorhanden

csv: Keine Header

DAT ENBA NKABFRAG E N

Tabelle , Primärschlüssel, Fremdschlüssel erstellen: create table gemeinde(Gde_Nr integer primary key,

Name char(50), Kantonskuerzel char(5));

alter table biotop add foreign key(Gde_Nr)

references gemeinde(Gde_Nr);

insert into biotop(FID, Name, Code, Gde_Nr)

values (1, "Baggersee", 1, 928);

update myTable set Ort=„Zürich„ where PLZ=8000;

Löschen: drop table biotop, gemeinde, pflanzen, polygone,

schutzstatus, biodiversitaet

Daten über Fremdschlüssel verbinden: --Aus Übung--

select * from biotop join biodiversitaet where

biotop.FID = biodiversitaet.biotop_FID;

--Übersicht: Biotop, Schutzstatus, Gemeinde--

SELECT b.Name as Biotopname, s.Bezeichnung as

Schutzstatus, g.Name as Lage

FROM

biotop b,

schutzstatus s,

gemeinde g

WHERE b.Code_Schutzstatus =s.Code_Schutzstatus

and

b.Gde_Nr=g.Gde_Nr

ORDER BY b.Code_Schutzstatus

LIMIT 0 , 40

--Totalexport--

SELECT

b.FID as ID,

b.Name as Biotopname,

s.Bezeichnung as Schutzstatus,

g.Name as Lage,

g.Kantonskuerzel as Gebiet,

p.Name as Pflanzenvorkommen

from biotop b,

schutzstatus s,

gemeinde g,

pflanzen p

join biodiversitaet

where

b.FID = biodiversitaet.biotop_FID and

b.Code_Schutzstatus =s.Code_Schutzstatus and

b.Gde_Nr=g.Gde_Nr and

biodiversitaet.Code_Pflanzen=p.Code_Pflanzen

ORDER BY b.FID

LIMIT 0 , 40

Ergänzungen:

null, not null: Leer, nicht leer

float, real, Integer,date: Datentypen

asc, desc, sum, avg, min, max…

Zeichenketten mit ..where Ort like „Zuerich„..

%: Wildcard für Filter, like ist eine „Wildcardsuche“

Informatik I+II Basisprüfung ETHZ – BAUG – Semester 1+2

06. August 2011 S e i t e | 5 Christoph Hager

INFORMATIK II © chager B. Gärtner, ETHZ

JAVA - BASICS

KO NSOL E / EING AB EA UF FO RDER U NG

Starten mit cmd oder Eingabeaufforderungen unter Start

NAVIAGA TI ON U ND K OMM A ND OS Eingaben cd xxx\yyy Wechseln in das/die angegebenen

Unterverzeichnisse sofern vorhanden cd ..\..\xxx Wechseln in übergeordnete

Verzeichnisse D: Wechseln des Laufwerkes dir Auflisten der Ordner und Dateien im

aktuellen Verzeichnis dir *.java Auflisten der Dateien mit Endung .java copy aa.txt bb.txt Erstellt Kopie von aa mit Namen bb copy *.* xxx Kopiert alle Dateien in ein

Unterverzeichnis xxx del aa.txt Löschen der Datei aa.txt rename aa.txt ab.txt Umbenennen von aa in ab mkdir xxx Erstellen eines Unterverzeichnisses xxx rmdir xxx Löschen des Unterverzeichnisses xxx Esc Löscht die Eingabe cls Löscht den Verlauf Ctrl+C Abbrechen des aktuellen Befehles Pfeil nach oben/unten Letzte Eingaben holen TAB Autokomplettierung von Dateinamen

zB. set Listet Umgebungsvariablen auf ver Zeigt Windows-Version an help Kleine Befehlsreferenz

JAVA -PR OGRAMM K OMPI LI ERE N U ND STAR T EN 1. Zum Verzeichnis mit der xxx.java Datei navigieren 2. Kompilieren des Programmes:

javac MeinProgramm.java → xxx.class wird generiert 3. Starten: java MeinProgramm

Argumente können leerzeichengetrennt dahinter geschrieben werden.

→ Unterscheidung zwischen Gross/Kleinschreibung → Umgebungsvariablen in PATH und CLASSPATH müssen gesetzt sein. Aktuelles Verzeichnis mit …;.\;…

ECL IP SE

1. Rechts neben „Play“-Taste auf Run configurations… oder RMT auf xxx.class im Navigator und Run As…

2. Kontrollieren ob richtiges Projekt und Main Class eingestellt ist (wird nicht automatisch geändert), sonst mit Browse und Search anpassen

3. Unter Arguments können Parameter mitgegeben werden. ( Wie in der Konsole Leerschlaggetrennt)

4. Run: Programm wird kompiliert und ausgeführt, Ergebnis in der Konsole von Eclipse ausgeben.

KOMP IL IERU NG

Compiler: Übersetzt Progeammcode in Maschinen oder Bytecode (Zwischencode) → Erzeugt Datei.class Virtual Maschine von JAVA: Übersetzt Zwischencode zu Maschinencode und lässt ihn laufen. Interpreter: Lässt Prog mit Quellcode laufen, erzeugt keine Datei

KOMM E NTA RE

// Kommentar am Zeilenende

/* */ für normalen Block-Kommentar

Innerhalb des /** */ -Kommentars vor einer Klasse oder Methode können Informationen zu dieser platziert werden. Diese werden dann in Eclipse bei Klick auf die Klasse oder Methode interaktiv angezeigt. Alternativ kann auch ein Javadoc erstellt werden: Project/Generate Javadoc… Man findet die index.html im Projektordner unter doc /**

* Übung 2<br>

* Aufgabe 1

*

* @author Christoph Hager

* @version 1.0

* @param a = Alpha

* @param b = Beta

*/

NA ME N SV ER GEB UN G

Nur Ziffern und Buchstaben, am Anfang immer Buchstabe. Unterstrich/$ möglich

Klassennamen: grosser Anfangsbuchstaben

Variablen: Kleinbuchstaben

Konstanten: Grossbuchstaben

Es dürfen keine Schlüsselwörter verwendet werden: abstract, assert, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum, extends, final, finally, float, for, if, goto, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while

E IN GAB E UND A U SG ABE

EI NFAC HE AU SGABE

Klasse mit Main-Methode die „Hello“ plottet. public class Aufgabe1 {

public static void main(String[] args) {

System.out.println("Hello");

}

}

PARAME T ER ABGR EIFE N

Aus Array args[n] können Parameter abgegriffen werden n startet mit 0:

public class Aufgabe1 {

public static void main(String[] args) {

int i = Integer.parseInt(args[0])

System.out.println(i);

}

}

→ args*+ sind Strings (Zeichenketten) → Datentyp muss übereinstimmen, sonst Abbruch, Fehler

FEHLE RBEH AN DLUN G

Am einfachsten mit Try-Catch int x = 0; // Definiere x

try // Kontrolle ob Argument Ganzzahl ist

{

x = Integer.parseInt(args[0]);

} catch (Exception e) {

System.out.println("'" + args[0]

+ "' ist keine Ganzzahl oder zu

gross.");

return;

→ Exception können spezifiziert werden → Beispiele → throws Exception bei Fkt-Definition → höhere Ebene

DATE NT YP E N

PRIMITIV E DAT E NTY PE N

byte 8bit float 32bit

short 16bit double 64bit

int 32bit boolean 1bit true/false 1/0

long 64bit char 16bit \u0000-\uFFFF

GANZZA HLE N

Wertebereich: → Integer.MAX_VALUE; Integer mit max. Wert

GLEIT K OMMAZA H LEN

Darstellung: Vorzeichen Basis des Exponenten Mantisse: Enthält Ziffern der Gleitkommazahl Exponent Maschinenzahlen von sind nicht gleichmässig verteilt:

Weitere Schreibweisen 5.2x10^-5 4.0E-2 -23161e-5

Java Float: 2f = 2.0 Double: 1.0e-2 = 0.01 Regeln

Teste keine Fliesskommazahlen auf Gleichheit eine Zahl gerundet wurde

Vermeide Addition von Zahlen sehr unterschiedlicher Grösse

UMWA ND LU NG E N

X.parseX() ist zum umwandeln von Daten in einen Datentyp x

Mit Typcast (typ) y wird y explizit in Datentyp typ umgewandelt

Grundsätzlich wird bei mathematischen Operationen mit dem Typ weitergerechnet, was weniger Verlust hat.

(implizit)

Eclipse gibt grundsätzlich immer Hinweise wenn eine Operation nicht gültig ist

L IT ERA LE

Ausdrücke die direkt in den Programmcode geschrieben werden 1 2.0 (=double) 2L 2f 23e-2

AU SDRÜCK E U ND OP ER AT IO N EN

BEGRIFFE

Polymorphie: Vielgestaltigkeit, zB Überladung, OO

ÜBER LAD U NG

bei Addition oder aneinanderhängen von Zeichenketten

KLAM MERR EG ELN

Ausdrücke folgen „Punkt vor Strich“ , „Links nach rechts“ und „unäre vor binären“ (Vorzeichen +,-, und ++,-- bei Var. zuerst)

AR ITHM E TISC HE OPR EAT OR E N

binäre: +,-,*, /, % (Modulo, Divionsrest) unäre: Vorzeichen, Inkremente

VERG LEICH SOP ERAT OR E N

gleich == Vergleiche: <, <=, >, >= ungleich !=

Vorsicht mit gleich: binär → dizimalsystem != Zahl

BOOLSC HE OP ERAT OR E N

nicht ! Und/Oder/XOR &, |,^ bed. Und &&

bed. Oder ||

→ Linke Zeichen Verwenden, so wird direkt abgebrochen wenn false.

ZUW EIS U NGS OP ERAT OR E N

Aufbau: var op= expr → var = var op expr für: +,-,*,/,%,&,|,^,… Beispiel: i *= 2; // verdoppelt i

INKR EM E NTE

a++ Post: a=a+1, alter Wert wird zurückgegeben

++a Prä: a=a+1, neuer Wert wird zurückgegeben

a-- Post: a=a-1, alter Wert wird zurückgegeben

--a Prä: a=a-1, neuer Wert wird zurückgegeben

KO NST ROLL STR UKTUR E N

Blöcke: Für Sequenz von Anweisungen: {list of statement} int log = 0;

while (n > 1) { ++log; n/=2;}

System.out.println("log = " + log);

→ Variablen sind nur innerhalb Block sichtbar, in welchem sie definiert wurden.

IF V ERZW EIG U NG if (condition) if (x < y)

statement; min = x;

else if

statement1;

else if

statement2;

else else

statement3; min = y;

WHILE-S CH LEIF E while (condition)

statement;

DO-S CH LEIFE do

statement;

while (condition);

→ Anweisung wird mind 1x ausgeführt

FOR -SC H LEIF E for (init ; condition ; atend)

statement;

Beispiel: for (int i=0, j=1; i<=64; ++i, j*=2)

System.out.println("2 hoch "+i+"="+j);

→ do und while können mit for simuliert werden. → Leere condition gilt als wahr → Nach for() kommt kein ; !

Informatik I+II Basisprüfung ETHZ – BAUG – Semester 1+2

06. August 2011 S e i t e | 6 Christoph Hager

KOMPA KT E F OR -S CH LEIF E public static long iterativ(int x) {

long result = 1;

for (long i = x; i > 0; i--)

result *= i;

return result;

AUSWAH LA NW EIS U NG switch(test) {

case a: System.out.println("Fall A");

break;

case b: System.out.println("Fall B");

break;

default: System.out.println("-");

break;

}

Ohne break; → falltrought, untere werden auch ausgeführt

Beliebige Reihenfolge

Kein Label darf doppelt vorkommen

default ist optional

SPRU NGA NW EISU NG E N (FÜR SC HLEIFE N)

break; Beendet innerstes Konstrukt

break here; Springt zu Label here:

continue; Springt an Anfang Schleife

return; Rückgabewert

TER NÄR ER OPERA T OR

→ Kurze Schreibweise für einfache If-Schleifen: System.out.println

(x < 1 ? "x ist klein" : "x ist gross")

x = (y == 0) ? 0 : 100;

ARRA Y S

Erstellt neues Array (Deklaration) int[] arrayname = new int[LÄNGE];

Füllt Element i mit k, i = [0 bis LÄNGE-1] (Initalisierung) Arrayname[i] = k;

int[] myarray = {1,2,3,4};

Ausgabe Array System.out.println(Arrays.toString(arrayname));

Sortiert Array aufsteigend java.util.Arrays.sort(arrayname);

Kopiert Array (Referenz) int[] array2 = array1;

Arraywert um 1 erehöhen Arrayname[f-1]++

Länge von Array ausgeben (Anzahl Elemente) arrayname.length

→ Arraywerte sind am Anfang mit „Arbeitsspeichermüll“ gefüllt Am besten mit 0en initalisieren

REKUR IO NE N

Methoden die sich selbst aufrufen. Es braucht immer eine IF-Bedingung, damit keine Endlosschleife entsteht. Iterationen dagegen funktionieren mit Schleifen

F IBONACCI public class Fibonacci3{

public static void main(String[] args) {

for (int n=0; n<=50; ++n)

System.out.println ((n+1) + "-te Fibonacci-Zahl: " +

fibonacci(n));

}

// PRE: n >= 0

// POST: RW ist (n+1)-te Fibonacci-Zahl f_{n}

static int fibonacci (int n) {

if (n<2) return 1;

return fibonacci(n-1) + fibonacci(n-2);

}

}

FAKU LTÄT public static long rekursiv(int x) {

if (x < 1)

return 1;

return x * rekursiv(x - 1);

}

METH OD EN (FU NKT IO NE N)

VOR - U ND NAC HBE DINU NG E N

PRE: Was muss bei Funktionsaufruf gelten? Spezifiziert den Definitionsbereich POST: Was gilt nach dem Funktionsaufruf? Spezifiziert Wert und Effekt des Funktionsaufrufs → Assertions vor Berechnung setzen: assert(expression) bei False wird Programm mit Fehlermeldung abgebrochen

// PRE: e >= 0 || b != 0.0

// POST: Rueckgabewert ist b^e ("b hoch e")

public static double pow (double b, int e)

{

assert (e >= 0 || b != 0.0);

double ergebnis = 1.0;

if (e < 0) {

// b^e = (1/b)^(-e)

b = 1.0/b;

e = -e;

}

for (int i = 0; i < e; ++i)

ergebnis *= b;

return ergebnis;

}

RÜC KGABE

return ausdruck; Ausdruck wird von Funktion zurückgegeben

PARAME T ER

Werteparameter: Direkte Variablen für primitive Datentypen Referenzparameter: Pointer auf Speicher → man kann nicht einfach Kopien erstellen!

OV ER LOADI NG

Schnittstelle muss bekannt sein (Signatur): Methodenname Typ des Rückgabewertes Anzahl und Typ der Parameter

In der Java API dokumentiert

Mehrere Methoden mit gleichem Namen sind möglich solange sich die Signatur unterscheidet → Overloading

OBKEKTORIENTIERTE PROGRAMMIERUNG

ÜBERBL ICK

Datensicherheit: Datenänderung nur über Methoden

Information Hiding: Interner Aufbau nicht Sichtbar

Schnittstellen: erleichtern die Verwendung von Funktionen

Programmstrukturierung: Speichern Objekt als Einheit

Wiederverwenden von Klassen(Bibliotheken)

Unterschied Klasse / Objekt einer Klasse: Die Klasse ist nur der Bauplan oder Definition. Ein Objekt ist eine Instanz einer Klasse, so können mehrere Objekte erstellt werden die einer Klasse angehören. (Analog AutoCAD mit Blockdefinition → Dynamische Blockreferenz).

Private/Public: Methoden die als public deklariert werden, können von jeder anderen Klasse aufgerufen werden, bei private ist das nicht möglich. Nützlich wenn man nicht will, das von aussen auf eine interne Funktion einer Klasse zugegriffen werden darf. Szenario: Klasse stellt Steuerung eines Autos zur Verfügung, es ist jedoch nicht gestattet, auf die Benzineinspritzung direkt zuzugreifen.

METH OD EN U ND KL A SSE N

BEGRIFFS ERK LÄRU NG Klasse: Bauplan, Beschreibung/Definition für ein Objekt. Beinhaltet Eigenschaften und Methoden.

Klasse muss selben Namen wie java-Datei haben

Kann aus einer oder mehreren Methoden bestehen

Ein Programm kann auch aus mehreren Klassen bestehen (mehrere Java-Files)

In einem Programm darf nur eine Klasse eine Main-Methode haben und zwar die „Haupt“-Klasse mit welcher das Programm auch kompiliert wird. Gestartet wird dann mit dem Class-File der „Haupt“-Klasse.

Methode: Eine Funktion, stellt der Klasse Funktionen zur Verfügung. Objekt: Instanz einer Klasse. Alles ausser der primitiven Datentypen sind Objekte. Realisation eines Objektes nennt man Instanzieren. Konstruktor: Instanziert ein Objekt, erst damit wird die Speicherbelegung durchgeführt. Oberklasse: Von hier wird geerbt. In Diagramm zeigt Pfeil zu Oberklasse. Vererbung: Methoden und Eigenschaften können von Oberklassen geerbt werden. Aufruf mit extends Überschreiben: Eine Klasse kann Methoden von Oberklassen überschreiben, werden aber nur in der Klasse selbst anders verwendet. Deklaration: Übersicht Zugriffsrechte auf Methode von Klassen: Zugriff erlaubt

Eigene Klasse Innere Klassen

Klassen im selben Package

Unterklassen Sonstige Klassen

private Ja Nein Nein Nein

(default) Ja Ja Nein Nein

protected Ja Ja Ja Nein

public Ja Ja Ja Ja

Weitere Deklarationen:

Final: Von finalen Klassen kann nicht geerbt werden, finale Variablen lassen sich nur einmal definieren. (Schutz für User)

Abstract: Von abstrakter Klasse kann keine Instanz erzeugt werden, es benötigt zuerst eine Implementation (zB Vererbung mit extends…).

Static: Statische Methoden benötigen keine Instanz um verwendet werden zu können. Alles was nicht oo ist. Main Mehtode ist static. In alles Objekten gleich

Void: Methode gibt ihrer aufrufenden Methode kein Rückgabewert. Wird häufig bei Ausgabefunktionen verwendet.

KO NST RUKT OR EN

Struktur von Befehlen die als Konstruktor bezeichnet werden

Hat gleichen Namen wie die Klasse zu der er gehört

Er Instanziert ein Objekt

Er wird für jedes Objekt einmal aufgerufen → new…

Wird kein Konstruktor angegeben werden default Werte gesetzt

Es können mehrere Konstriktoren mit versch. Signaturen definiert werden

Er ist eine spezielle Methode

KONS TR UK T OR PU NKT( ) : Punkt p = new Punkt(3.0,2.0);

→ siehe auch Beispiele für Definition

KLASSE O O AUFB AU

class Punkt { Klasse private final double xKoordinate; Datenfelder private final double yKoordinate;

// POST: erzeugt den Nullpunkt

public Punkt () { Default-Konstruktor xKoordinate = 0.0;

yKoordinate = 0.0;

}

// POST: erzeugt den Punkt (x,y)

public Punkt (double x, double y) {

xKoordinate = x; Konstruktor yKoordinate = y;

}

public double getX() { Methode return xKoordinate;

}

Werte in Datenfelder (nicht private) schreiben: OnkelDagobert.name = "Duck";

Werte auslesen: System.out.println(OnkelDagobert.name);

Methoden-Aufruf: Objektname.methode()

Überladung von toString: Aufruf: println(Instanzname) public String toString() {

return "huhu";

}

→ Man kann nur Verweise kopieren und nicht Objekte!

WRAPP ER -K LASS E N Klassen von Primitiven Datentypen. zB. Integer.parseInt(), Wrapperklasse Integer zu int

GETT ER

Offene Methode (public) um Datenfelder auszulesen. So werden interne Zuweisungen nicht ersichtlich.

public double getX() {

return xKoordinate; private Datenfeld }

So kann ein Objekt nicht einfach modifiert werden (Schutz)

So können Klassen angepasst werden ohne, dass der Benutzer es merkt. Methoden heissen immer noch gleich.

KLASSE NH IRARC HIE

Aufbau mit Abgeleiteten Klassen

Klassendiagrarmm in UML (unified modelling langauge) Alle Objete in Java sind in Hirachie angelegt. Basisklasse: java.lang.Object

ÜBERS CHR EIB E N M E TH OD E

Eine Methode der Oberklasse kann von einer abgeleiteten Klasse überschrieben werden.

Informatik I+II Basisprüfung ETHZ – BAUG – Semester 1+2

06. August 2011 S e i t e | 7 Christoph Hager

VERW E ND E N M E TH OD E N D ER OB E RKLASS E

Mit super.methode() (Für Funktionen in Unterklassen)

Beispiel Überschreibung und super: // Ueberschreibt die Oberklassen-Methode

public void print() {

// Aufruf der Oberklassen-Methode

super.print(); //print der Oberklasse

System.out.println //zusätzliche Zeile

("Legi-Nummer: " + legiNummer);

}

VE RERB UN G

Jede Methode der Oberklasse steht auch in der abgeleiteten Methode zur Verfügung

Konstruktoren werden nicht vererbt/überschrieben → Konstr. der Oberklasse wird automatisch aufgerufen wenn abgeleitete Klasse initalisiert wird

AUFBAU UNT ERK LASS E

Oberklasse muss erweitert werden mit extends class DozentIn extends Person {

private final String personalNummer;

DozentIn (String v, String n, String p) {

// Aufruf des Konstruktors der Oberklasse

super (v, n);

personalNummer = p;

}

// Ueberschreibt die Oberklassen-Methode

public void print() {

// Aufruf der Oberklassen-Methode

super.print();

System.out.println

("Personal-Nummer: " + personalNummer);

}}

Hier kein Default-Konstruktur

ABSTRAK T E KLAS SE N

Klassen die für Hirarchie gebruacht werden, von denen aber keine Objekte erzeugt werden sollen

CASTI NG

Jedes Objekt einer abgeleteten Klasse kann als Objekt der Oberklasse aufgefasst werden (upcasting), bleibt aber Objekt der abgeleiteten Klasse

Ein Objekt der Oberklasse (das eigentlich abg. Klasse ist, zb durch kopieren Referenz) kann durch explizites Downcasten als Objekt der urspr. abgeleiteten Klasse aufgefasst werden.

→ Casting auf gleicher Stufe und nach oben möglich, Casting nach unten nicht möglich

GRAF IK EN M IT AWT

Mit Ableitungen (extends) von vorgegebenen Klassen

Unabhängig von Betriebssystem

Benötigen Bibliotheken

KOMP ONE NT E N

Elementare: Button, Auswahlliste, textfeld, Scrollbar Behälter: Frame zum anordnen von elementaren Komponenten

DARST ELLU NG

Anordnung der Komponenten

EREIG NISS T EU ER E UNG

Im Hintergrund laufen Listener, die auf Benutzarktivität warten Bei Ereignis werden diese aktiv → Aktionen ausführen

Benutzereingaben

Beobachter

AUFBAU

→ Siehe Beispiel

GRAFIKBEF E HLE public void paint(Graphics g) {..}

g.drawLine(x1, y1, x2, y2); // APkt,EPkt

g.drawOval(x, y, width, height);

//Ellipse mit linker oberer Ecke

g.drawRect(x, y, width, height);

//Rechteck mit linker oberer Ecke

g.drawString(string, x, y);

// Zeichenkette beginnt an Stelle x,y

g.setColor(Color.magenta)

Funktioniert wie AutoCAD → aktuelle Farbe ect. gesetzt

ANW E NDU NG A PPL ETS ( AWT )

JAVA -APP LETS:

Plattformunabhängig

Benötigt Browser um zu funktionieren

Benötigt Internetseite die Applet aufruft

Laufen beim Client in Sandbox (Sicherheit)

Keine Main sindern init-Methode

public class … extends java.applet.Applet,… <HTML>

<TITLE>Mein erstes Applet</TITLE>

<BODY>

<APPLET code=”MyApplet.class” width=400

height=200>

</APPLET>

</BODY>

</HTML>

LEBE NS ZY K LU S:

Instanziierung mithilfe Konstruktor Applet() der Superklasse

Initialisierung public void init(); wird genau einmal aufgerufen

Start mit public void start(); (geht auch mehrfach)

Zeichnen (regen) mit paint(Graphics g); //oder repaint

Verlassen der Website: public void stop();

Verlassen des Browsers: public void destroy();

EREIG NISS T EU ER U NG Programm in „Endlosschlaufe“ und wartet auf Benutzereingabe Sobald ein Ereignis/Event auftritt wird entsprechende Methode aufgerufen mit actionPerformed

STR EA MS

Streams sind UNI-Code basiert (als Bitmuster)

Ein und Ausgabe erfolgt Zeichenweise

import java.io.*; verwenden

Input mittels Tastatur, Maus, Datei… Output über Konsole mit Zeichenweiser Darstellung

import java.io.*;

public class LesenSchreiben {

public static void main(String [ ] args)

throws Exception { InputStream eingabe = new FileInputStream

("yesterday.txt");

OutputStream ausgabe = new FileOutputStream

("tomorrow.txt");

for (;;) {

int unicode = System.in.read();

System.out.write(unicode);

}}}

EI NGABE I N K ONSOLE java Spracherkennung < yesterday.txt

Eingabe wird in Form von Datei in System.in.read() umgeleitet

BILBL IOTH EK EN

Dazu muss man am Anfang der Datei diese Importieren

GRAFISCH E OB ERF LÄCH E N import javax.swing.*;

int b = Integer.parseInt(JOptionPane

.showInputDialog("Name? :"));

JOptionPane.showMessageDialog(null, b

+ ", Hallo");

ARRAYS import java.util.Arrays;

java.util.Arrays.sort(array2);

System.out.println(Arrays.toString(array1));

KLASSE ND IA GRAM M:

Aus Name/Datenfelder/Methoden

FEHLE R IN PR OGR AM ME N

SY NTA XF EH LER

→ Erkennung durch Editor/Compiler

LAU FZ EIT FE H LER

Treten während Programmablauf auf. → Ungültige Werte / Eingaben

E NTW URFSF E HLER

Programm läuft wie es programmiert ist, aber nicht so wie gewünscht. → Debugging

QUELLEN Vorlesungsunterlagen B. Waldvogel, B, Gärtner, ETHZ

Eigene erstellte Dokumente

Einführung in die Informatik, Gumm/Sommer

Einträge in Wikipedia

ANWENDUNGS-BEISPIELE

DER KL E INE G AU SS

Summenformel:

public class Gauss{

// Summe der ersten 100 natuerlichen Zahlen

public static void main(String [] args){

int s = 0;

for (int i=1; i<=100; ++i){ // ++i heisst

i = i + 1

s += i; // s = s + i

}

System.out.println(s);

}}

COLLAT Z F OLG E

Folge:

Collatzfolge wird repetitiv, sobald Zahl 1 erscheint public class Collatz {

static void collatz(int n) {

System.out.print(n + " ");

if (n == 1) return;

else if (n % 2 == 0) collatz(n / 2);

else collatz(3*n + 1);

}

public static void main(String[] args) {

int N = Integer.parseInt(args[0]);

collatz(N);

System.out.println();

}}

Endlosschlaufe wenn 1 nicht erreicht würde.

ZUFALL SZ AHLE N

LI NEAR E K ONGRU E NZM ET H OD E public class Zufall{

// berechne eine Folge von Zufallszahlen, abhaengig von

einem

// eingegebenen Startwert

public static void main(String [] args){

int x0 = Integer.parseInt(args[0]);

// Startwert als Eingabeparameter

int a = 137; // Multiplikator

int c = 187; // Verschiebung

int m = 256; // Modulus

int x = x0; // aktueller Wert

for (int i=0; i<=256; ++i) {

x = (a * x + c) % m; // naechster Wert

System.out.println(x);

}}}

WÜRF EL public class Wuerfel{

public static void main(String [] args){

for (int i=0; i<50; i++){ // 50x würfeln

double d=Math.random(); // d=[0,1)

d=d*6+1; // d=[1-7)

int f=(int)d; // d=[1,2..,6]

System.out.println(f);

}}}

GGT public class Ggt {

// berechne GGT zweier Zahlen a und b

public static void main(String[] args){

// lies die Zahlen von der Kommandozeile

int a = Integer.parseInt (args[0]);

int b = Integer.parseInt (args[1]);

// Aufruf der ggt-Funktion und Ausgabe

System.out.println("ggT (" + a + ", " + b

+ ") = " + ggT(a,b));

}

// Euklidischer Algorithmus

public static int ggT (int a, int b) {

while (b != 0) {

// ersetze (a,b) durch (b, a % b)

int a_alt = a; // a merken

a = b; // ersetze a durch b

b = a_alt % b; // ersetze b durch a % b

}

return a;

}}

Informatik I+II Basisprüfung ETHZ – BAUG – Semester 1+2

06. August 2011 S e i t e | 8 Christoph Hager

S IEB E RAT O STH ET EN E S – PR IMZ AH LEN public class Eratosthenes{

// berechne alle Primzahlen in {2,...,n-1}

public static void main(String [] args){

int n = Integer.parseInt(args[0]);

// Array, das jeweils angibt, ob eine Zahl

schon ausgestrichen wurde

boolean[] ausgestrichen = new boolean[n];

for (int i = 0; i < n; ++i)

ausgestrichen[i] = false;

// Sieb

System.out.println ("Berechnung...");

for (int i = 2; i < n; ++i)

if (!ausgestrichen[i]) {

// i ist Primzahl; streiche alle echten

Vielfachen aus

for (int m = 2*i; m < n; m += i)

ausgestrichen[m] = true;

}

// Ausgabe

System.out.println("Primzahlen in {2,...," + (n-1) +

"}: ");

for (int i=2; i < n; ++i)

if (!ausgestrichen[i])

System.out.print (i + ", ");

System.out.println("fertig!");

}}

STR ING S public class StringTest {

public static void main(String[] args){

String s0 = "abcdef";

String s1 = s0.substring(3,5);

System.out.println(s1); // de

String s2 = s0.concat("ghia");

System.out.println(s2); // abcdefghia

String s3 = s2.replace ('a','A');

System.out.println(s3); // AbcdefghiA

System.out.println(s3.length()); // 10

String s4 = s3;

System.out.println(s3.compareTo(s4)); // 0

System.out.println(s3.compareTo(s2));

// <0, weil s2 lex.(UnicodeNr) kleiner

}}

VE RERB UN G public class Baum{

public static void main(String[] args) {

Buche meinBaum = new Buche("meinBaum");

Tanne weihnachtsbaum = new

Tanne("Weihnachtsbaum");

meinBaum.erkennbar_an();

weihnachtsbaum.erkennbar_an();

BaumArt irgendeinBaum;

irgendeinBaum= new Buche("Hexenbaum");

irgendeinBaum.erkennbar_an();

}}

//Abstrakte Klasse Baumart

public abstract class BaumArt {

private String name;

public BaumArt(String b_name){

name=b_name;

}

public abstract void erkennbar_an();

}

// Unterklasse Buche

public class Buche extends BaumArt {

public Buche(String b_name) {

super(b_name);

}

public void erkennbar_an(){

System.out.println("Buchecken");

}}

// Unterklasse Tanne

public class Tanne extends BaumArt {

public Tanne(String t_name){

super(t_name);

}

public void erkennbar_an(){

System.out.println("Nadeln");

}}}

Separate Files!

GER AD E U NG ER AD E if (i % 2 == 1) … \\ungerade

if (i % 2 == 0) … \\gerade

GEM ETR IE O O public class Geometrie {

public static void main(String[] args) {

Punkt p = new Punkt (3.0, 2.0);

Kreis k = new Kreis (p, 5.0);

Punkt ursprung = new Punkt();

System.out.println ("Flaeche von k = " + k.flaeche());

System.out.println ("Umfang von k = " + k.umfang());

System.out.println ("Enthaelt k den Ursprung? " +

k.enthaelt (ursprung));

}}

// Klasse fuer (nichtmodifizierbare) Punkte

class Punkt {

private final double xKoordinate;

private final double yKoordinate;

// POST: erzeugt den Nullpunkt

public Punkt () {

xKoordinate = 0.0;

yKoordinate = 0.0;

}

// POST: erzeugt den Punkt (x,y)

public Punkt (double x, double y) {

xKoordinate = x;

yKoordinate = y;

}

public double getX() {

return xKoordinate;

}

public double getY() {

return yKoordinate; }}

// Klasse fuer (nichtmodifizierbare) Kreise

class Kreis {

private final Punkt mittelpunkt;

private final double radius;

static private final double PI = Math.PI;

static private final double ZWEIPI = 2.0*Math.PI;

// POST: erzeugt einen Einheitskreis

public Kreis () {

mittelpunkt = new Punkt ();

radius = 1.0;

}

// PRE: r >= 0.0

// POST: erzeugt Kreis mit M c und r

public Kreis (Punkt c, double r) {

assert (r >= 0.0);

mittelpunkt = c;

radius = r;

}

public Punkt getMittelpunkt () {

return mittelpunkt;

}

public double getRadius () {

return radius;

}

public boolean enthaelt (Punkt p) {

double dx = p.getX() - mittelpunkt.getX();

double dy = p.getY() - mittelpunkt.getY();

return (dx*dx + dy*dy <= radius*radius);

}

public double flaeche () {

return PI*radius*radius;

}

public double umfang () {

return ZWEIPI*radius; }}

FEHLE RBEH AN DLUN G // Fehlerbehandlung

if (args.length != 1) { // 1 Arg?

System.out

.println("Positive Ganzzahl!");

return;

}

int x = 0; // Definiere x

try // Kontrolle ob Argument Ganzzahl ist

{

x = Integer.parseInt(args[0]);

} catch (NumberFormatException e) {

System.out.println("'" + args[0]

+ "' keine Ganzzahl oder zu gross.");

return;

}

if (x < 0) { // Kontrolle ob Arg positiv ist

System.out.println("Ganzzahl positiv!");

return;

}

if (x == 0) { // Kontrolle ob Argument 0 ist

System.out.println("Du bist hier Null.");

return;

}

AWT Z IC KZAC KLIN IE import java.awt.*;

import java.awt.event.*;

public class LinienZickzack {

public static void main (String args[]) {

// Mache ein Grafikfenster auf

MeinFrame f = new MeinFrame();

}}

class MeinFrame extends Frame {

// Konstruktor; ruft Methoden

// der Oberklasse Frame auf

MeinFrame () {

// Breite und Hoehe in Pixeln

setSize (300, 400);

// Abstand von linker oberer Ecke in Pixeln

setLocation (100, 100);

// Sichtbarmachung

setVisible (true);

// Beobachter hinzufuegen

addWindowListener (new SchliessknopfBeobachter());

}

// Ueberschreibe die paint-Methode der Oberklassse

// Component

public void paint (Graphics g) {

int xNeu;

int xAlt;

int yNeu;

int yAlt;

final int BREITE = 100;

final int HOEHE = 20;

xAlt=0; yAlt=30; // x0, y0

for (int i=1; i<19; ++i) {

if (i % 2 == 1)

xNeu = xAlt + BREITE;

else

xNeu = xAlt - BREITE;

yNeu = yAlt + HOEHE;

g.drawLine(xAlt, yAlt, xNeu, yNeu);

xAlt = xNeu;

yAlt = yNeu;

}}}

class SchliessknopfBeobachter extends WindowAdapter {

// schliesst das Fenster

public void windowClosing (WindowEvent e) {

System.exit(0);

}}

JA V A-A PPLE T M IT AWT import java.awt.*;

import java.awt.event.*;

import java.applet.*;

public class WuerfelApplet extends Applet {

private final int ABSTAND = 60;

private final int GROESSE = ABSTAND/2;

private final Wuerfel w;

// Konstruktor

public WuerfelApplet () {

w = new Wuerfel (this);

addMouseListener (w);

setSize (4*ABSTAND, 4*ABSTAND);

}

// Zeichnen des Wurfes

public void paint (Graphics g) {

g.setColor (Color.white);

g.fillRect (0,0,3*ABSTAND, 3*ABSTAND);

g.setColor (Color.black);

switch (w.getAugenzahl()) {

case 5:

auge (g, 2, 0); auge (g, 0, 2);

case 3:

auge (g, 0, 0); auge (g, 2, 2);

case 1:

auge (g, 1, 1);

break;

case 6:

auge (g, 1, 0); auge (g, 1, 2);

case 4:

auge (g, 2, 0); auge (g, 0, 2);

case 2:

auge (g, 0, 0); auge (g, 2, 2);

}}

// Flimmervermeidung

public void update (Graphics g) {

paint(g);

}

// Zeichnen eines Auges

private void auge (Graphics g, int x, int y) {

g.fillOval (x*ABSTAND+GROESSE/2, y*ABSTAND+GROESSE/2,

GROESSE, GROESSE);

}}

//neue Datei

import java.awt.*;

import java.awt.event.*;

public class Wuerfel extends MouseAdapter {

// Datenfeld fuer die Augenzahl und das Applet

private int augenzahl; // 1..6

private WuerfelApplet a;

// Konstruktor: einmal wuerfeln...

public Wuerfel (WuerfelApplet applet) {

a = applet;

wuerfeln();

}

// Mausklick: einmal wuerfeln...

public void mouseClicked (MouseEvent e) {

wuerfeln(); // neuer Wurf

a.repaint(); // Applet bescheid sagen: Neu zeichnen!

}

// einmal wuerfeln...

public void wuerfeln() {

augenzahl = (int)(6 * Math.random() + 1);

}

// Getter fuer die Augenzahl

public int getAugenzahl() {

return augenzahl;

}}

SPR ACH ERK EN NU NG import java.io.*;

public class Spracherkennung {

static double[] englischProfil = {XXX};

static double[] deutschProfil = {XXX};

static double[] italienischProfil = {XXX};

// Sprachenliste

static double[][] sprachenProfil = {

englischProfil, // 0

deutschProfil, // 1

italienischProfil, // 2

};

// POST: gibt Namen der Sprache i aus

public static String name (int i) {

switch (i) {

case 0: return new String("Englisch");

case 1: return new String("Deutsch");

case 2: return new String("Italienisch");

default: return new String("unbekannte Sprache");

}

}

// POST: berechnet Abweichung Text- von Sprachenprofil

// im quadratischen Abstand der Haeufigkeitsprofile

public static double abweichung (double[] t, double[] s) {

double a = 0.0;

for (int i=0; i<26; ++i)

a += (t[i]-s[i])*(t[i]-s[i]);

return a;

}

public static void main (String[] args) throws Exception {

// Haeufigkeitsprofil fuer den zu lesenden Text erstellen

double[] t = new double[26];

for (int i=0; i<26; ++i)

t[i] = 0;

// Text einlesen und Buchstaben (absolut) zaehlen

int buchstabenAnzahl = 0;

for (;;) {

int unicode = System.in.read(); // naechstes Zeichen

if (unicode == -1) break; // -1 = Textende

if (65 <= unicode && unicode < 91) { // A-Z

++t[unicode-65]; // 'A' = 0, 'B' = 1, ...

++buchstabenAnzahl;

}

if (97 <= unicode && unicode < 123) { // a-z

++t[unicode-97]; // 'a' = 0, 'b' = 1, ...

++buchstabenAnzahl;

}}

// Hauefigkeitsprofil berechnen

for (int i=0; i<26; ++i)

t[i] = 100.0 * t[i] / buchstabenAnzahl;

// Spracherkennung

double minAbweichung = Double.MAX_VALUE;

int erkannteSprache = 0;

for (int i=0; i<sprachenProfil.length; ++i) {

double a = abweichung (t, sprachenProfil[i]);

System.out.println ("Abweichung von " + name (i) + " =

" + (int)a);

if (a < minAbweichung) {

minAbweichung = a;

erkannteSprache = i;

}}

System.out.println ("Fazit: Das ist " + name

(erkannteSprache) + "!");

}}