SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Programmierpraktikum C++
Wintersemester 2013 / 2014
21. Oktober 2013 – Grundlagen & Co.

Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung
Jan G. Wieners // jan.wieners@uni-koeln.de
Kurzüberblick


Kurzwiederholung und Erweiterungen:












Präprozessordirektive.
Funktionen (und ihre Rückgabewerte)
Ausgabe (cout) und Eingabe (cin)
Regeln & Co.
Kontrollstrukturen: if
Vergleichsoperatoren
Schleifen: while, for
Fallunterscheidung: switch / case

Praxis: Übungs-/Vertiefungsaufgabe
Praxis: Hausaufgaben
Softwaretechnologie I – 14.10.2013
Erste „Hallo Welt“ Applikation:
#include <iostream>
using namespace std;
int main()
{
cout << "Willkommen beim C++ Kurs!" << endl;
return 0;
}
Softwaretechnologie I – 14.10.2013
Erste „Hallo Welt“ Applikation:
#include <iostream> Präprozessordirektive

Bindet die Quellcodedatei (iostream.h) ein

using namespace std;

Gibt an, in welchem Namensbereich wir
uns befinden („std“)

Die Hauptfunktion „main“
int main()
Der Compiler erwartet einen ganzzahligen Rückgabewert (int)
{
cout << "Willkommen beim C++ Kurs!" << endl;

return 0;
}

Die Funktion cout leitet Zeichen an den Bildschirm / die
Konsole weiter
Return 0; lässt die Funktion main() den Zahlenwert 0
zurückgeben

Geschweifte Klammern geben den Funktionsrumpf (hier: main()) an
Softwaretechnologie I – 14.10.2013
Interaktion mit der Anwendung
Variable derBenutzer vom Typ „char“
[…]
(Zeichen) wird angelegt, gleichzeitig wird
char derBenutzer [80]; Platz reserviert für 80 (von 0 bis 79)
Unterelemente

cout << "Wie heißen Sie?" << endl;
Über die Funktion cin wird die Benutzercin >> derBenutzer;
eingabe in die Variable eingelesen…
cout << "Willkommen beim C++ Kurs " <<
derBenutzer << endl; …schließlich über cout wieder ausgegeben
[…]
Merken: Trivia










Anweisungen müssen mit Semikola (;)
abgeschlossen werden
Groß-/Kleinschreibung von Funktionen, Variablen,
Konstanten, etc.
Jede Variable verfügt über einen Datentyp:
Datentypbezeichnung Variablenname
Mehrere Variablen können als durch von Kommata
getrennte Liste definiert werden:
int zahl1, zahl2, zahl3;
Variablen und Konstanten können mit einem Startwert
initialisiert werden:
int zahl = 23;
Zuweisungsoperator: Mit Hilfe von = weisen wir den
Wert der rechts vom Operator stehenden Variable
(o.ä.) der linken Variable (o.ä.) zu:
summe = zahl1 + zahl2;
Kontrollstrukturen: if
[…]
int zahl1, zahl2, resultat;
char aktion;
cout << "Bitte geben Sie eine Zahl ein: “;
cin >> zahl1;
cout << "Bitte geben Sie noch eine Zahl ein: ";
cin >> zahl2;
cout << "Was soll damit geschehen?" << endl
<< "(+ = Addieren)" << endl << "(- = Subtrahieren)„
<<endl;
cin >> aktion;
if (aktion=='+')
resultat=zahl1+zahl2;
else
resultat=zahl1-zahl2;
cout << "Das Ergebnis lautet: " << resultat << endl;
[…]

Mit der if-Anweisung
können wir den
Programmablauf
beeinflussen:
if (Bedingung) Anweisung
1;
else Anweisung 2;
Achtung: analog zu:
if(Bedingung)
{
Anweisung 1;
}
[…]
Vergleichsoperatoren








A == B
Ist A genau gleich mit B?  Achtung: ZWEI
Gleichheitszeichen!
A != B
A ist nicht gleich B
A<B
Ist A kleiner als B?
A <= B
Ist A kleiner oder gleich B?
A>B
Ist A größer als B?
A >= B
Ist A größer oder gleich B?
if
Schachtelung möglich:
if(zahlenwert == 15)
cout << “Zahl ist 15“;
else
if(zahlenwert <= 14)
cout << “Zahl ist kleiner als 15“;
else
cout << “Zahl ist größer als 15“;
Schleifen: while


Dienen dazu, Anweisungen wiederholt
auszuführen

