57
Vorlesung Informatik 1, WS 2017 T. Ihme Einführung (1) Historisches 1964 – Entwicklung des Betriebssystems Multics mit neuen Fähigkeiten wie Timesharing, virtueller Speicher etc., zunächst mit PL/1 auf einer PDP-7 von DEC implementiert PL/1 wurde als nicht geeignet empfunden, man entwickelte in Assembler weiter Entwicklung in Assembler sehr aufwendig (schlecht portier- und wartbar), Rückgriff auf Fortran Entwicklung der Programmiersprache B, angelehnt an BCPL (Basic Combined Programming Language) Entwicklung von C, das im Gegensatz zu B typisiert war Implementierung des Unix-Kernels in C Viele Betriebssysteme, beispielsweise Windows, GNU/Linux in C geschrieben 1979 - Dennis Ritchie und Brian Kernighan: The C Programming Language Quasi-Standard

Informatik 1 für Mechatronikerihme/lectures/INF1... · • formale Beschreibung der einzelnen Schritte eines solchen Verfahrens . Programm: • Formulierung des Algorithmus in einer

  • Upload
    ngonhu

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (1)

Historisches • 1964 – Entwicklung des Betriebssystems Multics mit neuen Fähigkeiten

wie Timesharing, virtueller Speicher etc., zunächst mit PL/1 auf einer PDP-7 von DEC implementiert

• PL/1 wurde als nicht geeignet empfunden, man entwickelte in Assembler weiter

• Entwicklung in Assembler sehr aufwendig (schlecht portier- und wartbar), Rückgriff auf Fortran

• Entwicklung der Programmiersprache B, angelehnt an BCPL (Basic Combined Programming Language)

• Entwicklung von C, das im Gegensatz zu B typisiert war • Implementierung des Unix-Kernels in C • Viele Betriebssysteme, beispielsweise Windows, GNU/Linux in C

geschrieben • 1979 - Dennis Ritchie und Brian Kernighan: The C Programming

Language Quasi-Standard

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (2)

Historisches

• 1988 erstmals durch das ANSI-Komitee standardisiert (ANSI-C bzw. C-89)

• 1999 Überarbeitung und Ergänzung des Standards (C-99), bisher jedoch keine vollständige Unterstützung durch Compiler

• Weitgehendste Unterstützung bisher durch GNU-C-Compiler

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (3)

Historisches

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (4)

Vorteile / Eigenschaften von C • Einfache Sprache, maximale Flexibilität und einfache Portierbarkeit auf

andere Rechner Trennung von Sprachkern und Programmbibliotheken

• Programmbibliotheken unterstützen Wiederverwendung von Programmcode

• Wegen Hardware-Nähe, u.a. wichtig für Portierbarkeit von Unix, wird C auch als „Hochsprachen-Assembler“ bezeichnet

• Funktionen der Standardbibliothek auf allen Compilern verfügbar, insbesondere Ein-/ Ausgabe, Dateioperationen, Zeichenkettenverarbeitung, Mathematik, Speicherreservierung

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (5)

Was ist ein Rechner? • Maschine, die Probleme für Menschen lösen kann, in dem sie Befehle

(Instruktionen) ausführt, die ihr gegeben werden. Wer führt die Befehle aus? • elektronische Schaltkreise, Realisieren logische Operationen • Alle Komponenten eines Rechners, die sich aus solchen Schaltkreisen

zusammensetzen, bilden zusammen die Hardware eines Rechners digitaler Rechner (Computer) • nutzen ein Alphabet mit 2 Symbolen, in Zahlen - und Sprachdarstellung

0 und 1, in der Logik auch F(alse) und T(rue) genannt. • benutzen also das Binärsystem, ein Symbol in Zahlendarstellung ist

also eine binäre Ziffer (Binary digit), kurz bit genannt. • Ein Bit ist die kleinste Informationseinheit in einem Computer • Ein Bit wird in einem Computer durch einen bestimmten

Spannungsbereich dargestellt

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (6)

Aufgabe der Software: • Festlegung, in welcher logischen Ordnung die Hardware welche Befehle

ausführt zur Lösung der anstehenden Aufgabe Algorithmus: • formale Beschreibung der einzelnen Schritte eines solchen Verfahrens Programm: • Formulierung des Algorithmus in einer dem Computer verständlichen

