<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.65.91.154</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.65.91.154"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/91.65.91.154"/>
	<updated>2026-10-28T20:11:30Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=StuPO_90&amp;diff=17530</id>
		<title>StuPO 90</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=StuPO_90&amp;diff=17530"/>
		<updated>2012-02-23T19:26:01Z</updated>

		<summary type="html">&lt;p&gt;91.65.91.154: Auslaufen des Diploms&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die alte [[Studien- und Prüfungsordnung]] für den [[Diplom]]-Studiengang [[Informatik_(Studiengang)|Informatik]].&lt;br /&gt;
&lt;br /&gt;
Zum Auslaufen der Diplomstudiengänge: [[Diplom/Frist]]&lt;br /&gt;
&lt;br /&gt;
== Festlegungen ==&lt;br /&gt;
Die StuPO 90 teilt den Diplomstudiengang Informatik in zwei Teile:&lt;br /&gt;
* [[Grundstudium Informatik|Grundstudium]],&lt;br /&gt;
* [[Hauptstudium Informatik|Hauptstudium]].&lt;br /&gt;
&lt;br /&gt;
== Nachlesen ==&lt;br /&gt;
* Studienordnung:  http://docs.freitagsrunde.org/StuPO/StuO90.xhtml&lt;br /&gt;
* Prüfungsordnung: http://docs.freitagsrunde.org/StuPO/PO90.xhtml&lt;br /&gt;
&lt;br /&gt;
== Andere StuPOs ==&lt;br /&gt;
Die StuPO 90 löste die [[Historische Prüfungsordnungen|Prüfungsordnungen A und B]] ab und wird inzwischen durch die neue [[StuPO Informatik]] ersetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Fakultäts-ABC]]&lt;br /&gt;
[[Kategorie: Hochschulpolitik]]&lt;/div&gt;</summary>
		<author><name>91.65.91.154</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Beratung&amp;diff=17474</id>
		<title>Beratung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Beratung&amp;diff=17474"/>
		<updated>2012-02-14T23:54:27Z</updated>

		<summary type="html">&lt;p&gt;91.65.91.154: Für die Suche im wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Beratungsstellen]]&lt;/div&gt;</summary>
		<author><name>91.65.91.154</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Javakurs_2010&amp;diff=17446</id>
		<title>Javakurs 2010</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Javakurs_2010&amp;diff=17446"/>
		<updated>2012-02-11T10:44:45Z</updated>

		<summary type="html">&lt;p&gt;91.65.91.154: /* Ansprechpartner */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Auch dieses Jahres bietet die Freitagsrunde wieder einen Javakurs an!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Kurs findet vom &amp;lt;strong&amp;gt;22.03.2010&amp;lt;/strong&amp;gt;  bis einschließlich dem &amp;lt;strong&amp;gt;25.03.2010&amp;lt;/strong&amp;gt; statt.&amp;lt;br&amp;gt;&lt;br /&gt;
Er richtet sich vor allem an Programmieranfänger, dennoch ist wirklich jeder herzlich willkommen der an Java interessiert ist.&lt;br /&gt;
&lt;br /&gt;
Die Vorlesungen finden in Raum H2032 statt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die offenen Übungen finden voraussichtlich in den Räumen TEL106 und TEL206 statt. &lt;br /&gt;
&lt;br /&gt;
Der Kurs ist kostenlos. Aufgrund der immensen Nachfrage müssen wir die Anmeldung leider schließen.&lt;br /&gt;
&lt;br /&gt;
== ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Zeit&lt;br /&gt;
 !Mo 22.03.2010&lt;br /&gt;
 !Di 23.03.2010&lt;br /&gt;
 !Mi 24.03.2010&lt;br /&gt;
 !Do 25.03.2010&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 |10:15-11:15&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag01 | Hello World]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag03 | Methoden]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag04 | Von der Aufgabe zum Code]]&lt;br /&gt;
 |bgcolor=&amp;quot;#E8E8E8&amp;quot; |[[Javakurs 2010/Vortrag06 | Vererbung]]&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |11:30-13:15&lt;br /&gt;
 |Übung&lt;br /&gt;
 |Übung&lt;br /&gt;
 |Übung&lt;br /&gt;
 |Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#FFFFFF&amp;quot;&lt;br /&gt;
 |13:15-14:15&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |Mittagspause&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 |14:15-15:15&lt;br /&gt;
 |[[Javakurs 2010/Vortrag02 | Schleifen und Felder]]&lt;br /&gt;
 | bgcolor=&amp;quot;#F5F5F5&amp;quot; rowspan=2 | Übung&lt;br /&gt;
 |[[Javakurs 2010/Vortrag05 | Objekte und Kapselung]]&lt;br /&gt;
 | bgcolor=&amp;quot;#F5F5F5&amp;quot; rowspan=2 |Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 |15:30-17:30&lt;br /&gt;
 | Übung&lt;br /&gt;
 | Übung&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Javakurs/Übungsaufgaben | --&amp;gt; Zu den Übungsaufgaben &amp;lt;-- ]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ==&lt;br /&gt;
