Schnellkurs in UNIX. Betriebssystem? UNIX. Literatur. UNIX ist textbasiert. Login auf einem UNIX-System. Werbung für CYGWIN

Ähnliche Dokumente
Schnellkurs in UNIX. Einführung in das Programmieren für Technische Mathematik. UNIX ist textbasiert. Betriebssystem? UNIX. Werbung für CYGWIN

Das erste C-Programm. Einführung in das Programmieren für Technische Mathematik. Source-Code. Achtung. Programmiersprachen.

Schnellkurs in UNIX. Einführung in C. Programmieren für Technische Mathematik. UNIX ist textbasiert. Betriebssystem? UNIX. Werbung für CYGWIN

Das erste C-Programm. Einführung in C. Programmieren für Technische Mathematik. Source-Code. Achtung. Programmiersprachen. Source-Code & Executable

Formalia. Einführung in das Programmieren für Technische Mathematik. freiwillige Literatur. EPROG-Homepage. Literatur.

Einführung in das Programmieren für Technische Mathematik

Formalia. Einführung in das Programmieren für Technische Mathematik. freiwillige Literatur. EPROG-Homepage. Literatur. Prof. Dr.

Organisatorisches. Einführung in das Programmieren für Technische Mathematiker. Wichtige Namen. Wichtige URLs. Lehrziel. Didaktisches Konzept?

Formalia. Einführung in das Programmieren für Technische Mathematik. EPROG-Homepage. freiwillige Literatur. Literatur. Prof. Dr.

Organisatorisches. Einführung in das Programmieren für Technische Mathematiker. Wichtige Namen. Wichtige URLs. Lehrziel. Didaktisches Konzept?

Einführung in das Programmieren für Technische Mathematiker

Das erste C-Programm. Einführung in das Programmieren für Technische Mathematiker. Source-Code. Achtung. Programmiersprachen. Einführung in C, Teil 1

Organisatorisches. Einführung in das Programmieren für Technische Mathematiker. Wichtige Namen. Wichtige URLs. Lehrziel. Didaktisches Konzept?

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Arbeiten mit der Shell Teil 1

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe

Grundlagen der Programmierung

Projekt 3 Variablen und Operatoren

Hochschule Für Angewandte Wissenschaften FH München Sommersemester Thomas Kolarz. Folie 1.

Arbeiten mit der Shell Teil 1

Informatik für Schüler, Foliensatz 1 Einführung bis...

Arbeiten mit der Shell Teil 1

Vorsemesterkurs Informatik

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Funktionen. Funktionen. Funktionen in C. Variablen. Call by Value

Linux-Camp: Remote-Zugriff

Informatik I - Übung 2 Programmieren in Eclipse

Shell. Oder Konsole suchen im Application Finder. Auch Terminal, Bash oder Kommandozeile genannt. Bash nimmt Befehle entgegen und führt diese aus

2. Programmierung in C

Das CIP der Mathematik

Übungen zur Vorlesung Wissenschaftliches Rechnen I

2. Programmierung in C

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Systemverwaltung mittels Skripts

Grundlagen der Informatik

Vorlesung Unix-Praktikum

Schnellkurs in UNIX. Einführung in C. Programmieren für Technische Mathematik. UNIX ist textbasiert. Betriebssystem? UNIX. Werbung für CYGWIN

Das CIP der Mathematik

ZWEITE ÜBUNG ZUR EINFÜHRUNG IN DIE PROGRAMMIERUNG FÜR COMPUTERLINGUISTEN LEONIE WEIßWEILER

2 2. Tag. 2.1 Das Dateisystem. das Dateisystem organisiert die Speicherung von Daten. viele Betriebssysteme haben verschiedene Dateisysteme

Die Shell. [prompt]> <command> <flags> <args>

2. Programmierung in C

ÜBUNG Regeln für die Hausaufgaben. Was gibt es im UNIX-Pool zu beachten? Der erste Besuch im UNIX-Pool

Hello World! Eine Einführung in das Programmieren Das erste Programm

Arbeiten mit der Shell Teil 1

