• Keine Ergebnisse gefunden

Praktische Informatik I

N/A
N/A
Protected

Academic year: 2022

Aktie "Praktische Informatik I"

Copied!
38
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Praktische Informatik I

WS 1999/2000

Prof. Dr. W. Effelsberg

Lehrstuhl für Praktische Informatik IV Universität Mannheim

(2)

Inhaltsverzeichnis (1)

1. Einführung

1.1 Was ist Informatik?

1.2 Geschichte der Informatik 1.3 Grundstruktur des Computers 2. Die Programmiersprache Java

2.1 Was ist Java?

2.2 Erste Beispiele

2.3 Lexikalische Konventionen 2.4 Typen und Werte

2.5 Konstanten und Variable

2.6 Typumwandlungen, Ausdrücke und Operatoren 2.7 Anweisungen

2.8 Felder

3. Entwurf von Algorithmen

3.1 Algorithmen, Progammiersprachen, Programme 3.2 Systematischer Entwurf von Algorithmen

3.3 Schrittweise Verfeinerung

3.4 Ablaufsteuerung (Kontrollstrukturen) 3.5 Modularität

3.6 Rekursion

3.7 Daten und Datenstrukturen

(3)

Inhaltsverzeichnis (2)

4. Brückenschlag zur Mathematik

4.1 Einführung in die Logik 4.2 Endliche Automaten 4.3 Binärbäume

5. Theorie der Algorithmen 5.1 Berechenbarkeit 5.2 Komplexität

5.3 Korrektheit und Verifikation 6. Alternative Programmierkonzepte

6.1 Ereignisgesteuerte Programmierung 6.2 Programmierung mit Logik

6.3 Funktionale Programmierung

(4)

Literatur zur Vorlesung

1. Basis der Vorlesung

Les Goldschlager / Andrew Lister:

Informatik - Eine moderne Einführung

3. Auflage, Hanser-Verlag, München,1990 Martin Schader, Lars Schmidt-Thieme:

Java - Eine Einführung

2. Auflage, Springer-Verlag, Berlin/Heidelberg/New York, 1999

2. Weitere Empfehlungen

Harvey M. Deitel, Paul J. Deitel:

Java: How to program

2nd edition, Prentice Hall, 1997 (1100 Seiten!) Uwe Schöning:

Logik für Informatiker

4. Auflage, Spektrum Akademischer Verlag, 1995

(5)

Danksagung

Die Kollegen Hesser, Schader, Schmeck und Ottmann haben mir zur Vorbereitung dieser Vorlesung Folien und andere Unterlagen überlassen. Für ihre Unterstützung möchte ich mich herzlich bedanken.

(6)

1 Was ist Informatik?

Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere der au- tomatisierten Verarbeitung mit Hilfe von Digitalrechnern.

Sie befaßt sich mit

• der Struktur, der Wirkungsweise, den Fähigkeiten und den Konstruktionsprinzipien von Informations- verarbeitungssystemen

• Strukturen, Eigenschaften und Beschreibungsmög- lichkeiten von Informationen und von Informations- verarbeitungsprozessen (Datenstrukturen und Algo- rithmen)

• Möglichkeiten der Strukturierung, Formalisierung und Mathematisierung von Anwendungen sowie der Modellbildung und Simulation.

(7)

Einordnung der Informatik

In fo rm a tio n stec h n o lo g ie

In fo rm atik M ik ro elek tro n ik

(8)

Teilgebiete der Informatik

Theoretische Informatik

Technische Informatik (Hardware)

Praktische Informatik

Angewandte Informatik

Automatentheorie Rechner- architektur

Programmier- sprachen

Wirtschafts- informatik Formale Spra-

chen

Schaltkreis- entwurf

Datenstrukturen Ingenieurs- informatik Komplexitäts-

theorie

Prozessoren Datenbanken Computerlinguistik

