Der ambitionierte Heimwerker streicht Wände, montiert Lampen und baut Regale. Und auch für den PC-Nutzer muss es nicht immer Fertig-Software aus dem Internet sein. Programmieren ist einfacher als allgemein angenommen wird, und wenn es um kleine Hilfsprogramme geht, hält sich der Aufwand in Grenzen. Bei privaten Programmierprojekten sollten ohnehin eher das Bastelvergnügen und die Lust am Erforschen im Vordergrund stehen. Der Artikel gibt zuerst einen kurzen Überblick über geeignete Programmiersprachen und Werkzeuge. Am Beispiel eines kleinen Programms erfahren Sie dann, wie sich eine Idee in gebrauchsfertige Software umsetzen lässt.
1. Die „richtige“ Programmiersprache Es gibt kaum ein Thema, über das PC-Enthusiasten im Internet mehr diskutieren als über die Wahl der richtigen Programmiersprache. Nach Meinung vieler Experten sollte der angehende Programmierer mit einer Programmiersprache beginnen, in der die Erkenntnisse moderner Informatik am reinsten zum Ausdruck kommen. An Schulen und Universitäten kommen die Adepten daher in der Regel zuerst mit Java in Kontakt, später vielleicht mit C++ oder C#. Einst verbreitete Programmiersprachen wie Basic oder Pascal, die beide in den 60er Jahren entwickelt wurden, sind dagegen verpönt. Das liegt daran, dass beide Sprachen zuerst für wenig technikaffine Studenten gedacht waren. Die Programme waren kaum strukturiert und deshalb für andere Personen schwer zu verstehen.
Programmieren lernen mit Schrödinger lernt C++ Trotz der negativen Einstellung von Experten gehört Basic in Form von Visual Basic.Net und Pascal als Object Pascal oder Delphi mit zu den am meisten genutzten Programmiersprachen. Damit lassen sich inzwischen Programme erstellen, die mindestens genauso gut lesbar sind, wie die in Java oder C++ verfassten Tools. Für Einsteiger bieten sie einen leicht erlernbaren Sprachumfang, ausgereifte Entwicklungsumgebungen (IDE, Integrated development environment) sowie eine Vielzahl von Programmierbeispielen und eine ausgezeichnete Dokumentation. Aus diesem Grund beschreiben wir in diesem Artikel auch Lazarus , eine Open-Source-Entwicklungsumgebung für Object Pascal. Die Vokabeln einer Sprache zu erlernen, reicht aber nicht aus. Wer systemnahe Tools erstellen will, der muss sich zudem mit den Eigenheiten des Betriebssystems auseinandersetzen. Die Entwicklungsumgebungen versuchen, es dem Programmierer so einfach wie möglich zu machen. Es gibt vordefinierte Funktionen, die die Besonderheiten des Betriebssystems verbergen. Das ist auch notwendig, damit Programme ohne große Änderungen unter Windows, Linux, Mac OS X, Android- oder iOS laufen („cross platform“).

2. Die Lazarus-Entwicklungsumgebung Wenn Sie Lazarus das erste Mal starten, öffnen sich einige Fenster. Das oberste Fenster zeigt die Menüleiste, Symbolleisten und mehrere Registerkarten. Unter den Registerkarten („Komponentenpalette“) sind Elemente zu sehen, die Sie in die Oberfläche Ihres Programms einbauen können, beispielsweise Schaltflächen, Eingabefelder oder Klickboxen. Der „Objektinspektor“ zeigt Eigenschaften an, mit deren Hilfe Sie das Aussehen oder die Funktion der Elemente bestimmen. Rechts davon befindet sich ein Fenster mit dem Titel „Form1“. Dieses „Formular“ bildet später das Fenster Ihres Programms. In der Mitte sehen Sie den „Quelltexteditor“, in den Sie den Programmcode eintippen. Darunter ist des Weiteren das Fenster „Nachrichten“, in dem Lazarus sowohl Informationen als auch Fehlermeldungen ausgibt.
3. Ein erstes, einfaches Programm Klicken Sie auf der Registerkarte „Standard“ das Symbol für die Schaltfläche an („TButton“). Danach klicken Sie auf das Formular. Die Schaltfläche lässt sich an eine beliebige Position ziehen, und über die Anfasspunkte verändern Sie die Größe. Setzen Sie auf die gleiche Weise ein Text-Eingabefeld („TEdit“) in das Formular ein. Sie testen das Programm, indem Sie auf die grüne Schaltfläche in der Symbolleiste klicken oder die F9-Taste verwenden. Die Schaltfläche hat allerdings noch keine Funktion, denn es ist noch kein Programmcode hinterlegt. Schließen Sie das Programm wieder.
Nützliche Webdesign- und HTML-Tools