Sprache. Diese Sprache ist definiert durch den Befehlssatz, d.h. die Menge der Befehle, welche die Hardware ausführen kann.

Problem: • Die Hardware versteht nur Befehle, die aus Bitfolgen (Folgen von Nullen

und Einsen)bestehen.

Lösung: • wiederholte Anwendung des Abstraktionsprinzips

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (7)

Ebene Abstraktion Beispiel 4 Metasprache, Hochsprache graphische Programmierung 3 Hochsprache, problemorientiert C, Pascal, Fortran 2 Maschinensprache Assembler 1b komplexe Funktionseinheiten ALU, Steuerwerk, Speicher 1a einfache Funktionseinheiten Register 0 Gatter AND, OR -1 Transistoren CMOS, TTL -2 Atome Elektronen-Loch-Modell -3 Quanten Bänder / Quantenmodell

Ebenen, die in dieser Lehrveranstaltung betrachtet werden

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (8)

Grobstruktur der Organisation eines Rechners:

Speicher

Prozessor

Kontroll-einheit

DatenpfadOutput...

Input...

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (9)

Kontroll-einheit (CU)

Arithmetisch-Logische Einheit(ALU)

RegisterHaupt-

speicherFest-platte

Drucker

Bus

Central Processing Unit (CPU)

I/O Geräte

Kommunikationsstruktur zwischen den Komponenten:

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (10)

Graphische Darstellungsmittel – Struktogramme

• engl.: structure chart • Verwendet, um sequenzielle Abläufe darzustellen • Grundelemente: Blöcke, Selektionen, Schleifen, Funktionsaufrufe • Darstellung von oben nach unten • Vorteil: sehr übersichtliche Darstellung • Für wichtigste Elemente existieren direkte Entsprechungen in

Programmiersprachen • Nachteil: Platz für Blöcke ist bei mehrfach geschachtelten Alternativen

sehr klein

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (11)

Graphische Darstellungsmittel – Struktogramme

Anweisung: In einem Block werden einzelne Anweisungen oder Schritte angegeben.

Folge (Sequenz): Eine Folge von Anweisungen wird durch untereinander gereihte Blöcke dargestellt

Alternative: Die Bedingung wird überprüft. Ist sie korrekt, wird der Block 1 (Zweig ja), ansonsten Block 2 (Zweig nein) ausgeführt.

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (12)

Graphische Darstellungsmittel – Struktogramme

Fallauswahl (Mehrfachauswahl): Der Ausdruck Auswahl wird ausgewertet. Je nachdem, welcher Fall zutrifft, wird in den entsprechenden Block verzweigt.Trifft keiner der angegebenen Fälle zu, so wird ein Alternativblock ausgeführt.

Unterprogrammaufruf: Es wird zu einem Unterprogramm verzweigt, das durch weiteres Struktogramm beschrieben ist.

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (13)

Graphische Darstellungsmittel – Struktogramme

Wiederholung (Schleife), vorprüfend: Die Bedingung wird vor jedem Schleifendurchlauf überprüft. Der Block wird wiederholt, solange die Bedingung erfüllt ist.

Wiederholung (Schleife), nachprüfend: Die Bedingung wird nach jedem Schleifendurchlauf überprüft. Der Block wird wiederholt, solange die Bedingung erfüllt ist.

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (14)

Graphische Darstellungsmittel – Struktogramme

Struktogramm für den euklidischen Algorithmus zur Berechnung des größten gemeinsamen Teilers zweier ganzer Zahlen sowie ein Beispiel

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (15)

Graphische Darstellungsmittel – Struktogramme

Struktogramm zur Berechnung des Mittelwertes einer Folge von Zahlen

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (16)

Graphische Darstellungsmittel – Datenflussdiagramme • Engl.: data flow diagram, auch bubble diagram • Gibt Übersicht über Funktionen und Prozesse, Betrachtung des Flusses

der Daten und Zustände im System • Jedoch keine Betrachtung dessen, wie das erreicht wird • Schnittstellen sind abstrahierte Objekte, können zum Projekt gehören

oder auch nicht • Wichtig ist, aus welchem System die Daten kommen bzw. an welches

System sie gesandt werden • Datenflussdiagramme beschreiben keine Ablauffolgen, zeitliche oder

logische Zusammenhänge – Durch welche Mechanismen Funktionen ausgelöst werden, ist nicht

