1. #1
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard [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

    Dazu mal keine weiteren Erklärungen, das ist einfach Vorgabe. Entspricht nicht dem offiziellen C++ Standart da laut diesem main vom Typ int sein muss und dementsprechend auch einen Wert zurückgeben muss, aber gut.

    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
    Der Name der Variable darf keine Leerzeichen oder Sonderzeichen beinhalten!

    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"
    char (Character):
    Speichert einen einzelnen Buchstabe (character).

    Beispiel:

    PHP-Code:
    char Auswahl 'a'
    int (Integer):
    Speichert eine Zahl ohne Nachkommastellen, mit der man im Programm rechnen kann.

    Beispiel:

    PHP-Code:
    int Anzahl 5
    float:
    Speichert eine Zahl mit Nachkommastellen. Auch mit diesem Datentyp kann man natürlich rechnen.

    Beispiel:

    PHP-Code:
    float EnglischNote 2.6
    Kommas werden im amerikanischen Format angegeben, also statt einem Komma einen Punkt verwenden.

    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
    Man verwendet Konstanten bei Werten, die sich nicht ändern, wie zb Pi. Aber auch bei Arrays, um die Größe eines Arrays festzulegen.

    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";

    Wenn der Benutzer 'j' für Ja eingibt, wird die Meldung ausgegeben.

    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!";

    Hier wird geprüft, ob die Variable j enthält. Wenn dem nicht so ist prüft das Programm, ob sie vielleicht n für nein enthält. Trifft auch das nicht zu, gibt es in diesem Fall nur noch eine Möglichkeit: Eine falsche Eingabe, da ja nur j und n zugelassen sind. Hierfür wird else verwendet. Mit else schließt man alle anderen Fälle ein, auf die vorherige if-Abfragen nicht zutreffend waren.

    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!";

    Die Bedingung Eingabe != 'j' && Eingabe != 'n' ist wahr, wenn Eingabe nicht j und gleichzeitig nicht n ist. Damit ist die gesamte if-Abfrage wahr und die Meldung wird ausgegeben.
    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

    Die Bedingung Eingabe == 'j' || Eingabe == 'n' ist wahr, wenn Eingabe den Wert j oder n hat.
    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

    Diese Bedingung wäre wahr, wenn Eingabe nicht j oder n ist.

    MODULO
    Dieser Operator ist mehr ein mathematischer Operator. Er liefert den Rest einer Division.

    Beispiel:

    PHP-Code:
    int Rest 2
    4/2 = 2 Rest 0, die Variable Rest nimmt also den Wert 0 an.

    PHP-Code:
    int Rest 2
    5/2 = 2 Rest 1, die Variable Rest nimmt also den Wert 1 an.

    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 05i++)
    {
            
    cout << "Index: " << << endl;

    Diese Schleife würde 5x durchlaufen und folgendes ausgeben:

    Code:
    Index: 0
    Index: 1
    Index: 2
    Index: 3
    Index: 4
    Die for-Schleife ist in 3 Teile aufgeteilt:

    Code:
    for(int i = 0; i < 5; i++)
    {
            cout << "Index: " << i << endl;
    }
    Hier wird die Variable einmalig deklariert, die als Zähler dienen soll. Sie wird auf einen belibigen Anfangswert gesetzt (hier 0).
    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'); 
    Eine do-while Schleife hat immer mindestens einen Durchlauf! Die Bedingung wird erst nach dem ersten Durchlauf geprüft. Daher nennt man diese Schleife Fußgesteuert.

    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)!";
            }

    Die while-Schleife prüft die Bedingung vor dem ersten Durchlauf! Daher ist es möglich, dass eine while-Schleife gar keinen Durchlauf hat, wenn die Bedingung nicht zutrifft. Aus diesem Grund nennt man sie Kopfgesteuert.

    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]; 
    Damit deklariert man einen Array vom Typ string, in dem man 10 Werte speichern kann.

    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]; 
    Hier wird an 1. Stelle im Array Namen der string "Dieter" gespeichert und anschließend am Bildschirm ausgegeben.

    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 0NotenAnzahli++)
            {
                    
    cout << "Note eingeben: ";
                    
    cin >> Noten[i];
            }

            
    cout << endl << "----------------" << endl << endl;

            
    // Jede Note ausgeben und zum Durchschnitt dazurechnen
            
    float Durchschnitt;
            for(
    int i 0NotenAnzahli++)
            {
                    
    cout << Noten[i] << endl;
                    
    Durchschnitt += Noten[i];
            }
            
    // Durch die Notenanzahl teilen damit der Durchschnitt rauskommt
            
    Durchschnitt /= NotenAnzahl;
            
    cout << "Durchschnitt: " << Durchschnitt;

            
    getch();

    7. Einbinden von Librarys (includes)

    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> 
    Will man Beispielsweise cout zur Bildschirmausgabe nutzen, muss man iostream includen

    PHP-Code:
    #include <iostream> 
    Ich liste hier jetzt nicht alle Includes auf die wir für die Arbeit brauchen und schon gar nicht alle die es gibt. Die stehen alle in der Befehlsliste. Sollte man die nicht haben findet man sie auch über Google.

    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!"
    8.2 Runden

    Es gibt 2 Funktionen zum Runden: ceil() liefert die nächsthöhere ganze Zahl, floor() die nächstniedrigere.

    PHP-Code:
    cout << ceil(1.5); 
    Ausgabe: 2

    PHP-Code:
    cout << floor(1.5); 
    Ausgabe: 1

    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
    Man kann genau so einfach (int) davorsetzen, geht genau so gut. Mag unserer Lehrer aber nicht da (int) aus C stammt und sich daraus int() entwickelt hat. Ist aber genau so richtig

    PHP-Code:
    float KommaZahl 1.8293;
    int KeineKommaZahl = (int)KommaZahl;

    cout << KeineKommaZahl
    8.4 Kommentare

    Es gibt 2 Arten von Kommentaren:

    Einzeilige

    PHP-Code:
    // Kommentar der sich über eine Zeile erstreckt 
    Mehrzeilige

    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 ;)
            */ 
    Kommentare sind dazu da, damit ein Fremder der den Code anguckt ihn besser versteht. Oder damit man ihn selbst noch versteht, wenn man ihn mal in einem halben Jahr wieder hervorkramt.
    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"
    sind also weniger sinnvoll und geben evtl auch Abzug.

    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


  2. The Following 9 Users Say Thank You to DMW007 For This Useful Post:

    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)

  3. #2

    Registriert seit
    19.12.2011
    Beiträge
    356
    Thanked 164 Times in 101 Posts

    Standard AW: [C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)

    Mir persönlich fehlen hier noch die Structs und das casten.
    Sonst schonmal gut.

  4. #3
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: [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.


  5. The Following User Says Thank You to DMW007 For This Useful Post:

    Essah (22.01.2012)

  6. #4

    Registriert seit
    19.12.2011
    Beiträge
    356
    Thanked 164 Times in 101 Posts

    Standard AW: [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

  7. #5
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: [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.


  8. #6
    Avatar von BitNet
    Registriert seit
    08.08.2015
    Beiträge
    326
    Thanked 83 Times in 61 Posts

    Standard 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

  1. Problem mit Schleifen
    Von exception im Forum Hochsprachen
    Antworten: 7
    Letzter Beitrag: 20.07.2012, 11:55
  2. [MySQL] Variablen in Strings
    Von Minecraft im Forum Webentwicklung
    Antworten: 3
    Letzter Beitrag: 24.04.2012, 21:46
  3. VB.Net Variablen
    Von Snees im Forum .Net
    Antworten: 9
    Letzter Beitrag: 05.04.2012, 16:24
  4. Antworten: 0
    Letzter Beitrag: 19.03.2012, 21:56
  5. [C#] Arrays und for-Schleifen
    Von Snees im Forum .Net
    Antworten: 4
    Letzter 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.