66
University of Zurich Department of Informatics software evolution & architecture lab Emanuel Giger, Giacomo Ghezzi, Michael Würsch, and Harald Gall University of Zurich, Switzerland Vorkurs in Informatik Eine Einführung ins Informatikstudium an der Universität Zürich

Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

University of ZurichDepartment of Informatics software evolution & architecture lab

Emanuel Giger, Giacomo Ghezzi, Michael Würsch, and Harald Gall

University of Zurich, Switzerland

Vorkurs in InformatikEine Einführung ins Informatikstudium an der Universität Zürich

Page 2: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Zielsetzung

Sanfter Einstieg ins Studium der Informatik.

Kleinsten gemeinsamen Nenner schaffen.

Socializing.

Page 3: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Ablauf

1. Tag: Grundlagen

2. Tag: Software Engineering by Example

3. Tag: Einführung in die Programmierung

Page 4: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Ablauf: Tag 1

09:30 bis 12:00• Was ist ein Computer?• Wie ist ein Computer aufgebaut?• Das Rechnen mit Wahrheitswerten• Zahlensysteme• Wie bringe ich den Computer dazu, für mich

Probleme zu lösen?

13:00 bis 16:00• Eine Einführung in die Programmierung mit

Scratch

Page 5: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Ablauf: Tag 2

09:30 bis 12:00• Eine Einführung in das systematische Entwickeln

von Software (aka. Software Engineering)

• Beginn Gruppenarbeiten: Ein kleines eigenes Projekt mit Scratch

13:00 bis 16:00• Fortsetzung vom Morgen

Page 6: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Ablauf: Tag 3

09:30 bis 12:00• Kurzpräsentationen der Gruppenarbeiten vom

Vortag

• Eine Einführung in die Programmierung mit Groovy

13:00 bis 16:00• Fortsetzung vom Morgen

Page 7: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Das Institut für Informatik (ifi)

software evolution & architecture lab

http://www.ifi.uzh.ch

Page 8: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Wer sind wir?

software evolution & architecture lab

http://seal.ifi.uzh.ch/people

Page 9: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Was sind unsere Forschungsschwerpunkte?

• Software Evolution

• Software Wartung und Reengineering

• Software Architekturen

• Produkt-/Programmfamilien

• Verteilte Software Engineering Prozesse

• Methodologien und Paradigmen für Software Entwicklung

• Semantic Web Engineering & Recommender Systems

Page 10: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Programmieren in der Assessment-/Bachelorstufe

1. Semester: Einführung in die Programmierung (Informatik I, Java)

2. Semester: Algorithmen und Datenstrukturen (C++)

3. Semester: ??

4. Semester: Software Praktikum(aka. SoPra, Java)

Sopra Beispiele.

Page 11: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Was ist ein Computer?

Ein Computer ist ein elektronisches Gerät, das Daten (Informationen) speichert und verarbeitet. Ein Computer beinhaltet sowohl Hardware, wie auch Software. Hardware ist der physische Teil, sprich der “sichtbare”, während Software die unsichtbaren Anweisungen zur Steuerung der Hardware umfasst.

Programmieren heisst, dass man Anweisungen niederschreibt, die der Computer ausführen soll.

Page 12: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Wie ist ein Computer aufgebaut?

CPU

Bus

Ausgabe

EingabeHauptspeicher

Kommunikation

Sekundärspeicher

Dieser Aufbau wird auch “von Neumann Architektur” genannt. Das ausführbare Programm wird im Hauptspeicher gehalten. In früheren Computern war das Programm “hard-wired”, also fest in der Hardware verdrahtet.

Der Prozessor kommuniziert über den Bus mit den peripheren Geräten, z.B.: Festplatten-Controller teilt dem Prozessor über einen sog. Interrupt mit “Hey, ich habe Daten, die bereit sind gelesen zu werden”. Der Prozessor liest dann den Speicherbereich aus, der der Festplatte entspricht.

Page 13: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

(C)entral (P)rocessing (U)nit

Rechenwerk

Steuerwerk

=AND

OR

NOT

XNOR

NOR

AND

OR

NOT

XNOR

NOR