bestimmt – Funktionen können parallel ablaufen – Welche Daten eine Funktion braucht, ist durch eingehende

Übergänge nicht angegeben

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (17)

Graphische Darstellungsmittel – Datenflussdiagramme

Funktion (Prozess): Gibt eine Funktion oder einen Parameter an, der Daten bearbeitet. Wie dies erfolgt ist nicht relevant. Funktionen werden durch Kreise dargestellt.

Übergang: Daten werden von einem Prozess zu einem anderen geleitet. Dies wird durch Übergänge symbolisiert. Sie werden durch Pfeile dargestellt.

Schnittstelle: Schnittstellen sind Quellen und Senken von Daten. Es gibt Schnittstellen, in denen Daten erzeugt werden und solche, in die Daten geleitet werden. Schnittstellen werden durch Rechtecke dargestellt.

Speicher: Dient zur Pufferung von Daten oder enthält Daten, die eine Funktion zur Bearbeitung benötigt. Speicher werden durch offene Rechtecke dargestellt.

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (18)

Graphische Darstellungsmittel – Datenflussdiagramme

Daten fließen von Quellen in das System zu Funktionen.

Grundkonzept von Datenflussdiagrammen

Innerhalb des Systems fließen Daten von Funktionen in den Speicher oder vom Speicher zu Funktionen

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (19)

Graphische Darstellungsmittel – Datenflussdiagramme

Grundkonzept von Datenflussdiagrammen

Daten können zwischen Funktionen fließen.

Daten fließen in Senken ab.

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (20)

Graphische Darstellungsmittel – Datenflussdiagramme

Erlaubte Mechanismen

Daten gelangen von einer Schnittstelle zu einer anderen immer über Funktionen

Das ist auch der Fall, wenn es sich um ein und dieselbe Schnittstelle handelt

Daten fließen nur von Funktionen in den Speicher.

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (21)

Graphische Darstellungsmittel – Datenflussdiagramme

Nicht erlaubte Mechanismen

Daten dürfen nicht von einer Quelle direkt in eine Senke fließen.

Daten dürfen nicht von einer Schnittstelle direkt in den Speicher fließen.

Daten dürfen nicht direkt von einem Speicher in einen anderen Speicher fließen.

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (22)

Graphische Darstellungsmittel – Datenflussdiagramme

Datenflussdiagramm für einen Fahrscheinautomaten

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (23)

Graphische Darstellungsmittel – Datenflussdiagramme

Datenflussdiagramm für einen sechsbeinigen Laufroboter

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (24)

Graphische Darstellungsmittel – Programmablaufpläne • Auch Ablaufdiagramme, Flussdiagramme, Blockdiagramme • Vorteile:

– Anweisungen und Algorithmen gut darstellbar und lesbar – Schrittweises Verfeinern möglich – Können hinsichtlich Terminierung und Korrektheit einfach überprüft

werden – Schnittstellen sind darstellbar und erkennbar

• Nachteile: – Keine Symbole für elementare Befehle wie Mehrfachauswahl – Schleifen auf zwei Symbole aufgeteilt geschachtelte Schleifen schwer

erkennbar (kann man durch Vermeidung der Schleifensymbole umgehen) – Keine Sicherstellung von strukturierter Programmierung

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (25)

Graphische Darstellungsmittel – Programmablaufpläne

Grenzstelle: Bezeichnet den Anfang und das Ende eines Programms.

Verarbeitung: Symbol wird für allgemeine Operationen, z.B. Berechnungen, Initialisierungen

Ablauflinie: Symbolisiert Übergang zum nächsten Element. Bevorzugte Richtungen: oben unten, links rechts

Übergangsstellen: Unterbrechung eines Programmablaufplanes und Fortsetzung an einer anderen Stelle; Verteilung komplexer Pläne auf mehrere Seiten

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (26)

Graphische Darstellungsmittel – Programmablaufpläne

Eingabe, Ausgabe: Darstellung von Eingaben und Ausgaben, z.B. Eingabe(anzahl) oder ergebnis

Verzweigung: Symbol enthält eine Bedingung. Je nachdem, ob diese erfüllt ist oder nicht, wird auf dem einen oder anderen Zweig fortgesetzt.

Unterprogrammaufruf: Verzweigung zu einem Unterprogramm, das durch einen weiteren beschrieben wird

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (27)