UNIX Die wichtigsten Befehle

Eprog Starthilfe. 5. Oktober Einleitung 2

C-Programme erstellen und ausführen

GI Grundlagen der Informatik (GI)

Die Programmiersprache C

Grundlagen der Programmierung

Übungen zur Vorlesung Wissenschaftliches Rechnen I

Arbeiten in der Unix-Kommandozeile

Linux II. Reguläre Ausdrücke Editoren Scripting. 2 Linux II. Linux I II III Res WN/TT NLTK XML Weka E Reguläre Ausdrücke Editoren Scripting

Linux eine Einführung

X Anmelden am System. X System herunterfahren. X Grundlegendes zur Shell. X Das Hilfesystem. X Dateioperationen. X Bewegen im Verzeichnisbaum

Arbeiten in der Unix-Kommandozeile

Programmierkurs C++ Variablen und Datentypen

Pointer. Variablen. Pointer. Ein elementares Beispiel. Pointer in C

Grundlagen der Informatik. Mathias Buhr

Programmieren in C/C++ und MATLAB

SCI Linux Einführung

1 UNIX und die Kommandozeile. 2 C++ Tipps. 1.1 wichtige Befehle und Programme. 1.2 Umleiten der Standardein- und Ausgabe. 2.

GI Vektoren

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Objektorientiertes Programmieren mit Suse Linux

Informatik Erste Schritte mit MATLAB

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE

Informatik I - Einstiegskurs

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

ÜBUNGS-BLOCK 7 LÖSUNGEN

Arbeiten mit der Shell Teil 1

Mathematische Computer-Software

Funktionen. Funktion. Eingabe- / Ausgabeparameter. Call by Value / Call by Reference. return. void

Linux-Einführung Übung

Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 1B

Algorithmen und ihre Programmierung

Funktionales C++ zum Ersten

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

Ulrich Stein

6. Grundlagen der Programmierung

JAVA-Datentypen und deren Wertebereich

Unix Grundlagen. - ii - Ambit Professional Seminar Series. Autor: Prof. J. Anton Illik Diplom-Informatiker

Grundbegriffe. Einführung in das Programmieren für Technische Mathematiker. Dirk Praetorius. Folien zu meinen Vorlesungen.

Michael Dienert. 8. Dezember 2016

Einführung ins Praktikum Wissenschaftliches Rechnen I

Java I Vorlesung Imperatives Programmieren

RO-Tutorien 17 und 18

Unterlagen. CPP-Uebungen-08/

C-Programme kompilieren mit Visual Studio Express

Literatur. Einführung in Unix. Login. Passwort. Mag. Thomas Griesmayer. Benutzererkennung und Passwort Case-Sensitiv Prompt

Einführung in das wissenschaftliche Rechnen

Transkript:

Betriebssystem? Der Rahmen, in dem Programme auf Rechner ausgeführt werden können z.b. Windows XP, UNIX Abstraktion der Hardware auf geeignete Software-Schnittstellen Software läuft auf verschiedenen Rechnern Schnellkurs in UNIX Betriebssystem Login am UNIX-System Wichtigste Programme für EPROG Wichtigste UNIX-Dateibefehle Verwaltung der angeschlossenen Hardware 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 Literatur M. Harlander: Einf. in UNIX (pdf auf Homepage) 1 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 auf lva.student.tuwien.ac.at Username: e + Matrikelnummer Passwort: wie bei TUWIS 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 3 4

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..9.exe Im allgemeinen kein graphisches Arbeiten möglich, d.h. alle Arbeiten nur im Textfenster! Ggf. also mehrfach auf lva.student.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 5 6 UNIX-Dateisystem Die wichtigsten Programme für EPROG Eingabe der folgende Befehle in einer Shell emacs = Texteditor Wenn graphisches Arbeiten möglich, startet emacs im eigenen Fenster Aufruf mit emacs & 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 inkl. graphischer Oberfläche + Editor (wie im Skript) matlab -nojvm startet Matlab in Shell Aufbau wie in Windows: Verzeichnisse + echte Dateien Verzeichnisse 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/dirk/eprog/vo Nach Login bin ich in /home/dirk/ cd eprog wechselt nach /home/dirk/eprog cd vo wechselt dann nach /home/dirk/eprog/vo cd.. wechselt dann nach /home/dirk/eprog cd.., cd, cd ~ wechselt dann nach /home/dirk nur im eigenen Home-Verzeichnis + Unterverzeichnissen hat man Schreib- und Leserechte! 7 8

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 Rücksicht, inkl. Verz.) Vorsicht, es gibt keinen Papierkorb in UNIX! d.h. gelöscht ist gelöscht! Dateinamen Namen für Dateien & Verz. (max. 53 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 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 9 Kopieren von Dateien zwischen UNIX-Rechnern Mittel 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..9.exe installiert SFTP-Programm, das wie Windows-Explorer aussieht und bedient wird Das erste C-Programm Source-Code & Executable Compiler & Interpreter Syntaxfehler & Laufzeitfehler Wie erstellt man ein C-Programm? main printf (Ausgabe von Text) #include <stdio.h> 11 1

Source-Code in Programmiersprache geschriebenes Programm wird bei Ausführung bzw. Compilieren schrittweise abgearbeitet im einfachsten Fall: sequentiell Programmzeile für Programmzeile von oben nach unten Programmiersprachen Grobe Unterscheidung in Interpreter- und Compiler-basierte Sprachen Interpreter führt Source-Code zeilenweise bei der Übersetzung aus d.h. Übersetzen & Ausführen ist gleichzeitig z.b. Matlab, Java, PHP Compiler übersetzt Source-Code in ein ausführbares Programm (Executable) Executable ist eigenständiges Programm d.h. (1) Übersetzen, dann () Ausführen z.b. C, C++, Fortran Achtung C ist Compiler-basierte Programmiersprache Compilierter Code ist systemabhängig, d.h. Code läuft idr. nur auf dem System, auf dem er compiliert wurde Source-Code ist systemunabhängig, d.h. er sollte auch auf anderen Systemen compiliert werden können. C-Compiler unterscheiden sich leicht Bitte vor Übung alle Programme auf der lva.student.tuwien.ac.at mit dem Compiler gcc compilieren und testen nicht-lauffähiger Code = schlechter Eindruck und ggf. schlechtere Note... Alternative Unterscheidung (siehe Schmaranz) imperative Sprachen, z.b. Matlab, C, Fortran objektorientierte Sprachen, z.b. C++, Java funktionale Sprachen, z.b. Lisp 13 14 Wie erstellt man ein C-Programm? Starte Editor Emacs aus einer Shell mit emacs & Die wichtigsten Tastenkombinationen: C-x C-f = Datei öffnen C-x C-s = Datei speichern C-x C-c = Emacs beenden Öffne eine (ggf. neue) Datei name.c Endung.c ist Kennung eines C-Programms Die ersten beiden Punkte kann man auch simultan erledigen mittels emacs name.c & Schreibe den sog. Source-Code (= C-Programm) Abspeichern mittels C-x C-s nicht vergessen Compilieren z.b. mit gcc name.c Falls Code fehlerfrei, erhält man Executable a.out unter Windows: a.exe Diese wird durch a.out bzw../a.out gestartet Compilieren mit gcc name.c -o output erzeugt Executable output statt a.out Das erste C-Programm 5 printf("hello World!\n"); 6 } Zeilennummern gehören nicht zum Code (sind lediglich Referenzen auf Folien) Jedes C-Programm besitzt die Zeilen 3, 4, 6. Die Ausführung eines C-Programms startet immer bei main() egal, wo main() im Code steht Klammern {...} schließen in C sog. Blöcke ein Hauptprogramm main() bildet immer einen Block Logische Programmzeilen enden mit Semikolon, vgl. 5 printf gibt Text aus (in Anführungszeichen), \n macht einen Zeilenumbruch Anführungszeichen müssen in derselben Zeile sein Zeile 1: Einbinden der Standardbibliothek für Input-Output (später mehr!) 15 16

