Zusammenfassung zum Curriculum Elementare Programmierung ◦ ?

#### Softwareentwicklung

- Eine Vorlage (engl. template) ist ein Skelett, aus dem durch Ersetzen von Platzhaltern ein funktionsfähiges Tabellenblatt wird.

- Deklarativ entwickeln heisst das “Was” einer Anwendung spezifizieren und das “Wie” einem Applikationspaket überlassen. Das Ausfüllen der Zellen eines Tabellenblatts ist zum Beispiel deklarativ. Prozedural entwickeln heisst hingegen das “Wie” einer Problemlösung selbst entwerfen und schrittweise implementieren. Die Programmierbeispiele der Curricula Programmierung, Datenbankentwicklung und Softwareentwicklung sind Beispiele prozeduraler Entwicklung.

- Ein Makro automatisiert eine kleine Routineaufgabe, indem es mehrere Tasten- oder Mausaktionen aufzeichnet und unter einem Namen zusammenfasst. Makros sind deshalb halbautomatisch generierte Programme.

- Ein Modul ist ein entwurfs- oder programmiersprachlicher Baustein, der Aufgaben zusammenfasst, die eng verbunden sind. Die Modularisierung ist eine wichtige Entwurfstätigkeit in der Programmentwicklung. Die meisten der entworfenen Module lassen sich hierarchisch miteinander verknüpfen.

- Die Entwicklung von Software lässt sich in Phasen einteilen. Wichtige Entwicklungsphasen sind: Spezifikation (Anforderungsdefinition), Modularisierung, entwurfssprachliche Algorithmisierung, programmiersprachliche Codierung und Test.

- Mit VBA (Visual Basic für Applikationspakete wie MS Word oder Excel) lassen sich komfortabel Programmodule unter MS Office erstellen. Visual Basic erlaubt auch die Entwicklung selbständiger Anwendungen.

#### Datentypen und Ablaufstrukturen

- Ein Programm ist eine strukturierte Menge von Anweisungen an einen Computer. Ein Unterprogramm ist ein Baustein, der von anderen Teilen des gleichen Programms oder von anderen Programmen aufgerufen werden kann.

- Eine Konstante ist ein Wert, der sich während des Programmablaufs nicht ändert. Eine benannte Konstante trägt einen Namen, den das Programm zur Übersetzungszeit in einen konkreten Wert umwandelt. Eine Variable (Veränderliche) bezeichnet hingegen einen Speicherplatz, dessen Inhalt sich während des Programmablaufs ändern kann.

- In einem VBA-Programm unter MS Excel nimmt ein Tabellenblatt - allenfalls zusammen mit Formularen - die Interaktion mit dem Benutzer wahr.

- Der Projektexplorer von MS Excel hilft bei der Verwaltung der Arbeitsmappe und lässt Sie im Editor Programmodule erstellen und testen.

- Ein Datentyp legt den Wertebereich und die Operationen eines Speicherinhalts fest. Einige Datentypen, zum Beispiel Integer oder Boolean, sind einfach, andere - zum Beispiel Zeichenketten oder Datenfelder - sind zusammengesetzt.

- Eine Variable vereinbaren (deklarieren) heisst ihr einen Namen und einen Datentyp zuordnen. Die Vereinbarung eines Unterprogramms schliesst die Vereinbarung allfälliger Argumente ein. In einem Modul, das mit Option Explicit beginnt, dürfen nur vereinbarte Variablen verwendet werden. Vereinbarungen verbessern die Leserlichkeit, Sicherheit und Effizienz eines Programms.

- Der Lebenszyklus einer Variablen besteht aus der Vereinbarung, der Initialisierung und der Fortschreibung (zum Beispiel der Aggregation und Desaggregation). Die Änderung einer Variablen geschieht meist mit dem Zuweisungsoperator =. Er unterscheidet sich in Visual Basic nicht vom Vergleichsoperator.