Kontrollvariable der Schleife: zahl
zahl=0
while(zahl <= 23)
{
cout << “Zahl hat den Wert“ << zahl << endl;
zahl++;
}
Schleifen: for

for(int i = 0; i <= 23; i++)
{
cout << i << endl;
}

Kontrollvariable der Schleife: i

 for(Initialisierung der Kontrollvariable,
Definition der Endbedingung,
Veränderung der
Kontrollvariable
in jedem Lauf)
Fallunterscheidung: switch / case
Anstatt:
int variable=23;
if(variable == 15)
cout << "A";
else if(variable == 16)
cout << "B";
else if(variable == 17)
cout << "C";
else
cout << "D";
Können wir schreiben:

switch(variable)
{
case 15:
cout << "A";
break;
case 16:
cout << "B";
break;
case 17:
cout << "C";
break;
default:
cout << "D";
break;
}
*
Übungsaufgaben
Aufgabe 1:





Deklarieren Sie eine Variable vom Typ char und eine Variable vom Typ int
Geben Sie eine Zahl ein und speichern sie die Zahl als ganzzahligen Wert (int)
Weisen Sie den Wert der int-Variable der char-Variablen zu
Geben Sie die char-Variable aus

Erweiterter Pseudocode:
#include <iostream>
using namespace std; int main()
{
// Variable fuer alphanum. Zeichen
// Variable fuer ganze Zahlen
// Zahl eingeben
// char Variable bekommt den Wert der int Variablen
// char Variable ausgeben
}
Übungsaufgaben
Aufgabe 2:
Wir wollen nur Kleinbuchstaben zwischen a und z ausgeben. (Die liegen im ASCIICode zwischen 97 und 122.) Dazu müssen wir mit einer if-Abfrage die Bedingung
testen. Wenn eine Zahl jenseits und diesseits des beiden Werte eingegeben
wurde, erscheint eine Fehlermeldung.
Erweiterter Pseudocode
#include <iostream>
using namespace std; int main()
{
// Variable fuer alphanum. Zeichen
// Variable fuer ganze Zahlen

// Zahl eingeben
// wenn die Zahl groesser als 96 UND (&&) wenn die Zahl kleiner ist als 123
// char Variable bekommt den Wert der int Variablen
// char Variable ausgeben
// sonst
// Fehlerausgabe

}
Übungsaufgaben
Aufgabe 3:
Bei der Fibonacci-Folge ergibt sich die jeweils folgende
Zahl durch Addition der beiden vorherigen Zahlen (0, 1,
1, 2, 3, 5, 8, 13, etc.), vgl.
http://de.wikipedia.org/wiki/Fibonacci-Folge. Lassen Sie
die ersten 20 Zahlen der Fibonacci-Reihe berechnen
und geben Sie die Zahlen über die Konsole aus:
Lauf 0: 1
Lauf 1: 2
Lauf 2: 3
Lauf 3: 5
Lauf n: x
Übungsaufgaben
Aufgabe 4:
Stellen Sie das Zeichen "X" auf der Konsole dar, das
sich über Eingabe des Zeichens "s" um eine Leerstelle
nach rechts bewegt. Bei Eingabe des Zeichens "a" soll
sich das "X" um eine Leerstelle nach links bewegen. Die
Konsolenapplikation soll so lange laufen, bis das
Zeichen "q" eingegeben wird.
 Tipp: Um das Konsolenfenster zu leeren, wird unter
MS Visual C++ der Befehl "system("cls");" verwendet.
Um die Funktion system() benutzen zu können, muss
die Headerdatei stdlib.h eingebunden werden:
#include <stdlib.h>.
/

Weitere ähnliche Inhalte

Andere mochten auch

Taiwan Aktuell #567, 15.04.2013
Taiwan Aktuell #567, 15.04.2013Taiwan Aktuell #567, 15.04.2013
Taiwan Aktuell #567, 15.04.2013Klaus Bardenhagen
 
Programa Estatal De Cambio ClimáTico PresentacióN
Programa Estatal De Cambio ClimáTico PresentacióNPrograma Estatal De Cambio ClimáTico PresentacióN
Programa Estatal De Cambio ClimáTico PresentacióNabogadostabasco
 
Tema 3. las manifestaciones artísticas
Tema 3.  las manifestaciones artísticasTema 3.  las manifestaciones artísticas
Tema 3. las manifestaciones artísticasjesus ortiz
 
Presentación Final
Presentación FinalPresentación Final
Presentación FinalLuis Pinto
 