Syntaxfehler Syntax = Wortschatz (Befehle) & Grammatik einer Sprache (Was man wie verbinden kann...) Syntaxfehler = Falsche Befehle oder Verwendung merkt Compiler und gibt Fehlermeldung 1 main() { 3 printf("hello World!\n"); 4 } Fehlt Einbindung der stdio.h Compilieren liefert Fehlermeldung: wrongworld1.c:3: warning: incompatible implicit declaration of built-in function printf 5 printf("hello World!\n") 6 } Fehlt Semikolon am Zeilenende 5 Compilieren liefert Fehlermeldung: wrongworld.c:6: error: syntax error before } token Variablen Was sind Variable? Deklaration & Initialisierung Datentypen int und double Zuweisungsoperator = arithmetische Operatoren + - * / % Type Casting int, double printf (Ausgabe von Variablen) scanf (Werte über Tastatur einlesen) Laufzeitfehler Fehler, der erst bei Programm-Ausführung auftritt 17 18 Variable Variable = symbolischer Name für Speicherbereich Variable in Math. und Informatik verschieden: Mathematik: Sei x R fixiert x Informatik: x=5 weist x den Wert 5 zu, Zuweisung kann jederzeit geändert werden z.b. x=7 Datentypen Bevor man Variable benutzen darf, muss man idr. erklären, welchen Typ Variable haben soll Elementare Datentypen: Gleitkommazahlen (ersetzt Q, R), z.b. double Integer, Ganzzahlen (ersetzt N, Z), z.b. int Zeichen (Buchstaben), idr. char int x; deklariert Variable x vom Typ int Deklaration Deklaration = das Anlegen einer Variable d.h. Zuweisung von Speicherbereich auf einen symbolischen Namen & Angabe des Datentyps Zeile int x; deklariert Variable x vom Typ int Zeile double var; deklariert var vom Typ double Initialisierung Durch Deklaration einer Variablen wird lediglich Speicherbereich zugewiesen Falls noch kein konkreter Wert zugewiesen: Wert einer Variable ist zufällig Deshalb direkt nach Deklaration der neuen Variable Wert zuweisen, sog. Initialisierung int x; (Deklaration) x = 0; (Initialisierung) Deklaration & Initialisierung auch gleichzeitig möglich: int x = 0; 19 0

Ein erstes Beispiel zu int 5 int x = 0; 6 7 printf("input: x="); 8 scanf("%d",&x); 9 printf("output: x=%d\n",x); } Einbinden der Input-Output-Funktionen (Zeile 1) printf gibt Text (oder Wert einer Var.) aus scanf liest Tastatureingabe ein in eine Variable Prozentzeichen % in Zeile 8/9 leitet Platzhalter ein Datentyp Platzhalter printf Platzhalter scanf int %d %d double %f %lf Beachte & bei scanf in Zeile 8 scanf("%d",&x) aber: printf("%d",x) Dasselbe Beispiel zu double 5 double x = 0; 6 7 printf("input: x="); 8 scanf("%lf",&x); 9 printf("output: x=%f\n",x); } Beachte Platzhalter in Zeile 8/9 scanf("%lf",&x) aber: printf("%f",x) Verwendet man %f in 8 Falsches Einlesen! vermutlich Laufzeitfehler! sorgfältig arbeiten! Wenn man & vergisst Laufzeitfehler Compiler merkt Fehler nicht (kein Syntaxfehler!) Sorgfältig arbeiten! 1 Zuweisungsoperator 5 int x = 1; 6 int y = ; 7 8 int tmp = 0; 9 printf("a) x=%d, y=%d, tmp=%d\n",x,y,tmp); 11 1 tmp = x; 13 x = y; 14 y = tmp; 15 16 printf("b) x=%d, y=%d, tmp=%d\n",x,y,tmp); 17 } Das einfache Gleich = ist Zuweisungsoperator Zuweisung immer rechts nach links! Zeile x = 1; weist den Wert auf der rechten Seite der Variablen x zu Zeile x = y; weist den Wert der Variablen y der Variablen x zu insb. haben x und y danach denselben Wert d.h. Vertauschen der Werte nur mit Hilfsvariable a) x=1, y=, tmp=0 b) x=, y=1, tmp=1 Arithmetische Operatoren Bedeutung eines Operators kann vom Datentyp abhängen! Operatoren auf Ganzzahlen: a=b, -a (Vorzeichen) a+b, a-b, a*b, a/b (Division ohne Rest), a%b (Divisionsrest) Operatoren auf Gleitkommazahlen: a=b, -a (Vorzeichen) a+b, a-b, a*b, a/b ( normale Division) Achtung: /3 ist Ganzzahl-Division, also Null! Notation für Gleitkommazahlen: Vorzeichen -, falls negativ Vorkommastellen Dezimalpunkt Nachkommastellen e oder E mit ganzzahligem Exponenten (er Potenz!), z.b. e = E = = 00 Wegfallen darf entweder Vor- oder Nachkommastelle (sonst sinnlos!) Wegfallen darf entweder Dezimalpunkt oder e bzw. E mit Exponent (sonst Integer!) Also:./3. ist Gleitkommadivision 0.6 3 4

