Algorithmische Mathematik I Wintersemester 2016/17 Leitfaden zum Erstellen von C-Programmen 1 Allgemeines Diese Einführung soll dem Zweck dienen, dass jeder Teilnehmer der Vorlesung die Möglichkeit hat, auf seinem eigenen Computer C-Programme (auch C-codes genannt) zu schreiben, zu übersetzen (kompilieren) und auszuführen. Falls Sie schon eine Programmierumgebung eingerichtet haben sollten (z. B. unter Windows), bedenken Sie bitte, dass C nicht Plattform-unabhängig ist und verschiedene Compiler unterschiedliche Verhaltensweisen besitzen. Deshalb empfehlen wir Ihnen, den unten beschriebenen Compiler gcc unter Cygwin oder unter Linux zu installieren. Dieser Leitfaden beschreibt hauptsächlich: die Installation von Cygwin und Notepad++ unter Windows das Schreiben und Kompilieren eines simplen Hello World Programms Hilfreiche Literatur André Willms: C-Programmierung lernen, Addison - Wesley. Ralf Kirsch, Uwe Schmitt: Programmieren in C - Eine mathematikorientierte Einführung, Springer (in der Uni-Bibliothek online verfügbar). Hilfreiche Internetseiten http://www-ian.math.uni-magdeburg.de/home/schieweck/algo_math/ Website von Prof. Schieweck (Infos, Downloads, Übungsaufgaben) http://de.wikibooks.org/wiki/c Wiki der C Programmierung. 1
2 Installation von Cygwin und Notepad++ 2.1 Cygwin Cygwin ist eine Konsole, ähnlich des Terminals in Linux, nur in Windows. Es können Dateien und Ordner angelegt, Pakete hinzugeladen, Code kompiliert und noch vieles mehr damit gemacht werden. Es ist erhältlich bei einer 32-bit Version von Windows mit einem Klick auf setup-x86.exe auf der web-seite http://cygwin.com/install.html. Nach dem Download öffnet sich der Installer: Dort wählt man nach dem Klick auf Weiter aus, dass die Pakete aus dem Internet geladen werden sollen. Anschließend soll das Installationsverzeichnis (Keine Leerzeichen!) und das Downloadverzeichnis angegeben werden und nach der Wahl des Mirrors (Seite für den Download) erscheint folgende Fehlernachricht, die ignoriert werden kann. Nun blicken Sie auf die Liste an möglichen Zusatzpaketen. Dort wählen Sie folgende aus: Devel gcc-core und gcc-g++ Der darauffolgende Dialog nennt die Abhängigkeiten, welche für diese Installation nötig sind. Reagieren Sie darauf mit einem Klick auf Weiter. Der Download sollte jetzt gestartet werden und das Fenster folgende Form haben: 2
Abschließend wird nach dem Erstellen einer Verknüpfung gefragt, dies ist Ihnen überlassen. Die Installation ist damit abgeschlossen. 2.2 Notepad++ Notepad++ ist keine Entwicklungsumgebung sondern ein Editor mit Syntaxeinfärbung. Das bedeutet bestimmte Wörter werden in anderer Farbe dargestellt aber Syntaxfehler weder erkannt noch ausgegeben. Das Programm ist erhältlich unter der Download-Adresse http://notepad-plus-plus.org/download/v7.html. Die Installation ist weitgehend Standard und es sind nur zwei Sachen bei der Auswahl der Komponenten zu beachten. Nachfolgend werden diese Komponenten für die Vorgängerversion 6.1.8 gezeigt: Sie sollten diese Einstellungen jedoch am besten selber treffen. Damit ist diese Installation ebenfalls abgeschlossen und die Umgebung für Windows ist eingerichtet. Tipp: Sie können die Ordner für die Programme auch im Verzeichnis von Cygwin erstellen ( /home/<benutzername>/<ordner> ), wobei <...> andeutet, dass Sie hier etwas einfügen sollen, was nur für Sie zutrifft. In dieses Verzeichnis können Sie dann beispielsweise Ihre Codes mit Notepad++ speichern und anschließend mit der Cygwin Konsole kompilieren. Tipp: Eine Anleitung für Cygwin finden Sie im Anhang des Buches: Kirsch, Schmitt: Programmieren in C. Für Notepad++ liegt eine Anleitung im Installationsverzeichnis: <Festplatte>:\<Pfad>\Notepad++\user.manual\. 3
3 C Programme Das folgende Kapitel widmet sich der Erstellung und Ausführung eines ersten simplen Testprogramms. Es ist anhand des Vorgehens in Linux beschrieben, jedoch sind die Schritte für Cygwin und Notepad++ analog. Erstellen Sie am besten auf dem Desktop einen Ordner, in dem Sie Ihre Programme speichern. Im Abschnitt zu Cygwin wurde dies bereits angeraten. Das Erstellen von Ordnern und Dateien funktioniert in Linux wie in Windows: Rechtsklick auf den Desktop Neuen Ordner anlegen. Das gleiche gilt für Dateien. Hier wird nun der Ordner Algo_Math angelegt und darin die Datei hello_world.c. Da die Dateiendung.c ist, wird die Datei als Quellcode erkannt und bekommt ein passendes Symbol. Öffnen Sie nun die Datei und schreiben Sie folgenden Programm-Code hinein: #include <stdio.h> int main(void){ } printf( Hello World \n ); return 0; Nach dem Speichern muss der Code nun kompiliert werden. Dazu öffnen Sie ein Terminal und teilen dem System mit, in welchem Ordner die Datei liegt. Hierzu geben Sie im Terminal folgenden Befehl ein: cd /Desktop/Algo_Math Bei Cygwin muss der Ordner Algo_Math, in welchem sich das Programm befindet, im Verzeichnis liegen. <Cygwin>/home/<Benutzername>/ Tipp: Drücken Sie bei der Eingabe im Terminal-Fenster die Tabulator-Taste <TAB>, um einen längeren Nameen automatisch vervollständigen zu lassen, obwohl Sie nur seine ersten Zeichen eingetippt haben. Zum Kompilieren, ruft man den gcc Compiler auf, indem man im Terminal den Befehl eingibt: gcc hello_world.c Der Compliler erzeugt dadurch aus dem Quellprogramm hello_world.c die ausführbare Datei a.out, sofern die Kompilierung erfolgreich war. Ansonsten gibt er Fehlermeldungen aus. In Cygwin hat die erzeugte ausführbare Datei den Namen a.exe, sie erfüllt jedoch den gleichen Zweck. Tipp: Um einen anderen Namen für die ausführbare Datei zu erhalten (z.b. testprogramm ), kann man folgenden Compiler-Befehl eingeben: gcc hello_world.c -o testprogramm Um das Programm nun auszuführen, geben Sie./a.out ein (bzw../testprogramm ) und die gewünschte Ausgabe Hallo Welt erscheint im Terminal. Abschließend ein paar Sachen zum Kompilieren: Falls sich, z. B. im Dateinamen, ein Leerzeichen befindet, wird das im Terminal mit \ kenntlich gemacht. Man sollte in Linux Dateinamen mit Leerzeichen vermeiden!!! Etwaige Fehler werden bei der Kompilierung im Terminal angezeigt, die meisten davon sind Syntaxfehler. Es wird nicht nur die Zeilennummer sondern auch eine annähernde Beschreibung des Fehlers ausgegeben. Falls mehrere zusammenhängende Dateien kompiliert werden sollen, sind make-files sehr hilfreich. Eine Anleitung zum Schreiben solcher ist per Google leicht gefunden. 4
Kompilieren ist plattformabhängig. Unter Linux kompilierte Dateien können in Linux ausgeführt werden, aber nicht (ohne großen Aufwand) in Windows und umgekehrt. Falls Ihnen ein Linux-Befehl nicht mehr einfällt, geben sie im Terminal help ein und eine Liste an möglichen Befehlen erscheint. Außerdem können Sie sich mit dem Terminal-Befehl history eine Liste der letzten verwendeten Befehle ausgeben lassen. Ist die Ausgabe des Programms a.out zu umfangreich oder das Terminal zu klein, um den Text darzustellen, so kann man mit dem Kommando./a.out > out.txt die Ausgaben des ausführbaren Programms a.out in die Datei out.txt umleiten und sich diese Datei danach innerhalb des Dateimanagers anzeigen lassen. 5
4 Einige wichtige Terminal-Kommandos für Linux Allgemein <BEFEHL> help gibt einen kurzen Hilfetext zum <BEFEHL> aus man <BEFEHL> zeigt die Anleitung zum <BEFEHL> an (mit q schließen) 2 Tasten: <strg> und <c> bricht aktuellen Vorgang ab Navigation im Dateisystem pwd cd / cd.. cd <VERZ> cd cd gibt das aktuelle Verzeichnis aus wechselt in das Hauptverzeichis wechselt in das übergeordnete Verzeichnis wechselt in das Unterverzeichnis <VERZ> wechselt in das vorherige Verzeichnis wechselt in das Home-Verzeichnis des Benutzers Verzeichnisse ls ls l mkdir <VERZ> kurze Liste des Verzeichnisinhaltes ausführliche Liste des Verzeichnisinhaltes neues Verzeichnis <VERZ> erstellen C-Dateien kompilieren/programme starten gcc <DAT1>.c o <DAT2> gcc <DATEI>.c./<PROG> kompiliert die C-Datei <DAT1>.c in die ausführbare Datei <DAT2> kompiliert die C-Datei <DATEI>.c in die ausführbare Datei a.out, sinnvoll: umbenennen von a.out mit Hilfe von: mv a.out <DATEI> startet das Programm <PROG>, welches sich im aktuellen Verzeichnis befindet SFTP-Verbindung sftp <Benutzername>@<Server-Adresse> Erzeugt nach Eingabe des Benutzerpassworts eine verschlüsselte SFTP-Verbindung quit get <DATEI> put <DATEI> get * put * beendet die aktuelle SFTP-Verbindung kopiert Datei <DATEI> aus dem aktuellem remote-verzeichnis in das aktuelle home- Verzeichnis kopiert Datei <DATEI> aus dem aktuellem home-verzeichnis in das aktuelle remote- Verzeichnis kopiert alle Dateien aus dem aktuellem remote-verzeichnis in das aktuelle home-verzeichnis kopiert alle Dateien aus dem aktuellem home-verzeichnis in das aktuelle remote-verzeichnis Navigation auf dem Server Navigation auf dem Heimcomputer es können die gleichen Befehle wie oben benutzt werden die Befehle von oben mit vorangestelltem l (von local), z. Bsp. lpwd, lcd, lls,... 6