&lt;br /&gt;
== Warum teilnehmen? ==&lt;br /&gt;
Der Javakurs richtet sich an Programmieranfänger, die gerne Java lernen möchten. Wir haben uns zum Ziel gesetzt, möglichst gut verständliche und vor allem motivierende Lehre zu machen weil wir glauben, dass die Uni-Lehre manchmal zu langweilig ist und deshalb viele Studenten unnötigerweise Probleme haben. Lernen sollte Spass machen, nicht anstrengen. Folglich dient der Kurs auch nicht der direkten Vorbereitung auf Tests oder Klausuren.&lt;br /&gt;
&lt;br /&gt;
Hauptsächlich hoffen wir damit den Teilnehmern von MPGI2 einen Kickstart für ihre Vorlesung zu geben, weil es je nach Dozent und Zuhörer manchmal zu schnell und manchmal zu langsam geht. Allerdings steht der Kurs jedem offen!&lt;br /&gt;
&lt;br /&gt;
Wenn du also einfach gerne Java lernen möchtest, dann bist du herzlich eingeladen!&lt;br /&gt;
&lt;br /&gt;
Der Kurs beruht ursprünglich auf der Initiative einiger StudentInnen und wissenschaftlicher Mitarbeiter. Er ist aus der Erfahrung entstanden, dass viele Informatiker in den Übungsaufgaben des 2. Semesters nicht unbedingt Probleme mit dem Stoff des Semesters selbst haben, sich jedoch sehr beim Erlernen der Sprache Java quälen. Die Situation hat sich seitdem zwar etwas geändert, aber vielen, gerade Studenten aus Informatik-fremden Studiengängen ist immer noch die Sprache selbst und nicht die Algorithmen eine Hürde.&lt;br /&gt;
&lt;br /&gt;
Der Kurs wird wie im letzten Jahr komplett von engagierten StudentInnen geplant und durchgeführt. Insgesamt stehen euch in den Übungen zwölf TutorInnen mit Rat und Tat zur Seite, im Schnitt also einer für fünf bis zehn Studentierende. Aus den Reihen der TutorInnen rekrutieren sich auch unsere Vortragenden in den Vorlesungen. Inzwischen haben wir einiges an Erfahrung sammeln können, überarbeiten aber jedes Jahr die Vorträge neu und unterziehen sie einem Peer-Review Prozess. Wir hoffen, dass wir damit einen möglichst hohe Qualität bieten können.&lt;br /&gt;
&lt;br /&gt;
Der Kurs kann in der Kürze der Zeit bei weitem nicht alle Aspekte von Java beleuchten, hierfür sind weiterführende Lehrveranstaltungen und das Lehrpersonal der Uni da. Er stellt jedoch eine gute Starthilfe dar und hilft vor allem StudentInnen denen der Umgang mit Programmiersprachen noch ein wenig fremd ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es gibt für diesen Kurs keinerlei Scheine oder sonstige Anrechnung.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt auch keinerlei Anwesenheitspflicht. Dementsprechend entspannt ist allerdings auch die Atmosphäre. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Teilnahmevoraussetzungen ==&lt;br /&gt;
Der Javakurs ist für absolute Programmieranfänger konzipiert. Wir setzen keinerlei Programmierkenntnisse voraus. Was wir allerdings voraussetzen sind rudimentäre Kentnisse wie man einen Computer bedient. Wir bringen euch nicht bei wie ihr eine Datei öffnet oder einen Browser bedient.&lt;br /&gt;
&lt;br /&gt;
Die zweite Voraussetzung ist eine Möglichkeit bzw. ein Account um in den Übungsräumen zu arbeiten. Die Übungen finden in den Rechnerräumen des IRB statt. In diese Rechner kann man sich mit einem TubIT- oder CS-Account einloggen. Wenn du noch keinen TubIT oder CS-Account hast bist du vermutlich auch nicht Student an der TU Berlin. Dann ist die einfachste Lösung für Dich deinen eigenen Laptop mitzubringen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anmeldung ==&lt;br /&gt;
&amp;lt;strike&amp;gt;Um Anmeldung unter &lt;br /&gt;
[http://anmeldung.freitagsrunde.org http://anmeldung.freitagsrunde.org] &lt;br /&gt;
wird zur besseren Planbarkeit gebeten.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;Auf Grund der immensen Nachfrage mussten wir die Anmeldung leider schließen. &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Termine &amp;amp; Räume == &lt;br /&gt;
Der Javakurs findet vom Montag, den 22.03.2010 bis einschließlich Donnerstag, den 25.03.2010 statt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Vorlesungen finden im H2032 statt, die Übungen im TEL106 und TEL206.&lt;br /&gt;
&lt;br /&gt;
Steckdosen sind jeweils links und rechts im Raum. Bitte bringt ein paar Mehrfachsteckdosen mit, andere freuen sich ;)&lt;br /&gt;
&lt;br /&gt;
== Inhalte ==&lt;br /&gt;
&lt;br /&gt;
=== Vorlesungen ===&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Inhalte der Vorlesungen folgt in Kürze.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== offene Übungen ===&lt;br /&gt;
&lt;br /&gt;
Der praktische Teil des Kurses orientiert sich vor allem daran was ihr selbst ausprobieren wollt.&amp;lt;br&amp;gt;&lt;br /&gt;
Ihr bestimmt selbst in welchem Schwierigkeitsgrad ihr lernen wollt und wie hoch euer Arbeitspensum ist.&lt;br /&gt;
Die folgenden Übungsaufgaben sind als Vorschläge zu verstehen aus denen ihr auswählen könnt, was und vor allem wie viel davon ihr versuchen wollt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;[[Javakurs/Übungsaufgaben | --&amp;gt; Zu den Übungsaufgaben &amp;lt;-- ]]&#039;&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- outdated.&lt;br /&gt;
== Ansprechpartner ==&lt;br /&gt;
Solltet ihr Fragen zu Organisatorischem haben sind wir unter&lt;br /&gt;
&amp;lt;email&amp;gt;javakurs2010@freitagsrunde.org&amp;lt;/email&amp;gt;&lt;br /&gt;
gerne für euch da!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [[Javakurs 2010/Tutorenportal]]&lt;br /&gt;
* [[Javakurs 2010/Feedback]]&lt;br /&gt;
* [[Javakurs2008| Seiten des Javakurses 2008]]&lt;br /&gt;
* [[Javakurs2009| Seiten des Javakurses 2009]]&lt;br /&gt;
* [[Javakurs/Übungsaufgaben|Übungsaufgaben]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Veranstaltungen der Freitagsrunde]]&lt;/div&gt;</summary>
		<author><name>91.65.91.154</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Drucker&amp;diff=17445</id>
		<title>Drucker</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Drucker&amp;diff=17445"/>
		<updated>2012-02-11T10:27:23Z</updated>

		<summary type="html">&lt;p&gt;91.65.91.154: wikiformatting suckx&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drucken an der TU =&lt;br /&gt;
