Informatik für Nebenfächler

Größe: px
Ab Seite anzeigen:

Download "Informatik für Nebenfächler"

Transkript

1 Informatik für Nebenfächler Priv.-Doz. Dr. Frank Huch Institut für Informatik, Technische Fakultät, Christian-Albrechts-Universität zu Kiel. Skript zur Vorlesung im Wintersemester 2010/11.

2 Stand vom: 7. Februar 2011 Erstellt durch Jana Bork. Anmerkungen und Korrekturen bitte an Mit freundlichem Dank an Torsten Krause für die Titelseite.

3 Inhaltsverzeichnis 1 Einleitung 4 2 Technische Grundlagen der Informatik Rechnerarchitektur Zahlensysteme und binäre Arithmetik Umwandlung von Dezimalzahlen in Binärzahlen Rechnen mit Binärzahlen Einerkomplement/Stellenkomplement Zweierkomplement Multiplikation von Binärzahlen Brüche (rationale Zahlen) Gleitpunktzahlen (floating point numbers) Grundbegriffe Programmierung Ausdrücke (Erweiterte) Backus-Naur-Form (BNF und EBNF) Termdarstellungen Anweisungen while-schleife: Der Euklidische Algorithmus for-schleife Objektorientierte Programmierung Zeichenketten Abstraktion durch Prozeduren Rekursion Reguläre Ausdrücke Backtracking Objekte und ihre Identität Datenstrukturen und Algorithmen Lese- und Schreibzugriff auf Dateiinhalten Lese- und Schreibzugriff auf Dateiinhalten Internet und HTML Sortieren Minsort Analyse von Algorithmen Abstraktion und Modularisierung

4 1 Einleitung Die Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere die automatische Verarbeitung mit Rechenanlagen (Computer). Ursprünge Mathematik Berechnen von Folgen, Lösung von Gleichungssystemen Elektrotechnik Computer als Weiterentwicklung von Schaltkreisen Nachrichtentechnik Datenübertragung im Rechner oder im www Disziplinen der Informatik Theoretische Informatik Grundlagen, z.b. Komplexitätstheorie, Berechenbarkeit, Graphentheorie Technische Informatik Hardwarenahe Aspekte, z.b. Mikroprozessortechnik, Rechnerarchitekturen, Netzwerksysteme Praktische Informatik Lösen von konkreten Problemen durch Algorithmen/Programme hierbei wichtige Aspekte: Effizienz, Softwaretechnik, Programmiersprachen, Datenbanken 4

5 2 Technische Grundlagen der Informatik Erste Computer wurden von Konrad Zuse 1937 konstruiert: Z1 - mechanisches Rechenwerk - Kontrolleinheit, Speicher, Mikrobefehle, Fließkommaberechnung Erster elektronischer Rechner 1941: Z3 - Trennung von Befehls- und Datenspeicher - Ein- / Ausgabepult Parallel fanden Entwicklungen in Großbritannien und den USA statt. Wichtigster Akteur hierbei: John von Neumann der die prinzipiell heute noch verwendete Von- Neumann-Architektur von Computern entwarf. Zu Beginn der 60er Jahre lösten Transistoren die Röhrentechnik ab, wodurch die Leistungsfähigkeit extrem erhöht wurde. Die Mikroprozessortechnik auf Siliziumbasis ermöglichte dann in den 70er Jahren eine zunehmende Miniaturisierung der Computer. Heutzutage werden Prozessoren nicht nur in herkömmlichen PCs oder Großrechnern eingesetzt, sondern zunehmend als integrierte Schaltkreise in z.b. Waschmaschinen, Aufzügen oder Autos (mehr als 100 Prozessoren möglich), sogenannte eingebettete Systeme. 2.1 Rechnerarchitektur Die meisten Computer basieren auf der Von-Neumann-Architektur, welche in den 40er Jahren entwickelt wurde. Komponenten: - Zentralprozessor (CPU) Steuerwerk: Abarbeitung der Maschinenbefehle Rechenwerk (ALU - Arithmetic Logical Unit) Register: Speichern einzelner Werte - Arbeitsspeicher (beliebige Daten, die unterschiedlich interpretiert werden können) auszuführende Programme in Maschinencode Festwertspeicher (ROM) mit wichtigen Basisroutinen Datenspeicher zur Speicherung von Datenstrukturen einzelner Programme - Bus (Verbindung zwischen Speicher und Prozessor) Datenbus zum Abgleich/Rechnen zwischen Registern/Datenspeicher 5

6 2 Technische Grundlagen der Informatik Adressbus zum Finden eines Wertes im Speicher Steuerbus zum Finden des nächsten auszuführenden Befehls Genereller Aufbau: Weitere Komponenten: Tastatur, Grafik- und Soundkarte, externe Speichermedien In der Regel auch über Bussysteme an Hauptsystem angeschlossen, so dass ebenfalls Werte adressiert und ausgelesen werden können. In der Regel aber nur Adress- und Datenbus, kein Steuerbus. Beachte aber, dass das Bussystem zu Massenspeichermedien in der Regel um ein Vielfaches langsamer ist, als zum Speicher. Zugriff geregelt über das Betriebssystem, so dass unterschiedliche Komponenten gleich angesprochen werden können (Treiber). Grafik- und Soundkarten sind eigentlich wieder eigene Computer z.t. mit Prozessor und Speicher, oder auch in CPU/Mainboard integriert. Weitere Aspekte: - Taktfrequenz (z.b. 200 MHz) gibt an, wie viele Operationen ein Computer pro Sekunde ausführen kann. Allerdings benötigen viele Maschinenbefehle mehrere Schritte. Zur Zeit wenig Verbesserungen wegen physikalischen Grenzen. Moores Law: Verdopplung der Rechenleistung alle Jahre (gilt seit 1940!) Heute Performancesteigerung durch mehrere Prozessorkerne 6

