Sie sind auf Seite 1von 33

1

Informatik 1
Vorlesung 1.1: Einführung

Ipek Saraç Heinz


2

Über mich
Ipek Saraç Heinz
• MSc Automatisierungstechnik (2006)
• Doktorarbeit Variable Ventil-systeme
im Fahrzeug (2009)
• Entwicklungsingenieurin (2009-2015)
• Dozentin (seit 2012)
• Professorin für Regelungstechnik,
• BS Elektrotechnik (2001)
Informatik, Signale und Systeme
• Forschung / Entwicklung
Haushaltsgeräte
•MM (Master of Music)
Tonmeister (2004)
3
Literatur
(1) Rießig, Informatik für Ingenieure und
Naturwissenschaftler**, Springer 2006
(2) Kirsch, Schmitt, Programmieren in C**, Springer
2007
(3) Böttcher, Kneißl, Informatik für Ingenieure**,
Oldenburg Verlag, 2012
(4) Kernighan, Ritchie, Programmieren in C*,
Hanser 1990
(5) Schellong, Moderne C-Programmierung**,
Springer Vieweg Verlag, 2014
(6) Ernst, Schmidt, Beneken, Grundkurs
Informatik**, Springer 2015
*) in der Bibliothek verfügbar **) verfügbar als E-Book
4
Online Literatur
Wikibooks, C Programmierung, Link

Unser erster Compiler


ist online! Link

http://www.tutorialspoint.com/compile_c_online.php
5
Vorlesungsplan
Termin Uhrzeit Thema (wird laufend aktualisiert)
30.09.2016, Fr 09:45 –11:15 Einführung
30.09.2016, Fr 11:30 –13:00 Labor: Ein erstes Programm, Variablen
07.10.2016, Fr 09:45 –11:15 Keine Vorlesung
07.10.2016, Fr 11:30 –13:00 Keine Vorlesung
14.10.2016, Fr 09:45 –11:15 Labor: Arithmetik, Datentypen
14.10.2016, Fr 11:30 –13:00 Labor: Arithmetik, Datentypen
21.10.2016, Fr 09:45 –11:15 Labor: Arithmetik, Datentypen
21.10.2016, Fr 11:30 –13:00 Labor: Arithmetik, Datentypen
28.10.2016, Fr 09:45 –11:15 Labor: Kontrollstrukturen
28.10.2016, Fr 11:30 –13:00 Binäre Arithmetik
04.11.2016, Fr 09:45 –11:15 Labor: Kontrollstrukturen
04.11.2016, Fr 11:30 –13:00 Labor: Kontrollstrukturen
11.11.2016, Fr 09:45 –11:15 Labor: Wiederholung mit for-Schleife
11.11.2016, Fr 11:30 –13:00 Binäre Arithmetik
18.11.2016, Fr 09:45 –11:15 Labor: Wiederholung mit for-Schleife
18.11.2016, Fr 11:30 –13:00 Labor: Wiederholung mit for-Schleife
6
Vorlesungsplan
Termin Uhrzeit Thema (wird laufend aktualisiert)
25.11.2016, Fr 09:45 –11:15 Labor: while - Schleife, do-while Schleife
25.11.2016, Fr 11:30 –13:00 Logische Schaltungen und Addierer
02.12.2016, Fr 09:45 –11:15 Labor: Schleife
02.12.2016, Fr 11:30 –13:00 Labor: Funktionen
09.12.2016, Fr 09:45 –11:15 Labor: Funktionen
09.12.2016, Fr 11:30 –13:00 Labor: Funktionen
16.12.2016, Fr 09:45 –11:15 Labor: Felder
16.12.2016, Fr 11:30 –13:00 Labor: Felder
23.12.2016, Fr 09:45 –11:15 Labor: Weihnachtsausgabe
23.12.2016, Fr 11:30 –13:00 Labor: Weihnachtsausgabe
13.01.2017, Fr 09:45 –11:15 Labor: Felder
13.01.2017, Fr 11:30 –13:00 Labor: Felder
20.01.2017, Fr 09:45 –11:15 Zusammenfassung
20.01.2017, Fr 11:30 –13:00 Zusammenfassung
-Klausur (Termin/Raum werden bekannt gegeben)-
7
Was ist ein Computer?
n Ein Computer ist ein Gerät, das Daten speichert
und verarbeitet, das auf dieser Basis Berechnungen
durchführt, andere Geräte steuern kann und das mit
anderen Geräten und mit Menschen in Verbindung
treten kann.

