Sie sind auf Seite 1von 29

Einfhrung in die Programmierung Vorlesung 1 W I S S E N 1

T E C H N I K

L E I D E N S C H A F T

Einfhrung in die Programmierung


DI Dr. techn. Christian Safran, IICM DI Michael Steurer, IICM Univ.-Prof. DI Dr. techn. Frank Kappe, IICM

www.tugraz.at

Einfhrung in die Programmierung Vorlesung 1 2

Kontakt
DI Dr. Christian Safran csafran@iicm.edu DI Michael Steurer msteurer@iicm.edu

Univ.-Prof. DI Dr. Frank Kappe fkappe@iicm.edu

Lukas Eberhard lukas.eberhard@tugraz.at

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)

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 3

Zur Lehrveranstaltung
"! Vorlesung
"! Dienstags 18:15 bis (hchstens) 19:45 im HS i13
"! Oktober, November

"! Endklausur 26.11.

"! Hausbung
"! Wchentlich

"! bung
"! Dezember
DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 4

bungen
"! Gruppenbeispiel "! 2 Wochen "! Abgabegesprche "! Ausbesserungsbeispiel
"! Jnner

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 5

Tutorium
"! Betreute Lerneinheit in kleineren Gruppen "! Jetzt: Anmelden zu einer Tutoriumsgruppe
"! TU Graz online

"! Montags/Dienstags

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 6

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)

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 7

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

Einfhrung in die Programmierung Vorlesung 1 8

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

Einfhrung in die Programmierung Vorlesung 1 9

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

Einfhrung in die Programmierung Vorlesung 1 10

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

Einfhrung in die Programmierung Vorlesung 1 11

Vorlesungsziel
"! Grundzge einer strukturierten Software-Entwicklung "! Basiskenntnisse der Programmiersprache C "! Grundlage fr Softwareentwicklung Praktikum
"! im Sommersemester (C++)

"! Kann ich schon


"! Umso besser "! Achtung Selbstberschtzung!

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 12

Was wird von Ihnen erwartet?


"! Mitlernen! "! Nur Buch lesen ist zu wenig! "! Ausprobieren! "! Fehler machen und daraus lernen! "! Nicht auswendig lernen, sondern verstehen!
DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 13

Was ist berhaupt ein Computer?


A computer is a general purpose device that can be programmed to [..] solve more than one kind of http://en.wikipedia.org/wiki/Computer 2013-09-18 problem. (Wikipedia)
Program

Input

Computer

Output

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 14

Klassifikation von Programmiersprachen


Nach Hardwarenhe
"! Maschinensprache "! Assembly Language "! Hhere (strukturierte) Programmiersprachen
"! Kompiliert "! Interpretiert

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 15

Werkzeug
"! Texteditor "! Compiler "! Optional
"! Debugger "! Entwicklungsumgebung (IDE)

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 16

Vom Source Code zur Programmausfhrung


Editor

Source Code

Compiler

Assembly Language

Assembler

Object Code

Linker

Dynamic Library

Static Library

Binary / Executable

Loader

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 17

Die Programmiersprache C - Geschichte


1969: UNIX in Assembler
"! Ken Thompson & Dennis Ritchie

1973: Neuentwicklung in C 1978: The C Programming Language


"! Brian Kernighan & Dennis Ritchie "! = K&R C

1989: ANSI-Standard
"! = ANSI-C, C89, C90 (ISO/IEC 9899:1990)

1999: ISO-Standard = C99


"! bernimmt einige Features von C++

2011: neuer Standard C11


"! = ISO/IEC 9899:2011
DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 18

Warum C ?
"! Weit verbreitet "! Schneller + kompakter Code
"! Systemnahe Programmierung

"! Kleiner Sprachumfang


"! dafr groe Library

"! Universell einsetzbar "! Grundlegende Sprache


"! Basis fr C++, C# uvm

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 19

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

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 20

Was macht ein gutes Programm aus?


"! Funktionialitt "! "! "! "! "! "! Lesbarkeit Wartbarkeit Robustheit Korrektheit Effizienz Portierbarkeit

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 21

Unser erstes C-Programm (Source Code)


///////////////////////////////////// // My first C program ///////////////////////////////////// #include <stdio.h> int main() { printf("Hello World!\n"); return 0; }

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 22

Die Wahl des Editors


"! Linux
"! vi, emacs, ...

"! OS X
"! Textwrangler

"! Windows
"! Notepad++

"! Cross Plattform


"! http://www.sublimetext.com

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 23

Unser Compiler: gcc


"! Linux
"! normalerweise automatisch da

"! OS X
"! Installieren von Xcode "! Installieren von Command Line Tools

"! Windows
"! http://tdm-gcc.tdragon.net
DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 24

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

Einfhrung in die Programmierung Vorlesung 1 25

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

Einfhrung in die Programmierung Vorlesung 1 26

Zurck zum Programm


///////////////////////////////////// Kommentar // My first C program (nicht ausgefhrt) ///////////////////////////////////// Bibliothek fr Einund Ausgabe #include <stdio.h> Hauptfunktion int main() 1x / Programm { printf("Hello World!\n"); return 0; } Codeblcke innerhalb { und }
DI Dr. Christian Safran, IICM

Anweisungen enden mit ; Zeichenkette innerhalb " und "

Funktionen enden mit return

Einfhrung in die Programmierung Vorlesung 1 27

Whitespace wird vom Compiler ignoriert


"! Alles das selbe:

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

Einfhrung in die Programmierung Vorlesung 1 28

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

DI Dr. Christian Safran, IICM

Einfhrung in die Programmierung Vorlesung 1 29

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.

Fragen von allgemeinem Interesse


"! Newsgroup tu-graz.lv.ep "! Zuerst lesen, dann posten
DI Dr. Christian Safran, IICM