Ha05t01 Powerpoint
Ha05t01 PowerpointHa05t01 Powerpoint
Ha05t01 Powerpointecursocig
 
Alimentación saludable y sostenible
Alimentación saludable y sostenibleAlimentación saludable y sostenible
Alimentación saludable y sosteniblejavivela
 
Plan de centro 2010 2011
Plan de centro 2010 2011Plan de centro 2010 2011
Plan de centro 2010 2011enkarny
 
museum-digital: Ideen entwickeln, Ideen aufgreifen, den Weg finden - und ihn ...
museum-digital: Ideen entwickeln, Ideen aufgreifen, den Weg finden - und ihn ...museum-digital: Ideen entwickeln, Ideen aufgreifen, den Weg finden - und ihn ...
museum-digital: Ideen entwickeln, Ideen aufgreifen, den Weg finden - und ihn ...museum-digital
 

Andere mochten auch (14)

Mkt 4
Mkt 4Mkt 4
Mkt 4
 
El Sol Abraham
El Sol AbrahamEl Sol Abraham
El Sol Abraham
 
WiSe 2013 | IT-Zertifikat: AMM - Semantic Web II: RDF und FOAF
WiSe 2013 | IT-Zertifikat: AMM - Semantic Web II: RDF und FOAFWiSe 2013 | IT-Zertifikat: AMM - Semantic Web II: RDF und FOAF
WiSe 2013 | IT-Zertifikat: AMM - Semantic Web II: RDF und FOAF
 
Taiwan Aktuell #567, 15.04.2013
Taiwan Aktuell #567, 15.04.2013Taiwan Aktuell #567, 15.04.2013
Taiwan Aktuell #567, 15.04.2013
 
Con el tiempo
Con el tiempoCon el tiempo
Con el tiempo
 
Programa Estatal De Cambio ClimáTico PresentacióN
Programa Estatal De Cambio ClimáTico PresentacióNPrograma Estatal De Cambio ClimáTico PresentacióN
Programa Estatal De Cambio ClimáTico PresentacióN
 
Tema 3. las manifestaciones artísticas
Tema 3.  las manifestaciones artísticasTema 3.  las manifestaciones artísticas
Tema 3. las manifestaciones artísticas
 
Presentación Final
Presentación FinalPresentación Final
Presentación Final
 
Jungle in-da-house v-6
Jungle in-da-house v-6Jungle in-da-house v-6
Jungle in-da-house v-6
 
Ha05t01 Powerpoint
Ha05t01 PowerpointHa05t01 Powerpoint
Ha05t01 Powerpoint
 
natalia
natalianatalia
natalia
 
Alimentación saludable y sostenible
Alimentación saludable y sostenibleAlimentación saludable y sostenible
Alimentación saludable y sostenible
 
Plan de centro 2010 2011
Plan de centro 2010 2011Plan de centro 2010 2011
Plan de centro 2010 2011
 
museum-digital: Ideen entwickeln, Ideen aufgreifen, den Weg finden - und ihn ...
museum-digital: Ideen entwickeln, Ideen aufgreifen, den Weg finden - und ihn ...museum-digital: Ideen entwickeln, Ideen aufgreifen, den Weg finden - und ihn ...
museum-digital: Ideen entwickeln, Ideen aufgreifen, den Weg finden - und ihn ...
 

Ähnlich wie WiSe 2013 | Programmierpraktikum C++ - 01_Basics

Übungsaufgaben SS2010
Übungsaufgaben SS2010Übungsaufgaben SS2010
Übungsaufgaben SS2010maikinger
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeFrank Müller
 
SchüLerscript Imperative Programmierung Mit Der Delphi Konsole
SchüLerscript   Imperative Programmierung Mit Der Delphi KonsoleSchüLerscript   Imperative Programmierung Mit Der Delphi Konsole
SchüLerscript Imperative Programmierung Mit Der Delphi Konsoleguestcf99
 
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenSEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenDr. Herwig Henseler
 
Scalaz introduction for Java programmers
Scalaz introduction for Java programmersScalaz introduction for Java programmers
Scalaz introduction for Java programmersBernhard Huemer
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und LambdasNane Kratzke
 
Differenzial Analyse in der Praxis (Florian Walther)
Differenzial Analyse in der Praxis (Florian Walther)Differenzial Analyse in der Praxis (Florian Walther)
Differenzial Analyse in der Praxis (Florian Walther)GEEKcon
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scalathoherr
 
