Tobias Wolf Seite 1 von 37

Größe: px
Ab Seite anzeigen:

Download "Tobias Wolf Seite 1 von 37"

Transkript

1 Skript Seite 1 von 37

2 Was ist? - ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere deren automatisierte Verarbeitung mit Hilfe von elektronischen Rechenanlagen. - Die beschäftigt sich mit: o dem Aufbau, der Arbeitsweise und dem Konstruktionsprinzip von elektronischen Rechenanlagen und o den Strukturen, Eigenschaften und Beschreibungsmöglichkeiten von Informationen und deren Weiterverarbeitung. Seite 2 von 37

3 Algorithmus - Ein Algorithmus ist eine endliche Folge genau definierter Vorschriften zur Lösung einer Aufgabenstellung. - Ein Algorithmus ist ein Verfahren, welches in einem endlichen Text niedergelegt werden muss und effektiv durch eine Maschine (Computer) ausgeführt werden kann. - Algorithmen wandeln Eingabedaten in Ausgabedaten um. Seite 3 von 37

4 Programm - Programme sind in einer Programmiersprache formulierte Algorithmen. - Im Gegensatz zu Algorithmen sind Programme in einer eindeutigen Programmiersprache verfasst. - Ein und derselbe Algorithmus kann in verschiedenen Programmiersprachen formuliert werden. Seite 4 von 37

5 Softwareentwicklung - Unter Softwareentwicklung versteht man die systematische Konstruktion von Programmen zur Lösung eines in der realen Welt gestellten Problems. Seite 5 von 37

6 Computer - Von wenigen Ausnahmen abgesehen, liegt modernen Computern das Prinzip des Von-Neumann-Rechners zugrunde. - Der Rechner besteht aus fünf Funktionseinheiten: o Steuerwerk o Rechenwerk o Speicher o Eingabewerk o Ausgabewerk - Diese Funktionseinheiten sind durch ein Bussystem verbunden. - Von-Neumann-Rechner folgen dem EVA-Prinzip: Eingabe - Verarbeitung - Ausgabe Seite 6 von 37

7 Von-Neumann-Rechner Seite 7 von 37

8 Zentraleinheit - Steuerwerk, Rechenwerk und Speicher fasst man auch unter der Bezeichnung Zentraleinheit zusammen. - Steuerwerk und Rechenwerk sind meist in einem Chip, dem Prozessor (CPU = Central Processing Unit) untergebracht. - Der Prozessor ist mit den anderen Bestandteilen des Rechners über einen Bus verbunden. Seite 8 von 37

9 Steuerwerk - Das Steuerwerk steuert und koordiniert alle Aktionen, die in der Zentraleinheit ablaufen. - Das Steuerwerk hat folgende Aufgaben: o Befehle in der richtigen Reihenfolge aus dem Speicher laden o Befehle decodieren o Befehle interpretieren o Versorgung der Funktionseinheiten mit Steuersignalen Seite 9 von 37

10 Rechenwerk - Im Rechenwerk werden die arithmetischen und logischen Verknüpfungen ausgeführt (ALU: Arithmetic Logical Unit). - Die Operanden werden hierbei vom Steuerwerk geliefert. - Das Rechenwerk wird mit den für die richtige Durchführung der Operation notwendigen Steuersignalen versorgt. Seite 10 von 37

11 Speicher - Im Speicher werden: o Programme o Daten o Zwischenergebnisse o Endergebnisse abgelegt - Jede Speicherzelle hat eine Adresse. Seite 11 von 37

12 Bus - Ein Rechner ist modular aufgebaut. - Größere Funktionseinheiten sind meist in Form von einzelnen Chips realisiert. - Neben den oben erwähnten Funktionseinheiten gibt es u.a. Chips für die Bildschirmsteuerung, die externe Kommunikation, die Kontrolle von Peripheriegeräten. Seite 12 von 37

13 Bus - Die notwendigen Verbindungen zwischen den einzelnen Elementen werden von sogenannten Bussen übernommen. - Als Beispiele sind der Datenbus und der Adressbus zu nennen. - Der Datenbus transportiert Daten. - Über den Adressbus wird festgelegt, welche Speicherzelle gelesen oder beschrieben werden soll. Seite 13 von 37

14 Eingabe- und Ausgabewerk - Geräte, die an dem Ein- und Ausgabewerk angeschlossen sind, werden als Peripherie bezeichnet. - Beispiele für die Peripherie sind: Tastatur, Maus, Bildschirm, Drucker, Scanner, DVD-Laufwerk. - Keine Peripheriegeräte hingegen sind: Konventionelle Festplatten, SSD, USB-Sticks. Sie zählen zu den Datenspeichern. Seite 14 von 37

15 Programmiersprachen - Man unterscheidet 5 Generationen von Programmiersprachen: o 1. Generation: Maschinensprache o 2. Generation: Assemblersprache o 3. Generation: Höhere Programmiersprache o 4. Generation: Nichtprozedurale Sprache o 5. Generation: Wissens- und Objektorientierte Sprache Seite 15 von 37

16 Maschinensprache - Die Maschinensprache entspricht dem Befehlsvorrat einer speziellen CPU. - In Maschinensprache geschriebene Programme sind nur auf einem CPU-Typ lauffähig. Seite 16 von 37

17 Maschinensprache Beispiel Seite 17 von 37

18 Assemblersprache - Der Vorrat an symbolischen Befehlen entspricht dem der Maschinensprache. - Einem Maschinenbefehl ist jeweils ein symbolischer Befehl zugeordnet. - In Assembler geschriebene Programme sind nur auf einem CPU-Typ lauffähig. Seite 18 von 37

19 Assemblersprache - Mit Assembler-Programmen kann man, unter Ausnutzung aller Möglichkeiten der CPU, sehr effiziente Programme erstellen. - Assemblerprogramme werden mit speziellen Übersetzern in Maschinensprache übersetzt. MOVE.L #222222, D0 MOVE.L #333333, D1 ADD.L D1, D0 Seite 19 von 37

20 Höhere Programmiersprachen - Für diese Sprachen gibt es eine Vielzahl von Bezeichnungen. - Sie sind weitgehend maschinenunabhängig, genormt und oft für einen speziellen Anwendungsbereich konzipiert. - Zur Problemlösung werden Algorithmen formuliert, d.h. die Abfolge, in der die Daten bearbeitet werden, wird definiert. Seite 20 von 37

21 Höhere Programmiersprachen - Hier trennte sich auch die Entwicklung zwischen Sprachen für kaufmännische Anwendungen, welche meist große Datenbestände verwalten müssen und wissenschaftlichtechnische Anwendungen, bei denen die effiziente Programmierung komplexer mathematischer Algorithmen im Vordergrund steht. Seite 21 von 37

22 Höhere Programmiersprachen - Als Urahn der kaufmännisch orientierten Programmiersprachen ist COBOL (Common Business Oriented Language, ab 1959) zu sehen; die älteste Programmiersprache für wissenschaftlichtechnische Anwendungen ist FORTRAN (FORmula TRANslator, ab 1954). - Weitere Beispiele sind PL/1, PASCAL, BASIC, ALGOL und C. a = ; b = ; c = a + b; Seite 22 von 37

23 Nichtprozedurale Sprachen - Die Definition dieser Sprachen und der im nächsten Unterkapitel beschriebenen Sprachen ist fließend. - Eine wichtige Eigenschaft ist die Nichtprozeduralität. - Dem Rechner muss nicht mehr länger mitgeteilt werden, wie er das Problem zu lösen hat, sondern nur noch, was zu geschehen hat. Seite 23 von 37

24 Nichtprozedurale Sprachen - Verwendung finden sie überwiegend im Bereich von Dateiverwaltungs- und Datenbanksystemen. - Deshalb werden diese Sprachen auch als datenorientierte Sprachen bezeichnet. - Am bekanntesten ist SQL für die relationale Datenmanipulation. Seite 24 von 37

25 Nichtprozedurale Sprachen - Die Sprachen der 4. Generation haben die Produktivität in der Programmentwicklung erheblich erhöht. - Allerdings nehmen sie sehr stark Hardwareressourcen in Anspruch. - Viele dieser Sprachen sind proprietär, d.h. sie gehören zu einer bestimmten Rechnerplattform, und damit ist man vom jeweiligen Hersteller abhängig. Seite 25 von 37

26 Objektorientierte und Wissensbasierte Sprachen - Schwierig ist die Klassifikation dieser Sprachen. - Sie werden teilweise auch als 5. Generation bezeichnet. - Zu bedenken ist jedoch, dass es sich hierbei um die verschiedensten Arten von Programmiersprachen handelt. Seite 26 von 37

27 Objektorientierte und Wissensbasierte Sprachen - Objektorientierte Sprachen beruhen auf einem vollkommen anderen Programmierprinzip. - Die Daten, die ein Programm verarbeitet und die Methoden, mit denen die Daten verarbeitet werden, werden zu sogenannten Objekten zusammengefasst, die dann miteinander kommunizieren. - Eine wichtige Eigenschaft ist die Möglichkeit der Vererbung von Eigenschaften eines Objektes auf ein anderes. - Beispiele sind C++ und Java. Seite 27 von 37

