Kurs:Wie funktioniert eigentlich ein Computer/Hauptthemen/Tutorials

Aus Wikiversity
Zur Navigation springen Zur Suche springen

Zurück zur Übersicht

Tutorials[Bearbeiten]

Arbeiten im Terminal von Ubuntu[Bearbeiten]

Allgemeine Informationen[Bearbeiten]

Ubuntu ist eine kostenlose und freie Linux-Distribution, basierend auf Linux/Debain. Der Gedanke bei Ubuntu ist es, eine Software anzubieten, die allen Meschen ohne Einschränkungen zur Verfügung steht.

Befehle im Terminal[Bearbeiten]

Hier sind einige Befehle aufgeführt, welche den Einstieg in diese Steuerkonsole erleichtern sollen.

Befehl Erklärung Zeile im Screenshot
ctrl alt t Konsole aufrufen -
ssh (name@10.42.0.XX) Verbindung zu anderem Gerät (Raspberry Pi) aufbauen -
ls Verzeichnisse des aktuellen Orts anzeigen Zeile 1
cd Verzeichnis 'change directory' Verzeichnis ändern Zeile 6
cd .. ein Verzeichnis zurück Zeile 3
mkdir neues Verzeichnis anlegen Zeile 9
emacs <datei> EMACS öffnen Zeile 14
gcc <datei> -o <name> Quellcode kompilieren Zeile 15
./name 'name' ausführen Zeile 19
cp <Quelldatei(en)> <Zielpfad> Kopiert Dateien/Verzeichnisse zu einem bestimmten Ziel Zeile 18
exit verlassen Zeile 22
 1 hendrik@raspberrypi ~ $ ls
 2 hello  hello~  hello2  hello2~  #hello.c#  hello.c  hello.c~  pistore.desktop  test2  wette
 3 hendrik@raspberrypi ~ $ cd ..
 4 hendrik@raspberrypi /home $ ls
 5 common  hanna  hendrik  jens  pascal  pi
 6 hendrik@raspberrypi /home $ cd hendrik
 7 hendrik@raspberrypi ~ $ ls
 8 hello  hello~  hello2  hello2~  #hello.c#  hello.c  hello.c~  pistore.desktop  test2  wette
 9 hendrik@raspberrypi ~ $ mkdir testprogramm
10 hendrik@raspberrypi ~ $ ls
11 hello  hello~  hello2  hello2~  #hello.c#  hello.c  hello.c~  pistore.desktop  test2  testprogramm  wette
12 hendrik@raspberrypi ~ $ cd testprogramm/
13 hendrik@raspberrypi ~/testprogramm $ ls
14 hendrik@raspberrypi ~/testprogramm $ emacs -nw test.c
15 hendrik@raspberrypi ~/testprogramm $ gcc test.c -o test
16 hendrik@raspberrypi ~/testprogramm $ ls
17 test  test.c
18 hendrik@raspberrypi ~/testprogramm $ cp test ../
19 hendrik@raspberrypi ~/testprogramm $ cd ..
20 hendrik@raspberrypi ~ $ ./test
21 Testprogramm
22 hendrik@raspberrypi ~ $ exit



Die für unseren Kurs relevanten Ubuntubefehle, eingegeben in die Konsole.

Weiterführende Programme[Bearbeiten]

Programm Erklärung
diff <datei1> <datei2> Vergleicht ASCII-Dateien zeilenweise
objdump -d <datei> Zeigt verschiedene Informationen über Dateien an. Kann als Disassambler genutzt werden.
xxd <datei> Zeigt Programm/Datei in Hexadezimaldarstellung an.
emacs -nw <datei> Öffnet die Datei in emacs (s. Emacs-Cheatsheet)



Emacs ist der Texteditor, mit dessen Hilfe wir in C programmieren. Im Emacs-Tutorial befassen wir uns mit den wichtigsten Emacs-Befehlen. Wir haben die folgenden Kategorien nach ihrer Wichtigkeit sortiert:


Emacs Tutorial[Bearbeiten]

Starten & Beenden[Bearbeiten]

Starten Shell: emacs -nw <datei>
Beenden C-x C-c oder M-x kill-emacs
ABBRECHEN!! C-g ("Ich-will-hier-raus!")
Pausieren C-z
Fortsetzen Shell: fg


Dateioperationen[Bearbeiten]

Öffnen bzw. Erstellen C-x C-f <datei>
Aktuellen Buffer speichern C-x C-s
Alle Buffer speichern (Nachfrage) C-x s
Aktuellen Buffer speichern als C-x C-w


Buffermanagement[Bearbeiten]

Bufferliste anzeigen C-x C-b
Zu Buffer wechseln C-x b <buffer>
Buffer schließen (killen) C-x k oder M-x kill-buffer
Bufferanfang M-<
Bufferende M->
ganzen Buffer markieren C-x h
markierten Bereich löschen M-x delete-region