Automatisierung von Windows-Anwendungen
Automatisierung von Windows-AnwendungenAutomatisierung von Windows-Anwendungen
Automatisierung von Windows-AnwendungenAndreas Schreiber
 
Einführung Software Testing und Qualitätssicherung
Einführung Software Testing und QualitätssicherungEinführung Software Testing und Qualitätssicherung
Einführung Software Testing und QualitätssicherungChristian Baranowski
 
Typ-sichere DSLs
Typ-sichere DSLsTyp-sichere DSLs
Typ-sichere DSLsWerner Keil
 
Angular von 0 auf 100
Angular von 0 auf 100Angular von 0 auf 100
Angular von 0 auf 100Yvette Teiken
 
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?Robin Sedlaczek
 
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScriptManfred Steyer
 
Camunda@1&1
Camunda@1&1Camunda@1&1
Camunda@1&11&1
 

Ähnlich wie WiSe 2013 | Programmierpraktikum C++ - 01_Basics (20)

Übungsaufgaben SS2010
Übungsaufgaben SS2010Übungsaufgaben SS2010
Übungsaufgaben SS2010
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen IBIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
 
SchüLerscript Imperative Programmierung Mit Der Delphi Konsole
SchüLerscript   Imperative Programmierung Mit Der Delphi KonsoleSchüLerscript   Imperative Programmierung Mit Der Delphi Konsole
SchüLerscript Imperative Programmierung Mit Der Delphi Konsole
 
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenSEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
 
Typescript
TypescriptTypescript
Typescript
 
Scalaz introduction for Java programmers
Scalaz introduction for Java programmersScalaz introduction for Java programmers
Scalaz introduction for Java programmers
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
 
Differenzial Analyse in der Praxis (Florian Walther)
Differenzial Analyse in der Praxis (Florian Walther)Differenzial Analyse in der Praxis (Florian Walther)
Differenzial Analyse in der Praxis (Florian Walther)
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scala
 
Automatisierung von Windows-Anwendungen
Automatisierung von Windows-AnwendungenAutomatisierung von Windows-Anwendungen
Automatisierung von Windows-Anwendungen
 
Einführung Software Testing und Qualitätssicherung
Einführung Software Testing und QualitätssicherungEinführung Software Testing und Qualitätssicherung
Einführung Software Testing und Qualitätssicherung
 
Typ-sichere DSLs
Typ-sichere DSLsTyp-sichere DSLs
Typ-sichere DSLs
 
Angular von 0 auf 100
Angular von 0 auf 100Angular von 0 auf 100
Angular von 0 auf 100
 
Slides
SlidesSlides
Slides
 
Explain explain
Explain explainExplain explain
Explain explain
 
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
BASTA! 2017 Jubiläumskonferenz - Warum warten auf die IDE!?
 
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
.NET Summit 2016 München: EcmaScript 2015+ with TypeScript
 
Camunda@1&1
Camunda@1&1Camunda@1&1
Camunda@1&1
 
WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken
WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, BibliothekenWiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken
WiSe 2014 | Softwaretechnologie I _ Funktionen, Zeiger, Strukturen, Bibliotheken
 

Mehr von Institute for Digital Humanities, University of Cologne

Mehr von Institute for Digital Humanities, University of Cologne (20)

Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 17.04.2019 | ...
 
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
Augmented City –Street Art, Embodiment, Cultural Heritage & AR | 03.04.2019 |...
 
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
Künstliche Intelligenz und visuelle Erzählungen: Comicanalyse | 03.04.2019 | ...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
Transformation mittelhochdeutscher Erfahrungswelten – vom Text zum Computerga...
 
Bit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-gamesBit sosem 2016-wieners-sitzung-13_ki-in-games
Bit sosem 2016-wieners-sitzung-13_ki-in-games
 
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-visionBit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
Bit sosem 2016-wieners-sitzung-12_bild-iv-computer-vision
 
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filterBit sosem 2016-wieners-sitzung-11_bild-iii-filter
Bit sosem 2016-wieners-sitzung-11_bild-iii-filter
 
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationenBit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
Bit sosem 2016-wieners-sitzung-10_bild-ii-punktoperationen
 
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompressionBit sosem 2016-wieners-sitzung-09_bild-i-kompression
Bit sosem 2016-wieners-sitzung-09_bild-i-kompression
 