28 Objektorientierte und Wissensbasierte Sprachen - Wissensbasierte Sprachen, auch KI-Sprachen (KI = Künstliche Intelligenz) sind Sprachen zur Entwicklung von Expertensystemen. - Beispiele sind LISP und PROLOG. Seite 28 von 37

29 Übersetzer - Ein grundlegendes Problem aller Programmiersprachen ist die Übersetzung des sogenannten Quellprogramms in Maschinensprache. - Hierbei werden drei Konzepte unterschieden: o Assembler o Compiler o Interpreter Seite 29 von 37

30 Assembler - Assembler setzen Befehle eins zu eins aus der maschinenorientierten Sprache in die Maschinensprache um. Seite 30 von 37

31 Compiler - Compiler übersetzen ein in einer höheren Sprache geschriebenes Programm in Maschinensprache. - Dabei wird die Quelldatei auf syntaktische Fehler geprüft. - Nach erfolgreicher Übersetzung und dem Link-Vorgang kann das Programm gestartet werden. - Bei jeder Änderung muss das gesamte Programm neu übersetzt werden. Seite 31 von 37

32 Interpreter - Interpreter gehen Zeile für Zeile durch den Quelltext. - Eine Zeile wird hierbei auf syntaktische Korrektheit geprüft und dann sofort ausgeführt. - Danach wird die nächste Zeile bearbeitet. - Im Gegensatz zum Compiler erstellt der Interpreter kein eigenes, lauffähiges Programm. - Von daher muss z.b. bei der Weitergabe immer sichergestellt sein, dass der Empfänger auch über den Interpreter verfügt. Seite 32 von 37

33 Entwicklungsprozess für C++Programme - Der Editor unterstützt den Programmierer bei der Eingabe der Quelldatei z.b. Beispiel.cpp. - Mit dem Präprozessor wird die Quelldatei für den Übersetzungsvorgang vorbereitet. - Der Compiler übersetzt die Quelldatei in Maschinensprache. Als Resultat des erfolgreichen Übersetzungsvorgangs erhält man das Objektprogramm Beispiel.obj. Seite 33 von 37

34 Entwicklungsprozess für C++Programme - Der Linker fügt dem Objektprogramm andere Objektprogramme, z.b. aus Programm-Bibliotheken hinzu. Es resultiert ein ausführliches Maschinenprogramm Beispiel.exe. - Der Lader transferiert das ausführbare Maschinenprogramm in den Hauptspeicher und startet es. - Der Debugger wird zur Analyse des Quellprogramms und für Tests eingesetzt. Seite 34 von 37

35 C++ Historie Martin Richards entwickelte BCPL, assemblernahe Sprache Simula 67, Programmiersprache für mathematisch technische Probleme und Simulation, erste objektorientierte Konzepte Ken Thompson entwickelte B, eine assemblernahe Sprache; Unix Betriebssystem für PDP Dennis Ritchie (Bell Labs) entwirft C; rechnerunabhängige Sprache zur Portierung von Unix auf PDP 11 Seite 35 von 37

36 C++ Historie Kernighan und Ritchie geben das erste Referenzbuch zu C heraus Start der Arbeiten an C mit Klassen erster Entwurf von C++ durch Bjarne Stroustrup; Bell- Labs in den USA Bjarne Stroustrup veröffentlicht das Buch: The C++ Programming Language Seite 36 von 37

37 C++ Historie Veröffentlichung des ersten reinen C++ Compilers für PCs und Workstations American National Standards Institute (kurz: ANSI) veröffentlicht den ersten C Standard erste C++ Version von Borland (heute: Inprise) erste C++ Version von Microsoft Veröffentlichung des ANSI C++ Standards ISO/IEC Seite 37 von 37

38 Kapitel 2 Einführung in C++ Seite 1 von 29

39 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29

40 Höhere Elemente - Mit den im Zeichensatz enthaltenen Zeichen werden folgende Elemente gebildet: o Schlüsselwörter o Namen o Konstanten o Operatoren o Interpunktionszeichen Seite 3 von 29

41 Schlüsselwörter - Schlüsselwörter haben eine durch die Programmiersprache festgelegte Bedeutung. asm auto break case catch char class const continue default delete do double else enum extern float for friend goto if inline int long new operator private protected public register return short signed sizeof static struct switch template this throw try typedef union unsigned virtual void volatile while Seite 4 von 29

42 Namen - In einem Programm werden Variablen, Funktionen usw. Namen (Bezeichner) zugeordnet. - Ein Name beginnt mit einem Buchstaben oder einem Unterstrich. - Er besteht aus einer Folge von Buchstaben, Ziffern und dem Unterstrich. - Ein Name hat eine vom Compiler abhängige Länge von z.b. 255 Zeichen. Seite 5 von 29

43 Namen - Groß- und Kleinschreibung wird unterschieden. - Namen von Variablen sollten mit Kleinbuchstaben beginnen. - Konstanten sollten groß geschrieben werden (z.b.: PI). - Ein C++ Schlüsselwort darf nicht als Name verwendet werden. volumen PI _anzahl_werte feldnummer16 FeldNummer16 Seite 6 von 29

44 Konstanten - Konstanten sind nicht veränderbare Daten innerhalb eines Programms. - Jeder Konstanten ist eindeutig ein Datentyp zugeordnet. - Die spezifische Schreibweise der Konstanten hängt von ihrem Datentyp ab Seite 7 von 29

45 Operatoren - Operatoren dienen der Verknüpfung von Operanden. - Es sind für jeden Datentyp Operatoren vordefiniert. - Bsp: Addition + Division / Oder Seite 8 von 29

46 Interpunktionszeichen - Ein Beispiel für ein Interpunktionszeichen ist das Semikolon am Ende jeder Anweisung. a = 1; cin >> radius; Seite 9 von 29

47 Trennung von Anweisungen - Es können eine oder mehrere Anweisungen in einer Zeile stehen. - Am Ende jeder Anweisung muss ein Semikolon stehen. a = 1; b = 2; c = 3; Seite 10 von 29

48 Kommentare - C++ Kommentare beginnen mit // und reichen bis zum Ende der Zeile. // Dies ist eine Kommentarzeile a = 1; // Dies ist ein Kommentar Seite 11 von 29

49 Kommentare - Kommentare im C-Stil sind auch erlaubt, und dienen meist zur vorübergehenden Ausblendung von Programmcode. - Dadurch ist das Ausblenden eines ganzen Abschnittes möglich. /* Dies ist ein Kommentar */ /* volumen = 4.0 / 3.0 * PI * pow(radius, 3); cout << "Volumen = " << volumen << endl; */ Seite 12 von 29

50 Fortsetzungszeilen - In C++ ist es möglich, eine Zeile in der darauf folgenden Zeile fortzusetzen. volumen = 4.0 / 3.0 * PI * pow(radius, 3); Seite 13 von 29

51 Leerzeichen - Innerhalb von Schlüsselwörtern, Namen, Konstanten (außer Zeichenkonstanten) und Operatoren (z.b. >>) dürfen keine Leerzeichen verwendet werden. Seite 14 von 29

52 Das Hallo Welt -Programm Zeile Befehl 1 #include <iostream> 2 using namespace std; 3 void main() 4 { 5 cout << "Hallo Welt "; // Dies ist ein Kommentar 6 } Seite 15 von 29

53 Das Hallo Welt -Programm - Dieses Programm gibt den Text Hallo Welt auf dem Bildschirm aus. - Ein C++ Programm besteht mindestens aus der globalen Funktion main. Sie ist das Hauptprogramm und darf auch nur main heißen! - In Zeile 1 steht die Präprozessor-Anweisung. - Zeile 2 gibt den Namensraum an, in dem die genutzten Befehle zu finden sind. (Der Befehl cout ist zu finden im Namensraum std ) - Ab Zeile 3 wird die Funktion main definiert. Seite 16 von 29

54 Das Hallo Welt -Programm - Zeile 4 und 6 begrenzen einen Block. Dieser ist der Funktionsrumpf von main. - Hinter cout << "Hallo Welt"; steht ein Kommentar - Kommentare werden mit // eingeleitet. Alles, was hinter den // folgt, wird nicht abgearbeitet. - Jeder Befehl innerhalb der geschweiften Klammern { } wird durch ein Semikolon abgeschlossen. (Bsp.: cout << "Hallo Welt";) Seite 17 von 29

55 Das zweite C++-Programm Zeile Befehl 1 #include <iostream> // cin/cout sind hier enthalten 2 #include <cmath> // pow ist hier enthalten 3 using namespace std; 4 void main() 5 { 6 double volumen, radius; 7 const double PI = ; 8 cout << "Radius der Kugel eingeben: "; 9 cin >> radius; 10 volumen = 4.0 / 3.0 * PI * pow (radius, 3); 11 cout << "Volumen = " << volumen << endl; 12 } Seite 18 von 29