Klicken Sie die Schaltfläche einmal an und ändern Sie im Objektinspektor hinter „Caption“ die Beschriftung, etwa auf “Hallo Welt!”. Hinter „Name“ tragen Sie dann zum Beispiel “btnHallo” ein. Es ist sinnvoll, die Elemente in einem Formular eindeutig zu benennen, damit Sie die Funktion auch später noch nachvollziehen können. Klicken Sie auf das Text-Eingabefeld und löschen Sie nun den Eintrag hinter „Text“. Das Eingabefeld ist jetzt leer. Hinter „Name“ tragen Sie “edtHallo” ein. Klicken Sie doppelt auf die Schaltfläche „Hallo Welt!“. Lazarus fügt in den Quelltexteditor automatisch folgende Zeilen ein:
procedure TForm1.btnHalloClick(Sender: TObject); begin end;
Programmiertechnisch handelt es sich dabei um eine Ereignisbehandlungsroutine, die nach einem Klick auf die Schaltfläche abgearbeitet wird. „procedure“ kennzeichnet in Pascal ein eigenständiges Unterprogramm. Danach folgt der Programmblock, der stets zwischen „begin“ und „end;“ steht. Achten Sie auf das Semikolon am Ende der Zeilen. Ein Semikolon steht bei Pascal immer am Ende von Codeblöcken oder zusammengehörigen Anweisungen. Tragen Sie zwischen „begin“ und „end;“ folgende Zeile ein:
edtHello.Text:=‘Hello World!‘;
und starten Sie das Programm testweise (F9). Wenn Sie die Schaltfläche jetzt anklicken, setzt das Programm „Hello World!“ in das Text-Eingabefeld ein. An diesem einfachen Beispiel erkennen Sie den objektorientierten Ansatz von Pascal. Das Eingabefeld „edtHello“ ist das Objekt und „Text“ ist eine Eigenschaft, die Sie zur Entwurfszeit auch über den Objektinspektor festlegen können.
Programme entwickeln mit Lazarus

©2014
4. Projekte speichern, öffnen und erstellen Sie sollten ein Programmierprojekt zwischendurch regelmäßig speichern, damit der Code bei einem Programmabsturz nicht verlorengeht. Dazu gehen Sie auf „Projekt, Projekt speichern“. Wählen Sie den gewünschten Ordner aus und ändern Sie den vorgegebenen Dateinamen beispielsweise auf „Hello World.lpi“. Die hier vergebene Bezeichnung verwendet Lazarus auch für die EXE-Datei. Nach einem Klick auf „Speichern“ öffnet sich ein weiterer Dialog mit der Vorgabe „unit1.pas“. In dieser Datei befindet sich der Code, den Sie im Quelltexteditor eingegeben haben. Klicken Sie auf „Projekt, Projekt schließen“. Nun öffnet sich das Fenster „Projektassistent“. Unter „Wieder öffnen“ sehen Sie eine Liste der zuletzt bearbeiteten Projekte, die Sie per Mausklick öffnen. Nach einem Klick auf „Neues Projekt“ sehen Sie ein Fenster mit Projektvorlagen. „Anwendung“ erstellt ein leeres Projekt für eine Standard-Windows-Anwendung mit Formular.
Spielerische C-Programmierung von AVR-Mikrocontrollern erlernen
5. Von Variablen und Bedingungen

Für komplexere Programme benötigen Sie noch zusätzliches Rüstzeug. Dazu gehört die Verwendung von Variablen. Diese können unterschiedliche Werte aufnehmen, die sich zur Laufzeit des Programms ändern lassen. Variablen müssen in Pascal grundsätzlich deklariert werden. Ändern Sie dazu das Programm aus Punkt 3 wie folgt ab:
procedure TForm1.btnHalloClick(Sender: TObject); var I:Integer; begin end;
Damit deklarieren Sie die Variable „I“. „integer“ bedeutet, dass die Variable nur ganze Zahlen aufnimmt. Benötigen Sie eine Variable für Text, verwenden Sie beispielsweise „S: String“. Die Bezeichnung von Variablen können Sie beinahe beliebig festlegen, zum Beispiel „strName“ oder „intZahl“. Verboten sind reservierte Schlüsselwörter wie „name“ oder „then“. Variablen, die in einer Procedure deklariert sind, sind nur hier gültig. Sie können allerdings Variablen oben im Quelltext unter „public“ deklarieren. Deren Inhalte gelten in allen Unterprogrammen. Fügen Sie zwischen „begin … end;“ die Zeilen
I:=5*10; edtHallo.Text:=IntToStr(I);
ein. Die erste Zeile weist der Variablen „I“ das Ergebnis der Berechnung „5*10“ zu. Die zweite Zeile fügt den Wert der Variablen in das Texteingabefeld ein. Da dieses lediglich Variablen vom Typ „String“ aufnehmen kann, muss über die eingebaute Funktion „IntToStr“ der Integer-Wert daraufhin in einen String umgewandelt werden. „StrToInt“ bewirkt das Gegenteil.
12 wertvolle Plug-ins für Eclipse Bedingungen: In Programmen müssen Sie häufig den Inhalt von Variablen prüfen und abhängig vom jeweiligen Wert eine andere Funktion ausführen. Fügen Sie vor „end;“ die Zeilen
If I >=50 Then ShowMessage(‚Wert ist größer oder gleich 50.‘) else ShowMessage(‚Wert ist kleiner 50.‘);
in das Programm ein. Abhängig vom Ergebnis der Berechnung für „I“ gibt das Programm dann über die integrierte Funktion „ShowMessage“ die passende Meldung aus.