7 2.2 Zahlensysteme und binäre Arithmetik - Cache: Schneller in den Prozessor integrierter Speicher, der Teile des Hauptspeichers spiegelt. Ermöglicht nicht immer Beschleunigung (Betriebssystem, Anwendung) - Multitasking: Mehrere Programme können gleichzeitig auf einem Computer ausgeführt werden. Verteilung der Prozessorzeit durch Scheduler auf BS-Ebene sehr wichtig bei graphischen Benutzeroberflächen - Multicore-Architektur: Mehrere Prozessoren (meist 2 oder 4) können über Bus auf Speicher zugreifen. Ausnutzung für eine Anwendung schwer parallele Algorithmen 2.2 Zahlensysteme und binäre Arithmetik In Digitalrechnern werden eigentlich nur zwei Werte (Ziffern) kodiert: 0 = kein Strom 1 = Strom } Dieser Wert wird auch Bit (binary digit) genannt. Aufbauend hierauf können kompliziertere Werte, wie allgemeine Zahlen, Zeichen oder auch Prozessorbefehle kodiert werden. Das Dezimalsystem (dekadisches Ziffernsystem, natürliche Zahlen): Zahlen des Dezimalsystems können dargestellt werden als n = z k 10 k z z mit Ziffern z i {0, 1,...,9} für 0 i k Beispiel: 1278 = Um eine eindeutige Darstellung zu haben, lässt man führende Nullen in der Regel weg (z k 0) außer z 0 = 0. Betrachtet man nur die Ziffern 0 und 1, so kann man ganz analog Zahlen des binären Ziffernsystems oder Binärsystems definieren: Binärsystem n = z k 2 k z z mit Ziffern z i {0, 1} für 0 i k Beispiel: 330 = ( = = 330) 7

8 2 Technische Grundlagen der Informatik Binärzahlen können natürlich auch kompakt wie Dezimalzahlen notiert werden: 330 dez = bin Um Verwechslungen auszuschließen. Bei Dezimalzahlen meist weggelassen. Neben dem Dezimal- und dem Binärsystem können beliebige weitere n-adische Ziffernsysteme definiert werden. Wichtig ist noch das Hexadezimalsystem (16-adisches Ziffernsystem): Hexadezimalsystem Als Ziffern verwendet man in der Regel {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }. Beispiel: 1278 dez = = 4FE hex ( = = = 1278) NR: 1278 : 16 = 79 R14 = E 79 : 16 = 4 R15 = F 4 : 16 = 0 R 4 = 4 Warum ist dieses Zahlensystem wichtig? Da 16 eine Zweierpotenz ist und damit ein Vielfaches von 2, können Ziffernblöcke des Binärsystems eindeutig auf Hexadezimalziffern abgebildet werden: Binär Hexadezimal Binär Hexadezimal A B C D E F Somit können Binärzahlen sehr einfach in Hexadezimalzahlen umgewandelt werden und umgekehrt. Beispiel: 330 dez = }{{} }{{} 1010 }{{} bin = 14A hex 1 4 A 1278 dez = 4FE hex = }{{} }{{} 1110 }{{} 4 F E bin 8

9 2.2 Zahlensysteme und binäre Arithmetik Umwandlung von Dezimalzahlen in Binärzahlen Beispiel: Also 276 dez = }{{} }{{} bin = 8A hex. 8 A 276 = = = = = 4 = 2 2 Unschön: Man benötigt alle 2er-Potenzen und muss diese schrittweise (beginnend mit der grössten passenden) abziehen. Alternative: Horner-Schema Horner-Schema n = z k 2 k z z = (z k 2 k z ) 2 + z 0 = ((z k 2 k z ) 2 + z 1 ) 2 + z 0 =... = ((...((z k 2 + z k 1 ) 2 + z k 2 ) ) + z 2 ) 2 + z 1 ) 2 + z 0 Als Beispiel können wir schreiben: 330 dez = ((...( ) 2 + 1) 2 + 0) 2 + 0) 2 + 1) 2 + 1) 2 + 1) D.h. um diese 1 zu erhalten müssen wir umgekehrt 8 mal durch 2 dividieren, Der Rest ergibt jeweils die 1 oder die : 2 = 165 R0 165 : 2 = 82 R1 82 : 2 = 41 R0 41 : 2 = 20 R1 20 : 2 = 10 R0 10 : 2 = 5 R0 5 : 2 = 2 R1 2 : 2 = 1 R0 1 : 2 = 0 R1 höchstes Bit Entsprechend können wir auch ins Hexadezimalsystem umrechnen: 330 : 16 = 20 R10 20 : 16 = 1 R4 1 : 16 = 0 R1 Also 14A hex Dieser Algorithmus läßt sich für beliebige n-adische Zahlensysteme verallgemeinern. 9

10 2 Technische Grundlagen der Informatik Rechnen mit Binärzahlen Das Prinzip ist identisch mit dem im Dezimalsystem: Addition: = = = = 10(oder 0 mit 1 Übertrag) Bem.: Für die Stelle entspricht + also dem booleschen XOR und der Übertrag dem AND Dann: 1278 dez bin dez bin 1608 dez }{{} }{{} 1000 }{{} bin hex Probe: 1608 : 16 = 100 R8 100 : 16 = 6 R4 6 : 16 = 0 R6 = 648 hex Subtraktion: 0 0 = = 1 Übertrag = = 0 Dann: 1278 dez bin 330 dez bin 948 dez }{{} }{{} 0100 }{{} bin 3 4 hex = 3B4 hex 11=B Probe: 948 : 16 = 59 R4 59 : 16 = 3 R11 3 : 16 = 0 R3 = 3B4 hex ab hier nur 8 ECTS Das hier vorgestellte Verfahren zur Addition/Subtraktion durchläuft beide Zahlen schrittweise von hinten nach vorne. Im Prozessor wird dies parallelisiert. Hierzu in der Regel Verwendung von Zahlen fester Stelligkeit (früher 8 Bit = 1 Byte, heute eher 16 32, 64 Bit) (Datenwort). =1DOUBLE WORD =1Quadrupelword 10 =1WORD,

11 2.2 Zahlensysteme und binäre Arithmetik Mit 8 Bit können die Zahlen von 0 dez bis 255 dez kodiert werden: 0 dez = bin 128 dez = bin 255 dez = bin Wie können dann auch negative Zahlen dargestellt werden? Erste Idee: verwende erstes Bit als Vorzeichen, also 32 dez = bin 48 dez = bin } bin = 80 dez Dann können negative Zahlen aber leider nicht so einfach addiert werden. Betrachte eine einfache Aufgabe (hier Datenwörter mit 4 Bit): 1 + ( 2) = ( 1) also 0001 bin bin 1011 bin = 3 dez 1 + ( 1) = 0 also 0001 bin bin 1010 bin = 2 dez Es wäre also besser, wenn die negativen Zahlen anders herum sortiert wären: Einerkomplement/Stellenkomplement Also: 7 = = = = = = = = 1111? Beachte: Negative Zahlen durch Inverses der Positiven. kleinste negative Zahl ( 7) = 1000 und größte negative Zahl ( 1) = ( 7) = ( 6) also = 6 dez 1 + ( 2) = ( 1) also = 1 dez 6 + ( 2) = 4 also shift around carry