Bild Quelle (1,2), Text nach (1)


8
Was genau ist Informatik?
n Informatik ist die
Wissenschaft, die sich mit
den theoretischen
Grundlagen, den Mitteln und
Methoden sowie mit der
Anwendung der
Elektronischen
Datenverarbeitung
beschäftigt, das heißt mit der
Informationsverarbeitung
unter Einsatz von
Computern.
Bild Quelle (1), Text nach (1)
9
Wie alles begann
n In den verschiedensten Weltgegenden, vom
alten Rom bis hin zum fernen China wurde
ein Rechengerät entwickelt, das in Ostasien
auch heute noch zum gängigen
Instrumentarium eines Kaufmanns gehört:
_____________

Verbesserte Version
Hier steht die Zahl _______
Bild Quelle (1), Text nach (1)
10
Mechanische Rechenmaschinen (1/2)
n Wilhelm Schickard (1623)
hat eine zahnradgetriebene
Rechenmaschine für
sechsstellige Additionen,
Subtraktionen, Multiplikationen
und Divisionen entworfen und
gebaut. Die Rechenmaschine
wurde im Lauf des 30-jährigen
Krieges zerstört.

n Blaise Pascal (1643)


hat eine mechanische
Rechenmaschine
entwickelt, die zu
achtstelligen Additionen und
Subtraktionen in der Lage
war und wie die Maschine
von Schickard den Die sogenannte Pascaline war
automatischen Zehner- auf Zahnradbasis gebaut
übertrag beherrschte (wie ein heutiger
Kilometerzähler)
Bild Quelle (1, 2, 3 ), Text nach (1)
11
Mechanische Rechenmaschinen (2/2)
n Gottfried Wilhelm Leibniz
(1673) hat eine mechanische Leibniz war der Erste, der
Rechenmaschine konstruiert, die die dualen oder auch
für alle vier Grundrechenarten zu binären Zahlen (das
gebrauchen war. Beim konkreten Zweiersystem)
Zusammenbauen hat er fest- entwickelte, ohne die
gestellt, dass die Verwendung des heutige Rechner nicht
Dezimalsystems zu recht großen mehr vorstellbar sind.
mechanischen Problemen führte.

Die ersten mechanischen Rechenmaschinen


wurden entwickelt von:
• Wilhelm Schickard, 1623
• Blaise Pascal, 1643
• Gottfried Wilhelm Leibniz, 1673
Ihre Rechenmaschinen basierten auf dem
Einsatz von Zahnrädern und ermöglichten den
automatischen Zehnerübertrag. Leibniz war
außerdem der Schöpfer des Zweiersystems. Staffelwalze von Leibniz
Bild Quelle (1, 2 ), Text nach (1)
12
Die Analytische Maschine von Babbage
n Charles Babbage (1828) konnte das große Projekt seines
Lebens, die Konstruktion einer programmgesteuerten
Rechenmaschine, also eines Universalrechners, nie
verwirklichen, obwohl er dreißig Jahre daran gearbeitet hat.
Aber entscheidend ist, dass Babbage als erster Prinzipien
entwickelt hat, die man heute noch in der Computerarchitektur
findet.

Die Maschinen, die wir bisher gesehen haben, waren


reine Rechenmaschinen, die zu einem bestimmten
Zweck konstruiert waren. Babbage wollte mehr. Er
wollte eine Analytische Maschine bauen, die von
Fall zu Fall programmiert werden konnte, um an
flexiblen Eingabedaten ebenso flexible Berechnungen
vornehmen zu können. Leider war die Durchführung
mit den damaligen technischen Mitteln unmöglich.

Bild Quelle (1, 2), Text nach (1)


13
Die Lochkartenmaschine von Hollerith
In den USA hat die Auswertung der zehnten Volkszählung
von 1880 sieben Jahre lang gedauert und 500 Leute
beschäftigt, weil alle gesammelten Daten manuell
ausgewertet werden mussten.

n Herrmann Hollerith ließ sich von den automatisierten


Webstühlen der Textileindustrie inspirieren und wendete ihr
Prinzip auf die Auswertung der Daten der elften amerikanischen
Volkszählung von 1890 an. Eine Lochkarte passierte einen
sogenannten Kontaktapparat, wobei zu jeder abzulesenden
Stelle ein elektrischer Schaltkreis gehörte.

