CoderZ.cc

Zurück   CoderZ.cc > Programmierung > C & C++ > C/C++ Lerngruppe & Aufgaben


 
Themen-Optionen Ansicht
05.05.2013, 16:17   #1
Domenic (Offline)
Moderator
 
Registriert seit: 12.06.2024
Beiträge: 40
Thanks: 14
Thanked 13 Times in 8 Posts
Domenic eine Nachricht über ICQ schicken
Standard ~006~ Bedingte Anweisung

Da ihr jetzt wisst was Datentypen sind und wie man mit arithmetischen Operatoren umgeht, möchte ich hier anschließen und euch die if-Abfrage erklären und auf Vergleichsoperatoren eingehen.

Eine if-Abfrage benötigt man, wenn ein besimmter Abschnitt im Code nur dann ausgeführt werden soll, wenn eine oder auch mehrere Bedingungen erfüllt sind. In vielen Lektüren werden oft zuerst Schleifen behandelt und dann die Bedingte Anweisung, das hat die Folge das viele Anfänger das Wort if-Schleife zum Ausdruck bringen. Es gibt keine if-Schleifen, sondern nur if-Abfragen!


Als erstes betrachten wir folgenden Code.
bool isMonday true;

if(
isMonday == true)
{
    
std::cout << "Heute ist Montag";

Hier deklarieren wir die Variable isMonday und weisen ihr den Wert true zu. In der dritten Zeile sieht man dann auch schon den bisher unbekannten Operator ==, dies ist ein Vergleichsoperator. Wir prüfen mit diesem Operator, ob isMonday den Wert true hat. Da dies der Fall ist, ist die Bedingung erfüllt und der Code zwischen den geschweiften Klammern wird ausgeführt. Wenn wir vorher isMonday den Wert false zuweisen, würde Heute ist Montag logischerweise nicht ausgegeben werden, da die Bedingung nicht erfüllt ist.

Folgender Code liefert das selbe Ergebnis wie oben, da if immer auf true prüft.
bool isMonday true;

if(
isMonday)
{
    
std::cout << "Heute ist Montag";

Wenn wir nun ein ! vor das isMonday in der if-Abfrage schreiben, negieren wir unsere Abfrage und prüfen ob isMonday den Wert false hat, somit wird es zu keiner Ausgabe kommen, da isMonday ja den Wert true hat.


Es gibt noch jede Menge weitere Vergleichsoperatoren, wenn wir beispielweise prüfen wollen ob ein Wert einer Variable kleiner ist, als der Wert einer anderen Variable, dann macht man das wie folgt.
int a 5;
int b 10;

if(
b)
{
    
std::cout << "a ist kleiner als b";

Folgende Vergleichsoperatoren stehen noch zur Verfügung:
== (Gleichheit)
!= (Ungleichheit)
<= (kleiner oder gleich)
>= (größer oder gleich)
< (kleiner)
> (größer)



Wir können auch mehrere if-Abfragen machen, dazu gibt es das Schlüsseltwort else if.
int a 10;

if(
>= 50)
{
    
std::cout << "a ist größer oder gleich 50";
}
else if(
>= 30)
{
    
std::cout << "a ist größer oder gleich 30";
}
else if(
>= 10)
{
    
std::cout << "a ist größer oder gleich 10"// Dieser Abschnitt wird ausgeführt!

Das else if folgt immer unmittelbar nach einem if oder einem anderen else if, wir können es so oft benutzen wie wir wollen und somit mehrere Bedingungen aufstellen.

Wenn wir nun möchten, das ein bestimmter Abschnitt als Alternative ausgeführt wird, wenn keine unserer Bedingungen erfüllt sind, dann benötigen wir das Schlüsseltwort else. Ein else darf nur nach einem if oder else if folgen!
bool isMonday false;

if(
isMonday)
{
    
std::cout << "Heute ist Montag";
}
else
{
    
std::cout << "Heute ist nicht Montag";

Dieser Code wird Heute ist nicht Montag ausgeben. Die Bedingung isMonday == true in unserer if-Abfrage ist nicht erfüllt, somit wird der else Abschnitt ausgeführt.


Wir können mehrere Bedingungen auch Verknüpfen. Wenn wir möchten, dass zwei Bedingungen erfüllt sein müssen, dann verwenden wir den logischen && Operator.
bool isMonday true;
bool isToday true;

if(
isMonday && isToday)
{
    
std::cout << "isMonday ist true und isToday ist ebenfalls true";

Dieser Code gibt isMonday ist true und isToday ist ebenfalls true aus, da beide Bedingungen erfüllt sind. Sobald eine der beiden Variablen den Wert false hat, ist die Bedingung nicht mehr erfüllt! Wir können das ganze auch so schreiben, dass nur eine der beiden Bedingungen erfüllt sein muss, dazu verwenden wir den logischen || Operator.
bool isMonday true;
bool isToday false;

if(
isMonday || isToday)
{
    
std::cout << "isMonday ist true oder isToday ist true";

Nun kann eine der Variablen den Wert false haben, aber nicht beide, denn eine Bedingung muss erfüllt sein.


Es gibt auch mehrere Schreibweisen einer if-Abfrage, wenn unsere Anweisung nur eine Zeile hat, können wir auf die geschweiften Klammern verzichten. Folgender Code funktioniert somit ebenfalls.
bool isMonday false;

if(
isMonday)
    
std::cout << "Heute ist Montag";
else
    
std::cout << "Heute ist nicht Montag"
Diese Schreibweise bevorzuge ich persönlich, da der Code nicht unnötig lang wird. Man erkennt durch das Schlüsselwort if schnell, dass hier eine Bedingung aufgestellt wird. Anders wiederum ist es bei dem folgendem Code, dieser funktioniert ebenfalls.
bool isMonday false;

isMonday == true std::cout << "Heute ist Montag" std::cout << "Heute ist nicht Montag"
Hier schreiben wir unsere Bedinung vor das Fragezeichen und nach dem Fragezeichen kommt die Anweisung, die ausgeführt werden soll wenn die Bedingung erfüllt ist. Hinter dem Doppelpunkt nach der ersten Anweisung, kommt die Anweisung die ausgeführt werden soll, wenn die Bedingung nicht erfüllt ist. Mit dieser Schreibweise spart man natürlich Zeilen, aber ich kann diese Schreibweise nicht empfehlen. In größeren Projekten übersieht man sowas schnell, muss aber jeder für sich selber wissen.



Das war es erstmal von mir, wenn ich was vergessen habe oder es Verbesserungsvorschläge gibt, dann postet einfach. Hoffentlich habt ihr alles verstanden, bin leider kein guter Tutor.

Liebe Grüße,
Domenic

EDIT by Easysurfer: Thread-Titel geändert (Nummerierung geändert). Danke an Wuffy!
  Mit Zitat antworten
The Following 5 Users Say Thank You to Domenic For This Useful Post:
Becks (05.05.2024), CodeCracker (14.05.2024), easysurfer (05.05.2024), Elazer (10.05.2024), per2per (09.05.2024)
05.05.2013, 16:45   #2
Becks (Offline)
Moderator
 
Registriert seit: 23.07.2024
Beiträge: 119
Thanks: 72
Thanked 35 Times in 24 Posts
Standard

Dann könnte man ja mit Schleifen weitermachen

Gutes Tut btw. ließt sich sehr angenehm, was min. genauso wichtig ist wie der Inhalt.
__________________
  Mit Zitat antworten
The Following User Says Thank You to Becks For This Useful Post:
Domenic (05.05.2024)
09.05.2013, 17:48   #3
per2per (Offline)
Moderator
 
 
Registriert seit: 23.03.2025
Ort: cd paradisus\
Beiträge: 119
Thanks: 8
Thanked 36 Times in 25 Posts
Standard

Schön gemacht,

es freut mich das sich auch andere Member trauen was zu schreiben.

mfg
  Mit Zitat antworten
The Following User Says Thank You to per2per For This Useful Post:
Domenic (10.05.2024)
10.05.2013, 01:10   #4
Elazer (Offline)
Coderz Mitglied
 
Registriert seit: 01.04.2024
Ort: Irgendwo :D
Beiträge: 72
Thanks: 17
Thanked 9 Times in 8 Posts
Standard

Schön gemacht ziemlich verständlich vielleicht willst du ja noch mehr Tutorials schreiben
  Mit Zitat antworten
The Following User Says Thank You to Elazer For This Useful Post:
Domenic (10.05.2024)
19.05.2013, 21:26   #5
tho (Offline)
Coderz Mitglied
 
Registriert seit: 27.11.2024
Beiträge: 38
Thanks: 5
Thanked 4 Times in 4 Posts
Standard

sollte es nicht eine C-Lerngruppe sein?
... das hier ist C++. Wurden sich irgendwo geeinigt, was genau programmiert werden soll?

C kennt nur unter Umständen bool und std::out ist C++. Das könnte den einen oder anderen verwirren und zu Fehlern beim compileiren führen.
  Mit Zitat antworten
20.05.2013, 01:51   #6
Becks (Offline)
Moderator
 
Registriert seit: 23.07.2024
Beiträge: 119
Thanks: 72
Thanked 35 Times in 24 Posts
Standard

Zitat von tho
sollte es nicht eine C-Lerngruppe sein?
... das hier ist C++. Wurden sich irgendwo geeinigt, was genau programmiert werden soll?
Hmm ist irgendwie zu einem Gemisch geworden. Wenn man das Prinzip verstanden hat, sollte es eigentlich keine Probleme geben.


Hat sich eigentlich schon jemand an Schleifen gesetzt?
__________________
  Mit Zitat antworten
20.05.2013, 18:38   #7
inherited (Offline)
Coderz Mitglied
 
Registriert seit: 26.06.2024
Ort: bw
Beiträge: 345
Thanks: 17
Thanked 53 Times in 35 Posts
Standard

Zitat von Becks
Hat sich eigentlich schon jemand an Schleifen gesetzt?
euer aufwand in allen ehren, doch lohnt es sich wirklich? ueber die jahre hinweg sind so unheimlich viele freie, gute werke entstanden. an die qualitaet mancher werke kann hier kaum einer anknuepfen. und wenn, dann erreicht ihr hier kaum das publikum das man gerne erreichen moechte.

steckt eure energie doch lieber in projekte wie wikibooks
https://de.wikibooks.org/wiki/Regal:Programmierung
gerade bei c/cpp und co kann man sich dort noch richtig austoben.
und die die gerne was lernen moechten, die sind auf wikibooks denke ich auch besser aufgehoben. tutorials als offene threads zu veroeffentlichen geht imho garnicht. was soll man als anfaenger davon halten, wenn der artikel von dem man lernen moechte drei posts darunter kritisiert wird bzw. richtig gestellt wird. wenn ihr schon an sowas arbeitet, dann lasst doch wenigstens einen lektor gegenlesen

//edit
tippfehler beseitigt

Geändert von inherited (20.05.2024 um 22:10 Uhr)
  Mit Zitat antworten
The Following 5 Users Say Thank You to inherited For This Useful Post:
Delinquenz (20.05.2024), Domenic (21.05.2024), Dr.ChAoS (20.05.2024), Mofo (20.05.2024), TgZero (22.05.2024)
21.05.2013, 22:55   #8
Domenic (Offline)
Moderator
 
Registriert seit: 12.06.2024
Beiträge: 40
Thanks: 14
Thanked 13 Times in 8 Posts
Domenic eine Nachricht über ICQ schicken
Standard

Wenn es darum geht, ob Buch oder Tutorial um eine Sprache zu lernen, da hast du mein volles Verständnis. Ich bin natürlich auch dafür, dass man mit einem gescheiten Buch startet!

Ich sehe die Threads in der Lerngruppe viel mehr als Nachschlageort für Anfänger und natürlich um Hinweisen zu können, falls sich jemand dumm anstellt.

Liebe Grüße,
Domenic
  Mit Zitat antworten
22.05.2013, 15:19   #9
Becks (Offline)
Moderator
 
Registriert seit: 23.07.2024
Beiträge: 119
Thanks: 72
Thanked 35 Times in 24 Posts
Standard

Ich selber lerne am liebsten mit meinen Büchern. Irgendjemand wollte hier halt eine Lerngruppe starten, aus diesem Grund habe ich etwas dazu beigetragen. Ich denke, ganz ehrlich, dass es absolut nichts bringt, weil wenn man die Sprache wirklich lernen will, reicht kein Thread alle paar Tage. (Nur meine Meinung, aber trotzdem unterstütze ich das Projekt)
__________________
  Mit Zitat antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:30 Uhr.

Powered by vBulletin®
Copyright ©2008 - 2013
Template-Modifikationen durch TMS