T E C H N I K
L E I D E N S C H A F T
www.tugraz.at
Kontakt
DI Dr. Christian Safran csafran@iicm.edu DI Michael Steurer msteurer@iicm.edu
Institut fr Informationssysteme und Computer Medien A-8010 Graz, Inffeldgasse 16c Raum D2.07 (erster Stock) Sprechstunden Fr. 9:30-11:30 (nach Vereinbarung per E-Mail)
Zur Lehrveranstaltung
"! Vorlesung
"! Dienstags 18:15 bis (hchstens) 19:45 im HS i13
"! Oktober, November
"! Hausbung
"! Wchentlich
"! bung
"! Dezember
DI Dr. Christian Safran, IICM
bungen
"! Gruppenbeispiel "! 2 Wochen "! Abgabegesprche "! Ausbesserungsbeispiel
"! Jnner
Tutorium
"! Betreute Lerneinheit in kleineren Gruppen "! Jetzt: Anmelden zu einer Tutoriumsgruppe
"! TU Graz online
"! Montags/Dienstags
Tutor / Tutorin
"! Hlt Tutorium "! Ist erste Anlaufstelle fr Fragen "! Korrigiert bungsabgaben "! Hlt Abgabegesprche "! Termine
"! http://palme.iicm.tugraz.at/wiki/EP/time beachten "! (TU Graz Online nur Raumreservierungen)
Wichtige Hinweise
"! Alle Beispiele mssen abgegeben werden
"! Minimalanforderungen
"! Fehlt ein Beispiel negative Note "! Abschreiben / Kopieren / Unerlaubte Zusammenarbeit negative Note "! Abgabesystem PALME: https://palme.iicm.tugraz.at
"! Abgabetermine Mi 19:00
DI Dr. Christian Safran, IICM
Benotung
"! bungsteil: 20 Punkte "! Vorlesungsklausur: 10 Punkte "! Beides muss separat positiv sein
"! 50% der mglichen Punkte
"! Note
"! Nicht Gengend: < 15 "! Gengend: 15 18 "! Befriedigend: 19 - 22 "! Gut: 23 - 26 "! Sehr Gut: > 26
DI Dr. Christian Safran, IICM
Weitere Infos
"! Vorlesungsunterlagen:
"! http://tugtc.tugraz.at/wbtmaster/courseMain.htm?706012
"! Informationen
"! http://palme.iicm.tugraz.at/wiki/EP
"! Newsgroups:
"! tu-graz.lv.ep "! tu-graz.lv.ep.organisatorisches "! tu-graz.lv.ep.uebungsgruppen
DI Dr. Christian Safran, IICM
Ansprechpartner
Vorlesungsinhalte # Dr. Safran bungsinhalte # Tutor # Dr. Safran Organisatorisches # Dr. Safran Abgabesystem # palme@iicm.tugraz.at TU Graz online # helpdesk@tugonline.tugraz.at TU Graz Teach Center # tugtc@tugraz.at Studentischer Linux-Server pluto.tugraz.at # pluto@TUGraz.at
DI Dr. Christian Safran, IICM
Vorlesungsziel
"! Grundzge einer strukturierten Software-Entwicklung "! Basiskenntnisse der Programmiersprache C "! Grundlage fr Softwareentwicklung Praktikum
"! im Sommersemester (C++)
Input
Computer
Output
Werkzeug
"! Texteditor "! Compiler "! Optional
"! Debugger "! Entwicklungsumgebung (IDE)
Source Code
Compiler
Assembly Language
Assembler
Object Code
Linker
Dynamic Library
Static Library
Binary / Executable
Loader
1989: ANSI-Standard
"! = ANSI-C, C89, C90 (ISO/IEC 9899:1990)
Warum C ?
"! Weit verbreitet "! Schneller + kompakter Code
"! Systemnahe Programmierung
Gefahren von C
"! "C makes it easy to shoot yourself in the foot (Bjarne Stroustrup) "! Besonders gefhrlich: Pointer / Memory Management "! Gutes C zu schreiben ist eine Kunstform
"! OS X
"! Textwrangler
"! Windows
"! Notepad++
"! OS X
"! Installieren von Xcode "! Installieren von Command Line Tools
"! Windows
"! http://tdm-gcc.tdragon.net
DI Dr. Christian Safran, IICM
Programmaufruf
gcc hello_world.c
"! Ergebnis: a.out (unter Windows: a.exe)
Starten mit ./a.out bzw. ./a.exe Besser so: gcc o hello_world hello_world.c Starten mit ./hello_world bzw. ./ hello_world.exe
DI Dr. Christian Safran, IICM
Weitere Optionen
Normalerweise macht gcc gleich alles hintereinander:
"! Preprocessor, Compiler, Assembler, Linker
Optionen:
"! "! "! "! -Wall -E -S -c alle Warnungen einschalten nur bis Preprocessor (standard output) nur bis Compiler (*.s enthlt Assembly Language) nur bis Assembler (*.o enthlt Object File)
Mehr info:
"! gcc -help "! man gcc
DI Dr. Christian Safran, IICM
In der int main() Zeichenkette nicht! { printf("Hello World!\n"); return 0; } int main() { printf("Hello World!\n"); return 0; } int main(){printf("Hello World!\n");return 0;}
DI Dr. Christian Safran, IICM
Kommentare
"! Blockkommentare
/* This is a long (and useless) comment. This comment has more than one line, but nor sense at all. */ int beans = 0; /*counter*/
"! Zeilenkommentare
// line comment // more modern // till the end of line int beans = 0; //counter
1.! Hausbung
Variante von Hello World.
"! Geben Sie Howdy, ich bin [Ihre Matrikelnummer], ich hoffe du hast einen besseren Tag als ich hier.\n aus. "! Kompilieren Sie das Programm am Rechner pluto.tugraz.at "! Geben Sie das Programm im Abgabesystem palme.iicm.tugraz.at ab. "! Abgabe ab Montag Abend bis Mittwoch, 19:00 "! Im Zweifel: Warten Sie mit dem Programmieren der Hausbung auf das Tutorium
Aufgabenstellung im Wiki
"! Halten Sie sich genau an die Anforderungen! "! Ihre Abgabe wird automatisiert getestet. "! Feedback: Anzahl der bestandenen Testflle.