Wies die Stelle ein Loch auf, so


schloß sich der Stromkreis und eine
bestimmte Verarbeitung konnte
angestoßen werden, das heißt die
passende Klappe eines
Sortierapparates wurde geöffnet.
Die Zahl der Mitarbeiter konnte von
500 auf 43 gesenkt werden, die
Verarbeitungsdauer betrug nur
noch vier Wochen statt sieben
Bild Quelle (1, 2 ), Text nach (1) Jahren.
14
Elektromechanische und elektronische Rechner
n Konrad Zuse
¨ ZUSE Z1 (1938): Rein mechanischer Rechner mit
Programmsteuerung. Zuse stellte fest, dass die
Beschränkung auf die Mechanik die Funktionsfähigkeit
des Systems reduzierte.
¨ ZUSE Z2 (1940): ein Versuch, der teilweise auf
elektromagnetischen Relais basierte.
¨ ZUSE Z3 (1941): basierte vollständig auf Relaistechnik.
Der Z3 konnte die Relaistechnik besonders gut
einsetzen, weil man die beiden möglichen
Zustände eines Stromkreises, nämlich offen und
geschlossen, natürlich verbinden kann mit den
beiden Ziffern des dualen Zahlensystems,
nämlich 0 und 1 (duale Zahlensystem).

Mit dem Z3 hat die Durchführung einer


Multiplikation oder Division “nur” 3 Sekunden
gedauert.
Bild Quelle (1, 2), Text nach (1)
15
Elektromechanische und elektronische Rechner
n Howard Aiken (1944)
n Im Gegensatz zu Zuse verwendete er das
Dezimalsystem und benutzte die elektromechanischen
Relais, um schnelle Kopplungsmechanismen zwischen
den Zahnrädern herzustellen, die in seiner Maschine
noch eine bedeutende Rolle spielen.

ASCC (später MARK I benannt)


hatte riesige Ausmaße; er bestand
aus 750000 Einzelteilen, hatte eine
Länge von 16 Metern, eine Höhe
von etwa 2,5 Metern und wog 35
Tonnen. Für eine Multiplikation
brauchte der Computer 6 Sekunden,
für eine Division 10 Sekunden.

Bild Quelle (1, 2 ), Text nach (1)


16
Die erste Computergeneration
n John Eckert and John Mauchly
n Schon 1946 wurde der erste vollelektronische
Rechner in Amerika in Betrieb genommen, der
Electronic Numerical Integrator and Computer,
abgekürzt ENIAC. Alle Schaltungen im ENIAC,
ausgenommen die Ein- und Ausgabe, waren
vollelektronisch auf der Basis von Röhren konstruiert

Für die Zahlendarstellung wurde das


Dezimalsystem benutzt, aber trotzdem
konnte man sie auf Elektronenröhren im
Rechner abbilden. Die Maschine hatte den
Nachteil, dass zur Programmierung keine
Lochkarten oder Ähnliches verwendet
wurden. In ENIAC versammelten sich
18000 Röhren auf einer Bodenfläche von
etwa 150 Quadratmetern.

Bild Quelle (1, 2 ), Text nach (1)


17
John von Neumann
Neumann’s Idee war einen Speicherbereich, in dem die Daten
abgelegt werden, auch für die Ablage der Programminstruktionen
zu nutzen und damit die Programmierung eines Computers
deutlich flexibler und einfacher zu gestalten.

Die zweite Computergeneration


n Mit dem Ersetzen der Elektronenröhren durch Transistoren als
Bauelemente, was sowohl im Hinblick auf die Zuverlässigkeit als auch auf
die Rechengeschwindigkeit und die Übersichtlichkeit der Ausmaße
deutliche Fortschritte brachte, wurden die Computer der zweiten
Generation eingeführt, und damit begann auch der Übergang vom
Experimentalcomputer zum Massencomputer.
n Es gab 1953 in den USA gerade einmal 50 Computer und in der restlichen
Welt eher weniger. 1959 waren in den USA schon etwa 4000 Rechner im
Einsatz und an die 900 in der restlichen Welt. Schon 1970 war die
stattliche Zahl von weltweit 100000 Computern reichlich überschritten.
Text nach (1)
18
Rechneraufbau: Architektur eines
Taschenrechners
n Addition von 5 + 2
0010

