diff --git a/documents/Programmierparadigmen/C.tex b/documents/Programmierparadigmen/C.tex index 3a3fa47..26416d9 100644 --- a/documents/Programmierparadigmen/C.tex +++ b/documents/Programmierparadigmen/C.tex @@ -117,5 +117,9 @@ Speichere den folgenden Text als \texttt{hello-world.c}: Compiliere ihn mit \texttt{gcc hello-world.c}. Es wird eine ausführbare Datei namens \texttt{a.out} erzeugt. +\subsection{Pointer} +\inputminted[linenos, numbersep=5pt, tabsize=4]{c}{scripts/c/pointer.c} + +Die Ausgabe hier ist \texttt{0 3}. \index{C|)} diff --git a/documents/Programmierparadigmen/Haskell.tex b/documents/Programmierparadigmen/Haskell.tex index 7d6d233..1600da2 100644 --- a/documents/Programmierparadigmen/Haskell.tex +++ b/documents/Programmierparadigmen/Haskell.tex @@ -162,16 +162,16 @@ Ein paar Beispiele zur Typinferenz: \label{fig:haskell-type-hierarchy} \end{figure} -\subsection{type} +\subsection{type}\xindex{type}% Mit \texttt{type} können Typsynonyme erstellt werden: -\inputminted[linenos, numbersep=5pt, tabsize=4]{haskell}{scripts/haskell/alt-types.hs} +\inputminted[numbersep=5pt, tabsize=4]{haskell}{scripts/haskell/alt-types.hs} -\subsection{data} +\subsection{data}\xindex{data}% Mit dem Schlüsselwort \texttt{data} können algebraische Datentypen\xindex{Datentyp!algebraischer} erzeugt werden: - +\inputminted[numbersep=5pt, tabsize=4]{haskell}{scripts/haskell/data-example.hs} \section{Lazy Evaluation}\xindex{Lazy Evaluation} Haskell wertet Ausdrücke nur aus, wenn es nötig ist. diff --git a/documents/Programmierparadigmen/Programmierparadigmen.pdf b/documents/Programmierparadigmen/Programmierparadigmen.pdf index 7d49965..f07913c 100644 Binary files a/documents/Programmierparadigmen/Programmierparadigmen.pdf and b/documents/Programmierparadigmen/Programmierparadigmen.pdf differ diff --git a/documents/Programmierparadigmen/Scala.tex b/documents/Programmierparadigmen/Scala.tex index db7947c..b885638 100644 --- a/documents/Programmierparadigmen/Scala.tex +++ b/documents/Programmierparadigmen/Scala.tex @@ -46,6 +46,7 @@ einige Unterschiede. \item Java hat primitive Typen, Scala ausschließlich Objekte. \item Scala benötigt kein \texttt{;} am Ende von Anweisungen. \item Scala ist kompakter. + \item Java hat \texttt{static}, Scala hat \texttt{object} (Singleton) \end{itemize} } @@ -75,7 +76,20 @@ Listen können erstellt und durchgegangen werden: \inputminted[numbersep=5pt, tabsize=4]{scala}{scripts/scala/extended-for.scala} +\section{Companion Object}\xindex{Companion Object} +Ein Companion Object ist ein Objekt mit dem Namen einer Klasse oder eines Traits. +Im Gegensatz zu anderen Objekten / Traits hat das Companion Object zugriff auf +die Klasse. + +\section{actor}\xindex{actor} +actor dient der Concurrency. + \section{Beispiele} +\subsection{Wetter} +Das folgende Script sendet parallel Anfragen über verschiedene ZIP-Codes an +die Yahoo-Server, parst das XML und extrahiert die Stadt sowie die Temperatur: + +\inputminted[linenos, numbersep=5pt, tabsize=4, frame=lines, label=weather.scala]{scala}{scripts/scala/weather.scala} \section{Weitere Informationen} \begin{itemize} diff --git a/documents/Programmierparadigmen/scripts/c/pointer.c b/documents/Programmierparadigmen/scripts/c/pointer.c new file mode 100644 index 0000000..c18774b --- /dev/null +++ b/documents/Programmierparadigmen/scripts/c/pointer.c @@ -0,0 +1,8 @@ +#include + +int arr[] = {0,1,2,3,4,5}; + +int main() { + printf("%i %i", arr[0], (&arr[3])[0]); + return 0; +} \ No newline at end of file diff --git a/documents/Programmierparadigmen/scripts/haskell/alt-types.hs b/documents/Programmierparadigmen/scripts/haskell/alt-types.hs index 68fd7f0..832ec0a 100644 --- a/documents/Programmierparadigmen/scripts/haskell/alt-types.hs +++ b/documents/Programmierparadigmen/scripts/haskell/alt-types.hs @@ -1,4 +1,5 @@ type Prename = String type Age = Double type Person = (Prename, Age) -type Friends = [Person] \ No newline at end of file +type Friends = [Person] +type Polynom = [Double] \ No newline at end of file diff --git a/documents/Programmierparadigmen/scripts/haskell/data-example.hs b/documents/Programmierparadigmen/scripts/haskell/data-example.hs new file mode 100644 index 0000000..e7bbf46 --- /dev/null +++ b/documents/Programmierparadigmen/scripts/haskell/data-example.hs @@ -0,0 +1,4 @@ +data Bool = False | True +data Color = Red | Green | Blue | Indigo | Violet +data Tree a = Leaf a | Branch (Tree a) (Tree a) +data Point = Point Float Float deriving (Show) \ No newline at end of file diff --git a/documents/Programmierparadigmen/scripts/scala/weather.scala b/documents/Programmierparadigmen/scripts/scala/weather.scala new file mode 100644 index 0000000..6becef9 --- /dev/null +++ b/documents/Programmierparadigmen/scripts/scala/weather.scala @@ -0,0 +1,24 @@ +import scala.io._ +import scala.xml.{Source => Source2, _} +import scala.actors._ +import Actor._ + +def getWeatherInfo(woeid: String) = { + val url = "http://weather.yahooapis.com/forecastrss?w=" + woeid + val response = Source.fromURL(url).mkString + val xmlResponse = XML.loadString(response) + println(xmlResponse \\ "location" \\ "@city", + xmlResponse \\ "condition" \\ "@temp") +} + +val caller = self + +for(id <- 2391271 to 2391279) { + actor{ getWeatherInfo(id.toString) } +} + +for(id <- 2391271 to 2391279) { + receiveWithin(5000) { + case msg => println(msg) + } +} \ No newline at end of file