usw. Speicher Betriebssysteme naturwiss. Anwen- dungen

pheriphere Ge- räte

Rechnernetze geisteswiss. An- wendungen Kommunika-

tionsgeräte

Künstliche Intelli- genz

juristische Anwen- dungen

usw. usw. usw.

(9)

Verwandte Gebiete

N a tu r- w isse n - sch aften

B W L V W L

A n d ere In g en ieu r- w iss en - sc ha ften

S p rach en V erw a ltu n g

M u sik /K u n st P sych o lo g ie

S p o rt ...

R ech t

S o zia lw iss.

T h eo lo g ie ...

A n w e nd u n gs system e E n tw ick lu n g ssystem e S p ra ch system e

S ystem s oftw a re B etrieb ss ys tem e R ech n erarc h it./N etze K ern system e

P roz esso ren , E /A Fu n k tio n a le E in h eiten S ch a ltu ng en

B au elem en te

P h ysik alisch e V o rg än g e

P ä da g o gik

P h ysik C h e m ie

B io lo g ie

M ath em a tik P h ilo-

so p h ie

(10)

1.1 Geschichte der Informatik

Meilensteine aus der Geschichte der Informatik

1.1.1 Geschichte der Ideen

Theoretische und mathematische Grundlagen aus Indien und Arabien Ziffern, Stellenwert-

Schreibweise (zuvor: römi- sche Zahlen; vergleiche auch: englisches Geld!) G. W. Leibniz 1646 - 1716 Logischer Kalkül, binäres

Zahlensystem, Addierma- schine

G. Boole 1847 Algebraisierung der Logik D. Hilbert 1862 - 1943 Entscheidungsproblem,

(finde Algorithmus, der ent- scheidet, ob gegebene

Aussage wahr oder falsch ist)

G. Frege 1879 symbolische Sprache zur Beschreibung von Algo- rithmen

Baudot 1889 Konstruktion von binären Codes

K. Gödel 1931 Unvollständigkeitstheorem (es gibt Probleme, zu de- nen keine algorithmische Lösung existiert)

Turing 1937 Turing-Maschine, Bere- chenbarkeit, Algorithmus- Begriff

(11)

J. v. Neumann 1948 universelle, programmge- steuerte Rechenanlage

C. E. Shannon 1948 Informationstheorie, Abtast- Theorem

R. Hamming 1950 fehlerkorrigierende Codes H. Rutishauser 1951 algorithmische Program-

miersprache J. Backus, P. Naur ca.

1958

Backus/Naur-Form zur Syntaxbeschreibung S. Cook 1971 NP-Vollständigkeit

(12)

1.1.2 Geschichte der Hardware

Altertum Rom, Griechenland Automaten (z.

B.wassergetrieben)

Rom Abakus

China "Chinese Abacus"

(Perlenrechner) 1833 Ch. Babbage "Analytical Engine"

1890 H. Hollerith Lochkarten-

Tabelliermaschinen (Volkszählung)

1941 K. Zuse Z3, erste funktionsfähi- ge programmgesteuerte Rechenanlage (2600 Relais)

1944 H. Aiken Mark I, elektromechani- scher Computer (Har- vard U.)

1952 H. Aiken Mark II, Relais-Rechner

(13)

Automaten der alten Griechen

Die „automatischen Opferpriester“ wurden schom im 3.

Jahrhundert v. Chr. von Philon aus Byzanz gebaut. Die Anlage arbeite mit pneumatischem Druck.

(14)

Automaten der alten Ägypter

Das Taxameter der alten Ägypter arbeite mit verschie- denfarbigen Kugeln, die in einer Schale gesammelt wurden.

(15)

Erste Generation der Computer (Röhren)

1943-46 Eckert, Mauchly ENIAC, U. Pennsylva-

nia, 18 000 Röhren, Programm verdrahtet über Schalttafeln

1946 John v. Neumann "stored program computer" Daten und Programm im Speicher des Computers

