Mittwoch, 19. Oktober 2016

11/1 Inf 0. Einstieg ins Programmieren

Blöd, dass ich jetzt erst einsteige, denn in 11/1 geht es mit dem Programmieren aus der 10. weiter. Hier möchte ich aber auf die am häufigsten auftretenden Schwachstellen der Schüler (die sogenannten Hä?-Punkte) eingehen. Ich gehe gern auf grundlegende Fragen aus den Kommentaren ein und beantworte sie.
Vorweg noch eine Information: ich programmiere in objektorientiertem System in Java

1. komplizierte Struktur / Syntax
Wer sich vor dem Programmieren mit Excel befasst hat, hat es wesentlich leichter, die Methoden zu verstehen, da sie im wesentlichen Gemeinsamkeiten aufweisen.
Beispiel: Verschachtelung von Funktionen wie SUMME / if
Außerdem kann es helfen, sich mit Datenbanken auseinanderzusetzen, denn diese weisen deutlich mehr Ähnlichkeit auf, zumal SQL (z.B. bei Open Office Datenbank) auch eine einfache Programmiersprache ist.
Beispiel: Funktionieren der Methoden Where / Having und if bzw. Benutzen von Rechen- oder Verbindungszeichen wie &,/

2. Denken wie ein Computer
Das ist, was viele so schwierig finden: Verstehen wie Methoden funktioneren und wie man sie anwenden muss. Dabei ist es ganz einfach. Natürlich muss man zuerst lernen, wofür die verschiedenen Methoden da sind und wie man sie schreibt. Und dann muss man sich zuerst in gewöhnlicher Sprache eine Lösung für ein Problem ausdenken. Erst dann kann man den Algorithmus in Computersprache übersetzen.
Beispiel: Realisiere das hinzufügen eines Menschen in eine Warteschlange (Feld mit Größe 3).
Überlegung: Man muss in das nächste freie Element des Feldes den gewünschten Menschen einfügen.
Programmierung: 
private Feld[] warteschlange; // Initialisierung eines Feldes
private int anzahlMenschen; // variable zeigt an, wie viele Menschen in der Warteschlange stehen
public Warteschlange() // Konstruktor
{
   warteschlange = new Feld[3]; // Feld bekommt drei Elemente: 0,1 und 2
   anzahlMenschen = 1; // von Anfang an ist ein Mensch in der Schlange

public void einfügen(Mensch m) // gewünschte Methode
{
   if(warteschlange.length<anzahlMenschen) // prüft, ob noch ein Mensch ins Feld passt
   {
       warteschlange[anzahlMenschen] = m; // wenn ja, wird an der Stelle nach den Menschen, die schon in der Schlange sind, der Mensch eingefügt
       anzahlMenschen++; // die Anzahl der Menschen in der Schlange erhöht sich um 1, da ein Mensch hinzugefügt wurde
   }
}

Das größte Problem, das ich beobachtet habe, ist, sich zu überlegen, wie der Algorithmus aussehen soll, um das Problem zu lösen und weniger die Programmierung. Hier kann ich nur raten: versucht, bereits vorhandene, richtige Codes zu verstehen und programmiert selbst etwas oder erweitert die Methoden aus dem Unterricht, wie ihr es wollt.

3. Allgemeingültige Programmierung
Es ist oft schwierig, Algorithmen allgemeingültig zu programmieren. Hier kann ich nur eines raten: zuerst spezifisch zu programmieren, um sich den Ablauf und die Funktionsweise klar zu machen, und dann den Algorithmus mit Variablen allgemeingültiger machen.
Beispiel: Realisiere das Aufrücken der Objekte im Feld der Warteschlange, wenn das erste Element null ist.
spezifisch:
warteschlange[1] = warteschlange[0]; // das Objekt auf 'Platz' 1 wird auf 'Platz' 0 kopiert
warteschlange[2] = warteschlange[1]; // das Objekt auf 'Platz' 2 wird über das Objekt auf 'Platz' 1 kopiert

Das muss jetzt so lange wiederholt werden, bis das letzte Element eins nach vorne 'geschoben' wurde.
allgemein:
for(int i=0; i<warteschlange.length; i++) // die for-Schleife ermöglicht bei variabler Feldlänge das Wiederholen bis zum Ende des Feldes
{
   warteschlange[i+1]=warteschlange[i];
}

Hierbei ist abstraktes, logisches Denken notwendig.
Fragen und Wünsche bitte in die Kommentare! :)

Keine Kommentare:

Kommentar veröffentlichen