Josef Wassner Über Programmierung 08.04.2017 Über Programmierung In der Anfangszeit der der PC-Programmierung begann man natürlich wie auch heute mit einer Idee für das Programm. Oft gliederte man das Programm nicht oder nur wenig, das führte zu langem, unverständlichem Code (Programmen). Diese Art von Code wird mit Spagetticode bezeichnet und steht für minderwertige Programmierung. Natürlich gab es auch zu dieser Zeit geniale Entwickler welche ihre Programme mit den wenigen Mitteln die vorhanden waren perfekt programmierten. Eine Verbesserung in vieler Hinsicht brachte die Unterteilung eines Programmes in verschiedene Funktionen und Prozeduren (Modularisierung). Eine Funktion liefert einen Wert (Ergebnis) zurück während eine Prozedur z.B. Werte in globalen Variablen einliest oder verändert und andres. Guter Programmierstiel ist es, eine Funktion oder Prozedur nur eine abgeschlossene, klar umrissene Aufgabe erfüllen zu lassen. Die modernere Programmierung geht einen Schritt weiter und fasst sowohl Daten wie auch Prozeduren und Funktionen zu Objekten zusammen. Wenn wir einen Windows Desktop anschauen und mit der Rechten-Maustaste z.B. auf den Papierkorb klicken so erscheint ein Menü welches uns mehrere Möglichkeiten zur Auswahl bietet. Diese Auswahl und deren Funktionen, welche hinter dem Menü wirken, sowie alle weiteren Funktionen des Papierkorbes bilden ein Programm-Objekt welche (meist ausschließlich) für das Papierkorb-Objekt zuständig ist. Oft werden Objekte der realen Welt auf Programm-Objekte abgebildet d.h. sie werden der realen Welt nachempfunden. Zum Beispiel kann ein Materiallager ein Objekt sein das alles im Lager verwaltet. Dieses Objekt hat viele andere Objekte zu verwalten z.B. Schrauben, Muttern, Ersatzteile und so weiter. Dieses Objekt hat gespeichert was wo liegt, wann es eine Bestellung machen muss weil das Material sonst leer ist, es merkt sich wenn Material entnommen wird usw. Ein Wichtiger Unterschied besteht zwischen Objekten und Klassen. Die Klassen sind die Vorlagen von denen dann die Objekte erzeugt werden. Wenn man z.B. in Windows verschiedene Benutzer hat welche gleichzeitig angemeldet sind so hat jeder seinen eigenen Papierkorb (Papierkorbobjekt). Alle Papierkörbe aber werden durch die selbe Klasse (Papierkorbklasse) erzeugt. Also programmiert der Entwickler die Klassen welche dann benutzt werden um Objekte zu instanziieren. Einige wichtige Merkmale der Objektorientierten Programmierung sind u.a.: Kapselung der Daten (Daten können nur durch das Objekt selbst verändert werden) Polymorphie (wichtig wird aber hier nicht betrachtet) Vererbung heißt es kann Objekte geben welche Eigenschaften von Oberklassen besitzen z.B. die Klasse der Autos hat im Allgemeinen die Eigenschaft dass es sich auf festem Boden bewegen kann. Ein Amphibienfahrzeug kann das auch und zusätzlich kann es im Wasser fahren. Also könnte ein Programmierobjekt Amphibie eine Subklasse von Auto sein d.h. sie könnte die Eigenschaften, Funktionen, usw. der Autoklasse erben. Diese neue Klasse müsste man dann nur um den Teil des Wasserfahrzeugs erweitern. Dies kann eine Menge Zeit beim Programmieren sparen. Wir beschreiben hier Methoden zum Entwurf von Programmen die nicht objektorientiert zu sein brauchen es aber sein können. Seite: 1 Josef Wassner Über Programmierung 08.04.2017 Darstellung von Programmstrukturen Struktogramme (eine genormte Darstellung nach DIN/EN .... 66 261) Struktogramme sind grafische Darstellungen von Programmstrukturen die uns einen schnellen Überblick über das Verhalten eines Programms ermöglichen sollen. Es gibt wenige Grundstrukturen, welche sich zu komplexeren Strukturen zusammenfügen lassen wenn man sie ineinander verschachtelt. Sie dienen dazu, Abläufe zu veranschaulichen, damit diese in den verschiedensten Programmiersprachen umgesetzt werden können. Deshalb sollten Struktogramme keine Begriffe aus bestimmten Programmiersprachen verwenden, sondern alles mit allgemeinen prägnanten Begriffen erläutern. Folgestruktur von einfachen Anweisungen Die Folgestruktur besteht aus aufeinanderfolgenden Einzelanweisungen, wobei die Einzelanweisungen der Reihe nach ausgeführt werden. Jede Anweisung wird genau einmal ausgeführt. Beispiel in Java: Double x1, x2, a11, a12, a21, a22, c1, c2, det, det1, det2; a11 = Double.valueOf(a11txt.getText()); a12 = Double.valueOf(a12txt.getText()); …. det = a11 * a22 - a12 * a21; det1 = c1 * a22 - a12 * c2; det2 = a11 * c2 - c1 * a21; Auswahlstruktur Bei einer Auswahlstruktur wird in Abhängigkeit von einer Bedingung eine bzw. ein Anweisungsblock (Folgestruktur) durchlaufen. Falls die Auswahl nur einseitig erfolgen soll, wird das andere Anweisungsfeld leer gelassen. In dem Anweisungsfeld kann jede andere Struktur vorkommen, d.h. eine Mehrfachauswahl. Doppelbedingungen können durch zwei ineinander verschachtelte Auswahlstrukturen dargestellt werden. Java Beispiel: (am Anfang der Datei steht:) import javax.swing.JOptionPane; if (det==0) { JOptionPane.showMessageDialog(this, "Hallo Welt", "Nachricht", JOptionPane.INFORMATION_MESSAGE); } else { x1=det1/det; x2=det2/det; x1txt.setText(x1.toString()); x2txt.setText(x2.toString()); } Seite: 2 Josef Wassner Über Programmierung 08.04.2017 Fallabfrage Die Fallabfrage auch Fallunterscheidung genannt stellt eine vereinfachte Form der mehrseitigen Auswahl dar. Java Beispiel: int month = 8; String monthString; switch (month) { case 1: case 2: case 3: monthString = "Januar"; break; monthString = "Februar"; break; monthString = "Maerz"; break; ... case 12: monthString = "Dezember"; break; default: monthString = "ist kein Monat"; break; } Wiederholungsstrukturen Wiederholungsstruktur mit vorausgehender Bedingungsprüfung (abweisende Schleife). Vor dem erstmaligen und allen weiteren Durchläufen des Schleifenkörpers erfolgt die Bedingungsprüfung. Ist die Bedingung erfüllt, werden die Anweisungen des Schleifenkörpers ausgeführt. Java Beispiel: int count = 1; while (count < 11) { System.out.println("Count is: " + count); count++; } Wiederholungsstruktur mit nachfolgender Bedingungsprüfung (nichtabweisende Schleife). Die Anweisungen im Schleifenkörper werden so lange wiederholt, bis die Bedingung nicht mehr erfüllt ist. Im Gegensatz zur abweisenden Schleife wird der Schleifenkörper mindestens einmal durchlaufen. Seite: 3 Josef Wassner Über Programmierung 08.04.2017 Java Beispiel: int count = 1; do { System.out.println("Count is: " + count); count++; } while (count < 11); Geschlossene, zählergesteuerte Schleife. Bei dieser Schleifenstruktur ist die Anzahl der Schleifendurchläufe festgelegt, und wird durch einen Zähler kontrolliert. Die Anzahl der Durchläufe kann durch den Benutzer festgelegt, oder durch das Programm gesteuert werden. Java Beispiel: for(int i=1; i<11; i++) { System.out.println("Count is: " + i); } Unterprogrammstrukturen Unterprogramm (Funktion oder Prozedur) wird dann eingesetzt, wenn sich die darin enthaltenden Anweisungen während des Programmablaufes häufig wiederholen. Das Unterprogramm kann von mehreren Stellen aufgerufen werden, ist aber nur einmal vorhanden. Das Hauptprogramm wird dadurch übersichtlicher, was die Pflege und Wartung erleichtert. Die Unterprogrammtechnik unterstützt die Prinzipien der Strukturierung, Modularisierung und Mehrfachverwendung. In der Objektorientierten Programmierung sind Unterprogramme sehr wichtig. In Objekten werden sie statt Unterprogramme Methoden genannt. Die Datenkapselung innerhalb von Objekten wird ebenfalls mit Unterprogrammen gemacht diese nennt man dann aber Eigenschaften. Seite: 4