Der Prozessor (CPU) ist das ‘Hirn’ eines Computers. Er lädt Anweisungen aus dem Speicher und führt diese aus. Ein Prozessor besteht normalerweise aus zwei Komponenten: Steuerwerk und Rechenwerk. Das Steuerwerk koordiniert die Aktionen der anderen Komponenten. Das Rechenwerk (oder die arithmetische und logische Einheit) führt numerische Operationen, wie Addition, Subtraktion, Multiplikation, Division), und logische Operationen (Vergleiche) durch.

Page 14: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Bool’sche Algebra

wahr oder falsch?

Bsp: Eine Bestellung kann nur in Auftrag gegeben werden, wenn der Kunde bereits ein Kundenkonto besitzt und eine gültige Kreditkarte angegeben hat.

Bestellungok = KontoExistiert und Kreditkartegültig

In der Bool’schen Algebra - auch Bool’sche Logik genannt - geht es um Wahrheitswerte. Bool’sche Algebra definiert eine Menge von Operationen auf der Menge {0, 1} - oder auch {false, true}, {F, T}, etc.

Page 15: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Bool’sche Algebra: AND

A B

Lampeon = Aon ^ Bon

Der Ausdruck C = A ^ B ist als Ganzes genau dann wahr, wenn A wahr ist und B wahr ist.

Page 16: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Wahrheitstabelle: AND

AND T F

T

F

T F

F F

Page 17: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Bool’sche Algebra: OR

A

Lampeon = Aon v Bon

B

Der Ausdruck C = A v B ist als Ganzes genau dann wahr, wenn entweder A wahr ist oder B wahr ist, oder wenn A und B beide wahr sind. Achtung: Das bool’sche ‘Or’ entspricht nicht dem umgangsprachlichen ‘Oder’!

Page 18: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Wahrheitstabelle: OR

OR T F

T

F

T T

T F

Page 19: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Bool’sche Ausdrücke

Wann sind die folgenden Ausdrücke wahr?

(A v B) ^ B

(A v B) ^ ¬B

Damit (A v B) ^ B wahr ist, muss B = T sein (bei and müssen beide Operanden wahr sein, damit der ganze Ausdruck wahr ist), A kann entweder wahr oder falsch sein.

Damit (A v B) ^ ¬B wahr ist, müssen B = F und A = T sein.

Page 20: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Hauptspeicher

2000 01001010 Kodierung für Buchstabe ‘J’

2001 01100001 Kodierung für Buchstabe ‘a’

2002 01110110 Kodierung für Buchstabe ‘v’

2003 01100001 Kodierung für Buchstabe ‘a’

2004 00000011 Kodierung für Zahl 3

Hauptspeicher (oder Arbeitsspeicher/(R)andom (A)ccess (M)emory) speichert unterschiedliche Arten von Daten (Zeichenketten/Wörter, Buchstaben, Zahlen) in Form von Nullen und Einsen, sog. Bits ((B)inary Dig(its)). Der Speicher ist als eine Sequenz von Bytes organisiert, jedes Byte ist acht Bit lang und hat eine eindeutige Adresse.Als Programmierer müssen wir uns glücklicherweise keine Gedanken über das Enkodieren und Dekodieren von Daten machen; Dies wird vom System automatisch auf Grund eines speziellen Kodierungsschemas vorgenommen. Der Buchstabe ‘J’ entspricht z.B. dem Byte 01001010 nach dem weit verbreiteten ASCII Schema.Eine kleine Zahl wie ‘3’ passt gut in ein Byte. Wenn der Computer eine sehr grosse Zahl speichern muss, welche nicht in ein Byte passt, dann werden mehrere aufeinanderfolgende Bytes verwendet.

Page 21: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Zahlensysteme

Dezimal0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Binär0, 1

Hexadezimal0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A , B, C, D, E, F

Page 22: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Konversion: Dezimal nach Binär

Quotient → 61 30 15 7 3 1 0

2 123 2 61 2 30 2 15 2 7 2 3 2 1

122 60 30 14 6 2 0

Rest → 1 1 0 1 1 1 1

Leserichtung

Beispiel: 12310

Resultat: 11110112

123 solange durch 2 teilen, bis der Quotient 0 ist. Jeweils den Rest, also 0 oder 1, notieren. Leserichtung beachten!

Page 23: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Dezimal nach Binär

Aufgabe: 1710 nach Binär

Page 24: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Dezimal nach Binär

Quotient → 8 4 2 1 0

2 17 2 8 2 4 2 2 1

16 8 4 2 0

Rest → 1 0 0 0 1

Aufgabe: 1710 nach Binär