56 Das zweite C++-Programm - Dieses Programm berechnet das Volumen einer Kugel bei gegebenem Radius. - In Zeile 1 und 2 stehen die Präprozessor-Anweisungen. - In Zeile 3 steht die using-anweisung - Ab Zeile 4 wird die Funktion main definiert. - In Zeile 5 und 12 umschließen den Funktionsrumpf der Funktion main. Seite 19 von 29

57 Das zweite C++-Programm - In Zeile 6 werden die Variablen volumen und radius definiert. - In Zeile 7 wird die Konstante PI definiert. - In Zeile 8 und 11 werden Zeichenfolgen und der Wert von volumen ausgegeben. - In Zeile 9 steht die Eingabe für die Variable radius. - In Zeile 10 findet man die Berechnung für volumen. - Die vorhandenen // in Zeile 1 und 2 dienen wieder der Einleitung eines Kommentars. Seite 20 von 29

58 Blöcke - Mit Blöcken fasst man mehrere Befehle und Deklarationen zu einer Einheit zusammen. - Innerhalb eines Blocks können lokale Variablen definiert werden. - Der Rumpf einer Funktion (zum Beispiel bei main) muss ein Block sein. - Blöcke dürfen beliebig ineinander geschachtelt sein. Seite 21 von 29

59 Blöcke - Beispiel #include <iostream> using namespace std; void main() { int a, b; a = 1; b = 2; cout << a << b << endl; { int b = 5, c = 3; cout << a << b << c << endl; { int d = 4; cout << a << b << c << d << endl; } } } Seite 22 von 29

60 Header-Dateien - Oberhalb der Funktion main werden Header-Dateien eingebunden. #include <iostream> - Diese, mit Doppelgatter # beginnenden Zeilen, sind sogenannte Präprozessoranweisungen. - Der Präprozessor erzeugt entsprechend der Anweisung den Quelltext, der dann vom Compiler übersetzt wird. - Am Ende einer Präprozessor-Anweisung steht kein Semikolon. Seite 23 von 29

61 Header-Dateien - Header-Dateien sind Textdateien, die u.a. weitere Befehle enthalten (zb cout, cin). - Header-Dateien werden mit der include-anweisung eingebunden, um diese Befehle im Programm nutzen zu können. Seite 24 von 29

62 Header-Dateien - Spitze Klammern werden bei Standard-Header-Dateien verwendet. - Zur Einbindung von selbst verfassten Header-Dateien verwendet man Anführungszeichen. #include <math.h> #include "Test.h" Seite 25 von 29

63 Header-Dateien - Alle in einer Header-Datei deklarierten Namen sind global verfügbar. - Das kann bei großen Programmen zu Namenskonflikten führen. Seite 26 von 29

64 Header-Dateien - Daher gibt es in C++ z.b. zur Header-Datei math.h noch eine Header-Datei cmath, die dieselben Namen in einem Namensbereich std deklariert. #include <math.h> entspricht #include <cmath> using namespace std; Seite 27 von 29

65 Formatierungsregeln für Quelldateien - In den obigen Beispielen wurden einige Regeln zur Formatierung eines C++ Quellprogramms befolgt: - Jeder neue Block wird um eine bestimmte Anzahl an Leerzeichen oder Tabs eingerückt. - Blockbegrenzungen stehen immer in einer gesonderten Zeile. - Jede Funktion beginnt mit der ersten Spalte (steht also ganz links). Seite 28 von 29

66 Formatierungsregeln für Quelldateien - Bei längeren Anweisungen sollte der Übersicht halber nicht mehr, als eine Anweisung pro Zeile geschrieben werden. - Keine Zeile sollte mehr, als 80 Zeichen lang sein, um die Lesbarkeit zu erhöhen. Seite 29 von 29

67 Kapitel 3 Datentypen und Variablen Seite 1 von 18

68 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt. - Für jeden Datentyp gibt es eine Festlegung, in welcher Weise Konstanten eindeutig dargestellt werden können. - In C++ gibt es eine Reihe vordefinierter Datentypen. - Aus den vordefinierten Datentypen können weitere Datentypen zusammengesetzt werden. Seite 2 von 18

69 Datentypen - Einführung - In dieser Tabelle sind die arithmetischen Datentypen aufgelistet: Datentyp Länge Wertebereich von bis char 1 Byte int 4 Byte float 4 Byte ± ± double 8 Byte ± ± Seite 3 von 18

70 Ganzzahlige Konstanten - Ganze Zahlen (ganzzahlige Konstanten) werden unter den Datentyp int gespeichert. - Der Computer speichert die Zahlen aber nicht in der Form, wie wir sie benutzen. (Also z.b. die Zahl 6 wird nicht als "6" gespeichert.) - Die Speicherung erfolgt als Binärzahl. (z.b für die Zahl 6) - Um auch negative Zahlen speichern zu können, wird die Zahl bei den meisten Rechenwerken in der Zweierkomplementdarstellung gespeichert. Seite 4 von 18

71 Ganzzahlige Konstanten Beispiel: 4 wird im Computer so gespeichert: 1. Vorzeichen ignorieren und ins Binärsystem umrechnen 4 => Seite 5 von 18

72 Ganzzahlige Konstanten Beispiel: -4 wird im Computer so gespeichert: 1. Vorzeichen ignorieren und ins Binärsystem umrechnen 4 => Invertieren, da negativ Eine 1 addieren, da negativ => Seite 6 von 18

73 Ganzzahlige Konstanten - Durch die Speicherung der Zahlen in Zweierkomplementdarstellung können wir auf dem vorgesehenen Platz zwar nur halb so viele Zahlen speichern. - Jedoch ermöglicht uns dies, dass die Verarbeitung von positiven und negativen Zahlen im Rechenwerk gleich bleiben kann. Ansonsten müsste der Computer bei Berechnungen positive und negative Zahlen intern unterschiedlich behandeln. Seite 7 von 18

74 Ganzzahlige Konstanten - Eingabe - Ganzzahlige Konstanten können dezimal, oktal oder hexadezimal in einem C-Programm angegeben werden. - Die Unterscheidung wird anhand der ersten Ziffer vorgenommen. Darstellung 1. Ziffer Beispiel dezimal 1 bis oktal hexadezimal 0x 0xC2-0x3D Seite 8 von 18

75 Beispiel #include <iostream> using namespace std; void main () { cout << 10; cout << 012; cout << 0xa; } Seite 9 von 18

76 Ganzzahlige Konstanten - Ausgabe - Ganzzahlige Konstanten können dezimal, oktal oder hexadezimal ausgegeben werden. - Die Darstellung wird bestimmt durch den Befehl setbase(). Seite 10 von 18

77 Beispiel #include <iostream> #include <iomanip> using namespace std; void main () { int var = 10; cout << "Die Zahl " << var << " ist" << endl cout << "hexadezimal: " << setbase(16) << var << endl; cout << "oktal: " << setbase(8) << var << endl; cout << "dezimal: " << setbase(10) << var << endl; } Die Zahl 10 ist hexadezimal: a oktal: 12 dezimal: 10 Seite 11 von 18

78 Zahlensysteme - Umwandlung einer Dualzahl in eine Dezimalzahl: (010111) 2 = = (23) 10 - Umwandlung einer Oktalzahl in eine Dezimalzahl: (167) 8 = ( ) = (119) 10 - Umwandlung einer Hexadezimalzahl in eine Dezimalzahl: (C2) 16 = ( ) = (194) 10 Seite 12 von 18

79 Gleitkomma Konstanten - Der Standarddatentyp für Gleitkomma Konstanten ist double. - Die Abspeicherung erfolgt im IEEE-Format (Institute of Electrical and Electronics Engineers) durch Verwendung: eines Vorzeichenbits, 11 Exponentenbits und 52 Mantissenbits. - Die Genauigkeit der Darstellung ist auf ca. 15 Stellen begrenzt. Seite 13 von 18

80 Gleitkomma Konstanten - Beispiele für die Ein- und Ausgabe von Gleitkomma Konstanten (Gleitkommazahlen) E E+15 Seite 14 von 18

81 Definition einer Variablen - Bei der Definition einer Variablen wird der Variablen eine Speicherstelle zugewiesen. Diese kann beschrieben und ausgelesen werden. int anzahl; double kraft; double volumen, radius; Seite 15 von 18

82 Gültigkeitsbereich von Variablen - Variablen können innerhalb und außerhalb von Blöcken deklariert werden. - Wird eine Variable innerhalb eines Blocks deklariert, so hat sie nur hier Gültigkeit. Man nennt sie deshalb eine lokale Variable. - Wird eine Variable außerhalb eines Blocks, d.h. außerhalb von Funktionsrümpfen deklariert, so hat sie von ihrer Position an Gültigkeit. Sie wird globale Variable genannt. Seite 16 von 18