Anmerkung:

  • Bufferliste öffnet sich im nächsten Fenster (wenn nicht bereits vorhanden), also dem, in das C-x o springen würde.
  • Man kann mit C-x o wie gehabt (s. unten) in die Bufferliste springen und mit Return zu dem gewählten Buffer wechseln.


Fenstermanagement[Bearbeiten]

Fenster → Vollbild C-x 1
Fenster waagerecht spalten C-x 2
Fenster senkrecht spalten C-x 3
Letze Teilung aufheben C-x 0
Fenster wechseln (!) C-x o


Externe Programme[Bearbeiten]

Externes Terminal in Emacs öffnen M-x ansi-term


Textoperationen[Bearbeiten]

DSA 2013-6.2 Emacs Insert Animation.gif
Rückgängig (!) C-_ ("Ctrl+Shift+Strich") bzw. C-x u
Marke setzten (Anfang der Markierung) C- ("Ctrl+Leerzeichen")
Ausschneiden (Markierten Text) C-w
Einfügen (zuletzt ausgeschnittenen Text, "yanken") C-y
Einfüge-Text durchschalten (nach dem Einfügen, "Kill-Ring") M-y
Suchen (vorwärts) / weitersuchen C-s
Suchen (rückwärts) / r. weitersuchen C-r
ein Zeichen löschen C-d
eine Zeile löschen C-k
Zeichen / Text ersetzen M-x replace-string

Bewegen[Bearbeiten]

Ein Zeichen vorwärts C-f
Ein Zeichen rückwärts C-b
Ein Wort vorwärts M-f
Ein Wort rückwärts M-b
Eine Zeile nach oben C-p
Eine Zeile nach unten C-n
An Zeilenanfang C-a
An Zeilenende C-e
Seite vorwärts blättern C-v
Seite rückwärts blättern M-v


Wiederholung[Bearbeiten]

Befehl mehrmals wiederholen C-u <Anzahl> <Befehl>


Modi[Bearbeiten]

Programm in Hexadezimal-Modus anzeigen M-x hexl-mode
Programm in C-Modus anzeigen M-x c-mode
Normaler Modus in Emacs (Textdatei anzeigen) M-x fundamental-mode


Begriffserklärung[Bearbeiten]

Buffer[Bearbeiten]

Ein Buffer ist eine Vorrichtung, die dazu dient, Daten zwischenzuspeichern. Ein Buffer speichert die Daten in der Regel temporär und kann in einem flüchtigen, als auch in einem nichtflüchtigen Speicher angesiedelt sein. Mögliche Gründe Daten im Buffer zwischenzuspeichern sind zum Beispiel:

  • Ein kontinuierlicher Strom von Daten muss verarbeitet werden, wobei die Verarbeitungsgeschwindigkeit zeitweise kleiner als der Datenfluss ist. Der Buffer bildet dann sozusagen eine Art Warteschleife.
  • Im Buffer werden Daten gespeichert, die Information über einen bestimmten Zustand im Rechner beinhalten.
  • Es werden Daten im Buffer deponiert, die mit einer grossen Wahrscheinlichkeit demnächst und/oder wiederholt benötigt werden.

Von Buffern redet man häufig auch, wenn man einen Speicher von mehr oder weniger unbestimmter Grösse meint, in welchem Daten vorübergehend abgelegt werden, die erst später definitiv verwendet oder verarbeitet werden sollen.

Fenster[Bearbeiten]

Fenster, auch Frame genannt, sind Bereiche, in denen Buffer dargestellt werden.




Wikiversity[Bearbeiten]

Diese Seite ist dafür gedacht, dass einige nützliche und für den Kurs hilfreiche Funktionen von Wikiversity erklärt werden. Weitere Informationen findet man auch auf den Hilfeseiten von Wikipedia und Wikiversity.

Eine Seite erstellen[Bearbeiten]

Wie man einen neuen Artikel erstellen kann

Um eine Seite zu erstellen, die zur Kursseite gehört, verändert man zunächst die URL. Am besten sollte man mindestens eine Minute über den Titel nachdenken. Man kommt nun auf eine Seite, die die Möglichkeit bietet einen neuen Wikiversity-Artikel zu erstellen (siehe Bild).

In der deutschen Wikipedia existiert auch eine Anleitung zum Erstellen einer Wikipediaseite

Einfügen von Inhalten und Struktur[Bearbeiten]

Dateien hochladen und einbinden[Bearbeiten]

Wie man eine Seite auf Wikimedia commons hochlädt und bezeichnet.

Man kann Dateien auf Wikiversity verwenden, indem man sie auf die Seite Wikimedia Commons hochlädt. Die Datei kann man einer Kategorie zuweisen, in unserem Fall ist das die Kategorie "Kurs:Wie funktioniert eigentlich ein Computer". Man erhält einen Link, den man in die Seite einfügen kann.

Vorlagen verwenden[Bearbeiten]

Vorlage der Navigationsleiste
Einfügen eines Links in die Navigationsleiste
Zeigt die Navigationsleiste mit neu eingefügtem Link