Page 25: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Dezimal nach Binär

Quotient → 8 4 2 1 0

2 17 2 8 2 4 2 2 1

16 8 4 2 0

Rest → 1 0 0 0 1

Aufgabe: 1710 nach Binär

Resultat: 100012

Page 26: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Konversion: Binär nach Dezimal

Beispiel: 11110112

Resultat: 12310

1 1 1 1 0 1 1

Sum: 1 x 26 1 x 25 1 x 24 1 x 23 0 x 22 1 x 21 1 x 20

Sum: 64 32 16 8 0 2 1 →123

Page 27: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Binär nach Dezimal

Aufgabe: 101012 nach Dezimal

Page 28: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Binär nach Dezimal

Aufgabe: 101012 nach Dezimal

1 0 1 0 1

Sum: 1 x 24 0 x 23 1 x 22 0 x 21 1 x 20

Sum: 16 0 4 0 1 → 21

Page 29: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Binär nach Dezimal

Aufgabe: 101012 nach Dezimal

Resultat: 2110

1 0 1 0 1

Sum: 1 x 24 0 x 23 1 x 22 0 x 21 1 x 20

Sum: 16 0 4 0 1 → 21

Page 30: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Addieren von Binärzahlen

1 1 1 1 0 1 1

+ 1 0 1 1 0 1 11 1 1 1 1 1

1 1 0 1 0 1 1 0

Jeweils gleiche Stellen (hinten beginnend) addieren. Für gerade Zahlen 1, für ungerade Zahlen 1, notieren und allfälligen Übertrag schreiben.

Obenstehendes Beispiel in Dezimalzahlen: 123 + 91 = 214

Zusatzfrage: Wie kann ich negative Zahlen im Binärsystem repräsentieren? Eine mögliche Antwort: Mit einem Vorzeichenbit. Vorderste Ziffer gibt an, ob die Zahl positiv (1) oder negativ (0) ist. Problem: Es kann ein Überlauf bei z.B. der Addition entstehen. Kann man ganz einfach z.B. in Groovy ausprobieren:

def a = Integer.MAX_VALUEdef b = a + 1

println aprintln b

Ausgabe:2147483647-2147483648

Page 31: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Addieren von Binärzahlen

1 1 1 1 0 1 1

+ 1 0 1 1 0 1 11 1 1 1 1 1

1 1 0 1 0 1 1 0

Kann zu einem Überlauf führen!

Jeweils gleiche Stellen (hinten beginnend) addieren. Für gerade Zahlen 1, für ungerade Zahlen 1, notieren und allfälligen Übertrag schreiben.

Obenstehendes Beispiel in Dezimalzahlen: 123 + 91 = 214

Zusatzfrage: Wie kann ich negative Zahlen im Binärsystem repräsentieren? Eine mögliche Antwort: Mit einem Vorzeichenbit. Vorderste Ziffer gibt an, ob die Zahl positiv (1) oder negativ (0) ist. Problem: Es kann ein Überlauf bei z.B. der Addition entstehen. Kann man ganz einfach z.B. in Groovy ausprobieren:

def a = Integer.MAX_VALUEdef b = a + 1

println aprintln b

Ausgabe:2147483647-2147483648

Page 32: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Addition

1 0 1 1

+ 1 0 1 1

Page 33: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Addition

Page 34: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Addition

1 0 1 1

+ 1 0 1 11 1 1

1 0 1 1 0

Page 35: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Sekundärspeicher

Der Inhalt des Hauptspeichers geht verloren, wenn die Stromzufuhr des Computers unterbrochen wird. Er ist sog. volatil, dafür aber deutlich schneller als Sekundärspeicher. Sekundärspeichermedien umfassen Festplatten, USB-Sticks, CDs, Disketten, Bänder, etc.. Programme und Daten werden somit auf Sekundärspeichermedien dauerhaft gespeichert, aber jedes Mal in den schnellen Primärspeicher geladen, wenn sie verarbeiten werden sollen.

Page 36: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Software

Programme (oder Software) sind Instruktionen an den Computer, oder anders formuliert: Ihr teilt dem Computer mittels Programmen mit, was er für Euch erledigen soll.

Page 37: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Gängige Vorurteile/Ausreden

“Computer sind intelligent.”

“Der Computer ist abgestürzt.”

“Der Computer erlaubt das nicht.”

“Der Computer hat die Datei verloren/kaputt gemacht.”