83 Initialisierung von Variablen - Man kann Variablen auch definierte Anfangswerte zuordnen. - Eine Variable sollte vor ihrer ersten Verwendung initialisiert werden. int anzahl = 1000; double PI = ; int a = 2, b = 3; Seite 17 von 18

84 Benannte Konstanten - Konstanten kann ein Name zugeordnet werden. - Wird bei der Initialisierung einer Variablen vor den Datentyp das Schlüsselwort const geschrieben, so handelt es sich um eine benannte Konstante. const double PI = ; Seite 18 von 18

85 1 Kapitel 4 Ein- & Ausgabe Seite 1 von 16

86 1 Ein- und Ausgabe - Für die Ausgabe auf die Standardausgabe (üblicherweise der Monitor) kann das Ausgabe-Objekt cout verwendet werden. - Für die Eingabe vom Standardeingabegerät (Tastatur) wird das Eingabe-Objekt cin verwendet. Seite 2 von 16

87 1 Ausgabe - cout - Beispiele: cout << "Texteingabe"; cout << x; cout << a << b; cout << c << d << endl; cout << "y = " << y << endl; Seite 3 von 16

88 1 Ausgabe - cout - Am Ende einer cout-anweisung wird kein automatischer Zeilenvorschub eingefügt. Dies erreicht man durch Einfügen des Manipulators endl in den Ausgabestream. - Bei der Ausgabe einer arithmetischen Größe werden so viele Stellen wie benötigt ausgegeben. - Bei der Ausgabe von Gleitkommazahlen werden diese in Abhängigkeit von ihrem Wert mit oder ohne Exponenten ausgegeben. Seite 4 von 16

89 1 Ausgabe-Manipulatoren - Die Breite des Ausgabefeldes kann mit dem Manipulator setw(n) beeinflusst werden. - n gibt die Anzahl der Stellen des Ausgabefeldes an. - Dieser Manipulator wirkt nur auf die direkt folgende Ausgabe und gilt für alle Datentypen. cout << " "; cout << setw(15) << 1.602E e-019 Seite 5 von 16

90 1 Ausgabe-Manipulatoren - Die Anzahl der signifikanten Stellen bei der Ausgabe kann über den Manipulator setprecision(n) beeinflusst werden. - Der Standardwert für n ist 6. - Die Einstellung bleibt für alle weiteren Ausgaben bestehen! cout << setprecision(10) << 10.0/3.0 << endl; Seite 6 von 16

91 1 Ausgabe-Manipulatoren - Zur Verwendung der Manipulatoren muss die Datei iomanip eingebunden werden: #include <iomanip> Seite 7 von 16

92 1 Ausgabe-Manipulatoren (kompakt) Methode setw(n) Beschreibung Gibt eine Mindestausgabebreite von n Zeichen vor. Die Ausgabe wird rechtsbündig angeschlagen und links mit Leerzeichen aufgefüllt. Die Ausgabebreite wird bei Bedarf kommentarlos überschritten. Gilt nur immer für die nächste Ausgabe! Seite 8 von 16

93 1 Ausgabe-Manipulatoren (kompakt) Methode setprecision(n) Beschreibung Gibt an, wie viele Stellen einer Zahl ausgegeben werden sollen. (Standardwert für n ist 6.) Gilt für Vor- und Nachkommastellen. Gibt man im Ausgabestrom das Schlüsselwort "fixed" an, so gilt n nur für die Nachkommastellen. setprecision gilt für alle nachfolgenden Ausgaben. Seite 9 von 16

94 1 Eingabe - cin - Die Werte der Variablen werden in der Reihenfolge eingegeben, in der sie in der cin-liste aufgeführt sind. - Die Werte werden durch Leerzeichen oder durch Return getrennt. Die Eingabe wird mit Return abgeschlossen. double x,y,z; cin >> x >> y >> z; Eingabe: Seite 10 von 16

95 1 Eingabe - cin - Eingabefehler kann man erkennen, indem man sie durch fail abfängt: if (cin.fail()) cout << "Eingabefehler!" << endl; Seite 11 von 16

96 1 Escape-Sequenzen - Graphisch nicht darstellbare Zeichen können mit Escape- Sequenzen dargestellt werden. - Um sie darzustellen, werden sie als zwei Zeichen geschrieben. - Eingeleitet werden sie mit \. - Sie benötigen aber trotzdem nur ein Byte. Seite 12 von 16

97 1 Escape-Sequenzen Zeichen Bedeutung \a Klingelzeichen \b Backspace \f Seitenvorschub \n Neue Zeile \r Wagenrücklauf \t Tabulator \0 String-Ende \\ Backslash \ Anführungszeichen \ Hochkomma \xhh Numerischer Wert eines Zeichens hexadezimal Seite 13 von 16

98 1 Beispiel #include <iostream> using namespace std; void main () { cout << "\tdies ist \n\tein Beispiel \n\tmit "; cout << "Escape-Sequenzen." << "\n"; } Dies ist ein Beispiel mit Escape-Sequenzen. Seite 14 von 16

99 1 Beispiel #include <iostream> #include <cmath> using namespace std; void main () { double a = 8.8, b = 7.24, c = 5.8; double y; y = a + sqrt(b - c); cout << "y = " << y << endl; } y = 10 Seite 15 von 16

100 1 Beispiel #include <iostream> #include <cmath> Zahl Wurzel #include <iomanip> using namespace std; void main () { double x = 1.357, y = 1.821, z = 2.092; cout << setprecision(4); cout << "Zahl" << "\t" << "Wurzel" << endl; cout << x << "\t" << sqrt(x) << endl; cout << y << "\t" << sqrt(y) << endl; cout << z << "\t" << sqrt(z) << endl; } Seite 16 von 16

101 Kapitel 5 Arithmetische Operatoren Seite 1 von 16

102 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier Operanden bewirken. Seite 2 von 16

103 Arithmetische Operatoren - Wie die Berechnung durchgeführt wird, entscheiden die Operatoren. - Sind bei der Division beide Operanden ganze Zahlen, ist es eine Ganzzahl-Divison. - Ist bei der Division hingegen mindestens ein Operand eine Gleitpunktzahl, so ist es eine Gleitpunkt-Divison. Seite 3 von 16

104 Arithmetische Operatoren Operatoren Bedeutung Bemerkung ++ Inkrement unär -- Dekrement unär + Vorzeichen Plus unär - Vorzeichen Minus unär * Multiplikation binär / Division binär % Modulo binär, ganzzahlig + Addition binär - Subtraktion binär Seite 4 von 16

105 Merkwürdige Ganzzahl-Arithmetik - Es gibt einen Unterschied zwischen dem, was unser Taschenrechner und dem, was der Computer berechnet. Operation Taschenrechner Computer 7/ / /2 + 1/2 1.0/ /2.0 1/ /2.0 Seite 5 von 16

106 Operatorenliste Operatoren Auswertrichtung Priorität Bemerkung () [] ->. li -> re hoch Klammer, Indexop, Komponentenop! ~ * & (Typ) re -> li unäre Operatoren * / % li -> re arithmetische Operatoren + - li -> re arithmetische Operatoren << >> li -> re Shift-Operatoren < <= > >= li -> re Vergleichsoperatoren ==!= li -> re Vergleichsoperatoren & li -> re Bitoperatoren ^ li -> re Bitoperatoren li -> re Bitoperatoren && li -> re logische Operatoren li -> re logische Operatoren?: li -> re Auswahloperator = += -= *= /= %= etc. re -> li Zuweisungsoperator, li -> re niedrig Ausdrucksfolge Seite 6 von 16

107 Arithmetische Ausdrücke - Ein Ausdruck kann im einfachsten Fall eine Konstante oder eine Variable sein. - Meist handelt es sich aber um eine Berechnung unter Verwendung von Operatoren. 7.2 anzahl a + b + c Seite 7 von 16

108 Arithmetische Ausdrücke - Vor dem Ausführen einer binären Operation werden die Datentypen der Operanden angeglichen. - Die Anpassung erfolgt in der Weise, dass der kleinere Datentyp auf den größeren Datentyp erweitert wird. - Das Ergebnis hat dann den größeren Datentyp. char -> unsigned char -> short -> int -> unsigned int -> long -> unsigned long -> float -> double -> long double Seite 8 von 16

109 Arithmetische Ausdrücke - Beispiele Ausdruck * / / / 3 * * * 3 % Ergebnis Seite 9 von 16

110 Arithmetische Wertzuweisung - Einer arithmetischen Variablen kann der Wert eines arithmetischen Ausdrucks zugewiesen werden. - Der Zuweisungsoperator ist das = Zeichen. - Hat die Variable auf der linken Seite des Zuweisungsoperators einen anderen Datentyp als der Ausdruck auf der rechten Seite, so wird die rechte Seite an den Datentyp der linken Seite angeglichen. int i = 1.25 // i = 1 float x = 7.1E+122 // Compiler-Warnung Seite 10 von 16

