Coden mit Doom, Tobi und Martina: Programmieren lernen für Anfänger (Beans Creative Streams)

Okay um nochmal zu erwähnen, dass ich wirklich der noob vor dem Herrn bin: Ich hab jetzt echt lang gebraucht um zu kapieren, dass man node.js erst in VSC installieren muss. Deshalb musste ich vorhin auch nochmal wegen dem console.log fragen, denn das hat bei mir halt echt nicht funktioniert mit “node” … Ich hab mir jetzt von einem englichsprachigen Inder auf YT erklären lassen wie das geht.

Ist keine Kritik, nur falls es noch jemandem so geht ist es vielleicht hilfreich. xD

3 „Gefällt mir“

Also hast das gemacht, was die meisten Programmierer machen, wenn sie nicht mehr weiter wissen :D.

:+1:

3 „Gefällt mir“

In der Schule habe ich meine Hausaufgaben nie so schnell erledigt (wenn überhaupt)… :beanjoy:

function rechne(Anweisung, ErsteZahl, ZweiteZahl) {
  // Addition
  if (Anweisung == "Add") {
    return ErsteZahl + ZweiteZahl;
  }

  // Subtraktion
  if (Anweisung == "Sub") {
    return ErsteZahl - ZweiteZahl;
  }

  // Multiplikation
  if (Anweisung == "Mul") {
    return ErsteZahl * ZweiteZahl;
  }

  // Division
  if (Anweisung == "Div") {
    if (ZweiteZahl == 0) {   // Prüfung auf Division durch 0
      console.log("Fehler: Die zweite Zahl darf nicht 0 sein");
      return;
    } else {
      return ErsteZahl / ZweiteZahl;
    }
  }

  // Folgende Zeile wird nur bei unbekannter Rechnungsart ausgeführt
  console.log("Unbekannte Rechnungsart, es wird nur Add/Sub/Mul/Div unterstützt.");
}

console.log("9 + 3 = " + rechne("Add", 9, 3));
console.log("9 - 3 = " + rechne("Sub", 9, 3));
console.log("9 * 3 = " + rechne("Mul", 9, 3));
console.log("9 / 3 = " + rechne("Div", 9, 3));
console.log("9 / 0 = " + rechne("Div", 9, 0));
console.log("9 A 3 = " + rechne("Quatsch", 9, 3)); 

Meine heutige Erkenntnis bei den Hausaufgaben:
Die Schlüsselwörter if/return/else/… müssen klein geschrieben werden! Da bin ich zuerst drüber gestolpert, weil ich Return geschrieben habe und er mir Fehlermeldungen um die Ohren gehauen hat. :slight_smile:

Wer nicht weiterkommt oder Fragen hat: Scheut euch nicht und stellt diese in diesen Thread! Hier gibt es viele schlaue Köpfe, die euch schnell weiterhelfen können.


Zur Sendung:
Die heutige zweite Folge war ein wenig verwirrend, auch weil Martina leider Internetprobleme hatte. Zwei Sachen, die mir aufgefallen sind:

  • Die Wiederholung der letzten Sendung sollte kürzer ausfallen, damit nicht soviel Zeit verloren geht. Zwei oder drei Sätze sollten z.B. reichen: „In der letzten Sendung haben wir unsere Entwicklungsumgebung eingerichtet, dazu gibt es im Forum einen Thread, in dem erklärt wird, dass wir einerseits den Editor VS Code und andererseits den Übersetzer NodeJS benötigen. Außerdem hatten wir Funktionen, das sind Unterprogramme und Variablen kennengelernt.“
  • Thematisch sind wir heute ein wenig hin und her gesprungen. Das macht es ein wenig schwierig zu folgen.

Mir ist bewusst, dass Erklären in einer Live-Situation ultra-schwierig ist und ich habe höchsten Respekt, wie gut Martina und Tobi das heute gemeistert haben! :slight_smile: :+1:

Ich freue mich schon auf die nächste Folge. :beansmirk:

3 „Gefällt mir“

Habe mich auch mal an die Hausaufgaben gemacht. Habe die ganze Zeit vergessen die Datei mit node auszuführen und habe deswegen lange Zeit nur Fehlermeldungen bekommen. :see_no_evil:

function rechnen (rechenart,erste,zweite) {

if (rechenart=="addieren") {

    return erste + zweite;

}

if (rechenart=="subtrahieren") {

    return erste - zweite;

}

if (rechenart=="multiplizieren") {

    return erste * zweite;

}

if (rechenart=="dividieren") {

    if (zweite==0) {

        return "auch bei noobs darf man nicht durch 0 teilen!";

    }

    return erste / zweite;

}

}

2 „Gefällt mir“

Hy ihr Bohnen!
Finde es wirklich toll das ihr jetzt auch so ein Format macht. Ich hoffe das kommt regelmässig . Werde bei jeder Folge voll dabei sein…Bitte macht mehr in Sachen Programmierung. Thx

7 „Gefällt mir“

Eine Ergänzung zur zweiten Folge:
Javascript hat neben == noch einen anderen Vergleichsoperator, nämlich ===. Beide Operatoren unterscheiden sich dann, wenn Werte verschiedener Typen verglichen werden sollen.
Bei == wird versucht, zuerst beide Werte in den gleichen Typen umzuwandeln und dann zu vergleichen. Bei === findet diese Umwandlung nicht statt und Werte in verschiedenen Typen sind deshalb dort nie gleich.

Ein paar Beispiele dazu:

console.log(1 == 1);
// true
console.log(1 === 1);
// true

console.log("1" == "1");
// true
console.log("1" === "1");
// true

console.log(1 == "1");
// true
console.log(1 === "1");
// false

console.log(0 == "");
// true
console.log(0 === "");
// false

Bei 1 == "1" mag das Verhalten von == mit der automatischen Umwandlung ganz praktisch erscheinen, bei dem Beispiel 0 == "" sieht man aber, das == auch schnell unerwartete Ergebnisse liefern kann.

Deshalb sollte man bei Javascript für Vergleiche grundsätzlich immer === verwenden.

9 „Gefällt mir“

Und hier nun auch als VoD zu finden:

bei nochmaligen anschauen bin ich recht unzufrieden :smiley: war doch sehr hin und her gespringe. Da muss ich mich besser strukturieren :slight_smile:

7 „Gefällt mir“

Irgendwas hab ich wohl falsch gemacht. Nur was?!

function rechne (rechenart,first,second) {

if (rechenart == „plus“) {return first + second;}

if (rechenart == „minus“) {return first - second;}

if (rechenart == „mal“) {return first * second;}

if (rechenart == „geteilt“) {return first / second;}

}

console.log (rechne (plus , 1 , 2));

Fehlermeldung = ReferenceError: plus is not defined
Hoffe, die Hausaufgaben werden nächstes mal noch besprochen. :sweat_smile:

Edit: Übrigens ist das mein erster Beitrag hier im Forum.
Ich finde das Format super und hoffe, dass ihr das weiterführt.
Das Format war der ausschlaggebende Punkt, dass ich mich entschieden habe, Rocketbeans nun monatlich zu supporten.

2 „Gefällt mir“

Versuche mal in der letzten Zeile das plus in Gänsefüßchen zu setzen. :slight_smile:

4 „Gefällt mir“

Vielen Dank!
Jetzt hats geklappt. :slightly_smiling_face:

3 „Gefällt mir“

Gerade das VOD geschaut… - Ich fand es großartig wie Tobi die Sendung nach dem Internet Breakdown bei Martina gerettet hat. So spontan muss man erstmal sein und das Ruder übernehmen. Zumindest zeugt das davon dass ihr die Sendung vermutlich gut vorgeplant habt.

Hat wieder Spaß gemacht - bisher komm ich noch nicht an meine Grenzen, daher hoffe ich auf viele weitere folgen. Die meisten Dinge die ihr bisher erklärt habt kenne ich schon, für einen absoluten Anfänger ist das aber wirklich notwendig. Ich hab aber auch schon was gelernt … - „Return“ hatte ich vorher noch nie so recht verstanden :wink: . Damit kann man ja einiges abkürzen.

ToiToiToi, dass das Internet für die nächste Sendung bei Martina wieder hoch gefahren wird.:grinning:

4 „Gefällt mir“

Um das vielleicht noch eben aufzuklären, du wertest in der Funktion rechne() eine Zeichenfolge (String) aus. Übergibst aber beim Aufruf eine nicht definierte Variable (Plus) erst durch die Anführungszeichen weiß der PC beim Übersetzen, dass Plus als Zeichenfolge zu interpretieren ist.

3 „Gefällt mir“

Ich habs geschafft, glaub ich. (Brecht mir jetzt nicht das Herz…) ich glaub so war das gemeint, oder? :thinking:

1 „Gefällt mir“

Das sieht sehr gut aus. :slight_smile: :+1:

1 „Gefällt mir“

Echt wahr?? heul vor Glück Danke!!! :heart::sob:

Und sogar nochmal besser, das mit dem durch 0 teilen fehlte noch.

2 „Gefällt mir“

Ich habe mir gerade die zweite Folge im VOD angeschaut (musste zum Live Stream arbeiten). Schöne Folge und super improvisiert von Tobi. Ich bin mir nicht ganz sicher ob man als Programmieranfänger mitgekommen ist aber er hat alles gut und verständlich erklärt.

Hier mal meine (nicht ganz ernst gemeinten) Hausaufgaben:

fs = require('fs');
exec = require('child_process').exec;

let script = "from sys import argv\noperations = {'addieren':'+','subtrahieren':'-','multiplizieren':'*','dividieren':'/'}\nif len(argv) == 4 and argv[1] in operations and argv[2].isnumeric() and argv[3].isnumeric(): print(eval(f'{argv[2]}{operations[argv[1]]}{argv[3]}'))\nelse: print('Eingabe ungültig')"
fs.promises.writeFile("rechnen.py", script);

function rechnen(operation,erste,zweite)
{
	exec("python rechnen.py " + operation + " " + erste + " " + zweite, (error, stdout, stderr) =>
	{
		console.log(stdout);
	});
}

rechnen("addieren",20,3);
rechnen("subtrahieren",66,2);
rechnen("multiplizieren",21,2);
rechnen("dividieren",26,2);

PS: Das Python script war schnell geschrieben. Das JS musste ich mir erst zusammengooglen :laughing:

2 „Gefällt mir“

Sowas kommt raus, wenn Leute auf IHRE Programmiersprache bestehen. :beanjoy:

1 „Gefällt mir“

:kappa:

Kapiert, danke für die Erläuterung. :+1:

1 „Gefällt mir“

Bin wieder mit dem VOD durch und mein positiver Eindruck setzt sich fort.

Ich finde es toll, dass das Feedback direkt umgesetzt und z.B. Hausaufgaben aufgegeben wurden. Da bin ich wirklich gespannt, wie sich zukünftig die Übungen entwickeln werden.

Ich freue mich für euch Drei, dass ihr weiterhin Sendeplätze bekommt & drücke die Daumen, dass das Projekt sein Ziel erreichen wird :slight_smile:

Ganz stark für mich auch der liebe @Kohbrax wie fantastisch du in dieser Situation reagiert hast =).
Im Gegensatz zu vielleicht anderen Zuschauern, fand ich die Idee super kurz mittels Notepad zu improvisieren. Das hat den Erläuterungen aus meiner Sicht keinen Abbruch getan. Schade war eben nur, dass die Sendezeit sich dem Ende neigte. Sehr souverän gemeistert. Schön dich als Code-Sensei in diesem Dreier-Gespann willkommen heißen zu können :wink:

Wenn ich euch als Kommilitonen im Informatik Studium gehabt hätte, dann wäre das vielleicht doch was geworden ^^.

Mathe war dort übrigens in der Tat das Rausschmeißer-Fach

Mir kam die Sendung übrigens diesmal noch kurzweiliger vor als beim letzten Mal. Zumindest hatte ich das Gefühl, dass wir nicht super viel Neues behandelt haben. Könnte mir aber auch vorstellen, dass generell für die Sendung nicht sonderlich viel mehr geplant gewesen ist, um die Thematik dann genau zu beleuchten.

Freu mich jedenfalls schon auf das nächste VOD vom 20. =)!

1 „Gefällt mir“