12 2 Technische Grundlagen der Informatik Beachte: Es kann auch ein Übertrag auftreten Übung 1 + ( 1) = ( 1) aber = 0 Aber nicht D.h. wir haben zwei Darstellungen für die Null, was unschön ist. Lösung: Verschiebe negative Zahlen um eins (Zweierkomplement) Zweierkomplement 7 = = = = = = = = 0000 Beachte: hierdurch wird die 1000 frei und kann als 8 interpretiert werden. Dann: 1 + ( 7) = ( 6) also = 6 dez 1 + ( 1) = 0 also = 0 dez Übertrag wird verworfen Somit kann bei Verwendung des Zweierkomplements die Subtraktion auf die Addition zurückgeführt werden. Beachte: bei Bereichsüberschreitung gibt es einen Überlauf: 6 dez + 6 dez = 12 dez, was mit 4 Bit mit Vorzeichen nicht darstellbar ist: Negieren einer Zahl im Zweierkomplement: = 4 dez Einerkomplement (Inverses) + 1! Gilt in beide Richtungen: Allgemein gilt: mit n Stellen können mit dem Zahlen 2 n 1 bis 2 n 1 1 dargestellt werden. { + + Beachte, dass dieses Verfahren auch in anderen Zahlensystemen funktioniert: Beispiel: 493 hat das Stellenkomplement = 506 (Datenwort von 3 Dezimalziffern). Das Zehnerkomplement ergibt sich dann als =

13 2.2 Zahlensysteme und binäre Arithmetik Aufgabe: = ( 493) = 108 Rechnung mit Zehnerkomplement: Beachte: , also negativ. Das Ergebnis 108 hat das Stellenkomplement = 891. Also im Zehnerkomplement = 892 Oder anders herum: = 108, also 892 = 108. Übung: Umwandlung Zweierkomplement/Zehnerkomplement in wirkliche negative Zahl. Stellenkomplement bis hier nur 8 ECTS Multiplikation von Binärzahlen Beispiel: Implementierbar durch schrittweises Addieren und Shiften ( = Verdoppeln). Im Beispiel: shift shift shift Division auch einfach möglich: 13

14 2 Technische Grundlagen der Informatik : = Bem: Das kleine 1 1 ist hier sehr übersichtlich: 0 0 = = = = 1 ab hier nur 8 ECTS Brüche (rationale Zahlen) Häufig verwendet man zum Rechnen Dezimalbrüche (z.b. 1, 56 oder 2, 3462). Diese können nach dem gleichen Schema wie bisher in andere Zahlensysteme übertragen werden. Beispiel: 0, 6875 dez = = 0, 1011 bin Berechnung mit Horner-Schema: 0, = 1, ,375 2 = 0,75 0 0,75 2 = 1,5 1 0,5 2 = 1,0 1 Bem: 0, = 11 dez 11 dez = B (kein Rest!) = ( ) : = (( ) : ) = (((1 2 4 ) : ) : ) : , 01 = = (1 2 1 ) : , 011 = = ( ) : = ((1 2 1 ) : ) :

15 2.2 Zahlensysteme und binäre Arithmetik Nachteil dieser Darstellung: 0,2 dez 2 = 0, 4 0 0, 4 2 = 0, 8 0 0, 8 2 = 1, 6 1 0, 6 2 = 1, 2 1 0,2 0, 2 dez = 0, 0011 D.h. endliche Dezimalbrüche werden als Binärbruch periodisch. Weiteres Problem, wie kann man Binärbrüche in feste Datenwortgröße packen? Lösung: Gleitpunktzahlen (floating point numbers) Gleitpunktzahlen (floating point numbers) Idee: Man beschränkt sich auf Zahlen einer bestimmten Genauigkeit, d.h. unterscheidbarer Stellen. Beispiel: Genauigkeit vier Stellen: , , Beachte: alle Zahlen könnten auch Zahlen einer größeren Genauigkeit sein. Für eine klarere Darstellung der Genauigkeit schreibt man besser: oder 0, , , , Analog für Binärzahlen (Float, 4 Byte) Lichtgeschwindigkeit e = 2, m/s = 2, e8m/s Beachte: Durch Rechnen mit Genauigkeit können Rundungsfehler auftreten 15

16 2 Technische Grundlagen der Informatik Beispiel: = = Somit Floats niemals auf Gleichheit, Ungleichheit testen! Wofür werden im Rechner alles Zahlen verwendet? - Zum Rechnen: positive Zahlen fester Stelligkeit ganze Zahlen fester Stelligkeit (Zweierkomplement) Floating Point Zahlen (als Näherung für rationale Zahlen) - Als Adressen: positive Zahlen Speicherplätze sind durchnummeriert von bis maximal Bei 32 Bit-Architekturen also maximal Speicherzellen 4, 3 Milliarden Bytes = 4 GigaByte (GB) - Als Maschinencode: z.b. Sprung- oder Ladebefehle. bis hier nur 8 ECTS Grundbegriffe Algorithmus ist die Beschreibung einer Vorgehensweise zur Lösung von Problemen. Beispiele Kochrezept, Berechnung der Quadratwurzel, Dekodierung von DNA-Sequenzen, Berechnung von π, Verwaltungsvorschriften Beachte dabei: - in der Regel löst ein Algorithmus eine Klasse von Problemen (d.h. er ist parameterisiert), z.b. Quadratwurzel für beliebige Zahlen, Verwaltungsvorschrift für Hausbau. Parameter legt konkretes Problem der Klasse fest. - die Vorgehensweise kann unterschiedlich detailliert formuliert werden, z.b. beim Kochrezept: Eiweiß steif schlagen oder Schüssel holen, Eiweiß und Eigelb trennen, Schneebesen nehmen,... Es ist eine Kunst den richtigen Grad an Genauigkeit zu finden. Wichtig hierbei: von Details abstrahieren. Abstraktion ist eines der wichtigsten Konzepte der Informatik. Beispiel Zählen von Weizenkörnern (alle gleich schwer), Apothekerwaage (ohne Gewichte), Papier, Bleistift Algorithmus - Teile Körner in zwei gleichschwere Haufen - Ist dies nicht möglich lege ein Korn zur Seite. Danach kannst Du sie aufteilen. { 1, falls du ein Korn zur Seite gelegt hast - Beschrifte den Zettel nach und nach wie folgt: 0, sonst 16

17 2.2 Zahlensysteme und binäre Arithmetik - Wenn kein Korn mehr übrig ist, drehe die Zahl auf dem Zettel um und lies das Ergebnis als Binärzahl ab. Ggf. kannst du diese Zahl mit Horner-Schema in eine Dezimalzahl wandeln - sonst verfahre mit einem der beiden Haufen wie zuvor. Beispiel 13 : 2 = 6 R 1 6 : 2 = 3 R 0 3 : 2 = 1 R 1 1 : 2 = 0 R b = 13d Algorithmen werden in der Informatik häufig mit Hilfe von Programmiersprachen programmiert, so dass sie auf Rechnern/Computern ausgeführt werden können. Hierbei ist zunächst keine Abstraktion mehr möglich. Ein Programm muss so konkret sein, dass ein Prozessor (winziger Befehlssatz) den Algorithmus ausführen kann. Programmierung zunächst nur in Maschinensprache. Feste Abstraktionen der höheren Programmiersprachen ermöglichen elegantere Programmierung auf abstrakterem Niveau. (In dieser Vorlesung werden wir die Sprache Ruby kennenlernen.) Weitere Abstraktion durch Programmiertechniken (Softwaretechnik) möglich. Programmierung ist heute die Kunst ein Problem und seine Lösung in Teile zu zerlegen, so dass sich ein kompositionelles System ergibt, welches leicht zu verstehen, zu ändern und zu konfigurieren ist. Programmiersprachen ermöglichen die Kommunikation mit dem Rechner auf möglichst natürliche Weise. Programme werden entweder mit Hilfe eines Compilers in Maschinensprache übersetzt (z.b. C) oder durch ein spezielles Programm (Interpreter) interpretiert (z.b. Ruby). Mischformen sind ebenfalls möglich. Bei der Programmierung unterscheidet man drei Bereiche: - Syntax beschreibt die zulässigen Zeichenfolgen der Programme - Semantik beschreibt, wie die Programme ausgeführt werden, also die Bedeutung der Sprachkonstrukte - Pragmatik beschreibt die Idee, wie die Programmiersprache verwendet werden soll (viele Wege führen nach Rom, aber welche sind gut). Hier spielt auch das Programmieren als Kunst hinein. Beachte, dass bisher wenig über die Effizienz von Programmen gesagt wurde. Diese ist in der Regel unwichtig! Wenige Ausnahmen: zeitkritische Algorithmen Wichtiger meist: Verständlichkeit, Wartbarkeit, Entwicklungszeit 17

18 3 Programmierung Algorithmus: abstrakte Beschreibung zur Lösung von Problemen Die meisten Algorithmen können automatisch durch Computer ausgeführt werden. Hierzu muss der Algorithmus in einer konkreten Programmiersprache implementiert werden. Zunächst wollen wir ein paar grundlegende Konzepte kennenlernen, die in vielen Programmiersprachen verwendet werden. 3.1 Ausdrücke Aus der Mathematik kennt man Ausdrücke Woraus bestehen Ausdrücke? Basiselemente: - Werte (Konstanten) z.b. 3, 4 N oder π R x 2 + 2x + 1 (x + 1) 2 - Variablen z.b. x, y repräsentieren beliebige Werte und können später mit konkreten Werten belegt werden. Zusammengesetzte Ausdrücke erhält man durch die Anwendung von Funktionen, z.b. +,, ( in der Informatik) auf bereits gebildete Ausdrücke. Diese Funktionen (auch Operatoren genannt) sind zweistellig und verknüpfen zwei Ausdrücke zu einem neuen Ausdruck: Was ist aber mit x 2 +1 x? Auch hier finden wir mehrere Funktionsanwendungen, die aber ungewöhnlich notiert werden. Der Computer (die Programmiersprache) erwartet genormte Darstellung solcher Ausdrücke, deshalb x 2 statt x 2 sqrt(x) statt x a a/b statt b somit können wir x 2 +1 x schreiben als: sqrt(x 2 + 1)/x 18

19 3.1 Ausdrücke Vergleiche dies mit sqrt(x (2 + 1))/x Gibt es einen Unterschied? Ja, da die Funktion stärker bindet als +. Legt man also Präzedenzen (z.b. Punktvor-Strich-Rechnung: und / binden stärker als + und!) für die Funktionen fest, kann man auf Klammern verzichten. Wenn man solche man Klammern wegläßt, werden durch den Computer (z.b. in der Programmiersprache oder Tabellenkalkulation) in der Regel die fehlenden Klammern hinzugefügt. Die vollständig geklammerte Schreibweise für unseren Ausdruck wäre also: (sqrt(((x 2) + 1))/x) Als nächstes wollen wir einen Formalismus kennen lernen, mit welchen Sprachen formal beschrieben werden können und welchen wir im weiteren Verlauf der Vorlesung verwenden werden um die Syntax unserer Programmiersprache Ruby zu verstehen (Erweiterte) Backus-Naur-Form (BNF und EBNF) Wir unterscheiden Nichtterminalsymbole (beginnen mit Großbuchstaben) und Terminalsymbole (Zeichen in ). Nichtterminalsymbole stellen keine Elemente der zu definierenden Sprache dar. Vielemehr sind sie Strukturelemente, welche weiter verfeinert und letzendlich zu einer Folge von Terminalsymbolen abgeleitet werden müssen. Die BNF für vollständig geklammerte Ausdrücke Exp sieht wie folgt aus: Exp ::= V ar V al ( Exp Op Exp ) Fun ( Exps ) Exps ::= Exp Exp, Exps Op ::= + / Fun ::= sqrt V al ::= Num if then else Num Num ::= Digit Digit Num Digit ::= V ar ::= x y z Aus einer BNF kann man gültige Wörter schrittweise ableiten. Hierbei beginnt man mit dem Nichtterminalsymbol, aus dem man ein Wort ableiten möchte. Wir wollen zeigen, dass obiges Wort ein vollständig geklammeter Ausdruck ist, d.h. wir beginnen mit Exp. In jedem Ableitungsschritt darf nun ein Nichtterminalsymbol durch eine seiner rechten Seiten ersetzt werden. Kommen keine Nichtterminalsymbole mehr vor, hat man ein 19

20 3 Programmierung gültiges Wort der beschriebenen Sprache abgeleitet: Exp (Exp Op Exp) (Exp / Exp) (Exp / V ar) (Exp / x) (Fun(Exps) / x) (Fun(Exp) / x) (sqrt(exp)/x) (sqrt((expopexp))/x) (sqrt((exp + Exp))/x) (sqrt((exp + V al))/x) (sqrt((exp + Num))/x) (sqrt((exp + Digit))/x) (sqrt((exp + 1))/x) (sqrt(((expopexp) + 1))/x) (sqrt(((v aropexp) + 1))/x) (sqrt(((xopexp) + 1))/x) (sqrt(((x Exp) + 1))/x) (sqrt(((x V al) + 1))/x) (sqrt(((x Num) + 1))/x) (sqrt(((x Digit) + 1))/x) (sqrt(((x 2) + 1))/x) oder als Ableitungsbaum (hier für EBNF): Hierbei treten einige Dinge immer wieder auf und es wurden spezielle Notationen als Vereinfachung definiert (EBNF): optionales Vorkommen eines Wertes: [e] Dann für unsere Definition von Audrücken: V al ::= [ ] Num V ar Optionale Wiederholung {e}, d.h.e kann 0-mal, 1-mal, 2-mal,...vorkommen. Außerdem besteht noch die Möglichkeit die Alternative ( ) auch in Gruppierungen zu verwenden. Ein Beispiel hierzu ist mit abd und acd aus S ableitbar. S ::= a ( b c ) d 20

21 3.1 Ausdrücke Mit diesen Abkürzungen können wir unsere BNF an einigen Stellen kompakter hinschreiben: Exp ::= V ar V al ( Exp Op Exp ) Fun ( Exp {, Exp } ) Num ::= Digit { Digit } ab hier nur 8 ECTS Stellt diese Erweiterung eine echte Erweiterung dar, d.h. können Sprachen/Eigenschaften beschrieben werden, welche vorher nicht möglich waren? Nein, denn jede EBNF kann in eine BNF übersetzt werden, welche die gleiche Sprache beschreibt. Gehe hierzu wie folgt vor: Falls es eine Regel gibt mit N ::= α [ β ] γ Dann ersetze diese durch Falls es eine Regel gibt mit Dann ersetze diese durch N ::= α γ α β γ N ::= α { β } γ N ::= α M γ M ::= β M ε, wobei M ein neues Nichtterminalsymbol der EBNF ist, also noch nicht in der aktuellen EBNF verwendet worden sein darf Termdarstellungen Wie verfährt der Compiler nun weiter mit dem Ableitungsbaum? Er wird weiter vereinfacht zu einem Term-Baum. Hierbei steht die Funktion bzw. der Operator jeweils oberhalb seiner Argumente. Nichtterminalsymbole kommen nicht mehr vor: Bsp.: 3 + sqrt(x 2 + 1) 21

22 3 Programmierung Räpresentiert exakt die Termstruktur, aber enthält nicht die Informationen aus der (E)BNF. Beachte: Es kommen keine Klammern mehr vor! Termstruktur = Baumstruktur (Klammerung) Gibt es noch andere Darstellungen für Terme? Bisher: f(g(x, y), 3) und Infixoperatoren (3 + 4). Ist die Stelligkeit aller Funktionen bekannt, ist es auch möglich die Klammern und Kommata wegzulassen. Als schreibweise dafür, dass eine Funktion f n ARgumente erwartet, also n-stellig ist verwenden wir: f/n. Man erhält die klammerfreie Präfixnotation: f g x y 3 mitf/2, g/ x = +(3, (4, x)) = (3 + (4 x)) +sqrt x 1 / 4 2 = (+(sqrt(x), 1), /(4, 2)) = (sqrt(x) + 1) (4/2) Entsprechend gibt es auch die klammerfreie Postfixnotation, bei der alle Funktionsanwendungen nach den Argumenten folgen: Wozu sind diese Termdarstellungen gut? x y g 3 f 3 4 x + x sqrt / Insbesondere die Postfixnotation kann gut zur automatischen Auswertung des Ausdrucks verwendet werden. Man verwendet hierzu eine sogenannte Stackmaschine. Ein Stack (oder Keller, Stapelspeicher) ist eine Struktur, in der beliebig viele Werte abgelegt und wieder herausgenommen werden können. Die Werte liegen hierbei übereinander, so dass immer nur oben auf die Werte zugegriffen werden kann. Operationen: push v, schiebt v auf den Stack pop, holt oberstes Element vom Stack Bsp.: push 3, push 4, pop, push 7, pop, pop 22

23 3.1 Ausdrücke Es werden also der Reihe nach die Werte 4,7 und 3 mittels vom Stack gepopt. Im folgenden werden wir Stacks auch horizontal notieren. Wichtig ist aber die Beachtung des LIFO-Prinzips (last-in-first-out) Einschub Es gibt auch das FIFO-Prinzip (f irst-in-f irst-out). Diese Struktur nennt man Queue (oder Schlange). Bei obigem Beispiel ergäbe sich: Also die Werte: 3, 4, 7 Später mehr zu Queues. Wie kann nun der Stack in der Stackmaschine verwendet werden, um den Wert eines Ausdrucks zu berechnen? Hierzu verwendet man am besten die Postfixnotation: Bsp.: (3 + 4) sqrt(2 2) Postfix: sqrt Startkonfiguration: leerer Keller ε sqrt sqrt sqrt sqrt sqrt sqrt 7 4 sqrt Ergebnis տ leere Eingabe Allgemein lässt sich dies mit folgenden Regeln beschreiben: Eine Konfiguration der Stackmaschine besteht aus einem Stack S und einer Eingabe p (einem Teil eines Postfixausdrucks). 23

24 3 Programmierung Die Startkonfiguration besteht aus einem leeren Stack und dem auszuwertenden Term in Postfixnotation p 0 : leerer Stack ց initialer, zu berechnender Term in Postfixnotation ւ ε p 0 Die Konfigurationsübergänge sind wie folgt definiert: S v p mit v ein Wert (z.b. Zahl, true, false) S v p S v 1...v n f p mit f eine n-stellige Funktion und f die Semantik von f S f(v 1...v n ) p Die Endkonfiguration hat die Form: v nur ein! Element auf Stack Das Ergebnis der Auswertung ist v leere Eingabe (Term komplett abgearbeitet) Weiteres Bsp.: i f x>0 then x+1 e l s e x 1 end +1 Term-Baum: Postfix-Notation: x 0 > x 1 + x 1 if then else 1 + Wir betrachten die Belegung: x = 40 24

25 3.1 Ausdrücke Auswertung mit Stack-Maschine: 40 0 > if then else > if then else > if then else 1 + true if then else 1 + true if then else 1 + true if then else 1 + true if then else true if then else 1 + true if then else Beachte im Vergleich die Auswertung als Term: if 40 > 0 then else 40 1 end + 1 if true then else 40 1 end + 1 (40 + 1) Die Berechnung von 40 1 wurde gespart. Das if then else kann auch schon ausgewertet werden, bevor das zweite und dritte Argument ausgewertet wurden, man sagt if then else ist nicht strikt im 2. und 3. Argument. Im Gegensatz zu z.b. +, welches strikt im 1. und 2. Argument ist. if then else ist auch strikt im 1. Argument. Da if then else entweder das zweite oder das dritte Argument liefert ist es sinnvoll, diese vor der if then else-auswertung nicht zu berechnen. Hierzu sind kompliziertere Stack-Maschinen notwendig Informatik-Studium Es können so auch Fehler verhindert werden: if b == 0 then 0 else a/b end verhindert Division durch Null und liefert in diesem Fall das Ergebnis 0. bis hier nur 8 ECTS Nachdem wir nun gesehen haben, wie Ausdrücke formal definiert werden können, wollen wir uns nun die Verwendung von Ausdrücken zur Programmierung von Algorithmen genauer anschauen: Zur Beschreibung der korrekten Syntax von formalen Sprachen verwendet man in der Informatik Syntaxdiagramme, welche wir am Beispiel der Ausdrücke betrachten: 25

26 3 Programmierung Betrachte folgendes Problem: Gegeben: Radius r Aufgabe: Bestimme die Fläche eines Kreises mit Radius r Ausdruck: π ( r 2 ) Wie kann dieser Ausdruck nun für konkrete Radien ausgewertet werden? Bei gegebener Belegung von r können wir im Ausdruck r durch die Belegung ersetzen und dann ausrechnen: Bsp: r 4 dann ergibt sich π (4 2) = π 16 50, 264 r 1 dann π (1 2) = π 1 3, In Ruby können wir diese Funktion wie folgt definieren: def flaeche ( r ) return (3.14 ( r 2)) end wobei def, return und end in Ruby Schlüsselworter für die Funktionsdefinition sind. Dann können wir beispielsweise folgende Anwendungen der Funktion flaeche berechnen: flaeche(1) return(3.14 (1 2)) return(3.14) Hierbei wir im ersten Schritt jedes Vorkommen des Parameters r durch 1 ersetzt. Im zweiten Schritt wird der Term dann unter Berücksichtigung der Semantik der vordefinierten Funktionen ausgerechnet. Nun betrachten wir folgendes Problem: Gegeben: Zwei Zahlen x und y Aufgabe: Bestimme das Maximum von x und y Diese Aufgabe können wir mit den bisherigen Funktionen nicht lösen. Wir benötigen neue Funktionen: Erste Möglichkeit max als genau die gesuchte Funktion, aber das geht so natürlich nicht immer. Alternative: Entwicklung des folgenden Algorithmus: Vergleiche x mit y Falls x < y ist, dann ist y das Maximum Sonst ist x das Maximum. Welche neuen Funktionen benötigen wir hierfür? Zunächst den Vergleich <, aber was ist das Ergebnis von x < y? Eine Möglichkeit: (So z.b. in C) 0 für nicht kleiner 1 für kleiner Bessere Lösung: spezielle boolesche Werte: false für nicht kleiner und true für kleiner 26

Informatik für Nebenfächler

Informatik für Nebenfächler Informatik für Nebenfächler Priv.-Doz. Dr. Frank Huch Institut für Informatik, Technische Fakultät, Christian-Albrechts-Universität zu Kiel. Skript zur Vorlesung im Wintersemester 2011/12. Stand vom: 10.

Mehr

Zahlensysteme Seite -1- Zahlensysteme

Zahlensysteme Seite -1- Zahlensysteme Zahlensysteme Seite -- Zahlensysteme Inhaltsverzeichnis Dezimalsystem... Binärsystem... Umrechnen Bin Dez...2 Umrechnung Dez Bin...2 Rechnen im Binärsystem Addition...3 Die negativen ganzen Zahlen im Binärsystem...4

Mehr

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär Zahlensysteme Menschen nutzen zur Angabe von Werten und zum Rechnen vorzugsweise das Dezimalsystem Beispiel 435 Fische aus dem Teich gefischt, d.h. 4 10 2 + 3 10 1 +5 10 0 Digitale Rechner speichern Daten

Mehr

Zahlendarstellungen und Rechnerarithmetik*

Zahlendarstellungen und Rechnerarithmetik* Zahlendarstellungen und Rechnerarithmetik* 1. Darstellung positiver ganzer Zahlen 2. Darstellung negativer ganzer Zahlen 3. Brüche und Festkommazahlen 4. binäre Addition 5. binäre Subtraktion *Die Folien

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Repräsentation von Daten: Binär-, Oktal- u. Hexadezimalcodierung von ganzen und rationalen Zahlen

Repräsentation von Daten: Binär-, Oktal- u. Hexadezimalcodierung von ganzen und rationalen Zahlen Großübung 1: Zahlensysteme Repräsentation von Daten: Binär-, Oktal- u. Hexadezimalcodierung von ganzen und rationalen Zahlen Lehrender: Dr. Klaus Richter, Institut für Informatik; E-Mail: richter@informatik.tu-freiberg.de

Mehr

21.10.2013. Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer?

21.10.2013. Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer? Vorlesung Programmieren Zahlendarstellung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Agenda Zahlendarstellung Oder: wie rechnen

Mehr

Kapitel 2. Zahlensysteme, Darstellung von Informationen

Kapitel 2. Zahlensysteme, Darstellung von Informationen Kapitel 2 Zahlensysteme, Darstellung von Informationen 1 , Darstellung von Informationen Ein Computer speichert und verarbeitet mehr oder weniger große Informationsmengen, je nach Anwendung und Leistungsfähigkeit.

Mehr

Formale Sprachen, reguläre und kontextfreie Grammatiken

Formale Sprachen, reguläre und kontextfreie Grammatiken Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

7. Formale Sprachen und Grammatiken

7. Formale Sprachen und Grammatiken 7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität Carolo Wilhelmina zu Brauschweig Institut für rechnergestützte Modellierung im Bauingenierwesen Prof. Dr.-Ing. habil. Manfred Krafczyk Pockelsstraße 3, 38106 Braunschweig http://www.irmb.tu-bs.de

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

1. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis 10 darstellen:

1. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis 10 darstellen: Zahlensysteme. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis darstellen: n n n n z a a... a a a Dabei sind die Koeffizienten a, a, a,... aus der

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Das Rechnen in Zahlensystemen zur Basis b=2, 8, 10 und 16 Prof. Dr. Nikolaus Wulff Zahlensysteme Neben dem üblichen dezimalen Zahlensystem zur Basis 10 sind in der Informatik

Mehr

3 Rechnen und Schaltnetze

3 Rechnen und Schaltnetze 3 Rechnen und Schaltnetze Arithmetik, Logik, Register Taschenrechner rste Prozessoren (z.b. Intel 4004) waren für reine Rechenaufgaben ausgelegt 4 4-Bit Register 4-Bit Datenbus 4 Kbyte Speicher 60000 Befehle/s

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Zur Universalität der Informatik. Gott ist ein Informatiker. Die Grundordnung der Welt läßt sich mathematisch formulieren:

Zur Universalität der Informatik. Gott ist ein Informatiker. Die Grundordnung der Welt läßt sich mathematisch formulieren: Daten und ihre Codierung Seite: 1 Zur Universalität der Informatik Gott ist ein Informatiker Die Grundordnung der Welt läßt sich mathematisch formulieren: Naturgesetze, wie wir sie in der Physik, Chemie

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass: OOP (Java), 3. Syntaxdiagramme und Grammatikregeln 1/32 Objektorientierte Programmierung Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass Martin-Luther-Universität Halle-Wittenberg

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung Kontaktdaten Homepage: http://wwwlehre.dhbw-stuttgart.de/~schepper/ Email: Volker. Schepper [A@T] yahoo.de Vorlesung Skriptsprachen Vorlesung: 06.03.2013 13.03.2013 20.03.2013 27.03.2013

Mehr

Programmieren. Kapitel 3: Wie funktioniert ein moderner Computer? Wintersemester 2008/2009. Prof. Dr. Christian Werner

Programmieren. Kapitel 3: Wie funktioniert ein moderner Computer? Wintersemester 2008/2009. Prof. Dr. Christian Werner Institut für Telematik Universität zu Lübeck Programmieren Kapitel 3: Wie funktioniert ein moderner Computer? Wintersemester 8/9 Prof. Dr. Christian Werner 3- Überblick Typische Merkmale moderner Computer

Mehr

Informatik I WS 07/08 Tutorium 24

Informatik I WS 07/08 Tutorium 24 Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 15.11.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Review / Organisatorisches o Probleme bei Foliendownload?

Mehr

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Operatoren? Ein Operator ist eine in die Programmiersprache eingebaute Funktion,

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Kapitel 2 Grundlegende Konzepte. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Kapitel 2 Grundlegende Konzepte. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Kapitel 2 Grundlegende Konzepte 1 2.1 Zahlensysteme Römisches System Grundziffern I 1 erhobener Zeigefinger V 5 Hand mit 5 Fingern X 10 steht für zwei Hände L 50 C 100 Centum heißt Hundert D 500 M 1000

Mehr

Daten, Informationen, Kodierung. Binärkodierung

Daten, Informationen, Kodierung. Binärkodierung Binärkodierung Besondere Bedeutung der Binärkodierung in der Informatik Abbildung auf Alphabet mit zwei Zeichen, in der Regel B = {0, 1} Entspricht den zwei möglichen Schaltzuständen in der Elektronik:

Mehr

Programmierung in Python

Programmierung in Python Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015 Automat versus Computer Ein Automat ist eine Maschine,

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Technische Informatik - Eine Einführung

Technische Informatik - Eine Einführung Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine

Mehr

Algorithmen und Programmierung

Algorithmen und Programmierung Algorithmen und Programmierung Kapitel 5 Formale Algorithmenmodelle A&P (WS 14/15): 05 Formale Algorithmenmodelle 1 Überblick Motivation Formale Algorithmenmodelle Registermaschine Abstrakte Maschinen

Mehr

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens Mathematische Grundlagen der Kryptographie 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe Stefan Brandstädter Jennifer Karstens 18. Januar 2005 Inhaltsverzeichnis 1 Ganze Zahlen 1 1.1 Grundlagen............................

Mehr

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean 01.11.05 1 Noch für heute: 01.11.05 3 primitie Datentypen in JAVA Primitie Datentypen Pseudocode Name Speichergröße Wertgrenzen boolean 1 Byte false true char 2 Byte 0 65535 byte 1 Byte 128 127 short 2

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Einführung in die Informatik Grammars & Parsers

Einführung in die Informatik Grammars & Parsers Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

Information in einem Computer ist ein

Information in einem Computer ist ein 4 Arithmetik Die in den vorhergehenden Kapiteln vorgestellten Schaltungen haben ausschließlich einfache, Boole sche Signale verarbeitet. In diesem Kapitel wird nun erklärt, wie Prozessoren mit Zahlen umgehen.

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Mag. Christian Gürtler Programmierung Grundlagen der Informatik 2011 Inhaltsverzeichnis I. Allgemeines 3 1. Zahlensysteme 4 1.1. ganze Zahlen...................................... 4 1.1.1. Umrechnungen.................................

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011 Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2003. 1 Ausblick. Erste

Mehr

2 Darstellung von Zahlen und Zeichen

2 Darstellung von Zahlen und Zeichen 2.1 Analoge und digitale Darstellung von Werten 79 2 Darstellung von Zahlen und Zeichen Computer- bzw. Prozessorsysteme führen Transformationen durch, die Eingaben X auf Ausgaben Y abbilden, d.h. Y = f

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen reguläre Grammatiken/prachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für wild cards in kriptsprachen (/* reguläre Ausdrücke */)?; [a-z]; * kontextfreie Grammatiken/prachen Beschreibung

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

Binär- und Hexadezimal-Zahl Arithmetik.

Binär- und Hexadezimal-Zahl Arithmetik. Binär- und Hexadezimal-Zahl Arithmetik. Prof. Dr. Dörte Haftendorn, MuPAD 4, http://haftendorn.uni-lueneburg.de Aug.06 Automatische Übersetzung aus MuPAD 3.11, 24.04.02 Version vom 12.10.05 Web: http://haftendorn.uni-lueneburg.de

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

1. Übung - Einführung/Rechnerarchitektur

1. Übung - Einführung/Rechnerarchitektur 1. Übung - Einführung/Rechnerarchitektur Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: Was ist Hard- bzw. Software? a Computermaus b Betriebssystem c Drucker d Internetbrowser

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

Technische Informatik I

Technische Informatik I Technische Informatik I Vorlesung 2: Zahldarstellung Joachim Schmidt jschmidt@techfak.uni-bielefeld.de Übersicht Geschichte der Zahlen Zahlensysteme Basis / Basis-Umwandlung Zahlsysteme im Computer Binärsystem,

Mehr

Zahlensysteme. Zahl 0 0 0 0 0 5 5. Stellenwert Zahl 0 0 0 0 0 50 5. Zahl = 55 +50 +5

Zahlensysteme. Zahl 0 0 0 0 0 5 5. Stellenwert Zahl 0 0 0 0 0 50 5. Zahl = 55 +50 +5 Personal Computer in Betrieb nehmen 1/6 Weltweit setzen die Menschen alltäglich das Zehnersystem für Zählen und Rechnen ein. Die ursprüngliche Orientierung stammt vom Zählen mit unseren 10 Fingern. Für

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Musterlösung 1. Mikroprozessortechnik und Eingebettete Systeme 1 WS2015/2016

Musterlösung 1. Mikroprozessortechnik und Eingebettete Systeme 1 WS2015/2016 Musterlösung 1 Mikroprozessortechnik und Eingebettete Systeme 1 WS2015/2016 Hinweis: Die folgenden Aufgaben erheben nicht den Anspruch, eine tiefergehende Kenntnis zu vermitteln; sie sollen lediglich den

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Datentypen (int, long, double, boolean, String) Variablen und Variablendeklarationen

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Modul 114. Zahlensysteme

Modul 114. Zahlensysteme Modul 114 Modulbezeichnung: Modul 114 Kompetenzfeld: Codierungs-, Kompressions- und Verschlüsselungsverfahren einsetzen 1. Codierungen von Daten situationsbezogen auswählen und einsetzen. Aufzeigen, welche

Mehr

2.2 Rechnerorganisation: Aufbau und Funktionsweise

2.2 Rechnerorganisation: Aufbau und Funktionsweise 2.2 Rechnerorganisation: Aufbau und Funktionsweise é Hardware, Software und Firmware é grober Aufbau eines von-neumann-rechners é Arbeitsspeicher, Speicherzelle, Bit, Byte é Prozessor é grobe Arbeitsweise

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

Linux Tutorium. 12. Shellprogrammierung. Version vom 02.07.2008 13:38:56

Linux Tutorium. 12. Shellprogrammierung. Version vom 02.07.2008 13:38:56 Linux Tutorium 12. Shellprogrammierung Version vom 02.07.2008 13:38:56 im Grunde ist ein Shell-Skript nichts anderes als eine Textdatei, welche Befehlsfolgen enthält Shell-Skripte werden im Wesentlichen

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Das Von-Neumann-Prinzip Prinzipien der Datenverarbeitung Fast alle modernen Computer funktionieren nach dem Von- Neumann-Prinzip. Der Erfinder dieses Konzeptes John von Neumann (1903-1957) war ein in den

Mehr

Grundstrukturen: Speicherorganisation und Zahlenmengen

Grundstrukturen: Speicherorganisation und Zahlenmengen Zahlendarstellung Zahlen und ihre Darstellung in Digitalrechnern Grundstrukturen: Speicherorganisation und Zahlenmengen Linear organisierter Speicher zu einer Adresse gehört ein Speicher mit 3 Bit-Zellen

Mehr

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Kapitel 4: Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Codierung von rationalen Zahlen Konvertierung

Mehr

1. Grundlagen der Informatik Zahlensysteme und interne Informationsdarstellung

1. Grundlagen der Informatik Zahlensysteme und interne Informationsdarstellung 1. Grundlagen der Informatik Zahlensysteme und interne Informationsdarstellung Inhalt Grundlagen digitaler Systeme Boolesche Algebra / Aussagenlogik Organisation und Architektur von Rechnern Algorithmen,

Mehr

Black Box erklärt Zahlensysteme.

Black Box erklärt Zahlensysteme. Black Box erklärt Zahlensysteme. Jeder von uns benutzt aktiv mindestens zwei Zahlenssysteme, oftmals aber so selbstverständlich, dass viele aus dem Stegreif keines mit Namen nennen können. Im europäischen

Mehr

Lua Grundlagen Einführung in die Lua Programmiersprache

Lua Grundlagen Einführung in die Lua Programmiersprache Lua Grundlagen Einführung in die Lua Programmiersprache 05.05.2014 Ingo Berg berg@atvoigt.de Automatisierungstechnik Voigt GmbH Die Lua Programmiersprache Was ist Lua? freie Programmiersprache speziell

Mehr

Modul Einführung in die Informatik : Aufgaben zur Großübung 4 Thema: Python I

Modul Einführung in die Informatik : Aufgaben zur Großübung 4 Thema: Python I Modul Einführung in die Informatik : Aufgaben zur Großübung 4 Thema: Python I 1) Berechnung der Fakultät (von einer ganzen Zahl >= 0) a) Nichtrekursive Berechnung der Fakultät (vgl. Aufg.-komplex Struktogramme,

Mehr

Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten)

Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten) Name: «Vorname» «Name» Klausur in 12.1 Themen: Zahlsysteme, Grundlagen von Delphi (Bearbeitungszeit: 90 Minuten) Informatik 12 2 VP je 2 VP 6 VP 0 Notieren Sie alle Antworten in einer Word-Datei Klausur1_«Name».doc

