diff --git a/documents/Programmierparadigmen/Abkuerzungen.tex b/documents/Programmierparadigmen/Abkuerzungen.tex index 7af9b6d..5c29fcf 100644 --- a/documents/Programmierparadigmen/Abkuerzungen.tex +++ b/documents/Programmierparadigmen/Abkuerzungen.tex @@ -7,6 +7,8 @@ \acro{ca.}{circa} \acro{d. h.}{das heißt} \acro{etc.}{et cetera} + \acro{ggf.}{gegebenenfalls} + \acro{sog.}{sogneannte} \acro{Vor.}{Voraussetzung} \acro{z. B.}{zum Beispiel} \acro{z. z.}{zu zeigen} diff --git a/documents/Programmierparadigmen/Arbeitszeit.md b/documents/Programmierparadigmen/Arbeitszeit.md index 0b32237..e08a9fc 100644 --- a/documents/Programmierparadigmen/Arbeitszeit.md +++ b/documents/Programmierparadigmen/Arbeitszeit.md @@ -4,4 +4,5 @@ in dem Erstellen dieses Skripts steckt: |Datum | Uhrzeit | Autor | Bemerkung |-----------|---------------|---------------------------------------- |01.02.2014 | 13:30 - 13:45 | Thoma | Initialisierung; Grobe Struktur +|01.02.2014 | 14:00 - 14:45 | Thoma | ASCII-Tabelle in C angefangen; Kapitel "Programmiersprachen" hinzugefügt; erste Definitionen diff --git a/documents/Programmierparadigmen/C.tex b/documents/Programmierparadigmen/C.tex index f88dcb0..f62bacc 100644 --- a/documents/Programmierparadigmen/C.tex +++ b/documents/Programmierparadigmen/C.tex @@ -1,7 +1,75 @@ \chapter{C} \index{C|(} +C ist eine imperative Programmiersprache. + +\section{Datentypen}\xindex{Datentypen} +Die grundlegenden C-Datentypen sind +\begin{table}[htp] + \centering + \begin{tabular}{|l|l|} + \hline + \textbf{Typ} & \textbf{Größe} \\ \hline\hline + char & 1 Byte \\ \hline + int & 4 Bytes \\ \hline + float & 4 Bytes \\ \hline + double & 8 Bytes \\ \hline + void & 0 Bytes \\ \hline + \end{tabular} +\end{table} + +zusätzlich kann man \texttt{char}\xindex{char} und \texttt{int}\xindex{int} +noch in \texttt{signed}\xindex{signed} und \texttt{unsigned}\xindex{unsigned} +unterscheiden. + +\section{ASCII-Tabelle} +\begin{table}[htp] + \centering + \begin{tabular}{|l|l||l|l||l|l||l|l|} + \hline + \textbf{Dez.} & \textbf{Zeichen} & \textbf{Dez.} & \textbf{Zeichen} & \textbf{Dez.} & \textbf{Zeichen} & \textbf{Dez.} & \textbf{Zeichen} \\ \hline\hline + 0 & ~ & 31 & ~ & 64 & @ & 96 & ' \\ \hline + 1 & ~ & ~ & ~ & 65 & A & 97 & a \\ \hline + 2 & ~ & ~ & ~ & 66 & B & 98 & b \\ \hline + 3 & ~ & ~ & ~ & ~ & C & 99 & c \\ \hline + 4 & ~ & ~ & ~ & ~ & D & 100 & d \\ \hline + 5 & ~ & ~ & ~ & ~ & E & ~ & ~ \\ \hline + 6 & ~ & ~ & ~ & ~ & F & ~ & ~ \\ \hline + 7 & ~ & ~ & ~ & ~ & G & ~ & ~ \\ \hline + 8 & ~ & ~ & ~ & ~ & H & ~ & ~ \\ \hline + 9 & ~ & ~ & ~ & ~ & I & ~ & ~ \\ \hline + 10 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 11 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 12 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 13 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 14 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 15 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 16 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 17 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 18 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 19 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 20 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 21 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 22 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 23 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 24 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 25 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 26 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 27 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 28 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 29 & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ \hline + 31 & ~ & ~ & ~ & ~ & ~ & 127 & ~ \\ \hline\hline + \end{tabular} +\end{table} + \section{Syntax} \section{Beispiele} +\subsection{Hello World} +Speichere den folgenden Text als \texttt{hello-world.c}: + +\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=hello-world.c]{c}{scripts/c/hello-world.c} + +Compiliere ihn mit \texttt{gcc hello-world.c}. Es wird eine ausführbare +Datei namens \texttt{a.out} erzeugt. \index{C|)} diff --git a/documents/Programmierparadigmen/Haskell.tex b/documents/Programmierparadigmen/Haskell.tex index c50eac6..864c6d4 100644 --- a/documents/Programmierparadigmen/Haskell.tex +++ b/documents/Programmierparadigmen/Haskell.tex @@ -1,5 +1,7 @@ \chapter{Haskell} \index{Haskell|(} +Haskell ist eine funktionale Programmiersprache. + \section{Syntax} \section{Beispiele} \inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=fibonacci.hs]{haskell}{scripts/haskell/fibonacci.hs} diff --git a/documents/Programmierparadigmen/MPI.tex b/documents/Programmierparadigmen/MPI.tex new file mode 100644 index 0000000..2a3f8ba --- /dev/null +++ b/documents/Programmierparadigmen/MPI.tex @@ -0,0 +1,12 @@ +\chapter{MPI} +\index{MPI|(} + +Message Passing Interface (kurz: MPI) ist ein Standard, +der den Nachrichtenaustausch bei parallelen Berechnungen auf +verteilten Computersystemen beschreibt. + +\section{Syntax} +\section{Beispiele} + +\index{MPI|)} + diff --git a/documents/Programmierparadigmen/Programmierparadigmen.tex b/documents/Programmierparadigmen/Programmierparadigmen.tex index 9ed9e14..5e86b6f 100644 --- a/documents/Programmierparadigmen/Programmierparadigmen.tex +++ b/documents/Programmierparadigmen/Programmierparadigmen.tex @@ -88,10 +88,12 @@ \pagenumbering{arabic} \setcounter{page}{1} +\input{Programmiersprachen} \input{Haskell} \input{Scala} \input{X10} \input{C} +\input{MPI} \appendix \input{Bildquellen} diff --git a/documents/Programmierparadigmen/Programmiersprachen.tex b/documents/Programmierparadigmen/Programmiersprachen.tex new file mode 100644 index 0000000..6933972 --- /dev/null +++ b/documents/Programmierparadigmen/Programmiersprachen.tex @@ -0,0 +1,42 @@ +\chapter{Programmiersprachen} +Im folgenden werden einige Begriffe definiert anhand derer +Programmiersprachen unterschieden werden können. + +\section{Paradigmen} +Die grundlegendste Art, wie man Programmiersprachen unterscheiden +kann ist das sog. \enquote{Programmierparadigma}, also die Art wie +man Probleme löst. + +\begin{definition}[Imperatives Paradigma]\xindex{Programmierung!imperative} + In der imperativen Programmierung betrachtet man Programme als + eine folge von Anweisungen, die vorgibt auf welche Art etwas + Schritt für Schritt gemacht werden soll. +\end{definition} + +\begin{definition}[Prozedurales Paradigma]\xindex{Programmierung!prozedurale} + Die prozeduralen Programmierung ist eine Erweiterung des imperativen + Programmierparadigmas, bei dem man versucht die Probleme in + kleinere Teilprobleme zu zerlegen. +\end{definition} + +\begin{definition}[Funktionales Paradigma]\xindex{Programmierung!funktionale} + In der funktionalen Programmierung baut man auf Funktionen und + ggf. Funktionen höherer Ordnung, die eine Aufgabe ohne Nebeneffekte + lösen. +\end{definition} + +\section{Typisierung} +Eine weitere Art, Programmiersprachen zu unterscheiden ist die stärke +ihrer Typisierung. + +\begin{definition}[Dynamische Typisierung]\xindex{Typisierung!dynamische} + Bei dynamisch typisierten Sprachen kann eine Variable ihren Typ ändern. +\end{definition} + +Beispiele sind Python und PHP. + +\begin{definition}[Statische Typisierung]\xindex{Typisierung!statische} + Bei statisch typisierten Sprachen kann eine niemals ihren Typ ändern. +\end{definition} + +Beispiele sind C, Haskell und Java. diff --git a/documents/Programmierparadigmen/Scala.tex b/documents/Programmierparadigmen/Scala.tex index a05b1ef..51cea71 100644 --- a/documents/Programmierparadigmen/Scala.tex +++ b/documents/Programmierparadigmen/Scala.tex @@ -1,5 +1,9 @@ \chapter{Scala} \index{Scala|(} + +Scala ist eine funktionale Programmiersprache, die auf der JVM aufbaut +und in Java Bytecode kompiliert wird. + \section{Syntax} \section{Beispiele} diff --git a/documents/Programmierparadigmen/scripts/c/hello-world.c b/documents/Programmierparadigmen/scripts/c/hello-world.c new file mode 100644 index 0000000..520fdfe --- /dev/null +++ b/documents/Programmierparadigmen/scripts/c/hello-world.c @@ -0,0 +1,7 @@ +#include + +int main(void) +{ + printf("Hello, World\n"); + return 0; +}