1947 MIT Whirlwind I, magneti-

scher Kernspeicher 1947 U. Cambridge Magnettrommel-

Speicher

1951 UNIVAC Magnetband-Speicher

1953 IBM 701, Röhrencomputer,

Magnettrommel, Ma- gnetband

(16)

Zweite Generation (Transistoren)

1948 Erfindung des Transi-

stors, Schaltelement mit hoher Schnelligkeit, ge- ringer Leistungsauf- nahme, geringer Wär- meabstrahlung, Markt- reife 1951

1959 IBM 7090, voll transistori- siert, Magnetkernspei- cher 7040 (kleineres Modell)

1964 CDC 6600, Supercomputer

mit mehreren Prozesso- ren, über 3 MIPS

1967 D. Slotnick ILLIAC IV, Parallelrech- ner mit 256 Prozessoren (SIMD)

(17)

Dritte Generation (integrierte Schaltkreise)

1962 MIT, U. Manchester Hardware zur Adre-

ßumsetzung, virtueller Speicher, Paging

1964 IBM System /360, byte- und

wortorientiert, Standards für Architektur und In- struktionssatz weithin akzeptiert.

ca. 1972 Halbleiter-Speicher als

Hauptspeicher

ca. 1972 Intel erster Mikroprozessor ca. 1974 DEC PDP 11, Prozessrech-

nerfamilie

1977 Cray CRAY-1, Vektorrechner

mit Pipelining

ca. 1978 Xerox PARC hochauflösender Ra- stergrafik- Bildschirm, Maus

ca. 1980 Apple erster PC

ca. 1990 “3 M PC“: 1 Mio Instruk-

tionen/s, 1 Mbyte Haupt- speicher, 1 Mio Pixel

(18)

1.1.3 Geschichte der Software (1)

1954 J. Backus FORTRAN

1960 DoD (USA) COBOL

1960 H. Rutishauser, ALGOL 60 F. L. Bauer

K. Samelson

1966 J. Weizenbaum ELIZA

1968 E. Dijkstra Multiprogramming, Struktur von Be- triebssstemen

1970 E. Codd relationales

Datenbankmodell

1971 N. Wirth Pascal

1974 IBM SNA-Ankündigung

1974 D. M. Ritchie, Unix-Betriebssystem K. Thompson

1975 R. Metcalfe, Ethernet LAN D. Boggs

(19)

Geschichte der Software (2)

ca. 1978 DEC VAX und VMS

1978 C. A. R. Hoare Communicating Se quential

Processes, Program- mierung paralleler Prozesse 1978 R. Rivest, Public Key Encryption

A. Shamir, L. Adelmann

ca. 1980 VisiCalc erste Tabellenkalkulati- onssoftware

1984 ISO OSI-Referenzmodell für

offene Systeme

1982 Xerox PARC OO - Programmierung (Smalltalk)

1987 MIT X – Windows

1993 Sun Java

(20)

Benutzerfreundliche Anwendungssoftware

Textverarbeitung, incl. Grafik, Desktop Publishing

Tabellenkalkulation

Präsentationssoftware

Datenbanksysteme

multifunktionale Pakete (MS Office)

Internet-Browser

Spiele

Bedeutung: Benutzung des Computers wird möglich ohne Erlernen einer Programmiersprache!

(21)

1.1.4 Geschichte typischer Konfigurationen

1950 Hauptspeicher 64 K

BATCH-Betriebssystem, Einbenutzerbetrieb Programmierung in Assembler

Peripherie: Lochstreifen

1960 Hauptspeicher 64 K (Magnetkerne) BATCH, Multiprogramming, I/O-Kanäle FORTRAN, COBOL

Magnettrommel, Magnetplatte, Magnetband Lochkarten

1970 Hauptspeicher 256 K (Halblei- ter/Magnetkerne)

Virtueller Speicher, Paging