111 Arithmetische Wertzuweisung - Eine Wertzuweisung ist selbst wieder ein Ausdruck und liefert den zugewiesenen Wert. z = 12 - ist ein Ausdruck und liefert den Wert 12. x = (y = (z = 12)); x = y = z = 12; Seite 11 von 16

112 Arithmetische Wertzuweisung Schreibweise Bedeutung x += 1 x = x + 1 x -= 1 x = x -1 x *= 2 x = x * 2 x /= 2 x = x / 2 x %= 2 x = x % 2 x++ Erhöht x nach der Verwendung um 1 ++x Erhöht x vor der Verwendung um 1 x-- Verringert x nach der Verwendung um 1 --x Verringert x vor der Verwendung um 1 Seite 12 von 16

113 Mathematische Funktionen - In der Standard-Header-Datei cmath sind mathematische Funktionen aufgeführt. y = sqrt(x); z = sin(w); a = pow(2,10); (Wobei Visual C++ bei Einbindung von <iostream> viele, viele weitere Bibliotheken automatisch auch hinzufügt.) Seite 13 von 16

114 Mathematische Funktionen Funktionsprototyp Bedeutung double sin(double x); Sinus; x im Bogenmaß double cos(double x); Cosinus; x im Bogenmaß double tan(double x); Tangens; x im Bogenmaß double atan(double x); Arkus Tangens liefert Winkel im Bogenmaß double exp(double x); e x double log(double x); ln(x) (für x > 0) double pow(double x, x y (für (x!= 0 oder y > 0) und (x >= 0 double y); oder y ganzzahlig)) double sqrt(double x); Quadratwurzel von x (für x >= 0) double fabs(double x); x Absolutbetrag Seite 14 von 16

115 Kommaoperator - Mit dem Kommaoperator können dort mehrere Ausdrücke angegeben werden, wo sonst nur ein Ausdruck stehen darf. - Die Ausdrücke werden von links nach rechts ausgewertet. - Der Wert des Kommaoperator-Ausdrucks hat den Wert und den Typ des am weitesten rechts stehenden Einzelausdrucks. Seite 15 von 16

116 Kommaoperator #include <iostream> using namespace std; void main() { int a, b, c; a = (b = 2, c = 3, b * c); cout << a << endl; } 6 Seite 16 von 16

117 Kapitel 6 Vergleichsoperatoren Seite 1 von 6

118 Vergleichsoperatoren - Vergleichsoperatoren liefern als Ergebnis die booleschen Werte true oder false. - In C++ sind true und false die beiden möglichen Werte einer Variablen vom Datentyp bool. - Der Datentyp bool kann zu den arithmetischen Datentypen gezählt werden. x > 10 nenner!= 0 Seite 2 von 6

119 Vergleichsoperatoren - Vor einem Vergleich werden beide Operanden auf den gleichen Datentyp gebracht. - true wird intern durch den Wert 1 und false durch den Wert 0 abgebildet. - Bei Vergleichsoperationen wird außerdem jeder numerische Wert ungleich 0 als true interpretiert und der Wert 0 als false. if (2) cout << "true" << endl; Ausgabe: true Seite 3 von 6

120 Vergleichsoperatoren Operator Bedeutung == gleich (2 Gleichheitszeichen!)!= ungleich < kleiner <= kleiner oder gleich > größer >= größer oder gleich Seite 4 von 6

121 Vergleichsoperatoren - Vor einem Vergleich werden beide Operanden auf den gleichen Datentyp gebracht. bool b; int a = 10; b = a < 1.5; cout << b << endl; Ausgabe: 0 Seite 5 von 6

122 Logische Operatoren Logische Operatoren && Bedeutung Logisches UND (Konjunktion): liefert true, wenn beide Operanden true sind Logisches ODER (Disjunktion): liefert true, wenn mindestens einer der beiden Operanden true ist! Logisches NICHT (Negation): liefert true, wenn der Operand false ist und liefert false, wenn der Operand true ist Seite 6 von 6

123 Kapitel 7 Verzweigungen/Bedingungen Seite 1 von 12

124 Verzweigungen - Verzweigungen werden eingesetzt, wenn eine Befehlsfolge nur unter bestimmten Bedingungen ausgeführt werden soll. - In C/C++ wird dies durch das Konstrukt if/else erreicht. - Sinngemäß bedeutet das if/else Konstrukt: Wenn die Bedingung zutrifft, mache das (Befehlszeilen im if-block). Ansonsten mache etwas anderes (Befehlszeilen im else-block). Seite 2 von 12

125 if/else -Anweisung - Mit der if/else -Anweisung kann eine von zwei Anweisungen abhängig von einer Bedingung ausgewählt werden. if (x > 10) { cout << "x ist größer als zehn" << endl; } else { cout << "x ist kleiner oder gleich zehn" << endl; } Seite 3 von 12

126 if/else -Anweisung - Nach dem Schlüsselwort i folgt ein logischer Ausdruck in Klammern. - Liefert der logische Ausdruck den Wert true (ungleich 0), dann wird die if -Anweisung ausgeführt. Im anderen Fall wird die else -Anweisung ausgeführt. Seite 4 von 12

127 if/else -Anweisung - Wenn eine Anweisungsfolge nur aus einer Anweisung besteht, können die Blockklammern weggelassen werden. if (x > 10) cout << "x ist größer als zehn" << endl; else cout << "x ist kleiner oder gleich zehn" << endl; Seite 5 von 12

128 if/else -Anweisung Seite 6 von 12

129 if -Anweisung - Der else -Zweig kann auch entfallen. if (nenner == 0) cout << "Division durch Null!" << endl; Alternative Schreibweise: if (nenner == 0) cout << "Division durch Null!" << endl; Seite 7 von 12

130 else/if -Anweisung - Mit der else/if -Anweisung können eine oder mehrere weitere Bedingungen eingebunden werden. if (x >= -1 && x <= 1) cout << "x liegt im Intervall [-1,1]" << endl; else if (x > 10) cout << "x ist größer als zehn" << endl; else if (x < 5) cout << "x ist kleiner als 5" << endl; else cout << "x hat den Wert:" << x << endl; Seite 8 von 12

131 else/if -Anweisung Seite 9 von 12

132 switch/case -Anweisung - Mit der switch/case Anweisung ist es möglich, mehr als zwei Fälle zu unterscheiden. - Eine Folge von else/if Anweisungen lässt sich auch durch eine switch/case Anweisung realisieren. - Nach jedem case folgt ein konstanter Ausdruck. - Man kann einen sogenannten default-fall einfügen, der abgearbeitet wird, wenn kein anderer Fall zutrifft. Seite 10 von 12

133 switch/case -Anweisung cin >> zahl switch (zahl) { case 4: cout << "vier"; break; case 5: cout << "fuenf"; break; default: cout << "keine Zahl"; } Seite 11 von 12

134 switch/case -Anweisung Seite 12 von 12

135 Kapitel 8 Nassi-Shneiderman-Diagramm (Struktogramm) Seite 1 von 14

136 Nassi-Shneiderman-Diagramm - auch genannt: Struktogramm - dient der strukturierten Programmierung - reduziert das Gesamtproblem in mehrere Teilprobleme - ist programmiersprachenunabhängig und kann als eine Art Bauplan für das Programm verstanden werden - Jede Anweisung wird durch ein entsprechendes Symbol dargestellt. Seite 2 von 14

137 Einfache Anweisung - Zur Darstellung einer einzeiligen Anweisung, wie z.b. cout. Seite 3 von 14

138 Einfache Anweisung - Beispiel int zahl = 3; zahl = zahl % 2; cout << "Die Zahl lautet: " << zahl << endl; Seite 4 von 14

139 Bedingung if/else - Bei zutreffender Bedingung wird der "ja-fall", ansonsten der "nein-fall" abgearbeitet. Seite 5 von 14

140 Bedingung if/else - Beispiel if ( zahl == 4 ) // zu prüfende Bedingung { cout << "vier"; // Anweisungsblock 1 } else { cout << "nicht vier"; // Anweisungsblock 2 } Seite 6 von 14

141 Fallauswahl switch/case - Der Wert der Variablen wird geprüft und daraufhin der zugehörige Anweisungsblock abgearbeitet. - Es kann ein Alternativfall eingefügt werden, falls kein Wert zutrifft (sogenannter default-fall). Seite 7 von 14

142 Fallauswahl switch/case - Beispiel switch (zahl) // Variable { case 3: // Wert cout << "drei"; // Anweisungsblock 1 break; case 4: cout << "vier"; // Anweisungsblock 2 break; default: // sonst -Fall cout << "falsche Zahl"; break; } Seite 8 von 14

143 Kopfgesteuerte Schleife - Die Bedingung wird zuerst geprüft. Ist sie wahr, wird der Anweisungsblock abgearbeitet. Seite 9 von 14

144 Kopfgesteuerte Schleife - Beispiel int zahl = 0; while (zahl < 10) { cout << zahl << endl; zahl++; } // Bedingung // Anweisungsblock // Anweisungsblock Seite 10 von 14

