Code

helloworld.cpp


// Integrated Development Environment (IDE)
// Editor, (Compiler), Debugger

// Präprozessor-Direktiven
// Bibliotheken einbinden
#include <iostream>
#include <random>

using namespace std;

// Call by reference: Adressübergabe per Adressoperator &
void Swap(int& a, int& b) {
    // Sowohl 'a' als auch 'b' werden "by reference" übergeben,
    // deshalb ist eine Zuweisung möglich.
    int temp = a;
    a = b;
    b =	temp;
}

// Call by value: Wertübergabe
int square(int a) {
	return a * a;
}

// Hauptfunktion ("Highlander"-Prinzip – es kann nur eine geben)
int main() {

	std::cout << "Hello World";

	// Compilieren / Compiler: Übersetzt vom Quell- zum Zielprogramm
	// Maschinencode / Bytecode
	// g++ helloworld.cpp -> a.out

	// Lexik: Definiert die gültigen Zeichen und Wörter, aus
	// denen Programme der Programmiersprache zusammengesetzt
	// sein dürfen

	/*
		Syntax: Definiert den korrekten Aufbau der Sätze aus
		gültigen Zeichen bzw. Wörtern, d.h. sie legt fest, in
		welcher Reihenfolge lexikalisch korrekte Zeichen
		bzw. Wörter im Programm auftreten dürfen

		Semantik: Definiert die Bedeutung syntaktisch korrekter
		Sätze, d.h. sie beschreibt, was passiert, wenn bspw.
		bestimmte Anweisungen ausgeführt werden.

		Pragmatik: Definiert ihren Einsatzbereich, d.h. sie gibt
		an, für welche Arten von Problemen die
		Programmiersprache gut geeignet ist.
		vgl. http://www.java-hamster-modell.de/eBooks/hamster1.pdf
	*/

	// Variable
	// Deklaration: Es gibt diese bestimmte Variable
	int zahl;

	// Initialisierung: initialen Wert zuweisen
	zahl = 23;

	// int - Integer, ganze Zahlen
	// Bereich, int (32 Bit): -2.147.483.648 bis 2.147.483.647
	zahl = 2147483647;

	cout << endl;
	cout << "Zahl: " << zahl;

	// bool - Wahrheitswerte: falsch oder wahr
	// float - Fließkommazahlen
	// double - Fließkommazahlen mit doppelter Genauigkeit

	zahl = 25;
	cout << endl;
	cout << "Weitere Zahl: " << zahl;

	// C++ ist eine statisch typisierte Programmiersprache
	// C++ ist eine compilierte Programmiersprache

	// Call by reference vs. call by value
	cout << endl;
	cout << "Adresse der Variable zahl: " << &zahl;
	cout << endl;

	int zahlEins = 15;
	int zahlZwei = 25;

	cout << endl;
	cout << "zahlEins vor Aufruf von Swap()" << zahlEins;
	cout << endl;
	cout << "zahlZwei vor Aufruf von Swap()" << zahlZwei;

	Swap(zahlEins, zahlZwei);

	cout << endl;
	cout << "zahlEins nach Aufruf von Swap()" << zahlEins;
	cout << endl;
	cout << "zahlZwei nach Aufruf von Swap()" << zahlZwei;

	int a = 123;
	cout << endl;
	cout << "Quadrat" << square(a) << endl;

	cout << endl;

	/*
	Programmierparadigmen:
	- Imperative P.: BASIC, PASCAL
	- Funktionale P.: Haskell, LISP
	- Prädikative / deklarative P.: PROLOG
	- Regelbasierte P.: OPS5
	- Objektorientierte P.: C++
	vgl. http://www.java-hamster-modell.de/eBooks/hamster1.pdf
	*/

	cout << endl << "****** ***** *****" << endl;

	// Camel Case
	int zufallsZahl = 55;

	random_device rd;
	mt19937 gen(rd());
	uniform_int_distribution<> dist(1, 100);

	zufallsZahl = dist(gen);

	int eingabeZahl;

	// Schleifen: for(), while()
	bool erraten = false;

	while (!erraten) {

		cout << endl << "Ihre Zahl: ";
		cin >> eingabeZahl;

		// Auswahlanweisung: if / else / switch
		if (eingabeZahl == zufallsZahl) {
			cout << "Herzlichen Glückwunsch!" << endl;
			erraten = true;
		} else if (eingabeZahl > zufallsZahl) {
			cout << "Ihre eingegebene Zahl ist groesser!" << endl;
		} else {
			cout << "Ihre eingegebenen Zahl ist kleiner!" << endl;
		}
	}

	cout << endl << "****** ***** *****" << endl;
	// Rückgabewert der Funktion main()
	return 0;
}

helloworld.js


var zahl = 23;
console.log(zahl);

zahl = 23.15;
console.log(zahl);

zahl = "eine Zeichenkette"
console.log(zahl);

zahl = 23;
console.loggg(zahl);

zahl = 23 + 1;
console.log(zahl);

zahl = 23 + '1';
console.log(zahl);

// Js ist eine dynamisch typisierte Programmiersprache
// JS ist eine interpretierte Programmiersprache

->