Graphische Darstellungsmittel – Programmablaufpläne

Wiederholung (Schleife), vorprüfend Eine Schleife wird durch ein Start- und ein Endsymbol begrenzt. Die Bedingung einer vorprüfenden Schleife wird vor jedem Schleifendurchlauf überprüft und im Startsymbol angegeben. Der Block wird wiederholt, so lange die Bedingung erfüllt ist.

Wiederholung (Schleife), nachprüfend Die Bedingung einer nachprüfenden Schleife wird nach jedem Schleifendurchlauf überprüft und im Endsymbol angegeben. Der Block wiederholt, solange die Bedingung erfüllt ist.

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (28)

Graphische Darstellungsmittel – Programmablaufpläne

Programmablaufplan für den Euklidischen Algorithmus zur Berechnung des größten gemeinsamen Teilers einer ganzen Zahl.

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (29)

Pseudocode • Pascal-ähnliche Notation

begin BetragPruefen

Eingabe(a);

Eingabe(b);

if a > b then Ausgabe(a);

else Ausgabe(b);

end if end BetragPruefen

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (30)

Erstellen eines Projektes • Projekte bestehen meist aus mehreren Dateien, z.B. Quelldateien,

Funktionssammlungen in Bibliotheken • Zur Definition eines Projektes sind folgende Schritte notwendig:

– Projektverzeichnis und Projektname – Alle notwendigen Quelltext- und Headerdateien – Alle benötigten Bibliotheken, d.h. lauffähige Module, die Teilfunktionalität enthalten – Compiler- und Link-Optionen

• Quelltext-Dateien – Enthalten eigentlichen Quelltext – Jede Datei beschreibt in der sogenannten modularen Programmierung ein in sich

abgeschlossenes Modul – Von außen sind Module über Schnittstellen bedienbar ausgewählte Funktionen

eines Moduls, die zur Steuerung verwendet werden • Header-Dateien

– Beinhalten Bekanntmachungen (Deklarationen), die der Compiler zur Übersetzung benötigt, und Informationen über neu definierte Datentypen

– Werden zur Übersetzung von Quelltext-Dateien benötigt

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (31)

Übersetzen von Programmen

Compiler

Kontrolle

Präprozessor

Assemblierer

Optimierung

präprozessierte Datei

Assembler-Datei

Objektdatei

Quelltextdatei

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (32)

Übersetzen von Programmen • Projekt kann aus mehreren Quelldateien bestehen, für jede muss gesamte

Sequenz durchlaufen werden • An den punktierten Linien kann Übersetzungssequenz abgebrochen werden

und eine entsprechende Ausgabedatei erzeugt werden • Präprozessor:

– simpler Textersetzer, durchsucht Quelldatei nach sogenannten Präprozessoranweisungen

– Quelltext wird also modifiziert, bevor er durch Compiler übersetzt wird • Übersetzungsvorgang

– Untersuchung des Quelltextes nach einfachen Fehlern – Übersetzung des C-Quelltextes in Assemblersprache – Dadurch Einbindung von verschiedenen Assemblierern möglich – Übersetzung kann durch Compileroption hier abgebrochen und

Assemblerquelltext ausgegeben werden

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (33)

Übersetzen von Programmen

• Optimierung – Optional. Kann durch Compilerschalter aktiviert/deaktiviert werden – Verschiedene Kriterien: Laufzeit, Codegröße – Nimmt Änderungen im Assemblercode vor – Optimierung kann prozessorspezifische Möglichkeiten nutzen, z.B.

Pipelining: Umsortieren von Befehlen für schnellere Verarbeitung • Übersetzungsvorgang für jede Quelldatei notwendig zu jeder Quelldatei

wird eine Objektdatei erzeugt • Alle Objektdateien müssen zum Erzeugen eines ausführbaren Programms

kombiniert werden (Objektdateien und Bibliotheken) • Die durch Bibliotheken bereitgestellte Funktionalität kann in verschiedenen

Projekten wiederverwendet werden – Standardbibliotheken – Projektspezifische Bibliotheken – Freie oder käuflich verfügbare Bibliotheken

Vorlesung Informatik 1, WS 2014 T. Ihme

Einführung (34)

Übersetzen von Programmen

Linker

Objektdatei

ObjektdateiBibliothek