0101

Text nach (1)


19
Rechneraufbau: Die Architektur eines von
Neumann-Rechners
n Die Daten sowie die Befehle zu ihrer
Verarbeitung sind im Arbeitsspeicher
abgelegt. Diese Befehle beschränken sich
nicht mehr nur auf simple
Rechenoperationen wie Addition oder
Subtraktion; sie repräsentieren eine
Programmiersprache, mit der auch
komplizierte algebraische Ausdrücke
darstellbar sind. Die Einheit von Steuerwerk
und Rechenwerk nennt man auf
Englisch die Central Processing Unit,
abgekürzt CPU.
Der externe Speicher, üblicherweise in Form einer Festplatte, hat mehrere
Funktionen. Erstens sorgt er dafür, dass eingegebene Daten und Programme
mehrfach verwendbar sind, unabhängig von der Stromversorgung des
Computers. Zweitens kann man auch umgekehrt die Ergebnisse, die der
Computer liefert, nicht nur dem unsicherern Arbeitsspeicher überlassen,
sondern sie auch auf dem Festspeicher ablegen.
Text nach (1)
20
Arbeitsspeicher
n Der Arbeitsspeicher oder auch Hauptspeicher besteht einfach nur aus
einer Folge von vielen gleichgroßen Speicherelementen, die auf der
Basis elektronischer Schaltungen organisiert sind.
¨ Bit: Strom fließt oder nicht, also 1 oder 0. Ein einzelnes Element, das nur 0
oder 1 sein kann, wird als Bit bezeichnet, was nichts weiter ist als eine
Abkürzung für “binary digit”
¨ Byte: Man kann in einem Bit nicht allzuviele Informationen unterbringen,
und deshalb fasst man acht Bits zusammen zu einem Byte.

Jede Speicherzelle im Arbeitsspeicher


hat eine Adresse, was dazu führt,
dass jede Speicherzelle über ihre
Adresse gleich schnell angesprochen
werden kann. Man spricht deshalb
auch vom wahlfreien Zugriffsspeicher,
auf Englisch Random Access
Memory, abgekürzt RAM.

Text nach (1)


21
Festplattenspeicher
n Eine Festplatte ist ein magnetischer Datenspeicher, der in Spuren und
Sektoren eingeteilt ist. Um eine gesuchte Datei auf der Festplatte
aufzufinden, sind sowohl Bewegungen eines Schreib-/Lesekopfes als
auch eine Rotation der Platte selbst nötig; auf Grund dieser
mechanischen Bewegungen sind die Zugriffszeiten höher als beim
vollelektronischen Arbeitsspeicher. Festplatten eignen sich zur
permanenten Speicherung großer Datenmengen.

Frage: Wie funktioniert Flashspeicher (SSD)?


Text nach (1)
22
Zusammenfassung: Geschichte

Bild Quelle (1), Text nach (1)


23

Informatik 1
Vorlesung 1.2: Ein erstes
Programm, Variablen

Ipek Saraç Heinz


24
Die Entwicklung von C
n Ab 1969 arbeiteten Ken Thomson und
Dennis Ritchie in den berühmten AT&T-
Bell-Laboratories an einem neuen
Betriebssystem mit dem Namen UNIX.
Ein Werkzeug dabei war die bereits
vorhandene Programmiersprache BCPL,
die Thomson weiter entwickelte und B
nannte.
n B besteht im Wesentlichen aus sogenannten Maschinenworten (nicht
benutzerfreundlich). Thomson machte sich daher an eine
Weiterentwicklung von B, die er konsequenterweise C nannte.
n Thomson und Ritchie haben bereits 1973 das Betriebssystem UNIX fast
vollständig mit Hilfe von C entwickelt.
n Inzwischen ist C schon lange eine eigenständige Programmiersprache,
keineswegs mehr abhängig von UNIX, sondern auf den verschiedensten
Rechnertypen unter den verschiedensten Betriebssystemen einsetzbar.
Bild Quelle (1), Text nach (1)
25
Just for fun:
Was haben Programmier-
sprachen mit Bärten zu tun?

Unix: Ken Thomson


C: Dennis Ritchie
Python: C: Brian Kernighan
Java: James Gosling Guido van Rossum

