Informatik I

Übung 1 : Linux, Terminal & Kompilieren


Daniel Hentzen
dhentzen@student.ethz.ch





Analysis I / II  -  16

Mechanik I / II - 11

WuF I / II - 8

Masch.elemente & Innoprozess   -  8

Linalg - 6

Informatik I - 4

Chemie - 3


C

Java

Objective C

C++

C#
...













TIOBE-Index Feb. 2015


C++


  • 1979, Erweiterung von C
  • object-oriented 
  • effizient, auf Performance ausgelegt
    • Anwendung im wissenschaftlichen Bereich




Ausblick






Vorlesung



Homepage & Forum (OLAT)


Homepage 

Forum



Lehrbuch


S. Prata : C++ Primer Plus, 6th Edition





Prüfung


120 min, handschriftlich

Zusammenfassung : 5 A4 Blätter (10 Seiten)


keine MCQ's, keine "Theoriefragen"

Programmieren!



Übungen (!)


  • Vorbesprechung
  • Abgabe : Dateien an dhentzen@student.ethz.ch
    • in der Regel nur Eclipse Dateien (keine Textdateien!)
    • Betreff : Info1 Exercise1 Vorname Nachname
  • Rückgabe & Nachbesprechung in der (über)nächsten Übung

 


Material


Präsentationen unter www.slid.es/dhentzen
(html-Format, am besten mit Chrome...)

Slides, Übungen, MLs, Notizen,... unter



Übung 1

Linux, Terminal & Kompilieren




Material (VPN !)


VirtualBox (OS X / Windows,...)

Fedora (Info1_2015_fedora64.ova)




Installation Fedora (!)

Voraussetzung : VirtualBox und Fedora heruntergeladen


    1. VirtualBox installieren & starten
    2. Unter Datei / Appliance importieren : Info1_2015_Fedora64bit.ova öffnen
    3. Importieren
    4. Starten (grüner Pfeil)
    5. Benutzer : info1, Passwort : info1

KEINE UPDATES DURCHFÜHREN !!



Aufgabe 1 : Olat und Forum



Aufgabe 2 : Linux Terminal

siehe Beiblatt 2



Linux




Software

Betriebssystem (OS)

Hardware 

Linux Kernel
  • Linus Torvalds, 5. Oktober 1991
  • Kernel 
    • Computer Programm
    • Fundament des OS




  • free and open source software
  • GNU General Public License


  • Format : Linux distributions 
    • Debian
      • Ubuntu
      • Linux Mint
    • Fedora
    • Arch Linux

Fedora


Erfolgsgeschichte










Konsole / Terminal


  • direkter Zugang zum Kernel
  • Input / Output
  • Befehle : siehe Beiblatt 2



Befehle


$ ls                   // zeigt an was das aktuelle Verzeichnis beinhaltet 
$ mkdir Info1          // erstellt ein Verzeichnis unter dem Namen "Info1"
$ cd Info1            // navigiert in das Verzeichnis "Info1"
$ cd ..               // navigiert ein Verzeichnis nach oben
$ mv Downloads/HelloWorld.zip Info1/HelloWorld /* verschiebt die zip-Datei nach "HelloWorld" */
$ unzip HelloWorld.zip // entpackt die zip-Datei
$ rm HelloWorld.zip    // Datei löschen




Aufgabe 3 : Kompilieren




Compiler


Programmiersprache  ► Assemblersprache  Maschinensprache




Debugger


  • verarbeitet Befehle Schritt für Schritt
  • findet und zeigt Fehler im Programm an

Befehle


$ gedit main.cpp  // öffnet die Datei im Texteditor
$ g++ -c main.cpp // übersetzt die Datei in Maschinensprache (kompilieren)
$ g++ -S main.cpp // generiert die Assembler-Datei (kompiliert nicht) 
$ g++ -o HelloWorld main.o // einzelne, ausführbare Datei erstellen
$ ./HelloWorld    // Datei ausführen
$ gdb HelloWorld  // Datei debuggen
$ disas main    // zeigt Maschinencode und Assembly der Funktion "main" an





Aufgabe 4 : Hello World !



PrtSc-Taste


print screen : Bildschirmfoto


  • ohne PrtSc : System Settings / Keyboard / Short Cuts / Screenshots

  • Take a screenshot of a window  ► neue Tastenkombination
  • Speicherort : Files / Pictures


  • main : Funktion mit Rückgabewert int ("Integer")
    • return 0 : Rückgabewert der Funktion ist 0
    • argc, argv : Parameter der Funktion
      • argc : Typ int  ("Integer")
      • argv : Typ char ("Character")
    • zwischen {...} : Definition der Funktion
  • cout : gibt Text auf die Konsole aus
  • endl : springt in neue Zeile


argc, argv


  • argv : "argument vector" : beinhaltet die übergebenen Argumente
    • argv[0] : 1. Argument : immer der Pfad zum Programm
    • argv[1] : 2. Argument
    • etc... (beliebig viele)

  • argc : "argument count" : beinhaltet Anzahl der Argumente in argv



Beispiel


./HelloWorld ETH Zurich


    • argv : [home/Info1/...; ETH; Zurich]
    • argc : 3


    Ausgabe : 


    Hello World!


    Übung 1 : Linux, Terminal & Kompilieren

    By Daniel Hentzen

    Übung 1 : Linux, Terminal & Kompilieren

    • 1,659