Einführung in das Programmieren für Technische Mathematiker Samuel Ferraz-Leite Dirk Praetorius Christoph Überhuber Petra Goldenits Michael Karkulik Isabella Roth Florian Rudolf Vorlesung (Fr. 10.15-11.45, Freihaus HS 5) + Übung Wichtige Namen Samuel Ferraz-Leite samuel.ferraz-leite@tuwien.ac.at Büro: 4. Stock (grün) Dirk Praetorius dirk.praetorius@tuwien.ac.at Büro: 4. Stock (grün) Christoph Überhuber c.ueberhuber@tuwien.ac.at Büro: 4. Stock (grün) Petra Goldenits pg@aurora.anum.tuwien.ac.at Michael Karkulik mk@aurora.anum.tuwien.ac.at Isabella Roth ir@aurora.anum.tuwien.ac.at Florian Rudolf fr@aurora.anum.tuwien.ac.at Wichtige URLs Institut für Analysis und Scientific Computing http://www.asc.tuwien.ac.at/eprog/ http://tuwis.tuwien.ac.at/ 1 Lehrziel Grundbegriffe der math. Programmierung Was ist eine Programmiersprache? Compiler vs. Interpreter Hardware & Zahldarstellung Einführung in die Programmiersprachen C (Compiler basiert, hardwarenah) Matlab (Interpreter basiert, mathematiknah) Programmieren : Umsetzen von math. Problemstellungen in konkrete Programme Reverse-Engineering : Was macht ein vorliegendes Programm und wie? Didaktisches Konzept? Sie sind alle freiwillig hier! Universität Schule Organisatorisches Fristen Vorlesungstermine Übungsgruppen Leistungsnachweis Skripten Weitere Literaturhinweise Wir vermitteln Ihnen nur den theoretischen Stoff Wenn Sie keine Fragen stellen mehr Stoff Denn: Stoff offensichtlich klar oder zu einfach... Praktische Umsetzung muss man allein lernen Übungen machen, sonst chancenlos im Test! 2 3
Wichtige Fristen Anmeldung auf TUWIS Fr. 07.03. (18:00 Uhr) - Mo. 10.03.2008 für eine konkrete Übungsgruppe anmelden Abmeldung auf TUWIS (bis Do. 08.05.2008) Vorlesungstermine (Fr.10:15-11:45) 07.03.08, Vorbesprechung (Ferraz-Leite) 14.03.08, C 1 (Ferraz-Leite) 04.04.08, C 2 (Praetorius) 11.04.08, C 3 (Praetorius) 18.04.08, C 4 (Ferraz-Leite) 25.04.08, C 5 (Praetorius) 02.05.08, C 4 (Praetorius) 09.05.08, Schriftlicher Test zu C 16.05.08, Matlab 1 (Überhuber) 30.05.08, Matlab 2 (Überhuber) 06.06.08, Matlab 3 (Überhuber) 13.06.08, Hardware (Überhuber) 20.06.08, Schriftlicher Test zu Matlab Übungen Übung wird von Tutoren abgehalten Computerraum (4. Stock, grün) 60 Min pro Woche Anwesentheitspflicht (maximal 1x fehlen) Einteilung in feste Gruppen auf TUWIS Jeder Teilnehmer muss sich anmelden! Beginn der Übung: Mi 12.03.2008 Übungsgruppen Gruppe A: Mi. 10:15-11:15 (Rudolf) Gruppe B: Mi. 11:30-12:30 (Rudolf) Gruppe C: Mi. 12:45-13:45 (Karkulik) Gruppe D: Mi. 14:00-15:00 (Karkulik) Gruppe E: Mi. 15:15-16:15 (Roth) Gruppe F: Mi. 16:30-17:30 (Roth) Gruppe G: Do. 10:15-11:15 (Goldenits) Gruppe H: Do. 11:30-12:30 (Goldenits) Gruppe I: Do. 12:45-13:45 (Roth) Gruppe J: Do. 14:00-15:00 (Roth) 4 5 Übungsaufgaben Aufgaben jeweils mittwochs auf Homepage d.h. eine Woche vor Abgabe in den Übungen obligatorische & freiwillige Aufgaben auf Aufgabenzettel vermerkt obligatorische Aufgaben zur Übung lösen Programme müssen auf Account liegen Hilfe bei Übungsaufgaben Sprechstd. der Tutoren (keine Anwesenheitspflicht) Mo. 12:00-13:30 Eintrag ins TUWIS-Forum Vortragende + Tutoren nehmen am Forum teil Mail an Tutoren ohne Garantie auf sofortige Antwort Feedback zu Übungsaufgaben Falls Aufgaben zu leicht oder zu schwer Mail an Tutoren / Ferraz-Leite / Praetorius Eintrag ins TUWIS-Forum TUWIS (Ver-) Stimmungszettel (auch für VO) Tests Beide Tests basieren auf Übungsaufgaben Übungen/Tests von Ferraz-Leite & Praetorius Tests sind schriftlich Programmieren auf Zettel, nicht am Rechner! Deshalb Übungen erst theoretisch lösen, danach am Rechner implementieren & testen Programmieren muss man selbst lernen Fleissaufgabe! Vorlesungen können nur Syntax vermitteln Wiederholungstest voraussichtlich Mo. 01.10.2008 Kriterien für Zulassung zum Wiederholungstest Anwesenheit bei den Übungen maximal ein negativer Test persönliche Anmeldung über TUWIS 6 7
Literatur zu C Vorlesungsfolien werden ausgegeben zum Selbstkostenpreis (3 Euro) Positiver Leistungsnachweis Anmeldung bei TUWIS und Anwesenheit bei Übungen und beide Tests positiv Note ist jeweils 1/3 aus Tests + Übungsnote Negativer Leistungsnachweis nicht abgemeldet, sondern verschwunden oder mangelnde Anwesenheit bei Übungen oder beide Tests negativ oder ein Test negativ, aber Nicht-Teilnahme am Wiederholungstest K. Schmaranz: Softwareentwicklung in C kostenloses pdf-file auf EPROG-Homepage Ausdruck möglich (zum Selbstkostenpreis) ggf. bitte verbindliches Mail an mich B. Kernighan, D. Ritchie: Programmieren in C der Klassiker von den Erfindern von C in UB verfügbar K. Schmaranz: Softwareentwicklung in C++ zur privaten Weiterbildung kostenloses pdf-file auf EPROG-Homepage R. Kirsch, U. Schmitt: Programmieren in C Eine mathematikorientierte Einführung Springer 2007 Links zu C The C Library Reference Guide http://www.acm.uiuc.edu/webmonkeys/book /c guide Cygwin (UNIX Emulator für Windows) http://www.cygwin.com beinhaltet kostenlosen C-Compiler gcc 8 9 Literatur zu Matlab Skriptum = Buch von Katzenbeisser, Überhuber 12 Euro, wird durch Tutoren verkauft verbindliche Anmeldung (Details folgen in VO!) Behrens, Iske: Matlab - eine freundliche Einführung pdf-file auf EPROG-Homepage Links zu Matlab Matlab-Dokumentation (Funktionsverzeichnis) http://www.mathworks.com/access/helpdesk/help /techdoc/matlab.html Matlab-Software Studentenversion (18 Euro) im Lehrmittelzentrum Octave (Matlab-ähnliche Programmiersprache) kostenlos & frei verfgbar http://www.tu-harburg.de/~matjz/work/octave/ http://www.octave.org/ Literatur zu UNIX Harlander: Einfhrung in UNIX pdf-file auf EPROG-Homepage Downloads zu UNIX Cygwin (UNIX Emulator für Windows) http://www.cygwin.com beinhaltet kostenlosen C-Compiler ssh-shell für Windows http://gd.tuwien.ac.at/utils/shells/ssh /SSHSecureShellClient-3.2.9.exe Literatur zu Hardware Skriptum = Buch von Gansterer, Überhuber 10 Euro, wird durch Tutoren verkauft 10 11
Betriebssystem? Der Rahmen, in dem Programme auf Rechner ausgeführt werden können z.b. Windows XP, UNIX Schnellkurs in UNIX Abstraktion der Hardware auf geeignete Software-Schnittstellen Software läuft auf verschiedenen Rechnern Verwaltung der angeschlossenen Hardware Betriebssystem Login am UNIX-System Wichtigste Programme für EPROG Wichtigste UNIX-Dateibefehle UNIX 1969-74 Entwicklung der ersten UNIX-Version bei Bell Laboratories durch Ritchie und Thompson UNIX wird in eigens entwickelter Sprache C geschrieben UNIX-Code ist frei (kostenloses Betriebssystem!) PC-Variante nennt sich Linux Heute Standard auf Großrechnern Mehrbenutzerbetrieb Multitasking Mehrprozessoren-Unterstützung 12 13 UNIX ist textbasiert Shell = Befehlsfenster mit Textprompt z.b. bash, sh, ksh manchmal auch Begriff X-Term (= Shell) Anders als Windows werden die Programme in UNIX i.d.r. durch Eingabe eines Befehls in einer Shell gestartet Man muss die wichtigsten Befehle kennen! Maus-Bedienung ist i.d.r. nicht möglich! Befehl xterm & öffnet weiteres Shell-Fenster Werbung für CYGWIN cygwin = freier UNIX-Emulator für Windows Download unter http://www.cygwin.com Unter cygwin stehen zur Verfügung ssh = Remote Login auf UNIX-System scp = Kopieren von Software von/auf anderes UNIX-System gcc = C-Compiler für Übungen emacs = guter Texteditor Wichtiges zum Start: cygwin startet im Textmodus Eingabe von startx eröffnet Möglichkeit, weitere Fenster zu öffnen (sog. graphisches Arbeiten) Login auf einem UNIX-System Immer nötig: Eingabe von Username & Passwort Accounts für cad.zserv.tuwien.ac.at in erster Übungsstunde 3 Varianten für Login lokales Login am Terminal triviales Login remote Login über Internet von UNIX aus wichtigste Variante für Übungen remote Login über Internet von Windows aus Bitte beachten: UNIX ist case sensitive, d.h. Groß und Kleinschreibung werden unterschieden Keine deutschen Sonderzeichen verwenden, da Systeme i.d.r. englische Zeichencodierung Nach dem ersten Login auf der cad Passwort mittels passwd ändern Passwort z.b. Geburtsname und -jahr der Mutter 14 15
Remote Login von UNIX aus Ausgangspunkt: bereits Shell geöffnet auf einem UNIX-System Eingabe der folgenden Befehle in der Shell ssh -X username@rechnername oder ssh -X rechnername -l username Option -X erlaubt graphisches Arbeiten, d.h. kann remote Programme starten, die im lokalen Fenster arbeiten Nach korrekter Passworteingabe erscheint im selben Shell-Fenster die Eingabeaufforderung des Remote-Rechners Remote Login von Windows aus Nur mit Zusatzsoftware möglich, z.b. http://gd.tuwien.ac.at/utils/shells/ssh /SSHSecureShellClient-3.2.9.exe Im allgemeinen kein graphisches Arbeiten möglich, d.h. alle Arbeiten nur im Textfenster! Ggf. also mehrfach auf cad.zserv.tuwien.ac.at einloggen, um mehrere Text-Fenster zu haben. Alle ab jetzt eingegebenen Befehle werden also auf Remote-Rechner ausgeführt! Logout vom Remote-Rechner durch Eingabe von logout oder exit 16 17 Die wichtigsten Programme für EPROG Eingabe der folgende Befehle in einer Shell xemacs = Texteditor Wenn graphisches Arbeiten möglich, startet xemacs im eigenen Fenster Aufruf mit xemacs & erlaubt weiteres Arbeiten in Shell (Symbol & = Multitasking-Aufruf in UNIX) gcc = Standard-C-Compiler, der für Übung verwendet werden muss matlab startet Matlab-Interpreter in Shell Auf cad.zserv.tuwien.ac.at ist kein graphisches Arbeiten in Matlab möglich keine Oberfläche/Editor wie im Matlab-Skript Der Texteditor (X)Emacs (x)emacs & startet Editor parallel im eigenen Fenster (x)emacs file & öffnet die Datei file im Editor bzw. legt diese Datei neu an (x)emacs -nw startet Emacs in der aktuellen Shell im Textmodus Man darf kein & verwenden! analog zu oben (x)emacs -nw file Wichtige Tastenkombinationen für (X)Emacs C- = Ctrl-/Strg-Taste C-x C-f = Datei öffnen bzw. neu anlegen C-x C-s = Datei speichern C-x C-c = Emacs beenden C-Programme enden stets mit.c, z.b. test.c Matlab-Prg enden stets mit.m, z.b. test.m 18 19
UNIX-Dateisystem Aufbau wie in Windows: Verzeichnisse + echte Dateien Verzeichniss sind im Baum geordnet in Windows mittels Explorer visualisierbar in UNIX muss sich Benutzer i.d.r. textbasiert zurechtfinden Nach Login ist man stets im eigenen Home-Verzeichnis pwd (print working directory) gibt aus, in welchem Verzeichnis man (= Shell) aktuell ist cd (change directory) ohne Angabe wechselt ins eigene Home-Verz.. = Abkürzung für aktuelles Verzeichnis.. = Abkürzung für eine Ebene höher ~ = Abkürzung für eigenes Home-Verz. Beispiel: Es gäbe Verz. /home/samuel/eprog/vo Nach Login bin ich in /home/samuel/ cd eprog wechselt nach /home/samuel/eprog cd vo wechselt dann nach /home/samuel/eprog/vo cd.. wechselt dann nach /home/samuel/eprog cd.., cd, cd ~ wechselt dann nach /home/samuel nur im eigenen Home-Verzeichnis + dessen Unterverzeichnissen hat man Schreib- und Leserechte! 20 Die wichtigsten Befehle ls = List (Verzeichnis-Inhalt ausgeben) mkdir = Make Directory rmdir = Remove Directory cp = Copy (Files) cp -r = Copy (Directories) mv = Move (Files & Directories) rm = Remove (Files) rm -rf = Remove (ohne Rcksicht, inkl. Verz.) Vorsicht, es gibt keinen Papierkorb in UNIX! d.h. gelöscht ist gelöscht! Dateinamen Namen für Dateien & Verz. (max. 253 Zeichen) Buchstaben, aber keine dt. Sonderzeichen Ziffern Underscore ( ), Punkt (.), Minuszeichen (-) UNIX unterscheidet Groß/Kleinschreibung Viele Dateibefehle erlauben sog. Wildcards * vertritt beliebige Anzahl beliebiger Zeichen? vertritt genau ein beliebiges Zeichen BSP. ls *.ps zeigt Dateien mit Endung.ps 21 Kopieren von Dateien zwischen UNIX-Rechnern Kopieren von Dateien/Verzeichnissen cp quelle ziel quelle = Name der Ausgangsdatei ziel = Name der Zieldatei Existiert ziel nicht, so wird Datei angelegt Existente ziel wird berschrieben Ist ziel ein Verzeichnisname, so wird Datei quelle in dieses Verzeichnis kopiert quelle darf Wildcards enthalten Option -r zum Kopieren von Verzeichnissen nötig z.b. cp -r quelle ziel Abkürzungen bei Verzeichnissen.,.., ~ erlaubt Beispiel cp /tmp/*. kopiert alle Dateien (aber keine Unter-Verz.) aus Verzeichnis /tmp ins aktuelle Verzeichnis Mittels scp (secure copy) analog zu cp scp quelle user@rechner:ziel kopiert Datei quelle von lokal nach rechner, wo Benutzer user Account haben muss Vor Kopieren wird Passwort abgefragt Falls ziel fehlt, wird ins Home-Verz. kopiert Falls : fehlt, gilt scp = cp Wildcards sind erlaubt Kopieren von Verzeichnissen mit Option -r scp user@rechner:quelle ziel kopiert Datei quelle von rechner nach lokal Kopieren von Windows nach UNIX und umgekehrt Nur mit Zusatzsoftware möglich, z.b. http://gd.tuwien.ac.at/utils/shells/ssh /SSHSecureShellClient-3.2.9.exe installiert SFTP-Programm, das wie Windows-Explorer aussieht und bedient wird 22 23