Time-Sharing-Betriebssysteme

Terminals für Systemprogrammierer 1980 Hauptspeicher 1 MB (Halbleiter)

Time-Sharing + TP-Monitor

Terminal-Netze über Standleitungen

Interaktive Programmentwicklung am Termi- nal

Transaktionsverarbeitung On-Line am Termi- nal

Magnetplatte, Magnetband

(22)

Typische Konfigurationen (2)

1990 Leistungsstarke Arbeitsstationen (PCs) mit 1 MB, 1 MIPS, 1 Mio. Bildpunkte Abteilungsrechner

Zentrale Großrechenzentren

Benutzerfreundliche Programme auf PCs UNIX

PASCAL, C

LAN, WAN mit Paketvermittlung (X.25) Netzarchitekturen der Hersteller

ISO - OSI – Architektur für Rechnernetze 2000 RISC-Workstations und PCs,

PC's mit modernen Betriebssystem und grafischer Benutzeroberfläche,

Client/Server Computing im Netz,

Parallelrechner für Spezialanwendungen, Audio voll integriert, aber noch nicht Vi- deo,

Java, C++, C als Programmiersprachen, das Internet als globales Netz, TCP/IP- Netze auch in den Unternehmen, 100 MBit/s in LANs und WANs (ATM, Gigabit Ethernet)

(23)

1.2 Grundstruktur des Computers

Aufbau eine Computersystems

B e d ie n u n g s - b ild sc h irm

Z e n tr a lein h e it

S te u e rw e rk

H a u p tsp e ich e r

R e c h e n w e rk

D a te x - o d e r F e r n s p re c h - le itu n g

D aten aus ga b e- gerä te

D is k e tte

D a ten sich tg e rä t

S p r a c h a u s g a b e

D ru c k e r

Z e ic h e n m a sc h in e (P lo tte r )

E x te rn e S p e ic h e r M a s se n sp eich er

M a g n e tb a n d - s p e ic h e r

M a g n e tp la tte n - sp eich er

D a teneinga b e- g eräte

D is k e tte S c a n n e r B ild s c h ir m (M a u s, T a sta tu r ) T e le fo n A u sw e is- le se r

(24)

Funktionsweise (1)

Kontrolleinh.

Arithm. Einheit Hauptspeicher

add 4,3,2 0 1 2 3 4

addiert

enthält Daten und Instruktionen

kontrolliert

Verarbeitung

(25)

Funktionsweise (2)

Kontrolleinh.

Arithm. Einheit Hauptspeicher

add 4,3,2 0 1 2 3 4

Instruktion auf Adresse 0:

add

Werte von Adressen

4

und

3

und schreibe Resultat auf Adresse

2

lese nächste Instruktion von Adresse

1 Abgekürzt:

add 4,3,2

(26)

Funktionsweise (3)

Kontrolleinheit

Arithm. Einheit Hauptspeicher

add 4,3,2 0 1 2 3 4

add 4,3,2

lese Instruktion von Adresse 0

(27)

Funktionsweise (4)

Kontrolleinheit

Arithm. Einheit Hauptspeicher

add 4,3,2 0 1 2

4

3

5

4

add 4,3,2

schreibe Wert von Adresse 4 in arithm. Einheit 5

(28)

Funktionsweise (5)

Kontrolleinheit

Arithm. Einheit Hauptspeicher

add 4,3,2 0 1 2

4

3

5

4

add 4,3,2

schreibe Wert von Adresse 3 auf arithm. Einheit

5 4

(29)

Funktionsweise (6)

Kontrolleinheit

Arithm. Einheit Hauptspeicher

add 4,3,2 0 1 2

4

3

5

4

add 4,3,2

addiere

5

+

4

= 9

(30)

Funktionsweise (7)

Kontrolleinheit

Arithm. Einheit Hauptspeicher

add 4,3,2 0 1

9

2

4

3

5

4

