Comu (17.01.2012), DeKaDeNz (16.01.2012), DiscoDieter (22.04.2014), Disturbed (28.06.2012), DnL (16.01.2012), Essah (17.01.2012), patlux (16.01.2012), Snees (16.01.2012), uncopyable (17.01.2012)
-
16.01.2012, 21:08 #1
- Registriert seit
- 15.11.2011
- Beiträge
- 7.168
- Blog Entries
- 5
Thanked 9.269 Times in 3.118 Posts[C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)
Guten Tag,
kleine Zusammenfassung des Stoffes der nächsten IT-Arbeit von mir für meine Klasse. Sicherlich auch für den ein oder anderen brauchbar, den die Sprache interessiert.
Entwicklungsumgebung
Entwickelt wird auf Windows-Systemen mit dem Borland C++ Builder 5/6. Bezüglich des Codingstyls gibt es Vorgaben des Lehrers wie Beispielsweise jeden geschweiften Klammernblock um einen Tab einrücken oder jede aufgehende geschweifte Klammer in eine neue Zeile platzieren (siehe Snippets).
1. Grundaufbau
Der Grundaufbau jedes Programmes ist folgender:
PHP-Code:// Platz für Include-Anweisungen
using namespace std;
void main()
{
// Programmcode
}
2. Variablen und Datentypen
Variablen verwendet man, um Informationen zu speichern und weiterverarbeiten zu können. Man verwendet sie in C++ wie folgt:
PHP-Code:DATENTYP NAME;
Folgende Datentypen wurden bisher behandelt:
string:
Speichert eine Zeichenkette (z.B. für Eingabe eines Namens)
string ist in dem Sinn kein in C++ integrierter Datentyp von C++ wie Beispielsweise Integer oder Char, sondern eine Bibliothek von Microsoft, die intern mit char-Arrays arbeitet.
Beispiel:
PHP-Code:string Name = "Max Muster";
Speichert einen einzelnen Buchstabe (character).
Beispiel:
PHP-Code:char Auswahl = 'a';
Speichert eine Zahl ohne Nachkommastellen, mit der man im Programm rechnen kann.
Beispiel:
PHP-Code:int Anzahl = 5;
Speichert eine Zahl mit Nachkommastellen. Auch mit diesem Datentyp kann man natürlich rechnen.
Beispiel:
PHP-Code:float EnglischNote = 2.6;
Konstanten (const)
Eine Konstante ist eigentlich genau das Gegenteil einer Variable. Da man sie bei Variablen verwendet nehme ich sie trotzdem mal hier dazu.
Man kann jede Variable als Konstante deklarieren. Dann kann man der Konstante nur beim deklarieren einen Wert zuweisen. Danach kann man die Konstante im Programm ganz normal benutzen z.b. für Vergleiche oder ähnliches, sie ist aber konstant, d.H. man kann ihren Wert im nachhinein nicht mehr ändern.
Beispiel:
PHP-Code:const float Pi = 3.14;
3. If-Abfragen
lf-Abfragen braucht man, um zu prüfen, ob eine Bedingung wahr oder falsch ist.
Die Bezeichnung "if-Schleife" ist falsch, da if nicht wie eine Schleife mehrmals durchläuft, sondern den Wert nur einmalig prüft.
Beispiel:
PHP-Code:cout << "Willst du wirklich weitermachen?";
char Eingabe;
cin >> Eingabe;
if(Eingabe == 'j')
{
cout << "Du hast dich entschieden weiterzumachen";
}
Man kann if-Abfragen natürlich auch ineinander verschachteln. Das wird bei komplexeren Abfragen aber schnell unübersichtlich und fehleranfällig. Daher gibt es else bzw else if.
else if verwendet man wenn nur noch ein Fall möglich ist.
Beispiel:
PHP-Code:cout << "Willst du wirklich weitermachen?";
char Eingabe;
cin >> Eingabe;
if(Eingabe == 'j')
{
cout << "Du hast dich entschieden weiterzumachen";
}
else if(Eingabe == 'n')
{
cout << "Du hast dich entschieden nicht mehr weiterzumachen";
}
else
{
cout << "Du kannst nur j für ja oder n für nein eingeben!";
}
Man kann in if-Abfragen auch andere Bedingungen prüfen, wie Beispielsweise mit < und > ob der Wert einer Variable größer oder kleiner als ein Wert oder eine andere Variable ist (geht natürlich nur mit Integer und Float).
Beim prüfen von Bedingungen wird immer ein doppeltes Gleichheitszeichen == verwendet. Mit einem einfachen Gleichheitszeichen weißt man einer Variable einen Wert zu
4. Logische Operatoren
Es gibt in C++ einige Operatoren, die man bei komplexeren Überprüfungen z.B. in if-Abfragen oder Schleifen verwendet.
Folgende hatten wir im Unterricht:
UND:
Mit und verknüpft man zwei Bedingungen. Der gesamte Ausdruck ist dann wahr, wenn beide Bedingungen wahr sind.
Beispiel:
Der Benutzer soll nur j oder n eingeben. Man will falsche Eingaben (also alles andere ausser j und n) filtern.
PHP-Code:string Eingabe;
cin >> Eingabe;
if(Eingabe != 'j' && Eingabe != 'n')
{
cout << "Du kannst nur j oder n eingeben!";
}
Hätte Eingabe den Wert j, wäre die Bedingung nicht wahr, genau so bei n.
ODER
Ist eigentlich dasselbe wie UND, jedoch ist die Bedingung bei ODER nur wahr wenn mindestens eine der beiden Bedingungen wahr ist.
PHP-Code:string Eingabe;
cin >> Eingabe;
if(Eingabe == 'j' || Eingabe == 'n')
{
// Programm läuft weiter
}
Eine Bedingung mit ODER ist auch wahr, wenn beide Bedingungen zutreffen (ist hier in dem Beispiel natürlich nicht möglich, aber gibt schon Fälle in denen das sein kann).
NICHT
Wie oben teilweise bereits in den Snippets gezeigt, kann man eine Bedingung mit einem Ausrufezeichen negieren. != (ungleich) wäre das Gegenteil von == (gleich). Man kann auch ganze Ausdrücke negieren, dafür muss man sie einklammern
PHP-Code:string Eingabe;
cin >> Eingabe;
if(!(Eingabe == 'j' || Eingabe == 'n'))
{
// TuWas
}
MODULO
Dieser Operator ist mehr ein mathematischer Operator. Er liefert den Rest einer Division.
Beispiel:
PHP-Code:int Rest = 4 % 2;
PHP-Code:int Rest = 5 % 2;
Mit dem Modulo-Operator kann man Beispielsweise in einer Schleife eine bestimmte Aktion bei jeder ungeraden oder geraden Zahl durchführen, in dem man in einer if-Abfrage prüft, ob der Index durch 2 geteilt Rest ergibt oder nicht.
5. Schleifen
Schleifen werden immer dann verwendet, wenn ein Vorgang (unter bestimmten Bedingungen) mehrfach wiederholt werden soll. Es gibt verschiedene Typen von Schleifen, die jeweils in bestimmten Situationen mehr oder weniger sinnvoll sind.
5.1 for-Schleife
Die for-Schleife ist eine typische Zählschleife. Sie wird verwendet, wenn vor dem Durchlauf bekannt ist, wie oft ein Vorgang durchgeführt werden soll. Man hat in der Schleife eine Variable (meistens einen Integer) als Index, für den man festlegen kann, wie sich sein Wert nach jedem Durchlauf verändern soll.
Eine for-Schleife wird Beispielsweise sehr typisch verwendet, wenn man einen Array ganz oder teilweise durchlaufen will (dazu im Punkt Arrays mehr).
Beispiel:
PHP-Code:for(int i = 0; i < 5; i++)
{
cout << "Index: " << i << endl;
}
Code:Index: 0 Index: 1 Index: 2 Index: 3 Index: 4
Code:for(int i = 0; i < 5; i++) { cout << "Index: " << i << endl; }
Im Mittleren Teil steht die Bedingung, die wahr sein muss, damit die Schleife weiter durchläuft (hier muss die Variable i kleiner als 5 sein).
Am Schluss kann man eine belibige Aktion mit der am Anfang deklarierten Variable durchführen, hier Beispielsweise den Wert um eines hochzählen (i++ ist die kurze Schreibweise für i = i + 1). Man kann hier im Prinzip alle Rechenoperatoren anwenden die man sonst auch verwenden kann. i+=5 wäre ebenso möglich wie i*=10
Die im roten Teil definierte Variable ist nur innerhalb der Schleife gültig!
5.2 do-while-Schleife
Dieser Schleifentyp führt eine Aktion aus, solange eine Bedingung wahr ist.
Beispiel: Man möchte, dass der Benutzer j oder n eingibt. Er soll so lange zu einer erneuten Eingabe aufgefordert werden, bis er einen gültigen Wert eingibt.
PHP-Code:cout << "Willst du wirklich weitermachen?";
char Eingabe;
do {
cin >> Eingabe;
if(Eingabe != 'j' && Eingabe != 'n')
{
cout << "Du kannst nur j oder n eingeben!";
}
}while(Eingabe != 'j' && Eingabe != 'n');
5.3 while-Schleife
Vom Funktionsprinzip her ähnlich wie die do-while-Schleife.
Das Beispiel von do-while mit while
PHP-Code:while(Eingabe != 'j' && Eingabe != 'n')
{
cin >> Eingabe;
if(Eingabe != 'j' && Eingabe != 'n')
{
cout << "Du kannst nur j oder n eingeben!" << endl;
cout << "Willst du wirklich weitermachen? ";
}
else
{
cout << "Eingabe ist korrekt (j oder n)!";
}
}
5.4 Wann verwende ich welche Schleife?
Man kann theoretisch irgendeine der 3 Schleifenarten nehmen und daraus die anderen beiden zusammenmurksen. Das wäre aber bescheuert da es ja die beiden anderen gibt, und gäbe zudem Punktabzug.
Daher kurz wann man welche Schleife verwendet:
for-Schleife:
Benutzt man, wenn vor dem Durchlauf der Schleife bekannt ist, wie oft sie durchlaufen muss. Beispiel: Man will alle Elemente eines eindimensionalen Arrays ausgeben, der 10 Datensätze umfasst.
do-Schleife
Wenn ein Vorgang in jedem Fall mindestens 1x durchgeführt werden muss, aber man nicht genau weiß wie oft. Beispiel: Man will, dass der Benutzer so lange zur Eingabe aufgefordert wird, bis er einen gültigen Wert eingibt. Dann muss die Schleife mindestens 1x durchlaufen da er den Wert mindestens 1x eingeben muss.
while-Schleife
Wird benutzt, wenn man nicht weiß ob ein Vorgang 1x oder gar nicht durchgeführt werden muss, und wenn er durchgeführt wird ist nicht bekannt wie oft.
6. Arrays
Arrays kann man sich als Tabellen vorstellen, in dem man mehrere Werte eines Types speichern kann. Man verwendet sie daher immer dann, wenn man mehrere Werte eines Types hat.
Mit allen bei 2. Variablen und Datentypen aufgelisteten Datentypen kann man Arrays erstellen.
Deklaration
Man deklariert Arrays fast gleich wie Variablen. Der einzige Unterschied bei der Deklaration ist, dass man hinter den Name in eckige Klammern die Anzahl der Werte setzt, die im Array gespeichert werden können/sollen.
PHP-Code:string Namen[10];
Werte im Array speichern/auslesen
Man greift über den sogenannten Index auf einzelne Elemente in einem Array zu. Der Index ist eine durchgängige Nummer vom ersten bis zum letzten Element. Man verwendet ihn, um auf einen bestimmten Wert innerhalb des Arrays zuzugreifen.Diesen gibt man in eckigen Klammern nach dem Namen an.
PHP-Code:string Namen[10];
Namen[0] = "Dieter";
cout << Namen[0];
Arrays fangen immer beim Index 0 an! Das erste Element bekommt man also beim Index 0, nicht 1! Index 1 wäre das zweite Element.
Beispiel:
Man soll ein Programm schreiben, in dem man 10 Noten eingeben kann. Nachdem 10 Noten eingegeben wurden, sollen alle Noten inklusive Durchschnitt ausgegeben werden.
PHP-Code:#include <iostream>
#include <conio>
using namespace std;
void main()
{
const int NotenAnzahl = 10;
float Noten[NotenAnzahl];
// Noten einlesen
for(int i = 0; i < NotenAnzahl; i++)
{
cout << "Note eingeben: ";
cin >> Noten[i];
}
cout << endl << "----------------" << endl << endl;
// Jede Note ausgeben und zum Durchschnitt dazurechnen
float Durchschnitt;
for(int i = 0; i < NotenAnzahl; i++)
{
cout << Noten[i] << endl;
Durchschnitt += Noten[i];
}
// Durch die Notenanzahl teilen damit der Durchschnitt rauskommt
Durchschnitt /= NotenAnzahl;
cout << "Durchschnitt: " << Durchschnitt;
getch();
}
Bestimmte Funktionen sind nicht fester Bestandteil von C++. Sie sind in externen Bibliotheken (Librarys) enthalten. Wenn man sie nutzen will, muss man sie einbinden.
Dazu fügt man ganz oben über using namespace std; folgendes ein:
PHP-Code:#include <NAME>
PHP-Code:#include <iostream>
8. Sonstige Tipps/Tricks
8.1 ASCII-Zeichen ausgeben
Wenn irgendwo Sonderzeichen wie z.B. Umlaute (ä,ö,ü) oder ähnliches korrekt ausgegeben werden sollen, muss dies über die ASCII-Tabelle gemacht werden. Dazu braucht ihr die Nummer des jeweiligen Zeichens (Wird vorgegeben). Dies gebt ihr einfach mit der Funktion char(int) aus.
Will man z.B. "Ungültige Ausgabe" ausgeben, braucht man die Position von 'ü' in der ASCII-Tabelle. Die wäre 129.
PHP-Code:cout << "Ung" << char(129) << "ltige Eingabe!";
Es gibt 2 Funktionen zum Runden: ceil() liefert die nächsthöhere ganze Zahl, floor() die nächstniedrigere.
PHP-Code:cout << ceil(1.5);
PHP-Code:cout << floor(1.5);
Um beide Funktionen nutzen zu können, muss math per include eingebunden werden!
8.3 Nachkommastellen abschneiden (casten)
Es gibt einen kleinen Trick, wie man Nachkommastellen ohne irgendwelche Funktionen zu nutzen abschneiden kann: Man erzwingt einfach eine Umwandlung in einen Integer. Da ein Integer keine Nachkommastellen hat, werden diese dabei einfach abgeschnitten.
PHP-Code:float KommaZahl = 1.8293;
int KeineKommaZahl = int(KommaZahl);
cout << KeineKommaZahl;
PHP-Code:float KommaZahl = 1.8293;
int KeineKommaZahl = (int)KommaZahl;
cout << KeineKommaZahl;
Es gibt 2 Arten von Kommentaren:
Einzeilige
PHP-Code:// Kommentar der sich über eine Zeile erstreckt
PHP-Code:/*
Hier kann man einen sehr sehr sehr langen Kommentar einfügen,
der so lang ist, dass eine Zeile bei weitem nicht mehr ausreicht.
Man braucht mehrere, da ansonsten die Zeile nicht mehr ohne scrollen
auf dem Bildschirm sichtbar ist. Aber dafür gibt es ja den mehrzeiligen
Kommentar ;)
*/
Man sollte Kommentare verwenden, um die Funktion eines Programms zu verdeutlichen. Funktionen von C++ braucht man nicht extra zu kommentieren! Man geht beim kommentieren davon aus, dass der Lesende C++ kann.
Kommentare wie
PHP-Code:// Gibt "Hallo" am Bildschirm aus
cout << "Hallo";
Hinweis:
getch() wird nur aufgrund der Anforderungen in dieser Form genutzt. Bevor dies in finalen Programmen genutzt wird oder schon vorher zu Problemen führt, sollte man sich diesen Thread ansehen: http://www.c-plusplus.de/forum/111042
Fragen zur Zusammenfassung können hier gepostet werden. Allgemeine Fragen zu C++ im C++ Subforum
-
The Following 9 Users Say Thank You to DMW007 For This Useful Post:
-
16.01.2012, 21:10 #2
- Registriert seit
- 19.12.2011
- Beiträge
- 356
Thanked 164 Times in 101 PostsAW: [C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)
Mir persönlich fehlen hier noch die Structs und das casten.
Sonst schonmal gut.
-
16.01.2012, 21:19 #3
- Registriert seit
- 15.11.2011
- Beiträge
- 7.168
- Blog Entries
- 5
Thanked 9.269 Times in 3.118 PostsAW: [C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)
Jop es ist so gesehen nicht ganz vollständig, das stimmt. Liegt aber daran, dass die Zusammenfassung wie gesagt auf den Unterrichtsstoff zugeschnitten ist.
Erklärt wird es bei 8.3, wobei es hier weniger ums casten an sich geht, das ist eher ein Mittel zum Zweck :b
Strukturen sind mit Absicht nicht drin, da die erst nächstes Jahr behandelt werden und in der Arbeit nicht mehr dran kommen.
-
The Following User Says Thank You to DMW007 For This Useful Post:
Essah (22.01.2012)
-
16.01.2012, 21:23 #4
- Registriert seit
- 19.12.2011
- Beiträge
- 356
Thanked 164 Times in 101 PostsAW: [C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)
Naja aber wirklich erklärt ist es nun nicht, dennoch gehören Structs meiner Meinung nach zum Grundwissen für Variablen.
Und soviel Thema isses nun eigentlich auch nicht
-
16.01.2012, 21:35 #5
- Registriert seit
- 15.11.2011
- Beiträge
- 7.168
- Blog Entries
- 5
Thanked 9.269 Times in 3.118 PostsAW: [C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)
Nein das ist es nicht. Wie gesagt, es ist halt mehr Mittel zum Zweck. Genaueres dazu wurde auch nicht im Unterricht besprochen. Man weiß durch den Unterricht halt, dass man durch das casten die Nachkommastellen abschneiden kann, und das war's. Daher bin ich da auch nicht näher drauf eingegangen.
Ich persönlich würde das ganze auch ein bisschen anders angehen, aber naja, der Lehrer ist halt Wirtschaftsinformatiker.. Alles so wie er es will, und zwar exakt so, und nicht anders.
-
05.01.2017, 09:31 #6
AW: [C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)
Ich kenne schon solche Anweisungen usw. aus den anderen Programiersprachen. Ist schon einfach findr ich zu C++ einzusteigen, wenn man schon das Prinzip bei Programmierung kennt
Ähnliche Themen
-
Problem mit Schleifen
Von exception im Forum HochsprachenAntworten: 7Letzter Beitrag: 20.07.2012, 11:55 -
[MySQL] Variablen in Strings
Von Minecraft im Forum WebentwicklungAntworten: 3Letzter Beitrag: 24.04.2012, 21:46 -
VB.Net Variablen
Von Snees im Forum .NetAntworten: 9Letzter Beitrag: 05.04.2012, 16:24 -
[C++] Grundwissen II (Funktionen und Parameter)
Von DMW007 im Forum C++Antworten: 0Letzter Beitrag: 19.03.2012, 21:56 -
[C#] Arrays und for-Schleifen
Von Snees im Forum .NetAntworten: 4Letzter Beitrag: 19.11.2011, 18:09
Stichworte
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.