Type Casting Operatoren können auch Variablen verschiedener Datentypen verbinden Vor der Ausführung werden beide Variablen auf denselben Datentyp gebracht (Type Casting) 5 int x = 1; 6 double y =.5; 7 8 int sum_int = x+y; 9 double sum_dbl = x+y; 11 printf("sum_int = %d\n",sum_int); 1 printf("sum_dbl = %f\n",sum_dbl); 13 } Welchen Datentyp hat x+y in Zeile 8, 9? Den mächtigeren Datentyp, also double! Type Casting von Wert x auf double Zeile 8: Type Casting, da double auf int Zuweisung durch Abschneiden, nicht durch Rundung! sum int = 3 sum dbl = 3.500000 Implizites Type Casting 5 double dbl1 = / 3; 6 double dbl = / 3.; 7 double dbl3 = 1E; 8 int int1 = ; 9 int int = 3; 11 printf("a) %f\n",dbl1); 1 printf("b) %f\n",dbl); 13 14 printf("c) %f\n",dbl3 * int1 / int); 15 printf("d) %f\n",dbl3 * (int1 / int) ); 16 } a) 0.000000 b) 0.666667 c) 66.666667 d) 0.000000 Warum Ergebnis 0 in a) und d)?, 3 sind int /3 ist Ganzzahl-Division Werden Variablen verschiedenen Typs durch arith. Operator verbunden, Type Casting auf gemeinsamen (mächtigeren) Datentyp vgl. Zeile 6, 14, 15 ist int, 3. ist double /3. ergibt double 5 6 Explizites Type Casting 5 int a = ; 6 int b = 3; 7 double dbl1 = a / b; 8 double dbl = (double) (a / b); 9 double dbl3 = (double) a / b; double dbl4 = a / (double) b; 11 1 printf("a) %f\n",dbl1); 13 printf("b) %f\n",dbl); 14 printf("c) %f\n",dbl3); 15 printf("d) %f\n",dbl4); 16 } Kann dem Compiler mitteilen, in welcher Form eine Variable interpretiert werden muss Dazu Ziel-Typ in Klammern voranstellen! a) 0.000000 b) 0.000000 c) 0.666667 d) 0.666667 In Zeile 8, 9, : Explizites Type Casting (jeweils von int zu double) In Zeile 9, : Implizites Type Casting Fehlerquelle beim Type Casting 5 int a = ; 6 int b = 3; 7 double dbl = (double) a / b; 8 9 int i = dbl; 11 printf("a) %f\n",dbl); 1 printf("b) %f\n",dbl*b); 13 printf("c) %d\n",i); 14 printf("d) %d\n",i*b); 15 } a) 0.666667 b).000000 c) 0 d) 0 Implizites Type Casting sollte man vermeiden! d.h. Explizites Type Casting verwenden! Bei Rechnungen Zwischenergebnisse in richtigen Typen speichern! 7 8