add 4,3,2

schreibe Resultat auf Adresse 2

5 4

= 9

(31)

Funktionsweise (8)

Kontrolleinheit

Arithm. Einheit Hauptspeicher

add 4,3,2 0

nächste Ins.

1

9

2

4

3

5

4

lese nächste Instruktion von Adresse 0+1 nächste Inst.

(32)

Software

Software ist eine Abfolge von Instruktionen, die von ei- nem Prozessor verarbeitet werden.

Beispiele für Instruktionen

y = 4 + 3; höhere Programmiersprache add 4,3,2 Assembler

01110101010 Maschinensprache

(33)

Hardware- und Software-Schnittstellen

Anwendungssoftware

Systemsoftware

Hardware

Malprogramme, Textverarbeitungs- programme,

Betriebssystem, Compiler,

CPU, Hauptspeicher, Festplatte, Tastatur, Maus, LAN,

(34)

Hardware- und Software-Beispiele

Anwendungssoftware

Editor

Web-Browser

Java-Programm (eigenes Programm) Systemsoftware

Betriebssystem

Compiler

Datenbank-Managementsystem

Netzwerksoftware (Treiber) Hardware

CPU

Hauptspeicher

Festplatte

Ethernet-Karte

Tastatur

Monitor

(35)

Vom Anwendungsproblem zum Programm

• Formuliere das Problem

• Skizziere die Lösung (z. B. Algorithmus in Pseudo- Code)

• Schreibe den Algorithmus in einer Programmierspra- che auf

• Kompiliere, binde und starte das Programm

(36)

Vom Algorithmus zum Maschinenprogramm

Algorithmus

Programm in a höherer Programmiersprache

Program in Machine Language

Ausführung des Programms Programm in

Maschinensprache

Programmierung

Übersetzung

Interpretation durch CPU

(37)

Kompilierung vs. Interpretation

Algorithmus

Source Code

Assembler

Object Code

ausführbares Programm

Programmausführung

Pseudo Code

Kodierung im Editor

Kompilierung

Binder + Libraries

Programm- aufruf

Interpreter- aufruf

Pseudo-Übersetzer

(38)

Typische Java-Umgebung

Editor

Compiler

Bytecode Verifier

Interpreter

Platte

Platte

Class Loader

Platte .

.. Hauptspeicher

.. . Hauptspeicher

.. . Hauptspeicher

Programm mit Editor erzeugt und auf

Platte gespeichert.

Compiler erzeugt

Bytecode, der auf Platte gespeichert wird.

Class loader:

Bytecode in Speicher.

stellt sicher, daß Bytecode und

nicht die Sicherheits- restriktionen von Java verletzt.

liest Bytecode und übersetzt ihn in Maschinensprache.

Referenzen

ÄHNLICHE DOKUMENTE

Das Programm muß die folgenden Kommandozeilenparameter erwarten: (1) Die zu verwendende Blockgröße N als Integerzahl, (2) Dateiname der Datei, die den Schlüssel S enthält (Format:

private static int[] daten= new int[1000]; // Datenfeld, das die // einzelnen Elemente der // Warteschlange enthaelt private static int anfang= 0; // Index auf den Anfang

Ein Implikant M einer Boole'schen Funktion f heißt Primimplikant von f, wenn er durch Resolution mit anderen Implikanten von f nicht weiter vereinfacht werden kann.. Wenn

Ein Implikant M einer Boole'schen Funktion f heißt Primimplikant von f, wenn er durch Resolution mit anderen Implikanten von f nicht weiter vereinfacht werden kann... Damit gibt es

[r]

○ Übungen und Test müssen positiv sein (je ab 50%). ○ 50% Übungen,

Institut für System Software (SSW) DI Eisl & DI Leopoldseder.. abgegebenen Übung wird eine Note ausgestellt2. ■ LVA Evaluierung im

abgegebenen Übung wird eine Note