145 Fußgesteuerte Schleife - Der Anweisungsblock wird ohne Prüfung zunächst einmal abgearbeitet. Danach folgt die Prüfung, ob der Block ein weiteres Mal durchlaufen werden soll. Seite 11 von 14

146 Fußgesteuerte Schleife - Beispiel int zahl = 0; do { cout << zahl << endl; zahl++; } while (zahl < 10); // Anweisungsblock // Anweisungsblock // Bedingung Seite 12 von 14

147 Endlos-Schleife - Die Bedingung ist immer wahr. - Die Schleife kann deshalb nur durch ein break verlassen werden. Seite 13 von 14

148 Endlos-Schleife - Beispiel int zahl = 0; while (true) // Bedingung, die immer gültig ist { cout << zahl << endl; // Anweisungsblock zahl++; // Anweisungsblock } Seite 14 von 14

149 Kapitel 9 Schleifen Seite 1 von 25

150 Schleifen - Schleifen werden zur wiederholten Ausführung von Anweisungen verwendet. - Es werden drei Arten von Schleifen unterschieden: o for -Schleife o while -Schleife o do / while -Schleife Seite 2 von 25

151 Schleifen - Die Anzahl der Schleifendurchläufe wird durch Bedingungen festgelegt. - Bei der for und der while -Schleife stehen die Bedingungen am Beginn der Schleife. - Bei der do / while -Schleife am Ende. Seite 3 von 25

152 for -Schleife - Ist die Anzahl der Schleifendurchläufe im Voraus bekannt, wird die for -Schleife verwendet. - Die Elemente zur Kontrolle der Schleife werden im Schleifenkopf zusammengefasst. for ([Initialisierung]; [Abbruchbedingung]; [Reinitialisierung]) Anweisung; Seite 4 von 25

153 for -Schleife - Die Initialisierung erfolgt nur einmal und wird als Erstes vorgenommen. - Die Abbruchbedingung wird zu Beginn jedes Schleifendurchlaufs bewertet. - Ist der Wert der Abbruchbedingung false, wird die Schleife beendet. - Ist der Wert true, wird die Anweisung (Schleifenkörper) ausgeführt und danach die Reinitialisierung durchgeführt. Seite 5 von 25

154 for -Schleife Ausgabe: int i; for (i = 1; i <= 5; i+=2) { cout << i << endl; } Seite 6 von 25

155 for -Schleife Seite 7 von 25

156 for -Schleife - Ist die Abbruchbedingung schon vor dem Eintritt in die Schleife false, wird der Schleifenkörper nicht durchlaufen. int i, j = 1; for (i = 1; j > 5; i++) cout << i << endl; Seite 8 von 25

157 for -Schleife - Soll mehr als eine Anweisung zum Schleifenkörper gehören, muss ein Block verwendet werden. int i, j; for (i = 1, j = 5; i <= 5; i += 2, j -= 2) { cout << i << " "; cout << j << endl; } Ausgabe: Seite 9 von 25

158 for -Schleife - Die Elemente zur Schleifenkontrolle im Schleifenkopf können auch weggelassen werden. - Bei folgendem Beispiel liegt eine Endlosschleife um eine leere Anweisung vor, da bei fehlender Abbruchbedingung true angenommen wird. for ( ; ; ) ; Seite 10 von 25

159 for -Schleife - Bei folgendem Beispiel handelt es sich ebenfalls um eine Endlosschleife. - Die Abbruchbedingung ist immer true. int i; for (i = 1; i < 5; i--) cout << i << endl; Seite 11 von 25

160 for -Schleife - Die Zählvariable kann auch innerhalb des Initialisierungsausdrucks definiert werden. for (int i = 1; i <= 10; i++) Seite 12 von 25

161 while -Schleife - Die while Schleife wird hauptsächlich verwendet, wenn die Abbruchbedingung erst innerhalb der Schleife festgelegt werden kann. - Es wird vor Eintritt in die Schleife geprüft, ob die Schleife durchlaufen wird. while (Ausdruck) Anweisung - Der Ausdruck kann ganzzahlig oder vom Typ bool sein. - Ist er ganzzahlig, entspricht 0 false und ungleich 0 true. Seite 13 von 25

162 while -Schleife int i = 0; while (i < 5) cout << ++i; Ausgabe: Seite 14 von 25

163 while -Schleife - Das zugehörige Struktogramm sieht wie folgt aus: Seite 15 von 25

164 do/while -Schleife - Das Abbruchkriterium der do/while Schleife steht am Ende. - Deshalb wird sie mindestens einmal durchlaufen. do Anweisung; while (Ausdruck); - Die Schleife wird durchlaufen, solange der Ausdruck den Wert true hat. - Im Gegensatz zur while Schleife muss am Ende der while -Anweisung ein Semikolon stehen. Seite 16 von 25

165 do/while -Schleife - In folgendem Beispiel wird die Benutzereingabe wiederholt, bis der eingegebene Wert im Intervall [5, 10] liegt. int i; do cin >> i; while (i < 5 i > 10); Seite 17 von 25

166 do/while -Schleife - Das zugehörige Struktogramm sieht wie folgt aus: Seite 18 von 25

167 Geschachtelte Schleifen - Schleifen dürfen ineinander geschachtelt werden. for (int i=1; i<=2; i++) { for (int j=1; j<=2; j++) { cout << i << " " << j << endl; } } Ausgabe: Seite 19 von 25

168 Geschachtelte Schleifen - Das zugehörige Struktogramm sieht wie folgt aus: Seite 20 von 25

169 break -Anweisung - Die break Anweisung wird verwendet, um eine Schleife unmittelbar zu verlassen. - Bei verschachtelten Schleifen wird nur die aktuelle Schleife verlassen. Seite 21 von 25

170 continue -Anweisung - Die continue Anweisung wird verwendet, um in einer Schleife unmittelbar die nächste Wiederholung zu beginnen. - In while und do/while Schleifen wird zur Schleifenbedingung gesprungen. - In for Schleifen wird zur Reinitialisierung gesprungen. Seite 22 von 25

171 Funktion exit - Durch Aufruf der exit Funktion kann ein Programm sofort abgebrochen werden. - Im Fehlerfall übergibt man einen Wert ungleich 0 und bei normaler Beendigung des Programms eine 0. if (i == 3) { cout << "Programm Ende" << endl; exit(0); } Seite 23 von 25

172 Umformungen - Eine do/while Schleife kann stets in eine while -Schleife umgeformt werden do/while: do { Anweisung; } while (Ausdruck); while: Anweisung; while (Ausdruck) { Anweisung; } Seite 24 von 25

173 Umformungen - Eine for Schleife kann stets in eine while -Schleife umgeformt werden for (Initialisierung; Abbruchbedingung; Reinitialisierung) Anweisung; Initialisierung; while (Abbruchbedingung) { Anweisung; Reinitialisierung; } Seite 25 von 25

174 Kapitel 10 Felder / Arrays Seite 1 von 21

175 Felder - Bisher wurden nur Variablen verwendet, die einen einzelnen Wert aufnehmen können. - Diese Variablen werden auch Skalare genannt. - Aus einer Menge von Skalaren gleichen Datentyps kann man ein Feld (array) bilden. - Die einzelnen Skalare werden dann durch Indizes unterschieden. Seite 2 von 21

176 Felder - In der Mathematik werden Felder z.b. für die Darstellung von Vektoren und Matrizen verwendet. v = ( v, v2,..., v 1 n ) A = a a... am a a a m a a a 1n 2n... mn - Vektoren sind eindimensionale und Matrizen zweidimensionale Felder. Seite 3 von 21

177 Definition von Feldern - Jedes Feldelement hat den gleichen Datentyp. Er steht vor dem Feldnamen. - Hinter dem Feldnamen steht die Angabe zur Dimensionierung. - Für jede Dimension wird die Dimensionierung in ein Paar eckige Klammern gesetzt. - Sie gibt die Anzahl der Feldelemente an, die abgespeichert werden können. - Es handelt sich um einen ganzzahligen konstanten Ausdruck. - Der Index einer Dimensionierung beginnt immer mit 0; Seite 4 von 21

178 Eindimensionale Felder - In folgendem Beispiel wird ein eindimensionales Feld mit dem Namen zahlen definiert. - Das Feld hat 20 Elemente. - Alle Elemente sind vom Datentyp int. - Die Indizes liegen im Bereich von 0 bis 19. int zahlen[20]; Seite 5 von 21

179 Eindimensionale Felder - In folgendem Beispiel wird ein eindimensionales Feld mit dem Namen werte definiert. - Das Feld hat 10 Elemente. - Alle Elemente sind vom Datentyp double. - Die Indizes liegen im Bereich von 0 bis 9. const int MAXINDEX = 9; double werte[maxindex+1]; Seite 6 von 21

