Was ist Code-Surfen?
Code-Surfen ist keine Therapie, Code-Surfen ist (m)eine Entspannungsmethode, die ich zufällig für mich erfunden habe - um sozusagen aus der Not eine Tugend zu machen. Und jeder kann sich das gerne für sich selbst adaptieren und der eigenen Variante dann evtl eine bessere Bezeichnung geben. (z.B. im Code wandern)
Wenn die Gedanken in den bewusst geschaffenen Gedankenmodellen wandern:
- Zum Entspannen,
- zum Einschlafen,
- zum Ablenken,
- zum Runterkommen,
- .... bis hin zum Strukturieren von Gedanken und Ideen
Wann wende ich Code-Surfen an?
- Bei Zerstreutheit,
- bei Einschlafproblemen,
- bei Gedankenkreisen
- ...und immer*, wenn es gut tut.
Wie funktioniert es?
Beim Spaziergang im Wald, beim Sitzen, Liegen,...überall, wo du dich auf deine Gedankenmodelle konzentrieren kannst, und in gedanklichen Konstruktionen versinken kannst.
Du rufst Dir einen Quellcode eines Computer-Programms ins Gedächtnis, und gehst in Gedanken den Code durch.
Je nachdem, wie komplex das Programm ist und wie du Spaß daran hast, kannst Du den Code aus unterschiedlichen Perspektiven durcharbeiten.
- Eine Variante wäre den Ablauf zu simulieren.
- Oder bei einem objektorientierten Code könntest du zuerst Deine Bibliotheken durchsehen, um dann zum Hauptcode zu kommen usw,...
- ...wie es Dir gefällt.
Falls Du auf einen gedanklichen Fehler draufkommst, kannst Du diesen überspringen - oder auch fürs gute Gefühl nochmals von Beginn an loslegen.
Du wirst im Laufe der Zeit draufkommen, dass bestimmter Programmcode eher müde macht, stärker strukturiert, usw. ... und natürlich ist es phantastisch, wenn Du in Gedanken vollkommen neuen Code schreibst - das wird Dir sowieso sehr schnell passieren - das kann man vielleicht nicht einmal verhindern.
Das, was Dir gerade gut tut, das hole dir in deine Gedankenmodelle.
Der Weg zur Objektorientierung in Lernetappen
Nun für Programmierneulinge, der Weg zur Objektorientierung in Lernetappen und damit zu den ersten Surfen:
Primitive Datentypen in C++
C++ stellt uns von Anfang an die sogenannten primitiven Datentypen zur Verfügung.
Beispiel: Basisdatentypen und eine kleine Anwendung
// Primitive Datentypen in C++
#include <iostream>
using namespace std;
int main() {
int alter = 55;
float preis = 19.99f;
char buchstabe = 'A';
bool isOnline = true;
cout << "Alter: " << alter << endl;
return 0;
}
Arrays in C++
C++ kennt auch Arrays zur Speicherung mehrerer Werte desselben Typs.
Beispiel: int und char Arrays mit einer kleinen Anwendung
// Arrays in C++
// Arrays erlauben die Speicherung mehrerer Werte desselben Typs
#include <iostream>
#include <string>
using namespace std;
int main() {
// Ein Array von Ganzzahlen (int)
int zahlen[5] = {10, 20, 30, 40, 50};
// Ein Array von Zeichen (char) - kann als String verwendet werden
char name[20] = "Code-Surfen";
// Ausgabe der Array-Inhalte
cout << "Zahlen-Array:" << endl;
for (int i = 0; i < 5; i++) {
cout << "Element " << i << ": " << zahlen[i] << endl;
}
cout << endl << "Name als char-Array: " << name << endl;
// Durchschnitt der Zahlen berechnen
int summe = 0;
for (int i = 0; i < 5; i++) {
summe += zahlen[i];
}
double durchschnitt = static_cast<double>(summe) / 5;
cout << "Durchschnitt der Zahlen: " << durchschnitt << endl;
// Buchstaben im Namen zählen
int buchstabenZaehler = 0;
while (name[buchstabenZaehler] != '\0') {
buchstabenZaehler++;
}
cout << "Anzahl der Buchstaben im Namen: " << buchstabenZaehler << endl;
return 0;
}
Kontrollstrukturen in C++
Kontrollstrukturen wie while, if, for steuern den Programmfluss.
Beispiel: while, if und for Schleifen
// Kontrollstrukturen in C++
// Steuerung des Programmflusses mit Bedingungen und Schleifen
#include <iostream>
using namespace std;
int main() {
// IF-ELSE Bedingung
int alter = 25;
cout << "IF-ELSE Beispiel:" << endl;
if (alter < 18) {
cout << "Du bist minderjährig." << endl;
} else if (alter >= 18 && alter < 65) {
cout << "Du bist im erwerbsfähigen Alter." << endl;
} else {
cout << "Du bist in den besten Jahren" << endl;
}
// WHILE Schleife
cout << endl << "WHILE Schleife - Countdown:" << endl;
int countdown = 5;
while (countdown > 0) {
cout << countdown << "..." << endl;
countdown--;
}
cout << "Start!" << endl;
// FOR Schleife
cout << endl << "FOR Schleife - Quadratzahlen:" << endl;
for (int i = 1; i <= 10; i++) {
int quadrat = i * i;
cout << "Das Quadrat von " << i << " ist " << quadrat << endl;
}
// SWITCH-CASE Anweisung
cout << endl << "SWITCH-CASE Beispiel:" << endl;
int wochentag = 3; // 1=Montag, 2=Dienstag, ...
switch (wochentag) {
case 1:
cout << "Montag - Wochenstart!" << endl;
break;
case 2:
cout << "Dienstag" << endl;
break;
case 3:
cout << "Mittwoch - Wochenmitte!" << endl;
break;
case 4:
cout << "Donnerstag" << endl;
break;
case 5:
cout << "Freitag - Wochenende naht!" << endl;
break;
default:
cout << "Wochenende" << endl;
break;
}
return 0;
}
Funktionen in C++
Funktionen erlauben die Strukturierung von Code in wiederverwendbare Blöcke.
Beispiel: Funktionen zur Modularisierung
// Funktionen in C++
// Funktionen erlauben die Strukturierung von Code in wiederverwendbare Blöcke
#include <iostream>
#include <cmath>
using namespace std;
// Funktiondeklarationen (Prototypen)
int addiere(int a, int b);
double berechneKreisflaeche(double radius);
void ausgabeBegruessung(string name);
int berechneFakultaet(int n);
int main() {
// Funktionen aufrufen
cout << "Funktionen in C++" << endl << endl;
// Einfache Additionsfunktion
int summe = addiere(7, 13);
cout << "7 + 13 = " << summe << endl;
// Funktion mit Rückgabewert
double radius = 5.0;
double flaeche = berechneKreisflaeche(radius);
cout << "Die Fläche eines Kreises mit Radius " << radius;
cout << " ist " << flaeche << endl;
// Funktion ohne Rückgabewert (void)
ausgabeBegruessung("Code-Surfer");
// Rekursive Funktion
int zahl = 5;
int fakultaet = berechneFakultaet(zahl);
cout << "Die Fakultät von " << zahl << " ist " << fakultaet << endl;
return 0;
}
// Funktionsdefinitionen
// Funktion, die zwei Zahlen addiert
int addiere(int a, int b) {
return a + b;
}
// Funktion, die die Fläche eines Kreises berechnet
double berechneKreisflaeche(double radius) {
const double PI = 3.141592653589793;
return PI * radius * radius;
}
// Funktion ohne Rückgabewert (gibt nur aus)
void ausgabeBegruessung(string name) {
cout << endl << "Hallo " << name << "!" << endl;
cout << "Willkommen beim Code-Surfen." << endl;
cout << "Viel Spaß beim gedanklichen Programmieren!" << endl << endl;
}
// Rekursive Funktion zur Berechnung der Fakultät
int berechneFakultaet(int n) {
if (n <= 1) {
return 1;
} else {
return n * berechneFakultaet(n - 1);
}
}