<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>brianp.de &#187; and</title>
	<atom:link href="http://brianp.de/tag/and/feed/" rel="self" type="application/rss+xml" />
	<link>http://brianp.de</link>
	<description>Wissen ist der erste Rohstoff, der sich bei Gebrauch vermehrt! - brandeins</description>
	<lastBuildDate>Mon, 06 Sep 2010 14:55:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Scheme Kurs &#8211; Teil 2: Symbole, Bedingungen, Boolsche Funktionen und Tests</title>
		<link>http://brianp.de/2009/10/17/scheme-kurs-teil-2-symbole-bedingungen-boolsche-funktionen-und-tests/</link>
		<comments>http://brianp.de/2009/10/17/scheme-kurs-teil-2-symbole-bedingungen-boolsche-funktionen-und-tests/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 21:02:55 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[and]]></category>
		<category><![CDATA[Bedingung]]></category>
		<category><![CDATA[Bool]]></category>
		<category><![CDATA[boolean=?]]></category>
		<category><![CDATA[check]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[not]]></category>
		<category><![CDATA[or]]></category>
		<category><![CDATA[Symbol]]></category>
		<category><![CDATA[Test]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=225</guid>
		<description><![CDATA[Symbole Ein Symbol ist eine Zeichenfolge ähnlich wie ein String, mit dem Unterschied das Symbole nicht manipuliert werden können. Dadurch sind sie sehr viel schneller als Strings. Symbole werden durch ein einfach Anführungszeichen begonnen und enden am nächsten Space, es gibt also kein Ausführungszeichen. &#62; &#40;define hallo 'Hallo&#41; &#62; hallo 'Hallo &#62; 'Welt! 'Welt! Bedingungen [...]]]></description>
			<content:encoded><![CDATA[<h3>Symbole</h3>
<p>Ein Symbol ist eine Zeichenfolge ähnlich wie ein String, mit dem Unterschied das Symbole nicht manipuliert werden können. Dadurch sind sie sehr viel schneller als Strings. Symbole werden durch ein einfach Anführungszeichen begonnen und enden am nächsten Space, es gibt also kein Ausführungszeichen.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> hallo 'Hallo<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&gt;</span> hallo<br />
'Hallo<br />
<span style="color: #66cc66;">&gt;</span> 'Welt<span style="color: #66cc66;">!</span><br />
'Welt<span style="color: #66cc66;">!</span></div></div>
<h3>Bedingungen</h3>
<p>Bedingungen werden in Scheme mit folgendem if-Ausdruck realisiert:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&lt;</span>test<span style="color: #66cc66;">&gt;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&lt;</span>then<span style="color: #66cc66;">&gt;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&lt;</span>else<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Wichtig ist, dass der <strong><em>else</em>-Zweig nicht optional</strong> ist!</p>
<p>Dieses Beispiel testet ob eine Variable negativ oder positiv ist und gibt das Ergebnis aus:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> variable <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span> variable<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; 'positiv<br />
&nbsp; &nbsp; &nbsp; 'negativ<span style="color: #66cc66;">&#41;</span><br />
'positiv</div></div>
<p>Es gibt noch eine andere Form einer Bedingung mit beliebig vielen Tests. Hierbei ist der <em>else</em>-Zweig allerdings optional.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">cond</span> <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&lt;</span>test <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>then <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#93;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&lt;</span>test <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>then <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#93;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&lt;</span>test <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>then <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#93;</span><br />
&nbsp; &nbsp; &nbsp; ...<br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span><span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&lt;</span>else<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span></div></div>
<h3>Boolesche Funktionen</h3>
<p>Es gibt in Scheme natürlich auch die gewohnten Booleschen Funktionen <em>and</em> und <em>or</em>. Bei <em>and</em> muss alles true sein, bei <em>or</em> nur min. ein Test. Des weiteren gibt es auch ein <em>not</em> und <em>boolean=?</em> Statement. Ein boolean=? testet ob die beiden übergebenen Werte gleich sind.</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">and</span> <span style="color: #66cc66;">&lt;</span>test <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>test <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">or</span> <span style="color: #66cc66;">&lt;</span>test <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>test <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">not</span> <span style="color: #66cc66;">&lt;</span>test<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>boolean<span style="color: #66cc66;">=</span>? <span style="color: #66cc66;">&lt;</span>expression <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>expression <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Zu Beachten ist, das es eine <strong>Shortcut Regel</strong> gibt. Es werden also bei z.B. einem and nicht alle Tests ausgewertet, wenn bereits einer false war.</p>
<h3>Tests</h3>
<p>Um zu überprüfen ob eine Funktion den richtigen Wert zurück liefert oder eine Variable den richtigen Wert hat, stellt Scheme zwei Funktionen zur Verfügung:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>expect <span style="color: #66cc66;">&lt;</span>actual<span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>expected<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>within <span style="color: #66cc66;">&lt;</span>actual<span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>expected<span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>delta<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Es gibt noch eine weitere Funktion die die Fehlermeldung einer eigenen Funktion prüft:</p>
<div class="codecolorer-container scheme default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="scheme codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>check<span style="color: #66cc66;">-</span>error <span style="color: #66cc66;">&lt;</span>test<span style="color: #66cc66;">&gt;</span> <span style="color: #66cc66;">&lt;</span>expected message<span style="color: #66cc66;">&gt;</span><span style="color: #66cc66;">&#41;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/10/17/scheme-kurs-teil-2-symbole-bedingungen-boolsche-funktionen-und-tests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