180 Eindimensionale Felder - Der Zugriff auf die einzelnen Feldelemente erfolgt unter Verwendung des Indexoperators []. - Der Index muss stets innerhalb des definierten Wertebereiches liegen. - Wird der Wertebereich verlassen, können schwerwiegende Fehler auftreten. - Die Zuweisung eines Feldes an ein anderes ist nicht möglich. zahlen[0], zahlen[1],, zahlen[19] werte[0], werte[1],, werte[19] Seite 7 von 21

181 Eindimensionale Felder - In folgendem Beispiel wird ein eindimensionales Feld mit 10 Elementen definiert. - Die einzelnen Elemente werden mit den Werten 0, 1,, 9 beschrieben. const int ANZAHL = 10; double feld[anzahl]; for (int i=0; i < ANZAHL; i++) feld[i] = i; Seite 8 von 21

182 Initialisierung von eindimensionalen Feldern - Felder können bei deren Definition initialisiert (also mit einem Startwert belegt) werden. - Hierzu wird ein Wert für jedes einzelne Feldelement angegeben. double feld[5] = {0, 2, 4, 6, 8}; Seite 9 von 21

183 Initialisierung von eindimensionalen Feldern - Wird die Initialisierung am Anfang nicht durchgeführt, kann auf die einzelnen Feldelemente erst zugegriffen werden, sobald diese mit Werten gefüllt wurden. - Ein double feld[5]; cout << feld[0]; führt zum Absturz des Programms, da in dem feld[0] noch kein Wert gespeichert wurde. Seite 10 von 21

184 Initialisierung von eindimensionalen Feldern - Es ist immer ratsam, ein Feld zu initialisieren. - Eine Teilinitialisierung ist möglich. Die restlichen, nicht angegebenen Felder, werden mit 0 initialisiert: double feld[5] = {0, 2, 4}; - Leere geschweifte Klammern bewirken eine Initialisierung aller Feldelemente mit 0: double feld[5] = {}; Seite 11 von 21

185 Initialisierung von eindimensionalen Feldern - Ein double feld[5] = {}; cout << feld[0]; funktioniert demnach und liefert als Ausgabe: 0.0 Seite 12 von 21

186 Kopieren von eindimensionalen Feldern - Die Zuweisung eines Feldes an ein anderes ist nicht möglich. double felda[5] = {}; double feldb[5] = {1, 2, 3, 4, 5}; felda = feldb // Fehler!!! Seite 13 von 21

187 Kopieren von eindimensionalen Feldern - Man muss die einzelnen Elemente nacheinander kopieren. double felda[5] = {}; double feldb[5] = {1, 2, 3, 4, 5}; for (int i=0; i<5; i++) felda[i] = feldb[i]; Seite 14 von 21

188 Operator sizeof - Der Operator sizeof ermittelt die Größe des übergebenen Datentyps oder des übergebenen Objektes in Bytes. - sizeof(feld) liefert 40. Das Feld im vorherigen Beispiel hat 5 Elemente mit jeweils 8 Bytes. - sizeof(int) liefert 4. Seite 15 von 21

189 Eindimensionales Feld - Beispiel - In folgendem Beispiel wird der Benutzer zur Eingabe von maximal 10 Zahlen aufgefordert. - Die Eingabe wird mit der Eingabe eines Buchstabens beendet. - Danach werden die Zahlen sortiert und ausgegeben. - Siehe Beispiel 10 Programm zu eindimensionalen Feldern (auf der Webseite zu finden). Seite 16 von 21

190 Mehrdimensionale Felder - Felder können mit bis zu 256 Dimensionen definiert werden. - Die am häufigsten verwendeten mehrdimensionalen Felder sind zweidimensionale Felder. - Für jede Dimension muss die Anzahl der Elemente angegeben werden. int matrix[3][3]; Seite 17 von 21

191 Initialisierung von mehrdimensionalen Feldern - Es ist auch möglich, mehrdimensionale Felder zu initialisieren. int matrix[3][3] = {0, 2, 4, 1, 3, 5, 7, 8, 9}; Bedeutung: matrix = Seite 18 von 21

192 Initialisierung von mehrdimensionalen Feldern - Durch zusätzlich gesetzte Klammern kann die Zuordnungsreihenfolge verdeutlicht oder geändert werden. int matrix[3][3] = {{0, 2, 4}, {5}, {7, 8, 9}}; Bedeutung: matrix = Seite 19 von 21

193 Kopieren von mehrdimensionalen Feldern - Das Kopieren von mehrdimensionalen Feldern funktioniert analog zu der Methode bei eindimensionalen Feldern. double matrixa[3][3] = {}; double matrixb[3][3] = {1, 2, 3, 4}; for (int i=0; i<3; i++) for (int j=0; j<3; j++) matrixa[i][j] = matrixb[i][j]; Seite 20 von 21

194 Mehrdimensionale Felder - Beispiel - In folgendem Beispiel werden eine 3x3-Matrix und ein Vektor mit 3 Elementen definiert. - Es wird der Vektor in die zweite Zeile der Matrix kopiert und die Matrix dann auf den Bildschirm ausgegeben. - Siehe Beispiel 11 Programm zu mehrdimensionalen Feldern (auf der Webseite zu finden). Seite 21 von 21

195 Kapitel 11 Zeichenverarbeitung Seite 1 von 11

196 Zeichenverarbeitung - Jedem Zeichen ist ein Zahlencode zugeordnet. - Dadurch wird ermöglicht, zwischen verschiedenen Systemen Texte auszutauschen. - Es werden Zahlen, Buchstaben, Steuerzeichen, Sonderzeichen, etc in eine Zahl codiert. Seite 2 von 11

197 Zeichenverarbeitung - Im Computer weit verbreitet ist der ASCII-Code. (American Standard Code for Information Interchange amerikanischer Standardcode für Informationsaustausch) - ASCII-Code besteht aus 7-Bit Jedes Zeichen wird durch einen 7-Bit Zahlencode repräsentiert. - Dadurch können aber nicht alle verfügbaren Zeichen abgedeckt werden, weshalb man neue Code-Tabellen entwickelte. Seite 3 von 11

198 Zeichenverarbeitung - Die ASCII-Code-Tabelle umfasst das "einfache" Alphabet (!, ", #, $,..., 0, 1, 2, 3,..., A, B, C, D,..., a, b, c, d,..., {,, }) und Steuerungscodes, die z.b. für die Druckersteuerung benötigt werden - insgesamt sind das 128 Zeichen. - Nicht berücksichtigt sind darin Sonderzeichen - also deutsche Umlaute, das "ß" und andere nationale Sonderzeichen. - Diese sind erst im erweiterten ASCII-Code enthalten. ( ) Seite 4 von 11

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 29 Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 37

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 37 Skript Informatik Seite 1 von 37 Was ist Informatik? - Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere deren automatisierte Verarbeitung mit Hilfe von

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 37

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 37 Skript Informatik Seite 1 von 37 Was ist Informatik? - Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere deren automatisierte Verarbeitung mit Hilfe von

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 25 Kapitel 9 Schleifen Seite 1 von 25 Schleifen - Schleifen werden zur wiederholten Ausführung von Anweisungen verwendet. - Es werden drei Arten von Schleifen unterschieden: o for -Schleife o while -Schleife

Mehr

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

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

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe Informatik Vorlesung 03b Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe 12. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik

Mehr

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Informatik. Wiederholung Felder (Arrays), string. Vorlesung Informatik Vorlesung 04 Wiederholung Felder (Arrays), string 19. November 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Ein C++ Programm: Wiederholung #include

Mehr

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue Java - Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue Anweisung int zahl; zahl = 2; zahl = zahl * 10; int zahl; ; Jede Anweisung endet mit einem

Mehr

Einführung in die Programmierung Wintersemester 2011/12

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

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

Mehr

Einführung in die Programmierung

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

Mehr

Grundlagen der Informatik 2. Typen

Grundlagen der Informatik 2. Typen Grundlagen der Informatik 2. Typen Speicher, Speicherbedarf Ein-/Ausgabe Grundlagen der Informatik (Alex Rempel) 1 Wiederholung // root calculation #include #include using namespace

Mehr

Variablen, Konstanten und Datentypen

Variablen, Konstanten und Datentypen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Variablen, Konstanten und Datentypen Überblick

Mehr

Projekt 3 Variablen und Operatoren

Projekt 3 Variablen und Operatoren Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.

Mehr

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Übungen zur Vorlesung Wissenschaftliches Rechnen I Übungen zur Vorlesung Wissenschaftliches Rechnen I Nicolas Gauger, René Lamour, Hella Rabus Wintersemester 2007/2008 Programmierung - Einführung Programmierung - Einführung Berechnung einer Formel y =

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der

Mehr

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie

Mehr

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr. Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Erklären

Mehr

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr. Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 4 Pkt.) Gegeben

Mehr

Einführung in die Programmierung Wintersemester 2008/09

Einführung in die Programmierung Wintersemester 2008/09 Einführung in die Programmierung Wintersemester 28/9 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Darstellung von Information Inhalt Einfache Datentypen

Mehr

Hello World! Eine Einführung in das Programmieren Variablen