Computer machen keine Fehler (in der Tat kann Hardware natürlich fehlerhaft sein, aber das ist sehr viel seltener als Programm-Fehler). Programme machen auch keine Fehler. Programmierer machen Fehler!

Page 38: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Computer...

...sind universelle Maschinen. Sie führen das Programm aus, das man ihnen eingibt.

Die guten Neuigkeiten:

1. Der Computer wird genau das tun, was das Programm ihm vorschreibt.

2. Er wird es sehr schnell tun.

Die schlechten Neuigkeiten:

1. Der Computer wird genau das tun, was das Programm ihm vorschreibt.

2. Er wird es sehr schnell tun.

Page 39: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Software schreiben ist schwierig

Programme stürzen ab

Programme, die nicht abstürzen, funktionieren aber auch nicht unbedingt richtig

Programmierer sind verantwortlich für das korrekte Funktionieren ihrer Programme

Page 40: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Beispiel: Ariane 5

4. Juni 1996: Millionen Dollar Schaden wegen einfachem Programmierfehler:

64-bit float -> 32-bit int

64-bit bedeutet: 64 Stellen im Binärsystem, um eine Gleitkommazahl darzustellen. Wenn man eine 64-bit Zahl in eine 32-bit Zahl konvertiert, dann werden einfach Stellen abgeschnitten (sprich eine ganz andere Zahl kommt heraus).

Page 41: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Weitere Beispiele

28. July, 1962 - Mariner I space probe.Eine mit Bleistift niedergeschriebene Formel wird falsch abgeschrieben. Resultat: Die Sonde muss gesprengt werden.

1982 - Soviet gas pipeline.Die CIA lies absichtlich einen Fehler in eine Steuerungssoftware einbauen. Resultat: Die grösste nicht-nukleare Explosion in der Geschichte der Menschheit.

1985-1987 - Therac-25 medical acceleratorGerät zur Strahlentherapie dessen Betriebssystem von einem unerfahrenen Programmierer zusammengebastelt worden war. Resultat: Mindestens 5 Patienten sterben, mehrere werden schwer verletzt.

1982 erwarben die Sowjets, im Rahmen ihrer Bestrebungen sensitive U.S. Technology zu stehlen oder verdeckt zu kaufen, ein Kanadisches Computersystem als Steuerung für eine trans-sibirische Naturgaspipeline. In dieses hatten Mitarbeiter der CIA vorher einen Fehler eingebaut, welcher - nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen sollte. Die Explosion war sogar vom Weltraum aus zu beobachten.

1982 wurde Therac-25, ein Nachfolger der erfolgreichen Modelle Therac-6 und -20, gebaut. Der Beschleuniger konnte entweder durch eine zwischengeschaltete Wolfram-Platte Röntgenstrahlen oder direkt künstliche Beta-Strahlung zu Therapiezwecken einsetzen. Im direkten Modus wurde eine deutlich geringere Strahlenintensität verwendet. Im Gegensatz zu den Vorgängermodellen wurden die mechanischen Sicherheitssperren durch eine Softwarelösung ersetzt. Software schien viel verlässlicher, da sie keinen Abnützungserscheinungen unterliegt. Was die Ingenieure nicht wussten, war dass ein Programmierer ohne formale Ausbildung das zu Grunde liegende Betriebssystem zusammengeschustert hatte. Ein subtiler Fehler - eine sog. Race Condition - führte dazu, dass jemand, der schnell tippen konnte, den hoch-energetischen Modus aktivieren konnte, ohne dass die Wolfram-Platte bereits in Position war.

Page 42: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Software schreiben macht Spass

Ein Programmierer entwirft und baut eigene Maschinen

Er kann kreativ sein und seine Vorstellungskraft gebrauchen

Es ist faszinierend, wenn ein selbstgeschriebenes Programm läuft und vielleicht sogar seinen Benutzern den Alltag erleichtert

Page 43: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Wie bringe ich den Computer dazu, das zu tun, was ich will?

So...?

Page 44: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

...eher nicht.

Page 45: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Maschinensprache vs. Assembler

Addieren in Maschinensprache:

1101101010011010

Addieren in Assembler:

ADDF3 R1, R2, R3

Ass

embl

er

ADDF3

R1,

R2,

R3

Mas

chin

ensp

rach

e

1101101010011010

Ass

embl

er