Eine Vorlage ist z.B eine Navigationsleiste, die für mehrere Seiten eines Kurses gebraucht wird. Nun muss man nicht immer und immer wieder den selben Quellcode schreiben. Die einmal erstellte Vorlage wird einfach an den gewünschten Stellen eingefügt. Man fügt diesen ein in dem man diesen Code {{Link zur Vorlage}} dafür eingibt.

Man kann auch die Navigationsleiste verändern in dem man die Vorlage ändert, so werden auf allen Seiten des Kurses diese Änderungen an der Navigationsleiste übernommen. Wenn man nun die Seite "Wikiversity verwenden" in der Navigationsleiste verlinken möchte, geht man zu erst auf "Bearbeiten" der Vorlage und fügt den Link an der entsprechenden Stelle ein, wie man in der Grafik sehen kann.

Nun sieht man den eingefügten Link auf allen Seiten auf denen die Navigationsleiste eingefügt wurde.

Programmcode einbinden[Bearbeiten]

Um einen Programmcode in eine Wikiversity-Seite einzubinden, kann man folgenden Befehl verwenden:

<syntaxhighlight lang="C">

</syntaxhighlight>

Beispiel:

#include<stdio.h>
int main()
{
printf("hallo")
}

Hinweiskasten[Bearbeiten]

Ein Hinweiskasten kann durch folgende Funktion erstellt werden:

{{Kasten| Text = Hier Text einfügen}}

Ein anderer Kasten, wie dieser, kann durch das einfügen eines Leerzeichens vor dem Absatz erstellt werden:

Hier Text einfügen

Tabellen[Bearbeiten]

Einfache Tabellen[Bearbeiten]

Um eine Tabelle zu erstellen braucht man erst einmal das Grundgerüst:

{|
|Tabelle mit einer Spalte und Zeile
|}

Um weiter Spalten einzufügen, muss man nur eine weiter Zeile im Quellcode schreiben:

{|
|Erste Spalte
|Zweite Spalte
|}

Um eine weiter Zeile einzufügen, fügt man einen senkrechten Strich und einen Bindestrich ein:

{|
|Erste Zeile
|-
|Zweite Zeile
|}

Wenn man eine Kopfzeile einfügen möchte, ersetzt man den senkrechten Strich durch ein Ausrufezeichen:

{|
!Kopfzeile
|-
|Normale Zeile
|}

Sortierbare Tabellen[Bearbeiten]

Bei einer sortierbaren Tabelle muss man im Quelltext nur eine kleine Änderung vornehmen:

{| class="wikitable sortable"
|Zeile eins
|-
|Zeile zwei
|}

Um eine Spalte nicht sortierbar zu machen gibt man nur den Befehl class="unsortable" vor die Kopfzeile dieser Spalte ein.

Beispiel Tabelle[Bearbeiten]

Kopfzeile Unsortierbare Spalte
Beispiel 1 Diese
Beispiel 2 Spalte
Beispiel 3 ist nicht
Beispiel 4 sortierbar!!


How-To Dokuseite des Kurses[Bearbeiten]

Thema[Bearbeiten]

Beispiel: Aufgabe 1, Emacs, ...

URL: "...Kurs:Wie_funktioniert_eigentlich_ein_Computer/Themen/<Aufgabe 1, Emacs, ...>"

Aufbau:

  • Sinnvolle (!) Überschrift
  • Inhalt
  • Am Ende: "<noinclude>[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer/Themen]]</noinclude>"


Hauptthema[Bearbeiten]

Beispiel: Programme hacken, Werkzeuge, ...

URL: "...Kurs:Wie_funktioniert_eigentlich_ein_Computer/Hauptthemen/<Programme hacken, Werkzeuge, ...>"

Aufbau:

  • Sinnvolle (!) Überschrift
  • {{Vorlage:Kurs:Wie funktioniert eigentlich ein Computer/HTVorlage}}
  • Inhalt = Sammlung der zugehörigen Themen z.B. Objdump, hexl-mode, ... => Einbetten als Vorlagen
  • Am Ende: "[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer/Hauptthemen]]"


Tag[Bearbeiten]

Beispiel: Tag 1, Tag 2, ...

URL: "...Kurs:Wie_funktioniert_eigentlich_ein_Computer/Tage/<Tag 1, Tag 2, ...>"

Aufbau:

  • Tag (mit Datum! ;) )
  • {{Vorlage:Kurs:Wie funktioniert eigentlich ein Computer/TVorlage}}
  • Inhalt = Sammlung der zugehörigen Themen z.B. Emacs, Hello world mit !, ... => Einbetten als Vorlagen
  • Am Ende: "[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer/Tage]]"

Referat[Bearbeiten]

Beispiel: Der Prozessor, Transistor-Logik, etc.

URL: "...Kurs:Wie_funktioniert_eigentlich_ein_Computer/Referate/<Der Prozessor, Transistor-Logik, etc.>"

Aufbau:

  • Referatsname
  • Inhalt = Abstract, Poster, Quiz
  • Am Ende: "[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer/Referate]]"
  • NICHT! : "[[Kategorie:Kurs:Wie funktioniert eigentlich ein Computer]]"