Hello World! Eine Einführung in das Programmieren Variablen Hello World! Eine Einführung in das Programmieren Variablen Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Wie werden Daten in Programmen gespeichert und manipuliert?

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016

Mehr

Unterlagen. CPP-Uebungen-08/

Unterlagen.  CPP-Uebungen-08/ Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen

Mehr

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen

Mehr

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue Java - Zahlen, Wahrheitswerte und Zeichen Leibniz Universität Anja Aue Kommentare Hilfe für den Entwickler. Wer hat wann welche Änderung vorgenommen? Warum werden diese Anweisungen hier ausgeführt? Bei

Mehr

Programmieren 1 C Überblick

Programmieren 1 C Überblick Programmieren C Überblick. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen

Mehr

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen . Gleitkommazahlen In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen Umrechnen von Einheiten und Währungen Jede Zahl x Q mit x 0 lässt sich folgendermaßen schreiben: x = s m e mit

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White

Mehr

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017

Mehr

C++ - Einführung in die Programmiersprache Schleifen

C++ - Einführung in die Programmiersprache Schleifen C++ - Einführung in die Programmiersprache Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue Schleifen Iterationsanweisungen. Wiederholung von Anweisungsblöcken.

Mehr

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1 Fachhochschule Stralsund Fachbereich Maschinenbau Lehrgebiet Informatik Prof. Dr.-Ing. Ch.Wahmkow Arbeitsblätter für die Lehrveranstaltung OOP I. Aufbau eines Java-Programmes JAVA 1 Escape-Sequenzen zur

Mehr

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff. Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit

Mehr

Java I Vorlesung Imperatives Programmieren

Java I Vorlesung Imperatives Programmieren Java I Vorlesung 2 Imperatives Programmieren 3.5.2004 Variablen -- Datentypen -- Werte Operatoren und Ausdrücke Kontrollstrukturen: if Imperatives Programmieren Im Kern ist Java eine imperative Programmiersprache.

Mehr

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte: Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert

Mehr

Kontrollstrukturen -- Schleifen und Wiederholungen

Kontrollstrukturen -- Schleifen und Wiederholungen Kontrollstrukturen -- Schleifen und Wiederholungen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

3 Grundstrukturen eines C++ Programms anhand eines Beispiels

3 Grundstrukturen eines C++ Programms anhand eines Beispiels 3 Grundstrukturen eines C++ Programms anhand eines Beispiels 3.1 Einige Grundbegriffe Mit Hilfe eines Programmes wird dem Computer mitgeteilt, wie er eine bestimmte Aufgabe bearbeiten soll. Es besteht

Mehr

2 Teil 2: Nassi-Schneiderman

2 Teil 2: Nassi-Schneiderman 2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung

Mehr

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte: Seite 1 von 8 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 10 Pkt.) a) Geben

Mehr

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen. C++ Teil 3 3.3 Schleifen Man kann bestimme en in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen. for-schleife for-schleife while-schleife do-while-schleife for ( Ausdruck1;

Mehr

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte: Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 10 Pkt.) a) Wer

Mehr

5. Elementare Befehle und Struktogramme

5. Elementare Befehle und Struktogramme 5. Elementare Befehle und Struktogramme Programmablauf Beschreibung des Programmablaufs mittel grafischer Symbole Beispiel : Flussdiagramme ja nein Besser : Struktogramme Dr. Norbert Spangler / Grundlagen

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen

Mehr

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue Java - Zahlen, Wahrheitswerte und Zeichen Leibniz Universität IT Services Anja Aue Kommentare Hilfe für den Entwickler. Wer hat wann welche Änderung vorgenommen? Warum werden diese Anweisungen hier ausgeführt?

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

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

Grundelemente von C++

Grundelemente von C++ - Zeichensatz - Kommentare - Token - Bezeichner - Schlüsselwörter - Einfache Typen - Literale Ganze Zahlen Reelle Zahlen Wahrheitswerte Zeichen - Variablen und Variablendeklarationen - Benannte Konstanten

Mehr

2.1 Fundamentale Typen

2.1 Fundamentale Typen 2. Elementare Typen 2.1 Fundamentale Typen C++ stellt die wichtigsten Datentypen mit passender Form der Abspeicherung und zugehörigen Rechenoperationen zur Verfügung : Boolscher Datentyp (bool) für logische

Mehr

Informatik Vorkurs - Vorlesung 2

Informatik Vorkurs - Vorlesung 2 Informatik Vorkurs - Vorlesung 2 Variablen, Arrays, Zahlensysteme Torben Achilles, 9. Oktober 2018 Inhalt Variablen & Datentypen Arrays Zahlensysteme 9. Oktober 2018 Torben Achilles Informatik Vorkurs

Mehr

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert

Mehr

Algorithmen zur Datenanalyse in C++

Algorithmen zur Datenanalyse in C++ Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39 Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in

Mehr

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr. Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert

Mehr

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems 4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung

Mehr

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08 Kapitel 4 Programmierkurs Birgit Engels, Anna Schulze Wiederholung Kapitel 4 ZAIK Universität zu Köln WS 07/08 1 / 23 2 Datentypen Arten von Datentypen Bei der Deklaration einer Variablen(=Behälter für

Mehr

Programmierkurs C++ Variablen und Datentypen

Programmierkurs C++ Variablen und Datentypen Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,

Mehr

Ausdrücke (1) Grundlegende Eigenschaften

Ausdrücke (1) Grundlegende Eigenschaften Ausdrücke () Grundlegende Eigenschaften bestehen aus Literalen, Konstanten, Variablen und Operatoren einfachster Ausdruck ist das Semikolon, es bewirkt nichts. Ausdrücke werden mit einem Semikolon abgeschlossen.

Mehr

Java-Applikationen (Java-Programme)

Java-Applikationen (Java-Programme) Java-Applikationen (Java-Programme) Eine erste Applikation: 1 2 3 4 5 6 7 8 9 10 // Quelltext HalloWelt.java // Programm gibt den Text Hallo Welt aus public class HalloWelt public static void main(string[]

Mehr

4 Formelsammlung C/C++

4 Formelsammlung C/C++ 4 Formelsammlung C/C++ 4.1 Datentypen Datentyp stdint.h type Bits Sign Wertebereich (unsigned) char uint8_t 8 Unsigned 0.. 255 signed char int8_t 8 Signed -128.. 127 unsigned short uint16_t 16 Unsigned

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for

Mehr

Java Anweisungen und Ablaufsteuerung

Java Anweisungen und Ablaufsteuerung Informatik 1 für Nebenfachstudierende Grundmodul Java Anweisungen und Ablaufsteuerung Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik

Mehr

Herzlich willkommen!

Herzlich willkommen! Programmiertechnik 1 Herzlich willkommen! Dozent: Dipl.-Ing. Jürgen Wemheuer Teil 6: Zusammenfassung und Beispiele Mail: wemheuer@ewla.de Online: http://cpp.ewla.de/ Zusammenfassung (1) 2 1. Programm in

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

3. Anweisungen und Kontrollstrukturen

3. Anweisungen und Kontrollstrukturen 3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage

Mehr

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Anweisungen mit Variablen Wiederholung Deklaration

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Wiederholung Anweisungen durch Methodenaufrufe Ausgabe

Mehr

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben Zwischenklausur Informatik, WS 206/7 4.2.206 Lösungen zu den Aufgaben. Gegeben sind folgende Dualzahlen in Zweierkomplementdarstellung. Geben Sie den jeweils zugehörigen Dezimalwert an! a) entspricht der

Mehr

Funktionales C++ zum Ersten

Funktionales C++ zum Ersten Funktionales C++ zum Ersten WiMa-Praktikum 1, Teil C++, Tag 1 Christoph Ott, Büro: Helmholtzstr.18, E22 Tel.: 50-23575, Mail: christoph.ott@uni-ulm.de Institut für Angewandte Informationsverarbeitung 26.08.08

Mehr

Schleifenanweisungen

Schleifenanweisungen Schleifenanweisungen Bisher: sequentielle Abarbeitung von Befehlen (von oben nach unten) Nun: Befehle mehrfach ausführen (= Programmschleife): for-anweisung - wenn feststeht, wie oft z.b.: eine Berechnung

Mehr

if ( Logischer Operator ) { } else { Anweisungen false

if ( Logischer Operator ) { } else { Anweisungen false if ( Logischer Operator ) { Anweisungen true else { Anweisungen false Bedingte Anweisungen Operatoren verknüpfen Variable zu neuen Ausdrücken, wir unterscheiden Arithmetische Operatoren Berechnung von

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case

Mehr

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort then S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert

Mehr

Java Ablaufsteuerung (Beispiele)

Java Ablaufsteuerung (Beispiele) Informatik 1 für Nebenfachstudierende Grundmodul Java Ablaufsteuerung (Beispiele) Kai-Steffen Hielscher Folienversion: 16. Januar 2018 Informatik 7 Rechnernetze und Kommunikationssysteme Blöcke Anweisungen

Mehr