Mehr

1 Syntax von Programmiersprachen

1 Syntax von Programmiersprachen 1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Shell-Programmierung

Shell-Programmierung Shell-Programmierung Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2009 Shell-Programmierung 1/34 2009-04-27 Inhalt Einleitung

Mehr

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff Programmieren in C C Syntax Datentypen, Operatoren und Kontrollstrukturen Prof. Dr. Nikolaus Wulff Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer

Mehr

Schritt 1. Schritt 1. Schritt 3. - Analysieren des Problems und Spezifizierung einer Lösung.

Schritt 1. Schritt 1. Schritt 3. - Analysieren des Problems und Spezifizierung einer Lösung. I. Programmierung ================================================================== Programmierung ist die Planung einer Abfolge von Schritten (Instruktionen), nach denen ein Computer handeln soll. Schritt

Mehr

Kapitel 11: Wiederholung und Zusammenfassung

Kapitel 11: Wiederholung und Zusammenfassung Wiederholung und Zusammenfassung 1: Begriff und Grundprobleme der Informatik Begriff Informatik Computer als universelle Rechenmaschine Grenzen der Berechenbarkeit Digitalisierung Problem der Komplexität

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

Mehr

Nachholklausur Informatik II

Nachholklausur Informatik II Technische Universität Darmstadt Teil Informatik II Fachbereich Informatik Frühjahr 2001 Fachgebiet Graphisch-Interaktive Systeme Prof. Dr. J. L. Encarnação Dr. J. Schönhut Nachholklausur Informatik II

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Anweisungen... 4-2 4.1 Strukturierte Programmierung... 4-2 4.1.1 Geschichte... 4-2 4.1.2 Strukturierung im Kleinen... 4-2 4.2 Einige Beispielanwendungen... 4-4 4.2.1 Addierer (do-schleife)...

Mehr

Aufbau und Funktionsweise eines Computers

Aufbau und Funktionsweise eines Computers Aufbau und Funktionsweise eines Computers Thomas Röfer Hardware und Software von Neumann Architektur Schichtenmodell der Software Zahlsysteme Repräsentation von Daten im Computer Hardware Prozessor (CPU)

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Binärsystem Im Original veränderbare Word-Dateien Prinzipien der Datenverarbeitung Wie du weißt, führen wir normalerweise Berechnungen mit dem Dezimalsystem durch. Das Dezimalsystem verwendet die Grundzahl

Mehr

Rechnerarithmetik Ganzzahlen und Gleitkommazahlen Ac 2013

Rechnerarithmetik Ganzzahlen und Gleitkommazahlen Ac 2013 Rechnerarithmetik Ganzzahlen und Gleitkommazahlen Ac 2013 Im folgenden soll ein Überblick über die in Computersystemen bzw. Programmiersprachen verwendeten Zahlen inklusive ausgewählter Algorithmen (in

Mehr