Die Sprache in der Computer Instruktionen entgegennimmt, ist die sog. Maschinensprache - eine Anzahl primitiver Anweisungen, die in jeden Computer eingebaut sind. Die Anweisungen sind in Binärkode gehalten. Assembler ist eine sog. low-level Programmiersprache, die ins Leben gerufen wurde, um das Programmieren zu vereinfachen. Da Computer Assembler nicht direkt verstehen können, müssen die Assembler-Befehle vor der Ausführung noch in Maschinencode übersetzt werden.

Page 46: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Höhere Programmiersprachen

• Java• COBOL (COmmon Business Oriented Language)• FORTRAN (FORmula TRANslation)• BASIC (Beginner All-purpose Symbolic Instructional Code)• Pascal (benannt nach Blaise Pascal)• Ada (benannt nach Ada Lovelace)• C• Visual Basic• Delphi• C++• ...

Code-Beispiele:float area = 5 * 5 * 3.1415;new Window(“This is the title”).setVisible(true);

Von Assembler wurde weiter abstrahiert, damit man Englischen Wörtern und Phrasen ähnliche Befehle verwenden kann, um ein Programm zu gestalten. Das Resultat waren Sprachen, wie Cobol, C++, etc.

Page 47: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Der Kompiliervorgang

CompilerSource File Object File

Linker

Executable File

Programmcode wird vom Compiler in Objektcode umgewandelt. Der Linker fügt dem Objektcode weitere Funktionalität z.B. aus sogenannten Klassenbibliotheken hinzu (z.B. DLLs in C++/Windows: Dynamic-link library).

Page 48: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Virtuelle Maschinen

Bytecode

VM

AnyComputer

Compiler

Source File

Object File

‘write once - run everywhere‘-Idee. Die Funktionalität der Klassenbibliothek wird durch die VM bereitgestellt. Der Linker-Schritt entfällt somit. Der VM Hersteller “versteckt” die Spezialitäten eines jeden Computers (Linux, OSX, Win, Nokia OS,...) hinter der VM. Die Bytecode-Programme “sehen” in der VM immer den gleichen Typ Computer.

Page 49: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Das Betriebssystem

• Controlling und Monitoring von Systemaktivitäten

• Allokation und Zuweisung von Systemressourcen

• Scheduling von Prozessen

Applikation

Betriebssystem

Hardware

Page 50: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Algorithmisches Denken

Vom Rezept zum ausführbaren Computerprogramm

Ein Algorithmus ist eine genau definierte Berechnungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen und wird durch eine endliche Menge von Regeln definiert, die nacheinander angewendet und oft nach bestimmten Bedingungen wiederholt werden.

Page 51: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Der Risotto-Algorithmus

1 dl Weinca. 8 dl Rinderbouillon

1x kleine Zwiebel1-2 Knoblauchzehe(n)

2 Esslöffel Olivenöl150 g Rundkorn Reis50 g Parmesan

eine Messerspitze Safranfäden

Zutaten für 2 Personen: 1. Das Olivenöl erhitzen, die Zwiebel und den Knoblauch fein würfeln und darin anschwitzen.

2. Den Reis beigeben und 3-4 Minuten unter Rühren glasig werden lassen.

3. Mit dem Wein ablöschen und solange köcheln lassen, bis die Flüssigkeit verdunstet ist.

4. Den Safran beigeben.

5. Die Rinderbouillon aufkochen und eine Kelle voll zum Reis hinzugeben und verdunsten lassen.

6. Diesen Vorgang solange wiederholen, bis sämtliche Bouillon aufgebraucht ist.

7. Den Parmesan unterrühren und heiss servieren.

Page 52: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Weitere Algorithmen im Alltag

Prozess Ausführender Algorithmus typische Anweisung

Kuchen backen Bäcker Rezept nimm 1/2 kg Mehl...

Spielen einer Klaviersonate

Pianist Partitur ♫♬♩♪

Bedienung eines Handys Anrufer Bedienungsanleitung drücken sie die # Taste

Bau eines Radios Bastler Schaltplan und Montageanleitung

verbinde Transistor T1 mit T5

Page 53: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Der Euklidische Algorithmus