- Eine Vereinbarungsanweisung ist ein Befehl, der Speicherplatz für eine Konstante oder eine Variable reserviert. Eine ausführbare Anweisung reserviert hingegen keinen Speicherplatz, sondern ändert die Inhalte von Speicherplätzen oder zeigt sie an. Die wichtigsten ausführbaren Anweisungen sind Zuweisungen, Eingabe-/Ausgabeanweisungen und Steueranweisungen. Steueranweisungen sind entweder Wiederholungs- oder Entscheidungsanweisungen.

#### Objekte

- Anwendungen objektorientiert entwickeln heisst Objektklassen verwenden, die Werkzeuganbieter wie Microsoft zur Verfügung stellen. Ein Objekt ist ein Element einer Objektklasse, das eindeutig gekennzeichnet ist und sich durch seine Eigenschaften und Methoden beschreiben und manipulieren lässt.

- Eine Eigenschaft ist ein Objektmerkmal, dessen Wert abgefragt und meist auch verändert werden kann. Eine Methode ist eine Prozedur (eine Subroutine oder eine Funktion), die ein Objekt ergibt oder manipuliert.

- Ein Objektmodell beschreibt die Objektklassen, Methoden und Eigenschaften eines Anwendungspakets oder eines paketübergreifenden Anwendungsbereichs. Es ordnet Objektklassen meist hierarchisch an. Der Zugriff auf einzelne Objekte und ihre Eigenschaften und Methoden erfolgt über die Punktnotation.

#### Unterprogramme

- Eine Prozedur (Unterprogramm) kann eine Subroutine oder eine Funktion sein. Im Gegensatz zur Subroutine hinterlässt eine Funktion einen Wert und kann deshalb Teil einer Formel sein.

- Ein aufrufendes Programm kann einer Prozedur ein Argument auf zwei Arten übergeben: Bei der Übergabe eines Arguments als Adresse (call by reference) manipuliert die aufgerufende Prozedur direkt einen Speicherplatz des aufrufenden Programms. Bei der Übergabe des Arguments als Kopie (call by value) manipuliert hingegen die aufgerufende Prozedur nur eine Kopie eines Speicherplatzes des aufrufenden Programms.

  Call by Reference ist effizienter als Call by Value und deshalb die Voreinstellung in VBA. Wenn allerdings vermieden werden soll, dass eine Prozedur den übergebenen Argumentwert auch im aufrufenden Programm ändert, dann muss dem Argument das Schlüsselwort byVal vorangehen.

- Der VBA-Entwickler kann benutzerdefinierte Funktionen für den Gebrauch in Tabellenformeln definieren oder umgekehrt Tabellenfunktionen in einem VBA-Programm verwenden. Um eine Tabellenformel unter VBA zu verwenden, stellt der VBA-Programmierer das Schlüsselwort Application voran und definiert die Argumente innerhalb des Objektmodells von MS Excel.

#### Benutzerschnittstelle

- Eine Benutzerschnittstelle, die sich aus Text- und Grafikobjekten zusammensetzt, heisst Graphical User Interface (GUI).

- Die Entwicklung eines GUI-Objekts folgt drei Schritten: (1) Der Programmierer entwirft den Umriss und die übrigen Eigenschaften des Objekts interaktiv. (2) Dann entscheidet er, auf welche Ereignisse des Objekts er mit Ereignisprozeduren antworten möchte. (3) Schliesslich programmiert er diese Reaktionen auf die Ereignisse prozedural.

- Die wichtigste Objektklasse einer Arbeitsmappe ist das Tabellenblatt. Es besteht aus den Objektklassen Zellbereich, Diagramm, Menü- und Symbolleisten sowie Steuerelementen. Ein oft verwendetes GUI-Objekt ist auch das Formular. Es besteht aus einem Formularrahmen und darauf angeordneten Steuerelementen.

- Die wichtigsten vordefinierten Formulare sind Eingabe- und Ausgabefelder. Sie werden in Visual Basic mit den Anweisungen InputBox und MsgBox erstellt.