== Bei der tuBIT ==&lt;br /&gt;
&lt;br /&gt;
* Schwarz-Weiß DIN A4: EN 004, MA 270 oder H 5150b&lt;br /&gt;
* Farbig DIN A4: EN 004 (Drucker EN004Color auswählen)&lt;br /&gt;
* im MA 270 kann man außerdem scannen&lt;br /&gt;
&lt;br /&gt;
* Preise: &lt;br /&gt;
** prepaid, Druckguthaben wird von Mensakarte &amp;quot;übertragen&amp;quot;&lt;br /&gt;
** Schwarz-Weiß einseitig/doppelseitig: 5 ct&lt;br /&gt;
** farbig: nach Farbanteil zwischen 7 ct und 60 ct [http://www.tubit.tu-berlin.de/menue/dienste/weitere_dienste/drucken_kopieren_scannen_brennen/tubit_-_drucken_und_kopieren/]&lt;br /&gt;
* Druckguthaben aufladen:&lt;br /&gt;
# Ins EN 004 oder MA 270 gehen und den Rechner zum Aufladen finden (meist im Eingangsbereich)&lt;br /&gt;
# Mensakarte dort einstecken&lt;br /&gt;
# Mit tuBIT-Zugangsdaten einloggen&lt;br /&gt;
# Guthaben von Mensakarte &amp;quot;übertragen&amp;quot; (zwischen einigen Cent und einigen Euro)&lt;br /&gt;
* Drucken:&lt;br /&gt;
** Vom tuBIT-Rechnerpool aus, Drucker sind dort eingerichtet&lt;br /&gt;
** Vom eigenen Rechner aus, Einrichtung: [http://www.tubit.tu-berlin.de/menue/dienste/weitere_dienste/drucken_kopieren_scannen_brennen/tubit_-_drucken_und_kopieren/ Tubit-Dokumentation]&lt;br /&gt;
** PDF-Direktdruck vom Campusportal aus [http://www.tubit.tu-berlin.de/menue/dienste/weitere_dienste/drucken_kopieren_scannen_brennen/einrichtung_der_printcampus-drucker/ Tubit-Dokumentation]&lt;br /&gt;
&lt;br /&gt;
== Im Unix-Pool ==&lt;br /&gt;
&lt;br /&gt;
* Ort: MA 241&lt;br /&gt;
* Schwarz-weiß und farbig, DIN A4&lt;br /&gt;
* kostenlos&lt;br /&gt;
* Voraussetzung: Unixpool-Account (z.B. durch Mathe-Lehrveranstaltung)&lt;br /&gt;
* Dokumentation: [http://www-pool.math.tu-berlin.de/public/druck-howto/index.xhtml# Unixpool-FAQ]&lt;br /&gt;
&lt;br /&gt;
== Im CIP-Pool (+ Plotten) ==&lt;br /&gt;
&lt;br /&gt;
* Ort: EB 431 [http://www.cip29.tu-berlin.de/index.php?index]&lt;br /&gt;
* Schwarz-Weiß und farbig&lt;br /&gt;
* DIN A4, A3&lt;br /&gt;
* Plotter 36&#039;&#039; und 42&#039;&#039; (zB für Poster)&lt;br /&gt;
* eigener Account muss bei dortigen Tutoren beantragt werden (wird aber auch Nicht-FakVI-Mitgliedern problemlos gegeben)&lt;br /&gt;
* Preise richten sich nach Format, Papierqualität u.ä. [http://www.cip29.tu-berlin.de/index.php?preise]&lt;br /&gt;
&lt;br /&gt;
== Im TEL108 ==&lt;br /&gt;
* nur mit Omni- bzw. Mensacard&lt;br /&gt;
* Anleitungen sind zu finden unter [http://www.eecs.tu-berlin.de/irb/v-menu/leitfaden/drucken_im_fakultaetsnetz/parameter/maxhilfe/]&lt;br /&gt;
&lt;br /&gt;
= Drucken in der Freitagsrunde =&lt;br /&gt;
&lt;br /&gt;
== Im Freitagsrundenraum ==&lt;br /&gt;
&lt;br /&gt;
* Bitte sparsam benutzen (z.B. nur für einzelne Seiten)&lt;br /&gt;
* per IPP (Internet Printing Protocol) auf stone unter dem Namen frunde freigegeben&lt;br /&gt;
* benutzbar z.B. aus dem Freitagsrundennetz heraus (10.23.42.0)&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Ubuntu (GNOME) ===&lt;br /&gt;
&lt;br /&gt;
# System -&amp;gt; Systemverwaltung -&amp;gt; Drucker&lt;br /&gt;
# Hinzufügen / Neu&lt;br /&gt;
# Netzwerkdrucker sollte automatisch erkannt werden (wenn man im Freitagsrundennetz ist)&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung per CUPS (unter Linux) ===&lt;br /&gt;
&lt;br /&gt;
# Im Browser verbinden mit localhost:631&lt;br /&gt;
# &amp;quot;Verwaltung&amp;quot;&lt;br /&gt;
# &amp;quot;Drucker hinzufügen&amp;quot;&lt;br /&gt;
# ggf. auf &amp;quot;Weiter&amp;quot;, wenn nicht automatisch erkannt&lt;br /&gt;
# unter &amp;quot;Andere Netzwerkdrucker:&amp;quot; Internet-Druckerprotokoll (ipp) auswählen&lt;br /&gt;
# als URI eintragen: ipp://10.23.42.1:631/printers/HP_LaserJet_4L_LPT_1&lt;br /&gt;
# Daten angeben:&lt;br /&gt;
* Name: HP-LaserJet-4L&lt;br /&gt;
* Beschreibung: HP LaserJet 4L&lt;br /&gt;
* Ort: Ueber Stone&lt;br /&gt;
* Marke: HP&lt;br /&gt;
* Treiber: HP LaserJet 4L - CUPS+Gutenprint v5.2.6 (en)&lt;br /&gt;
* Standardeinstellungen: Voreinstellungen sind okay&lt;br /&gt;
&lt;br /&gt;
== Mittels Druckerkarte ==&lt;br /&gt;
&lt;br /&gt;
* Standort: FR 5098&lt;br /&gt;
* Druckerkarte (am Anker) und PIN benötigt (im Zweifelsfall jemanden fragen)&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Ubuntu (GNOME) ===&lt;br /&gt;
&lt;br /&gt;
# System/Systemverwaltung/Drucken&lt;br /&gt;
# Hinzufügen oder Neu&lt;br /&gt;
# Geräte-URI eingeben: lpd://130.149.17.68/oce &lt;br /&gt;
# Wähle Treiber&lt;br /&gt;
## OCE&lt;br /&gt;
## VarioPrint 2060 (empfohlen)&lt;br /&gt;
# Installierbare Optionen (so lassen)&lt;br /&gt;
# Beschreibe Drucker (Ort eintragen: FR 5098)&lt;br /&gt;
# Anwenden&lt;br /&gt;
&lt;br /&gt;
Wenn man nun zum Drucker geht findet man im Menü unter seinem lokalen Nutzernamen den Druckjob.&lt;br /&gt;
&lt;br /&gt;
=== Über einen Uniserver per Konsole drucken ===&lt;br /&gt;
&lt;br /&gt;
==== manuell ====&lt;br /&gt;
# Datei per scp auf einen [[SSH#SSH_f.C3.BCr_den_Zugriff_auf_das_Fakult.C3.A4tsnetz|Uniserver]] laden&lt;br /&gt;
# ssh auf den Uniserver&lt;br /&gt;
# $ lpr -Pfr5098 &amp;lt;Dateiname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mittels Skript ====&lt;br /&gt;
mit folgendem Skript kann durch einen Befehl mit Datei als Parameter am Drucker im FR 5098 gedruckt werden.&lt;br /&gt;
* Skript abspeichern und ausführbar machen. (chmod u+x DATEI)&lt;br /&gt;
* &#039;KENNUNG&#039; im Skript durch eigene TUBit-Kennung ersetzen.&lt;br /&gt;
* Zur bequemeren Nutzung alias (z.B.: printpdf ) einrichten.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
if [ 1 -ne $# ]; then&lt;br /&gt;
 	echo -e &amp;quot;ERROR: missing parameter\nusage: $0 PRINTFILE&amp;quot;&lt;br /&gt;
 	exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
printfile=&amp;quot;$1&amp;quot;&lt;br /&gt;
login=&amp;quot;KENNUNG&amp;quot; &lt;br /&gt;
printer=&amp;quot;fr5098&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -f &amp;quot;$printfile&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;sending $printfile to printer $printer&amp;quot;&lt;br /&gt;
 	cat &amp;quot;$printfile&amp;quot; | ssh -l &amp;quot;$login&amp;quot; furor.cs.tu-berlin.de &amp;quot;lpr -P$printer&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
 	echo -e &amp;quot;ERROR: file not found \&#039;$printfile\&#039;&amp;quot;&lt;br /&gt;
 	exit&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.65.91.154</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Drucker&amp;diff=17444</id>
		<title>Drucker</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Drucker&amp;diff=17444"/>
		<updated>2012-02-11T10:25:41Z</updated>

		<summary type="html">&lt;p&gt;91.65.91.154: das script kann so nicht funktioniert haben - vemrutlich lag die Druckdatei noch zufällig im Home des Nutzers.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drucken an der TU =&lt;br /&gt;
== Bei der tuBIT ==&lt;br /&gt;
&lt;br /&gt;
* Schwarz-Weiß DIN A4: EN 004, MA 270 oder H 5150b&lt;br /&gt;
* Farbig DIN A4: EN 004 (Drucker EN004Color auswählen)&lt;br /&gt;
* im MA 270 kann man außerdem scannen&lt;br /&gt;
&lt;br /&gt;
* Preise: &lt;br /&gt;
** prepaid, Druckguthaben wird von Mensakarte &amp;quot;übertragen&amp;quot;&lt;br /&gt;
** Schwarz-Weiß einseitig/doppelseitig: 5 ct&lt;br /&gt;
** farbig: nach Farbanteil zwischen 7 ct und 60 ct [http://www.tubit.tu-berlin.de/menue/dienste/weitere_dienste/drucken_kopieren_scannen_brennen/tubit_-_drucken_und_kopieren/]&lt;br /&gt;
* Druckguthaben aufladen:&lt;br /&gt;
# Ins EN 004 oder MA 270 gehen und den Rechner zum Aufladen finden (meist im Eingangsbereich)&lt;br /&gt;
# Mensakarte dort einstecken&lt;br /&gt;
# Mit tuBIT-Zugangsdaten einloggen&lt;br /&gt;
# Guthaben von Mensakarte &amp;quot;übertragen&amp;quot; (zwischen einigen Cent und einigen Euro)&lt;br /&gt;
* Drucken:&lt;br /&gt;
** Vom tuBIT-Rechnerpool aus, Drucker sind dort eingerichtet&lt;br /&gt;
** Vom eigenen Rechner aus, Einrichtung: [http://www.tubit.tu-berlin.de/menue/dienste/weitere_dienste/drucken_kopieren_scannen_brennen/tubit_-_drucken_und_kopieren/ Tubit-Dokumentation]&lt;br /&gt;
** PDF-Direktdruck vom Campusportal aus [http://www.tubit.tu-berlin.de/menue/dienste/weitere_dienste/drucken_kopieren_scannen_brennen/einrichtung_der_printcampus-drucker/ Tubit-Dokumentation]&lt;br /&gt;
&lt;br /&gt;
== Im Unix-Pool ==&lt;br /&gt;
&lt;br /&gt;
* Ort: MA 241&lt;br /&gt;
* Schwarz-weiß und farbig, DIN A4&lt;br /&gt;
* kostenlos&lt;br /&gt;
* Voraussetzung: Unixpool-Account (z.B. durch Mathe-Lehrveranstaltung)&lt;br /&gt;
* Dokumentation: [http://www-pool.math.tu-berlin.de/public/druck-howto/index.xhtml# Unixpool-FAQ]&lt;br /&gt;
&lt;br /&gt;
== Im CIP-Pool (+ Plotten) ==&lt;br /&gt;
&lt;br /&gt;
* Ort: EB 431 [http://www.cip29.tu-berlin.de/index.php?index]&lt;br /&gt;
* Schwarz-Weiß und farbig&lt;br /&gt;
* DIN A4, A3&lt;br /&gt;
* Plotter 36&#039;&#039; und 42&#039;&#039; (zB für Poster)&lt;br /&gt;
* eigener Account muss bei dortigen Tutoren beantragt werden (wird aber auch Nicht-FakVI-Mitgliedern problemlos gegeben)&lt;br /&gt;
* Preise richten sich nach Format, Papierqualität u.ä. [http://www.cip29.tu-berlin.de/index.php?preise]&lt;br /&gt;
&lt;br /&gt;
== Im TEL108 ==&lt;br /&gt;
* nur mit Omni- bzw. Mensacard&lt;br /&gt;
* Anleitungen sind zu finden unter [http://www.eecs.tu-berlin.de/irb/v-menu/leitfaden/drucken_im_fakultaetsnetz/parameter/maxhilfe/]&lt;br /&gt;
&lt;br /&gt;
= Drucken in der Freitagsrunde =&lt;br /&gt;
&lt;br /&gt;
== Im Freitagsrundenraum ==&lt;br /&gt;
&lt;br /&gt;
* Bitte sparsam benutzen (z.B. nur für einzelne Seiten)&lt;br /&gt;
* per IPP (Internet Printing Protocol) auf stone unter dem Namen frunde freigegeben&lt;br /&gt;
* benutzbar z.B. aus dem Freitagsrundennetz heraus (10.23.42.0)&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Ubuntu (GNOME) ===&lt;br /&gt;
&lt;br /&gt;
# System -&amp;gt; Systemverwaltung -&amp;gt; Drucker&lt;br /&gt;
# Hinzufügen / Neu&lt;br /&gt;
# Netzwerkdrucker sollte automatisch erkannt werden (wenn man im Freitagsrundennetz ist)&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung per CUPS (unter Linux) ===&lt;br /&gt;
&lt;br /&gt;
# Im Browser verbinden mit localhost:631&lt;br /&gt;
# &amp;quot;Verwaltung&amp;quot;&lt;br /&gt;
# &amp;quot;Drucker hinzufügen&amp;quot;&lt;br /&gt;
# ggf. auf &amp;quot;Weiter&amp;quot;, wenn nicht automatisch erkannt&lt;br /&gt;
# unter &amp;quot;Andere Netzwerkdrucker:&amp;quot; Internet-Druckerprotokoll (ipp) auswählen&lt;br /&gt;
# als URI eintragen: ipp://10.23.42.1:631/printers/HP_LaserJet_4L_LPT_1&lt;br /&gt;
# Daten angeben:&lt;br /&gt;
* Name: HP-LaserJet-4L&lt;br /&gt;
* Beschreibung: HP LaserJet 4L&lt;br /&gt;
* Ort: Ueber Stone&lt;br /&gt;
* Marke: HP&lt;br /&gt;
* Treiber: HP LaserJet 4L - CUPS+Gutenprint v5.2.6 (en)&lt;br /&gt;
* Standardeinstellungen: Voreinstellungen sind okay&lt;br /&gt;
&lt;br /&gt;
== Mittels Druckerkarte ==&lt;br /&gt;
&lt;br /&gt;
* Standort: FR 5098&lt;br /&gt;
* Druckerkarte (am Anker) und PIN benötigt (im Zweifelsfall jemanden fragen)&lt;br /&gt;
&lt;br /&gt;
=== Einrichtung unter Ubuntu (GNOME) ===&lt;br /&gt;
&lt;br /&gt;
# System/Systemverwaltung/Drucken&lt;br /&gt;
# Hinzufügen oder Neu&lt;br /&gt;
# Geräte-URI eingeben: lpd://130.149.17.68/oce &lt;br /&gt;
# Wähle Treiber&lt;br /&gt;
## OCE&lt;br /&gt;
## VarioPrint 2060 (empfohlen)&lt;br /&gt;
# Installierbare Optionen (so lassen)&lt;br /&gt;
# Beschreibe Drucker (Ort eintragen: FR 5098)&lt;br /&gt;
# Anwenden&lt;br /&gt;
&lt;br /&gt;
Wenn man nun zum Drucker geht findet man im Menü unter seinem lokalen Nutzernamen den Druckjob.&lt;br /&gt;
&lt;br /&gt;
=== Über einen Uniserver per Konsole drucken ===&lt;br /&gt;
&lt;br /&gt;
==== manuell ====&lt;br /&gt;
# Datei per scp auf einen [[SSH#SSH_f.C3.BCr_den_Zugriff_auf_das_Fakult.C3.A4tsnetz|Uniserver]] laden&lt;br /&gt;
# ssh auf den Uniserver&lt;br /&gt;
# $ lpr -Pfr5098 &amp;lt;Dateiname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mittels Skript ====&lt;br /&gt;
mit folgendem Skript kann durch einen Befehl mit Datei als Parameter am Drucker im FR 5098 gedruckt werden.&lt;br /&gt;
* Skript abspeichern und ausführbar machen. (chmod u+x DATEI)&lt;br /&gt;
* &#039;KENNUNG&#039; im Skript durch eigene TUBit-Kennung ersetzen.&lt;br /&gt;
* Zur bequemeren Nutzung alias (z.B.: printpdf ) einrichten.&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 if [ 1 -ne $# ]; then&lt;br /&gt;
 	echo -e &amp;quot;ERROR: missing parameter\nusage: $0 PRINTFILE&amp;quot;&lt;br /&gt;
 	exit 1&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
 printfile=&amp;quot;$1&amp;quot;&lt;br /&gt;
 login=&amp;quot;KENNUNG&amp;quot; &lt;br /&gt;
 printer=&amp;quot;fr5098&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 if [ -f &amp;quot;$printfile&amp;quot; ]; then&lt;br /&gt;
 	echo &amp;quot;sending $printfile to printer $printer&amp;quot;&lt;br /&gt;
 	cat &amp;quot;$printfile&amp;quot; | ssh -l &amp;quot;$login&amp;quot; furor.cs.tu-berlin.de &amp;quot;lpr -P$printer&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
 	echo -e &amp;quot;ERROR: file not found \&#039;$printfile\&#039;&amp;quot;&lt;br /&gt;
 	exit&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.65.91.154</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Palindrome/Musterloesung&amp;diff=17422</id>
		<title>Javakurs/Übungsaufgaben/Palindrome/Musterloesung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Palindrome/Musterloesung&amp;diff=17422"/>
		<updated>2012-02-05T18:31:51Z</updated>

		<summary type="html">&lt;p&gt;91.65.91.154: preformatted text not working?!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 //@Author: S.M.B. 234&lt;br /&gt;
 //@Version: 1.0  &lt;br /&gt;
&lt;br /&gt;
 import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
 public class Palindrome {&lt;br /&gt;
	 String eingabe;&lt;br /&gt;
	 char[] wort, wortInvert;&lt;br /&gt;
&lt;br /&gt;
 public boolean check(String temp) {&lt;br /&gt;
		// ermöglicht auch die Eingabe von Tabulator und Leerzeichen und schließt diese von der Überprüfung aus&lt;br /&gt;
		temp = temp.replaceAll(&amp;quot; &amp;quot;, &amp;quot;&amp;quot;).replaceAll(&amp;quot;	&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		this.eingabe = temp.toLowerCase();&lt;br /&gt;
		this.wort = eingabe.toCharArray();&lt;br /&gt;
		wortInvert = new char[wort.length];&lt;br /&gt;
&lt;br /&gt;
		for (int i = 0; i &amp;lt; (wort.length); i++) {&lt;br /&gt;
			char letter = wort[i];&lt;br /&gt;
			wortInvert[(wort.length-1-i)] = letter;&lt;br /&gt;
		}&lt;br /&gt;
		for(int i = 0; i&amp;lt;wort.length; i++){&lt;br /&gt;
			if (wortInvert[i] != wort[i]) {&lt;br /&gt;
				System.out.println(temp + &amp;quot; ist kein Palindrom&amp;quot;);&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		System.out.println(temp + &amp;quot; ist ein Palindrom&amp;quot;);&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		System.out.print(&amp;quot;Willkommen beim Palindrom-Vergleicher\nGeben Sie das zu ueberpruefende Wort ein:&amp;quot;);&lt;br /&gt;
		Scanner in = new Scanner(System.in);&lt;br /&gt;
		Palindrome pal = new Palindrome();&lt;br /&gt;
		String temp = in.nextLine();&lt;br /&gt;
		pal.check(temp);&lt;br /&gt;
	}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.65.91.154</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Palindrome/Musterloesung&amp;diff=17421</id>
		<title>Javakurs/Übungsaufgaben/Palindrome/Musterloesung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Palindrome/Musterloesung&amp;diff=17421"/>
		<updated>2012-02-05T18:30:03Z</updated>

		<summary type="html">&lt;p&gt;91.65.91.154: nowiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;//@Author: S.M.B. 234&lt;br /&gt;
//@Version: 1.0  &lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
public class Palindrome {&lt;br /&gt;
	 String eingabe;&lt;br /&gt;
	 char[] wort, wortInvert;&lt;br /&gt;
&lt;br /&gt;
public boolean check(String temp) {&lt;br /&gt;
		// ermöglicht auch die Eingabe von Tabulator und Leerzeichen und schließt diese von der Überprüfung aus&lt;br /&gt;
		temp = temp.replaceAll(&amp;quot; &amp;quot;, &amp;quot;&amp;quot;).replaceAll(&amp;quot;	&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
		this.eingabe = temp.toLowerCase();&lt;br /&gt;
		this.wort = eingabe.toCharArray();&lt;br /&gt;
		wortInvert = new char[wort.length];&lt;br /&gt;
&lt;br /&gt;
		for (int i = 0; i &amp;lt; (wort.length); i++) {&lt;br /&gt;
			char letter = wort[i];&lt;br /&gt;
			wortInvert[(wort.length-1-i)] = letter;&lt;br /&gt;
		}&lt;br /&gt;
		for(int i = 0; i&amp;lt;wort.length; i++){&lt;br /&gt;
			if (wortInvert[i] != wort[i]) {&lt;br /&gt;
				System.out.println(temp + &amp;quot; ist kein Palindrom&amp;quot;);&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		System.out.println(temp + &amp;quot; ist ein Palindrom&amp;quot;);&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		System.out.print(&amp;quot;Willkommen beim Palindrom-Vergleicher\nGeben Sie das zu ueberpruefende Wort ein:&amp;quot;);&lt;br /&gt;
		Scanner in = new Scanner(System.in);&lt;br /&gt;
		Palindrome pal = new Palindrome();&lt;br /&gt;
		String temp = in.nextLine();&lt;br /&gt;
		pal.check(temp);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>91.65.91.154</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Opal_FAQ&amp;diff=17409</id>
		<title>Opal FAQ</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Opal_FAQ&amp;diff=17409"/>
		<updated>2012-01-28T14:17:58Z</updated>

		<summary type="html">&lt;p&gt;91.65.91.154: typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
==Benutzung des Interpreters oasys==&lt;br /&gt;
&lt;br /&gt;
===Starten von oasys, Ausführen von Programmen===&lt;br /&gt;
oasys lässt sich von der Shell 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 i.A. oasys in dem Verzeichnis starten, in dem die Dateien gespeichert sind.&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 oasys-Interpreter. &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.&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.&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 FunktionMitVielenArgument(&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;
WICHTIG: Sequenzen in dieser Form hin zuschreiben ist _böse_!!! Vor allem sorgt das für viel Verwirrung und verbirgt den wahren Charakter einer Sequenz!! Siehe dazu auch Beitrag Nummer 4. :)&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;
=== Konstruktion von Listen ===&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;
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;
=== Oasys an der Shell herumkommandieren: ===&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;
=== WHERE funktioniert 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;
=== Opal funktioniert nicht mit Zahlen über 32? ===&lt;br /&gt;
&lt;br /&gt;
Wenn man in [[Opal]] direkt Zahlen über 32 eingeben möchte, muß man das so hinschreiben: &lt;br /&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;
&lt;br /&gt;
Wobei &#039;Zahl&#039; irgendeine Zahl sein kann. Wichtig sind die Anführungszeichen und das Ausrufungszeichen dahinter.&lt;br /&gt;
&lt;br /&gt;
=== Eigene Backtick-Funktion (`) wird 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;
=== 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 `:&#039; instead of `-&amp;gt;&#039; ====&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;
=== Präfix, Infix und Postfixnotation===&lt;br /&gt;
...oder wie man Minuszeichen hassen lernt. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erhält man solche 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;
&lt;br /&gt;
&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;
=== Fehler in Zeile 1 ===&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 1.3-1.4]: Expected was `)&#039; instead of `IN&#039;&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 _1_ Statt. Das ist die Eingabe-Zeile in der Shell. :))&lt;br /&gt;
(&amp;quot; ERROR [at 1.3-1.4]:&amp;quot;)&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 Listings-Package für TeX/LaTeX. Doch weil die Einarbeitung etwas Zeit braucht, gibt es unter [http://web.archive.org/web/20070206172953/http://user.cs.tu-berlin.de/~pdmef/opal/inf-latex.pdf] eine kurze Anleitung mit allem, was man so braucht, um schnell zu guten Ergebnissen zu kommen.&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äß &#039;&#039;&#039;nicht&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Erfahrungsbericht von Tobias Deichmann in der Info1 Newsgroup:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;...also ich hab mich da letztes Jahr knapp 4 Wochen lang dran probiert und kann dir nur einen Tipp geben: Lass es.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;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...&#039;&#039;&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;/div&gt;</summary>
		<author><name>91.65.91.154</name></author>
	</entry>
</feed>