Der Euklidische Algorithmus (um 300 v. Chr. beschrieben dient zur Ermittlung des grössten gemeinsamen Teilers (ggT) zweier natürlicher Zahlen A und B.

1. Sei A die grössere der beiden Zahlen A und B (entsprechend vertauschen, falls dem noch nicht so ist)

2. Setze A = A - B

3. Wenn A und B ungleich sind, dann fahre fort mit Schritt 1. Wenn sie gleich sind, dann beende den Algorithmus: Diese Zahl ist der ggT

Page 54: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Beispiel: ggT von 14 und 8

Schritt A B A - B

1. 14 8 6

2. 8 6 2

3. 6 2 4

4. 4 2 2

5. 2 2 gleich

Page 55: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Nassi-Shneiderman Diagramme

Statement

Decision

Yes No

While (condition)

Until (condition)

Graphische Notation zur Beschreibung von Algorithmen. Statements sind einzelne, atomare (nicht zerlegbare) Anweisungen an den Computer. Decisions (Verzweigungen) bestehen aus einer Condition (Bedingungen) und einem then ([wenn ...] dann ...) und else (...sonst) Teil. Loops (Schleifen) wiederholen bestimmte Statements oder Decisions. Decisions und Loops kann man in einander verschachteln.

Page 56: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Der Risotto-Algorithmus als NSD

1 dl Weinca. 8 dl Rinderbouillon

1x kleine Zwiebel1-2 Knoblauchzehe(n)

2 Esslöffel Olivenöl150 g Rundkorn Reis50 g Parmesan

eine Messerspitze Safranfäden

Zutaten für 2 Personen: 1. Das Olivenöl erhitzen, die Zwiebel und den Knoblauch fein würfeln und darin anschwitzen.

2. Den Reis beigeben und 3-4 Minuten unter Rühren glasig werden lassen.

3. Mit dem Wein ablöschen und solange köcheln lassen, bis die Flüssigkeit verdunstet ist.

4. Den Safran beigeben.

5. Die Rinderbouillon aufkochen und eine Kelle voll zum Reis hinzugeben und verdunsten lassen.

6. Diesen Vorgang solange wiederholen, bis sämtliche Bouillon aufgebraucht ist.

7. Den Parmesan unterrühren und heiss servieren.

Page 57: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Lösung: Der Risotto-Algorithmus als NSD

Zwiebel und Knoblauch schneiden

Reis, Zwiebel und Knoblauch in heissem Olivenöl andünsten

Mit Wein ablöschen

Until (Bouillon verbraucht)

Genug Flüssigkeit?

Yes No

Bouillon nachgiessen

Parmesan hinzufügen

Page 58: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Aufgabe: Der Euklidische Algorithmus als NSD

Der Euklidische Algorithmus (um 300 v. Chr. beschrieben dient zur Ermittlung des grössten gemeinsamen Teilers (ggT) zweier natürlicher Zahlen A und B.

1. Sei A die grössere der beiden Zahlen A und B (entsprechend vertauschen, falls dem noch nicht so ist)

2. Setze A = A - B

3. Wenn A und B ungleich sind, dann fahre fort mit Schritt 1. Wenn sie gleich sind, dann beende den Algorithmus: Diese Zahl ist der ggT

Page 59: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

While (a > 0 and b > 0)

a > b?

Yes No

a = a - b b = b - a

b == 0?

Yes No

Print a Print b

Lösung: Der Euklidische Algorithmus als NSD

Page 60: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

http://info.scratch.mit.edu/Support/Reference_Guide_1.4

Page 61: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Algorithmen in Scratch: Statements

Statement

Page 62: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Algorithmen in Scratch: Decisions

Decision

Yes No

a b

Page 63: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Algorithmen in Scratch: Loops

While (condition)

Until (condition)

Page 64: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

2000 01001010 Kodierung für Buchstabe ‘J’2001 01100001 Kodierung für Buchstabe ‘a’2002 01110110 Kodierung für Buchstabe ‘v’2003 01100001 Kodierung für Buchstabe ‘a’2004 00000011 Kodierung für Zahl 3

Variablen in einem Programm

jString

myNumber

var:

var:

Variablen sind Behälter (oder Wegweiser?) zu bestimmten Stellen im Speicher, an denen Informationen gespeichert sind, die man gerne wiederverwenden möchte.

Page 65: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen

Variablen in Scratch

Page 66: Vorkurs in Informatik - UZH IfI00000000-5b09-5279... · Konversion: Dezimal nach Binär ... nach Ablauf einer bestimmten Zeit - zu einen viel zu hohen Druck in der Pipeline führen