- Vordefinierte Prozeduren können neben Positionsargumenten auch benannte Argumente enthalten. Ein benanntes Argument ist ein Argument, dessen Aufgabe durch einen Namen statt der Position in der Argumentliste definiert ist. Ein voreingestelltes Argument übernimmt eine systemdefinierte Voreinstellung, falls der Programmierer das Argument weglässt.

- CInt (convert to integer) konvertiert einen numerischen oder alphanumerischen Ausdruck in einen Wert des Datentyps Integer.

- Falls der VBA-Programmierer in einer anderen Arbeitsmappe oder Programmbibliothek ein geeignetes Objekt oder Unterprogramm findet, kann er sich durch einen Verweis eine Neuprogrammierung ersparen.

#### Codebeispiel Gewinnverteilung

- Dim vereinbart eine Variable, die nur für die laufende Prozedur gilt. Private deklariert Variablen, die für alle Prozeduren eines Moduls gelten, und Public macht eine Vereinbarung für alle Module eines Projekts sichtbar.

- Eine Variable, die nur dort sichtbar ist, wo sie vereinbart wurde, heisst lokal. Eine Variable, die auch in anderen Unterprogrammen bzw. Modulen gelten, heissen global.

- Der Objektkatalog zeigt die Objektklassen, Eigenschaften, Methoden, Ereignisse, Variablen und Konstanten eines benutzerdefinierten Projekts und vordefinierter Objektbibliotheken.

- Die Funktion isNumeric ergibt True, falls das Argument eine Zahl ist.

- Die Methode <Formular>.Show lädt und zeigt ein Formular. Der Befehl Unload <Formular> enfernt es wieder aus dem Internspeicher. <Formular>.Hide entfernt das Formular vorübergehend vom Bildschirm, um es später wieder anzuzeigen.

- Die Eigenschaft <Tabellenblatt>.Range(<Zellbereich>).Value enthält den Inhalt eines Zellbereichs. Die Methode <Tabellenblatt>.Range(<Zellbereich>).ClearContents löscht einen Zellbereich.

#### Datenfelder

- Ein Datenfeld ist eine benannte Folge von nummerierten Zellen des gleichen Datentyps. Eine bestimmte Zelle wird mit dem Namen des Datenfelds und der Zellennummer (Index) adressiert.

- Ein Datenfeld lässt sich wie folgt vereinbaren, lesen und ändern:

  - Dim <Datenfeldname> (<Untergrenze> To <Obergrenze>) As <Typ>

  - <Kopie des Zellinhalts> = Datenfeldname(<Zellnummer>)

  - Datenfeldname(<Zellnummer>) = <neuer Zellinhalt>

- Eine Zählschleife (For ... Next) eignet sich gut für das Durchlaufen eines Datenfelds. Verglichen mit der While-Schleife erspart sie dem Programmierer die explizite Initialisierung, Prüfung und Erhöhung der Indexvariable. Die Zählschleife kann mit Exit For vorzeitig verlassen werden.

- Direkt suchen heisst mit der Zellnummer auf den Inhalt einer Datenfeldzelle zugreifen. Sequentiell suchen heisst jeden Zellinhalt mit dem Suchwert vergleichen, bis mit der laufenden Zellnummer direkt auf die gesuchte Zelle zugegriffen werden kann. Die Binärsuche halbiert schliesslich ein sortiertes Datenfeld solange, bis direkt auf den gesuchten Zellinhalt zugegriffen werden kann.

  Die direkte Suche ist sehr schnell, setzt aber die richtige Zellnummer voraus. Die Binärsuche ist ebenfalls relativ schnell, erfordert aber ein sortiertes Datenfeld. Die sequentielle Suche stellt keine Voraussetzungen, ist aber die langsamste Suchstrategie. Die Binärsuche lässt sich rekursiv oder iterativ implementieren. Als rekursives Programm ruft sich die Funktion solange selbst auf, bis die Endbedingung erfüllt wird.

- Algorithmisch schwierige Programme lassen sich rekursiv oft einfacher, aber etwas weniger effizient lösen.