Bibliothek

Ausführbare Datei

Objektdatei

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (35)

Übersetzen von Programmen

• Wie gesehen, hat der Compiler erst einmal nichts mit der Quelltextbearbeitung zu tun Quelltextbearbeitung und Übersetzung zwei getrennte Vorgänge

• Typischer Compiler-Aufruf:

cc –o programmname hallowelt.c

• Standard C-Compiler heißt auf vielen Systemen cc • Compiler ruft automatisch Präprozessor auf, dann sich selbst, den

Optimierer, den Assemblierer und den Linker • -o gibt wird Name des ausführbaren Programms angegeben • Restliche Parameter (hallowelt.c) sind Quelldateien des Projekts • -g Bereitstellung von Informationen für den Debugger • -O Verwenden des Optimierers • Manche Kombinationen von Optionen sind nicht möglich

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (36)

Übersetzen von Programmen

• Vielzahl verfügbarer Optionen zur Beeinflussung des Übersetzungsvorganges

• Standard C-Compiler heißt auf vielen Systemen cc • Compiler ruft automatisch Präprozessor auf, dann sich selbst, den

Optimierer, den Assemblierer und den Linker • -o gibt wird Name des ausführbaren Programms angegeben • Restliche Parameter (hallowelt.c) sind Quelldateien des Projekts • -g Bereitstellung von Informationen für den Debugger • -O Verwenden des Optimierers • Manche Kombinationen von Optionen sind nicht möglich • -l ermöglicht das hinzubinden von Bibliotheken • Auf Unix-Systemen beginnen Bibliotheken mit lib und enden auf .a

oder .so • Führendes lib und die Endung .a oder .so sind wegzulassen

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (37)

Übersetzen von Programmen

• Mathematik-Bibliothek heißt libm.so oder libm.a, als Compiler-Option ist lediglich –lm anzugeben:

cc –o calc calc.c –lm • Die zum Compiler zugehörige Standardbibliothek wird automatisch

hinzugelinkt • Genutzte Funktionen müssen durch entsprechende Header-Dateien

dem Compiler bekannt gemacht werden (Platzhalter für die Bibliotheks-Funktionen)

• Einbindung der Header-Dateien erfolgt mit #include-Anweisung • Nicht immer heißen die Header-Dateien wie die Bibliotheken

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (38)

Ein erstes Programm

#include <stdio.h> // include standard library int main(int argc, char** argv) // start of the main program { printf("Hello World!"); // output of „Hello World!“ on screen return 0; // end program without error }

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (39)

Ein erstes Programm

• Aufruf des Compilers mit Kommandozeile unter – Windows 7 (oben) – Linux (rechts)

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (40)

Programme schreiben und übersetzen

• Zum Editieren von Programmen kann im Prinzip jeder reine Textediitor benutzt werden

• Syntax-Highlighting erleichtert das Erfassen der Programmstruktur und des konkreten Inhaltes (z.B. notepad++, gedit, kate)

• Integrierte Entwicklungsumgebungen (sog. IDE, engl. Integrated Development Environment) bieten darüber hinaus die Möglichkeit einer bequemen Projektverwaltung (Quelldateien, Compileroptionen) und des direkten Anstoßens von Übersetzungsvorgängen

• Debuggingfunktionen ergänzen den Leistungsumfang von IDE‘s • Beispiele: Eclipse, Visual Studio, Code Composer

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (41)

Erste Schritte unter Visual C++

Erstellen eines Konsolenprojektes unter Microsoft Visual Studio 2010

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (42)

Erste Schritte unter Visual C++

• Microsoft Visual C++ unterstützt nicht direkt das Erzeugen einer C-Anwendung

• Deshalb wird zunächst ein leeres Projekt erzeugt

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (43)

Erste Schritte unter Visual C++

• Erzeugen einer leeren Datei „hallowelt.c“

• Einfügen dieser Datei als vorhandenes Element

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (44)

Erste Schritte unter Visual C++

• Durch Doppelklick auf „hallowelt.c“ (rechts) öffnet sich die leere Quelltextdatei

• Einfügen des Quelltextbeispiels von Folie 37

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (46)

Erste Schritte unter Visual C++

• Erstellen der Anwendung hallowelt • Unten im Ausgabefenster werden der erfolgreiche Übersetzungsvorgang

