if esel

Das Leben. Es ist ein ewiges Wechselspiel zwischen den Entscheidungen die wir treffen und den Folgen. Die auf unserem Lebensweg immer wieder erscheinende Weggabelung, die sich – vormals von Nebelschwaden verhüllt, vor uns auftut. Es ist vielleicht der Fluch des ungläubigen Menschen, sich von der süßen, trügerischen Idee des Schicksals lösen zu müssen, um bis an sein Lebensende Entscheidungen zu fällen. Ein Universum von Handlungsalternativen, zu groß für den menschlichen Verstand, erdrückt uns ob seiner schier untragbaren Last, die uns unsere Bedeutungslosigkeit vor Augen führt.

Ey wie geil, dass es für diesen Zweck Computer gibt!

Das 4. Kapitel heißt „Entscheidungen treffen“. Und wird vermutlich ein entscheidender (haha) Einschnitt in meine Programmierkenntnisse sein.
Entscheidungen in Programmen sind so etwas wie bedingte Anweisungen. Statt sequentiell und chronologisch wird jetzt logisch bedingt ein Programm geschrieben und durchgearbeitet.

Dafür gibt es z.B. den Ausdruck x>y ? x : y bzw. ?:
Diese Formel stellt die Bedingung „wenn x größer als y ist“. Ist sie wahr, folgt der Wert, der auf das Fragezeichen folgt. Ist sie falsch, folgt der Wert, der auf den Doppelpunkt folgt, also y. Für die Bedingung kann ich ein verschiedene Vergleichsoperatoren einsetzen. Entweder größer als (>), kleiner als (<), kleiner oder gleich (<=), größer oder gleich (>=), ungleich (!=), genau gleich (==). Wobei es wohl so ein kleiner ätzender immer wieder auftretender Fehler ist, das == mit dem = zu verwechseln, da sie semantisch zwar nah beieinander liegen, aber etwas anderes ausdrücken. Also in Zukunft nicht mehr nur das Programm nach fehlenden Semikolons untersuchen sondern auch nach diesem beliebten Mitesser. Der mir schon ein paar Mal untergekommen ist. Damit dürften die Fehlermeldungen beim ersten Kompilierversuch nur noch halb so umfangreich sein.

Allerdings eignet sich der ?:-Ausdruck nicht für komplizierte Anwendungen. Aber man kann sich ja mal merken, dass sich das ganze ternärer Operator nennt, weil er aus Bedingung, Ausdruck für den Wahrheitsfall und dem alternativen Ausruck besteht. Ist aber auch scheißegal jetzt, weiter mit if.

Dazu ein kleiner Währungsrechner. Vermutlich haben mehr Menschen auf dieser Welt irgendwann mal den Bedarf ihre aufgehobenen DMs zeitnah umzutauschen, weil nicht nur sie auf die geniale Idee sind, auf den fantastischen DM-Wert in der Zukunft zu spekulieren, als es Menschen mit Bitcoins gibt. Aber das is nur sone Theorie. Trotzdem habe ich mal DM durch BTC ersetzt. Ich hoffe ja immer noch, eines Tages mal ein Programm zu programmieren, das ihr verwenden könnt. Benzin.c scheiterte wohl daran, dass ihr alle kein Auto habt. Da bin ich mir sicher. Danke an @johl für die BTC-Idee. Auch wenn man natürlich bedenken sollte, dass der Kurs ständig schwankt.

Kleine Anmerkung: Wenn das Programm von mir nicht ausreichend erläutert wird, gibt es ausführlichere Erklärungen in den früheren Posts. Wenn euch bspw. schon die erste Zeile zu schaffen macht. Öhö.Öhöhöhö. Ihr N00bs! Hihihihihi!

Noch eine Anmerkung: Wenn ihr das Programm ausprobieren wollt, solltet ihr entweder die Nummerierung rausnehmen oder aus diesem Pastebin kopieren: http://pastebin.com/YhuPUatX

#include <stdio.h>
main ()
{
        int wahl;
        float betrag;
        printf("\n\tB I T C O I N I A T O R\n");
1)      printf("\n1 BTC --> Euro\n2 Euro --> BTC");
        printf("\n\nIhre Wahl: ");
        scanf("%i", &wahl);
2)      if (wahl == 1) 
        {
                printf("Bitte BTC-Betrag eingeben: ");    
                scanf("%f", &betrag);
3)              printf("\n%.2f BTC sind %.2f EURO\n", betrag, betrag*8.69);
        }
4)      else if (wahl == 2)
        {
                printf("Bitte EURO-Betrag eingeben: ");
                scanf("%f", &betrag);
                printf("\n%.2f EURO sind %.2f BTC\n", betrag, betrag*0.12);
        }
5)      else
                printf("\nUngueltige Option, man!\n");        
}

Das Programm funktioniert so, dass es als erstes abfragt, in welche „Richtung“ gerechnet werden soll. 1) Es stellt also die Frage:

1 BTC –> EURO
2 EURO –> BTC

Ihr Wahl:

Geb ich nun 1 ein, wird ein BTC-Wert in EURO umgerechnet. Diese Konsequenz entsteht durch die erste if-Bedingung bei 2) Wenn ich ein if anwende, folgt in runden Klammern die Bedingung für die Ausführung der folgenden Operation: Nämlich, dass der eingegebene Wert für „wahl“ == 1 ist. Also genau 1 enstpricht. Ist diese Aussage erfüllt, also wahr, wird die folgende Rechnung ausgeführt und ausgegeben. 3)
Wenn die Aussage nicht wahr ist, weil die 2 eingegeben wird, wird alles was nach if in den geschweiften Klammern steht übersprungen und das Programm geht zu „if else„. 4) Hier wird der Kurs natürlich andersherum gerechnet.

Wenn jetzt irgendein Scherzkeks eine 0 oder ein Versalien-ß oder ein ☃ eingegeben hat wird zu der letzten Anweisung „else“ gewechselt 5). Es darf in einem if-system mehrere if-else-Konstrukte geben, aber nur einen einzigen Esel. So wie im echten Leben. Nein, Moment, es gibt ’ne ganze Menge Esel in meinem Leben, allein auf diesem Blog wimmelt es davon.
Wie auch immer, wenn weder die Bedingung von if oder if-else erfüllt ist, werden die Anweisungen von „else“ ausgeführt.

So einfach ist das! Jetzt geht schon hin da, zu dieser Bar in diesem verrückten Berlin wo man angeblich mit Bitcoin zahlen kann. Holt eure alten Thinkpads raus, hackt das Programm ein und sagt: „Hey Moment, das Programm ist falsch, hier steht, ein Bier kostet 3 Euro!“ Und sie werden in die Verlegenheit kommen, zuzugeben, dass ihre Preispolitik falsch ist.  Viel Spaß!

Kleiner Exkurs: Weil es wirklich ein sehr häufiger Fehler von (nicht nur) AnfängerInnen ist, das = mit dem == zu verwechseln, haben sich ein paar sehr clevere Leute das Yoda Programming überlegt. Es werden die beiden Bedingungswerte vertauscht. Wenn man nun aus Versehen „52 = Wert“ geschrieben wird, streikt der Compiler, da einer Konstanten kein Wert zugewiesen werden kann. „52 == Wert“ funktioniert aber ganz wunderbar. Kann man sich mal anschauen.

%d Bloggern gefällt das: