<?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; Struktur</title>
	<atom:link href="http://brianp.de/tag/struktur/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>Fri, 30 Jul 2010 15:39:03 +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 – Teil 3: Strukturen (struct)</title>
		<link>http://brianp.de/2009/10/20/scheme-kurs-%e2%80%93-teil-3-strukturen-struct/</link>
		<comments>http://brianp.de/2009/10/20/scheme-kurs-%e2%80%93-teil-3-strukturen-struct/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 17:48:26 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[GdI1]]></category>
		<category><![CDATA[Scheme]]></category>
		<category><![CDATA[Abstraktion]]></category>
		<category><![CDATA[define-struct]]></category>
		<category><![CDATA[struct]]></category>
		<category><![CDATA[Struktur]]></category>

		<guid isPermaLink="false">http://brianp.de/?p=385</guid>
		<description><![CDATA[Strukturen gibt es in vielen Programmiersprachen. Sie sind auch sehr sinnvoll, denn oft gilt es, Daten zu irgendetwas zusammen zu fassen. Dabei kann es sich z.B. um eine Person handeln. Jeder Mensch hat einen Vorname, Nachname, Wohnort, etc. Da bietet sich das erstellen einer Struktur an, in der man alle Daten die zu einem Menschen [...]]]></description>
			<content:encoded><![CDATA[<p>Strukturen gibt es in vielen Programmiersprachen. Sie sind auch sehr sinnvoll, denn oft gilt es, Daten zu irgendetwas zusammen zu fassen. Dabei kann es sich z.B. um eine Person handeln. Jeder Mensch hat einen Vorname, Nachname, Wohnort, etc. Da bietet sich das erstellen einer Struktur an, in der man alle Daten die zu <em>einem</em> Menschen gehören zusammen fasst.</p>
<p>In Scheme definiert man eine Struktur (engl. struct) mit:</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>define<span style="color: #66cc66;">-</span>struct human <span style="color: #66cc66;">&#40;</span>forname surename residence<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Zuerst gibt man an, dass man eine Struktur definieren möchte. Danach folgt der Name der neuen Struktur und in einer neuen Klammer alle Eigenschaften die die Struktur haben soll (Eigenschaften des Konstruktors).<br />
Danach hat man die Struktur definiert, jetzt muss man noch eine Struktur erstellen, also einen Teil des Speichers reservieren und die bei der Strukturdefinition angegebenen Eigenschaften mit Werten füllen. Man kann auch sagen, man erstellt eine Instanz der Struktur:</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> peter<span style="color: #66cc66;">-</span>mustermann<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span>make<span style="color: #66cc66;">-</span>human<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#40;</span>'Peter 'Mustermann 'Berlin<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></div></div>
<p>Die Instanz erstellt man mit <em>make-human</em>, wobei human natürlich der Name der Struktur ist, gefolgt von einer neuen Klammer mit den Werten die die Struktur speichern soll. Man übergibt die Werte an einen sogenannten <strong>Konstruktor</strong>.</p>
<h3>Wer bist du?</h3>
<p>Wenn man nicht weiß, welche Struktur in einer Variable gespeichert ist, kann man dafür die sogenannte <strong>Prädikat-Prozedur</strong> nutzen.</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>human? peter<span style="color: #66cc66;">-</span>mustermann<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-&gt;</span> boolean</div></div>
<p>Die Prädikat-Prozedur ist der Name der Struktur, gefolgt von einem Fragezeichen. Als einzigen Parameter übergibt man die fragwürdige Variable. Die Prozedur gibt einen <em>boolean</em>-Wert zurück. In diesem Fall natürlich <em>true</em>.</p>
<h3>Wie heißt du, und wo kommst du her?</h3>
<p>Möchte man auf eine bestimmte Eigenschaft der Struktur zugreifen und deren Wert auslesen so benutzt man einen sogenannten <strong>Selektor</strong>:</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>human<span style="color: #66cc66;">-</span>forename peter<span style="color: #66cc66;">-</span>mustermann<span style="color: #66cc66;">&#41;</span></div></div>
<p>Der Selektor ist der Name der Struktur gefolgt von dem Name der Eigenschaft die man auslesen will. Dazu muss man noch die Variable mit der entsprechenden Struktur angeben. Die Funktion gibt daraufhin den Wert zurück.</p>
<h3>Abstraktion</h3>
<p>Strukturen können sehr gut zur Datenabstraktion genutzt werden, denn sie vereinen zusammen gehörige Daten und helfen diese strukturierter und modularer zu verarbeiten. Des weiteren lässt sich eine Source, die mit <em>struct</em>s arbeitet wesentlich besser lesen, somit erhöhen sie auch die Wartbarkeit von Programmen.<br />
Die Schnittstellen zu den Strukturen stellen die <em>Konstruktoren</em> und <em>Selektoren</em> dar.</p>
<div class="pdf24Plugin-cp-box"><form method="post" action="http://doc2pdf.pdf24.org/doc2pdf/wordpress.php" target="pdf24PopWin" onsubmit="window.open('about:blank', 'pdf24PopWin', 'scrollbars=yes,width=400,height=200,top=0,left=0'); return true;"><input type="hidden" name="blogCharset" value="VVRGLTg=" /><input type="hidden" name="blogPosts" value="MQ==" /><input type="hidden" name="blogUrl" value="aHR0cDovL2JyaWFucC5kZQ==" /><input type="hidden" name="blogName" value="YnJpYW5wLmRl" /><input type="hidden" name="blogValueEncoding" value="base64" /><input type="hidden" name="postTitle_0" value="U2NoZW1lIEt1cnMg4oCTIFRlaWwgMzogU3RydWt0dXJlbiAoc3RydWN0KQ==" /><input type="hidden" name="postLink_0" value="aHR0cDovL2JyaWFucC5kZS8yMDA5LzEwLzIwL3NjaGVtZS1rdXJzLSVlMiU4MCU5My10ZWlsLTMtc3RydWt0dXJlbi1zdHJ1Y3Qv" /><input type="hidden" name="postAuthor_0" value="QnJpYW4=" /><input type="hidden" name="postDateTime_0" value="MjAwOS0xMC0yMCAxOToxMDoyNg==" /><input type="hidden" name="postContent_0" value="PHA+U3RydWt0dXJlbiBnaWJ0IGVzIGluIHZpZWxlbiBQcm9ncmFtbWllcnNwcmFjaGVuLiBTaWUgc2luZCBhdWNoIHNlaHIgc2lubnZvbGwsIGRlbm4gb2Z0IGdpbHQgZXMsIERhdGVuIHp1IGlyZ2VuZGV0d2FzIHp1c2FtbWVuIHp1IGZhc3Nlbi4gRGFiZWkga2FubiBlcyBzaWNoIHouQi4gdW0gZWluZSBQZXJzb24gaGFuZGVsbi4gSmVkZXIgTWVuc2NoIGhhdCBlaW5lbiBWb3JuYW1lLCBOYWNobmFtZSwgV29obm9ydCwgZXRjLiBEYSBiaWV0ZXQgc2ljaCBkYXMgZXJzdGVsbGVuIGVpbmVyIFN0cnVrdHVyIGFuLCBpbiBkZXIgbWFuIGFsbGUgRGF0ZW4gZGllIHp1IDxlbT5laW5lbTwvZW0+IE1lbnNjaGVuIGdlaMO2cmVuIHp1c2FtbWVuIGZhc3N0LjwvcD4KPHA+SW4gU2NoZW1lIGRlZmluaWVydCBtYW4gZWluZSBTdHJ1a3R1ciAoZW5nbC4gc3RydWN0KSBtaXQ6PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNTo6PC9kaXY+CjxwPlp1ZXJzdCBnaWJ0IG1hbiBhbiwgZGFzcyBtYW4gZWluZSBTdHJ1a3R1ciBkZWZpbmllcmVuIG3DtmNodGUuIERhbmFjaCBmb2xndCBkZXIgTmFtZSBkZXIgbmV1ZW4gU3RydWt0dXIgdW5kIGluIGVpbmVyIG5ldWVuIEtsYW1tZXIgYWxsZSBFaWdlbnNjaGFmdGVuIGRpZSBkaWUgU3RydWt0dXIgaGFiZW4gc29sbCAoRWlnZW5zY2hhZnRlbiBkZXMgS29uc3RydWt0b3JzKS48YnIgLz4KRGFuYWNoIGhhdCBtYW4gZGllIFN0cnVrdHVyIGRlZmluaWVydCwgamV0enQgbXVzcyBtYW4gbm9jaCBlaW5lIFN0cnVrdHVyIGVyc3RlbGxlbiwgYWxzbyBlaW5lbiBUZWlsIGRlcyBTcGVpY2hlcnMgcmVzZXJ2aWVyZW4gdW5kIGRpZSBiZWkgZGVyIFN0cnVrdHVyZGVmaW5pdGlvbiBhbmdlZ2ViZW5lbiBFaWdlbnNjaGFmdGVuIG1pdCBXZXJ0ZW4gZsO8bGxlbi4gTWFuIGthbm4gYXVjaCBzYWdlbiwgbWFuIGVyc3RlbGx0IGVpbmUgSW5zdGFueiBkZXIgU3RydWt0dXI6PC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNjo6PC9kaXY+CjxwPkRpZSBJbnN0YW56IGVyc3RlbGx0IG1hbiBtaXQgPGVtPm1ha2UtaHVtYW48L2VtPiwgd29iZWkgaHVtYW4gbmF0w7xybGljaCBkZXIgTmFtZSBkZXIgU3RydWt0dXIgaXN0LCBnZWZvbGd0IHZvbiBlaW5lciBuZXVlbiBLbGFtbWVyIG1pdCBkZW4gV2VydGVuIGRpZSBkaWUgU3RydWt0dXIgc3BlaWNoZXJuIHNvbGwuIE1hbiDDvGJlcmdpYnQgZGllIFdlcnRlIGFuIGVpbmVuIHNvZ2VuYW5udGVuIDxzdHJvbmc+S29uc3RydWt0b3I8L3N0cm9uZz4uPC9wPgo8aDM+V2VyIGJpc3QgZHU/PC9oMz4KPHA+V2VubiBtYW4gbmljaHQgd2Vpw58sIHdlbGNoZSBTdHJ1a3R1ciBpbiBlaW5lciBWYXJpYWJsZSBnZXNwZWljaGVydCBpc3QsIGthbm4gbWFuIGRhZsO8ciBkaWUgc29nZW5hbm50ZSA8c3Ryb25nPlByw6RkaWthdC1Qcm96ZWR1cjwvc3Ryb25nPiBudXR6ZW4uPC9wPgo8ZGl2Pjo6Q09ERUNPTE9SRVJfQkxPQ0tfNzo6PC9kaXY+CjxwPkRpZSBQcsOkZGlrYXQtUHJvemVkdXIgaXN0IGRlciBOYW1lIGRlciBTdHJ1a3R1ciwgZ2Vmb2xndCB2b24gZWluZW0gRnJhZ2V6ZWljaGVuLiBBbHMgZWluemlnZW4gUGFyYW1ldGVyIMO8YmVyZ2lidCBtYW4gZGllIGZyYWd3w7xyZGlnZSBWYXJpYWJsZS4gRGllIFByb3plZHVyIGdpYnQgZWluZW4gPGVtPmJvb2xlYW48L2VtPi1XZXJ0IHp1csO8Y2suIEluIGRpZXNlbSBGYWxsIG5hdMO8cmxpY2ggPGVtPnRydWU8L2VtPi48L3A+CjxoMz5XaWUgaGVpw590IGR1LCB1bmQgd28ga29tbXN0IGR1IGhlcj88L2gzPgo8cD5Nw7ZjaHRlIG1hbiBhdWYgZWluZSBiZXN0aW1tdGUgRWlnZW5zY2hhZnQgZGVyIFN0cnVrdHVyIHp1Z3JlaWZlbiB1bmQgZGVyZW4gV2VydCBhdXNsZXNlbiBzbyBiZW51dHp0IG1hbiBlaW5lbiBzb2dlbmFubnRlbiA8c3Ryb25nPlNlbGVrdG9yPC9zdHJvbmc+OjwvcD4KPGRpdj46OkNPREVDT0xPUkVSX0JMT0NLXzg6OjwvZGl2Pgo8cD5EZXIgU2VsZWt0b3IgaXN0IGRlciBOYW1lIGRlciBTdHJ1a3R1ciBnZWZvbGd0IHZvbiBkZW0gTmFtZSBkZXIgRWlnZW5zY2hhZnQgZGllIG1hbiBhdXNsZXNlbiB3aWxsLiBEYXp1IG11c3MgbWFuIG5vY2ggZGllIFZhcmlhYmxlIG1pdCBkZXIgZW50c3ByZWNoZW5kZW4gU3RydWt0dXIgYW5nZWJlbi4gRGllIEZ1bmt0aW9uIGdpYnQgZGFyYXVmaGluIGRlbiBXZXJ0IHp1csO8Y2suPC9wPgo8aDM+QWJzdHJha3Rpb248L2gzPgo8cD5TdHJ1a3R1cmVuIGvDtm5uZW4gc2VociBndXQgenVyIERhdGVuYWJzdHJha3Rpb24gZ2VudXR6dCB3ZXJkZW4sIGRlbm4gc2llIHZlcmVpbmVuIHp1c2FtbWVuIGdlaMO2cmlnZSBEYXRlbiB1bmQgaGVsZmVuIGRpZXNlIHN0cnVrdHVyaWVydGVyIHVuZCBtb2R1bGFyZXIgenUgdmVyYXJiZWl0ZW4uIERlcyB3ZWl0ZXJlbiBsw6Rzc3Qgc2ljaCBlaW5lIFNvdXJjZSwgZGllIG1pdCA8ZW0+c3RydWN0PC9lbT5zIGFyYmVpdGV0IHdlc2VudGxpY2ggYmVzc2VyIGxlc2VuLCBzb21pdCBlcmjDtmhlbiBzaWUgYXVjaCBkaWUgV2FydGJhcmtlaXQgdm9uIFByb2dyYW1tZW4uPGJyIC8+CkRpZSBTY2huaXR0c3RlbGxlbiB6dSBkZW4gU3RydWt0dXJlbiBzdGVsbGVuIGRpZSA8ZW0+S29uc3RydWt0b3JlbjwvZW0+IHVuZCA8ZW0+U2VsZWt0b3JlbjwvZW0+IGRhci48L3A+Cg==" /><a href="http://de.pdf24.org" target="_blank" title="PDF Download"><img src="http://brianp.de/wp-content/plugins/pdf24-post-to-pdf/img/sheep_16x16.gif" alt="PDF Download" border="0" /></a> <span class="pdf24Plugin-cp-space">&nbsp;&nbsp;</span> <span class="pdf24Plugin-cp-text">Sende Artikel als PDF an</span> <input class="pdf24Plugin-cp-input" style="margin: 0px;" type="text" name="sendEmailTo" value="Emailadresse" onmousedown="this.value = '';" /> <input class="pdf24Plugin-cp-submit" style="margin: 0px;" type="submit" value="Senden" /></form></div>
]]></content:encoded>
			<wfw:commentRss>http://brianp.de/2009/10/20/scheme-kurs-%e2%80%93-teil-3-strukturen-struct/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