Bit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-webBit sosem 2016-wieners-sitzung-08_semantic-web
Bit sosem 2016-wieners-sitzung-08_semantic-web
 
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-iiBit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
Bit sosem 2016-wieners-sitzung-07_rechnerkommunikation-ii
 
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikationBit sosem 2016-wieners-sitzung-06_rechnerkommunikation
Bit sosem 2016-wieners-sitzung-06_rechnerkommunikation
 
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conwayBit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
Bit sosem 2016-wieners-sitzung-05_zellulaere-automaten-conway
 
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatikBit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
 
Bit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmenBit sosem 2016-wieners-sitzung-03_algorithmen
Bit sosem 2016-wieners-sitzung-03_algorithmen
 
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturenBit sosem 2016-wieners-sitzung-02_datenstrukturen
Bit sosem 2016-wieners-sitzung-02_datenstrukturen
 
Bit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischungBit sosem 2016-wieners-sitzung-01_auffrischung
Bit sosem 2016-wieners-sitzung-01_auffrischung
 
Bit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblickBit sosem 2016-wieners-sitzung-00_themenueberblick
Bit sosem 2016-wieners-sitzung-00_themenueberblick
 
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung IIBit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
 

WiSe 2013 | Programmierpraktikum C++ - 01_Basics

  • 1. Programmierpraktikum C++ Wintersemester 2013 / 2014 21. Oktober 2013 – Grundlagen & Co. Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // jan.wieners@uni-koeln.de
  • 2. Kurzüberblick  Kurzwiederholung und Erweiterungen:           Präprozessordirektive. Funktionen (und ihre Rückgabewerte) Ausgabe (cout) und Eingabe (cin) Regeln & Co. Kontrollstrukturen: if Vergleichsoperatoren Schleifen: while, for Fallunterscheidung: switch / case Praxis: Übungs-/Vertiefungsaufgabe Praxis: Hausaufgaben
  • 3. Softwaretechnologie I – 14.10.2013 Erste „Hallo Welt“ Applikation: #include <iostream> using namespace std; int main() { cout << "Willkommen beim C++ Kurs!" << endl; return 0; }
  • 4. Softwaretechnologie I – 14.10.2013 Erste „Hallo Welt“ Applikation: #include <iostream> Präprozessordirektive Bindet die Quellcodedatei (iostream.h) ein using namespace std; Gibt an, in welchem Namensbereich wir uns befinden („std“) Die Hauptfunktion „main“ int main() Der Compiler erwartet einen ganzzahligen Rückgabewert (int) { cout << "Willkommen beim C++ Kurs!" << endl; return 0; } Die Funktion cout leitet Zeichen an den Bildschirm / die Konsole weiter Return 0; lässt die Funktion main() den Zahlenwert 0 zurückgeben Geschweifte Klammern geben den Funktionsrumpf (hier: main()) an
  • 5. Softwaretechnologie I – 14.10.2013 Interaktion mit der Anwendung Variable derBenutzer vom Typ „char“ […] (Zeichen) wird angelegt, gleichzeitig wird char derBenutzer [80]; Platz reserviert für 80 (von 0 bis 79) Unterelemente cout << "Wie heißen Sie?" << endl; Über die Funktion cin wird die Benutzercin >> derBenutzer; eingabe in die Variable eingelesen… cout << "Willkommen beim C++ Kurs " << derBenutzer << endl; …schließlich über cout wieder ausgegeben […]
  • 6. Merken: Trivia       Anweisungen müssen mit Semikola (;) abgeschlossen werden Groß-/Kleinschreibung von Funktionen, Variablen, Konstanten, etc. Jede Variable verfügt über einen Datentyp: Datentypbezeichnung Variablenname Mehrere Variablen können als durch von Kommata getrennte Liste definiert werden: int zahl1, zahl2, zahl3; Variablen und Konstanten können mit einem Startwert initialisiert werden: int zahl = 23; Zuweisungsoperator: Mit Hilfe von = weisen wir den Wert der rechts vom Operator stehenden Variable (o.ä.) der linken Variable (o.ä.) zu: summe = zahl1 + zahl2;
  • 7. Kontrollstrukturen: if […] int zahl1, zahl2, resultat; char aktion; cout << "Bitte geben Sie eine Zahl ein: “; cin >> zahl1; cout << "Bitte geben Sie noch eine Zahl ein: "; cin >> zahl2; cout << "Was soll damit geschehen?" << endl << "(+ = Addieren)" << endl << "(- = Subtrahieren)„ <<endl; cin >> aktion; if (aktion=='+') resultat=zahl1+zahl2; else resultat=zahl1-zahl2; cout << "Das Ergebnis lautet: " << resultat << endl; […] Mit der if-Anweisung können wir den Programmablauf beeinflussen: if (Bedingung) Anweisung 1; else Anweisung 2; Achtung: analog zu: if(Bedingung) { Anweisung 1; } […]
  • 8. Vergleichsoperatoren       A == B Ist A genau gleich mit B?  Achtung: ZWEI Gleichheitszeichen! A != B A ist nicht gleich B A<B Ist A kleiner als B? A <= B Ist A kleiner oder gleich B? A>B Ist A größer als B? A >= B Ist A größer oder gleich B?
  • 9. if Schachtelung möglich: if(zahlenwert == 15) cout << “Zahl ist 15“; else if(zahlenwert <= 14) cout << “Zahl ist kleiner als 15“; else cout << “Zahl ist größer als 15“;
  • 10. Schleifen: while  Dienen dazu, Anweisungen wiederholt auszuführen Kontrollvariable der Schleife: zahl zahl=0 while(zahl <= 23) { cout << “Zahl hat den Wert“ << zahl << endl; zahl++; }
  • 11. Schleifen: for for(int i = 0; i <= 23; i++) { cout << i << endl; } Kontrollvariable der Schleife: i  for(Initialisierung der Kontrollvariable, Definition der Endbedingung, Veränderung der Kontrollvariable in jedem Lauf)
  • 12. Fallunterscheidung: switch / case Anstatt: int variable=23; if(variable == 15) cout << "A"; else if(variable == 16) cout << "B"; else if(variable == 17) cout << "C"; else cout << "D"; Können wir schreiben: switch(variable) { case 15: cout << "A"; break; case 16: cout << "B"; break; case 17: cout << "C"; break; default: cout << "D"; break; }
  • 13. *
  • 14. Übungsaufgaben Aufgabe 1:     Deklarieren Sie eine Variable vom Typ char und eine Variable vom Typ int Geben Sie eine Zahl ein und speichern sie die Zahl als ganzzahligen Wert (int) Weisen Sie den Wert der int-Variable der char-Variablen zu Geben Sie die char-Variable aus Erweiterter Pseudocode: #include <iostream> using namespace std; int main() { // Variable fuer alphanum. Zeichen // Variable fuer ganze Zahlen // Zahl eingeben // char Variable bekommt den Wert der int Variablen // char Variable ausgeben }
  • 15. Übungsaufgaben Aufgabe 2: Wir wollen nur Kleinbuchstaben zwischen a und z ausgeben. (Die liegen im ASCIICode zwischen 97 und 122.) Dazu müssen wir mit einer if-Abfrage die Bedingung testen. Wenn eine Zahl jenseits und diesseits des beiden Werte eingegeben wurde, erscheint eine Fehlermeldung. Erweiterter Pseudocode #include <iostream> using namespace std; int main() { // Variable fuer alphanum. Zeichen // Variable fuer ganze Zahlen // Zahl eingeben // wenn die Zahl groesser als 96 UND (&&) wenn die Zahl kleiner ist als 123 // char Variable bekommt den Wert der int Variablen // char Variable ausgeben // sonst // Fehlerausgabe }
  • 16. Übungsaufgaben Aufgabe 3: Bei der Fibonacci-Folge ergibt sich die jeweils folgende Zahl durch Addition der beiden vorherigen Zahlen (0, 1, 1, 2, 3, 5, 8, 13, etc.), vgl. http://de.wikipedia.org/wiki/Fibonacci-Folge. Lassen Sie die ersten 20 Zahlen der Fibonacci-Reihe berechnen und geben Sie die Zahlen über die Konsole aus: Lauf 0: 1 Lauf 1: 2 Lauf 2: 3 Lauf 3: 5 Lauf n: x
  • 17. Übungsaufgaben Aufgabe 4: Stellen Sie das Zeichen "X" auf der Konsole dar, das sich über Eingabe des Zeichens "s" um eine Leerstelle nach rechts bewegt. Bei Eingabe des Zeichens "a" soll sich das "X" um eine Leerstelle nach links bewegen. Die Konsolenapplikation soll so lange laufen, bis das Zeichen "q" eingegeben wird.  Tipp: Um das Konsolenfenster zu leeren, wird unter MS Visual C++ der Befehl "system("cls");" verwendet. Um die Funktion system() benutzen zu können, muss die Headerdatei stdlib.h eingebunden werden: #include <stdlib.h>.
  • 18. /