<?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; Variable</title>
	<atom:link href="http://brianp.de/tag/variable/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: Funktion mit internem privatem Attribut (private Variable)</title>
		<link>http://brianp.de/2010/03/21/scheme-funktion-mit-internem-privatem-attribut-private-variable/</link>
		<comments>http://brianp.de/2010/03/21/scheme-funktion-mit-internem-privatem-attribut-private-variable/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 22:54:17 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Attribut]]></category>
		<category><![CDATA[counter]]></category>
		<category><![CDATA[intern]]></category>
		<category><![CDATA[privat]]></category>
		<category><![CDATA[set!]]></category>
		<category><![CDATA[Variable]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=975</guid>
		<description><![CDATA[Mit folgender Anweisung definiert man eine simple Zählfunktion in Scheme von der man beliebig viele unabhänge Zähler parallel erstellen kann. &#40;define &#40;counter init&#41; &#160; &#40;local &#160; &#160; &#40;&#40;define i &#40;- init 1&#41;&#41;&#41; &#160; &#160; &#40;lambda &#40;&#41; &#160; &#160; &#160; &#40;begin &#160; &#160; &#160; &#160; &#40;set! i &#40;+ i 1&#41;&#41; &#160; &#160; &#160; &#160; i &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Mit folgender Anweisung definiert man eine simple Zählfunktion in Scheme von der man beliebig viele unabhänge Zähler parallel erstellen kann.</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;">define</span> <span style="color: #66cc66;">&#40;</span>counter init<span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span>local<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> i <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">-</span> init <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">lambda</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">set!</span> i <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; i<br />
&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span></div></div>
<p>Wie man sieht definiert man zuerst eine Funktion namens counter die einen Parameter erwartet. Die Funktion hat intern eine lokale Variable die zu beginn auf den übergebenen Wert (vermindert um 1) gesetzt wird. Schließlich gibt die Funktion eine neue Funktion zurück die mit der eben erstellen lokalen Variable zählt.  Diese interne private Variable kommt einem privaten Attribut einer Klasse einer modernen Programmiersprache nahe.<br />
Somit ergeben folgende Anweisungen:</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;">define</span> c1 <span style="color: #66cc66;">&#40;</span>counter <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">define</span> c2 <span style="color: #66cc66;">&#40;</span>counter <span style="color: #cc66cc;">1100</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c1<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c2<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c2<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c1<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c1<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c1<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span>c2<span style="color: #66cc66;">&#41;</span></div></div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">0<br />
1100<br />
1101<br />
1<br />
2<br />
3<br />
1102</div></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2010/03/21/scheme-funktion-mit-internem-privatem-attribut-private-variable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scheme Kurs – Teil 6: set!</title>
		<link>http://brianp.de/2009/11/28/scheme-kurs-%e2%80%93-teil-6-set/</link>
		<comments>http://brianp.de/2009/11/28/scheme-kurs-%e2%80%93-teil-6-set/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 13:37:34 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[!]]></category>
		<category><![CDATA[define]]></category>
		<category><![CDATA[Konstante]]></category>
		<category><![CDATA[Konvention]]></category>
		<category><![CDATA[set!]]></category>
		<category><![CDATA[Variable]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=802</guid>
		<description><![CDATA[Bis jetzt haben wir in Scheme nur mit Konstanten gearbeitet, die man einmal mit einem Wert belegen kann. Mit set! kann man aber den Wert einer Variable ändern. Davor muss man die Variable aber wie eine Konstante mit define erstellen, dass heißt, wir haben bis jetzt auch schon mit Variablen gearbeitet, nur konnten wir deren [...]]]></description>
			<content:encoded><![CDATA[<p>Bis jetzt haben wir in Scheme nur mit Konstanten gearbeitet, die man einmal mit einem Wert belegen kann.<br />
Mit <em>set!</em> kann man aber den Wert einer Variable ändern. Davor muss man die Variable aber wie eine Konstante mit <em>define</em> erstellen, dass heißt, wir haben bis jetzt auch schon mit Variablen gearbeitet, nur konnten wir deren Wert noch nicht ändern.</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;">define</span> i <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">set!</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">set!</span> i <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span> i <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Die Variable <em>i</em> hat nach der ersten Zeile den Wert 0, da sie mit <em>define</em> mit dem Wert 0 definiert wird.<br />
Nach Zeile 2 ist der Wert von <em>i</em> 1, da wir es explizit mit <em>set!</em> festlegen.<br />
In Zeile 3 nutzen brechnen wir den neuen Wert von <em>i</em> mit dem alten (oder bisherigem) Wert von <em>i</em>. <em>i</em> ist also nach dieser Zeile 2.</p>
<p>Das Ausrufezeichen ist eine Scheme Konvention. Man muss sich nicht daran halten, aber es ist extrem sinnvoll. Denn so kann jeder sofort erkennen dass eine Funktion eine oder mehrere Zuweisungen vornimmt.<br />
Wenn man also eine Funktion schreibt, die einen Parameter verändert, dann sollte man an den Funktionsname ein Ausrufezeichen anhängen.</p>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/11/28/scheme-kurs-%e2%80%93-teil-6-set/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