Die Pizza aus dem Backofen ähnelt bei Ihnen eher der Holzkohle und der schwarze Tee zieht meist zu lange? Wer beim Programmieren häufig die Zeit vergisst, benötigt dringend einen Tea-Timer. Mit Lazarus ist ein derartiges Programm schnell erstellt. Entpacken Sie das von uns vorbereitete Beispiel-Tool Tea-Timer Demo in ein beliebiges Verzeichnis auf der Festplatte und öffnen Sie die Datei „Tea TimerDemo.lpi“ per Doppelklick in Lazarus. Am unteren Rand des Formulars sehen Sie eine Reihe mit Symbolen. Dabei handelt es sich um vorgefertigte Elemente aus der Komponentenpalette, über die sich beispielsweise ein „Datei öffnen“-Dialog und ein Pop-up-Menü darstellen lassen. Mit „TrayIcon1“ können Sie das Programm zur Laufzeit im Systray ablegen. „Timer1“ ist eine ZeitgeberKomponente, „IniPropStorage1“ dient zum Speichern der Formulardaten und „Pop upNotifier1“ zeigt ein kleines Benachrichtigungsfenster an. Sekunden zählen: Klicken Sie doppelt auf die Schaltfläche „Start“. In „procedure TForm1.btnStartClick“ werden lediglich die Werte aus den Eingabefeldern für die Zeitangabe als Sekunden zusammengezählt und in der Variablen „Counter“ abgelegt. Anschließend wird mit „Timer1.Enabled:=True;“ der Timer gestartet. Dieser löst jede Sekunde ein Ereignis aus, das in „procedure TForm1. Timer1Timer“ behandelt wird. Hier erfolgt dann die Berechnung des Countdowns. Mit „dec(Counter)“ zählt das Programm die Sekunden herunter. Damit die Werte auch im Formular auftauchen, ist ein wenig Mathematik erforderlich. „intHH:=Trunc (Cou nter/60/60);“ rechnet aus dem Sekundenwert der Variablen „Counter“ wieder auf Stunden zurück, „Trunc“ liefert dabei den ganzzahligen Wert des Quotienten, der daraufhin auf dem Formular in „lblMinuten“ dargestellt wird. Die verbleibenden Minuten lassen sich mit „intMM:=Trunc((Counter-intHH*60* 60)/60);“ und die Sekunden mithilfe von „intSS:=Trunc(Counter-intMM*60-intHH* 60*60);“ berechnen.
10 Programmierwerkzeuge für Mehrkern CPUs
Formulardaten speichern: Werte, die der Benutzer im Programm ändern kann, sollen beim nächsten Programmstart wieder zur Verfügung stehen. Dazu dient „IniPropSto rage1“. In den Eigenschaften der Komponente legen Sie den Namen der INI-Datei fest, in der die Konfiguration dann abgelegt werden soll. Welche Werte Sie speichern möchten, bestimmen Sie in der Eigenschaft „SessionProperties“ des Formulars. Klicken Sie auf die kleine Schaltfläche „…“ dahinter und wählen Sie die Eigenschaften der Komponenten aus, die Sie speichern wollen, beispielsweise „edtAudioFile.Filename“. Windows und Linux: Wenn die eingestellte Zeit abgelaufen ist, „Counter“ also den Wert „0“ hat, wird der Timer mit „Timer1.Enabled:=False;“ abgeschaltet. Dabei löst die Timer-Komponente das Ereignis „OnStopTi mer“ aus. Im dazugehörigen Unterprogramm legen Sie fest, was anschließend geschehen soll. Abhängig von der Auswahl des Benutzers erfolgt im Beispielprogramm eine akustische und/oder eine visuelle Benachrichtigung. Zum Abspielen von Audiodateien sind bei Windows und Linux unterschiedliche Funktionen erforderlich. Das wird im Programm durch die Compiler-Direktiven {$IF DEF Win32} sowie {$ifdef Unix} berücksichtigt. Der Code danach wird nur auf der einen oder anderen Plattform ausgeführt. Programm optimieren: Mit Lazarus erstellte Programme verfügen standardmäßig über eine Größe von etwa 20 Megabyte. Der Grund dafür sind Zusatzinformationen in der Datei, die jedoch eigentlich nur während der Entwicklungsphase notwendig sind. Bevor Sie ein Programm an andere weitergeben, ist es deshalb empfehlenswert, diese zu entfernen und damit die EXE-Datei auf etwa 3 Megabyte zu verkleinern. Im Projekt „Tea-Timer-Demo“ haben wir diese Optimierungen bereits vorgenommen und in der Datei „project.conf“ gespeichert. Bei neuen Projekten können Sie die Konfiguration über „Projekt, Projekteinstellungen“ und die Schaltfläche „…“ laden.
Programmieren mit .Net

©2014