und eventuelle Warnungen oder aufgetretene Fehlermeldungen angezeigt

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (47)

Erste Schritte unter Visual C++

• Öffnen eines Kommandozeilen-Fensters im Ordner „Debug“ • mittels „CMD Prompt here“, falls im Kontextmenü vorhanden • Öffnen eines cmd-Fensters und Navigieren mittels cd ins Zielverzeichnis

• hallowelt.exe ausführen

oder

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (48)

Erste Programmbeispiele in C

#include <stdio.h> // include standard library int main(int argc, char** argv) // start of the main program { printf("Hello World! "); // output of „Hello World!“ on screen return 0; // end program without error }

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (49)

Erste Programmbeispiele in C

#include <stdio.h>

/* Umwandlung von Kilometer in Meilen in 20er Schritten von 0 bis 100 km */ main() { // Variablendeklaration int km; float meilen; int lower, upper, step; // Variablenfestlegung lower = 0; // untere Grenze upper = 100; // obere Grenze step = 20; // Schrittweite

km = lower; // Ausgabe einer Tabelle while(km <= upper){ meilen = km * 0.62137; printf("%d\t%3.1f\n",km,meilen); km = km + step; } }

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (50)

Erste Programmbeispiele in C

#include <stdio.h> main() { // Variablendeklaration double meilen; int km; for(km = 0; km <= 100; km = km + 20) { //Umrechnungsvorschrift meilen = km * 0.62137; printf("%3d %6.1f\n", km, meilen); } }

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (51)

Erste Programmbeispiele in C

#include <stdio.h> main() { // Variablendeklaration und Initialisierung int zahl = 0; // Endlosschleife while(1) { zahl = zahl + 1; printf("%d\n", zahl); } }

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (52)

Datentypen:

• int ganzzahlige Variable • float Gleitpunktvariable • char ein einzelnes Zeichen • short kleiner, ganzzahliger Wert • long großer, ganzzahliger Wert • double Gleitpunktvariable mit doppelter Genauigkeit

Folgende Datentypen sind in C realisiert

Folgende Datentypen sind in anderen Programmiersprachen zusätzlich realisiert

• bool logische Variable • string Zeichenkette

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (53)

Formatierungsanweisung für printf

• %d als dezimale ganze Zahl ausgeben • %6d als dezimale ganze Zahl ausgeben, mit mindestens 6 Zeichen • %f als Gleitpunktzahl ausgeben • %6f als Gleitpunktzahl ausgeben, mit mindestens 6 Zeichen • %.2f als Gleitpunktzahl ausgeben, mit 2 Zeichen nach Dezimalpunkt • %6.2f als Gleitpunktzahl ausgeben, mit mindestems 6 Zeichen und

davon 2 Zeichen nach Dezimalpunkt

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (54)

Symbolische Konstanten

Konstanten, Schrittweiten oder andere Größen können als symbolische Konstanten gespeichert werden. Dies ist guter Programmierstil und erhöht die Lesbarkeit von Programmen.

#define Name Ersatztext Beispiel: #define lower 0

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (55)

Symbolische Konstanten

#include <stdio.h> // Festlegen von symbolischen Konstanten #define startwert 0 #define endwert 100 #define schrittweite 20

main() { // Variablendeklaration double meilen; int km; for(km = startwert; km <= endwert; km = km + schrittweite) { //Umrechnungsvorschrift meilen = km * 0.62137; printf("%3d %6.1f\n", km, meilen); } }

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (56)

if (a > b) { z = a; } else { z = b; }

If-Else-Statement

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (57)

Eindimensionale Felder / Vektoren

Anstelle z. B. 10 verschiedene Variablen (a1, a2,…a10) zu deklarieren, kann man mit Vektoren (eindimensionalen Feldern) arbeiten.

int vektor[10];

In dieses Feld können 10 ganzzahlige Werte hineingeschrieben werden. Die Nummerierung beginnt immer bei 0. Die Elemente sind: vektor[0], vektor[1], vektor[2] … vektor[9]

Vorlesung Informatik 1, WS 2017 T. Ihme

Einführung (58)

Formatierte Eingabe mit scanf

#include <stdio.h> main() /* rudimentary calculator */ { double sum, v; sum = 0; while (scanf("%lf", &v) == 1) printf("\t%.2f\n", sum += v); return 0; }