C++: Bjarne Stroustrup


26
Online C Compiler Link
http://www.tutorialspoint.com/compile_c_online.php
Projektexplorer

Programm

Terminal/Ausgabefeld
27
Ein erstes Programm
An /* und */ können Sie
erkennen, dass es sich
Die geöffnete Klammer bezeichnet
den Anfang des Anweisungsteils um Kommentare
handelt (wird ignoriert)
der main()-Funktion

/* gruss.c willkommen */
printf(): (eine
#include <stdio.h>
vordefinierte
main( )
Funktion) alles, was
{
in der Klammer
printf("Willkommen bei Informatik 1\n");
nach printf() steht,
}
wird nach
bestimmten Regeln
ausgegeben.
Es handelt sich um Die printf()-Anweisung kann man also nicht einfach so
eine Funktion (wird verwenden. Sie müssen vorher dafür sorgen, dass Ihr C-
später erläutert); mit Programm diese Anweisung auch versteht.
main() wird #include<stdio.h> sorgt dafür. Die Datei stdio.h ist eine
das Hauptprogramm so genannte Header-Datei, in der bestimmte Ein- und
definiert. Ausgabefunktionen zu finden sind.
28
Der Entwicklungsprozess

Header Dateien sind in


das Programm
eingefügt durch
Präprozessor

Der Programmtext wird mit Hilfe eines Editors geschrieben und in einer Datei
mit der Endung ”.c“ gespeichert. Anschließend überprüft der Compiler die
syntaktische Korrektheit des Programms und übersetzt es im Falle einer
erfolgreichen Überprüfung in maschinenlesbaren Code, der dann zur Ausführung
gelangen kann. Zu Beginn des Compilerlaufs werden vom Präprozessor die
angegebenen Header-Dateien in das Programm eingefügt. Die erzeugten Codeteile
müssen mit einem Linker zusammen gebunden werden.
29
Variablen
Welche Variablen gibt es?
Was macht dieses Programm?
Zu jeder Variable gehört ein Datentyp!

/* Kommentar */ Int: Integer


#include <stdio.h> z.B. für 16 bit
main() zwischen
{ −215 = −32768 und
int x; 215 − 1 = 32767
int y;
int z;
x=3; y=4;
z=x+y;
printf("%d",z);
}
30
Variablen Während die Zeichenkette
selbst durch
/* Addition*/ Anführungszeichen begrenzt
#include <stdio.h> wird, finden Sie in
main() ihr die Angabe %d - ein so
{ genanntes Formatelement,
int x; mit dem man steuert, wie die
int y; Ausgabe der Variablen
int z; stattfinden soll.
x=3; y=4;
z=x+y;
printf("%d",z);
Probieren Sie:
} printf("Die Summe lautet %d",z)
oder
printf("Die Summe aus %d und %d lautet %d",x,y,z);

Beispiel
Schreiben Sie ein C Program, das a und b multipliziert.
31
Eingabe von der Tastatur
Was macht dieses Programm?

/* Kommentar */
#include <stdio.h>
main()
{
int x, y, z;
scanf("%d",&x);
scanf("%d",&y);
z=x+y;
printf("Die Summe aus %d und %d lautet %d\n",x,y,z);
}
32
Eingabe von der Tastatur
/* rechnen.c -- summe berechnen */

#include <stdio.h>

main()
{
int x, y, z;
printf("Geben Sie bitte eine ganze Zahl ein:\n");
scanf("%d",&x);
printf("Geben Sie bitte noch eine ganze Zahl ein:\n");
scanf("%d",&y);
z=x+y;
printf("Die Summe aus %d und %d lautet %d\n",x,y,z);
}

Das scanf()-Kommando Die formatierte Eingabe von der Tastatur erfolgt mit Hilfe des scanf()-
Kommandos. Es benötigt eine Formatangabe wie z.B. “%d”, in der festgelegt wird, welche Art
von Variablen jetzt eingelesen werden soll, und eine anschlie.ende Liste von Variablen, wobei
vor jeden Variablennamen das &-Zeichen gesetzt werden muss, da auf diese Weise direkt die
Arbeitsspeicheradresse der jeweiligen Variablen angesprochen wird.
33

Nächste Woche
n Theorie:
Binäre
Arithmetik
n Labor:
Eingabe von
der Tastatur,
Arithmetik

Bild (Link)