<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Milan</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Milan"/>
	<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/Spezial:Beitr%C3%A4ge/Milan"/>
	<updated>2026-05-08T13:57:12Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=E-Mail&amp;diff=25366</id>
		<title>E-Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=E-Mail&amp;diff=25366"/>
		<updated>2024-03-12T15:50:10Z</updated>

		<summary type="html">&lt;p&gt;Milan: bruh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{veraltet}}&lt;br /&gt;
Diese Seite hilft euch, eure TU-Mailadresse (deinName@mailbox.tu-berlin.de bzw. vorname.nachname@campus.tu-berlin.de), die von der [[TubIT]] bereitgestellt wird, sowie eure E-Mail-Adresse (deinName@cs.tu-berlin.de) im [[Informatik-Rechnerbetrieb|CS-Netz]] auch von zu Hause aus zu nutzen.&lt;br /&gt;
&lt;br /&gt;
Bei beiden handelt es sich aus historischen Gründen um verschiedene Mailboxen. Er ist empfehlenswert einfach alle mails der CS-Adresse an den tubit-Account weiterzuleiten.&lt;br /&gt;
&lt;br /&gt;
'''Achtung: ''' E-mails an eure TU-Adresse gelten als zugegangen, d.h. beispielsweise bei Änderung eines Prüfungstermins gilt ein &amp;quot;Hab ich nicht gelesen&amp;quot; nicht als Ausrede. Ihr solltet also eure TU-Mails auf jeden Fall regelmäßig lesen!&lt;br /&gt;
&lt;br /&gt;
== Webfrontend ==&lt;br /&gt;
&lt;br /&gt;
Ihr spart euch die ganze Arbeit euren Mailclient konfigurieren zu müssen, wenn ihr einfach das vom [[IRB]] zur Verfügung gestellte [https://mail.cs.tu-berlin.de/mail/ Webinterface] benutzt. Für die neuen reinen TubIT-Accounts ist Webmail über [https://webmail.tu-berlin.de https://webmail.tu-berlin.de] zu benutzen.&lt;br /&gt;
&lt;br /&gt;
== Mailclient ==&lt;br /&gt;
&lt;br /&gt;
Da aber manche Menschen einen richtigen Client vorziehen und das Frontend auch etwas unkomfortabel zu bedienen ist, folgen in den weiteren Abschnitten die Informationen, wie man zu Hause einen Mailclienten wie zum Beispiel KMail, Thunderbird, The Bat! oder auch Outlook einrichten kann.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen: [http://www.eecs.tu-berlin.de/irb/v-menu/dienste_irb-login/e-mail/e-mail_dienste/ IRB Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Das IRB-Webinterface: [https://mail.cs.tu-berlin.de:4430/src/login.php https://mail.cs.tu-berlin.de:4430/src/login.php] bzw. &lt;br /&gt;
Tubit: [https://webmail.tu-berlin.de https://webmail.tu-berlin.de]&lt;br /&gt;
&lt;br /&gt;
=== Emails empfangen ===&lt;br /&gt;
&lt;br /&gt;
Das Abrufen eurer Emails erfolgt ausschließlich per [https://secure.wikimedia.org/wikipedia/de/wiki/IMAP IMAP] oder Webmail. Gegenüber POP3 ist IMAP vorzuziehen, da es die modernere und flexiblere  Methode ist. Ausserdem bleiben bei IMAP die Emails in der Regel auf dem Server, so dass ihr auch per Webmail auf die Emails zugreifen könnt, wenn ihr euren Rechner mal nicht dabei habt. (Kann man im Client umstellen, wenn man möchte.)&lt;br /&gt;
&lt;br /&gt;
Zum 30.06.2011 wurde der POP3-Dienst offiziell eingestellt. Der Abruf von E-Mails ist nur noch über den IMAP-Dienst (IMAPS) oder per Webmail möglich. Anleitungen zum Umstellen und weitere Infos unter http://www.tubit.tu-berlin.de/menue/dienste/internet/e-mail/der_e-mail_service/ &amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IMAP ====&lt;br /&gt;
&lt;br /&gt;
Um einen IMAP Zugang zu konfigurieren, braucht ihr die folgenden Informationen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;mit Tubit-Account:&amp;lt;/strong&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|Server: || mailbox.tu-berlin.de&lt;br /&gt;
|-&lt;br /&gt;
|Port: || 993&lt;br /&gt;
|-&lt;br /&gt;
|Verschlüsselung: || SSL&lt;br /&gt;
|-&lt;br /&gt;
|Authentifizierung || Passwort, normal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;mit altem IRB-Account:&amp;lt;/strong&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|Server: || mail.cs.tu-berlin.de&lt;br /&gt;
|-&lt;br /&gt;
|Port: || 993&lt;br /&gt;
|-&lt;br /&gt;
|Verschlüsselung: || SSL&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen ist 'sichere Authentifizierung' zu deaktivieren, da die Verbindung als solche schon verschlüsselt ist und es nicht funktionieren kann, da die Passwörter auf Serverseite nicht im Klartext vorliegen - was dazu aber Vorraussetzung ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tragt diese Informationen in euer Email-Programm ein und der Empfang sollte funktionieren. Wenn ihr dabei Probleme habt, könnt ihr gerne jemanden von [[Mitglieder_der_Freitagsrunde|uns]] ansprechen.&lt;br /&gt;
&lt;br /&gt;
Auch hier gilt wieder: &amp;lt;strike&amp;gt; Das SSL-Zertifikat wurde von der TU selbst signiert, die Warnung kann ignoriert werden&amp;lt;/strike&amp;gt; Es sollte das DFN oder TU-Root-Zertifikat importiert werden: [http://www.tubit.tu-berlin.de/trustcenter/home/ Trustcenter der TUB.]&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen: siehe [http://www.eecs.tu-berlin.de/irb/v-menu/dienste_irb-login/e-mail/e-mail_dienste/ IRB Dokumentation]&lt;br /&gt;
&lt;br /&gt;
=== Emails versenden ===&lt;br /&gt;
&lt;br /&gt;
Mit einem tubit-Account funktioniert das mit folgenden Daten:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|Server: || mailbox.tu-berlin.de&lt;br /&gt;
|-&lt;br /&gt;
|Port: || 465&lt;br /&gt;
|-&lt;br /&gt;
|Verschlüsselung: || SSL&lt;br /&gt;
|-&lt;br /&gt;
|SMTP-Auth (PLAIN oder LOGIN)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Auch hier gilt wieder: Das SSL-Zertifikat wurde von der TU selbst signiert, &amp;lt;strike&amp;gt;die Warnung kann ignoriert werden&amp;lt;/strike&amp;gt; importiert das DFN-Zertifikat. 'Sichere Authentifizierung' muss abgeschaltet werden, da dies auf den ersten Blick unlogischerweise das vorliegen der Passwörter im Klartext auf den Servern der TU erfordern würde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Überleben im Fakultätsnetz]]&lt;br /&gt;
[[Kategorie: Fakultäts-ABC]]&lt;br /&gt;
&lt;br /&gt;
== Häufige Probleme ==&lt;br /&gt;
=== Telekom-Kunde ===&lt;br /&gt;
[[Datei:Telekomnutzer.png|thumb|Webinterface]]&lt;br /&gt;
&lt;br /&gt;
Da die Mailserver der TU-Berlin als nicht vertrauenswürdig eingestuft sind, müssen diese per Hand im Router freigegeben werden. Dazu muss lediglich die Adresse des SMTP-Maileingangsservers im Webinterface freigeschaltet werden. Die Logindaten findet ihr auf der Rückseite eures Routers.&lt;br /&gt;
&lt;br /&gt;
=== SpamAssassin ===&lt;br /&gt;
Aus irgendeinem Grund hat der SpamAssassin des IRB (mail.cs nicht mailbox) ein Problem damit, wenn man seine eigene IP Adresse beim HELO angibt,&lt;br /&gt;
anstelle von cs.tu-berlin.de&lt;br /&gt;
Da es aber [http://cr.yp.to/smtp/helo.html Standard] sein sollte, seinen SMTP Server nicht zu belügen,&lt;br /&gt;
braucht man sich nicht wundern, wenn alle eigenen EMails bei den Empfängern als Spam markiert verenden.&lt;br /&gt;
Der IRB kommentiert die Angabe einer dynamischen IP bei HELO übrigens mit &amp;quot;gefälscht&amp;quot; und &amp;quot;verdächtig&amp;quot;.&lt;br /&gt;
Klingt komisch, ist aber so.&lt;br /&gt;
&lt;br /&gt;
Christoph&lt;br /&gt;
&lt;br /&gt;
=== Versand wird abgelehnt ===&lt;br /&gt;
Wenn beim Mailversand via SMTP die Mail mit dem Fehler&lt;br /&gt;
 5.7.1&amp;lt;a.b@c.de&amp;gt;: Recipient Adress rejected: Access denied&lt;br /&gt;
abgelehnt wird, dann liegt das daran, dass ihr vergesen habt, euch gegenüber dem Mailserver zu authentisieren.&lt;br /&gt;
 &lt;br /&gt;
Ihr müsst dafür bei den Verbindungseinstellungen für den TLS-Versand euer CS-Login und Passwort angeben. Siehe Screenshots auf der IRB-Seite [http://www.eecs.tu-berlin.de/irb/v-menu/dienste_irb-login/e-mail/e-mail_dienste/].&lt;br /&gt;
&lt;br /&gt;
=== Mail-Client auf Handys ===&lt;br /&gt;
Bei vielen Handys mit E-Mail-Clients und SSL Unterstützung ist die Liste der Stammzertifikate recht klein. Die Folge bei mir (Sony Ericsson K300i) war, dass ich immer die Nachricht &amp;quot;Ungültiges Zertifikat&amp;quot; bekam. Wenn ihr neue Zertifikate hinzufügen könnt, so solltet ihr Versuchen das Zertifikat &amp;quot;Root 5 - Equifax Secure Global eBusiness CA-1&amp;quot; von der Seite http://www.geotrust.com/resources/root_certificates/index.asp zu installieren. Bei mir ging es dann danach :)&lt;br /&gt;
&lt;br /&gt;
Zusatzbemerkung: Ich musste das DER-Zertifikat nehmen und dieses zunächst herunterladen, die Endung von *.cer nach *.der verändern, damit dieses als ein DER-Zertifikat vom Handy erkannt wurde, diese Datei dann wieder auf einen Server laden und mit dem Browser in meinem Handy herunterladen. Das wird jedoch Sony Ericsson Handy spezifisch sein... Genauso wie der Umstand, dass ich zusätzlich SMTP-Benutzer und Passwort nochmal angeben musste, obwohl diese identisch mit denen vom Empfangsserver sind (und dies nach der Hilfe auf dem Handy in diesem Fall angeblich nicht nötig sein soll). Vermutlich benutzt der Mail-Client der SE-Handys erst dann SMTP-Auth. Nun funktioniert aber wirklich alles ;)&lt;br /&gt;
&lt;br /&gt;
Jan Saputra&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;550-Diese Mail wurde nicht ausgeliefert&amp;quot; ===&lt;br /&gt;
Wer an eine (oder mehrere) tu-berlin.de Addressen im ''CC:'' schreibt und das z.B. vom IRB aus, dem kann es passieren das die mails abgelehnt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;name@mailbox.tu-berlin.de&amp;gt;: host mail.tu-berlin.de[130.149.7.33]&lt;br /&gt;
    said: 550-Diese Mail wurde nicht ausgeliefert, weil die&lt;br /&gt;
    SPAM-Wahrscheinlichkeit 550 95% betraegt. Fuer Hilfe wenden Sie sich bitte&lt;br /&gt;
    an Postmaster@TU-Berlin.DE. (in reply to end of DATA command)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loesung:&lt;br /&gt;
* tu-berlin.de-User direkt ins ''An:'' Feld nehmen&lt;br /&gt;
* Bisschen warten und nochmal schicken ''(ungeprueft.. aber ich kann diesen 550-SPAM nicht reproduzieren.. vllt. passierts nur wenn die Message-ID ne Primzahl ist *ironie* )''&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=CVS&amp;diff=25365</id>
		<title>CVS</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=CVS&amp;diff=25365"/>
		<updated>2024-03-12T15:37:53Z</updated>

		<summary type="html">&lt;p&gt;Milan: vgl. https://de.wikipedia.org/wiki/Concurrent_Versions_System&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{veraltet}}&lt;br /&gt;
CVS ist die Abkürzung für '''Concurrent Versions System'''. Es dient der &lt;br /&gt;
Verwaltung von Dokumenten mit kompletter Änderungshistorie. Dokumente &lt;br /&gt;
sind dabei meist Quellcode.&lt;br /&gt;
&lt;br /&gt;
Mehr über CVS siehe [http://de.wikipedia.org/wiki/Concurrent_Versions_System Wikipedia]&lt;br /&gt;
&lt;br /&gt;
== CVS im Fakultätsnetz ==&lt;br /&gt;
&lt;br /&gt;
Ein CVS-Repository kann theoretisch jeder Benutzer in einem Verzeichnis&lt;br /&gt;
seines Homedirectories anlegen.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: '''$CVSREPO''' soll hier ein Verzeichnisname sein, in dem das Repository liegen soll, z.B.:  CVSREPO=&amp;quot;Sem6_VerteilteSysteme&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 mkdir ~/'''$CVSREPO'''&lt;br /&gt;
 cvs -d ~/'''$CVSREPO''' init&lt;br /&gt;
&lt;br /&gt;
Will man das Repository mit einer Arbeitsgruppe teilen, empfiehlt es sich&lt;br /&gt;
eine eigenen UNIX-Gruppe im CS-Netz anzulegen, man muss dann dieser Gruppe&lt;br /&gt;
Leserechte und Schreibrechte für das Repository-Verzeichnis geben und das Gruppen-Sticky-Bit (chmod g+s) für das Verzeichnis setzen, bevor man das Repository initialisiert.&lt;br /&gt;
&lt;br /&gt;
Leider gibt es bei der Sache einen Haken:&lt;br /&gt;
&lt;br /&gt;
Das cvs-Programm ruft auf den Servern die Funktion getcwd() auf. Diese&lt;br /&gt;
schlägt unter Solaris aber offenbar fehl, wenn irgendein Teil des Pfades&lt;br /&gt;
nicht lesbar ist. Das bedeutet, dass Ihr allen Gruppen, die auf&lt;br /&gt;
Euer Repository zugreifen wollen Leserechte für Euer Homeverzeichnis&lt;br /&gt;
geben müsst . (im Zweifel also all...)&lt;br /&gt;
&lt;br /&gt;
 chmod 755 '''$HOME'''&lt;br /&gt;
&lt;br /&gt;
Auf jeden Fall sollte man das sticky-bit auf das Repository-Verzeichnis setzen,&lt;br /&gt;
damit dor von den anderen Gruppenmitgliedern angelegt Dateien auch der Gruppe&lt;br /&gt;
gehören...&lt;br /&gt;
&lt;br /&gt;
 chmod 2770 ~/'''$CVSREPO'''&lt;br /&gt;
&lt;br /&gt;
Diese Probleme (und eine Reihe anderer) treten bei der Nutzung von [[Subversion]] (svn) nicht auf!&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Opal_FAQ&amp;diff=25364</id>
		<title>Opal FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Opal_FAQ&amp;diff=25364"/>
		<updated>2024-03-12T15:27:31Z</updated>

		<summary type="html">&lt;p&gt;Milan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{historisch}}&lt;br /&gt;
Vor noch nicht allzu langer Zeit, an einem nicht allzu weit entfernten Ort wurden einst alle Studis von einer schweren Programmiersprache dahingerafft ...&lt;br /&gt;
&lt;br /&gt;
Aber nein! Nicht alle!&lt;br /&gt;
&lt;br /&gt;
Eine kleine Gruppe unermüdlich lernender Studenten widersetzten sich dem Bösen, wild entschlossen diesem Missstand ein ende zu bereiten, setzten sie sich zusammen und schrien &amp;quot;[https://secure.wikimedia.org/wikipedia/de/wiki/FAQ FAQ]-[[Opal]]&amp;quot; gen Himmel...&lt;br /&gt;
&lt;br /&gt;
Nun ja, mehr spare ich mir hier, auf jeden Fall haben &amp;quot;damals&amp;quot; jede menge Leute in der Newsgroup informatik1 (bln.lv.tub.cs.informatik1) gepostet und sehr wertvolle Tips und Tricks zusammengetragen. Diese sind hier aufgeführt mit der ausdrücklichen Bitte, sie zu ergänzen.&lt;br /&gt;
&lt;br /&gt;
Eine weitere (zum Großteil englische) Informationsquelle sind die [http://projects.uebb.tu-berlin.de/opal/trac/wiki/Documentation offiziellen Dokumentationen]. Außerdem gibt es seit 2012 Bestrebungen eine Web-Umgebung für OPAL zu entwickeln. Wer diese nutzen möchte, findet sie unter: http://opal.gehaxelt.in/, auch Entwickler sind herzlich willkommen: https://github.com/gehaxelt/PHP-Webopal/.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Wie sieht eine OPAL-Struktur aus?==&lt;br /&gt;
===Minimalbeispiel für eine OPAL-Struktur===&lt;br /&gt;
Na gut, es ginge noch kleiner, aber an diesem Beispiel kann man mehr erklären.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SIGNATURE MeineStruktur&lt;br /&gt;
IMPORT Nat ONLY nat&lt;br /&gt;
&lt;br /&gt;
FUN meinPlus : nat ** nat -&amp;gt; nat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für die Signatur (MeineStruktur.sign) und&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMPLEMENTATION MeineStruktur&lt;br /&gt;
IMPORT Nat COMPLETELY&lt;br /&gt;
&lt;br /&gt;
FUN meinPlus : nat ** nat -&amp;gt; nat&lt;br /&gt;
DEF meinPlus(a,b) == a + b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
für die Implementierung (MeineStruktur.impl)&lt;br /&gt;
&lt;br /&gt;
Zuallererst: Der Dateinname (ohne Endung), also der Name der Struktur, muss in der Schreibung exakt mit dem Namen der Signatur (hinter &amp;lt;code&amp;gt;SIGNATURE&amp;lt;/code&amp;gt;) und der Implementierung (hinter &amp;lt;code&amp;gt;IMPLEMENTATION&amp;lt;/code&amp;gt;) übereinstimmen und darf keine Leerzeichen oder Sonderzeichen enthalten. Nach Übereinkunft werden Strukturnamen mit großem Anfangsbuchstaben geschrieben.&lt;br /&gt;
&lt;br /&gt;
Als nächster Begriff taucht in beiden Dateien &amp;lt;code&amp;gt;IMPORT&amp;lt;/code&amp;gt; auf. Hiermit werden andere Strukturen eingebunden. Diese müssen sich entweder im selben Verzeichnis befinden, oder zu OPAL gehören. Darauf folgt der Name der Struktur (im Beispiel Nat für die natürlichen Zahlen). In der Signatur folgt nun der Begriff &amp;lt;code&amp;gt;ONLY&amp;lt;/code&amp;gt;. Damit sagt man, dass man nur bestimmte Teile der Struktur benötigt, im Beispiel &amp;lt;code&amp;gt;nat&amp;lt;/code&amp;gt; (dies ist die Sorte der natürlichen Zahlen). Was man benötigt ist, in der Signatur, gewöhnlich nur das, was nach dem &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; steht, ohne die Zeichen &amp;lt;code&amp;gt;**&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;-&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In der &amp;lt;code&amp;gt;IMPLEMENTATION&amp;lt;/code&amp;gt; sieht der Import etwas anders aus: hier wird &amp;lt;code&amp;gt;COMPLETELY&amp;lt;/code&amp;gt; benutzt. &amp;lt;code&amp;gt;COMPLETELY&amp;lt;/code&amp;gt; bedeutet, dass alles aus der Struktur in importiert wird, in diesem Fall also die Zahlen, Funktionen für Addition und Multiplikation und noch eine ganze Menge mehr (man könnte auch &amp;lt;code&amp;gt;ONLY&amp;lt;/code&amp;gt; benutzen, aber dann müsste man &amp;lt;strong&amp;gt;jede&amp;lt;/strong&amp;gt; Funktion, Zahl, usw. hinter dem &amp;lt;code&amp;gt;ONLY&amp;lt;/code&amp;gt; notieren). Was nun folgt ist in beiden Dateien wieder das gleiche:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN meinPlus : nat ** nat -&amp;gt; nat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hiermit wird eine Funktion &amp;lt;strong&amp;gt;deklariert&amp;lt;/strong&amp;gt;, das Schlüsselwort &amp;lt;code&amp;gt;FUN&amp;lt;/code&amp;gt; bedeutet, dass an dieser Stelle eine Funktion angekündigt wird. Danach folgt der Name der Funktion (in diesem Fall meinPlus), nach dem Doppelpunkt folgt die Abbildung. Dies Funktion bildet zwei natürlichen Zahlen (&amp;lt;code&amp;gt;nat&amp;lt;/code&amp;gt;) auf eine natürliche Zahl ab. Einfacher: die Funktion nimmt zwei Eingabewerte an und gibt einen Wert zurück und alle Werte haben denselben Typ. D.h. es dürfen nur (in diesem Fall) nur Zahlen angegeben werden.&lt;br /&gt;
&lt;br /&gt;
Hier endet die Signatur bereits, denn sie dient nur dazu anderen Strukturen zu zeigen was in der Struktur enthalten ist. Ähnlich einem Taschenrecher: aus der Taste seht ihr das Pluszeichen und wisst: dieser Taschenrechner kann addieren. Was ihr nicht wisst, ist &amp;lt;strong&amp;gt;wie&amp;lt;/strong&amp;gt; intern addiert wird. Bei OPAL steht das in der Implementierung nach dem Begriff &amp;lt;code&amp;gt;DEF&amp;lt;/code&amp;gt; für Definition.&lt;br /&gt;
&lt;br /&gt;
===Wie sieht ein Funktions-Deklaration in OPAL aus?===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN funktion : ausgabe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für eine konstante Funktion. Diese Funktion wird aufgerufen und gibt immer den selben Wert zurück. In OPAL bspw. die Funktion pi, sie gibt immer (näherungsweise) Pi zurück.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN funktion : eingabe -&amp;gt; ausgabe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für eine Funktion, die zu einem Wert übergeben bekommt und einen Wert zurück gibt. In OPAL bspw. die Funktion &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; sie erhält einen Wahrheitswert und negiert diesen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN funktion : eingabe1 ** eingabe2 -&amp;gt; ausgabe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für eine Funktion, die zwei Werte annimmt (ein Tupel) und daraus einen Wert macht. Beispiele in OPAL sind: &amp;lt;code&amp;gt;+,-,*&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN funktion : eingabe -&amp;gt; ausgabe1 ** ausgabe2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für eine Funktion, die einen Wert erhält und ein Tupel zurück gibt. Eine solche Funktion könnte bei einem benannten Punkt als Eingabe, die Koordinaten als Tupel zurück geben.&lt;br /&gt;
&lt;br /&gt;
Vor bzw. nach dem &amp;lt;code&amp;gt;-&amp;gt;&amp;lt;/code&amp;gt; können beliebig viele Eingaben bzw. Ausgabe notiert werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN funktion: eingabe1 ** eingabe2 ** eingabe3 -&amp;gt; ausgabe1 ** ausgabe2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies Funktion macht aus einem Tripel ein Tupel.&lt;br /&gt;
&lt;br /&gt;
==Wie sieht ein Kommentar in OPAL aus?==&lt;br /&gt;
===Warum überhaupt Kommentare?===&lt;br /&gt;
Selbst geübte Programmierer wissen bei bestimmten Quelltexten nicht sofort, was sie bedeuten. Das einfachste Mittel um diesen Missstand auszuräumen ist die Nutzung von Kommentaren. Es gehört zum guten Stil seine Projekte angemessen zu kommentieren, außerdem sind Kommentare ein gute Gedächtnisstütze.&lt;br /&gt;
===Wie sieht ein Kommentar in OPAL aus?===&lt;br /&gt;
In OPAL gibt es zwei Arten von Kommentaren: einzeilige Kommentare und mehrzeilige:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Ich bin ein Kommentar.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Einzeilige Kommentare beginnen mit der Zeichenkombination &amp;lt;code&amp;gt;--&amp;lt;/code&amp;gt;, danach &amp;lt;strong&amp;gt;muss&amp;lt;/strong&amp;gt; ein Leerzeichen folgen. Nach diesem Zeichen wird alles bis zum Ende der Zeile als Kommentar gewertet uns nicht weiter interpretiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Ich bin ein&lt;br /&gt;
mehrzeiliger Kommentar&lt;br /&gt;
  /* P.S. Mich kann man verschachteln */&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ein mehrzeiliger Kommentar beginnt mit der Zeichenfolge &amp;lt;code&amp;gt;/*&amp;lt;/code&amp;gt; (hier muss nicht zwingend danach ein Leerzeichen gesetzt werden). Danach wird alles, was bis zur Zeichenfolge &amp;lt;code&amp;gt;*/&amp;lt;/code&amp;gt; geschrieben wurde nicht weiter Interpretiert. Diese Kommentare eignen sich für längere Texte (z.B. Urhebervermerke, Lizenzen) und zum auskommentieren von unfertigem Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF test(&amp;lt;&amp;gt;) == &amp;lt;&amp;gt;&lt;br /&gt;
/* Hier ist irgendwo ein Fehler&lt;br /&gt;
DEF test(a::A) == IF a &amp;gt; 5 THEN a::&amp;lt;&amp;gt;&lt;br /&gt;
                  ELSE test(A)&lt;br /&gt;
                      &amp;lt;-- fehlt da was?&lt;br /&gt;
*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der vorige Quelltext ist fehlerhaft und würde deshalb nicht ausgeführt werden. Die fehlerhafte Stelle wurde auskommentiert, um das Programm ausführbar zu machen (außerdem wurde zusätzlicher Text vermerkt). D.h. ein Kommentar darf auch Schlüsselwörter enthalten, diese werden aber nicht beachtet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF funktion(a,b) == IF a = b -- THEN c&lt;br /&gt;
                     ELSE d&lt;br /&gt;
                     FI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Funktion würde zu einem Fehler führen, denn das &amp;lt;code&amp;gt;THEN&amp;lt;/code&amp;gt; würde nicht mehr interpretiert werden, weil ein Kommentarzeichen davor steht.&lt;br /&gt;
&lt;br /&gt;
== Wie konstruiert man eine Liste? ==&lt;br /&gt;
Herzlichen dank für diesen Beitrag an Florian Lorenzen .&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Man kann dann viele aussagekräftige Beispiele mit :: und &amp;lt;&amp;gt;&lt;br /&gt;
&amp;gt; angeben (seq, seq[seq], leere seq usw.)&lt;br /&gt;
&lt;br /&gt;
Da ich, wie ich fürchte, mit diesem unsäglichen % angefangen habe -- nicht ahnend welchen didaktischen Flurschaden ich damit anrichten würde -- hier zum Ausgleich einige erklärende Beispiele mit den Listenkonstruktoren.&lt;br /&gt;
&lt;br /&gt;
1. Sei S eine Sequenz aus alphas (FUN S : seq[alpha]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == a :: b :: c :: d :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S ist eine Sequenz aus a, b, c, d und der leeren Liste. Da :: &lt;br /&gt;
rechtsassoziativ ist, wird der obige Ausdruck wie folgt aufgelöst:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~~~&amp;gt; a :: (b :: (c :: (d :: &amp;lt;&amp;gt;)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird also zunächst eine Liste aus d und &amp;lt;&amp;gt; konstruiert, vor die dann c gehängt wird. Die rekursive Struktur der Liste &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Liste := Element :: Liste&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ist deutlich.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S ist eine leere Liste.&lt;br /&gt;
&lt;br /&gt;
Bei langen Elementen kann die Liste der Übersicht halber ohne weiteres auch umgebrochen werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;quot;laaaaaaaaaaaaaaaaaaaaaaaaaaange Wortguppe&amp;quot; :: &amp;quot;nicht ganz so lange Wortgruppe&amp;quot; :: &amp;quot;etwas kürzere Wortgruppe&amp;quot; :: &amp;quot;noch kürzere Wortgr&amp;quot; :: &amp;quot;noch k&amp;quot; :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
vs.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;quot;laaaaaaaaaaaaaaaaaaaaaaaaaaange Wortguppe&amp;quot;&lt;br /&gt;
:: &amp;quot;nicht ganz so lange Wortgruppe&amp;quot;&lt;br /&gt;
:: &amp;quot;etwas kuerzere Wortgruppe&amp;quot;&lt;br /&gt;
:: &amp;quot;noch kuerzere Wortgr&amp;quot;&lt;br /&gt;
:: &amp;quot;noch k&amp;quot;&lt;br /&gt;
::  &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Sei S eine Sequenz von Sequenzen von alphas (FUN S : seq[seq[alpha]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == (a :: b :: c :: &amp;lt;&amp;gt;) :: (d :: e :: &amp;lt;&amp;gt;) :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Ausdruck wird wie folgt aufgelöst:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~~~&amp;gt; (a :: b :: c :: &amp;lt;&amp;gt;) :: ((d :: e :: &amp;lt;&amp;gt;) :: &amp;lt;&amp;gt;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird also zuerst eine Liste aus dem (d :: e :: &amp;lt;&amp;gt;) und &amp;lt;&amp;gt; kostruiert, vor die dann das Element (a :: b :: c :: &amp;lt;&amp;gt;) gehängt wird. Das die beiden erwähnten Elemente wiederum Listen sind, ändert nichts daran, wie die äußere Sequenz konstruiert wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == (a :: b :: c :: &amp;lt;&amp;gt;) :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S ist eine Liste mit gerade genau einem Element, das wiederum eine Liste ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S ist eine Liste, die aus zwei leeren Listen besteht, nicht aus dreien, wie es zuerst scheint. Dies wird wiederum deutlich, wenn der Ausdruck aufgelöst wird:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~~~&amp;gt; &amp;lt;&amp;gt; :: (&amp;lt;&amp;gt; :: &amp;lt;&amp;gt;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Klammer wird aus dem Listenelement &amp;quot;&amp;lt;&amp;gt;&amp;quot; durch &amp;quot;:: &amp;lt;&amp;gt;&amp;quot; eine Liste erzeugt, vor die dann das Element &amp;quot;&amp;lt;&amp;gt;&amp;quot; gehängt wird. dass die beiden Elemente der Liste nun leere Listen (dass es Listen seien müssen, ist sowieso klar) sind, ändert nichts daran, wie die äußere Liste konstruiert wird. Man beachte, dass die enstandene Liste nicht leer ist, dass also aus vielen leeren Listen eine nicht-leere Liste entstehen kann.&lt;br /&gt;
&lt;br /&gt;
Eine Liste aus drei leeren Listen sieht dann dementsprechend folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Liste aus einer leeren Liste so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erst die Definition&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF S == &amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
erzeugt eine Liste von Listen, die wirklich leer ist.&lt;br /&gt;
&lt;br /&gt;
Programmierpraktisch sollte beachtet werden, dass&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; oder S == &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: &amp;lt;&amp;gt; :: ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nicht durch &amp;lt;&amp;gt;?(S) oder das Muster f(&amp;lt;&amp;gt;) angefangen werden kann, da S eindeutig nicht leer ist.&lt;br /&gt;
&lt;br /&gt;
== Benutzung des Interpreters oasys ==&lt;br /&gt;
&lt;br /&gt;
=== Starten von oasys, Ausführen von Programmen ===&lt;br /&gt;
Der OPAL-Interpreter &amp;lt;strong&amp;gt;oasys&amp;lt;/strong&amp;gt; lässt sich von der Shell (auch Terminal oder Konsole) aus starten mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oasys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Um den Interpreter zu verlassen gibt man im Interpreter ein q für Quit ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; q&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hat man nun seine Dateien erstellt (z.B. Aufgabe1.impl und Aufgabe1.sign), muss man diese Dateien zuerst laden. Dafür muss man oasys in dem Verzeichnis starten, in dem die Dateien gespeichert sind. In welchem Verzeichnis ihr euch momentan befindet, erkennt ihr (meistens) an dem Verspann der Konsole.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@opalix ~/MPGI1/HA1/ $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dieser Nutzer befindet sich, ausgehend von seinem Benutzerverzeichnis, im Verzeichnis MPGI1/HA/. Welche Dateien und Ordner sich noch in diesem Verzeichnis befinden, kann man mit dem Befehl &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; herrausfinden. Mir dem Befehl &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; kann das Verzeichnis gewechselt werden (in das übergeordnete Verzeichnis gelangt man bspw. mit der Angabe &amp;lt;code&amp;gt;cd ..&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@opalix ~/MPGI1/HA1/ $ cd ..&lt;br /&gt;
user@opalix ~/MPGI1/ $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also wechselt in das Verzeichnis wo sich die Dateien Aufgabe1.impl und Aufgabe1.sign beispielsweise befinden und starten von dort aus auf der shell den OPAL-Interpreter oasys. Wenn ihr oasys gestartet habt, könnt ihr das Verzeichnis nur wechseln, wenn ihr oasys vorher beendet (mit dem Befehl &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;), es ist jedoch ohne Probleme möglich eine weitere Shell zu öffnet und dort oasys in einem anderen Verzeichnis zu starten.&lt;br /&gt;
&lt;br /&gt;
Als nächstes müssen die Dateien dem Interpreter zur Verfügung gestellt werden. Mit dem Interpreter-Befehl a (append file = Datei anfügen) lassen sich Dateien in den Interpreter laden. Dabei gibt man nur den Dateinamen ohne die Dateiendung an (bei langen Namen kann die &amp;lt;code&amp;gt;Tab&amp;lt;/code&amp;gt;-Taste zur automatischen Vervollständigung genutzt werden, der Punkt am Ende ist egal).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; a Aufgabe1&lt;br /&gt;
loading Aufgabe1.impl&lt;br /&gt;
loading Aufgabe1.sign&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn die Dateien erfolgreich geladen wurden wird das wie hier in dem Beispiel gezeigt quittiert. Außerdem erstellt oasys ein Verzeichis namens OCS.&lt;br /&gt;
&lt;br /&gt;
Für oasys ist es notwendig, dass man zunächst den Fokus auf eine spezielle Datei legt. Dies erreicht man mit dem Befehl f (f für set focus). Wenn man die impl-Datei fokussiert, kann man auf alle Funktionen zugreifen die in dort implementiert wurden. So kann man aber unter Umständen vergessen eine vernüftige Signature (sign-Datei) zu schreiben und eine entsprechende Kapselung vorzunehmen (wichtig sobald mit mehr als einem Modul gearbeitet wird). Es ist gut sinnvolle Kapselung gleich mit zu lernen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; f Aufgabe1.impl&lt;br /&gt;
Aufgabe1.impl&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
oder: um zu testen welche Funktionen von außen erreichbar sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; f Aufgabe1.sign&lt;br /&gt;
Aufgabe1.sign&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn das Fokussieren funktioniert hat, verändert sich eure Eingabe wie im Beispiel angegeben.&lt;br /&gt;
Um Funktionen auszuführen befehligt man oasys mit dem Befehl e (e für evaluate). Dabei wird aus der fokussierten Datei eine Funktion mit den Parametern die ihr in der Signatur festgelegt habt ausgewertet. Um diese vielen Begriffe zu verdeutlichen gehen wir mal davon aus, dass wir in der Datei eine Funktion add implementiert haben die zwei ganze Zahlen addiert. Diese Funktion ruft man dann so auf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Aufgabe1.impl&amp;gt;e add(1,2)&lt;br /&gt;
starting evaluator process&lt;br /&gt;
3&lt;br /&gt;
Aufgabe1.impl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Eingabe von Zahlen, Denotations (Strings), Sequenzen und einzelne Buchstaben (Chars) ===&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; e funktionMitVielenArgumenten(&amp;quot;lkajbblsd&amp;quot;, &amp;quot;627849&amp;quot;!, 30,&amp;quot;c&amp;quot;!, %(1,23,9,1,8))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung: Das erste Argument ist eine Denotation, d.h. einfach ein String. &lt;br /&gt;
Die muss man einfach immer in Anführungszeichen setzen. :)&lt;br /&gt;
&lt;br /&gt;
Das zweite ist  eine Zahl. Da sie größer als 32 ist muss man sie als String hinschreiben (Anführungszeichen), den man dann mit dem Operator &amp;quot;!&amp;quot; in eine Zahl umwandeln kann.&lt;br /&gt;
&lt;br /&gt;
Das dritte ist eine kleinere Zahl als 32, daher kann man sie direkt hinschreiben.&lt;br /&gt;
&lt;br /&gt;
Das vierte ist ein Char, also ein einfacher Buchstabe. Da man das nicht direkt eingeben kann übergibt man Opal wieder einen String und wandelt ihn (da er nur einen Buchstaben enthält) mit dem &amp;quot;!&amp;quot; in einen Char um.&lt;br /&gt;
&lt;br /&gt;
Das fünfte ist eine Sequenz, man kann sie direkt in dieser Form &lt;br /&gt;
hinschreiben, zu beachten gibt es nur ;) dass man so höchstens 8 Elemente verknüpfen kann. Will man mehr eingeben muss man eben 2 (oder noch mehr) dieser Dinger mit ++ verknüpft hinschreiben.&lt;br /&gt;
&lt;br /&gt;
Diese Art Sequenzen zu schreiben eignet sich für Programmtests, wenn man sich die etwas umständliche Schreibweise sparen möchte. Wenn in einer Aufgabe der Umgang mit Listen geprüft werden soll, wird diese Schreibweise nicht empfohlen, da sie den rekursiven Aufbau der Liste verschleiert. Wenn eine Liste aber ähnlich einer Menge benutzt wird, ist die &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt;-Schreibweise durchaus legitim.&lt;br /&gt;
&lt;br /&gt;
Bsp: eine seq[nat] könnte man also so schreiben.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%(4,3,5,8,2,21,5,5) ++ %(6,&amp;quot;78&amp;quot;!,&amp;quot;269&amp;quot;!,&amp;quot;987&amp;quot;!,&amp;quot;654&amp;quot;!,&amp;quot;321&amp;quot;!)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine seq[seq[nat]] könnte man dann so schreiben&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%( %(1,3,2), %(1,2,3))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(man beachte die notwendige Umwandlung da die Zahlen zum Teil größer als 32 sind. :))&lt;br /&gt;
&lt;br /&gt;
(!!!) Vorsicht (!!!) man sollte im Normalfall keine Leerzeichen zwischen die Argumente setzen! Das funktioniert zwar meistens, leider aber nicht immer! &lt;br /&gt;
(Das gilt natürlich nur für die Kommandozeile, in den Syntax-Files selber sind Leerzeichen ziemlich wurscht. :))&lt;br /&gt;
&lt;br /&gt;
Also nochmal: Vorsicht vor Leerzeichen in Funktionsaufrufen!&lt;br /&gt;
&lt;br /&gt;
Ich hatte schon Fehlermeldungen weil ich in Funktionen nach dem Komma ein Leerzeichen eingebaut hatte.&lt;br /&gt;
&lt;br /&gt;
Bsp: func1(&amp;quot;9023&amp;quot;!, &amp;quot;0234&amp;quot;!)&lt;br /&gt;
&lt;br /&gt;
Lässt man das weg, funktionierte (bisher) alles:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
func1(&amp;quot;9023&amp;quot;!,&amp;quot;0234&amp;quot;!)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Speziell wenn man Texte in Nummern umwandelt (siehe oben) scheint das zu Problemen zu führen. (Dieses Problem hatte ich selbst bisher nur wenn ich von der Shell (Kommandozeile aus direkt Argumente in eine Funktion füttern wollte. Ansonsten trat es nicht auf. :)&lt;br /&gt;
&lt;br /&gt;
=== Oasys an der Shell herumkommandieren: ===&lt;br /&gt;
&lt;br /&gt;
Herzlichen Dank an Roman Lechtchinsky&lt;br /&gt;
&lt;br /&gt;
Warum funktioniert der Aufruf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; e f(\\x. 2 * x, 4)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
unter oasys nicht?&lt;br /&gt;
&lt;br /&gt;
Das liegt daran, dass Du in oasys fuer jeden Backslash \\ eingeben muss, also&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; e f(\\\\x. ...)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das hat nichts mit OPAL zu tun, sondern mit der Skript-Sprache (TCL), in der&lt;br /&gt;
das Interpreter-Frontend implementiert ist (nehme ich zumindest an).&lt;br /&gt;
Anm.: angeblich ist die readline-Bibliothek verantwortlich...&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man das quote von TCL (das sind geschweifte Klammern) um den ganzen Ausdruck legen, dann kann man es auch bequem, wie in einer Datei eingeben, also&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; e {f(\\x. 2 * x, 4)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fehler/Probleme mit OPAL ==&lt;br /&gt;
&lt;br /&gt;
=== Warum funktionieren Zahlen über 32 nicht? ===&lt;br /&gt;
&lt;br /&gt;
In [[Opal]] sind die Zahlen auch Funktionen (genauer konstante Funktionen), d.h. wenn eine Zahl eingeben wird, wird eine Funktion mit dem Namen der Zahl ausgeführt, die die Zahl als Wert zurückgibt. Deshalb müsste für jede Zahl eine Funktion existieren. Da das nicht möglich ist, gibt es eine Funktion, die eine Zeichenkette (denotation) in eine Zahl umwandelt. Diese Funktion heißt &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;zahl&amp;quot;!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aber warum funktioniert das bei Zahlen unter 32 auch ohne diese Funktion? Naja, einige Zahlen sind für bequemeres Eingeben doch als Funktion definiert:&lt;br /&gt;
&lt;br /&gt;
Die Zahlen von &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;-&amp;lt;code&amp;gt;32&amp;lt;/code&amp;gt;, die Zweierpotenzen &amp;lt;code&amp;gt;64,128,256,512,1024&amp;lt;/code&amp;gt; und die Zahlen &amp;lt;code&amp;gt;100, 1000, 10000, 100000, 1000000&amp;lt;/code&amp;gt;. Daneben gibt es noch die Konstanten &amp;lt;code&amp;gt;pi&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt; für die ludolfsche Zahl (Pi) und die eulersche Zahl.&lt;br /&gt;
&lt;br /&gt;
=== Warum funktionieren (manchmal) auch Zahlen unter 32 nicht? ===&lt;br /&gt;
&lt;br /&gt;
Dies ist meistens der Fall, wenn das Programm mit oasys über die Signatur aufgerufen wird. In der Signatur werden meistens nur die Sorten (bspw. &amp;lt;code&amp;gt;nat&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;denotation&amp;lt;/code&amp;gt;) importiert, da Zahlen auch Funktionen sind, müsste man diese auch importieren. Etwas flexibler ist es, die Umwandlungsfunktion &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; zu importieren. Dann müssen zwar alle Zahlen erst von einer Zeichenkette umgewandelt werden, aber so kann man überhaupt mit Zahlen arbeiten:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMPORT Nat ONLY nat !&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Natürlich kann man auch &amp;lt;code&amp;gt;COMPLETELY&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;ONLY&amp;lt;/code&amp;gt; benutzen. Dies wird aber teilweise als schlechter Stil empfunden.&lt;br /&gt;
&lt;br /&gt;
=== Warum funktionieren Kommazahlen nicht? ===&lt;br /&gt;
Zuallererst: Kommazahlen werden in Opal mit einem Punkt notiert, bspw. ist &amp;lt;code&amp;gt;3,14159&amp;lt;/code&amp;gt; in Opal &amp;lt;code&amp;gt;3.14159&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Wie bei der [[#Warum_funktionieren_Zahlen_.C3.BCber_32_nicht.3F | Frage zu Zahlen über 32]] bereits beschrieben, müssten gleich benutzbare Zahlen als (konstante) Funktion in einer Struktur definiert (und deklariert) sein. Das ist nicht der Fall (außer bei &amp;lt;code&amp;gt;pi&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt;). Der Standardfehler den &amp;lt;code&amp;gt;oasys&amp;lt;/code&amp;gt; in diesem Fall ausgibt ist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR [at ...] no matching operation for .&lt;br /&gt;
ERROR [check] language error&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;oasys&amp;lt;/code&amp;gt; hält also das Komma (den Punkt) für eine (binäre) Funktion. Um Kommazahlen in Opal zu benutzen, müssen sie &amp;quot;kontruiert&amp;quot; werden. Hierfür enthalten Strukturen, die Kommazahlen nutzen, die Funktion &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;. Kommazahlen werden also als Denotation geschrieben: &amp;quot;&amp;lt;code&amp;gt;3,14159&amp;lt;/code&amp;gt;&amp;quot; und dann mit der (unären) Funktion &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; umgewandelt: !&amp;quot;&amp;lt;code&amp;gt;3,14159&amp;lt;/code&amp;gt;&amp;quot; oder &amp;quot;&amp;lt;code&amp;gt;3,14159&amp;lt;/code&amp;gt;&amp;quot;!, inbesondere bei der Nutzung in längeren Gleichungen oder der oasys-Eingabe kann dieses Ausrufezeichen (da unär) schon einmal für unerwartete Fehler sorgen (mehr dazu [[#Was_ist_Pr.C3.A4fix-.2C_Infix-_und_Postfixnotation.3F|Was ist Präfix-, Infix- und Postfix-Notation?]]).&lt;br /&gt;
&lt;br /&gt;
=== Warum kann man Denotations immer nutzen und Zahlen nicht? ===&lt;br /&gt;
&lt;br /&gt;
Wenn eine OPAL-Struktur interpretiert (und später übersetzt) wird, lädt der Interpreter bestimmte Strukturen automatisch. Diese heißen bspw. &amp;lt;code&amp;gt;BOOL&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;DENOTATION&amp;lt;/code&amp;gt; und stellen elementare Funktionen zur Verfügung. Deshalb kann man ohne den Import von irgendwelchen Strukturen IF-THEN-ELSE-Konstrukte in OPAL nutzen und mit Denotations arbeiten (nicht aber mit Zahlen, denn die werden nicht automatisch importiert). Die in der Schreibung ähnlichen Strukturen &amp;lt;code&amp;gt;Bool&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;Denotation&amp;lt;/code&amp;gt; stellen aber noch weitere Funktionen zur Verfügung, deshalb müssen sie gelegentlich doch importiert werden.&lt;br /&gt;
&lt;br /&gt;
=== Warum wird meine Backtick-Funktion (`) nicht benutzt? ===&lt;br /&gt;
&lt;br /&gt;
Die Backtick-Funktion für eigene Datentypen muss in der .sign-Datei mit deklariert sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Warum funktioniert WHERE nicht ohne weiteres mit Lambda-Ausdrücken? ===&lt;br /&gt;
&lt;br /&gt;
Wenn man Lambda mit WHERE kombinieren will muss man den ganzen Body der Funktion klammern&lt;br /&gt;
&lt;br /&gt;
Das geht so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEF qsolve1 == \\ a, b, c .(   /* &amp;lt;--- */&lt;br /&gt;
   (x1, x2)&lt;br /&gt;
        WHERE&lt;br /&gt;
        x1 == (-(b) + d) / (2 * a)&lt;br /&gt;
        x2 == (-(b) - d) / (2 * a)&lt;br /&gt;
        d == sqrt((b * b) -  (4 * a * c))   &lt;br /&gt;
&lt;br /&gt;
)  /* &amp;lt;----- */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig ist dabei, dass nach dem Punkt, mit dem der Lambda Ausdruck die Argumentliste abschließt, kein Leerzeichen oder irgendetwas anderes ist, sondern gleich die öffnende Klammer kommt. Ansonsten funktioniert es nicht!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Häufige Fehlermeldungen ===&lt;br /&gt;
&lt;br /&gt;
Folgende Fehlermeldung ist ziemlich haeufig:&lt;br /&gt;
&lt;br /&gt;
==== Expected ... instead of .... ====&lt;br /&gt;
&lt;br /&gt;
Hier handelt es sich um einen einfachen Syntaxfehler. Falls Ihr meint, alles korrekt geschrieben zu haben, überprueft auch nochmal die Klammerung der Ausdrücke (es muss genausoviele öffnende wie schliessende Klammern geben). Vielleicht ist ja auch nur ein FI vergessen worden...&lt;br /&gt;
&lt;br /&gt;
==== Expected was `:' instead of `-&amp;gt;' ====&lt;br /&gt;
&lt;br /&gt;
Dieser Fehler kann trotz korrekt vorhandenem &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; auftreten. Beispiel:&lt;br /&gt;
 FUN `: nat -&amp;gt; stream -&amp;gt; denotation&lt;br /&gt;
erzeugt den Fehler, dahingegen&lt;br /&gt;
 FUN ` : nat -&amp;gt; stream -&amp;gt; denotation&lt;br /&gt;
nicht.&lt;br /&gt;
&lt;br /&gt;
Es hilft also eventuell das Einfügen von Whitespace.&lt;br /&gt;
&lt;br /&gt;
==== improperly named function definition target or parameter ... ====&lt;br /&gt;
&lt;br /&gt;
In diesem Fall sollte man ueberpruefen, ob die Deklaration der Funktion (FUN ...) fehlt. Vielleicht ist gerade dieser Teil auskommentiert, oder  man hat schlicht und einfach vergessen, die Signaturdatei zu speichern. Mir ist letzteres auch schon unterlaufen, d.h. man sucht nach einem Fehler, der eigentlich nicht vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==== missing else in ... ====&lt;br /&gt;
&lt;br /&gt;
Passiert, wenn bei der Verwendung des Dijkstra-IFs während der Auswertung ein Fall eingetreten ist, der nicht abgedeckt wird. Bei dieser Funktion würde es z.B. bei testeZahl(10) auftreten:&lt;br /&gt;
 DEF testeZahl(x) == IF x &amp;gt; 10 THEN true IF x &amp;lt; 10 THEN false FI&lt;br /&gt;
Es müsste ein &amp;lt; oder &amp;gt; durch &amp;lt;= bzw. &amp;gt;= ersetzt werden, oder der Fall = explizit aufgeführt werden.&lt;br /&gt;
&lt;br /&gt;
==== ambigious infix application ====&lt;br /&gt;
&lt;br /&gt;
Dieser Fehler deutet darauf hin, dass bei Infix-Notation die Klammern nicht eindeutig gesetzt werden konnten. Ein Beispiel sind die logischen Funktionen &amp;lt;code&amp;gt;/\&amp;lt;/code&amp;gt; (und) und &amp;lt;code&amp;gt;\/&amp;lt;/code&amp;gt; (oder). Opal hat hierfür keine Klammerregelung, der Ausdruck&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
false /\ true \/ true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
kann auf zwei Arten geklammert werden: entweder &amp;lt;code&amp;gt;'''('''false /\ true''')''' \/ true&amp;lt;/code&amp;gt; (ausgewertet zu true) oder &amp;lt;code&amp;gt;false /\ '''('''true \/ true''')'''&amp;lt;/code&amp;gt; (ausgewertet zu false).&lt;br /&gt;
&lt;br /&gt;
=== Was ist Präfix-, Infix- und Postfixnotation? ===&lt;br /&gt;
...oder wie man Minuszeichen hassen lernt.&lt;br /&gt;
&lt;br /&gt;
Bei der '''Präfix'''-Notation wird der Funktionsname vor den Argumenten geschrieben, bspw. &amp;lt;code&amp;gt;!&amp;quot;33&amp;quot;&amp;lt;/code&amp;gt;, oder +(3,5). Bei Funktionen mit mehr als einem Parameter müssen die Argumente in Klammern gesetzt und durch Kommas getrennt werden.&lt;br /&gt;
&lt;br /&gt;
Die '''Infix'''-Notation ist nur bei zweistelligen (oder binären) Funktionen möglich (also Funktionen mit genau zwei Parametern). Beispiele dafür sind die Funktionen &amp;lt;code&amp;gt;+, /\, *,&amp;lt;/code&amp;gt; usw.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5 + 6&lt;br /&gt;
true /\ false&lt;br /&gt;
4 * 6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei den meisten zweistelligen Funktione sind auch solche Konstruktionen möglich: &amp;lt;code&amp;gt;3 + 4 + 9 + 2&amp;lt;/code&amp;gt;, die Klammerung wird implizit vorgenommen, auch Mischungen wie &amp;lt;code&amp;gt;3 + 4 * 7 + 3&amp;lt;/code&amp;gt; werden den mathematischen Gesetzen entsprechend geklammert.&lt;br /&gt;
&lt;br /&gt;
Die '''Postfix'''-Notation ähnelt der Präfix-Notation, nur dass hier hier der Funktionsname nach den Parametern notiert wird. Bspw. &amp;lt;code&amp;gt;&amp;quot;33&amp;quot;!&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;(6,3)-&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Insbesondere bei einstelligen (unären) Funktionen, wie &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt;, oder &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; (als Vorzeichen), kommt es öfter zu solchen Fehlermeldungen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR [HOF.impl at 32.5-32.33]: undefined identification&lt;br /&gt;
 1. &amp;lt;32,5-33&amp;gt; wrongly typed implementation&lt;br /&gt;
     left:  real-&amp;gt;real&lt;br /&gt;
     right: ((nat**nat-&amp;gt;nat)-&amp;gt;real)-&amp;gt;real&lt;br /&gt;
 2. &amp;lt;32,5-33&amp;gt; wrongly typed implementation&lt;br /&gt;
     left:  real-&amp;gt;real&lt;br /&gt;
     right: ((real**real-&amp;gt;real)-&amp;gt;real)-&amp;gt;real&lt;br /&gt;
 3. &amp;lt;32,5-33&amp;gt; wrongly typed implementation&lt;br /&gt;
     left:  real-&amp;gt;real&lt;br /&gt;
     right: ((real-&amp;gt;real)-&amp;gt;real)-&amp;gt;real&lt;br /&gt;
&lt;br /&gt;
ERROR [check]: language error&lt;br /&gt;
aborted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Könnte das etwas mit dem Gebrauch von Minuszeichen zu tun haben. :(&lt;br /&gt;
&lt;br /&gt;
Ich hatte größte Schwierigkeiten den folgenden Code zum Funktionieren zu überreden, Code-Zeilen wie das hier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FUN test : ( real -&amp;gt; real ) -&amp;gt; ( real -&amp;gt; real )&lt;br /&gt;
DEF test( r ) == \\ x . r( -x )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktionieren nicht.&lt;br /&gt;
&lt;br /&gt;
Das Problem ist das der Compiler für das minuszeichen ( r( -x )) zwei Argumente zu erwarten scheint. (Obwohl er das laut Spezifikation nicht müsste)&lt;br /&gt;
&lt;br /&gt;
Die Löung lag für mich darin entweder &amp;quot;0 - x&amp;quot; zu schreiben oder das x in eigene Klammern zu setzen  ( x ). Beides funktioniert hier.&lt;br /&gt;
&lt;br /&gt;
Einen änlichen Fehler hatte ich als ich so etwas schreib: &amp;quot; a - b + c &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ich musste das dann als ( a - ( b + c ) ) schreiben damit es &lt;br /&gt;
funktionierte.&lt;br /&gt;
&lt;br /&gt;
Hope it helps!&lt;br /&gt;
&lt;br /&gt;
Hier habe ich noch eine Erklärung von Klaus Didrich bekommen (thx!)&lt;br /&gt;
&lt;br /&gt;
Das Prinzip, dass Funktionen keine Sonderbehandlung erfahren, erstreckt sich auch auf das unäre Minuszeichen. Folgendes geht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-(1)       (analog zu &amp;quot;f(1)&amp;quot;)&lt;br /&gt;
(1-)    (analog etwa zu &amp;quot;(5!)&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dein Problem mit &amp;quot;a - b + c&amp;quot; kann ich allerdings nicht nachvollziehen.&lt;br /&gt;
&lt;br /&gt;
Und gleich nochmal etwas, hierfür danke ich Archi Varius.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ ( 0, 1 ) = 0 + 1 = ( 0, 1 ) +&lt;br /&gt;
&lt;br /&gt;
! 5 = 120 = 5 !&lt;br /&gt;
&lt;br /&gt;
- 1 = 1 -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und nochmal. :)) Diesmal herzlichen Dank wieder an Klaus Didrich.&lt;br /&gt;
&lt;br /&gt;
Wird den in [[Opal]], jeder Infixoperator der nur einen Operand bekommt hinter&lt;br /&gt;
den Operand geschrieben wird? (Das fände ich ja etwas beschränkt...)&lt;br /&gt;
&lt;br /&gt;
:Es ist viel schlimmer :-) Es ist beides möglich. Du kannst jeden einstelligen Operator auch hinter den Operanden schreiben, dazu brauchst Du keine besondere Deklaration.&lt;br /&gt;
&lt;br /&gt;
:Ob man IF &amp;lt;&amp;gt;?(S) THEN ... oder IF S &amp;lt;&amp;gt;? THEN ... schreibt, macht keinen Unterschied. Eine Mischung aus Postfix- und Infix-Applikationen kann der Compiler leider nicht analysieren, da kommt dann die Meldung &amp;quot;no possible bracketing for infix found&amp;quot;. In dem Fall hilft Klammern: (5!) + 3, (S#) &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
:Auch bei zweistelligen Funktionen kann man es sich aussuchen, ob man die Präfix- oder die Infixschreibweise vorzieht: +(5,3) oder 3 + 5 sind beide erlaubt.&lt;br /&gt;
&lt;br /&gt;
=== Opal und Zugriffsrechte (ext2 versus fat) ===&lt;br /&gt;
Herzlichen Dank für diesen Tip an Thomas Brinker!&lt;br /&gt;
&lt;br /&gt;
==== Du setzt [[Opal]] unter [[Linux]] ein ====&lt;br /&gt;
&lt;br /&gt;
[[Opal]]-fehlermeldung:&lt;br /&gt;
Operation not permitted&lt;br /&gt;
&lt;br /&gt;
Grund:&lt;br /&gt;
Die Dateien liegen nicht in einer ext2-Partition sondern in einer &lt;br /&gt;
FAT-Partition. (in FAT geht das mit den named Pipes nicht)&lt;br /&gt;
&lt;br /&gt;
Abhilfe:&lt;br /&gt;
&lt;br /&gt;
Dateien in ext2 Partition umkopieren. Alternativ die aktuelle Opal-Version 2.3m&lt;br /&gt;
benutzen, wenn /tmp auf einer Partition liegt, die named Pipes unterstützt.&lt;br /&gt;
&lt;br /&gt;
==== Du setzt [[Opalix]] unter VirtualBox mit Shared Folders ein ====&lt;br /&gt;
&lt;br /&gt;
Im Grunde das gleiche wie vorher, siehe [[Opalix 2007#Fehler:_Operation_not_permitted|Opalix-Seite]].&lt;br /&gt;
&lt;br /&gt;
=== Was bedeutet ein Fehler in Zeile 0? ===&lt;br /&gt;
&lt;br /&gt;
Bei einem ansonsten korrekten Programm hat mich diese Fehlermeldung vorhin eine laaange Fehlerjagd gekostet...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Person.impl&amp;gt;e Birthday(date(30,12,&amp;quot;79&amp;quot;!)&lt;br /&gt;
ERROR [at 0.3-0.4]: Expected was `)' instead of `IN'&lt;br /&gt;
ERROR [check]: language error&lt;br /&gt;
aborted&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Fall hatte ich auf der Eingebe-Zeile im Interpreter eine schließende Klammer vergessen. :))&lt;br /&gt;
&lt;br /&gt;
Man kann diese Fehler recht leicht erkennen. Sie finden immer auf Zeile '''0''' statt. Das ist die Eingabe-Zeile in der Shell. :))&lt;br /&gt;
(&amp;quot; ERROR [at 0.3-0.4]:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Der Fehler muss folglich auch nicht immer ein Syntax-Fehler sein (wie oben), sondern kann auch durch die Sprache in der die Eingabe von &amp;lt;code&amp;gt;oasys&amp;lt;/code&amp;gt; programmiert ist hervorgerufen werden (siehe [[#Oasys_an_der_Shell_herumkommandieren: | Oasys an der Shell herumkommandieren]]).&lt;br /&gt;
&lt;br /&gt;
=== Nicht nachvollziehbare Laufzeitfehler ===&lt;br /&gt;
&lt;br /&gt;
Wenn das eigene Programm eine Struktur S enthält und die Bibliotheca Opalica ebenfalls eine Struktur S bereitstellt, kann es unter Umständen zu nicht nachvollziehbaren Laufzeitfehlern komen, wie etwa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RUNTIME ERROR: TreeConv at &amp;lt;252,5-11&amp;gt; : missing else in asSeqIn'TreeConv:tree**seq-&amp;gt;seq&lt;br /&gt;
Aborted (core dumped)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
unter Ubuntu oder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus Error (core dumped)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
unter Solaris 10 Sparc.&lt;br /&gt;
&lt;br /&gt;
In diesem Fall enthält das Programm eine Struktur Tree und die Bibliotheca Opalica hat ebenfalls eine solche Struktur.&lt;br /&gt;
&lt;br /&gt;
Die einzige Lösung des Problems ist die Umbenennung der Struktur S, da alle zu einem Opal-Programm gelinkten Strukutren verschiedene Namen haben müssen. Eine Übersicht aller in der Bibliotheca Opalica vorhandenen Strukturen gibt es bspw. über den &amp;quot;Structure Index&amp;quot; der Dokumentation: http://projects.uebb.tu-berlin.de/opal/dosfop/latest/bibopalicaman/Structure_Index.html, Alternativ können die Befehle &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt;, oder &amp;lt;code&amp;gt;ll&amp;lt;/code&amp;gt; (umfangreicher als &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt;) in oasys benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Es ist ein Bug im Opal-Compiler, dass in solchen Fällen keine Fehlermeldung ausgegeben wird, sondern es so aussieht als ob das Programm korrekt übersetzt wurde. Details können in diesem Ticket nachgelesen werden: http://projects.uebb.tu-berlin.de/opal/trac/ticket/50&lt;br /&gt;
&lt;br /&gt;
Unter MacOS X tritt das Problem aufgrund des Mach-O Formats und einer anderen Link-Semantik nicht auf.&lt;br /&gt;
&lt;br /&gt;
=== oasys: Too many open files ===&lt;br /&gt;
&lt;br /&gt;
oasys detektiert einen verboteten zyklischen Import innerhalb von IMPLEMENTATIONs nicht.&lt;br /&gt;
&lt;br /&gt;
Es gibt stattdessen die Fehlermeldung sobald eine Funktion des Programms ausgewertet wird:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
starting evaluator process&lt;br /&gt;
sh: 1: 1: Too many open files&lt;br /&gt;
evaluator: cannot retrieve symbols of `pconn-in-289-25/10/94'&lt;br /&gt;
connection lost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ausserdem werden im temporären Verzeichnis (z. B. /tmp) Unmengen von Dateien liegengelassen.&lt;br /&gt;
&lt;br /&gt;
Zyklische Importe sind in Opal verboten. Die einzige Losung ist also eine Umstrukturierung des Programms. Der Opal-Compiler ocs detektiert das Problem korrekt.&lt;br /&gt;
&lt;br /&gt;
== Hilfreiche Tipps == &lt;br /&gt;
&lt;br /&gt;
=== Zwischenergebnisse zur Fehlersuche ausgeben (&amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt;-Debugging) ===&lt;br /&gt;
&lt;br /&gt;
Oftmals wünscht man sich eine Möglichkeit, Zwischenergebnisse auf der Konsole auszugeben, z.B. um Fehler zu finden und den Programmablauf zu verfolgen. Da man in einer rein-funktionalen Sprache wie Opal nicht einfach ein &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt; einfügen kann, muss man etwas tricksen. Mit Hilfe der &amp;quot;Funktion&amp;quot; &amp;lt;code&amp;gt;EXEC&amp;lt;/code&amp;gt; aus der &amp;lt;code&amp;gt;Com&amp;lt;/code&amp;gt;-Struktur kann aus dem Ablauf heraus Text ausgeben, da sie eine Möglichkeit darstellt, Seiteneffekte auszufühen. Das sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SIGNATURE DebugHelper[ResultType]&lt;br /&gt;
&lt;br /&gt;
SORT ResultType&lt;br /&gt;
&lt;br /&gt;
FUN || : ResultType ** denotation -&amp;gt; ResultType&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMPLEMENTATION DebugHelper[ResultType]&lt;br /&gt;
&lt;br /&gt;
IMPORT	Com		COMPLETELY&lt;br /&gt;
	Stream		COMPLETELY&lt;br /&gt;
	ComCompose	COMPLETELY&lt;br /&gt;
&lt;br /&gt;
FUN || : ResultType ** denotation -&amp;gt; ResultType&lt;br /&gt;
DEF result || msg == EXEC(writeLine(stdOut, msg); succeed(result))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Speichert die beiden Code-Schnippsel in den Dateien &amp;lt;code&amp;gt;DebugHelper.{sign,impl}&amp;lt;/code&amp;gt; und schon könnt ihr auf einfachste Weise Debug ausgaben machen. Schreibt dafür einfach die Debugausgabe auf die rechte Seite des &amp;quot;Debugoperators&amp;quot; &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IMPLEMENTATION Beispiel&lt;br /&gt;
&lt;br /&gt;
IMPORT 	Nat 		COMPLETELY&lt;br /&gt;
	NatConv		COMPLETELY&lt;br /&gt;
	Denotation	COMPLETELY&lt;br /&gt;
	DebugHelper	COMPLETELY&lt;br /&gt;
&lt;br /&gt;
FUN foo: nat ** nat -&amp;gt; nat&lt;br /&gt;
DEF foo(x, y) ==&lt;br /&gt;
  LET&lt;br /&gt;
    res == (x + y) 	|| &amp;quot;in x=&amp;quot; ++ `(x) ++ &amp;quot; y=&amp;quot; ++ `(y)&lt;br /&gt;
  IN&lt;br /&gt;
    res 		|| &amp;quot;out =&amp;quot; ++ `(res)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Beispiel.impl&amp;gt;e foo(2,3)&lt;br /&gt;
starting evaluator process&lt;br /&gt;
in x=2 y=3                   &amp;lt;&amp;lt;----- Debug&lt;br /&gt;
out =5                       &amp;lt;&amp;lt;----- Infos&lt;br /&gt;
5&lt;br /&gt;
Beispiel.impl&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ähnliche Funktionalität bietet auch die &amp;lt;code&amp;gt;DEBUG&amp;lt;/code&amp;gt; Struktur aus der Bibliotheca Opalica, allerdings sind dort die Funktionen IMHO nicht ganz so schön einzubauen.&lt;br /&gt;
&lt;br /&gt;
=== Syntax Highlighting ===&lt;br /&gt;
&lt;br /&gt;
Anleitungen und Vorgaben zum [[Opal Syntax-Highlighting]] finden sich auf einer extra Seite.&lt;br /&gt;
&lt;br /&gt;
=== Opal-Quelltexte mit TeX/LaTeX setzen ===&lt;br /&gt;
&lt;br /&gt;
[[WikiPedia:TeX|TeX]]/[[WikiPedia:LaTeX|LaTeX]] ist ein sehr mächtiges Textsatzsystem, das für kleinere Dokumente über Diplomarbeiten bis hin zu kompletten Büchern verwendet werden kann.&lt;br /&gt;
&lt;br /&gt;
Da liegt es nahe, einfach auch Hausaufgaben optisch ansprechend in hoher Qualität damit setzen zu lassen.&lt;br /&gt;
&lt;br /&gt;
Für das Setzen von Quellcodes gibt es u.a. das [ftp://ftp.tex.ac.uk/tex-archive/macros/latex/contrib/listings/listings.pdf Listings-Package] für TeX/LaTeX. Hier gibt es jedoch kein vordefiniertes Syntax-Highlighting für OPAL. Außerdem steht die opal2x.sty [http://projects.uebb.tu-berlin.de/opal/trac/raw-attachment/wiki/Documentation/dokopal2x.pdf], [http://projects.uebb.tu-berlin.de/opal/trac/raw-attachment/wiki/Documentation/opal2x.tar.gz] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Opal]]&lt;br /&gt;
&lt;br /&gt;
=== Opal für Windows ===&lt;br /&gt;
&lt;br /&gt;
Kurz: Es gibt kein Opal für [[Windows]].&lt;br /&gt;
&lt;br /&gt;
Lang: Jedenfalls in keiner benutzbaren Fassung. Im Rahmen einer Dissertation entsteht zwar Opal.NET (also Opal für die MS .NET Plattform), diese Version wird jedoch vorraussichtlich nicht als &amp;quot;stable release&amp;quot; erscheinen.&lt;br /&gt;
&lt;br /&gt;
=== Opal unter Cygwin ===&lt;br /&gt;
&lt;br /&gt;
Opal unter Cygwin wird nicht von der PSS Gruppe unterstützt und funktioniert erfahrungsgemäß '''nicht'''.&lt;br /&gt;
&lt;br /&gt;
Erfahrungsbericht von Tobias Deichmann in der Info1 Newsgroup:&lt;br /&gt;
&lt;br /&gt;
:''...also ich hab mich da letztes Jahr knapp 4 Wochen lang dran probiert und kann dir nur einen Tipp geben: Lass es.''&lt;br /&gt;
&lt;br /&gt;
:''Hab es zwar soweit geschafft, dass wenigstens einige Kommandozeilenbasierende OPAL-Programme wenigstens halbwegs fehlerfrei liefen (ok, sie stürzten trotzdem einigermaßen oft ab oder wir man das auch immer bezeichnen möchte), aber das richtige Problem kommt erst, wenn du das Ganze dann noch mit der grafischen Java Benutzeroperfläche (kurz GUI) von OPAL verwenden willst. Da funktioniert dann gar keins der Programme, es zerschießt dir dabei regelmäig die komplette cygwin bzw. OPAL Installation und es ist einfach nervig. Mein Rat an dich ist also, es lieber mit Opalix oder sonstwas zu probieren, als dich durch cygwin zu quälen, denn das führt  eigentlich zu nichts...''&lt;br /&gt;
&lt;br /&gt;
Als Alternative bieten sich [[Opalix]] und [[Opal für Linux]] an.&lt;br /&gt;
&lt;br /&gt;
=== Opal via SSH ===&lt;br /&gt;
&lt;br /&gt;
Eine weitere Möglichkeit Opal von Zuhause aus zu benutzen ist sich über SSH auf einen der Uni-Server zu verbinden und so &amp;quot;remote&amp;quot; zu arbeiten. Welche Server zur Verfügung stehen und wie SSH benutzt wird steht auf der [[SSH|SSH-Seite]].&lt;br /&gt;
&lt;br /&gt;
==Tabellen und Listen==&lt;br /&gt;
&amp;lt;strong&amp;gt;Anmerkung:&amp;lt;/strong&amp;gt; Die folgenden Tabellen werden noch erweitert.&lt;br /&gt;
&lt;br /&gt;
===Wichtige Strukturen===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; | Inhalt !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; | Auswahl von Funktionen&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Nat.html#SEC82 Nat]&lt;br /&gt;
| Stellt Funktionen und Sorten der natürlichen Zahlen bereit&lt;br /&gt;
| +,-,*,div,mod&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/NatConv.html#SEC98 NatConv]&lt;br /&gt;
| Stellt Funktionen zur Umwandlung von natürlichen Zahlen in andere Typen bereit&lt;br /&gt;
| asChar, asInt, asReal, `&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Real.html#SEC88 Real]&lt;br /&gt;
| Stellt Funktionen und Sorten der reellen Zahlen bereit&lt;br /&gt;
| +,-,*,/&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/RealConv.html#SEC100 RealConv]&lt;br /&gt;
| Stellt Funktionen zur Umwandlung von reellen Zahlen in andere Typen bereit&lt;br /&gt;
| asNat, asInt, `, ``&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Int.html#SEC75 Int]&lt;br /&gt;
| Stellt Funktionen und Sorten der ganzen Zahlen bereit &lt;br /&gt;
| +,-,*,div,mod&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/IntConv.html#SEC96 IntConv]&lt;br /&gt;
| Stellt Funktionen zur Umwandlung von reellen Zahlen in andere Typen bereit&lt;br /&gt;
| asNat, asReal, `&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Bool.html#SEC24 Bool]&lt;br /&gt;
| Stellt Funtionen und Sorten für boolsche Ausdrücke zur Verfügung&lt;br /&gt;
| /\, \/, =&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/BoolConv.html#SEC30 BoolConv]&lt;br /&gt;
| Stellt eine Funktion zur Umwandlung von Wahrheitswerten (true/false) in Text zu Verfügung&lt;br /&gt;
| nur `&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Char.html#SEC48 Char]&lt;br /&gt;
| Stellt Funktionen für Buchstaben und Zeichen/Eingaben zur Verfügung&lt;br /&gt;
| pred, newline, lower?, whitespace?&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/CharConv.html#SEC61 CharConv]&lt;br /&gt;
| Stellt Funktionen zur Umwandlung von Buchstaben/Zeichen zur Verfügung&lt;br /&gt;
| `, asNat, asDigitNat&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Denotation.html#SEC50 Denotation]&lt;br /&gt;
| Stellt Funktionen für Textverarbeitung zur Verfügung&lt;br /&gt;
| #, slice, empty?&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/String.html#SEC287 String]&lt;br /&gt;
| Stellt Funktion für dynamische Textverarbeitung bereit&lt;br /&gt;
| #, empty?, ++, %&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/StringConv.html#SEC301 StringConv]&lt;br /&gt;
| Stellt Funktionen zur Umwandlung von Zeichenketten bereit&lt;br /&gt;
| asSeq, asString, `&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Seq.html#SEC215 Seq]&lt;br /&gt;
| Stellt Grundfunktionen für die Arbeit mit Listen zur Verfügung&lt;br /&gt;
| &amp;lt;&amp;gt;, ::, exist?, %&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/SeqConv.html#SEC229 SeqConv]&lt;br /&gt;
| Stellt eine Grundfunktion zur Umwandlung von Listen bereit&lt;br /&gt;
| nur `&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/SeqFilter.html#SEC231 SeqFilter]&lt;br /&gt;
| Stellt eine Filterfunktion auf Listen zzgl. Hilfsfunktionen zur Verfügung&lt;br /&gt;
| filter, partition, split&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/SeqMap.html#SEC240 SeqMap]&lt;br /&gt;
| Enthält eine Funktion zur Umwandlung von Listen&lt;br /&gt;
| nur map oder *&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/SeqReduce.html#SEC247 SeqReduce]&lt;br /&gt;
| Stellt Funktionen zur Reduktion von Listen bereit&lt;br /&gt;
| reduce oder /, \&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/SeqZip.html#SEC255 SeqZip]&lt;br /&gt;
| Stellt Funktionen zum Zusammenfügen und Zertrennen von Listen zur Verfügung&lt;br /&gt;
| zip, unzip&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Option.html#SEC189 Option]&lt;br /&gt;
| Stellt einen Zugriffstyp und Zugriffsfunktionen für Datentypen zur Verfügung&lt;br /&gt;
| cont, &amp;lt;, =&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Compose.html#SEC109 Compose]&lt;br /&gt;
| Stellt Funktionen zur Komposition von Funktionen bereit&lt;br /&gt;
| o, ;&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Tree.html#SEC325 Tree]&lt;br /&gt;
| Stellt Grundfunktionen zur Arbeit mit Bäumen zur Verfügung&lt;br /&gt;
| lrotate, %, #&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/TreeConv.html#SEC368 TreeConv]&lt;br /&gt;
| Stellt Funktionen zur visuell ansprechenden Ausgabe von Bäumen bereit&lt;br /&gt;
| asSeqIn, `, graphic&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Com.html#SEC844 Com]&lt;br /&gt;
| Stellt Grundfunktionen für die Behandlung von Monaden bereit&lt;br /&gt;
| succeed, yield, break&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/ComCompose.html#SEC846 ComCompose]&lt;br /&gt;
| Funktionen zur Komposition von Monaden&lt;br /&gt;
| &amp;amp;, ;&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/BasicIO.html#SEC915 BasicIO]&lt;br /&gt;
| Stellt Grundfunktionen für Ein- und Ausgabe bereit &lt;br /&gt;
| ask, writeLine, write&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/File.html#SEC943 File]&lt;br /&gt;
| Stellt Funktionen für den Dateizugriff zu Verfügung&lt;br /&gt;
| open, reopen, close&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Void.html#SEC36 Void]&lt;br /&gt;
| Stellt einen leeren Datentyp bereit (wichtig für Monaden)&lt;br /&gt;
| nur void (Datentyp)&lt;br /&gt;
|}&lt;br /&gt;
Außerdem stellt OPAL die Struktur [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Basics.html#IDX201 Basics] zur Verfügung, diese lädt automatisch folgende Strukturen:&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/ABORT.html#SEC19 ABORT],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/BOOL.html#SEC15 BOOL],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Bool.html#SEC24 Bool],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/BoolConv.html#SEC30 BoolConv],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Char.html#SEC48 Char],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/CharConv.html#SEC61 CharConv],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/DENOTATION.html#SEC17 DENOTATION],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Denotation.html#SEC50 Denotation],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Int.html#SEC75 Int],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/IntConv.html#SEC96 IntConv],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Nat.html#SEC82 Nat],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/NatConv.html#SEC98 NatConv],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Real.html#SEC88 Real],&lt;br /&gt;
[http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/RealConv.html#SEC100 RealConv].&lt;br /&gt;
&lt;br /&gt;
'''Hinweis:''' Einige Strukturen importieren bereits andere, die Einzelheiten finden sich in der Referenz.&lt;br /&gt;
&lt;br /&gt;
===Interessante Strukturen===&lt;br /&gt;
&amp;lt;strong&amp;gt;Anmerkung:&amp;lt;/strong&amp;gt; Diese Strukturen werden im Studium nicht zwingend behandelt, enthalten aber interessante Zusatzinformationen und erleichtern die Arbeit, wenn man über die Studieninhalte hinaus mit OPAL experimentieren möchte. Einige Strukturen sind auch hilfreich bei der sinnvollen Strukturierung von eigenen Strukturen (auch bei Hausaufgaben).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; | Inhalt !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; | Auswahl von Funktionen&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/ABORT.html#IDX56 ABORT]&lt;br /&gt;
| Lässt eigene Fehlerbehandlungstexte zu&lt;br /&gt;
| nur ABORT&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Set.html#SEC482 Set]&lt;br /&gt;
| Struktur die Funktionen und Typen auf Mengen enthält&lt;br /&gt;
| {}, incl, forall?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Wichtige Funktionen===&lt;br /&gt;
'''Anmerkung:''' Funktionen mit demselben Namen verhalten sich in verschiedenen Strukturen ähnlich (Prinzip der Orthogonalität). Einige Funktionen heißen aber auch gleich und machen völlig verschiedene Dinge. Für viele Funktionen gibt es mehrere Namen.&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; | weitere Namen !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; | Beschreibung !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; | enthalten in&lt;br /&gt;
|-&lt;br /&gt;
| div&lt;br /&gt;
| /&lt;br /&gt;
| Divisions-Operator (für ganze  Zahlen)&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Nat.html#IDX1225 Nat], [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Int.html#SEC75 Int]&lt;br /&gt;
|-&lt;br /&gt;
| mod&lt;br /&gt;
| %&lt;br /&gt;
| Rest der ganzzahligen Division&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Nat.html#IDX1225 Nat], [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Int.html#SEC75 Int]&lt;br /&gt;
|-&lt;br /&gt;
| /&lt;br /&gt;
| keine&lt;br /&gt;
| Divisionsoperator&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Real.html#SEC88 Real]&lt;br /&gt;
|-&lt;br /&gt;
| pow&lt;br /&gt;
| ^&lt;br /&gt;
| Potenzfunktion&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Nat.html#IDX1225 Nat], [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Int.html#SEC75 Int], [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Real.html#SEC88 Real]&lt;br /&gt;
|-&lt;br /&gt;
| ++&lt;br /&gt;
| keine&lt;br /&gt;
| Konkatenation von Werten&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Denotation.html#SEC50 Denotation], [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/String.html#SEC287 String], [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Seq.html#SEC215 Seq]&lt;br /&gt;
|-&lt;br /&gt;
| even?&lt;br /&gt;
| keine&lt;br /&gt;
| Gibt an, ob eine Zahle gerade ist&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Nat.html#IDX1225 Nat], [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Int.html#SEC75 Int]&lt;br /&gt;
|-&lt;br /&gt;
| odd?&lt;br /&gt;
| keine&lt;br /&gt;
| Gibt an, ob eine Zahl ungerade ist&lt;br /&gt;
| [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Nat.html#IDX1225 Nat], [http://projects.uebb.tu-berlin.de/opal/dosfop/2.4a/bibopalicaman/Int.html#SEC75 Int]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Wichtige oasys-Befehle===&lt;br /&gt;
Mehr zu dieser Tabelle: http://projects.uebb.tu-berlin.de/opal/trac/raw-attachment/wiki/Documentation/OasysManual.pdf&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Befehl !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; |  &amp;lt;abbr title=&amp;quot;Langform&amp;quot;&amp;gt;LF&amp;lt;/abbr&amp;gt; !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; | Bedeutung !! class=&amp;quot;unsortable&amp;quot; style=&amp;quot;text-align:left&amp;quot; | Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| a&lt;br /&gt;
| append&lt;br /&gt;
| Füge eine Struktur hinzu&lt;br /&gt;
| &amp;lt;code&amp;gt;a MeineStruktur&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| f&lt;br /&gt;
| focus&lt;br /&gt;
| Öffne einen Teil der Struktur (Signatur oder Implementierung)&lt;br /&gt;
| &amp;lt;code&amp;gt;f MeineStruktur.impl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| e&lt;br /&gt;
| evaluate&lt;br /&gt;
| Werte einen Ausdruck aus&lt;br /&gt;
| &amp;lt;code&amp;gt;e meineFunktion(12,&amp;quot;33&amp;quot;!)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ex&lt;br /&gt;
| evaluate&amp;lt;br /&amp;gt;execute&lt;br /&gt;
| Werte einen Ausdruck aus, führe die resultierenden Kommandos aus&lt;br /&gt;
| &amp;lt;code&amp;gt;ex meineMonadenFunktion&amp;lt;/code&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| x&lt;br /&gt;
| execute&lt;br /&gt;
| Führe das Kommando (die Funktion) aus&lt;br /&gt;
| &amp;lt;code&amp;gt;x meineMonadenFunktion&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| r&lt;br /&gt;
| reload&lt;br /&gt;
| Erzwingt das Neuladen von veränderten Strukturen&lt;br /&gt;
| &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; ohne Argument&lt;br /&gt;
|-&lt;br /&gt;
| l, ll&lt;br /&gt;
| list&lt;br /&gt;
| Liste alle bekannten Strukturen auf (l: Kurzversion, ll: Langversion)&lt;br /&gt;
| &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt;, oder &amp;lt;code&amp;gt;ll&amp;lt;/code&amp;gt; ohne Argument&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25363</id>
		<title>Softwaretechnik und Programmierparadigmen</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25363"/>
		<updated>2024-03-08T12:16:03Z</updated>

		<summary type="html">&lt;p&gt;Milan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Softwaretechnik und Programmierparadigmen (SWTPP)''' gibt (zumindest laut Modulbeschreibung) eine Einführung im Bereich Softwareengineering und behandelt die Programmiersprachen Haskell, OCL und Prolog, sowie das Hoare-Kalkül.&lt;br /&gt;
&lt;br /&gt;
'''TL;DR: '''&lt;br /&gt;
VL sind useless, Haskell selber lernen &amp;amp; mit HA rechtzeitig anfangen, Tutorien lohnen sich, Spickzettel vollmachen&lt;br /&gt;
&lt;br /&gt;
== Guide ==&lt;br /&gt;
Die Modulbewertung (95er Schlüssel) setzt sich aus einer Hausaufgabe (30P), einem MC-Test (20P) und einer Klausur (50P) zusammen.&lt;br /&gt;
&lt;br /&gt;
=== Lehrangebot ===  &lt;br /&gt;
Die Vorlesungen sind (Stand WiSe 23/24) wenig lehrreich. Es werden einfache Inhalte durch- und Programmiersprachen vorgekaut, Komplizierteres (Hoare) wird nicht gut erklärt. Es lohnt sich daher, die Inhalte auf eigene Faust zu lernen, indem du die Folien durchgehst, ggf. googelst und bei Unklarheiten Tutor*Innen fragst. &lt;br /&gt;
&lt;br /&gt;
Die Tutorien sind einigermaßen interessant gestaltet und die TutorInnen cool. Tutorienbesuch verringert den Lernaufwand später erheblich, da genau die Aufgabenformate behandelt werden, die dann auch in Test und Klausur rankommen. Es werden auch Fallstricke in der Klausur genannt und Tipps gegeben. Geh einfach hin. &lt;br /&gt;
&lt;br /&gt;
=== Haskell-Hausaufgabe ===&lt;br /&gt;
Haskell ist eine funktionale Progammiersprache, die nicht unbedingt intuitiv ist. Anstatt mit den VL-Folien zu lernen, empfielt es sich, die ersten sechs Kapitel des kostenlosen Online-Buches [https://learnyouahaskell.github.io/chapters.html &amp;quot;Learn you a Haskell for great good&amp;quot;] durchzuarbeiten, davon klaut Glesner auch nur. &lt;br /&gt;
&lt;br /&gt;
Die Hausaufgabe ist idR. interessant und machbar, wenn du '''rechtzeitig''' anfängst: Einfach direkt, wenn du Haskell nicht kannst. Solltest du Haskell können, oder in anderen Programmiermodulen keine Probleme gehabt haben, plane 2-3 Wochen, je nach Pensum, ein. Die Sprechstunden sind am Schluss überfüllt. &lt;br /&gt;
&lt;br /&gt;
=== Test === &lt;br /&gt;
Im ersten Test kamen Prolog und Programmierparadigmen dran. Hier in die Tutorien gehen und Alttests durcharbeiten. &lt;br /&gt;
Suche im Netz ein Prolog-Cheat sheet und schreib, das was du brauchst, auf den Spickzettel. &lt;br /&gt;
&lt;br /&gt;
=== Klausur === &lt;br /&gt;
In der Klausur kamen MC-Fragen, Diagramme, OCL und das Hoare-Kalkül dran. Man durfte 3 Blätter (6 Seiten) Spickzettel benutzen. Für die MC-Fragen lohnt es sich, Notizen aus der VL auf den Spicker zu schreiben. &lt;br /&gt;
Für OCL die wichtigen Funktionen (auch hier: Cheat sheet) auf den Spickzettel schreiben. Für die Diagramme und Hoare in die Tutorien gehen und Altklausuren durchrechnen. Hoare gab dieses Jahr einfache Punkte mit nur wenig Übung.&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25362</id>
		<title>Softwaretechnik und Programmierparadigmen</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25362"/>
		<updated>2024-03-08T12:14:14Z</updated>

		<summary type="html">&lt;p&gt;Milan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Softwaretechnik und Programmierparadigmen (SWTPP)''' gibt (zumindest laut Modulbeschreibung) eine Einführung im Bereich Softwareengineering und behandelt die Programmiersprachen Haskell, OCL und Prolog, sowie das Hoare-Kalkül.&lt;br /&gt;
&lt;br /&gt;
'''TL;DR: '''&lt;br /&gt;
VL sind useless, Haskell selber lernen &amp;amp; mit HA rechtzeitig anfangen, Tutorien lohnen sich, Spickzettel vollmachen&lt;br /&gt;
&lt;br /&gt;
== Guide ==&lt;br /&gt;
Die Modulbewertung (95er Schlüssel) setzt sich aus einer Hausaufgabe (30P), einem MC-Test (20P) und einer Klausur (50P) zusammen.&lt;br /&gt;
&lt;br /&gt;
=== Lehrangebot ===  &lt;br /&gt;
Die Vorlesungen sind (Stand WiSe 23/24) wenig lehrreich. Es werden einfache Inhalte durch- und Programmiersprachen vorgekaut, Komplizierteres (Hoare) wird nicht gut erklärt. Es lohnt sich daher, die Inhalte auf eigene Faust zu lernen, indem du die Folien durchgehst, ggf. googelst und bei Unklarheiten Tutor*Innen fragst. &lt;br /&gt;
&lt;br /&gt;
Die Tutorien sind einigermaßen interessant gestaltet und die TutorInnen cool. Tutorienbesuch verringert den Lernaufwand später erheblich, da genau die Aufgabenformate behandelt werden, die dann auch in Test und Klausur rankommen. Es werden auch Fallstricke in der Klausur genannt und Tipps gegeben. Geh einfach hin. &lt;br /&gt;
&lt;br /&gt;
=== Haskell-Hausaufgabe ===&lt;br /&gt;
Haskell ist eine funktionale Progammiersprache, die nicht unbedingt intuitiv ist. Anstatt mit den VL-Folien zu lernen, empfielt es sich, die ersten sechs Kapitel des kostenlosen Online-Buches [https://learnyouahaskell.github.io/chapters.html &amp;quot;Learn you a Haskell for great good&amp;quot;] durchzuarbeiten, davon klaut Glesner auch nur. &lt;br /&gt;
&lt;br /&gt;
Die Hausaufgabe ist idR. interessant und machbar, wenn man '''rechtzeitig''' anfängt: Einfach direkt, wenn du Haskell nicht kannst. Solltest du Haskell können, oder in anderen Programmiermodulen keine Probleme gehabt haben, plane 2-3 Wochen, je nach Pensum, ein. Die Sprechstunden sind am Schluss überfüllt. &lt;br /&gt;
&lt;br /&gt;
=== Test === &lt;br /&gt;
Im ersten Test kamen Prolog und Programmierparadigmen dran. Hier in die Tutorien gehen und Alttests durcharbeiten. &lt;br /&gt;
Suche im Netz ein Prolog-Cheat sheet und schreib, das was du brauchst, auf den Spickzettel. &lt;br /&gt;
&lt;br /&gt;
=== Klausur === &lt;br /&gt;
In der Klausur kamen MC-Fragen, Diagramme, OCL und das Hoare-Kalkül dran. Man durfte 3 Blätter (6 Seiten) Spickzettel benutzen. Für die MC-Fragen lohnt es sich, Notizen aus der VL auf den Spicker zu schreiben. &lt;br /&gt;
Für OCL die wichtigen Funktionen (auch hier: Cheat sheet) auf den Spickzettel schreiben. Für die Diagramme und Hoare in die Tutorien gehen und Altklausuren durchrechnen. Hoare gab dieses Jahr einfache Punkte mit nur wenig Übung.&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25361</id>
		<title>Softwaretechnik und Programmierparadigmen</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25361"/>
		<updated>2024-03-06T19:12:45Z</updated>

		<summary type="html">&lt;p&gt;Milan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Softwaretechnik und Programmierparadigmen (SWTPP)''' gibt (zumindest laut Modulbeschreibung) eine Einführung im Bereich Softwareengineering und behandelt die Programmiersprachen Haskell, OCL und Prolog, sowie das Hoare-Kalkül.&lt;br /&gt;
&lt;br /&gt;
'''TL;DR: '''&lt;br /&gt;
VL sind useless, Haskell selber lernen &amp;amp; mit HA rechtzeitig anfangen, Tutorien lohnen sich, Spickzettel vollmachen&lt;br /&gt;
&lt;br /&gt;
== Guide ==&lt;br /&gt;
Die Modulbewertung (95er Schlüssel) setzt sich aus einer Hausaufgabe (30P), einem MC-Test (20P) und einer Klausur (50P) zusammen.&lt;br /&gt;
&lt;br /&gt;
=== Lehrangebot ===  &lt;br /&gt;
Die Vorlesungen sind (Stand WiSe 23/24) wenig lehrreich. Es werden einfache Inhalte durch- und Programmiersprachen vorgekaut, Komplizierteres (Hoare) wird nicht gut erklärt. Es lohnt sich daher, die Inhalte auf eigene Faust zu lernen, indem du die Folien durchgehst, ggf. googelst und bei Unklarheiten Tutor*Innen fragst. &lt;br /&gt;
&lt;br /&gt;
Die Tutorien sind einigermaßen interessant gestaltet. Tutorienbesuch verringert den Lernaufwand später erheblich, da genau die Aufgabenformate behandelt werden, die dann auch in Test und Klausur rankommen. Es werden auch Fallstricke in der Klausur genannt und Tipps gegeben. Geh einfach hin. &lt;br /&gt;
&lt;br /&gt;
=== Haskell-Hausaufgabe ===&lt;br /&gt;
Haskell ist eine funktionale Progammiersprache, die nicht unbedingt intuitiv ist. Anstatt mit den VL-Folien zu lernen, empfielt es sich, die ersten sechs Kapitel des kostenlosen Online-Buches [https://learnyouahaskell.github.io/chapters.html &amp;quot;Learn you a Haskell for great good&amp;quot;] durchzuarbeiten, davon klaut Glesner auch nur. &lt;br /&gt;
&lt;br /&gt;
Die Hausaufgabe ist idR. interessant und machbar, wenn man '''rechtzeitig''' anfängt: Einfach direkt, wenn du Haskell nicht kannst. Solltest du Haskell können, oder in anderen Programmiermodulen keine Probleme gehabt haben, plane 2-3 Wochen, je nach Pensum, ein. Die Sprechstunden sind am Schluss überfüllt. &lt;br /&gt;
&lt;br /&gt;
=== Test === &lt;br /&gt;
Im ersten Test kamen Prolog und Programmierparadigmen dran. Hier in die Tutorien gehen und Alttests durcharbeiten. &lt;br /&gt;
Suche im Netz ein Prolog-Cheat sheet und schreib, das was du brauchst, auf den Spickzettel. &lt;br /&gt;
&lt;br /&gt;
=== Klausur === &lt;br /&gt;
In der Klausur kamen MC-Fragen, Diagramme, OCL und das Hoare-Kalkül dran. Man durfte 3 Blätter (6 Seiten) Spickzettel benutzen. Für die MC-Fragen lohnt es sich, Notizen aus der VL auf den Spicker zu schreiben. &lt;br /&gt;
Für OCL die wichtigen Funktionen (auch hier: Cheat sheet) auf den Spickzettel schreiben. Für die Diagramme und Hoare in die Tutorien gehen und Altklausuren durchrechnen. Hoare gab dieses Jahr einfache Punkte mit nur wenig Übung.&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25360</id>
		<title>Softwaretechnik und Programmierparadigmen</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25360"/>
		<updated>2024-03-06T19:11:02Z</updated>

		<summary type="html">&lt;p&gt;Milan: 3. sg. -&amp;gt; 2. sg; grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Softwaretechnik und Programmierparadigmen (SWTPP)''' gibt (zumindest laut Modulbeschreibung) eine Einführung im Bereich Softwareengineering und behandelt die Programmiersprachen Haskell, OCL und Prolog, sowie das Hoare-Kalkül.&lt;br /&gt;
&lt;br /&gt;
'''TL;DR: '''&lt;br /&gt;
VL sind useless, Haskell selber lernen &amp;amp; mit HA rechtzeitig anfangen, Tutorien lohnen sich, Spickzettel vollmachen&lt;br /&gt;
&lt;br /&gt;
== Guide ==&lt;br /&gt;
Die Modulbewertung (95er Schlüssel) setzt sich aus einer Hausaufgabe (30P), einem MC-Test (20P) und einer Klausur (50P) zusammen.&lt;br /&gt;
&lt;br /&gt;
=== Lehrangebot ===  &lt;br /&gt;
Die Vorlesungen sind (Stand WiSe 23/24) wenig lehrreich. Es werden einfache Inhalte durch- und Programmiersprachen vorgekaut, Komplizierteres (Hoare) wird nicht gut erklärt. Es lohnt sich daher, die Inhalte auf eigene Faust zu lernen, indem du die Folien durchgehst, ggf. googelst und bei Unklarheiten Tutor*Innen fragst. &lt;br /&gt;
&lt;br /&gt;
Die Tutorien sind einigermaßen interessant gestaltet. Tutorienbesuch verringert den Lernaufwand später erheblich, da genau die Aufgabenformate behandelt werden, die dann auch in Test und Klausur rankommen. Es werden auch Fallstricke in der Klausur genannt und Tipps gegeben. Geh einfach hin. &lt;br /&gt;
&lt;br /&gt;
=== Haskell-Hausaufgabe ===&lt;br /&gt;
Haskell ist eine funktionale Progammiersprache, die nicht unbedingt intuitiv ist. Anstatt mit den VL-Folien zu lernen, empfielt es sich, die ersten sechs Kapitel des kostenlosen Online-Buches [https://learnyouahaskell.github.io/chapters.html &amp;quot;Learn you a Haskell for great good&amp;quot;] durchzuarbeiten, davon klaut Glesner auch nur. &lt;br /&gt;
Die Hausaufgabe ist idR. interessant und machbar, wenn man '''rechtzeitig''' anfängt: Einfach direkt, wenn du Haskell nicht kannst. Solltest du Haskell können, oder in anderen Programmiermodulen keine Probleme gehabt haben, plane 2-3 Wochen, je nach Pensum, ein. Die Sprechstunden sind am Schluss überfüllt. &lt;br /&gt;
&lt;br /&gt;
=== Test === &lt;br /&gt;
Im ersten Test kamen Prolog und Programmierparadigmen dran. Hier in die Tutorien gehen und Alttests durcharbeiten. &lt;br /&gt;
Suche im Netz ein Prolog-Cheat sheet und schreib, das was du brauchst, auf den Spickzettel. &lt;br /&gt;
&lt;br /&gt;
=== Klausur === &lt;br /&gt;
In der Klausur kamen MC-Fragen, Diagramme, OCL und das Hoare-Kalkül dran. Man durfte 3 Blätter (6 Seiten) Spickzettel benutzen. Für die MC-Fragen lohnt es sich, Notizen aus der VL auf den Spicker zu schreiben. &lt;br /&gt;
Für OCL die wichtigen Funktionen (auch hier: Cheat sheet) auf den Spickzettel schreiben. Für die Diagramme und Hoare in die Tutorien gehen und Altklausuren durchrechnen. Hoare gab dieses Jahr einfache Punkte mit nur wenig Übung.&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25359</id>
		<title>Cafe Shila</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25359"/>
		<updated>2024-03-06T16:34:53Z</updated>

		<summary type="html">&lt;p&gt;Milan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das '''Café Shila''' ist ein studentisch geführtes Café an der TU Berlin hinter dem Mathegebäude.&lt;br /&gt;
&lt;br /&gt;
Generell ist man im Shila hilfsbereit, aber hässlich.&lt;br /&gt;
&lt;br /&gt;
Ansonsten gilt das Shila als das beste Café der Uni. Wenn es nicht gerade schimmelt. &lt;br /&gt;
&lt;br /&gt;
== Angebote==&lt;br /&gt;
* Mate&lt;br /&gt;
* Kaffee (0,4€)&lt;br /&gt;
* Tee (versch. Sorten)&lt;br /&gt;
* Bier&lt;br /&gt;
* Sekt&lt;br /&gt;
* Wein&lt;br /&gt;
* Cola&lt;br /&gt;
* Spezi&lt;br /&gt;
* Limo (Proviant, schiebt anders)&lt;br /&gt;
* Wasser laut &amp;amp; leise &lt;br /&gt;
* Schokolade fest &amp;amp; flüssig&lt;br /&gt;
* Erdnüsse&lt;br /&gt;
&lt;br /&gt;
* man kann hier auch die örtliche Mikrowelle nutzen&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[I-cafe]]&lt;br /&gt;
&lt;br /&gt;
* [https://maps.app.goo.gl/puBafydEHK8SeE4k6 Google-Maps-Link] &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wichtige Orte]]&lt;br /&gt;
[[Kategorie:Fakultäts-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25358</id>
		<title>Cafe Shila</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25358"/>
		<updated>2024-03-06T16:29:03Z</updated>

		<summary type="html">&lt;p&gt;Milan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das '''Café Shila''' ist ein studentisch geführtes Café an der TU Berlin hinter dem Mathegebäude.&lt;br /&gt;
&lt;br /&gt;
Generell ist man im Shila hilfsbereit, aber hässlich.&lt;br /&gt;
&lt;br /&gt;
Ansonsten gilt das Shila als das beste Café der Uni. Wenn es nicht gerade schimmelt. &lt;br /&gt;
&lt;br /&gt;
== Angebote==&lt;br /&gt;
* Mate&lt;br /&gt;
* Kaffee (0,4€)&lt;br /&gt;
* Tee (versch. Sorten)&lt;br /&gt;
* Bier&lt;br /&gt;
* Sekt&lt;br /&gt;
* Wein&lt;br /&gt;
* Cola&lt;br /&gt;
* Spezi&lt;br /&gt;
* Limo (Proviant, schiebt anders)&lt;br /&gt;
* Wasser laut &amp;amp; leise &lt;br /&gt;
* Schokolade Block &amp;amp; heiß&lt;br /&gt;
* Erdnüsse&lt;br /&gt;
&lt;br /&gt;
* man kann hier auch die örtliche Mikrowelle nutzen&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[I-cafe]]&lt;br /&gt;
&lt;br /&gt;
* [https://maps.app.goo.gl/puBafydEHK8SeE4k6 Google-Maps-Link] &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wichtige Orte]]&lt;br /&gt;
[[Kategorie:Fakultäts-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25357</id>
		<title>Cafe Shila</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25357"/>
		<updated>2024-03-06T16:28:34Z</updated>

		<summary type="html">&lt;p&gt;Milan: update :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das '''Café Shila''' ist ein studentisch geführtes Café an der TU Berlin hinter dem Mathegebäude.&lt;br /&gt;
&lt;br /&gt;
Generell ist man im Shila hilfsbereit, ebenso wie bei der Freitagsrunde. Also ebenso einfach fragen!&lt;br /&gt;
&lt;br /&gt;
Ansonsten gilt das Shila als das beste Café der Uni. Wenn es nicht gerade schimmelt. &lt;br /&gt;
&lt;br /&gt;
== Angebote==&lt;br /&gt;
* Mate&lt;br /&gt;
* Kaffee (0,4€)&lt;br /&gt;
* Tee (versch. Sorten)&lt;br /&gt;
* Bier&lt;br /&gt;
* Sekt&lt;br /&gt;
* Wein&lt;br /&gt;
* Cola&lt;br /&gt;
* Spezi&lt;br /&gt;
* Limo (Proviant, schiebt anders)&lt;br /&gt;
* Wasser laut &amp;amp; leise &lt;br /&gt;
* Schokolade Block &amp;amp; heiß&lt;br /&gt;
* Erdnüsse&lt;br /&gt;
&lt;br /&gt;
* man kann hier auch die örtliche Mikrowelle nutzen&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[I-cafe]]&lt;br /&gt;
&lt;br /&gt;
* [https://maps.app.goo.gl/puBafydEHK8SeE4k6 Google-Maps-Link] &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wichtige Orte]]&lt;br /&gt;
[[Kategorie:Fakultäts-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25356</id>
		<title>Softwaretechnik und Programmierparadigmen</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25356"/>
		<updated>2024-03-04T15:23:17Z</updated>

		<summary type="html">&lt;p&gt;Milan: updated swtpp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Softwaretechnik und Programmierparadigmen (SWTPP) gibt (auf dem Papier) eine Einführung im Bereich Softwareengineering und behandelt die Programmiersprachen Haskell, OCL und Prolog, sowie das Hoare-Kalkül.&lt;br /&gt;
&lt;br /&gt;
'''TL;DR: '''&lt;br /&gt;
VL sind useless, Haskell selber lernen &amp;amp; mit HA rechtzeitig anfangen, Tutorien lohnen sich, Spickzettel vollmachen&lt;br /&gt;
&lt;br /&gt;
== Guide ==&lt;br /&gt;
Die Modulbewertung (95er Schlüssel) setzt sich aus einer Hausaufgabe (30P), einem MC-Test(20P) und einer Klausur(50P) zusammen.&lt;br /&gt;
&lt;br /&gt;
=== Lehrangebot ===  &lt;br /&gt;
Die Vorlesungen sind (Stand WiSe 23/24) wenig lehrreich. Es werden ewig lange einfache Sachen durch- und Programmiersprachen vorgekaut, Komplizierteres (Hoare) wird nicht gut erklärt. Es lohnt sich sehr, die Inhalte auf eigene Faust zu lernen, indem man die Folien durchgeht, ggf. googelt und bei Unklarheiten Tutor*Innen fragt. &lt;br /&gt;
&lt;br /&gt;
Die Tutorien sind einigermaßen interessant gestaltet. Tutorienbesuch verringert den Lernaufwand für Test und Klausur erheblich, da Aufgabenformate genau behandelt werden, die dann auch rankommen. Es werden auch Fallstricke in der Klausur genannt und Tipps gegeben. &lt;br /&gt;
&lt;br /&gt;
=== Haskell-Hausaufgabe ===&lt;br /&gt;
Haskell ist eine funktionale Progammiersprache, die nicht unbedingt intuitiv ist. Anstatt die VL zu benutzen, empfielt es sich, die ersten sechs Kapitel des kostenlosen Online-Buches [https://learnyouahaskell.github.io/chapters.html &amp;quot;Learn you a Haskell for great good&amp;quot;] durchzuarbeiten, davon klaut Glesner auch nur. &lt;br /&gt;
Die Hausaufgabe ist idR. interessant und machbar, wenn man '''rechtzeitig''' anfängt - einfach direkt, wenn man Haskell nicht kann. Die Sprechstunden sind am Schluss überfüllt. &lt;br /&gt;
&lt;br /&gt;
=== Test === &lt;br /&gt;
Im ersten Test kamen Prolog und Programmierparadigmen dran. Hier in die Tutorien gehen und Alttests durcharbeiten. &lt;br /&gt;
Suche im Netz ein Prolog-Cheat sheet und schreib, das was du brauchst es auf den Spickzettel. &lt;br /&gt;
&lt;br /&gt;
=== Klausur === &lt;br /&gt;
In der Klausur kamen MC-Fragen, Diagramme, OCL und das Hoare-Kalkül dran. Man durfte 3 Blätter (6 Seiten) Spickzettel benutzen. Für die MC-Fragen lohnt es sich, Notizen aus der VL auf den Spicker zu schreiben. &lt;br /&gt;
Für OCL die wichtigen Funktionen auf den Spickzettel schreiben. Für die Diagramme und Hoare in die Tutorien gehen und Altklausuren durchrechnen. Hoare gab dieses Jahr einfache Punkte mit nur wenig Übung.&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25355</id>
		<title>Softwaretechnik und Programmierparadigmen</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Softwaretechnik_und_Programmierparadigmen&amp;diff=25355"/>
		<updated>2024-03-04T13:30:54Z</updated>

		<summary type="html">&lt;p&gt;Milan: added SWTPP Guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Softwaretechnik und Programmierparadigmen (SWTPP) gibt (auf dem Papier) eine Einführung im Bereich Softwareengineering und behandelt die Programmiersprachen Haskell, OCL und Prolog, sowie das Hoare-Kalkül.&lt;br /&gt;
&lt;br /&gt;
'''TL;DR: '''&lt;br /&gt;
VL sind useless, Haskell selber lernen &amp;amp; mit HA rechtzeitig anfangen, Tutorien lohnen sich, Spickzettel vollmachen&lt;br /&gt;
&lt;br /&gt;
== Guide ==&lt;br /&gt;
Die Modulbewertung (95er Schlüssel) setzt sich aus einer Hausaufgabe (30P), einem MC-Test(20P) und einer Klausur(50P) zusammen.&lt;br /&gt;
&lt;br /&gt;
=== Lehrangebot ===  &lt;br /&gt;
Die Vorlesungen sind (Stand WiSe 23/24) wenig lehrreich. Es werden ewig lange einfache Sachen durch- und Programmiersprachen vorgekaut, Komplizierteres (Hoare) wird nicht gut erklärt. Es lohnt sich sehr, die Inhalte auf eigene Faust zu lernen, indem man die Folien durchgeht, ggf. googelt und bei Unklarheiten Tutor*Innen fragt. &lt;br /&gt;
&lt;br /&gt;
Die Tutorien sind einigermaßen interessant gestaltet. Tutorienbesuch verringert den Lernaufwand für Test und Klausur erheblich, da Aufgabenformate genau behandelt werden, die dann auch rankommen. Es werden auch Fallstricke in der Klausur genannt und Tipps gegeben. &lt;br /&gt;
&lt;br /&gt;
=== Haskell-Hausaufgabe ===&lt;br /&gt;
Haskell ist eine funktionale Progammiersprache, die nicht unbedingt intuitiv ist. Anstatt die VL zu benutzen, empfielt es sich, die ersten sechs Kapitel des kostenlosen Online-Buches [https://learnyouahaskell.github.io/chapters.html &amp;quot;Learn you a Haskell for great good&amp;quot;] durchzuarbeiten, das klaut Glesner auch nur. &lt;br /&gt;
Die Hausaufgabe ist idR. interessant und machbar, wenn man '''rechtzeitig''' anfängt - einfach direkt, wenn man Haskell nicht kann. Die Sprechstunden sind am Schluss überfüllt. &lt;br /&gt;
&lt;br /&gt;
=== Test === &lt;br /&gt;
Im ersten Test kamen Prolog und Programmierparadigmen dran. Hier in die Tutorien gehen und Alttests durcharbeiten. &lt;br /&gt;
Suche im Netz ein Prolog-Cheat sheet und schreib es auf den Spickzettel. &lt;br /&gt;
&lt;br /&gt;
=== Klausur === &lt;br /&gt;
In der Klausur kamen MC-Fragen, Diagramme, OCL und das Hoare-Kalkül dran. Man durfte 3 Blätter (6 Seiten) Spickzettel benutzen. Für die MC-Fragen lohnt es sich, Notizen aus der VL auf den Spicker zu schreiben. &lt;br /&gt;
Für OCL die wichtigen Funktionen auf den Spickzettel schreiben. Für die Diagramme und Hoare in die Tutorien gehen und Altklausuren durchrechnen.&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Jobs&amp;diff=25339</id>
		<title>Jobs</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Jobs&amp;diff=25339"/>
		<updated>2024-02-28T20:33:08Z</updated>

		<summary type="html">&lt;p&gt;Milan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Uni ist ein wunderbarer Platz, um gute Leute zu finden, die auch noch für wenig Geld arbeiten. Das wissen Unternehmen und deshalb kleben sie die Pinwände unserer Gebäude mit Stellenangeboten zu. Wer keine Lust hat, durch die Uni zu laufen (Laufen ist überbewertet), der kann sich entweder hier im Wiki umschauen oder sich an unserer Jobs-Mailingliste anmelden.&lt;br /&gt;
&lt;br /&gt;
Und wer ein Job-Angebot bekannt machen möchte, der kann einfach an die Mailingliste schreiben und muss nicht mehr mühselig Zettel kleben. Bitte die [[Mailingliste:Jobs|Anleitung]] beachten.&lt;br /&gt;
&lt;br /&gt;
== Was für Jobs gibt es ==&lt;br /&gt;
&lt;br /&gt;
Es gibt…&lt;br /&gt;
* Stellen als [[Arbeiten_an_der_TU|Tutor*in (auch studentische*r Mitarbeiter*in)]] an der TU,&lt;br /&gt;
* viel zu tun [[Jobs in der Freitagsrunde|in der Freitagsrunde]] – unbezahlt, aber nicht umsonst ;-)&lt;br /&gt;
* Jobs auch außerhalb der Uni&lt;br /&gt;
&lt;br /&gt;
== Wie ist die Bezahlung? ==&lt;br /&gt;
&lt;br /&gt;
* Meist Verhandlungssache&lt;br /&gt;
* Viele richten sich nach dem Regelstundensatz der TU Berlin für Tutor*inn*en (~14 Euro/Stunde) oder locken mit geringfügig mehr&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
Denke daran, dass du - vor allem kurz vor Studienabschluss - eine qualifizierte Arbeitskraft für lau bist. Du musst zwar eingearbeitet werden, aber das müssen alle, bei dir dauert das eventuell nur etwas länger. Zur Orientierung: in der freien Wirtschaft ist ein Stundenlohn von ~20€ auch ohne Abschluss durchaus möglich. &lt;br /&gt;
Ansonsten sollten Arbeitszeiten und Stundenzahl mit dem Studium und deiner aktuellen Situation vereinbar sein. &lt;br /&gt;
Homeoffice ist nach Corona in einigen Firmen der Standard.&lt;br /&gt;
&lt;br /&gt;
== Wo findet man Jobs? ==&lt;br /&gt;
&lt;br /&gt;
* Auf der [https://tub.stellenticket.de/de/welcome/ Stellenticket-Seite der TU Berlin]&lt;br /&gt;
* oder auf unserer Jobs-Liste: '''[mailto:jobs@lists.freitagsrunde.org jobs@lists.freitagsrunde.org]'''&lt;br /&gt;
** [http://lists.freitagsrunde.org/mailman/listinfo/jobs An- und Abmeldung]&lt;br /&gt;
** [http://lists.freitagsrunde.org/pipermail/jobs/ Archiv]&lt;br /&gt;
* [https://www.innocampus.tu-berlin.de/jobs/ Aktuelle Ausschreibungen bei innoCampus (ehem. MuLF)]&lt;br /&gt;
&lt;br /&gt;
== Jobs anbieten ==&lt;br /&gt;
&lt;br /&gt;
Wer Jobs hat, kann über [[Mailingliste:Jobs|unsere Mailingliste]] Ausschreibungen einfach an suchende Studierende schicken.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Uni-ABC]]&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Jobs&amp;diff=25338</id>
		<title>Jobs</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Jobs&amp;diff=25338"/>
		<updated>2024-02-28T20:28:29Z</updated>

		<summary type="html">&lt;p&gt;Milan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Uni ist ein wunderbarer Platz, um gute Leute zu finden, die auch noch für wenig Geld arbeiten. Das wissen Unternehmen und deshalb kleben sie die Pinwände unserer Gebäude mit Stellenangeboten zu. Wer keine Lust hat, durch die Uni zu laufen (Laufen ist überbewertet), der kann sich entweder hier im Wiki umschauen oder sich an unserer Jobs-Mailingliste anmelden.&lt;br /&gt;
&lt;br /&gt;
Und wer ein Job-Angebot bekannt machen möchte, der kann einfach an die Mailingliste schreiben und muss nicht mehr mühselig Zettel kleben. Bitte die [[Mailingliste:Jobs|Anleitung]] beachten.&lt;br /&gt;
&lt;br /&gt;
== Was für Jobs gibt es ==&lt;br /&gt;
&lt;br /&gt;
Es gibt…&lt;br /&gt;
* Stellen als [[Arbeiten_an_der_TU|Tutor*in (auch studentische*r Mitarbeiter*in)]] an der TU,&lt;br /&gt;
* viel zu tun [[Jobs in der Freitagsrunde|in der Freitagsrunde]] – unbezahlt, aber nicht umsonst ;-)&lt;br /&gt;
* Jobs auch außerhalb der Uni&lt;br /&gt;
&lt;br /&gt;
== Wie ist die Bezahlung? ==&lt;br /&gt;
&lt;br /&gt;
* Meist Verhandlungssache&lt;br /&gt;
* Viele richten sich nach dem Regelstundensatz der TU Berlin für Tutor*inn*en (~14 Euro/Stunde) oder locken mit geringfügig mehr&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass du - vor allem kurz vor Studienabschluss - eine qualifizierte Arbeitskraft für lau bist. Du musst zwar eingearbeitet werden, aber das müssen alle, bei dir dauert das eventuell nur etwas länger. Zur Orientierung: in der freien Wirtschaft ist ein Stundenlohn von ~20€ auch ohne Abschluss durchaus möglich. Ansonsten kann man immer noch an den Arbeitszeiten und -länge verhandeln, so dass sie mit dem Studium vereinbar sind.&lt;br /&gt;
&lt;br /&gt;
== Wo findet man Jobs? ==&lt;br /&gt;
&lt;br /&gt;
* Auf der [https://tub.stellenticket.de/de/welcome/ Stellenticket-Seite der TU Berlin]&lt;br /&gt;
* oder auf unserer Jobs-Liste: '''[mailto:jobs@lists.freitagsrunde.org jobs@lists.freitagsrunde.org]'''&lt;br /&gt;
** [http://lists.freitagsrunde.org/mailman/listinfo/jobs An- und Abmeldung]&lt;br /&gt;
** [http://lists.freitagsrunde.org/pipermail/jobs/ Archiv]&lt;br /&gt;
* [https://www.innocampus.tu-berlin.de/jobs/ Aktuelle Ausschreibungen bei innoCampus (ehem. MuLF)]&lt;br /&gt;
&lt;br /&gt;
== Jobs anbieten ==&lt;br /&gt;
&lt;br /&gt;
Wer Jobs hat, kann über [[Mailingliste:Jobs|unsere Mailingliste]] Ausschreibungen einfach an suchende Studierende schicken.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Uni-ABC]]&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Jobs&amp;diff=25337</id>
		<title>Jobs</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Jobs&amp;diff=25337"/>
		<updated>2024-02-28T20:28:05Z</updated>

		<summary type="html">&lt;p&gt;Milan: Hungerlohn erhöht, eigenen Senf dazugegeben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Uni ist ein wunderbarer Platz, um gute Leute zu finden, die auch noch für wenig Geld arbeiten. Das wissen Unternehmen und deshalb kleben sie die Pinwände unserer Gebäude mit Stellenangeboten zu. Wer keine Lust hat, durch die Uni zu laufen (Laufen ist überbewertet), der kann sich entweder hier im Wiki umschauen oder sich an unserer Jobs-Mailingliste anmelden.&lt;br /&gt;
&lt;br /&gt;
Und wer ein Job-Angebot bekannt machen möchte, der kann einfach an die Mailingliste schreiben und muss nicht mehr mühselig Zettel kleben. Bitte die [[Mailingliste:Jobs|Anleitung]] beachten.&lt;br /&gt;
&lt;br /&gt;
== Was für Jobs gibt es ==&lt;br /&gt;
&lt;br /&gt;
Es gibt…&lt;br /&gt;
* Stellen als [[Arbeiten_an_der_TU|Tutor*in (auch studentische*r Mitarbeiter*in)]] an der TU,&lt;br /&gt;
* viel zu tun [[Jobs in der Freitagsrunde|in der Freitagsrunde]] – unbezahlt, aber nicht umsonst ;-)&lt;br /&gt;
* Jobs auch außerhalb der Uni&lt;br /&gt;
&lt;br /&gt;
== Wie ist die Bezahlung? ==&lt;br /&gt;
&lt;br /&gt;
* Meist Verhandlungssache&lt;br /&gt;
* Viele richten sich nach dem Regelstundensatz der TU Berlin für Tutor*inn*en (~14 Euro/Stunde) oder locken mit geringfügig mehr&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass du - vor allem kurz vor Studienabschluss - eine qualifizierte Arbeitskraft für lau bist. Du musst zwar eingearbeitet werden, aber das müssen alle, bei dir dauert das eventuell nur etwas länger. Zur Orientierung: in der Freien Wirtschaft ist ein Stundenlohn von ~20€ auch ohne Abschluss durchaus möglich. Ansonsten kann man immer noch an den Arbeitszeiten und -länge verhandeln, so dass sie mit dem Studium vereinbar sind.&lt;br /&gt;
&lt;br /&gt;
== Wo findet man Jobs? ==&lt;br /&gt;
&lt;br /&gt;
* Auf der [https://tub.stellenticket.de/de/welcome/ Stellenticket-Seite der TU Berlin]&lt;br /&gt;
* oder auf unserer Jobs-Liste: '''[mailto:jobs@lists.freitagsrunde.org jobs@lists.freitagsrunde.org]'''&lt;br /&gt;
** [http://lists.freitagsrunde.org/mailman/listinfo/jobs An- und Abmeldung]&lt;br /&gt;
** [http://lists.freitagsrunde.org/pipermail/jobs/ Archiv]&lt;br /&gt;
* [https://www.innocampus.tu-berlin.de/jobs/ Aktuelle Ausschreibungen bei innoCampus (ehem. MuLF)]&lt;br /&gt;
&lt;br /&gt;
== Jobs anbieten ==&lt;br /&gt;
&lt;br /&gt;
Wer Jobs hat, kann über [[Mailingliste:Jobs|unsere Mailingliste]] Ausschreibungen einfach an suchende Studierende schicken.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Uni-ABC]]&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Tipps_zum_richtigen_Studieren&amp;diff=25336</id>
		<title>Tipps zum richtigen Studieren</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Tipps_zum_richtigen_Studieren&amp;diff=25336"/>
		<updated>2024-02-28T20:16:25Z</updated>

		<summary type="html">&lt;p&gt;Milan: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Lehrveranstaltungen ==&lt;br /&gt;
&lt;br /&gt;
* [[gute Gruppen finden|Sucht euch eine gut funktionierende Lern-Gruppe]]. (Dreiergruppen sind am besten. Andere Größen taugen nicht viel im Vergleich. Wenn ihr keine Wahl habt, trefft euch zu noch größeren Gruppen und teilt euch dann in Dreiergruppen auf.) &lt;br /&gt;
** Am besten ist es, wenn eine Gruppe für mehrere Veranstaltungen besteht, da es sich besser koordinieren lässt.&lt;br /&gt;
** Gut funktionierend heißt, ihr macht alle die Hausaufgaben zusammen. Nicht einer TechGI, einer TheGI, etc.&lt;br /&gt;
* '''immer''' die Hausaufgaben machen&lt;br /&gt;
* Mitschriften von Vorlesungen immer nachbereiten, sprich: erstens, alles nochmal durchgehen und prüfen, ob alles verstanden wurde. Und zweitens, nochmal ins Reine schreiben, was du aus Zeitmangeln nur hingekritzelt hast, sonst kannst du es später, wenn du für Klausuren lernst, nicht mehr lesen.&lt;br /&gt;
* Zwei Tutorien sind manchmal besser als ein Tutorium und eine schlechte Vorlesung (vor allem am Anfang)&lt;br /&gt;
* Es lohnt sich, zwischen zwei Veranstaltungen Freistunden zu haben, weil man dann Zeit für Hausaufgaben hat - außerdem haben da automatisch alle Gruppenmitglieder Zeit.&lt;br /&gt;
* Habt keine Scheu, eine neue Gruppe zu bilden, wenn es nicht klappt. Sprecht mit den Tutoren, das Wechseln geht fast immer&lt;br /&gt;
* Habt nicht den Anspruch, dass es im ersten Semester gleich mit allen Gruppen super klappen muss - sucht euch für das neue Semester im Zweifel neue Leute oder bildet mit den Leuten aus euren Gruppen in denen es klappt eine neue Gruppe.&lt;br /&gt;
&lt;br /&gt;
== Prüfungen ==&lt;br /&gt;
* Wenn ihr auf Klausuren lernt, holt euch [[Klausurensammlung|alte Klausuren]] und rechnet die durch. Wichtig: Erst zu dritt durchrechnen, dann gegenseitig korrigieren und ERST DANN in die Musterlösung schauen. Nichts ist schlimmer als die Lösung zuerst anzuschauen, da man dann denkt: &amp;quot;Och, das kann ich ja...&amp;quot;. Den Fehler macht zwar trotzdem jeder, aber steter Tropfen höhlt den Stein... :)&lt;br /&gt;
* Bitte achtet auf die StuPO. Egal was ein Sekretariat besser wissen möchte - die Fristen sind durch die StuPO festgelegt. Ein Beispiel: Zu einer Klausur (für PÄS gelten andere Regelungen) kann sich der Student bis zu 3 Werktage vor dem Prüfungstermin abmelden. Diese Frist ist in der StuPO §13 festgelegt und kann durch kein Sekretariat außer Kraft gesetzt werden. Spätere Abmeldungen führen automatisch zu: &amp;quot;Prüfungsleistung nicht bestanden&amp;quot;. Ausnahme: Nachweis einer Krankmeldung.&lt;br /&gt;
* Auch wenn es andere machen: Das Schieben von Klausuren ist der Anfang vom Ende! Klar, Ausreden gibt es viele warum du es dieses Semester auf keinen Fall schaffen kannst, für die Klausur zu lernen, aber mal ganz ehrlich, wird es später besser werden...?&lt;br /&gt;
&lt;br /&gt;
== Angebote der Uni und andere Services ==&lt;br /&gt;
* Als Student habt ihr nicht nur Vergünstigungen im täglichen Leben, sondern auch noch andere Möglichkeiten, kostenlos an sonst teure Dinge zu kommen:&lt;br /&gt;
** Über Kooperationen der [[Bibliothek|Uni-Bibliothek]] habt ihr Zugang zu vielen Online-Zeitschriften und IEEE/ACM-Datenbanken mit wissenschaftlichen Texten&lt;br /&gt;
** Die Fakultät 4 hat ein Programm mit Microsoft und ermöglicht Euch den [[MSDNAA|kostenlosen Download von Windows, Visual Studio und mehr]].&lt;br /&gt;
** Im [[Lötlabor]] und in [[Cafeterien | studentischen Cafes]] ([[Cafe Shila]], [[icafe]]) findet viel Leben statt, man kann Freunde treffen und Freizeit verbringen.&lt;br /&gt;
* [http://www.tu-sport.de/ Uni-Sport] hat ein riesiges Angebot. Es ist günstig, macht Spaß, hält fit und man lernt neue Leute kennen!&lt;br /&gt;
* Es gibt einen &amp;quot;[[Brötchenmann]]&amp;quot; der durch die Räume läuft und euch relativ günstig leckere Brötchen/Salate verkauft-&lt;br /&gt;
&lt;br /&gt;
* Der Gründungsservice der TU vermittelt Hilfe/Erfahrung/Kontakte[[Gründungsservice TU Berlin | Gründungsservice TU Berlin]]&lt;br /&gt;
&lt;br /&gt;
== Freitagsrunde ==&lt;br /&gt;
* Melde dich auf unserer [[Infoliste]] an, um immer über aktuelle Entwicklungen in der Freitagsrunde oder an der Uni informiert zu sein.&lt;br /&gt;
* Besuche uns bei unseren [[FR 5046|Treffen freitags]],  und melde dich auf der [[Freitagsrunde:fopen|fopen-Diskussionsliste]] an, wo sich unsere wöchentlichen Protokolle finden.&lt;br /&gt;
* [[Mitmachen|Hilf uns]], wenn Du etwas hast, mit dem Du dich einbringen kannst!&lt;br /&gt;
&lt;br /&gt;
== Beratungsstellen ==&lt;br /&gt;
&lt;br /&gt;
Und schließlich gibt es noch diverse [[Beratungsstellen]] die auf die Uni verteilt sind.&lt;br /&gt;
&lt;br /&gt;
== Arbeiten ==&lt;br /&gt;
* es gibt auch die Möglichkeit [[Arbeiten an der TU |an der TU zu arbeiten]]. Dies erspart einem meist größere Wege und ist eigentlich sehr gut bezahlt.&lt;br /&gt;
* Wer Arbeit sucht kann auf der [[Jobs]]-Wikiseite gucken&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Einführungswoche]]&lt;br /&gt;
[[Kategorie: Uni-ABC]]&lt;br /&gt;
[[Kategorie: Fakultäts-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Aktuelle_Ereignisse&amp;diff=25335</id>
		<title>Aktuelle Ereignisse</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Aktuelle_Ereignisse&amp;diff=25335"/>
		<updated>2024-02-28T20:10:37Z</updated>

		<summary type="html">&lt;p&gt;Milan: Weiterleitungsziel von Termine nach Aktuelles geändert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Aktuelles]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Campus&amp;diff=25334</id>
		<title>Campus</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Campus&amp;diff=25334"/>
		<updated>2024-02-28T20:06:10Z</updated>

		<summary type="html">&lt;p&gt;Milan: find super, dass ihr ne richtig nice karte im Git habt, die aber einfach nicht benutzt. Wenn die wer eingebettet kriegt, go, habs auf die Schnelle nicht hingekriegt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der '''Hauptcampus''' der TU Berlin befindet sich in Charlottenburg, rund um den Ernst-Reuter-Platz. Ein zweiter Campus liegt im Technologie- und Innovationspark Berlin im Bezirk Wedding. Darüber hinaus gibt es vereinzelt Standorte im Norden und Süden der Stadt.&lt;br /&gt;
&lt;br /&gt;
== Karten ==&lt;br /&gt;
* [https://docs.freitagsrunde.org/E-Woche/2020/SoSe/Campus_Map/ Karte der Freitagsrunde]&lt;br /&gt;
* [https://www.tu.berlin/studieren/uni-leben/campusplan Hier finden sich Lagepläne aller Gebäude]&lt;br /&gt;
* [https://asta.tu-berlin.de/campusplan/ Alternativer Campusplan des AStA]&lt;br /&gt;
* Siehe auch: [[Liste von Hörsälen]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Gebäude]]&lt;br /&gt;
[[Kategorie:Navigation]]&lt;br /&gt;
[[Kategorie:Uni-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Vorlage:Vortrag&amp;diff=25332</id>
		<title>Vorlage:Vortrag</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Vorlage:Vortrag&amp;diff=25332"/>
		<updated>2024-02-27T18:49:17Z</updated>

		<summary type="html">&lt;p&gt;Milan: hilfe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= {{{titel|{{ARTICLEPAGENAMEE}}}}} =&lt;br /&gt;
[[Kategorie:Meta:Löschen]]&lt;br /&gt;
Vortragende:&lt;br /&gt;
: {{{vortragende|Vortragende gesucht!}}}&lt;br /&gt;
&lt;br /&gt;
Ort: '''{{{ort|''Folgt demnächst''}}}'''&lt;br /&gt;
&lt;br /&gt;
=== Themen ===&lt;br /&gt;
{{{themen|''Folgt demnächst''}}}&lt;br /&gt;
&lt;br /&gt;
=== Folien ===&lt;br /&gt;
{{{folien|''Folgt demnächst''}}}&lt;br /&gt;
&lt;br /&gt;
=== Zusatzmaterialien ===&lt;br /&gt;
{{{zusatzmaterialien|''Folgt demnächst''}}}&lt;br /&gt;
&lt;br /&gt;
==== Mitschnitte ====&lt;br /&gt;
{{{mitschnitte|''Folgt demnächst''}}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Vorlage:Tutorium&amp;diff=25331</id>
		<title>Vorlage:Tutorium</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Vorlage:Tutorium&amp;diff=25331"/>
		<updated>2024-02-27T18:48:57Z</updated>

		<summary type="html">&lt;p&gt;Milan: loser artikel, kann weg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== {{{titel|{{ARTICLEPAGENAMEE}}}}} ==&lt;br /&gt;
[[Kategorie:Meta:Löschen]]&lt;br /&gt;
&lt;br /&gt;
Tutoren/innen:&lt;br /&gt;
: {{{tutoren|Tutanten gesucht!}}}&lt;br /&gt;
&lt;br /&gt;
=== Ort ===&lt;br /&gt;
{{{ort|&lt;br /&gt;
: '''Tel  106'''&lt;br /&gt;
: '''Tel 206'''}}}&lt;br /&gt;
&lt;br /&gt;
=== Themen ===&lt;br /&gt;
{{{themen|''Folgt demnächst''}}}&lt;br /&gt;
&lt;br /&gt;
=== Unterlagen ===&lt;br /&gt;
{{{unterlagen|''Folgt demnächst''}}}&lt;br /&gt;
&lt;br /&gt;
=== Zusatzmaterialien ===&lt;br /&gt;
{{{zusatzmaterialien|''Folgt demnächst''}}}&lt;br /&gt;
&lt;br /&gt;
==== Inhaltlich passende Mitschnitte ====&lt;br /&gt;
{{{mitschnitte|''Folgt demnächst''}}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anmerkungen für nächstes Jahr ===&lt;br /&gt;
{{{anmerkungen|}}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:CKurs]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Campus&amp;diff=25330</id>
		<title>Campus</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Campus&amp;diff=25330"/>
		<updated>2024-02-27T18:36:38Z</updated>

		<summary type="html">&lt;p&gt;Milan: Links aktualisiert, Alternativen Campusplan hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der '''Hauptcampus''' der TU Berlin befindet sich in Charlottenburg, rund um den Ernst-Reuter-Platz. Ein zweiter Campus liegt im Technologie- und Innovationspark Berlin im Bezirk Wedding. Darüber hinaus gibt es vereinzelt Standorte im Norden und Süden der Stadt.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://www.tu.berlin/studieren/uni-leben/campusplan Hier finden sich Lagepläne aller Gebäude]&lt;br /&gt;
* [https://asta.tu-berlin.de/campusplan/ Alternativer Campusplan des AStA]&lt;br /&gt;
* Siehe auch: [[Liste von Hörsälen]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Gebäude]]&lt;br /&gt;
[[Kategorie:Navigation]]&lt;br /&gt;
[[Kategorie:Uni-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=TU_Berlin&amp;diff=25329</id>
		<title>TU Berlin</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=TU_Berlin&amp;diff=25329"/>
		<updated>2024-02-27T18:34:18Z</updated>

		<summary type="html">&lt;p&gt;Milan: altes Logo entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
Die '''Technische Universität Berlin''' ist die größte Uni Berlins und eine der ältesten technischen Universitäten Deutschlands.&lt;br /&gt;
&lt;br /&gt;
=== Abkürzungen ===&lt;br /&gt;
Da »Technische Universität Berlin« den meisten Leuten zu lang ist, wird es fast immer als TU, TUB oder TU Berlin abgekürzt.&lt;br /&gt;
&lt;br /&gt;
=== Gebäudeplan ===&lt;br /&gt;
Eine Karte der Gebäude auf dem Campus der TU findet sich unter [[Campus]].&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.tu-berlin.de/ Offizielle Homepage der TU Berlin]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Uni-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Diskussion:TU_Berlin&amp;diff=25328</id>
		<title>Diskussion:TU Berlin</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Diskussion:TU_Berlin&amp;diff=25328"/>
		<updated>2024-02-27T18:33:45Z</updated>

		<summary type="html">&lt;p&gt;Milan: Die Seite wurde geleert.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Diskussion:TU_Berlin&amp;diff=25327</id>
		<title>Diskussion:TU Berlin</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Diskussion:TU_Berlin&amp;diff=25327"/>
		<updated>2024-02-27T18:33:03Z</updated>

		<summary type="html">&lt;p&gt;Milan: Die Seite wurde neu angelegt: „hilfe“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hilfe&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Opal&amp;diff=25326</id>
		<title>Opal</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Opal&amp;diff=25326"/>
		<updated>2024-02-27T18:05:34Z</updated>

		<summary type="html">&lt;p&gt;Milan: finde nicht, wie man Verweise im Reiter löscht, deshalb das Tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{historisch}}&lt;br /&gt;
[[Datei:Opal.jpg|miniatur]]&lt;br /&gt;
&lt;br /&gt;
'''Opal''' ist eine [[WikiPedia:Funktionale Programmiersprache|funktionale Programmiersprache]], die Euch (unter anderem) in [[MPGI 1 (Bachelor)|MPGI 1]] begegnen wird. Sie wurde an der TU Berlin von Prof. [[Pepper]] entwickelt. Die [[Freitagsrunde]] bietet euch mehrere Ressourcen rund um das Thema Opal.&lt;br /&gt;
&lt;br /&gt;
== [[Opal FAQ]] ==&lt;br /&gt;
In der [[Opal FAQ]] findet Ihr häufige Probleme, die bei der Benutzung von Opal aufreten, einschließlich ihrer Lösungen.&lt;br /&gt;
&lt;br /&gt;
== [[Opalix]] ==&lt;br /&gt;
Wir haben für euch auch eine Linux-Distribution erstellt, bei der das lauffähige Opal gleich dabei ist. Ihr müsst also nichts installieren, einfach das Image auf einen [[Opalix#Opalix_USB_Abbild_herunterladen_und_selber_brennen|USB-Stick schreiben]] und davon booten. Opalix ist dann persistent auf den Stick installiert, das heißt, dass ihr mit Opalix arbeiten könnt, als würdet ihr ganz normal von eurer Festplatte starten. Ihr könnt Programme installieren und Dokumente speichern.&lt;br /&gt;
&lt;br /&gt;
Im Raum der Kultfrunde (MAR 0.005) könnt ihr euch das Image auf einen USB-Stick laden (der sollte mindestens zwei GB Speicher haben, da das Image etwas 1,1GB groß ist). Der Stick wird vollständig überschrieben, da ein völlig anderes Dateisystem genutzt wird, der Stick sollte also leer sein oder keine wichtigen Daten enthalten.&lt;br /&gt;
&lt;br /&gt;
[http://freitagsrunde.org/~aeichner/Opalix2013.iso Opalix-ISO 2013]&lt;br /&gt;
&lt;br /&gt;
== [[Opal für Linux/Unix]] ==&lt;br /&gt;
Wenn Ihr nicht Opalix benutzen möchtet, könnt ihr [[Opal für Linux/Unix#Ubuntu|fertige Opal-Pakete für verschiedene Linux-Distributionen]] herunterladen oder [[Opal_für_Linux/Unix#Hinweis_zum_Selber-Kompilieren|aus Quellen kompilieren]]. &lt;br /&gt;
&lt;br /&gt;
Seit Version 2.4 wird auch [[Opal für Linux/Unix#MacOS X|MacOS X]] unterstützt.&lt;br /&gt;
&lt;br /&gt;
== [[Opal Syntax-Highlighting]] ==&lt;br /&gt;
Eine Liste der Editoren, die [[Opal Syntax-Highlighting|Syntax-Highlighting für Opal]] unterstützen.&lt;br /&gt;
&lt;br /&gt;
== Lehrveranstaltungen mit Opal ==&lt;br /&gt;
* [[MPGI 1 (Bachelor)]]&lt;br /&gt;
* [[Informatik 1]]&lt;br /&gt;
* [[PSS]]&lt;br /&gt;
* [[Compilerbau 1]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen zu Opal und [[OCS]] findet Ihr hier:&lt;br /&gt;
* http://projects.uebb.tu-berlin.de/opal/&lt;br /&gt;
&lt;br /&gt;
Die 10 Opalismen:&lt;br /&gt;
* http://web.archive.org/web/20050507105405/http://wwwwbs.cs.tu-berlin.de/user/riess/ns20/die_10_Opalismen.html&lt;br /&gt;
&lt;br /&gt;
opal-examples:&lt;br /&gt;
* https://github.com/stefanschramm/opal-examples&lt;br /&gt;
&lt;br /&gt;
[[Bibliotheca Opalica]]&lt;br /&gt;
*https://projects.uebb.tu-berlin.de/opal/dosfop/2.4/bibopalicaman/&lt;br /&gt;
&lt;br /&gt;
== Fragen/Probleme ==&lt;br /&gt;
&lt;br /&gt;
Bei Fragen/Problemen rund um Opal/Opalix könnt ihr euch an [mailto:opalix@freitagsrunde.org opalix@freitagsrunde.org] wenden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Opal]]&lt;br /&gt;
[[Kategorie: Opalix]]&lt;br /&gt;
[[Kategorie: Fachbegriffe der Informatik]]&lt;br /&gt;
[[Kategorie: Fakultäts-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Kategorie:Uni-ABC&amp;diff=25325</id>
		<title>Kategorie:Uni-ABC</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Kategorie:Uni-ABC&amp;diff=25325"/>
		<updated>2024-02-27T17:55:54Z</updated>

		<summary type="html">&lt;p&gt;Milan: Aktuelles Wiki rausgehoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das '''Uni-ABC''' umfasst wichtige Begriffe, die uniweit für [[Studierende]] von Bedeutung sind.&lt;br /&gt;
&lt;br /&gt;
'''Ihr findet die aktuelle Version davon in deutsch und in englisch unter [https://uniabc.freitagsrunde.org/ https://uniabc.freitagsrunde.org/].'''&lt;br /&gt;
&lt;br /&gt;
In diesem Wiki finden sich hierzu noch die folgenden Artikel. &lt;br /&gt;
Siehe auch [[:Kategorie:Fakultäts-ABC|Fakultäts-ABC]] für spezifische Themen zur [[Fakultät IV]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Studium]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=I-caf%C3%A9&amp;diff=25324</id>
		<title>I-café</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=I-caf%C3%A9&amp;diff=25324"/>
		<updated>2024-02-27T17:54:19Z</updated>

		<summary type="html">&lt;p&gt;Milan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{veraltet}}&lt;br /&gt;
Das i-café ist ein studentisch geführtes und verwaltetes Café, früher im [[Franklingebäude]]. Jetzt befindet es sich im [[Fraunhofergebäude]]. Wollt Ihr bequemer als in der Cafeteria sitzen, euch ein bisschen unterhalten, billiger trinken oder auch mal feiern, dann seid Ihr hier richtig. Sollte es Euch gefallen, könnt Ihr Euch überlegen, beim Thekendienst mitzumachen. Sprecht einfach einen der netten Menschen hinterm Tresen an - die beißen nicht und freuen sich über euer Interesse...&lt;br /&gt;
&lt;br /&gt;
[[Bild:FR_i-cafe.png|Lageplan des i-café]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wichtige Orte]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25323</id>
		<title>Cafe Shila</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25323"/>
		<updated>2024-02-27T17:47:17Z</updated>

		<summary type="html">&lt;p&gt;Milan: Verweis auf ET-Ini gestrichen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das '''Café Shila''' ist ein studentisch geführtes Café an der TU Berlin hinter dem Mathegebäude.&lt;br /&gt;
&lt;br /&gt;
Generell ist man im Shila hilfsbereit, ebenso wie bei der Freitagsrunde. Also ebenso einfach fragen!&lt;br /&gt;
&lt;br /&gt;
Ansonsten gilt das Shila als das beste Café der Uni. Wenn es nicht gerade schimmelt. &lt;br /&gt;
&lt;br /&gt;
== Angebote==&lt;br /&gt;
* Mate&lt;br /&gt;
* Kaffee (0,4€)&lt;br /&gt;
* Bier&lt;br /&gt;
* Cola&lt;br /&gt;
* Tee (versch. Sorten)&lt;br /&gt;
* Wasser laut &amp;amp; leise &lt;br /&gt;
* Schokolade&lt;br /&gt;
* Instantnudeln&lt;br /&gt;
&lt;br /&gt;
* man kann hier auch die örtliche Mikrowelle nutzen&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[I-cafe]]&lt;br /&gt;
&lt;br /&gt;
* [https://maps.app.goo.gl/puBafydEHK8SeE4k6 Google-Maps-Link] &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wichtige Orte]]&lt;br /&gt;
[[Kategorie:Fakultäts-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25322</id>
		<title>Cafe Shila</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Cafe_Shila&amp;diff=25322"/>
		<updated>2024-02-27T17:46:31Z</updated>

		<summary type="html">&lt;p&gt;Milan: aktualisiert, nicht gültiges gestrichen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das '''Café Shila''' ist ein studentisch geführtes Café an der TU Berlin hinter dem Mathegebäude.&lt;br /&gt;
&lt;br /&gt;
Generell ist man im Shila hilfsbereit, ebenso wie bei der Freitagsrunde. Also ebenso einfach fragen!&lt;br /&gt;
&lt;br /&gt;
Ansonsten gilt das Shila als das beste Café der Uni. Wenn es nicht gerade schimmelt. &lt;br /&gt;
&lt;br /&gt;
== Angebote==&lt;br /&gt;
* Mate&lt;br /&gt;
* Kaffee (0,4€)&lt;br /&gt;
* Bier&lt;br /&gt;
* Cola&lt;br /&gt;
* Tee (versch. Sorten)&lt;br /&gt;
* Wasser laut &amp;amp; leise &lt;br /&gt;
* Schokolade&lt;br /&gt;
* Instantnudeln&lt;br /&gt;
&lt;br /&gt;
* man kann hier auch die örtliche Mikrowelle nutzen&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[ET-Ini]]&lt;br /&gt;
* [[I-cafe]]&lt;br /&gt;
&lt;br /&gt;
* [https://maps.app.goo.gl/puBafydEHK8SeE4k6 Google-Maps-Link] &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wichtige Orte]]&lt;br /&gt;
[[Kategorie:Fakultäts-ABC]]&lt;/div&gt;</summary>
		<author><name>Milan</name></author>
		
	</entry>
</feed>