<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://cgd.zum.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hoeherl011</id>
	<title>ComeniusWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://cgd.zum.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hoeherl011"/>
	<link rel="alternate" type="text/html" href="https://cgd.zum.de/wiki/Spezial:Beitr%C3%A4ge/Hoeherl011"/>
	<updated>2026-10-24T18:35:09Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3862</id>
		<title>Listen und Datenbank - der Vokabeltrainer</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3862"/>
		<updated>2015-04-30T14:56:08Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Beenden der Anwendung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Die Idee===&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Vokabeltrainer programmieren, bei dem Vokabelpaare (Englisch - Deutsch) in Textboxes eingegeben werden können. Die aktuell eingegebenen Vokabeln werden als Liste angezeigt, die nach dem ersten Einprägen gelöscht werden kann. Die Vokabeln werden in eine Datenbank geschrieben, die beim Start der App zur Verfügung steht. Die englischen Vokabeln werden auf Buttonklick angezeigt und nach einem weiteren Klick das zugehörige deutsche Wort. Insbesondere zu Testzwecken besteht auch die Möglichkeit die gesamte Datenbank zu löschen.&lt;br /&gt;
&lt;br /&gt;
===Listen===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;Array&#039;&#039; und &#039;&#039;Arraylist&#039;&#039; kennen wir aus Java bereits zwei Datentypen, mit denen größere Datenmengen abgespeichert werden können. Der App Inventor bietet zu diesem Zweck Listen. Die Vorgehensweise ist dabei dem Umgang mit Arraylists sehr ähnlich. Wesentliche Unterschiede sind, dass die Items nicht vom selben Datentyp sein müssen und dass die Indizierung der Items nicht mit dem Wert 0 beginnt, sondern mit dem Wert 1 und damit auch der Index des letzten Items in der Liste der Länge der Liste entspricht. Die zur Verfügung stehenden Methoden finden sich im Built-In Block &#039;&#039;Lists&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie bei Arraylists erhält die Liste einen Namen und wird als leere Liste initialisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Liste kann nun mit beliebig vielen Items gefüllt werden, die anschließend in dieser Reihenfolge über den Index angesprochen werden können. Um einen zusätzlichen Slot für die Items zu erzeugen genügt ein Klick auf das blaue Icon oben links. In dem erscheinenden Kontextmenü wird nun ein Item-Block in den Listenblock gezogen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man anschließend zusätzliche Items in die Liste aufnehmen, kann man dies mit dem Block &#039;&#039;&#039;add items to list&#039;&#039;&#039; bewerkstelligt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun eines der Listenitems anzusprechen, verwendet man die Methode &#039;&#039;&#039;select list item&#039;&#039;&#039;, bei der der Indexwert als Parameterwert angegeben wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Methode &#039;&#039;&#039;length of list&#039;&#039;&#039; lässt sich die Länge und damit die Anzahl der Items in einer Liste bestimmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie vom Umgang mit Arrays und Arraylists bekannt, können auch Listen mittels Schleifen manipuliert werden. In folgendem Beispiel werden die Inhalte aller Items der Liste gelöscht (nicht die Items selbst!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der große Nachteil der Listen ist, dass sie nur während der Laufzeit der App genutzt werden können. Nach Beenden der App werden alle Daten der Liste gelöscht. Um mit den eingegebenen Daten auch zu einem späteren Zeitpunkt arbeiten zu können, müssen diese permanent gespeichert werden. Der App Inventor bietet hierzu die Möglichkeit mittels &#039;&#039;&#039;TinyDB&#039;&#039;&#039; den internen Speicher des Smartphones zu nutzen.&lt;br /&gt;
&lt;br /&gt;
===TinyDB===&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;TinyDB&#039;&#039;&#039; handelt es sich um einen Speicherbereich, den das Betriebssystem Android jeder mit dem App Inventor erstellten App dauerhaft zur Verfügung stellt. Darin können beliebig viele Daten abgelegt und abgerufen werden. Identifiziert werden sie dabei über einen eindeutigen Bezeichner (&#039;&#039;&#039;tag&#039;&#039;&#039;). Die zu speichernden Daten entsprechen den Werten, die während der Programmlaufzeit in den entsprechenden Variablen vorliegen. Dieses bedeutet auch, dass zu speichernde Daten als Werte in einer Variable vorliegen müssen und an die Methode &#039;&#039;&#039;StoreValue&#039;&#039;&#039; übergeben werden. Auch beim Laden wird eine Variable gleichen oder kompatiblen Datentyps benötigt, in die der Wert aus dem Speicher über die Methode &#039;&#039;&#039;GetValue&#039;&#039;&#039; geschrieben werden kann. Mit &#039;&#039;&#039;clear all&#039;&#039;&#039; bzw. &#039;&#039;&#039;clear tag&#039;&#039;&#039; können alle Daten der TinyDB bzw. die mit einem einzelnen &#039;&#039;tag&#039;&#039; verbundenen Daten gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine TinyDB ist eine nicht-sichtbare Komponente und wird dem Projekt im Designermodus hinzugefügt. Die Funktionalität kann nur nach der Installation der App auf dem Smartphone vollständig getestet werde, da im Entwicklungsmodus die Daten nach einem Neustart der App immer wieder neu eingelesen werden müssen.&lt;br /&gt;
&lt;br /&gt;
===Das Design===&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
====Speichern der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die eingegebenen Vokabelpaare zu speichern, nutzen wir zwei Listen. Diese beiden Listen können wir über den Index der einzelnen Items miteinander verbinden, d.h. Items mit gleichem Index bilden ein Vokabelpaar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir legen also zuerst zwei Listen an. Dazu deklarieren wir zwei Variablen &#039;&#039;Englisch&#039;&#039; und &#039;&#039;Deutsch&#039;&#039; und initialisieren sie als leere Listen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Speichern der Vokabelpaare erfolgt durch Anklicken des Buttons &#039;&#039;Speichern&#039;&#039;. Wir beginnen also wieder mit dem entsprechenden Event Handler. Nach der oben erläuterten Vorgehensweise fügen wir den Inhalt der &#039;&#039;TextBoxEnglisch&#039;&#039; der Liste &#039;&#039;Englisch&#039;&#039; hinzu und den Inhalt der &#039;&#039;TextBoxDeutsch&#039;&#039; der Liste &#039;&#039;Deutsch&#039;&#039;. Anschließend leeren wir die zwei Textboxen wieder um sie für eine neue Eingabe vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise haben wir nach wiederholtem Speichern eine Liste von Vokabelpaaren. Allerdings existiert diese Liste nur während der Laufzeit der App und wird nach Beenden der Anwendung wieder gelöscht, was dem Sinn eines Vokabeltrainers zuwiderläuft. Zudem wollen wir neue Vokabeln den bereits bestehenden Listen hinzufügen. Wir müssen also den Variablen &#039;&#039;Englisch&#039;&#039; bzw. &#039;&#039;Deutsch&#039;&#039; den Inhalt der in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; abgespeicherten Listen hinzufügen. In einem ersten Schritt setzen wir den Wert der Variablen auf den aktuellen Speicherinhalt der jeweiligen Listen. Indem wir einen &#039;&#039;tag&#039;&#039; &#039;&#039;Englischliste&#039;&#039; bzw. &#039;&#039;Deutschliste&#039;&#039; verwenden und den Inhalt einer Variable vom Datentyp &#039;&#039;Liste&#039;&#039; zuweisen, haben wir automatisch in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; zwei Listen kreiert, die wir mit dem entsprechenden Namen immer wieder ansprechen können. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genau das tun wir nun, indem wir nach dem Hinzufügen eines Items zur entsprechenden Liste diese wieder in der TinyDB abspeichern. Damit wird mit dem Klicken des Speicherbuttons die permanente Vokabelliste immer wieder aktualisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Anzeigen der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Das Lernen einer Liste von Vokabeln beginnt üblicherweise damit, dass wir uns die einzelnen Vokabelpaare einprägen, bevor wir mit dem eigentlichen Abfragen beginnen. Es sollen also die einzelnen Vokabelpaare auf dem Display aufgelistet werden, so dass sie für den ersten Schritt des Vokabellernens zur Verfügung stehen. Zu diesem Zweck deklarieren wir zwei weitere Variablen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; und initialisieren sie wiederum als leere Listen. Diese Listen werden allerdings nur während der Laufzeit der App benötigt, so dass sie nicht in der TinyDB abgespeichert werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen nun die Vokabeln beim Speichern gleichzeitig auch den nicht-permanenten Listen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kommt die auf den ersten Blick recht einfache Aufgabe, die Vokabelpaare im Label &#039;&#039;LabelVokabelpaar&#039;&#039; aufzulisten, was aber etwas aufwändiger ist als es aussieht. Wir erstellen zu diesem Zweck eine eigene Prozedur &#039;&#039;VocShow&#039;&#039;, die diese Aufgabe umsetzt. Diese Prozedur macht Folgendes: Sie leert bei jedem Aufruf zuerst das Label. Dann schreibt sie mit Hilfe einer Schleife, die vom Index 1 bis zur aktuellen Länge der Liste läuft die einzelnen Vokabelpaare in das Label. Dazu werden die zusammengehörigen Items jeweils in eine Hilfsvariable geschrieben, indem sie mittels der &#039;&#039;&#039;select list item&#039;&#039;&#039;-Methode aus den nicht-permanenten Listen abgerufen werden und anschließend verbunden werden. Im Label wird dabei der aktuelle Inhalt des Labels mit dem neuen Vokabelpaar verbunden und durch einen Zeilenwechsel (\n) gegliedert.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen also mit der Deklaration und Initialisierung der Hilfsvariablen für die zu verbindenden Items der Vokabellisten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_7.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir die oben beschriebene Vorgehensweise um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_8.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir den Aufruf der Prozedur &#039;&#039;&#039;VocShow&#039;&#039;&#039; noch an entsprechender Stelle im Block &#039;&#039;Speichern&#039;&#039; einbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_9.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Leeren der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Nachdem wir die Vokabelliste nach dem Einprägen der neuen Vokabeln nicht mehr brauchen, soll sie nach Gebrauch wieder gelöscht werden können. Dazu versehen wir den Button &#039;&#039;Liste leeren&#039;&#039; mit dem entsprechenden Event Handler. Das Leeren ist relativ einfach. Wir setzen das Label &#039;&#039;LabelVokabelpaar&#039;&#039; auf einen leeren String und belegen die beiden Variablen für die nicht-permanenten Listen mit einer leeren Liste, d.h. es werden alle Items aus den beiden Listen gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_13.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Abfragen der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir die eigentliche Funktion des Vokabeltrainers um - das Abfragen. Zu diesem Zweck durchlaufen wir die Vokabellisten, indem wir bei jedem Klicken des Buttons &#039;&#039;Abfragen&#039;&#039; den Index der Listen um eins erhöhen. Zur Anzeige der englischen Vokabel nutzen wir die bereits angelegte Hilfsvariable &#039;&#039;VocE&#039;&#039; und weisen ihr aus der permanenten &#039;&#039;Englischliste&#039;&#039; der TinyDB das dem Indexwert entsprechende Item zu, das wir dann dem Setter des Labels &#039;&#039;LabelAsk&#039;&#039; zuweisen. Gleichzeitig löschen wir die Anzeige des deutschen Wortes im Label &#039;&#039;LabelShow&#039;&#039;. Wird der Button &#039;&#039;Show&#039;&#039; geklickt, soll dort das zugehörige deutsche Wort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen mit der Deklaration der Hilfsvariable für den Listenindex. Diese wird mit dem Wert 0 initialisiert, da damit beim ersten Klick des Buttons &#039;&#039;Abfragen&#039;&#039; der Indexwert auf 1 und damit auf den Wert des ersten Items in der Liste gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir versehen nun den Button &#039;&#039;Abfragen&#039;&#039; mit dem entsprechenden Event Handler und setzen die oben beschriebene Vorgehensweise um. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10b.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt setellt eine kleine Schönheitskorrektur dar. Wir setzten den Text des Buttons &#039;&#039;Abfragen&#039;&#039; auf &#039;&#039;Next&#039;&#039;. Den Wechsel der beiden Beschriftungen müssen wir im Auge behalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10c.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen wir vor einem kleinen Problem: Ist das Ende der Liste erreicht, bekommen wir mit dem nächsten Klick eine Fehlermeldung. Wir müssen dafür sorgen, dass bei Erreichen des Listenendes der Listenindex wieder auf 0 gesetzt wird, der Text des Buttons &#039;&#039;Next&#039;&#039; wieder auf &#039;&#039;Abfragen&#039;&#039; geändert wird und die beiden Labels &#039;&#039;LabelAsk&#039;&#039; und &#039;&#039;LabelShow&#039;&#039; einen leeren String erhalten. Damit kann das Abfragen wieder von vorne beginnen. Programmiertechnisch setzen wir das mit einer zweiseitigen bedingten Anweisung (&#039;&#039;if ... else&#039;&#039;) um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10d.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt werden die Vokabeln immer in der gleichen Reihenfolge abgefragt, damit eine zufällige Abfrage passiert, muss ein zufälliger Index herausgesucht werden. Außerdem muss die Hintergrund Farbe zu grau geändert werden, dies wird deutlich sobald man sich den Aufbau Button Lösung anschaut.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 5.PNG||beschrei ung]]&lt;br /&gt;
&lt;br /&gt;
Die Anzeige des zugehörigen deutschen Wortes erfolgt analog zur Anzeige des englischen Wortes. Abhängig vom aktuellen Listenindex wird das entsprechende Item aus der &#039;&#039;Deutschliste&#039;&#039; in der TinyDB im Label &#039;&#039;LabelShow&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_12.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann man auch eine schriftliche Abfrage einbauen, indem man eine Textbox hinzufügt und der Inhalt der Textbox mit dem Text von &amp;quot;LabelShow&amp;quot; vergleichen lässt.Bei gleichem Text färbt sich der Hintergrund der Textbox grün bei unterschiedlichem Inhalt rot.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 2.PNG|Beschreibung]]&lt;br /&gt;
&lt;br /&gt;
====Abfrage der aktuellsten Vokabeln====&lt;br /&gt;
&lt;br /&gt;
In der Praxis will man oft nur die aktuellsten Vokabeln wiederholen, um dies umzusetzen muss man die Index-Auswahl auf das Gebiet der neusten Wörter beschränken. Der Rest der Abrage bleibt gleich.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 6.PNG||Beschreibung]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Lösung der Aktuellsten Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Die Lösung kann nahezu 1 zu 1 übernommen werden da nur der benötigte Index automatisch von dem Abfrage-Wort entnommen wird.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 7.PNG||beschreibung]]&lt;br /&gt;
&lt;br /&gt;
====Löschen des Datenspeichers====&lt;br /&gt;
&lt;br /&gt;
Insbesondere zu Testzwecken ist es günstig, wenn man die benutzte Datenbank löschen kann. Dazu wird mit der Methode &#039;&#039;&#039;ClearAll&#039;&#039;&#039; der Inhalt der TinyDB gelöscht, die Labels werden auf einen leeren String gesetzt und die Hilfsvariablen werden auf den Anfangswert zurückgesetzt. Für die endgültige App sollte vor dem endgültigen Löschen noch eine Sicherheitsabfrage an den User erfolgen, da das versehentliche Löschen einer Datenbank ärgerlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_14.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Initialisierung der Screen====&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir uns noch Gedanken über die Initialisierung der Screen machen. Auf jeden Fall sollten wir den Text des Buttons &#039;&#039;ButtonAbfragen&#039;&#039; auf den Text &#039;&#039;Abfragen&#039;&#039; setzen. Zudem ist es günstiger das Laden der Daten gleich bei der Initialisierung der Screen vorzunehmen. Wir verlagern die entsprechenden Blöcke aus dem Block für das Speichern in die Initialisierung der Screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_16.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Beenden der Anwendung====&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir nur noch, wie gewohnt,  das Beenden der Applikation umsetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_15.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit die App nicht unabsichtlich geschlossen wird kann man eine Sicherung einbauen, indem der Benutzer erst zu einem anderen Screen geleitet wird.Dort kann man entweder bestätigen die App zu schließen oder wieder zum ersten Screen zurückkehren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 8.PNG||Beschreibung]]&lt;br /&gt;
&lt;br /&gt;
Screen 2 : &lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 9.PNG||Beschreibung]]&lt;br /&gt;
&lt;br /&gt;
===Erweiterungsaufgaben===&lt;br /&gt;
&lt;br /&gt;
* Die App funktioniert nun bei der vorgesehenen Verwendung ohne Probleme. Allerdings wird ein Beta-Test einige Probleme aufwerfen, die noch zu lösen sind. Beispiele:&lt;br /&gt;
** Was tun bei einer fehlerhaften Eingabe?&lt;br /&gt;
** Was passiert beim Speichern ohne vorherige Eingabe?&lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Lösungsvorschlag:&#039;&#039;&#039;&lt;br /&gt;
::Um das Problem zu lösen bauen wir eine Gleichstellung der TextBoxEnglish mit einem leeren Textfeld in den Block &amp;quot;Speicher&amp;quot; ein und leiten dann den Benutzer, wenn das Textfeld leer ist, noch bevor die Vokabel gespeichert wird zu einer anderen Screen. Dort erhält er die Nachricht, erst etwas einzugeben bevor er abspeichert. Mit Hilfe eines Buttons kann der Benutzer wieder zur ursprünglichen Screen zurückkehren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Bild 1.PNG||Speichern]]&lt;br /&gt;
&lt;br /&gt;
* Was passiert bei einer Abfrage bei leerer Liste?&lt;br /&gt;
&lt;br /&gt;
* Die Abfrage durchläuft immer die ganze gespeicherte Liste und das in derselben Reihenfolge der Vokabeln. Die Vokabeln sollen nun in zufälliger Reihenfolge abgefragt werden. Zusätzlich sollen dabei alle Vokabeln  abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
* In der Praxis sollten nicht immer alle Vokabeln abgefragt werden, sondern zuerst die aktuellen Vokabeln. Dazu sollten die Vokabeln der letzten beiden Einheiten wiederholt werden und eventuell eine bestimmte Anzahl von Vokabeln aus früheren Einheiten. Dazu müssen wir in einer Liste der TinyDB auch die Anzahl der Vokabeln pro Einheit abfragen können und die gewünschten Vokabeln über eine Manipulation der Listenlänge erhalten können.&lt;br /&gt;
&lt;br /&gt;
* Es sollte auch möglich sein, die Abfragerichtung E-D/D-E festzulegen.&lt;br /&gt;
&lt;br /&gt;
* Der User sollte richtige und falsche Antworten kennzeichnen und seine Ergebnisse speichern können. Eine direkte Bewertung mit Eingabe der Lösung dürfte höchstens bei sehr einfachen Vokabeln Sinn machen. Vielleicht gibt es auch einen Weg, Vokabeln die nicht gewusst wurden, häufiger abzufragen.&lt;br /&gt;
&lt;br /&gt;
* Aus Designsicht wäre es wünschenswert, wenn nur jeweils die Bestandteile des Moduls zu sehen wären, das gerade verwendet wird (Eingabe, Abfrage und eventuell Einstellungen).&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:Projekt_bild_9.PNG&amp;diff=3861</id>
		<title>Datei:Projekt bild 9.PNG</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:Projekt_bild_9.PNG&amp;diff=3861"/>
		<updated>2015-04-30T14:55:00Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{de|1=Beschreibung}}&lt;br /&gt;
|date=2015-04-30 16:54:28&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Hoeherl011|Hoeherl011]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Uploaded with UploadWizard]]&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:Projekt_bild_8.PNG&amp;diff=3860</id>
		<title>Datei:Projekt bild 8.PNG</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:Projekt_bild_8.PNG&amp;diff=3860"/>
		<updated>2015-04-30T14:54:54Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{de|1=Beschreibung}}&lt;br /&gt;
|date=2015-04-30 16:54:21&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Hoeherl011|Hoeherl011]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Uploaded with UploadWizard]]&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3848</id>
		<title>Listen und Datenbank - der Vokabeltrainer</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3848"/>
		<updated>2015-04-29T13:42:02Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Die Idee===&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Vokabeltrainer programmieren, bei dem Vokabelpaare (Englisch - Deutsch) in Textboxes eingegeben werden können. Die aktuell eingegebenen Vokabeln werden als Liste angezeigt, die nach dem ersten Einprägen gelöscht werden kann. Die Vokabeln werden in eine Datenbank geschrieben, die beim Start der App zur Verfügung steht. Die englischen Vokabeln werden auf Buttonklick angezeigt und nach einem weiteren Klick das zugehörige deutsche Wort. Insbesondere zu Testzwecken besteht auch die Möglichkeit die gesamte Datenbank zu löschen.&lt;br /&gt;
&lt;br /&gt;
===Listen===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;Array&#039;&#039; und &#039;&#039;Arraylist&#039;&#039; kennen wir aus Java bereits zwei Datentypen, mit denen größere Datenmengen abgespeichert werden können. Der App Inventor bietet zu diesem Zweck Listen. Die Vorgehensweise ist dabei dem Umgang mit Arraylists sehr ähnlich. Wesentliche Unterschiede sind, dass die Items nicht vom selben Datentyp sein müssen und dass die Indizierung der Items nicht mit dem Wert 0 beginnt, sondern mit dem Wert 1 und damit auch der Index des letzten Items in der Liste der Länge der Liste entspricht. Die zur Verfügung stehenden Methoden finden sich im Built-In Block &#039;&#039;Lists&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie bei Arraylists erhält die Liste einen Namen und wird als leere Liste initialisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Liste kann nun mit beliebig vielen Items gefüllt werden, die anschließend in dieser Reihenfolge über den Index angesprochen werden können. Um einen zusätzlichen Slot für die Items zu erzeugen genügt ein Klick auf das blaue Icon oben links. In dem erscheinenden Kontextmenü wird nun ein Item-Block in den Listenblock gezogen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man anschließend zusätzliche Items in die Liste aufnehmen, kann man dies mit dem Block &#039;&#039;&#039;add items to list&#039;&#039;&#039; bewerkstelligt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun eines der Listenitems anzusprechen, verwendet man die Methode &#039;&#039;&#039;select list item&#039;&#039;&#039;, bei der der Indexwert als Parameterwert angegeben wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Methode &#039;&#039;&#039;length of list&#039;&#039;&#039; lässt sich die Länge und damit die Anzahl der Items in einer Liste bestimmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie vom Umgang mit Arrays und Arraylists bekannt, können auch Listen mittels Schleifen manipuliert werden. In folgendem Beispiel werden die Inhalte aller Items der Liste gelöscht (nicht die Items selbst!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der große Nachteil der Listen ist, dass sie nur während der Laufzeit der App genutzt werden können. Nach Beenden der App werden alle Daten der Liste gelöscht. Um mit den eingegebenen Daten auch zu einem späteren Zeitpunkt arbeiten zu können, müssen diese permanent gespeichert werden. Der App Inventor bietet hierzu die Möglichkeit mittels &#039;&#039;&#039;TinyDB&#039;&#039;&#039; den internen Speicher des Smartphones zu nutzen.&lt;br /&gt;
&lt;br /&gt;
===TinyDB===&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;TinyDB&#039;&#039;&#039; handelt es sich um einen Speicherbereich, den das Betriebssystem Android jeder mit dem App Inventor erstellten App dauerhaft zur Verfügung stellt. Darin können beliebig viele Daten abgelegt und abgerufen werden. Identifiziert werden sie dabei über einen eindeutigen Bezeichner (&#039;&#039;&#039;tag&#039;&#039;&#039;). Die zu speichernden Daten entsprechen den Werten, die während der Programmlaufzeit in den entsprechenden Variablen vorliegen. Dieses bedeutet auch, dass zu speichernde Daten als Werte in einer Variable vorliegen müssen und an die Methode &#039;&#039;&#039;StoreValue&#039;&#039;&#039; übergeben werden. Auch beim Laden wird eine Variable gleichen oder kompatiblen Datentyps benötigt, in die der Wert aus dem Speicher über die Methode &#039;&#039;&#039;GetValue&#039;&#039;&#039; geschrieben werden kann. Mit &#039;&#039;&#039;clear all&#039;&#039;&#039; bzw. &#039;&#039;&#039;clear tag&#039;&#039;&#039; können alle Daten der TinyDB bzw. die mit einem einzelnen &#039;&#039;tag&#039;&#039; verbundenen Daten gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine TinyDB ist eine nicht-sichtbare Komponente und wird dem Projekt im Designermodus hinzugefügt. Die Funktionalität kann nur nach der Installation der App auf dem Smartphone vollständig getestet werde, da im Entwicklungsmodus die Daten nach einem Neustart der App immer wieder neu eingelesen werden müssen.&lt;br /&gt;
&lt;br /&gt;
===Das Design===&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
====Speichern der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die eingegebenen Vokabelpaare zu speichern, nutzen wir zwei Listen. Diese beiden Listen können wir über den Index der einzelnen Items miteinander verbinden, d.h. Items mit gleichem Index bilden ein Vokabelpaar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir legen also zuerst zwei Listen an. Dazu deklarieren wir zwei Variablen &#039;&#039;Englisch&#039;&#039; und &#039;&#039;Deutsch&#039;&#039; und initialisieren sie als leere Listen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Speichern der Vokabelpaare erfolgt durch Anklicken des Buttons &#039;&#039;Speichern&#039;&#039;. Wir beginnen also wieder mit dem entsprechenden Event Handler. Nach der oben erläuterten Vorgehensweise fügen wir den Inhalt der &#039;&#039;TextBoxEnglisch&#039;&#039; der Liste &#039;&#039;Englisch&#039;&#039; hinzu und den Inhalt der &#039;&#039;TextBoxDeutsch&#039;&#039; der Liste &#039;&#039;Deutsch&#039;&#039;. Anschließend leeren wir die zwei Textboxen wieder um sie für eine neue Eingabe vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise haben wir nach wiederholtem Speichern eine Liste von Vokabelpaaren. Allerdings existiert diese Liste nur während der Laufzeit der App und wird nach Beenden der Anwendung wieder gelöscht, was dem Sinn eines Vokabeltrainers zuwiderläuft. Zudem wollen wir neue Vokabeln den bereits bestehenden Listen hinzufügen. Wir müssen also den Variablen &#039;&#039;Englisch&#039;&#039; bzw. &#039;&#039;Deutsch&#039;&#039; den Inhalt der in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; abgespeicherten Listen hinzufügen. In einem ersten Schritt setzen wir den Wert der Variablen auf den aktuellen Speicherinhalt der jeweiligen Listen. Indem wir einen &#039;&#039;tag&#039;&#039; &#039;&#039;Englischliste&#039;&#039; bzw. &#039;&#039;Deutschliste&#039;&#039; verwenden und den Inhalt einer Variable vom Datentyp &#039;&#039;Liste&#039;&#039; zuweisen, haben wir automatisch in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; zwei Listen kreiert, die wir mit dem entsprechenden Namen immer wieder ansprechen können. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genau das tun wir nun, indem wir nach dem Hinzufügen eines Items zur entsprechenden Liste diese wieder in der TinyDB abspeichern. Damit wird mit dem Klicken des Speicherbuttons die permanente Vokabelliste immer wieder aktualisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Anzeigen der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Das Lernen einer Liste von Vokabeln beginnt üblicherweise damit, dass wir uns die einzelnen Vokabelpaare einprägen, bevor wir mit dem eigentlichen Abfragen beginnen. Es sollen also die einzelnen Vokabelpaare auf dem Display aufgelistet werden, so dass sie für den ersten Schritt des Vokabellernens zur Verfügung stehen. Zu diesem Zweck deklarieren wir zwei weitere Variablen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; und initialisieren sie wiederum als leere Listen. Diese Listen werden allerdings nur während der Laufzeit der App benötigt, so dass sie nicht in der TinyDB abgespeichert werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen nun die Vokabeln beim Speichern gleichzeitig auch den nicht-permanenten Listen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kommt die auf den ersten Blick recht einfache Aufgabe, die Vokabelpaare im Label &#039;&#039;LabelVokabelpaar&#039;&#039; aufzulisten, was aber etwas aufwändiger ist als es aussieht. Wir erstellen zu diesem Zweck eine eigene Prozedur &#039;&#039;VocShow&#039;&#039;, die diese Aufgabe umsetzt. Diese Prozedur macht Folgendes: Sie leert bei jedem Aufruf zuerst das Label. Dann schreibt sie mit Hilfe einer Schleife, die vom Index 1 bis zur aktuellen Länge der Liste läuft die einzelnen Vokabelpaare in das Label. Dazu werden die zusammengehörigen Items jeweils in eine Hilfsvariable geschrieben, indem sie mittels der &#039;&#039;&#039;select list item&#039;&#039;&#039;-Methode aus den nicht-permanenten Listen abgerufen werden und anschließend verbunden werden. Im Label wird dabei der aktuelle Inhalt des Labels mit dem neuen Vokabelpaar verbunden und durch einen Zeilenwechsel (\n) gegliedert.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen also mit der Deklaration und Initialisierung der Hilfsvariablen für die zu verbindenden Items der Vokabellisten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_7.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir die oben beschriebene Vorgehensweise um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_8.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir den Aufruf der Prozedur &#039;&#039;&#039;VocShow&#039;&#039;&#039; noch an entsprechender Stelle im Block &#039;&#039;Speichern&#039;&#039; einbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_9.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Leeren der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Nachdem wir die Vokabelliste nach dem Einprägen der neuen Vokabeln nicht mehr brauchen, soll sie nach Gebrauch wieder gelöscht werden können. Dazu versehen wir den Button &#039;&#039;Liste leeren&#039;&#039; mit dem entsprechenden Event Handler. Das Leeren ist relativ einfach. Wir setzen das Label &#039;&#039;LabelVokabelpaar&#039;&#039; auf einen leeren String und belegen die beiden Variablen für die nicht-permanenten Listen mit einer leeren Liste, d.h. es werden alle Items aus den beiden Listen gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_13.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Abfragen der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir die eigentliche Funktion des Vokabeltrainers um - das Abfragen. Zu diesem Zweck durchlaufen wir die Vokabellisten, indem wir bei jedem Klicken des Buttons &#039;&#039;Abfragen&#039;&#039; den Index der Listen um eins erhöhen. Zur Anzeige der englischen Vokabel nutzen wir die bereits angelegte Hilfsvariable &#039;&#039;VocE&#039;&#039; und weisen ihr aus der permanenten &#039;&#039;Englischliste&#039;&#039; der TinyDB das dem Indexwert entsprechende Item zu, das wir dann dem Setter des Labels &#039;&#039;LabelAsk&#039;&#039; zuweisen. Gleichzeitig löschen wir die Anzeige des deutschen Wortes im Label &#039;&#039;LabelShow&#039;&#039;. Wird der Button &#039;&#039;Show&#039;&#039; geklickt, soll dort das zugehörige deutsche Wort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen mit der Deklaration der Hilfsvariable für den Listenindex. Diese wird mit dem Wert 0 initialisiert, da damit beim ersten Klick des Buttons &#039;&#039;Abfragen&#039;&#039; der Indexwert auf 1 und damit auf den Wert des ersten Items in der Liste gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir versehen nun den Button &#039;&#039;Abfragen&#039;&#039; mit dem entsprechenden Event Handler und setzen die oben beschriebene Vorgehensweise um. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10b.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt setellt eine kleine Schönheitskorrektur dar. Wir setzten den Text des Buttons &#039;&#039;Abfragen&#039;&#039; auf &#039;&#039;Next&#039;&#039;. Den Wechsel der beiden Beschriftungen müssen wir im Auge behalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10c.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen wir vor einem kleinen Problem: Ist das Ende der Liste erreicht, bekommen wir mit dem nächsten Klick eine Fehlermeldung. Wir müssen dafür sorgen, dass bei Erreichen des Listenendes der Listenindex wieder auf 0 gesetzt wird, der Text des Buttons &#039;&#039;Next&#039;&#039; wieder auf &#039;&#039;Abfragen&#039;&#039; geändert wird und die beiden Labels &#039;&#039;LabelAsk&#039;&#039; und &#039;&#039;LabelShow&#039;&#039; einen leeren String erhalten. Damit kann das Abfragen wieder von vorne beginnen. Programmiertechnisch setzen wir das mit einer zweiseitigen bedingten Anweisung (&#039;&#039;if ... else&#039;&#039;) um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10d.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt werden die Vokabeln immer in der gleichen Reihenfolge abgefragt, damit eine zufällige Abfrage passiert, muss ein zufälliger Index herausgesucht werden. Außerdem muss die Hintergrund Farbe zu grau geändert werden, dies wird deutlich sobald man sich den Aufbau Button Lösung anschaut.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 5.PNG||beschrei ung]]&lt;br /&gt;
&lt;br /&gt;
Die Anzeige des zugehörigen deutschen Wortes erfolgt analog zur Anzeige des englischen Wortes. Abhängig vom aktuellen Listenindex wird das entsprechende Item aus der &#039;&#039;Deutschliste&#039;&#039; in der TinyDB im Label &#039;&#039;LabelShow&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_12.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann man auch eine schriftliche Abfrage einbauen, indem man eine Textbox hinzufügt und der Inhalt der Textbox mit dem Text von &amp;quot;LabelShow&amp;quot; vergleichen lässt.Bei gleichem Text färbt sich der Hintergrund der Textbox grün bei unterschiedlichem Inhalt rot.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 2.PNG|Beschreibung]]&lt;br /&gt;
&lt;br /&gt;
====Abfrage der aktuellsten Vokabeln====&lt;br /&gt;
&lt;br /&gt;
In der Praxis will man oft nur die aktuellsten Vokabeln wiederholen, um dies umzusetzen muss man die Index-Auswahl auf das Gebiet der neusten Wörter beschränken. Der Rest der Abrage bleibt gleich.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 6.PNG||Beschreibung]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Lösung der Aktuellsten Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Die Lösung kann nahezu 1 zu 1 übernommen werden da nur der benötigte Index automatisch von dem Abfrage-Wort entnommen wird.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 7.PNG||beschreibung]]&lt;br /&gt;
&lt;br /&gt;
====Löschen des Datenspeichers====&lt;br /&gt;
&lt;br /&gt;
Insbesondere zu Testzwecken ist es günstig, wenn man die benutzte Datenbank löschen kann. Dazu wird mit der Methode &#039;&#039;&#039;ClearAll&#039;&#039;&#039; der Inhalt der TinyDB gelöscht, die Labels werden auf einen leeren String gesetzt und die Hilfsvariablen werden auf den Anfangswert zurückgesetzt. Für die endgültige App sollte vor dem endgültigen Löschen noch eine Sicherheitsabfrage an den User erfolgen, da das versehentliche Löschen einer Datenbank ärgerlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_14.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Initialisierung der Screen====&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir uns noch Gedanken über die Initialisierung der Screen machen. Auf jeden Fall sollten wir den Text des Buttons &#039;&#039;ButtonAbfragen&#039;&#039; auf den Text &#039;&#039;Abfragen&#039;&#039; setzen. Zudem ist es günstiger das Laden der Daten gleich bei der Initialisierung der Screen vorzunehmen. Wir verlagern die entsprechenden Blöcke aus dem Block für das Speichern in die Initialisierung der Screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_16.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Beenden der Anwendung====&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir nur noch, wie gewohnt,  das Beenden der Applikation umsetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_15.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Erweiterungsaufgaben===&lt;br /&gt;
&lt;br /&gt;
* Die App funktioniert nun bei der vorgesehenen Verwendung ohne Probleme. Allerdings wird ein Beta-Test einige Probleme aufwerfen, die noch zu lösen sind. Beispiele:&lt;br /&gt;
** Was tun bei einer fehlerhaften Eingabe?&lt;br /&gt;
** Was passiert beim Speichern ohne vorherige Eingabe?&lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Lösungsvorschlag:&#039;&#039;&#039;&lt;br /&gt;
::Um das Problem zu lösen bauen wir eine Gleichstellung der TextBoxEnglish mit einem leeren Textfeld in den Block &amp;quot;Speicher&amp;quot; ein und leiten dann den Benutzer, wenn das Textfeld leer ist, noch bevor die Vokabel gespeichert wird zu einer anderen Screen. Dort erhält er die Nachricht, erst etwas einzugeben bevor er abspeichert. Mit Hilfe eines Buttons kann der Benutzer wieder zur ursprünglichen Screen zurückkehren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Bild 1.PNG||Speichern]]&lt;br /&gt;
&lt;br /&gt;
* Was passiert bei einer Abfrage bei leerer Liste?&lt;br /&gt;
&lt;br /&gt;
* Die Abfrage durchläuft immer die ganze gespeicherte Liste und das in derselben Reihenfolge der Vokabeln. Die Vokabeln sollen nun in zufälliger Reihenfolge abgefragt werden. Zusätzlich sollen dabei alle Vokabeln  abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
* In der Praxis sollten nicht immer alle Vokabeln abgefragt werden, sondern zuerst die aktuellen Vokabeln. Dazu sollten die Vokabeln der letzten beiden Einheiten wiederholt werden und eventuell eine bestimmte Anzahl von Vokabeln aus früheren Einheiten. Dazu müssen wir in einer Liste der TinyDB auch die Anzahl der Vokabeln pro Einheit abfragen können und die gewünschten Vokabeln über eine Manipulation der Listenlänge erhalten können.&lt;br /&gt;
&lt;br /&gt;
* Es sollte auch möglich sein, die Abfragerichtung E-D/D-E festzulegen.&lt;br /&gt;
&lt;br /&gt;
* Der User sollte richtige und falsche Antworten kennzeichnen und seine Ergebnisse speichern können. Eine direkte Bewertung mit Eingabe der Lösung dürfte höchstens bei sehr einfachen Vokabeln Sinn machen. Vielleicht gibt es auch einen Weg, Vokabeln die nicht gewusst wurden, häufiger abzufragen.&lt;br /&gt;
&lt;br /&gt;
* Aus Designsicht wäre es wünschenswert, wenn nur jeweils die Bestandteile des Moduls zu sehen wären, das gerade verwendet wird (Eingabe, Abfrage und eventuell Einstellungen).&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:Projekt_bild_7.PNG&amp;diff=3847</id>
		<title>Datei:Projekt bild 7.PNG</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:Projekt_bild_7.PNG&amp;diff=3847"/>
		<updated>2015-04-29T13:40:54Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{de|1=beschreibung}}&lt;br /&gt;
|date=2015-04-29 15:40:38&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Hoeherl011|Hoeherl011]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Uploaded with UploadWizard]]&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:Projekt_bild_6.PNG&amp;diff=3846</id>
		<title>Datei:Projekt bild 6.PNG</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:Projekt_bild_6.PNG&amp;diff=3846"/>
		<updated>2015-04-29T13:34:35Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{de|1=Beschreibung}}&lt;br /&gt;
|date=2015-04-29 15:33:54&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Hoeherl011|Hoeherl011]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Uploaded with UploadWizard]]&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3845</id>
		<title>Listen und Datenbank - der Vokabeltrainer</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3845"/>
		<updated>2015-04-29T13:28:37Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Abfragen der Vokabeln */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Die Idee===&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Vokabeltrainer programmieren, bei dem Vokabelpaare (Englisch - Deutsch) in Textboxes eingegeben werden können. Die aktuell eingegebenen Vokabeln werden als Liste angezeigt, die nach dem ersten Einprägen gelöscht werden kann. Die Vokabeln werden in eine Datenbank geschrieben, die beim Start der App zur Verfügung steht. Die englischen Vokabeln werden auf Buttonklick angezeigt und nach einem weiteren Klick das zugehörige deutsche Wort. Insbesondere zu Testzwecken besteht auch die Möglichkeit die gesamte Datenbank zu löschen.&lt;br /&gt;
&lt;br /&gt;
===Listen===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;Array&#039;&#039; und &#039;&#039;Arraylist&#039;&#039; kennen wir aus Java bereits zwei Datentypen, mit denen größere Datenmengen abgespeichert werden können. Der App Inventor bietet zu diesem Zweck Listen. Die Vorgehensweise ist dabei dem Umgang mit Arraylists sehr ähnlich. Wesentliche Unterschiede sind, dass die Items nicht vom selben Datentyp sein müssen und dass die Indizierung der Items nicht mit dem Wert 0 beginnt, sondern mit dem Wert 1 und damit auch der Index des letzten Items in der Liste der Länge der Liste entspricht. Die zur Verfügung stehenden Methoden finden sich im Built-In Block &#039;&#039;Lists&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie bei Arraylists erhält die Liste einen Namen und wird als leere Liste initialisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Liste kann nun mit beliebig vielen Items gefüllt werden, die anschließend in dieser Reihenfolge über den Index angesprochen werden können. Um einen zusätzlichen Slot für die Items zu erzeugen genügt ein Klick auf das blaue Icon oben links. In dem erscheinenden Kontextmenü wird nun ein Item-Block in den Listenblock gezogen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man anschließend zusätzliche Items in die Liste aufnehmen, kann man dies mit dem Block &#039;&#039;&#039;add items to list&#039;&#039;&#039; bewerkstelligt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun eines der Listenitems anzusprechen, verwendet man die Methode &#039;&#039;&#039;select list item&#039;&#039;&#039;, bei der der Indexwert als Parameterwert angegeben wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Methode &#039;&#039;&#039;length of list&#039;&#039;&#039; lässt sich die Länge und damit die Anzahl der Items in einer Liste bestimmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie vom Umgang mit Arrays und Arraylists bekannt, können auch Listen mittels Schleifen manipuliert werden. In folgendem Beispiel werden die Inhalte aller Items der Liste gelöscht (nicht die Items selbst!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der große Nachteil der Listen ist, dass sie nur während der Laufzeit der App genutzt werden können. Nach Beenden der App werden alle Daten der Liste gelöscht. Um mit den eingegebenen Daten auch zu einem späteren Zeitpunkt arbeiten zu können, müssen diese permanent gespeichert werden. Der App Inventor bietet hierzu die Möglichkeit mittels &#039;&#039;&#039;TinyDB&#039;&#039;&#039; den internen Speicher des Smartphones zu nutzen.&lt;br /&gt;
&lt;br /&gt;
===TinyDB===&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;TinyDB&#039;&#039;&#039; handelt es sich um einen Speicherbereich, den das Betriebssystem Android jeder mit dem App Inventor erstellten App dauerhaft zur Verfügung stellt. Darin können beliebig viele Daten abgelegt und abgerufen werden. Identifiziert werden sie dabei über einen eindeutigen Bezeichner (&#039;&#039;&#039;tag&#039;&#039;&#039;). Die zu speichernden Daten entsprechen den Werten, die während der Programmlaufzeit in den entsprechenden Variablen vorliegen. Dieses bedeutet auch, dass zu speichernde Daten als Werte in einer Variable vorliegen müssen und an die Methode &#039;&#039;&#039;StoreValue&#039;&#039;&#039; übergeben werden. Auch beim Laden wird eine Variable gleichen oder kompatiblen Datentyps benötigt, in die der Wert aus dem Speicher über die Methode &#039;&#039;&#039;GetValue&#039;&#039;&#039; geschrieben werden kann. Mit &#039;&#039;&#039;clear all&#039;&#039;&#039; bzw. &#039;&#039;&#039;clear tag&#039;&#039;&#039; können alle Daten der TinyDB bzw. die mit einem einzelnen &#039;&#039;tag&#039;&#039; verbundenen Daten gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine TinyDB ist eine nicht-sichtbare Komponente und wird dem Projekt im Designermodus hinzugefügt. Die Funktionalität kann nur nach der Installation der App auf dem Smartphone vollständig getestet werde, da im Entwicklungsmodus die Daten nach einem Neustart der App immer wieder neu eingelesen werden müssen.&lt;br /&gt;
&lt;br /&gt;
===Das Design===&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
====Speichern der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die eingegebenen Vokabelpaare zu speichern, nutzen wir zwei Listen. Diese beiden Listen können wir über den Index der einzelnen Items miteinander verbinden, d.h. Items mit gleichem Index bilden ein Vokabelpaar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir legen also zuerst zwei Listen an. Dazu deklarieren wir zwei Variablen &#039;&#039;Englisch&#039;&#039; und &#039;&#039;Deutsch&#039;&#039; und initialisieren sie als leere Listen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Speichern der Vokabelpaare erfolgt durch Anklicken des Buttons &#039;&#039;Speichern&#039;&#039;. Wir beginnen also wieder mit dem entsprechenden Event Handler. Nach der oben erläuterten Vorgehensweise fügen wir den Inhalt der &#039;&#039;TextBoxEnglisch&#039;&#039; der Liste &#039;&#039;Englisch&#039;&#039; hinzu und den Inhalt der &#039;&#039;TextBoxDeutsch&#039;&#039; der Liste &#039;&#039;Deutsch&#039;&#039;. Anschließend leeren wir die zwei Textboxen wieder um sie für eine neue Eingabe vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise haben wir nach wiederholtem Speichern eine Liste von Vokabelpaaren. Allerdings existiert diese Liste nur während der Laufzeit der App und wird nach Beenden der Anwendung wieder gelöscht, was dem Sinn eines Vokabeltrainers zuwiderläuft. Zudem wollen wir neue Vokabeln den bereits bestehenden Listen hinzufügen. Wir müssen also den Variablen &#039;&#039;Englisch&#039;&#039; bzw. &#039;&#039;Deutsch&#039;&#039; den Inhalt der in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; abgespeicherten Listen hinzufügen. In einem ersten Schritt setzen wir den Wert der Variablen auf den aktuellen Speicherinhalt der jeweiligen Listen. Indem wir einen &#039;&#039;tag&#039;&#039; &#039;&#039;Englischliste&#039;&#039; bzw. &#039;&#039;Deutschliste&#039;&#039; verwenden und den Inhalt einer Variable vom Datentyp &#039;&#039;Liste&#039;&#039; zuweisen, haben wir automatisch in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; zwei Listen kreiert, die wir mit dem entsprechenden Namen immer wieder ansprechen können. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genau das tun wir nun, indem wir nach dem Hinzufügen eines Items zur entsprechenden Liste diese wieder in der TinyDB abspeichern. Damit wird mit dem Klicken des Speicherbuttons die permanente Vokabelliste immer wieder aktualisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Anzeigen der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Das Lernen einer Liste von Vokabeln beginnt üblicherweise damit, dass wir uns die einzelnen Vokabelpaare einprägen, bevor wir mit dem eigentlichen Abfragen beginnen. Es sollen also die einzelnen Vokabelpaare auf dem Display aufgelistet werden, so dass sie für den ersten Schritt des Vokabellernens zur Verfügung stehen. Zu diesem Zweck deklarieren wir zwei weitere Variablen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; und initialisieren sie wiederum als leere Listen. Diese Listen werden allerdings nur während der Laufzeit der App benötigt, so dass sie nicht in der TinyDB abgespeichert werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen nun die Vokabeln beim Speichern gleichzeitig auch den nicht-permanenten Listen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kommt die auf den ersten Blick recht einfache Aufgabe, die Vokabelpaare im Label &#039;&#039;LabelVokabelpaar&#039;&#039; aufzulisten, was aber etwas aufwändiger ist als es aussieht. Wir erstellen zu diesem Zweck eine eigene Prozedur &#039;&#039;VocShow&#039;&#039;, die diese Aufgabe umsetzt. Diese Prozedur macht Folgendes: Sie leert bei jedem Aufruf zuerst das Label. Dann schreibt sie mit Hilfe einer Schleife, die vom Index 1 bis zur aktuellen Länge der Liste läuft die einzelnen Vokabelpaare in das Label. Dazu werden die zusammengehörigen Items jeweils in eine Hilfsvariable geschrieben, indem sie mittels der &#039;&#039;&#039;select list item&#039;&#039;&#039;-Methode aus den nicht-permanenten Listen abgerufen werden und anschließend verbunden werden. Im Label wird dabei der aktuelle Inhalt des Labels mit dem neuen Vokabelpaar verbunden und durch einen Zeilenwechsel (\n) gegliedert.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen also mit der Deklaration und Initialisierung der Hilfsvariablen für die zu verbindenden Items der Vokabellisten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_7.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir die oben beschriebene Vorgehensweise um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_8.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir den Aufruf der Prozedur &#039;&#039;&#039;VocShow&#039;&#039;&#039; noch an entsprechender Stelle im Block &#039;&#039;Speichern&#039;&#039; einbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_9.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Leeren der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Nachdem wir die Vokabelliste nach dem Einprägen der neuen Vokabeln nicht mehr brauchen, soll sie nach Gebrauch wieder gelöscht werden können. Dazu versehen wir den Button &#039;&#039;Liste leeren&#039;&#039; mit dem entsprechenden Event Handler. Das Leeren ist relativ einfach. Wir setzen das Label &#039;&#039;LabelVokabelpaar&#039;&#039; auf einen leeren String und belegen die beiden Variablen für die nicht-permanenten Listen mit einer leeren Liste, d.h. es werden alle Items aus den beiden Listen gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_13.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Abfragen der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir die eigentliche Funktion des Vokabeltrainers um - das Abfragen. Zu diesem Zweck durchlaufen wir die Vokabellisten, indem wir bei jedem Klicken des Buttons &#039;&#039;Abfragen&#039;&#039; den Index der Listen um eins erhöhen. Zur Anzeige der englischen Vokabel nutzen wir die bereits angelegte Hilfsvariable &#039;&#039;VocE&#039;&#039; und weisen ihr aus der permanenten &#039;&#039;Englischliste&#039;&#039; der TinyDB das dem Indexwert entsprechende Item zu, das wir dann dem Setter des Labels &#039;&#039;LabelAsk&#039;&#039; zuweisen. Gleichzeitig löschen wir die Anzeige des deutschen Wortes im Label &#039;&#039;LabelShow&#039;&#039;. Wird der Button &#039;&#039;Show&#039;&#039; geklickt, soll dort das zugehörige deutsche Wort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen mit der Deklaration der Hilfsvariable für den Listenindex. Diese wird mit dem Wert 0 initialisiert, da damit beim ersten Klick des Buttons &#039;&#039;Abfragen&#039;&#039; der Indexwert auf 1 und damit auf den Wert des ersten Items in der Liste gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir versehen nun den Button &#039;&#039;Abfragen&#039;&#039; mit dem entsprechenden Event Handler und setzen die oben beschriebene Vorgehensweise um. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10b.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt setellt eine kleine Schönheitskorrektur dar. Wir setzten den Text des Buttons &#039;&#039;Abfragen&#039;&#039; auf &#039;&#039;Next&#039;&#039;. Den Wechsel der beiden Beschriftungen müssen wir im Auge behalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10c.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen wir vor einem kleinen Problem: Ist das Ende der Liste erreicht, bekommen wir mit dem nächsten Klick eine Fehlermeldung. Wir müssen dafür sorgen, dass bei Erreichen des Listenendes der Listenindex wieder auf 0 gesetzt wird, der Text des Buttons &#039;&#039;Next&#039;&#039; wieder auf &#039;&#039;Abfragen&#039;&#039; geändert wird und die beiden Labels &#039;&#039;LabelAsk&#039;&#039; und &#039;&#039;LabelShow&#039;&#039; einen leeren String erhalten. Damit kann das Abfragen wieder von vorne beginnen. Programmiertechnisch setzen wir das mit einer zweiseitigen bedingten Anweisung (&#039;&#039;if ... else&#039;&#039;) um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10d.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt werden die Vokabeln immer in der gleichen Reihenfolge abgefragt, damit eine zufällige Abfrage passiert, muss ein zufälliger Index herausgesucht werden. Außerdem muss die Hintergrund Farbe zu grau geändert werden, dies wird deutlich sobald man sich den Aufbau Button Lösung anschaut.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 5.PNG||beschrei ung]]&lt;br /&gt;
&lt;br /&gt;
Die Anzeige des zugehörigen deutschen Wortes erfolgt analog zur Anzeige des englischen Wortes. Abhängig vom aktuellen Listenindex wird das entsprechende Item aus der &#039;&#039;Deutschliste&#039;&#039; in der TinyDB im Label &#039;&#039;LabelShow&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_12.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann man auch eine schriftliche Abfrage einbauen, indem man eine Textbox hinzufügt und der Inhalt der Textbox mit dem Text von &amp;quot;LabelShow&amp;quot; vergleichen lässt.Bei gleichem Text färbt sich der Hintergrund der Textbox grün bei unterschiedlichem Inhalt rot.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 2.PNG|Beschreibung]]&lt;br /&gt;
&lt;br /&gt;
====Löschen des Datenspeichers====&lt;br /&gt;
&lt;br /&gt;
Insbesondere zu Testzwecken ist es günstig, wenn man die benutzte Datenbank löschen kann. Dazu wird mit der Methode &#039;&#039;&#039;ClearAll&#039;&#039;&#039; der Inhalt der TinyDB gelöscht, die Labels werden auf einen leeren String gesetzt und die Hilfsvariablen werden auf den Anfangswert zurückgesetzt. Für die endgültige App sollte vor dem endgültigen Löschen noch eine Sicherheitsabfrage an den User erfolgen, da das versehentliche Löschen einer Datenbank ärgerlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_14.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Initialisierung der Screen====&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir uns noch Gedanken über die Initialisierung der Screen machen. Auf jeden Fall sollten wir den Text des Buttons &#039;&#039;ButtonAbfragen&#039;&#039; auf den Text &#039;&#039;Abfragen&#039;&#039; setzen. Zudem ist es günstiger das Laden der Daten gleich bei der Initialisierung der Screen vorzunehmen. Wir verlagern die entsprechenden Blöcke aus dem Block für das Speichern in die Initialisierung der Screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_16.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Beenden der Anwendung====&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir nur noch, wie gewohnt,  das Beenden der Applikation umsetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_15.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Erweiterungsaufgaben===&lt;br /&gt;
&lt;br /&gt;
* Die App funktioniert nun bei der vorgesehenen Verwendung ohne Probleme. Allerdings wird ein Beta-Test einige Probleme aufwerfen, die noch zu lösen sind. Beispiele:&lt;br /&gt;
** Was tun bei einer fehlerhaften Eingabe?&lt;br /&gt;
** Was passiert beim Speichern ohne vorherige Eingabe?&lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Lösungsvorschlag:&#039;&#039;&#039;&lt;br /&gt;
::Um das Problem zu lösen bauen wir eine Gleichstellung der TextBoxEnglish mit einem leeren Textfeld in den Block &amp;quot;Speicher&amp;quot; ein und leiten dann den Benutzer, wenn das Textfeld leer ist, noch bevor die Vokabel gespeichert wird zu einer anderen Screen. Dort erhält er die Nachricht, erst etwas einzugeben bevor er abspeichert. Mit Hilfe eines Buttons kann der Benutzer wieder zur ursprünglichen Screen zurückkehren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Bild 1.PNG||Speichern]]&lt;br /&gt;
&lt;br /&gt;
* Was passiert bei einer Abfrage bei leerer Liste?&lt;br /&gt;
&lt;br /&gt;
* Die Abfrage durchläuft immer die ganze gespeicherte Liste und das in derselben Reihenfolge der Vokabeln. Die Vokabeln sollen nun in zufälliger Reihenfolge abgefragt werden. Zusätzlich sollen dabei alle Vokabeln  abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
* In der Praxis sollten nicht immer alle Vokabeln abgefragt werden, sondern zuerst die aktuellen Vokabeln. Dazu sollten die Vokabeln der letzten beiden Einheiten wiederholt werden und eventuell eine bestimmte Anzahl von Vokabeln aus früheren Einheiten. Dazu müssen wir in einer Liste der TinyDB auch die Anzahl der Vokabeln pro Einheit abfragen können und die gewünschten Vokabeln über eine Manipulation der Listenlänge erhalten können.&lt;br /&gt;
&lt;br /&gt;
* Es sollte auch möglich sein, die Abfragerichtung E-D/D-E festzulegen.&lt;br /&gt;
&lt;br /&gt;
* Der User sollte richtige und falsche Antworten kennzeichnen und seine Ergebnisse speichern können. Eine direkte Bewertung mit Eingabe der Lösung dürfte höchstens bei sehr einfachen Vokabeln Sinn machen. Vielleicht gibt es auch einen Weg, Vokabeln die nicht gewusst wurden, häufiger abzufragen.&lt;br /&gt;
&lt;br /&gt;
* Aus Designsicht wäre es wünschenswert, wenn nur jeweils die Bestandteile des Moduls zu sehen wären, das gerade verwendet wird (Eingabe, Abfrage und eventuell Einstellungen).&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:Projekt_bild_5.PNG&amp;diff=3844</id>
		<title>Datei:Projekt bild 5.PNG</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:Projekt_bild_5.PNG&amp;diff=3844"/>
		<updated>2015-04-29T13:25:57Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{de|1=beschrei ung}}&lt;br /&gt;
|date=2015-04-29 15:25:39&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Hoeherl011|Hoeherl011]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Uploaded with UploadWizard]]&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3843</id>
		<title>Listen und Datenbank - der Vokabeltrainer</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3843"/>
		<updated>2015-04-29T13:17:25Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Erweiterungsaufgaben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Die Idee===&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Vokabeltrainer programmieren, bei dem Vokabelpaare (Englisch - Deutsch) in Textboxes eingegeben werden können. Die aktuell eingegebenen Vokabeln werden als Liste angezeigt, die nach dem ersten Einprägen gelöscht werden kann. Die Vokabeln werden in eine Datenbank geschrieben, die beim Start der App zur Verfügung steht. Die englischen Vokabeln werden auf Buttonklick angezeigt und nach einem weiteren Klick das zugehörige deutsche Wort. Insbesondere zu Testzwecken besteht auch die Möglichkeit die gesamte Datenbank zu löschen.&lt;br /&gt;
&lt;br /&gt;
===Listen===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;Array&#039;&#039; und &#039;&#039;Arraylist&#039;&#039; kennen wir aus Java bereits zwei Datentypen, mit denen größere Datenmengen abgespeichert werden können. Der App Inventor bietet zu diesem Zweck Listen. Die Vorgehensweise ist dabei dem Umgang mit Arraylists sehr ähnlich. Wesentliche Unterschiede sind, dass die Items nicht vom selben Datentyp sein müssen und dass die Indizierung der Items nicht mit dem Wert 0 beginnt, sondern mit dem Wert 1 und damit auch der Index des letzten Items in der Liste der Länge der Liste entspricht. Die zur Verfügung stehenden Methoden finden sich im Built-In Block &#039;&#039;Lists&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie bei Arraylists erhält die Liste einen Namen und wird als leere Liste initialisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Liste kann nun mit beliebig vielen Items gefüllt werden, die anschließend in dieser Reihenfolge über den Index angesprochen werden können. Um einen zusätzlichen Slot für die Items zu erzeugen genügt ein Klick auf das blaue Icon oben links. In dem erscheinenden Kontextmenü wird nun ein Item-Block in den Listenblock gezogen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man anschließend zusätzliche Items in die Liste aufnehmen, kann man dies mit dem Block &#039;&#039;&#039;add items to list&#039;&#039;&#039; bewerkstelligt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun eines der Listenitems anzusprechen, verwendet man die Methode &#039;&#039;&#039;select list item&#039;&#039;&#039;, bei der der Indexwert als Parameterwert angegeben wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Methode &#039;&#039;&#039;length of list&#039;&#039;&#039; lässt sich die Länge und damit die Anzahl der Items in einer Liste bestimmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie vom Umgang mit Arrays und Arraylists bekannt, können auch Listen mittels Schleifen manipuliert werden. In folgendem Beispiel werden die Inhalte aller Items der Liste gelöscht (nicht die Items selbst!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der große Nachteil der Listen ist, dass sie nur während der Laufzeit der App genutzt werden können. Nach Beenden der App werden alle Daten der Liste gelöscht. Um mit den eingegebenen Daten auch zu einem späteren Zeitpunkt arbeiten zu können, müssen diese permanent gespeichert werden. Der App Inventor bietet hierzu die Möglichkeit mittels &#039;&#039;&#039;TinyDB&#039;&#039;&#039; den internen Speicher des Smartphones zu nutzen.&lt;br /&gt;
&lt;br /&gt;
===TinyDB===&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;TinyDB&#039;&#039;&#039; handelt es sich um einen Speicherbereich, den das Betriebssystem Android jeder mit dem App Inventor erstellten App dauerhaft zur Verfügung stellt. Darin können beliebig viele Daten abgelegt und abgerufen werden. Identifiziert werden sie dabei über einen eindeutigen Bezeichner (&#039;&#039;&#039;tag&#039;&#039;&#039;). Die zu speichernden Daten entsprechen den Werten, die während der Programmlaufzeit in den entsprechenden Variablen vorliegen. Dieses bedeutet auch, dass zu speichernde Daten als Werte in einer Variable vorliegen müssen und an die Methode &#039;&#039;&#039;StoreValue&#039;&#039;&#039; übergeben werden. Auch beim Laden wird eine Variable gleichen oder kompatiblen Datentyps benötigt, in die der Wert aus dem Speicher über die Methode &#039;&#039;&#039;GetValue&#039;&#039;&#039; geschrieben werden kann. Mit &#039;&#039;&#039;clear all&#039;&#039;&#039; bzw. &#039;&#039;&#039;clear tag&#039;&#039;&#039; können alle Daten der TinyDB bzw. die mit einem einzelnen &#039;&#039;tag&#039;&#039; verbundenen Daten gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine TinyDB ist eine nicht-sichtbare Komponente und wird dem Projekt im Designermodus hinzugefügt. Die Funktionalität kann nur nach der Installation der App auf dem Smartphone vollständig getestet werde, da im Entwicklungsmodus die Daten nach einem Neustart der App immer wieder neu eingelesen werden müssen.&lt;br /&gt;
&lt;br /&gt;
===Das Design===&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
====Speichern der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die eingegebenen Vokabelpaare zu speichern, nutzen wir zwei Listen. Diese beiden Listen können wir über den Index der einzelnen Items miteinander verbinden, d.h. Items mit gleichem Index bilden ein Vokabelpaar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir legen also zuerst zwei Listen an. Dazu deklarieren wir zwei Variablen &#039;&#039;Englisch&#039;&#039; und &#039;&#039;Deutsch&#039;&#039; und initialisieren sie als leere Listen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Speichern der Vokabelpaare erfolgt durch Anklicken des Buttons &#039;&#039;Speichern&#039;&#039;. Wir beginnen also wieder mit dem entsprechenden Event Handler. Nach der oben erläuterten Vorgehensweise fügen wir den Inhalt der &#039;&#039;TextBoxEnglisch&#039;&#039; der Liste &#039;&#039;Englisch&#039;&#039; hinzu und den Inhalt der &#039;&#039;TextBoxDeutsch&#039;&#039; der Liste &#039;&#039;Deutsch&#039;&#039;. Anschließend leeren wir die zwei Textboxen wieder um sie für eine neue Eingabe vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise haben wir nach wiederholtem Speichern eine Liste von Vokabelpaaren. Allerdings existiert diese Liste nur während der Laufzeit der App und wird nach Beenden der Anwendung wieder gelöscht, was dem Sinn eines Vokabeltrainers zuwiderläuft. Zudem wollen wir neue Vokabeln den bereits bestehenden Listen hinzufügen. Wir müssen also den Variablen &#039;&#039;Englisch&#039;&#039; bzw. &#039;&#039;Deutsch&#039;&#039; den Inhalt der in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; abgespeicherten Listen hinzufügen. In einem ersten Schritt setzen wir den Wert der Variablen auf den aktuellen Speicherinhalt der jeweiligen Listen. Indem wir einen &#039;&#039;tag&#039;&#039; &#039;&#039;Englischliste&#039;&#039; bzw. &#039;&#039;Deutschliste&#039;&#039; verwenden und den Inhalt einer Variable vom Datentyp &#039;&#039;Liste&#039;&#039; zuweisen, haben wir automatisch in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; zwei Listen kreiert, die wir mit dem entsprechenden Namen immer wieder ansprechen können. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genau das tun wir nun, indem wir nach dem Hinzufügen eines Items zur entsprechenden Liste diese wieder in der TinyDB abspeichern. Damit wird mit dem Klicken des Speicherbuttons die permanente Vokabelliste immer wieder aktualisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Anzeigen der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Das Lernen einer Liste von Vokabeln beginnt üblicherweise damit, dass wir uns die einzelnen Vokabelpaare einprägen, bevor wir mit dem eigentlichen Abfragen beginnen. Es sollen also die einzelnen Vokabelpaare auf dem Display aufgelistet werden, so dass sie für den ersten Schritt des Vokabellernens zur Verfügung stehen. Zu diesem Zweck deklarieren wir zwei weitere Variablen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; und initialisieren sie wiederum als leere Listen. Diese Listen werden allerdings nur während der Laufzeit der App benötigt, so dass sie nicht in der TinyDB abgespeichert werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen nun die Vokabeln beim Speichern gleichzeitig auch den nicht-permanenten Listen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kommt die auf den ersten Blick recht einfache Aufgabe, die Vokabelpaare im Label &#039;&#039;LabelVokabelpaar&#039;&#039; aufzulisten, was aber etwas aufwändiger ist als es aussieht. Wir erstellen zu diesem Zweck eine eigene Prozedur &#039;&#039;VocShow&#039;&#039;, die diese Aufgabe umsetzt. Diese Prozedur macht Folgendes: Sie leert bei jedem Aufruf zuerst das Label. Dann schreibt sie mit Hilfe einer Schleife, die vom Index 1 bis zur aktuellen Länge der Liste läuft die einzelnen Vokabelpaare in das Label. Dazu werden die zusammengehörigen Items jeweils in eine Hilfsvariable geschrieben, indem sie mittels der &#039;&#039;&#039;select list item&#039;&#039;&#039;-Methode aus den nicht-permanenten Listen abgerufen werden und anschließend verbunden werden. Im Label wird dabei der aktuelle Inhalt des Labels mit dem neuen Vokabelpaar verbunden und durch einen Zeilenwechsel (\n) gegliedert.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen also mit der Deklaration und Initialisierung der Hilfsvariablen für die zu verbindenden Items der Vokabellisten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_7.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir die oben beschriebene Vorgehensweise um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_8.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir den Aufruf der Prozedur &#039;&#039;&#039;VocShow&#039;&#039;&#039; noch an entsprechender Stelle im Block &#039;&#039;Speichern&#039;&#039; einbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_9.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Leeren der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Nachdem wir die Vokabelliste nach dem Einprägen der neuen Vokabeln nicht mehr brauchen, soll sie nach Gebrauch wieder gelöscht werden können. Dazu versehen wir den Button &#039;&#039;Liste leeren&#039;&#039; mit dem entsprechenden Event Handler. Das Leeren ist relativ einfach. Wir setzen das Label &#039;&#039;LabelVokabelpaar&#039;&#039; auf einen leeren String und belegen die beiden Variablen für die nicht-permanenten Listen mit einer leeren Liste, d.h. es werden alle Items aus den beiden Listen gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_13.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Abfragen der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir die eigentliche Funktion des Vokabeltrainers um - das Abfragen. Zu diesem Zweck durchlaufen wir die Vokabellisten, indem wir bei jedem Klicken des Buttons &#039;&#039;Abfragen&#039;&#039; den Index der Listen um eins erhöhen. Zur Anzeige der englischen Vokabel nutzen wir die bereits angelegte Hilfsvariable &#039;&#039;VocE&#039;&#039; und weisen ihr aus der permanenten &#039;&#039;Englischliste&#039;&#039; der TinyDB das dem Indexwert entsprechende Item zu, das wir dann dem Setter des Labels &#039;&#039;LabelAsk&#039;&#039; zuweisen. Gleichzeitig löschen wir die Anzeige des deutschen Wortes im Label &#039;&#039;LabelShow&#039;&#039;. Wird der Button &#039;&#039;Show&#039;&#039; geklickt, soll dort das zugehörige deutsche Wort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen mit der Deklaration der Hilfsvariable für den Listenindex. Diese wird mit dem Wert 0 initialisiert, da damit beim ersten Klick des Buttons &#039;&#039;Abfragen&#039;&#039; der Indexwert auf 1 und damit auf den Wert des ersten Items in der Liste gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir versehen nun den Button &#039;&#039;Abfragen&#039;&#039; mit dem entsprechenden Event Handler und setzen die oben beschriebene Vorgehensweise um. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10b.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt setellt eine kleine Schönheitskorrektur dar. Wir setzten den Text des Buttons &#039;&#039;Abfragen&#039;&#039; auf &#039;&#039;Next&#039;&#039;. Den Wechsel der beiden Beschriftungen müssen wir im Auge behalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10c.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen wir vor einem kleinen Problem: Ist das Ende der Liste erreicht, bekommen wir mit dem nächsten Klick eine Fehlermeldung. Wir müssen dafür sorgen, dass bei Erreichen des Listenendes der Listenindex wieder auf 0 gesetzt wird, der Text des Buttons &#039;&#039;Next&#039;&#039; wieder auf &#039;&#039;Abfragen&#039;&#039; geändert wird und die beiden Labels &#039;&#039;LabelAsk&#039;&#039; und &#039;&#039;LabelShow&#039;&#039; einen leeren String erhalten. Damit kann das Abfragen wieder von vorne beginnen. Programmiertechnisch setzen wir das mit einer zweiseitigen bedingten Anweisung (&#039;&#039;if ... else&#039;&#039;) um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10d.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Anzeige des zugehörigen deutschen Wortes erfolgt analog zur Anzeige des englischen Wortes. Abhängig vom aktuellen Listenindex wird das entsprechende Item aus der &#039;&#039;Deutschliste&#039;&#039; in der TinyDB im Label &#039;&#039;LabelShow&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_12.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann man auch eine schriftliche Abfrage einbauen, indem man eine Textbox hinzufügt und der Inhalt der Textbox mit dem Text von &amp;quot;LabelShow&amp;quot; vergleichen lässt.Bei gleichem Text färbt sich der Hintergrund der Textbox grün bei unterschiedlichem Inhalt rot.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 2.PNG|Beschreibung]]&lt;br /&gt;
&lt;br /&gt;
====Löschen des Datenspeichers====&lt;br /&gt;
&lt;br /&gt;
Insbesondere zu Testzwecken ist es günstig, wenn man die benutzte Datenbank löschen kann. Dazu wird mit der Methode &#039;&#039;&#039;ClearAll&#039;&#039;&#039; der Inhalt der TinyDB gelöscht, die Labels werden auf einen leeren String gesetzt und die Hilfsvariablen werden auf den Anfangswert zurückgesetzt. Für die endgültige App sollte vor dem endgültigen Löschen noch eine Sicherheitsabfrage an den User erfolgen, da das versehentliche Löschen einer Datenbank ärgerlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_14.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Initialisierung der Screen====&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir uns noch Gedanken über die Initialisierung der Screen machen. Auf jeden Fall sollten wir den Text des Buttons &#039;&#039;ButtonAbfragen&#039;&#039; auf den Text &#039;&#039;Abfragen&#039;&#039; setzen. Zudem ist es günstiger das Laden der Daten gleich bei der Initialisierung der Screen vorzunehmen. Wir verlagern die entsprechenden Blöcke aus dem Block für das Speichern in die Initialisierung der Screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_16.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Beenden der Anwendung====&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir nur noch, wie gewohnt,  das Beenden der Applikation umsetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_15.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Erweiterungsaufgaben===&lt;br /&gt;
&lt;br /&gt;
* Die App funktioniert nun bei der vorgesehenen Verwendung ohne Probleme. Allerdings wird ein Beta-Test einige Probleme aufwerfen, die noch zu lösen sind. Beispiele:&lt;br /&gt;
** Was tun bei einer fehlerhaften Eingabe?&lt;br /&gt;
** Was passiert beim Speichern ohne vorherige Eingabe?&lt;br /&gt;
&lt;br /&gt;
::&#039;&#039;&#039;Lösungsvorschlag:&#039;&#039;&#039;&lt;br /&gt;
::Um das Problem zu lösen bauen wir eine Gleichstellung der TextBoxEnglish mit einem leeren Textfeld in den Block &amp;quot;Speicher&amp;quot; ein und leiten dann den Benutzer, wenn das Textfeld leer ist, noch bevor die Vokabel gespeichert wird zu einer anderen Screen. Dort erhält er die Nachricht, erst etwas einzugeben bevor er abspeichert. Mit Hilfe eines Buttons kann der Benutzer wieder zur ursprünglichen Screen zurückkehren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Bild 1.PNG||Speichern]]&lt;br /&gt;
&lt;br /&gt;
* Was passiert bei einer Abfrage bei leerer Liste?&lt;br /&gt;
&lt;br /&gt;
* Die Abfrage durchläuft immer die ganze gespeicherte Liste und das in derselben Reihenfolge der Vokabeln. Die Vokabeln sollen nun in zufälliger Reihenfolge abgefragt werden. Zusätzlich sollen dabei alle Vokabeln  abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
* In der Praxis sollten nicht immer alle Vokabeln abgefragt werden, sondern zuerst die aktuellen Vokabeln. Dazu sollten die Vokabeln der letzten beiden Einheiten wiederholt werden und eventuell eine bestimmte Anzahl von Vokabeln aus früheren Einheiten. Dazu müssen wir in einer Liste der TinyDB auch die Anzahl der Vokabeln pro Einheit abfragen können und die gewünschten Vokabeln über eine Manipulation der Listenlänge erhalten können.&lt;br /&gt;
&lt;br /&gt;
* Es sollte auch möglich sein, die Abfragerichtung E-D/D-E festzulegen.&lt;br /&gt;
&lt;br /&gt;
* Der User sollte richtige und falsche Antworten kennzeichnen und seine Ergebnisse speichern können. Eine direkte Bewertung mit Eingabe der Lösung dürfte höchstens bei sehr einfachen Vokabeln Sinn machen. Vielleicht gibt es auch einen Weg, Vokabeln die nicht gewusst wurden, häufiger abzufragen.&lt;br /&gt;
&lt;br /&gt;
* Aus Designsicht wäre es wünschenswert, wenn nur jeweils die Bestandteile des Moduls zu sehen wären, das gerade verwendet wird (Eingabe, Abfrage und eventuell Einstellungen).&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:Bild_1.PNG&amp;diff=3842</id>
		<title>Datei:Bild 1.PNG</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:Bild_1.PNG&amp;diff=3842"/>
		<updated>2015-04-29T13:16:56Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{de|1=Speichern}}&lt;br /&gt;
|date=2015-04-29 15:16:20&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Hoeherl011|Hoeherl011]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Uploaded with UploadWizard]]&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3796</id>
		<title>Listen und Datenbank - der Vokabeltrainer</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3796"/>
		<updated>2015-04-09T16:07:54Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Abfragen der Vokabeln */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Die Idee===&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Vokabeltrainer programmieren, bei dem Vokabelpaare (Englisch - Deutsch) in Textboxes eingegeben werden können. Die aktuell eingegebenen Vokabeln werden als Liste angezeigt, die nach dem ersten Einprägen gelöscht werden kann. Die Vokabeln werden in eine Datenbank geschrieben, die beim Start der App zur Verfügung steht. Die englischen Vokabeln werden auf Buttonklick angezeigt und nach einem weiteren Klick das zugehörige deutsche Wort. Insbesondere zu Testzwecken besteht auch die Möglichkeit die gesamte Datenbank zu löschen.&lt;br /&gt;
&lt;br /&gt;
===Listen===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;Array&#039;&#039; und &#039;&#039;Arraylist&#039;&#039; kennen wir aus Java bereits zwei Datentypen, mit denen größere Datenmengen abgespeichert werden können. Der App Inventor bietet zu diesem Zweck Listen. Die Vorgehensweise ist dabei dem Umgang mit Arraylists sehr ähnlich. Wesentliche Unterschiede sind, dass die Items nicht vom selben Datentyp sein müssen und dass die Indizierung der Items nicht mit dem Wert 0 beginnt, sondern mit dem Wert 1 und damit auch der Index des letzten Items in der Liste der Länge der Liste entspricht. Die zur Verfügung stehenden Methoden finden sich im Built-In Block &#039;&#039;Lists&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie bei Arraylists erhält die Liste einen Namen und wird als leere Liste initialisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Liste kann nun mit beliebig vielen Items gefüllt werden, die anschließend in dieser Reihenfolge über den Index angesprochen werden können. Um einen zusätzlichen Slot für die Items zu erzeugen genügt ein Klick auf das blaue Icon oben links. In dem erscheinenden Kontextmenü wird nun ein Item-Block in den Listenblock gezogen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man anschließend zusätzliche Items in die Liste aufnehmen, kann man dies mit dem Block &#039;&#039;&#039;add items to list&#039;&#039;&#039; bewerkstelligt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun eines der Listenitems anzusprechen, verwendet man die Methode &#039;&#039;&#039;select list item&#039;&#039;&#039;, bei der der Indexwert als Parameterwert angegeben wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Methode &#039;&#039;&#039;length of list&#039;&#039;&#039; lässt sich die Länge und damit die Anzahl der Items in einer Liste bestimmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie vom Umgang mit Arrays und Arraylists bekannt, können auch Listen mittels Schleifen manipuliert werden. In folgendem Beispiel werden die Inhalte aller Items der Liste gelöscht (nicht die Items selbst!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der große Nachteil der Listen ist, dass sie nur während der Laufzeit der App genutzt werden können. Nach Beenden der App werden alle Daten der Liste gelöscht. Um mit den eingegebenen Daten auch zu einem späteren Zeitpunkt arbeiten zu können, müssen diese permanent gespeichert werden. Der App Inventor bietet hierzu die Möglichkeit mittels &#039;&#039;&#039;TinyDB&#039;&#039;&#039; den internen Speicher des Smartphones zu nutzen.&lt;br /&gt;
&lt;br /&gt;
===TinyDB===&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;TinyDB&#039;&#039;&#039; handelt es sich um einen Speicherbereich, den das Betriebssystem Android jeder mit dem App Inventor erstellten App dauerhaft zur Verfügung stellt. Darin können beliebig viele Daten abgelegt und abgerufen werden. Identifiziert werden sie dabei über einen eindeutigen Bezeichner (&#039;&#039;&#039;tag&#039;&#039;&#039;). Die zu speichernden Daten entsprechen den Werten, die während der Programmlaufzeit in den entsprechenden Variablen vorliegen. Dieses bedeutet auch, dass zu speichernde Daten als Werte in einer Variable vorliegen müssen und an die Methode &#039;&#039;&#039;StoreValue&#039;&#039;&#039; übergeben werden. Auch beim Laden wird eine Variable gleichen oder kompatiblen Datentyps benötigt, in die der Wert aus dem Speicher über die Methode &#039;&#039;&#039;GetValue&#039;&#039;&#039; geschrieben werden kann. Mit &#039;&#039;&#039;clear all&#039;&#039;&#039; bzw. &#039;&#039;&#039;clear tag&#039;&#039;&#039; können alle Daten der TinyDB bzw. die mit einem einzelnen &#039;&#039;tag&#039;&#039; verbundenen Daten gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine TinyDB ist eine nicht-sichtbare Komponente und wird dem Projekt im Designermodus hinzugefügt. Die Funktionalität kann nur nach der Installation der App auf dem Smartphone vollständig getestet werde, da im Entwicklungsmodus die Daten nach einem Neustart der App immer wieder neu eingelesen werden müssen.&lt;br /&gt;
&lt;br /&gt;
===Das Design===&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
====Speichern der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die eingegebenen Vokabelpaare zu speichern, nutzen wir zwei Listen. Diese beiden Listen können wir über den Index der einzelnen Items miteinander verbinden, d.h. Items mit gleichem Index bilden ein Vokabelpaar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir legen also zuerst zwei Listen an. Dazu deklarieren wir zwei Variablen &#039;&#039;Englisch&#039;&#039; und &#039;&#039;Deutsch&#039;&#039; und initialisieren sie als leere Listen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Speichern der Vokabelpaare erfolgt durch Anklicken des Buttons &#039;&#039;Speichern&#039;&#039;. Wir beginnen also wieder mit dem entsprechenden Event Handler. Nach der oben erläuterten Vorgehensweise fügen wir den Inhalt der &#039;&#039;TextBoxEnglisch&#039;&#039; der Liste &#039;&#039;Englisch&#039;&#039; hinzu und den Inhalt der &#039;&#039;TextBoxDeutsch&#039;&#039; der Liste &#039;&#039;Deutsch&#039;&#039;. Anschließend leeren wir die zwei Textboxen wieder um sie für eine neue Eingabe vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise haben wir nach wiederholtem Speichern eine Liste von Vokabelpaaren. Allerdings existiert diese Liste nur während der Laufzeit der App und wird nach Beenden der Anwendung wieder gelöscht, was dem Sinn eines Vokabeltrainers zuwiderläuft. Zudem wollen wir neue Vokabeln den bereits bestehenden Listen hinzufügen. Wir müssen also den Variablen &#039;&#039;Englisch&#039;&#039; bzw. &#039;&#039;Deutsch&#039;&#039; den Inhalt der in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; abgespeicherten Listen hinzufügen. In einem ersten Schritt setzen wir den Wert der Variablen auf den aktuellen Speicherinhalt der jeweiligen Listen. Indem wir einen &#039;&#039;tag&#039;&#039; &#039;&#039;Englischliste&#039;&#039; bzw. &#039;&#039;Deutschliste&#039;&#039; verwenden und den Inhalt einer Variable vom Datentyp &#039;&#039;Liste&#039;&#039; zuweisen, haben wir automatisch in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; zwei Listen kreiert, die wir mit dem entsprechenden Namen immer wieder ansprechen können. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genau das tun wir nun, indem wir nach dem Hinzufügen eines Items zur entsprechenden Liste diese wieder in der TinyDB abspeichern. Damit wird mit dem Klicken des Speicherbuttons die permanente Vokabelliste immer wieder aktualisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Anzeigen der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Das Lernen einer Liste von Vokabeln beginnt üblicherweise damit, dass wir uns die einzelnen Vokabelpaare einprägen, bevor wir mit dem eigentlichen Abfragen beginnen. Es sollen also die einzelnen Vokabelpaare auf dem Display aufgelistet werden, so dass sie für den ersten Schritt des Vokabellernens zur Verfügung stehen. Zu diesem Zweck deklarieren wir zwei weitere Variablen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; und initialisieren sie wiederum als leere Listen. Diese Listen werden allerdings nur während der Laufzeit der App benötigt, so dass sie nicht in der TinyDB abgespeichert werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen nun die Vokabeln beim Speichern gleichzeitig auch den nicht-permanenten Listen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kommt die auf den ersten Blick recht einfache Aufgabe, die Vokabelpaare im Label &#039;&#039;LabelVokabelpaar&#039;&#039; aufzulisten, was aber etwas aufwändiger ist als es aussieht. Wir erstellen zu diesem Zweck eine eigene Prozedur &#039;&#039;VocShow&#039;&#039;, die diese Aufgabe umsetzt. Diese Prozedur macht Folgendes: Sie leert bei jedem Aufruf zuerst das Label. Dann schreibt sie mit Hilfe einer Schleife, die vom Index 1 bis zur aktuellen Länge der Liste läuft die einzelnen Vokabelpaare in das Label. Dazu werden die zusammengehörigen Items jeweils in eine Hilfsvariable geschrieben, indem sie mittels der &#039;&#039;&#039;select list item&#039;&#039;&#039;-Methode aus den nicht-permanenten Listen abgerufen werden und anschließend verbunden werden. Im Label wird dabei der aktuelle Inhalt des Labels mit dem neuen Vokabelpaar verbunden und durch einen Zeilenwechsel (\n) gegliedert.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen also mit der Deklaration und Initialisierung der Hilfsvariablen für die zu verbindenden Items der Vokabellisten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_7.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir die oben beschriebene Vorgehensweise um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_8.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir den Aufruf der Prozedur &#039;&#039;&#039;VocShow&#039;&#039;&#039; noch an entsprechender Stelle im Block &#039;&#039;Speichern&#039;&#039; einbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_9.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Leeren der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Nachdem wir die Vokabelliste nach dem Einprägen der neuen Vokabeln nicht mehr brauchen, soll sie nach Gebrauch wieder gelöscht werden können. Dazu versehen wir den Button &#039;&#039;Liste leeren&#039;&#039; mit dem entsprechenden Event Handler. Das Leeren ist relativ einfach. Wir setzen das Label &#039;&#039;LabelVokabelpaar&#039;&#039; auf einen leeren String und belegen die beiden Variablen für die nicht-permanenten Listen mit einer leeren Liste, d.h. es werden alle Items aus den beiden Listen gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_13.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Abfragen der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir die eigentliche Funktion des Vokabeltrainers um - das Abfragen. Zu diesem Zweck durchlaufen wir die Vokabellisten, indem wir bei jedem Klicken des Buttons &#039;&#039;Abfragen&#039;&#039; den Index der Listen um eins erhöhen. Zur Anzeige der englischen Vokabel nutzen wir die bereits angelegte Hilfsvariable &#039;&#039;VocE&#039;&#039; und weisen ihr aus der permanenten &#039;&#039;Englischliste&#039;&#039; der TinyDB das dem Indexwert entsprechende Item zu, das wir dann dem Setter des Labels &#039;&#039;LabelAsk&#039;&#039; zuweisen. Gleichzeitig löschen wir die Anzeige des deutschen Wortes im Label &#039;&#039;LabelShow&#039;&#039;. Wird der Button &#039;&#039;Show&#039;&#039; geklickt, soll dort das zugehörige deutsche Wort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen mit der Deklaration der Hilfsvariable für den Listenindex. Diese wird mit dem Wert 0 initialisiert, da damit beim ersten Klick des Buttons &#039;&#039;Abfragen&#039;&#039; der Indexwert auf 1 und damit auf den Wert des ersten Items in der Liste gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir versehen nun den Button &#039;&#039;Abfragen&#039;&#039; mit dem entsprechenden Event Handler und setzen die oben beschriebene Vorgehensweise um. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10b.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt setellt eine kleine Schönheitskorrektur dar. Wir setzten den Text des Buttons &#039;&#039;Abfragen&#039;&#039; auf &#039;&#039;Next&#039;&#039;. Den Wechsel der beiden Beschriftungen müssen wir im Auge behalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10c.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen wir vor einem kleinen Problem: Ist das Ende der Liste erreicht, bekommen wir mit dem nächsten Klick eine Fehlermeldung. Wir müssen dafür sorgen, dass bei Erreichen des Listenendes der Listenindex wieder auf 0 gesetzt wird, der Text des Buttons &#039;&#039;Next&#039;&#039; wieder auf &#039;&#039;Abfragen&#039;&#039; geändert wird und die beiden Labels &#039;&#039;LabelAsk&#039;&#039; und &#039;&#039;LabelShow&#039;&#039; einen leeren String erhalten. Damit kann das Abfragen wieder von vorne beginnen. Programmiertechnisch setzen wir das mit einer zweiseitigen bedingten Anweisung (&#039;&#039;if ... else&#039;&#039;) um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10d.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Anzeige des zugehörigen deutschen Wortes erfolgt analog zur Anzeige des englischen Wortes. Abhängig vom aktuellen Listenindex wird das entsprechende Item aus der &#039;&#039;Deutschliste&#039;&#039; in der TinyDB im Label &#039;&#039;LabelShow&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_12.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann man auch eine schriftliche Abfrage einbauen, indem man eine Textbox hinzufügt und der Inhalt der Textbox mit dem Text von &amp;quot;LabelShow&amp;quot; vergleichen lässt.Bei gleichem Text färbt sich der Hintergrund der Textbox grün bei unterschiedlichem Inhalt rot.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Projekt bild 2.PNG|Beschreibung]]&lt;br /&gt;
&lt;br /&gt;
====Löschen des Datenspeichers====&lt;br /&gt;
&lt;br /&gt;
Insbesondere zu Testzwecken ist es günstig, wenn man die benutzte Datenbank löschen kann. Dazu wird mit der Methode &#039;&#039;&#039;ClearAll&#039;&#039;&#039; der Inhalt der TinyDB gelöscht, die Labels werden auf einen leeren String gesetzt und die Hilfsvariablen werden auf den Anfangswert zurückgesetzt. Für die endgültige App sollte vor dem endgültigen Löschen noch eine Sicherheitsabfrage an den User erfolgen, da das versehentliche Löschen einer Datenbank ärgerlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_14.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Initialisierung der Screen====&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir uns noch Gedanken über die Initialisierung der Screen machen. Auf jeden Fall sollten wir den Text des Buttons &#039;&#039;ButtonAbfragen&#039;&#039; auf den Text &#039;&#039;Abfragen&#039;&#039; setzen. Zudem ist es günstiger das Laden der Daten gleich bei der Initialisierung der Screen vorzunehmen. Wir verlagern die entsprechenden Blöcke aus dem Block für das Speichern in die Initialisierung der Screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_16.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Beenden der Anwendung====&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir nur noch, wie gewohnt,  das Beenden der Applikation umsetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_15.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Erweiterungsaufgaben===&lt;br /&gt;
&lt;br /&gt;
* Die App funktioniert nun bei der vorgesehenen Verwendung ohne Probleme. Allerdings wird ein Beta-Test einige Probleme aufwerfen, die noch zu lösen sind. Beispiele:&lt;br /&gt;
** Was tun bei einer fehlerhaften Eingabe?&lt;br /&gt;
** Was passiert beim Speichern ohne vorherige Eingabe?&lt;br /&gt;
====Lösung:====&lt;br /&gt;
Um das Problem zu lösen bauen wir eine Gleichstellung der TextBoxEnglish mit einem leeren Textfeld in den Block &amp;quot;Speicher&amp;quot; ein und leiten dann den Benutzer, wenn das Textfeld leer ist, noch bevor die Vokabel gespeichert wird zu einen anderen Screen. Dort erhält er die Nachricht erst etwas einzugeben bevor er abspeichert.Mit Hilfe eines Buttons kann der Benutzer wieder zum ursprünglichem Screen zurück.&lt;br /&gt;
[[Datei:Projekt bild 1.PNG||Beschreibung]]&lt;br /&gt;
** Was passiert bei einer Abfrage bei leerer Liste?&lt;br /&gt;
&lt;br /&gt;
* Die Abfrage durchläuft immer die ganze gespeicherte Liste und das in derselben Reihenfolge der Vokabeln. Die Vokabeln sollen nun in zufälliger Reihenfolge abgefragt werden. Zusätzlich sollen dabei alle Vokabeln  abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
* In der Praxis sollten nicht immer alle Vokabeln abgefragt werden, sondern zuerst die aktuellen Vokabeln. Dazu sollten die Vokabeln der letzten beiden Einheiten wiederholt werden und eventuell eine bestimmte Anzahl von Vokabeln aus früheren Einheiten. Dazu müssen wir in einer Liste der TinyDB auch die Anzahl der Vokabeln pro Einheit abfragen können und die gewünschten Vokabeln über eine Manipulation der Listenlänge erhalten können.&lt;br /&gt;
&lt;br /&gt;
* Es sollte auch möglich sein, die Abfragerichtung E-D/D-E festzulegen.&lt;br /&gt;
&lt;br /&gt;
* Der User sollte richtige und falsche Antworten kennzeichnen und seine Ergebnisse speichern können. Eine direkte Bewertung mit Eingabe der Lösung dürfte höchstens bei sehr einfachen Vokabeln Sinn machen. Vielleicht gibt es auch einen Weg, Vokabeln die nicht gewusst wurden, häufiger abzufragen.&lt;br /&gt;
&lt;br /&gt;
* Aus Designsicht wäre es wünschenswert, wenn nur jeweils die Bestandteile des Moduls zu sehen wären, das gerade verwendet wird (Eingabe, Abfrage und eventuell Einstellungen).&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:Projekt_bild_2.PNG&amp;diff=3795</id>
		<title>Datei:Projekt bild 2.PNG</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:Projekt_bild_2.PNG&amp;diff=3795"/>
		<updated>2015-04-09T16:06:51Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{de|1=Beschreibung}}&lt;br /&gt;
|date=2015-04-09 18:06:24&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Hoeherl011|Hoeherl011]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Uploaded with UploadWizard]]&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3794</id>
		<title>Listen und Datenbank - der Vokabeltrainer</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3794"/>
		<updated>2015-04-09T15:57:57Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Lösung: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Die Idee===&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Vokabeltrainer programmieren, bei dem Vokabelpaare (Englisch - Deutsch) in Textboxes eingegeben werden können. Die aktuell eingegebenen Vokabeln werden als Liste angezeigt, die nach dem ersten Einprägen gelöscht werden kann. Die Vokabeln werden in eine Datenbank geschrieben, die beim Start der App zur Verfügung steht. Die englischen Vokabeln werden auf Buttonklick angezeigt und nach einem weiteren Klick das zugehörige deutsche Wort. Insbesondere zu Testzwecken besteht auch die Möglichkeit die gesamte Datenbank zu löschen.&lt;br /&gt;
&lt;br /&gt;
===Listen===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;Array&#039;&#039; und &#039;&#039;Arraylist&#039;&#039; kennen wir aus Java bereits zwei Datentypen, mit denen größere Datenmengen abgespeichert werden können. Der App Inventor bietet zu diesem Zweck Listen. Die Vorgehensweise ist dabei dem Umgang mit Arraylists sehr ähnlich. Wesentliche Unterschiede sind, dass die Items nicht vom selben Datentyp sein müssen und dass die Indizierung der Items nicht mit dem Wert 0 beginnt, sondern mit dem Wert 1 und damit auch der Index des letzten Items in der Liste der Länge der Liste entspricht. Die zur Verfügung stehenden Methoden finden sich im Built-In Block &#039;&#039;Lists&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie bei Arraylists erhält die Liste einen Namen und wird als leere Liste initialisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Liste kann nun mit beliebig vielen Items gefüllt werden, die anschließend in dieser Reihenfolge über den Index angesprochen werden können. Um einen zusätzlichen Slot für die Items zu erzeugen genügt ein Klick auf das blaue Icon oben links. In dem erscheinenden Kontextmenü wird nun ein Item-Block in den Listenblock gezogen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man anschließend zusätzliche Items in die Liste aufnehmen, kann man dies mit dem Block &#039;&#039;&#039;add items to list&#039;&#039;&#039; bewerkstelligt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun eines der Listenitems anzusprechen, verwendet man die Methode &#039;&#039;&#039;select list item&#039;&#039;&#039;, bei der der Indexwert als Parameterwert angegeben wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Methode &#039;&#039;&#039;length of list&#039;&#039;&#039; lässt sich die Länge und damit die Anzahl der Items in einer Liste bestimmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie vom Umgang mit Arrays und Arraylists bekannt, können auch Listen mittels Schleifen manipuliert werden. In folgendem Beispiel werden die Inhalte aller Items der Liste gelöscht (nicht die Items selbst!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der große Nachteil der Listen ist, dass sie nur während der Laufzeit der App genutzt werden können. Nach Beenden der App werden alle Daten der Liste gelöscht. Um mit den eingegebenen Daten auch zu einem späteren Zeitpunkt arbeiten zu können, müssen diese permanent gespeichert werden. Der App Inventor bietet hierzu die Möglichkeit mittels &#039;&#039;&#039;TinyDB&#039;&#039;&#039; den internen Speicher des Smartphones zu nutzen.&lt;br /&gt;
&lt;br /&gt;
===TinyDB===&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;TinyDB&#039;&#039;&#039; handelt es sich um einen Speicherbereich, den das Betriebssystem Android jeder mit dem App Inventor erstellten App dauerhaft zur Verfügung stellt. Darin können beliebig viele Daten abgelegt und abgerufen werden. Identifiziert werden sie dabei über einen eindeutigen Bezeichner (&#039;&#039;&#039;tag&#039;&#039;&#039;). Die zu speichernden Daten entsprechen den Werten, die während der Programmlaufzeit in den entsprechenden Variablen vorliegen. Dieses bedeutet auch, dass zu speichernde Daten als Werte in einer Variable vorliegen müssen und an die Methode &#039;&#039;&#039;StoreValue&#039;&#039;&#039; übergeben werden. Auch beim Laden wird eine Variable gleichen oder kompatiblen Datentyps benötigt, in die der Wert aus dem Speicher über die Methode &#039;&#039;&#039;GetValue&#039;&#039;&#039; geschrieben werden kann. Mit &#039;&#039;&#039;clear all&#039;&#039;&#039; bzw. &#039;&#039;&#039;clear tag&#039;&#039;&#039; können alle Daten der TinyDB bzw. die mit einem einzelnen &#039;&#039;tag&#039;&#039; verbundenen Daten gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine TinyDB ist eine nicht-sichtbare Komponente und wird dem Projekt im Designermodus hinzugefügt. Die Funktionalität kann nur nach der Installation der App auf dem Smartphone vollständig getestet werde, da im Entwicklungsmodus die Daten nach einem Neustart der App immer wieder neu eingelesen werden müssen.&lt;br /&gt;
&lt;br /&gt;
===Das Design===&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
====Speichern der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die eingegebenen Vokabelpaare zu speichern, nutzen wir zwei Listen. Diese beiden Listen können wir über den Index der einzelnen Items miteinander verbinden, d.h. Items mit gleichem Index bilden ein Vokabelpaar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir legen also zuerst zwei Listen an. Dazu deklarieren wir zwei Variablen &#039;&#039;Englisch&#039;&#039; und &#039;&#039;Deutsch&#039;&#039; und initialisieren sie als leere Listen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Speichern der Vokabelpaare erfolgt durch Anklicken des Buttons &#039;&#039;Speichern&#039;&#039;. Wir beginnen also wieder mit dem entsprechenden Event Handler. Nach der oben erläuterten Vorgehensweise fügen wir den Inhalt der &#039;&#039;TextBoxEnglisch&#039;&#039; der Liste &#039;&#039;Englisch&#039;&#039; hinzu und den Inhalt der &#039;&#039;TextBoxDeutsch&#039;&#039; der Liste &#039;&#039;Deutsch&#039;&#039;. Anschließend leeren wir die zwei Textboxen wieder um sie für eine neue Eingabe vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise haben wir nach wiederholtem Speichern eine Liste von Vokabelpaaren. Allerdings existiert diese Liste nur während der Laufzeit der App und wird nach Beenden der Anwendung wieder gelöscht, was dem Sinn eines Vokabeltrainers zuwiderläuft. Zudem wollen wir neue Vokabeln den bereits bestehenden Listen hinzufügen. Wir müssen also den Variablen &#039;&#039;Englisch&#039;&#039; bzw. &#039;&#039;Deutsch&#039;&#039; den Inhalt der in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; abgespeicherten Listen hinzufügen. In einem ersten Schritt setzen wir den Wert der Variablen auf den aktuellen Speicherinhalt der jeweiligen Listen. Indem wir einen &#039;&#039;tag&#039;&#039; &#039;&#039;Englischliste&#039;&#039; bzw. &#039;&#039;Deutschliste&#039;&#039; verwenden und den Inhalt einer Variable vom Datentyp &#039;&#039;Liste&#039;&#039; zuweisen, haben wir automatisch in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; zwei Listen kreiert, die wir mit dem entsprechenden Namen immer wieder ansprechen können. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genau das tun wir nun, indem wir nach dem Hinzufügen eines Items zur entsprechenden Liste diese wieder in der TinyDB abspeichern. Damit wird mit dem Klicken des Speicherbuttons die permanente Vokabelliste immer wieder aktualisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Anzeigen der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Das Lernen einer Liste von Vokabeln beginnt üblicherweise damit, dass wir uns die einzelnen Vokabelpaare einprägen, bevor wir mit dem eigentlichen Abfragen beginnen. Es sollen also die einzelnen Vokabelpaare auf dem Display aufgelistet werden, so dass sie für den ersten Schritt des Vokabellernens zur Verfügung stehen. Zu diesem Zweck deklarieren wir zwei weitere Variablen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; und initialisieren sie wiederum als leere Listen. Diese Listen werden allerdings nur während der Laufzeit der App benötigt, so dass sie nicht in der TinyDB abgespeichert werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen nun die Vokabeln beim Speichern gleichzeitig auch den nicht-permanenten Listen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kommt die auf den ersten Blick recht einfache Aufgabe, die Vokabelpaare im Label &#039;&#039;LabelVokabelpaar&#039;&#039; aufzulisten, was aber etwas aufwändiger ist als es aussieht. Wir erstellen zu diesem Zweck eine eigene Prozedur &#039;&#039;VocShow&#039;&#039;, die diese Aufgabe umsetzt. Diese Prozedur macht Folgendes: Sie leert bei jedem Aufruf zuerst das Label. Dann schreibt sie mit Hilfe einer Schleife, die vom Index 1 bis zur aktuellen Länge der Liste läuft die einzelnen Vokabelpaare in das Label. Dazu werden die zusammengehörigen Items jeweils in eine Hilfsvariable geschrieben, indem sie mittels der &#039;&#039;&#039;select list item&#039;&#039;&#039;-Methode aus den nicht-permanenten Listen abgerufen werden und anschließend verbunden werden. Im Label wird dabei der aktuelle Inhalt des Labels mit dem neuen Vokabelpaar verbunden und durch einen Zeilenwechsel (\n) gegliedert.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen also mit der Deklaration und Initialisierung der Hilfsvariablen für die zu verbindenden Items der Vokabellisten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_7.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir die oben beschriebene Vorgehensweise um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_8.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir den Aufruf der Prozedur &#039;&#039;&#039;VocShow&#039;&#039;&#039; noch an entsprechender Stelle im Block &#039;&#039;Speichern&#039;&#039; einbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_9.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Leeren der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Nachdem wir die Vokabelliste nach dem Einprägen der neuen Vokabeln nicht mehr brauchen, soll sie nach Gebrauch wieder gelöscht werden können. Dazu versehen wir den Button &#039;&#039;Liste leeren&#039;&#039; mit dem entsprechenden Event Handler. Das Leeren ist relativ einfach. Wir setzen das Label &#039;&#039;LabelVokabelpaar&#039;&#039; auf einen leeren String und belegen die beiden Variablen für die nicht-permanenten Listen mit einer leeren Liste, d.h. es werden alle Items aus den beiden Listen gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_13.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Abfragen der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir die eigentliche Funktion des Vokabeltrainers um - das Abfragen. Zu diesem Zweck durchlaufen wir die Vokabellisten, indem wir bei jedem Klicken des Buttons &#039;&#039;Abfragen&#039;&#039; den Index der Listen um eins erhöhen. Zur Anzeige der englischen Vokabel nutzen wir die bereits angelegte Hilfsvariable &#039;&#039;VocE&#039;&#039; und weisen ihr aus der permanenten &#039;&#039;Englischliste&#039;&#039; der TinyDB das dem Indexwert entsprechende Item zu, das wir dann dem Setter des Labels &#039;&#039;LabelAsk&#039;&#039; zuweisen. Gleichzeitig löschen wir die Anzeige des deutschen Wortes im Label &#039;&#039;LabelShow&#039;&#039;. Wird der Button &#039;&#039;Show&#039;&#039; geklickt, soll dort das zugehörige deutsche Wort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen mit der Deklaration der Hilfsvariable für den Listenindex. Diese wird mit dem Wert 0 initialisiert, da damit beim ersten Klick des Buttons &#039;&#039;Abfragen&#039;&#039; der Indexwert auf 1 und damit auf den Wert des ersten Items in der Liste gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir versehen nun den Button &#039;&#039;Abfragen&#039;&#039; mit dem entsprechenden Event Handler und setzen die oben beschriebene Vorgehensweise um. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10b.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt setellt eine kleine Schönheitskorrektur dar. Wir setzten den Text des Buttons &#039;&#039;Abfragen&#039;&#039; auf &#039;&#039;Next&#039;&#039;. Den Wechsel der beiden Beschriftungen müssen wir im Auge behalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10c.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen wir vor einem kleinen Problem: Ist das Ende der Liste erreicht, bekommen wir mit dem nächsten Klick eine Fehlermeldung. Wir müssen dafür sorgen, dass bei Erreichen des Listenendes der Listenindex wieder auf 0 gesetzt wird, der Text des Buttons &#039;&#039;Next&#039;&#039; wieder auf &#039;&#039;Abfragen&#039;&#039; geändert wird und die beiden Labels &#039;&#039;LabelAsk&#039;&#039; und &#039;&#039;LabelShow&#039;&#039; einen leeren String erhalten. Damit kann das Abfragen wieder von vorne beginnen. Programmiertechnisch setzen wir das mit einer zweiseitigen bedingten Anweisung (&#039;&#039;if ... else&#039;&#039;) um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10d.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Anzeige des zugehörigen deutschen Wortes erfolgt analog zur Anzeige des englischen Wortes. Abhängig vom aktuellen Listenindex wird das entsprechende Item aus der &#039;&#039;Deutschliste&#039;&#039; in der TinyDB im Label &#039;&#039;LabelShow&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_12.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Löschen des Datenspeichers====&lt;br /&gt;
&lt;br /&gt;
Insbesondere zu Testzwecken ist es günstig, wenn man die benutzte Datenbank löschen kann. Dazu wird mit der Methode &#039;&#039;&#039;ClearAll&#039;&#039;&#039; der Inhalt der TinyDB gelöscht, die Labels werden auf einen leeren String gesetzt und die Hilfsvariablen werden auf den Anfangswert zurückgesetzt. Für die endgültige App sollte vor dem endgültigen Löschen noch eine Sicherheitsabfrage an den User erfolgen, da das versehentliche Löschen einer Datenbank ärgerlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_14.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Initialisierung der Screen====&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir uns noch Gedanken über die Initialisierung der Screen machen. Auf jeden Fall sollten wir den Text des Buttons &#039;&#039;ButtonAbfragen&#039;&#039; auf den Text &#039;&#039;Abfragen&#039;&#039; setzen. Zudem ist es günstiger das Laden der Daten gleich bei der Initialisierung der Screen vorzunehmen. Wir verlagern die entsprechenden Blöcke aus dem Block für das Speichern in die Initialisierung der Screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_16.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Beenden der Anwendung====&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir nur noch, wie gewohnt,  das Beenden der Applikation umsetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_15.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Erweiterungsaufgaben===&lt;br /&gt;
&lt;br /&gt;
* Die App funktioniert nun bei der vorgesehenen Verwendung ohne Probleme. Allerdings wird ein Beta-Test einige Probleme aufwerfen, die noch zu lösen sind. Beispiele:&lt;br /&gt;
** Was tun bei einer fehlerhaften Eingabe?&lt;br /&gt;
** Was passiert beim Speichern ohne vorherige Eingabe?&lt;br /&gt;
====Lösung:====&lt;br /&gt;
Um das Problem zu lösen bauen wir eine Gleichstellung der TextBoxEnglish mit einem leeren Textfeld in den Block &amp;quot;Speicher&amp;quot; ein und leiten dann den Benutzer, wenn das Textfeld leer ist, noch bevor die Vokabel gespeichert wird zu einen anderen Screen. Dort erhält er die Nachricht erst etwas einzugeben bevor er abspeichert.Mit Hilfe eines Buttons kann der Benutzer wieder zum ursprünglichem Screen zurück.&lt;br /&gt;
[[Datei:Projekt bild 1.PNG||Beschreibung]]&lt;br /&gt;
** Was passiert bei einer Abfrage bei leerer Liste?&lt;br /&gt;
&lt;br /&gt;
* Die Abfrage durchläuft immer die ganze gespeicherte Liste und das in derselben Reihenfolge der Vokabeln. Die Vokabeln sollen nun in zufälliger Reihenfolge abgefragt werden. Zusätzlich sollen dabei alle Vokabeln  abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
* In der Praxis sollten nicht immer alle Vokabeln abgefragt werden, sondern zuerst die aktuellen Vokabeln. Dazu sollten die Vokabeln der letzten beiden Einheiten wiederholt werden und eventuell eine bestimmte Anzahl von Vokabeln aus früheren Einheiten. Dazu müssen wir in einer Liste der TinyDB auch die Anzahl der Vokabeln pro Einheit abfragen können und die gewünschten Vokabeln über eine Manipulation der Listenlänge erhalten können.&lt;br /&gt;
&lt;br /&gt;
* Es sollte auch möglich sein, die Abfragerichtung E-D/D-E festzulegen.&lt;br /&gt;
&lt;br /&gt;
* Der User sollte richtige und falsche Antworten kennzeichnen und seine Ergebnisse speichern können. Eine direkte Bewertung mit Eingabe der Lösung dürfte höchstens bei sehr einfachen Vokabeln Sinn machen. Vielleicht gibt es auch einen Weg, Vokabeln die nicht gewusst wurden, häufiger abzufragen.&lt;br /&gt;
&lt;br /&gt;
* Aus Designsicht wäre es wünschenswert, wenn nur jeweils die Bestandteile des Moduls zu sehen wären, das gerade verwendet wird (Eingabe, Abfrage und eventuell Einstellungen).&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3793</id>
		<title>Listen und Datenbank - der Vokabeltrainer</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3793"/>
		<updated>2015-04-09T15:56:47Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Lösung: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Die Idee===&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Vokabeltrainer programmieren, bei dem Vokabelpaare (Englisch - Deutsch) in Textboxes eingegeben werden können. Die aktuell eingegebenen Vokabeln werden als Liste angezeigt, die nach dem ersten Einprägen gelöscht werden kann. Die Vokabeln werden in eine Datenbank geschrieben, die beim Start der App zur Verfügung steht. Die englischen Vokabeln werden auf Buttonklick angezeigt und nach einem weiteren Klick das zugehörige deutsche Wort. Insbesondere zu Testzwecken besteht auch die Möglichkeit die gesamte Datenbank zu löschen.&lt;br /&gt;
&lt;br /&gt;
===Listen===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;Array&#039;&#039; und &#039;&#039;Arraylist&#039;&#039; kennen wir aus Java bereits zwei Datentypen, mit denen größere Datenmengen abgespeichert werden können. Der App Inventor bietet zu diesem Zweck Listen. Die Vorgehensweise ist dabei dem Umgang mit Arraylists sehr ähnlich. Wesentliche Unterschiede sind, dass die Items nicht vom selben Datentyp sein müssen und dass die Indizierung der Items nicht mit dem Wert 0 beginnt, sondern mit dem Wert 1 und damit auch der Index des letzten Items in der Liste der Länge der Liste entspricht. Die zur Verfügung stehenden Methoden finden sich im Built-In Block &#039;&#039;Lists&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie bei Arraylists erhält die Liste einen Namen und wird als leere Liste initialisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Liste kann nun mit beliebig vielen Items gefüllt werden, die anschließend in dieser Reihenfolge über den Index angesprochen werden können. Um einen zusätzlichen Slot für die Items zu erzeugen genügt ein Klick auf das blaue Icon oben links. In dem erscheinenden Kontextmenü wird nun ein Item-Block in den Listenblock gezogen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man anschließend zusätzliche Items in die Liste aufnehmen, kann man dies mit dem Block &#039;&#039;&#039;add items to list&#039;&#039;&#039; bewerkstelligt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun eines der Listenitems anzusprechen, verwendet man die Methode &#039;&#039;&#039;select list item&#039;&#039;&#039;, bei der der Indexwert als Parameterwert angegeben wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Methode &#039;&#039;&#039;length of list&#039;&#039;&#039; lässt sich die Länge und damit die Anzahl der Items in einer Liste bestimmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie vom Umgang mit Arrays und Arraylists bekannt, können auch Listen mittels Schleifen manipuliert werden. In folgendem Beispiel werden die Inhalte aller Items der Liste gelöscht (nicht die Items selbst!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der große Nachteil der Listen ist, dass sie nur während der Laufzeit der App genutzt werden können. Nach Beenden der App werden alle Daten der Liste gelöscht. Um mit den eingegebenen Daten auch zu einem späteren Zeitpunkt arbeiten zu können, müssen diese permanent gespeichert werden. Der App Inventor bietet hierzu die Möglichkeit mittels &#039;&#039;&#039;TinyDB&#039;&#039;&#039; den internen Speicher des Smartphones zu nutzen.&lt;br /&gt;
&lt;br /&gt;
===TinyDB===&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;TinyDB&#039;&#039;&#039; handelt es sich um einen Speicherbereich, den das Betriebssystem Android jeder mit dem App Inventor erstellten App dauerhaft zur Verfügung stellt. Darin können beliebig viele Daten abgelegt und abgerufen werden. Identifiziert werden sie dabei über einen eindeutigen Bezeichner (&#039;&#039;&#039;tag&#039;&#039;&#039;). Die zu speichernden Daten entsprechen den Werten, die während der Programmlaufzeit in den entsprechenden Variablen vorliegen. Dieses bedeutet auch, dass zu speichernde Daten als Werte in einer Variable vorliegen müssen und an die Methode &#039;&#039;&#039;StoreValue&#039;&#039;&#039; übergeben werden. Auch beim Laden wird eine Variable gleichen oder kompatiblen Datentyps benötigt, in die der Wert aus dem Speicher über die Methode &#039;&#039;&#039;GetValue&#039;&#039;&#039; geschrieben werden kann. Mit &#039;&#039;&#039;clear all&#039;&#039;&#039; bzw. &#039;&#039;&#039;clear tag&#039;&#039;&#039; können alle Daten der TinyDB bzw. die mit einem einzelnen &#039;&#039;tag&#039;&#039; verbundenen Daten gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine TinyDB ist eine nicht-sichtbare Komponente und wird dem Projekt im Designermodus hinzugefügt. Die Funktionalität kann nur nach der Installation der App auf dem Smartphone vollständig getestet werde, da im Entwicklungsmodus die Daten nach einem Neustart der App immer wieder neu eingelesen werden müssen.&lt;br /&gt;
&lt;br /&gt;
===Das Design===&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
====Speichern der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die eingegebenen Vokabelpaare zu speichern, nutzen wir zwei Listen. Diese beiden Listen können wir über den Index der einzelnen Items miteinander verbinden, d.h. Items mit gleichem Index bilden ein Vokabelpaar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir legen also zuerst zwei Listen an. Dazu deklarieren wir zwei Variablen &#039;&#039;Englisch&#039;&#039; und &#039;&#039;Deutsch&#039;&#039; und initialisieren sie als leere Listen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Speichern der Vokabelpaare erfolgt durch Anklicken des Buttons &#039;&#039;Speichern&#039;&#039;. Wir beginnen also wieder mit dem entsprechenden Event Handler. Nach der oben erläuterten Vorgehensweise fügen wir den Inhalt der &#039;&#039;TextBoxEnglisch&#039;&#039; der Liste &#039;&#039;Englisch&#039;&#039; hinzu und den Inhalt der &#039;&#039;TextBoxDeutsch&#039;&#039; der Liste &#039;&#039;Deutsch&#039;&#039;. Anschließend leeren wir die zwei Textboxen wieder um sie für eine neue Eingabe vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise haben wir nach wiederholtem Speichern eine Liste von Vokabelpaaren. Allerdings existiert diese Liste nur während der Laufzeit der App und wird nach Beenden der Anwendung wieder gelöscht, was dem Sinn eines Vokabeltrainers zuwiderläuft. Zudem wollen wir neue Vokabeln den bereits bestehenden Listen hinzufügen. Wir müssen also den Variablen &#039;&#039;Englisch&#039;&#039; bzw. &#039;&#039;Deutsch&#039;&#039; den Inhalt der in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; abgespeicherten Listen hinzufügen. In einem ersten Schritt setzen wir den Wert der Variablen auf den aktuellen Speicherinhalt der jeweiligen Listen. Indem wir einen &#039;&#039;tag&#039;&#039; &#039;&#039;Englischliste&#039;&#039; bzw. &#039;&#039;Deutschliste&#039;&#039; verwenden und den Inhalt einer Variable vom Datentyp &#039;&#039;Liste&#039;&#039; zuweisen, haben wir automatisch in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; zwei Listen kreiert, die wir mit dem entsprechenden Namen immer wieder ansprechen können. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genau das tun wir nun, indem wir nach dem Hinzufügen eines Items zur entsprechenden Liste diese wieder in der TinyDB abspeichern. Damit wird mit dem Klicken des Speicherbuttons die permanente Vokabelliste immer wieder aktualisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Anzeigen der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Das Lernen einer Liste von Vokabeln beginnt üblicherweise damit, dass wir uns die einzelnen Vokabelpaare einprägen, bevor wir mit dem eigentlichen Abfragen beginnen. Es sollen also die einzelnen Vokabelpaare auf dem Display aufgelistet werden, so dass sie für den ersten Schritt des Vokabellernens zur Verfügung stehen. Zu diesem Zweck deklarieren wir zwei weitere Variablen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; und initialisieren sie wiederum als leere Listen. Diese Listen werden allerdings nur während der Laufzeit der App benötigt, so dass sie nicht in der TinyDB abgespeichert werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen nun die Vokabeln beim Speichern gleichzeitig auch den nicht-permanenten Listen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kommt die auf den ersten Blick recht einfache Aufgabe, die Vokabelpaare im Label &#039;&#039;LabelVokabelpaar&#039;&#039; aufzulisten, was aber etwas aufwändiger ist als es aussieht. Wir erstellen zu diesem Zweck eine eigene Prozedur &#039;&#039;VocShow&#039;&#039;, die diese Aufgabe umsetzt. Diese Prozedur macht Folgendes: Sie leert bei jedem Aufruf zuerst das Label. Dann schreibt sie mit Hilfe einer Schleife, die vom Index 1 bis zur aktuellen Länge der Liste läuft die einzelnen Vokabelpaare in das Label. Dazu werden die zusammengehörigen Items jeweils in eine Hilfsvariable geschrieben, indem sie mittels der &#039;&#039;&#039;select list item&#039;&#039;&#039;-Methode aus den nicht-permanenten Listen abgerufen werden und anschließend verbunden werden. Im Label wird dabei der aktuelle Inhalt des Labels mit dem neuen Vokabelpaar verbunden und durch einen Zeilenwechsel (\n) gegliedert.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen also mit der Deklaration und Initialisierung der Hilfsvariablen für die zu verbindenden Items der Vokabellisten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_7.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir die oben beschriebene Vorgehensweise um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_8.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir den Aufruf der Prozedur &#039;&#039;&#039;VocShow&#039;&#039;&#039; noch an entsprechender Stelle im Block &#039;&#039;Speichern&#039;&#039; einbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_9.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Leeren der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Nachdem wir die Vokabelliste nach dem Einprägen der neuen Vokabeln nicht mehr brauchen, soll sie nach Gebrauch wieder gelöscht werden können. Dazu versehen wir den Button &#039;&#039;Liste leeren&#039;&#039; mit dem entsprechenden Event Handler. Das Leeren ist relativ einfach. Wir setzen das Label &#039;&#039;LabelVokabelpaar&#039;&#039; auf einen leeren String und belegen die beiden Variablen für die nicht-permanenten Listen mit einer leeren Liste, d.h. es werden alle Items aus den beiden Listen gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_13.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Abfragen der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir die eigentliche Funktion des Vokabeltrainers um - das Abfragen. Zu diesem Zweck durchlaufen wir die Vokabellisten, indem wir bei jedem Klicken des Buttons &#039;&#039;Abfragen&#039;&#039; den Index der Listen um eins erhöhen. Zur Anzeige der englischen Vokabel nutzen wir die bereits angelegte Hilfsvariable &#039;&#039;VocE&#039;&#039; und weisen ihr aus der permanenten &#039;&#039;Englischliste&#039;&#039; der TinyDB das dem Indexwert entsprechende Item zu, das wir dann dem Setter des Labels &#039;&#039;LabelAsk&#039;&#039; zuweisen. Gleichzeitig löschen wir die Anzeige des deutschen Wortes im Label &#039;&#039;LabelShow&#039;&#039;. Wird der Button &#039;&#039;Show&#039;&#039; geklickt, soll dort das zugehörige deutsche Wort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen mit der Deklaration der Hilfsvariable für den Listenindex. Diese wird mit dem Wert 0 initialisiert, da damit beim ersten Klick des Buttons &#039;&#039;Abfragen&#039;&#039; der Indexwert auf 1 und damit auf den Wert des ersten Items in der Liste gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir versehen nun den Button &#039;&#039;Abfragen&#039;&#039; mit dem entsprechenden Event Handler und setzen die oben beschriebene Vorgehensweise um. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10b.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt setellt eine kleine Schönheitskorrektur dar. Wir setzten den Text des Buttons &#039;&#039;Abfragen&#039;&#039; auf &#039;&#039;Next&#039;&#039;. Den Wechsel der beiden Beschriftungen müssen wir im Auge behalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10c.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen wir vor einem kleinen Problem: Ist das Ende der Liste erreicht, bekommen wir mit dem nächsten Klick eine Fehlermeldung. Wir müssen dafür sorgen, dass bei Erreichen des Listenendes der Listenindex wieder auf 0 gesetzt wird, der Text des Buttons &#039;&#039;Next&#039;&#039; wieder auf &#039;&#039;Abfragen&#039;&#039; geändert wird und die beiden Labels &#039;&#039;LabelAsk&#039;&#039; und &#039;&#039;LabelShow&#039;&#039; einen leeren String erhalten. Damit kann das Abfragen wieder von vorne beginnen. Programmiertechnisch setzen wir das mit einer zweiseitigen bedingten Anweisung (&#039;&#039;if ... else&#039;&#039;) um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10d.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Anzeige des zugehörigen deutschen Wortes erfolgt analog zur Anzeige des englischen Wortes. Abhängig vom aktuellen Listenindex wird das entsprechende Item aus der &#039;&#039;Deutschliste&#039;&#039; in der TinyDB im Label &#039;&#039;LabelShow&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_12.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Löschen des Datenspeichers====&lt;br /&gt;
&lt;br /&gt;
Insbesondere zu Testzwecken ist es günstig, wenn man die benutzte Datenbank löschen kann. Dazu wird mit der Methode &#039;&#039;&#039;ClearAll&#039;&#039;&#039; der Inhalt der TinyDB gelöscht, die Labels werden auf einen leeren String gesetzt und die Hilfsvariablen werden auf den Anfangswert zurückgesetzt. Für die endgültige App sollte vor dem endgültigen Löschen noch eine Sicherheitsabfrage an den User erfolgen, da das versehentliche Löschen einer Datenbank ärgerlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_14.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Initialisierung der Screen====&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir uns noch Gedanken über die Initialisierung der Screen machen. Auf jeden Fall sollten wir den Text des Buttons &#039;&#039;ButtonAbfragen&#039;&#039; auf den Text &#039;&#039;Abfragen&#039;&#039; setzen. Zudem ist es günstiger das Laden der Daten gleich bei der Initialisierung der Screen vorzunehmen. Wir verlagern die entsprechenden Blöcke aus dem Block für das Speichern in die Initialisierung der Screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_16.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Beenden der Anwendung====&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir nur noch, wie gewohnt,  das Beenden der Applikation umsetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_15.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Erweiterungsaufgaben===&lt;br /&gt;
&lt;br /&gt;
* Die App funktioniert nun bei der vorgesehenen Verwendung ohne Probleme. Allerdings wird ein Beta-Test einige Probleme aufwerfen, die noch zu lösen sind. Beispiele:&lt;br /&gt;
** Was tun bei einer fehlerhaften Eingabe?&lt;br /&gt;
** Was passiert beim Speichern ohne vorherige Eingabe?&lt;br /&gt;
====Lösung:====&lt;br /&gt;
Um das Problem zu lösen bauen wir eine Gleichstellung der TextBoxEnglish mit einem leeren Textfeld in den Block &amp;quot;Speicher&amp;quot; ein und leiten dann den Benutzer, wenn das Textfeld leer ist, noch bevor die Vokabel gespeichert wird zu einen anderen Screen. Dort erhält er die Nachricht erst etwas einzugeben bevor er abspeichert.&lt;br /&gt;
[[Datei:Projekt bild 1.PNG||Beschreibung]]&lt;br /&gt;
** Was passiert bei einer Abfrage bei leerer Liste?&lt;br /&gt;
&lt;br /&gt;
* Die Abfrage durchläuft immer die ganze gespeicherte Liste und das in derselben Reihenfolge der Vokabeln. Die Vokabeln sollen nun in zufälliger Reihenfolge abgefragt werden. Zusätzlich sollen dabei alle Vokabeln  abgefragt werden.Mit Hilfe eines Buttons kann der Benutzer wieder zum ursprünglichem Screen zurück.&lt;br /&gt;
&lt;br /&gt;
* In der Praxis sollten nicht immer alle Vokabeln abgefragt werden, sondern zuerst die aktuellen Vokabeln. Dazu sollten die Vokabeln der letzten beiden Einheiten wiederholt werden und eventuell eine bestimmte Anzahl von Vokabeln aus früheren Einheiten. Dazu müssen wir in einer Liste der TinyDB auch die Anzahl der Vokabeln pro Einheit abfragen können und die gewünschten Vokabeln über eine Manipulation der Listenlänge erhalten können.&lt;br /&gt;
&lt;br /&gt;
* Es sollte auch möglich sein, die Abfragerichtung E-D/D-E festzulegen.&lt;br /&gt;
&lt;br /&gt;
* Der User sollte richtige und falsche Antworten kennzeichnen und seine Ergebnisse speichern können. Eine direkte Bewertung mit Eingabe der Lösung dürfte höchstens bei sehr einfachen Vokabeln Sinn machen. Vielleicht gibt es auch einen Weg, Vokabeln die nicht gewusst wurden, häufiger abzufragen.&lt;br /&gt;
&lt;br /&gt;
* Aus Designsicht wäre es wünschenswert, wenn nur jeweils die Bestandteile des Moduls zu sehen wären, das gerade verwendet wird (Eingabe, Abfrage und eventuell Einstellungen).&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3792</id>
		<title>Listen und Datenbank - der Vokabeltrainer</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3792"/>
		<updated>2015-04-09T15:55:29Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Erweiterungsaufgaben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Die Idee===&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Vokabeltrainer programmieren, bei dem Vokabelpaare (Englisch - Deutsch) in Textboxes eingegeben werden können. Die aktuell eingegebenen Vokabeln werden als Liste angezeigt, die nach dem ersten Einprägen gelöscht werden kann. Die Vokabeln werden in eine Datenbank geschrieben, die beim Start der App zur Verfügung steht. Die englischen Vokabeln werden auf Buttonklick angezeigt und nach einem weiteren Klick das zugehörige deutsche Wort. Insbesondere zu Testzwecken besteht auch die Möglichkeit die gesamte Datenbank zu löschen.&lt;br /&gt;
&lt;br /&gt;
===Listen===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;Array&#039;&#039; und &#039;&#039;Arraylist&#039;&#039; kennen wir aus Java bereits zwei Datentypen, mit denen größere Datenmengen abgespeichert werden können. Der App Inventor bietet zu diesem Zweck Listen. Die Vorgehensweise ist dabei dem Umgang mit Arraylists sehr ähnlich. Wesentliche Unterschiede sind, dass die Items nicht vom selben Datentyp sein müssen und dass die Indizierung der Items nicht mit dem Wert 0 beginnt, sondern mit dem Wert 1 und damit auch der Index des letzten Items in der Liste der Länge der Liste entspricht. Die zur Verfügung stehenden Methoden finden sich im Built-In Block &#039;&#039;Lists&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie bei Arraylists erhält die Liste einen Namen und wird als leere Liste initialisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Liste kann nun mit beliebig vielen Items gefüllt werden, die anschließend in dieser Reihenfolge über den Index angesprochen werden können. Um einen zusätzlichen Slot für die Items zu erzeugen genügt ein Klick auf das blaue Icon oben links. In dem erscheinenden Kontextmenü wird nun ein Item-Block in den Listenblock gezogen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man anschließend zusätzliche Items in die Liste aufnehmen, kann man dies mit dem Block &#039;&#039;&#039;add items to list&#039;&#039;&#039; bewerkstelligt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun eines der Listenitems anzusprechen, verwendet man die Methode &#039;&#039;&#039;select list item&#039;&#039;&#039;, bei der der Indexwert als Parameterwert angegeben wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Methode &#039;&#039;&#039;length of list&#039;&#039;&#039; lässt sich die Länge und damit die Anzahl der Items in einer Liste bestimmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie vom Umgang mit Arrays und Arraylists bekannt, können auch Listen mittels Schleifen manipuliert werden. In folgendem Beispiel werden die Inhalte aller Items der Liste gelöscht (nicht die Items selbst!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der große Nachteil der Listen ist, dass sie nur während der Laufzeit der App genutzt werden können. Nach Beenden der App werden alle Daten der Liste gelöscht. Um mit den eingegebenen Daten auch zu einem späteren Zeitpunkt arbeiten zu können, müssen diese permanent gespeichert werden. Der App Inventor bietet hierzu die Möglichkeit mittels &#039;&#039;&#039;TinyDB&#039;&#039;&#039; den internen Speicher des Smartphones zu nutzen.&lt;br /&gt;
&lt;br /&gt;
===TinyDB===&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;TinyDB&#039;&#039;&#039; handelt es sich um einen Speicherbereich, den das Betriebssystem Android jeder mit dem App Inventor erstellten App dauerhaft zur Verfügung stellt. Darin können beliebig viele Daten abgelegt und abgerufen werden. Identifiziert werden sie dabei über einen eindeutigen Bezeichner (&#039;&#039;&#039;tag&#039;&#039;&#039;). Die zu speichernden Daten entsprechen den Werten, die während der Programmlaufzeit in den entsprechenden Variablen vorliegen. Dieses bedeutet auch, dass zu speichernde Daten als Werte in einer Variable vorliegen müssen und an die Methode &#039;&#039;&#039;StoreValue&#039;&#039;&#039; übergeben werden. Auch beim Laden wird eine Variable gleichen oder kompatiblen Datentyps benötigt, in die der Wert aus dem Speicher über die Methode &#039;&#039;&#039;GetValue&#039;&#039;&#039; geschrieben werden kann. Mit &#039;&#039;&#039;clear all&#039;&#039;&#039; bzw. &#039;&#039;&#039;clear tag&#039;&#039;&#039; können alle Daten der TinyDB bzw. die mit einem einzelnen &#039;&#039;tag&#039;&#039; verbundenen Daten gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine TinyDB ist eine nicht-sichtbare Komponente und wird dem Projekt im Designermodus hinzugefügt. Die Funktionalität kann nur nach der Installation der App auf dem Smartphone vollständig getestet werde, da im Entwicklungsmodus die Daten nach einem Neustart der App immer wieder neu eingelesen werden müssen.&lt;br /&gt;
&lt;br /&gt;
===Das Design===&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
====Speichern der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die eingegebenen Vokabelpaare zu speichern, nutzen wir zwei Listen. Diese beiden Listen können wir über den Index der einzelnen Items miteinander verbinden, d.h. Items mit gleichem Index bilden ein Vokabelpaar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir legen also zuerst zwei Listen an. Dazu deklarieren wir zwei Variablen &#039;&#039;Englisch&#039;&#039; und &#039;&#039;Deutsch&#039;&#039; und initialisieren sie als leere Listen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Speichern der Vokabelpaare erfolgt durch Anklicken des Buttons &#039;&#039;Speichern&#039;&#039;. Wir beginnen also wieder mit dem entsprechenden Event Handler. Nach der oben erläuterten Vorgehensweise fügen wir den Inhalt der &#039;&#039;TextBoxEnglisch&#039;&#039; der Liste &#039;&#039;Englisch&#039;&#039; hinzu und den Inhalt der &#039;&#039;TextBoxDeutsch&#039;&#039; der Liste &#039;&#039;Deutsch&#039;&#039;. Anschließend leeren wir die zwei Textboxen wieder um sie für eine neue Eingabe vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise haben wir nach wiederholtem Speichern eine Liste von Vokabelpaaren. Allerdings existiert diese Liste nur während der Laufzeit der App und wird nach Beenden der Anwendung wieder gelöscht, was dem Sinn eines Vokabeltrainers zuwiderläuft. Zudem wollen wir neue Vokabeln den bereits bestehenden Listen hinzufügen. Wir müssen also den Variablen &#039;&#039;Englisch&#039;&#039; bzw. &#039;&#039;Deutsch&#039;&#039; den Inhalt der in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; abgespeicherten Listen hinzufügen. In einem ersten Schritt setzen wir den Wert der Variablen auf den aktuellen Speicherinhalt der jeweiligen Listen. Indem wir einen &#039;&#039;tag&#039;&#039; &#039;&#039;Englischliste&#039;&#039; bzw. &#039;&#039;Deutschliste&#039;&#039; verwenden und den Inhalt einer Variable vom Datentyp &#039;&#039;Liste&#039;&#039; zuweisen, haben wir automatisch in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; zwei Listen kreiert, die wir mit dem entsprechenden Namen immer wieder ansprechen können. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genau das tun wir nun, indem wir nach dem Hinzufügen eines Items zur entsprechenden Liste diese wieder in der TinyDB abspeichern. Damit wird mit dem Klicken des Speicherbuttons die permanente Vokabelliste immer wieder aktualisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Anzeigen der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Das Lernen einer Liste von Vokabeln beginnt üblicherweise damit, dass wir uns die einzelnen Vokabelpaare einprägen, bevor wir mit dem eigentlichen Abfragen beginnen. Es sollen also die einzelnen Vokabelpaare auf dem Display aufgelistet werden, so dass sie für den ersten Schritt des Vokabellernens zur Verfügung stehen. Zu diesem Zweck deklarieren wir zwei weitere Variablen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; und initialisieren sie wiederum als leere Listen. Diese Listen werden allerdings nur während der Laufzeit der App benötigt, so dass sie nicht in der TinyDB abgespeichert werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen nun die Vokabeln beim Speichern gleichzeitig auch den nicht-permanenten Listen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kommt die auf den ersten Blick recht einfache Aufgabe, die Vokabelpaare im Label &#039;&#039;LabelVokabelpaar&#039;&#039; aufzulisten, was aber etwas aufwändiger ist als es aussieht. Wir erstellen zu diesem Zweck eine eigene Prozedur &#039;&#039;VocShow&#039;&#039;, die diese Aufgabe umsetzt. Diese Prozedur macht Folgendes: Sie leert bei jedem Aufruf zuerst das Label. Dann schreibt sie mit Hilfe einer Schleife, die vom Index 1 bis zur aktuellen Länge der Liste läuft die einzelnen Vokabelpaare in das Label. Dazu werden die zusammengehörigen Items jeweils in eine Hilfsvariable geschrieben, indem sie mittels der &#039;&#039;&#039;select list item&#039;&#039;&#039;-Methode aus den nicht-permanenten Listen abgerufen werden und anschließend verbunden werden. Im Label wird dabei der aktuelle Inhalt des Labels mit dem neuen Vokabelpaar verbunden und durch einen Zeilenwechsel (\n) gegliedert.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen also mit der Deklaration und Initialisierung der Hilfsvariablen für die zu verbindenden Items der Vokabellisten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_7.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir die oben beschriebene Vorgehensweise um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_8.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir den Aufruf der Prozedur &#039;&#039;&#039;VocShow&#039;&#039;&#039; noch an entsprechender Stelle im Block &#039;&#039;Speichern&#039;&#039; einbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_9.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Leeren der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Nachdem wir die Vokabelliste nach dem Einprägen der neuen Vokabeln nicht mehr brauchen, soll sie nach Gebrauch wieder gelöscht werden können. Dazu versehen wir den Button &#039;&#039;Liste leeren&#039;&#039; mit dem entsprechenden Event Handler. Das Leeren ist relativ einfach. Wir setzen das Label &#039;&#039;LabelVokabelpaar&#039;&#039; auf einen leeren String und belegen die beiden Variablen für die nicht-permanenten Listen mit einer leeren Liste, d.h. es werden alle Items aus den beiden Listen gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_13.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Abfragen der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir die eigentliche Funktion des Vokabeltrainers um - das Abfragen. Zu diesem Zweck durchlaufen wir die Vokabellisten, indem wir bei jedem Klicken des Buttons &#039;&#039;Abfragen&#039;&#039; den Index der Listen um eins erhöhen. Zur Anzeige der englischen Vokabel nutzen wir die bereits angelegte Hilfsvariable &#039;&#039;VocE&#039;&#039; und weisen ihr aus der permanenten &#039;&#039;Englischliste&#039;&#039; der TinyDB das dem Indexwert entsprechende Item zu, das wir dann dem Setter des Labels &#039;&#039;LabelAsk&#039;&#039; zuweisen. Gleichzeitig löschen wir die Anzeige des deutschen Wortes im Label &#039;&#039;LabelShow&#039;&#039;. Wird der Button &#039;&#039;Show&#039;&#039; geklickt, soll dort das zugehörige deutsche Wort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen mit der Deklaration der Hilfsvariable für den Listenindex. Diese wird mit dem Wert 0 initialisiert, da damit beim ersten Klick des Buttons &#039;&#039;Abfragen&#039;&#039; der Indexwert auf 1 und damit auf den Wert des ersten Items in der Liste gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir versehen nun den Button &#039;&#039;Abfragen&#039;&#039; mit dem entsprechenden Event Handler und setzen die oben beschriebene Vorgehensweise um. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10b.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt setellt eine kleine Schönheitskorrektur dar. Wir setzten den Text des Buttons &#039;&#039;Abfragen&#039;&#039; auf &#039;&#039;Next&#039;&#039;. Den Wechsel der beiden Beschriftungen müssen wir im Auge behalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10c.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen wir vor einem kleinen Problem: Ist das Ende der Liste erreicht, bekommen wir mit dem nächsten Klick eine Fehlermeldung. Wir müssen dafür sorgen, dass bei Erreichen des Listenendes der Listenindex wieder auf 0 gesetzt wird, der Text des Buttons &#039;&#039;Next&#039;&#039; wieder auf &#039;&#039;Abfragen&#039;&#039; geändert wird und die beiden Labels &#039;&#039;LabelAsk&#039;&#039; und &#039;&#039;LabelShow&#039;&#039; einen leeren String erhalten. Damit kann das Abfragen wieder von vorne beginnen. Programmiertechnisch setzen wir das mit einer zweiseitigen bedingten Anweisung (&#039;&#039;if ... else&#039;&#039;) um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10d.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Anzeige des zugehörigen deutschen Wortes erfolgt analog zur Anzeige des englischen Wortes. Abhängig vom aktuellen Listenindex wird das entsprechende Item aus der &#039;&#039;Deutschliste&#039;&#039; in der TinyDB im Label &#039;&#039;LabelShow&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_12.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Löschen des Datenspeichers====&lt;br /&gt;
&lt;br /&gt;
Insbesondere zu Testzwecken ist es günstig, wenn man die benutzte Datenbank löschen kann. Dazu wird mit der Methode &#039;&#039;&#039;ClearAll&#039;&#039;&#039; der Inhalt der TinyDB gelöscht, die Labels werden auf einen leeren String gesetzt und die Hilfsvariablen werden auf den Anfangswert zurückgesetzt. Für die endgültige App sollte vor dem endgültigen Löschen noch eine Sicherheitsabfrage an den User erfolgen, da das versehentliche Löschen einer Datenbank ärgerlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_14.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Initialisierung der Screen====&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir uns noch Gedanken über die Initialisierung der Screen machen. Auf jeden Fall sollten wir den Text des Buttons &#039;&#039;ButtonAbfragen&#039;&#039; auf den Text &#039;&#039;Abfragen&#039;&#039; setzen. Zudem ist es günstiger das Laden der Daten gleich bei der Initialisierung der Screen vorzunehmen. Wir verlagern die entsprechenden Blöcke aus dem Block für das Speichern in die Initialisierung der Screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_16.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Beenden der Anwendung====&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir nur noch, wie gewohnt,  das Beenden der Applikation umsetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_15.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Erweiterungsaufgaben===&lt;br /&gt;
&lt;br /&gt;
* Die App funktioniert nun bei der vorgesehenen Verwendung ohne Probleme. Allerdings wird ein Beta-Test einige Probleme aufwerfen, die noch zu lösen sind. Beispiele:&lt;br /&gt;
** Was tun bei einer fehlerhaften Eingabe?&lt;br /&gt;
** Was passiert beim Speichern ohne vorherige Eingabe?&lt;br /&gt;
====Lösung:====&lt;br /&gt;
Um das Problem zu lösen bauen wir eine Gleichstellung der TextBoxEnglish mit einem leeren Textfeld in den Block &amp;quot;Speicher&amp;quot; ein und leiten dann den Benutzer, wenn das Textfeld leer ist, noch bevor die Vokabel gespeichert wird zu einen anderen Screen. Dort erhält er die Nachricht erst etwas einzugeben bevor er abspeichert.&lt;br /&gt;
[[Datei:Projekt bild 1.PNG||Beschreibung]]&lt;br /&gt;
** Was passiert bei einer Abfrage bei leerer Liste?&lt;br /&gt;
&lt;br /&gt;
* Die Abfrage durchläuft immer die ganze gespeicherte Liste und das in derselben Reihenfolge der Vokabeln. Die Vokabeln sollen nun in zufälliger Reihenfolge abgefragt werden. Zusätzlich sollen dabei alle Vokabeln  abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
* In der Praxis sollten nicht immer alle Vokabeln abgefragt werden, sondern zuerst die aktuellen Vokabeln. Dazu sollten die Vokabeln der letzten beiden Einheiten wiederholt werden und eventuell eine bestimmte Anzahl von Vokabeln aus früheren Einheiten. Dazu müssen wir in einer Liste der TinyDB auch die Anzahl der Vokabeln pro Einheit abfragen können und die gewünschten Vokabeln über eine Manipulation der Listenlänge erhalten können.&lt;br /&gt;
&lt;br /&gt;
* Es sollte auch möglich sein, die Abfragerichtung E-D/D-E festzulegen.&lt;br /&gt;
&lt;br /&gt;
* Der User sollte richtige und falsche Antworten kennzeichnen und seine Ergebnisse speichern können. Eine direkte Bewertung mit Eingabe der Lösung dürfte höchstens bei sehr einfachen Vokabeln Sinn machen. Vielleicht gibt es auch einen Weg, Vokabeln die nicht gewusst wurden, häufiger abzufragen.&lt;br /&gt;
&lt;br /&gt;
* Aus Designsicht wäre es wünschenswert, wenn nur jeweils die Bestandteile des Moduls zu sehen wären, das gerade verwendet wird (Eingabe, Abfrage und eventuell Einstellungen).&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:Projekt_bild_1.PNG&amp;diff=3791</id>
		<title>Datei:Projekt bild 1.PNG</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:Projekt_bild_1.PNG&amp;diff=3791"/>
		<updated>2015-04-09T15:53:17Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{de|1=Beschreibung}}&lt;br /&gt;
|date=2015-04-09 17:52:29&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Hoeherl011|Hoeherl011]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other_versions=&lt;br /&gt;
|other_fields=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-3.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Uploaded with UploadWizard]]&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3790</id>
		<title>Listen und Datenbank - der Vokabeltrainer</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Listen_und_Datenbank_-_der_Vokabeltrainer&amp;diff=3790"/>
		<updated>2015-04-09T15:51:56Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Erweiterungsaufgaben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Die Idee===&lt;br /&gt;
&lt;br /&gt;
Wir wollen einen Vokabeltrainer programmieren, bei dem Vokabelpaare (Englisch - Deutsch) in Textboxes eingegeben werden können. Die aktuell eingegebenen Vokabeln werden als Liste angezeigt, die nach dem ersten Einprägen gelöscht werden kann. Die Vokabeln werden in eine Datenbank geschrieben, die beim Start der App zur Verfügung steht. Die englischen Vokabeln werden auf Buttonklick angezeigt und nach einem weiteren Klick das zugehörige deutsche Wort. Insbesondere zu Testzwecken besteht auch die Möglichkeit die gesamte Datenbank zu löschen.&lt;br /&gt;
&lt;br /&gt;
===Listen===&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;Array&#039;&#039; und &#039;&#039;Arraylist&#039;&#039; kennen wir aus Java bereits zwei Datentypen, mit denen größere Datenmengen abgespeichert werden können. Der App Inventor bietet zu diesem Zweck Listen. Die Vorgehensweise ist dabei dem Umgang mit Arraylists sehr ähnlich. Wesentliche Unterschiede sind, dass die Items nicht vom selben Datentyp sein müssen und dass die Indizierung der Items nicht mit dem Wert 0 beginnt, sondern mit dem Wert 1 und damit auch der Index des letzten Items in der Liste der Länge der Liste entspricht. Die zur Verfügung stehenden Methoden finden sich im Built-In Block &#039;&#039;Lists&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie bei Arraylists erhält die Liste einen Namen und wird als leere Liste initialisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Liste kann nun mit beliebig vielen Items gefüllt werden, die anschließend in dieser Reihenfolge über den Index angesprochen werden können. Um einen zusätzlichen Slot für die Items zu erzeugen genügt ein Klick auf das blaue Icon oben links. In dem erscheinenden Kontextmenü wird nun ein Item-Block in den Listenblock gezogen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man anschließend zusätzliche Items in die Liste aufnehmen, kann man dies mit dem Block &#039;&#039;&#039;add items to list&#039;&#039;&#039; bewerkstelligt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun eines der Listenitems anzusprechen, verwendet man die Methode &#039;&#039;&#039;select list item&#039;&#039;&#039;, bei der der Indexwert als Parameterwert angegeben wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Methode &#039;&#039;&#039;length of list&#039;&#039;&#039; lässt sich die Länge und damit die Anzahl der Items in einer Liste bestimmen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie vom Umgang mit Arrays und Arraylists bekannt, können auch Listen mittels Schleifen manipuliert werden. In folgendem Beispiel werden die Inhalte aller Items der Liste gelöscht (nicht die Items selbst!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_list_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der große Nachteil der Listen ist, dass sie nur während der Laufzeit der App genutzt werden können. Nach Beenden der App werden alle Daten der Liste gelöscht. Um mit den eingegebenen Daten auch zu einem späteren Zeitpunkt arbeiten zu können, müssen diese permanent gespeichert werden. Der App Inventor bietet hierzu die Möglichkeit mittels &#039;&#039;&#039;TinyDB&#039;&#039;&#039; den internen Speicher des Smartphones zu nutzen.&lt;br /&gt;
&lt;br /&gt;
===TinyDB===&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;TinyDB&#039;&#039;&#039; handelt es sich um einen Speicherbereich, den das Betriebssystem Android jeder mit dem App Inventor erstellten App dauerhaft zur Verfügung stellt. Darin können beliebig viele Daten abgelegt und abgerufen werden. Identifiziert werden sie dabei über einen eindeutigen Bezeichner (&#039;&#039;&#039;tag&#039;&#039;&#039;). Die zu speichernden Daten entsprechen den Werten, die während der Programmlaufzeit in den entsprechenden Variablen vorliegen. Dieses bedeutet auch, dass zu speichernde Daten als Werte in einer Variable vorliegen müssen und an die Methode &#039;&#039;&#039;StoreValue&#039;&#039;&#039; übergeben werden. Auch beim Laden wird eine Variable gleichen oder kompatiblen Datentyps benötigt, in die der Wert aus dem Speicher über die Methode &#039;&#039;&#039;GetValue&#039;&#039;&#039; geschrieben werden kann. Mit &#039;&#039;&#039;clear all&#039;&#039;&#039; bzw. &#039;&#039;&#039;clear tag&#039;&#039;&#039; können alle Daten der TinyDB bzw. die mit einem einzelnen &#039;&#039;tag&#039;&#039; verbundenen Daten gelöscht werden.&lt;br /&gt;
&lt;br /&gt;
Eine TinyDB ist eine nicht-sichtbare Komponente und wird dem Projekt im Designermodus hinzugefügt. Die Funktionalität kann nur nach der Installation der App auf dem Smartphone vollständig getestet werde, da im Entwicklungsmodus die Daten nach einem Neustart der App immer wieder neu eingelesen werden müssen.&lt;br /&gt;
&lt;br /&gt;
===Das Design===&lt;br /&gt;
&lt;br /&gt;
===Blocks===&lt;br /&gt;
&lt;br /&gt;
====Speichern der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um die eingegebenen Vokabelpaare zu speichern, nutzen wir zwei Listen. Diese beiden Listen können wir über den Index der einzelnen Items miteinander verbinden, d.h. Items mit gleichem Index bilden ein Vokabelpaar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir legen also zuerst zwei Listen an. Dazu deklarieren wir zwei Variablen &#039;&#039;Englisch&#039;&#039; und &#039;&#039;Deutsch&#039;&#039; und initialisieren sie als leere Listen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_1.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Speichern der Vokabelpaare erfolgt durch Anklicken des Buttons &#039;&#039;Speichern&#039;&#039;. Wir beginnen also wieder mit dem entsprechenden Event Handler. Nach der oben erläuterten Vorgehensweise fügen wir den Inhalt der &#039;&#039;TextBoxEnglisch&#039;&#039; der Liste &#039;&#039;Englisch&#039;&#039; hinzu und den Inhalt der &#039;&#039;TextBoxDeutsch&#039;&#039; der Liste &#039;&#039;Deutsch&#039;&#039;. Anschließend leeren wir die zwei Textboxen wieder um sie für eine neue Eingabe vorzubereiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_2.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise haben wir nach wiederholtem Speichern eine Liste von Vokabelpaaren. Allerdings existiert diese Liste nur während der Laufzeit der App und wird nach Beenden der Anwendung wieder gelöscht, was dem Sinn eines Vokabeltrainers zuwiderläuft. Zudem wollen wir neue Vokabeln den bereits bestehenden Listen hinzufügen. Wir müssen also den Variablen &#039;&#039;Englisch&#039;&#039; bzw. &#039;&#039;Deutsch&#039;&#039; den Inhalt der in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; abgespeicherten Listen hinzufügen. In einem ersten Schritt setzen wir den Wert der Variablen auf den aktuellen Speicherinhalt der jeweiligen Listen. Indem wir einen &#039;&#039;tag&#039;&#039; &#039;&#039;Englischliste&#039;&#039; bzw. &#039;&#039;Deutschliste&#039;&#039; verwenden und den Inhalt einer Variable vom Datentyp &#039;&#039;Liste&#039;&#039; zuweisen, haben wir automatisch in der TinyDB &#039;&#039;Vokabelspeicher&#039;&#039; zwei Listen kreiert, die wir mit dem entsprechenden Namen immer wieder ansprechen können. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_3.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genau das tun wir nun, indem wir nach dem Hinzufügen eines Items zur entsprechenden Liste diese wieder in der TinyDB abspeichern. Damit wird mit dem Klicken des Speicherbuttons die permanente Vokabelliste immer wieder aktualisiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_4.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Anzeigen der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Das Lernen einer Liste von Vokabeln beginnt üblicherweise damit, dass wir uns die einzelnen Vokabelpaare einprägen, bevor wir mit dem eigentlichen Abfragen beginnen. Es sollen also die einzelnen Vokabelpaare auf dem Display aufgelistet werden, so dass sie für den ersten Schritt des Vokabellernens zur Verfügung stehen. Zu diesem Zweck deklarieren wir zwei weitere Variablen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; und initialisieren sie wiederum als leere Listen. Diese Listen werden allerdings nur während der Laufzeit der App benötigt, so dass sie nicht in der TinyDB abgespeichert werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_5.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir fügen nun die Vokabeln beim Speichern gleichzeitig auch den nicht-permanenten Listen &#039;&#039;EnglischDisplay&#039;&#039; und &#039;&#039;DeutschDisplay&#039;&#039; hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_6.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun kommt die auf den ersten Blick recht einfache Aufgabe, die Vokabelpaare im Label &#039;&#039;LabelVokabelpaar&#039;&#039; aufzulisten, was aber etwas aufwändiger ist als es aussieht. Wir erstellen zu diesem Zweck eine eigene Prozedur &#039;&#039;VocShow&#039;&#039;, die diese Aufgabe umsetzt. Diese Prozedur macht Folgendes: Sie leert bei jedem Aufruf zuerst das Label. Dann schreibt sie mit Hilfe einer Schleife, die vom Index 1 bis zur aktuellen Länge der Liste läuft die einzelnen Vokabelpaare in das Label. Dazu werden die zusammengehörigen Items jeweils in eine Hilfsvariable geschrieben, indem sie mittels der &#039;&#039;&#039;select list item&#039;&#039;&#039;-Methode aus den nicht-permanenten Listen abgerufen werden und anschließend verbunden werden. Im Label wird dabei der aktuelle Inhalt des Labels mit dem neuen Vokabelpaar verbunden und durch einen Zeilenwechsel (\n) gegliedert.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen also mit der Deklaration und Initialisierung der Hilfsvariablen für die zu verbindenden Items der Vokabellisten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_7.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir die oben beschriebene Vorgehensweise um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_8.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir den Aufruf der Prozedur &#039;&#039;&#039;VocShow&#039;&#039;&#039; noch an entsprechender Stelle im Block &#039;&#039;Speichern&#039;&#039; einbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_9.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Leeren der aktuellen Vokabelliste====&lt;br /&gt;
&lt;br /&gt;
Nachdem wir die Vokabelliste nach dem Einprägen der neuen Vokabeln nicht mehr brauchen, soll sie nach Gebrauch wieder gelöscht werden können. Dazu versehen wir den Button &#039;&#039;Liste leeren&#039;&#039; mit dem entsprechenden Event Handler. Das Leeren ist relativ einfach. Wir setzen das Label &#039;&#039;LabelVokabelpaar&#039;&#039; auf einen leeren String und belegen die beiden Variablen für die nicht-permanenten Listen mit einer leeren Liste, d.h. es werden alle Items aus den beiden Listen gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_13.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Abfragen der Vokabeln====&lt;br /&gt;
&lt;br /&gt;
Nun setzen wir die eigentliche Funktion des Vokabeltrainers um - das Abfragen. Zu diesem Zweck durchlaufen wir die Vokabellisten, indem wir bei jedem Klicken des Buttons &#039;&#039;Abfragen&#039;&#039; den Index der Listen um eins erhöhen. Zur Anzeige der englischen Vokabel nutzen wir die bereits angelegte Hilfsvariable &#039;&#039;VocE&#039;&#039; und weisen ihr aus der permanenten &#039;&#039;Englischliste&#039;&#039; der TinyDB das dem Indexwert entsprechende Item zu, das wir dann dem Setter des Labels &#039;&#039;LabelAsk&#039;&#039; zuweisen. Gleichzeitig löschen wir die Anzeige des deutschen Wortes im Label &#039;&#039;LabelShow&#039;&#039;. Wird der Button &#039;&#039;Show&#039;&#039; geklickt, soll dort das zugehörige deutsche Wort angezeigt werden.&lt;br /&gt;
&lt;br /&gt;
Wir beginnen mit der Deklaration der Hilfsvariable für den Listenindex. Diese wird mit dem Wert 0 initialisiert, da damit beim ersten Klick des Buttons &#039;&#039;Abfragen&#039;&#039; der Indexwert auf 1 und damit auf den Wert des ersten Items in der Liste gesetzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10a.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir versehen nun den Button &#039;&#039;Abfragen&#039;&#039; mit dem entsprechenden Event Handler und setzen die oben beschriebene Vorgehensweise um. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10b.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt setellt eine kleine Schönheitskorrektur dar. Wir setzten den Text des Buttons &#039;&#039;Abfragen&#039;&#039; auf &#039;&#039;Next&#039;&#039;. Den Wechsel der beiden Beschriftungen müssen wir im Auge behalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10c.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun stehen wir vor einem kleinen Problem: Ist das Ende der Liste erreicht, bekommen wir mit dem nächsten Klick eine Fehlermeldung. Wir müssen dafür sorgen, dass bei Erreichen des Listenendes der Listenindex wieder auf 0 gesetzt wird, der Text des Buttons &#039;&#039;Next&#039;&#039; wieder auf &#039;&#039;Abfragen&#039;&#039; geändert wird und die beiden Labels &#039;&#039;LabelAsk&#039;&#039; und &#039;&#039;LabelShow&#039;&#039; einen leeren String erhalten. Damit kann das Abfragen wieder von vorne beginnen. Programmiertechnisch setzen wir das mit einer zweiseitigen bedingten Anweisung (&#039;&#039;if ... else&#039;&#039;) um.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_10d.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Anzeige des zugehörigen deutschen Wortes erfolgt analog zur Anzeige des englischen Wortes. Abhängig vom aktuellen Listenindex wird das entsprechende Item aus der &#039;&#039;Deutschliste&#039;&#039; in der TinyDB im Label &#039;&#039;LabelShow&#039;&#039; angezeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_12.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Löschen des Datenspeichers====&lt;br /&gt;
&lt;br /&gt;
Insbesondere zu Testzwecken ist es günstig, wenn man die benutzte Datenbank löschen kann. Dazu wird mit der Methode &#039;&#039;&#039;ClearAll&#039;&#039;&#039; der Inhalt der TinyDB gelöscht, die Labels werden auf einen leeren String gesetzt und die Hilfsvariablen werden auf den Anfangswert zurückgesetzt. Für die endgültige App sollte vor dem endgültigen Löschen noch eine Sicherheitsabfrage an den User erfolgen, da das versehentliche Löschen einer Datenbank ärgerlich sein kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_14.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Initialisierung der Screen====&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir uns noch Gedanken über die Initialisierung der Screen machen. Auf jeden Fall sollten wir den Text des Buttons &#039;&#039;ButtonAbfragen&#039;&#039; auf den Text &#039;&#039;Abfragen&#039;&#039; setzen. Zudem ist es günstiger das Laden der Daten gleich bei der Initialisierung der Screen vorzunehmen. Wir verlagern die entsprechenden Blöcke aus dem Block für das Speichern in die Initialisierung der Screen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_16.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Beenden der Anwendung====&lt;br /&gt;
&lt;br /&gt;
Zum Schluss müssen wir nur noch, wie gewohnt,  das Beenden der Applikation umsetzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left:30px&amp;quot;&amp;gt;[[Datei: Voc_15.JPG]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Erweiterungsaufgaben===&lt;br /&gt;
&lt;br /&gt;
* Die App funktioniert nun bei der vorgesehenen Verwendung ohne Probleme. Allerdings wird ein Beta-Test einige Probleme aufwerfen, die noch zu lösen sind. Beispiele:&lt;br /&gt;
** Was tun bei einer fehlerhaften Eingabe?&lt;br /&gt;
** Was passiert beim Speichern ohne vorherige Eingabe?&lt;br /&gt;
====Lösung:====&lt;br /&gt;
Um das Problem zu lösen bauen wir eine Gleichstellung der TextBoxEnglish mit einem leeren Textfeld ein und leiten dann den Benutzer, wenn das Textfeld leer ist, noch bevor die Vokabel gespeichert wird zu einen anderen Screen. Dort erhält er die Nachricht erst etwas einzugeben bevor er abspeichert.&lt;br /&gt;
** Was passiert bei einer Abfrage bei leerer Liste?&lt;br /&gt;
&lt;br /&gt;
* Die Abfrage durchläuft immer die ganze gespeicherte Liste und das in derselben Reihenfolge der Vokabeln. Die Vokabeln sollen nun in zufälliger Reihenfolge abgefragt werden. Zusätzlich sollen dabei alle Vokabeln  abgefragt werden.&lt;br /&gt;
&lt;br /&gt;
* In der Praxis sollten nicht immer alle Vokabeln abgefragt werden, sondern zuerst die aktuellen Vokabeln. Dazu sollten die Vokabeln der letzten beiden Einheiten wiederholt werden und eventuell eine bestimmte Anzahl von Vokabeln aus früheren Einheiten. Dazu müssen wir in einer Liste der TinyDB auch die Anzahl der Vokabeln pro Einheit abfragen können und die gewünschten Vokabeln über eine Manipulation der Listenlänge erhalten können.&lt;br /&gt;
&lt;br /&gt;
* Es sollte auch möglich sein, die Abfragerichtung E-D/D-E festzulegen.&lt;br /&gt;
&lt;br /&gt;
* Der User sollte richtige und falsche Antworten kennzeichnen und seine Ergebnisse speichern können. Eine direkte Bewertung mit Eingabe der Lösung dürfte höchstens bei sehr einfachen Vokabeln Sinn machen. Vielleicht gibt es auch einen Weg, Vokabeln die nicht gewusst wurden, häufiger abzufragen.&lt;br /&gt;
&lt;br /&gt;
* Aus Designsicht wäre es wünschenswert, wenn nur jeweils die Bestandteile des Moduls zu sehen wären, das gerade verwendet wird (Eingabe, Abfrage und eventuell Einstellungen).&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=693</id>
		<title>Regensburg im Mittelalter</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=693"/>
		<updated>2013-05-17T06:40:34Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Die Stadt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Klasse 7b beschäftigte sich im Geschichtsunterricht lehrplangemäß mit dem Thema &amp;quot;Die Stadt im Mittelalter&amp;quot;. Dabei wurden die Themen wie Stadtentstehung, der Aufbau der Gesellschaft einer mittelalterlichen Stadt, die Zünfte und die Außenseiter einer Stadt näher besprochen. Ein &amp;quot;Gesicht&amp;quot; bekam das Ganze im Rahmen einer Exkursion nach Regensburg, wo sich die Schülerinnen und Schüler der Klasse 7b genauer über die bedeutenden Bauwerke der Stadt Regensburg und den Aufbau der Stadt im Mittelalter informierten. Im Rahmen des Informatikunterrichts, in dem im ersten Halbjahr die Themen Internet und Erstellen von Websites auf dem Programm standen, präsentieren die Schülerinnen und Schüler ihre Ergebnisse nun auf unserem Schul-Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Lage Regensburgs, der Aufbau der Stadt und der Handel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die geographische Lage ===&lt;br /&gt;
&lt;br /&gt;
Regensburg liegt in der heutigen Oberpfalz( Deutschland,Bayern ) und liegt somit ganz in der Nähe des bayerischen Waldes und dem Gäuboden ,der auch die Donauebene gennant wird.&lt;br /&gt;
Außerdem liegt Regensburg an der Donau und  zwei Nebenflüssen Naab und Regen.Von dem zuletzt genannten Fluss stammt der Name ab.&lt;br /&gt;
Da die Stadt eine der wenigen war, wo man wegen einer Brücke den Fluss überqueren konnte.Dadurch siedelten sich dort viele Leute an ,deswegen wuchs Regensburg rasant.&lt;br /&gt;
&lt;br /&gt;
=== Der Aufbau der Stadt ===&lt;br /&gt;
&lt;br /&gt;
==== Die Stadt ====&lt;br /&gt;
Regensburg wurde von den Römern unter dem Namen &amp;quot;Castra Regina&amp;quot; (Das am Regen gelegene Lager) gegründet. Später wurde Regensburg Reichsstadt (Stadt die nur dem Kaiser untersteht); deswegen zahlten die Einwohner nur dem Kaiser Steuern. Weil der bayerische Herzog Albrecht IV. auch Steuern einziehen wollte, errichtete er die Gegenstadt &amp;quot;Stadt am Hof&amp;quot;. Der bayerische Herzog gab den Einwohnern auch  Stadtrechte, aber dennoch wollte dort niemand leben. Außerdem wurde in Regensburg die Steinerne Brücke, die eine der wenigen Brücken über die Donau war (die einzige von Regensburg bis Ulm), gebaut, dadurch blüte der Handel auf.Der heutige Neupfarrplatz war im Mittelalter das Ghetto(abgetrenntes Judenviertel).&lt;br /&gt;
&lt;br /&gt;
==== Häuser ====&lt;br /&gt;
&lt;br /&gt;
=== Der Handel ===&lt;br /&gt;
Zuerst wurde ein Lager namens Castra Regina von den Römern gegründet. Dort siedelte sich dann auch das normale Volk an und so wurde aus dem Lager schnell eine Stadt, deshalb begann dort der Handel schon sehr früh. Da Regensburg einen Flussübergang hat, mussten viele Händler, um auf die andere Seite des Flusses zu kommen durch Regesburg hindurch, wodurch die Regensburger von den Händlern hohe Steuern verlangen konnten. Der 3. Vorteil ist, dass Regensburg an einem Fluss liegt, wodurch viele Waren verschifft werden konnten. Dank dieser guten Lage an den Flüssen und der Brücke über den Fluss konnte Regensburgs Handel aufblühen.&lt;br /&gt;
&lt;br /&gt;
== Der Dom ==&lt;br /&gt;
==== Allgemein ====&lt;br /&gt;
Die Gesamtlänge innen beträgt 86,00 Meter,&lt;br /&gt;
die Breite innen beträgt 34,80 Meter. &lt;br /&gt;
Um 700 wurde die erste Bischofskirche an der Stelle der heutigen Dompfarrkirche Niedermünster errichtet.&lt;br /&gt;
&lt;br /&gt;
==== Bedeutung ====&lt;br /&gt;
Der Regensburger Dom ist das bedeutendste Bauwerk der süddeutschen Gotik.&lt;br /&gt;
Der Dom ist auch die Ruhestätte berühmter Bishöfe wie zum Beispiel Johann Michael Sailer (1829-1832) ,Georg Michael Wittmann (1832–1833) und Erzbischof Dr. Michael Buchberger.&lt;br /&gt;
Am 13. September 2006 besuchte Papst Benedikt XVI. den Dom und hielt dort ein Abendlob ab .&lt;br /&gt;
&lt;br /&gt;
==== Orgeln ====&lt;br /&gt;
2009 baute die Firma Rieger Orgelbau eine neue Hauptorgel in den Regensburger Dom, die aus 80 Registern auf 4 Manuale und Pedal besteht. Es ist die größte freihängende  Orgel der Welt.&lt;br /&gt;
Ganze 36,7 Tonnen hängen an vier 30 mm dicken Stahlseilen.&lt;br /&gt;
Maße:&lt;br /&gt;
Höhe: 18 Meter&lt;br /&gt;
Breite: 7,7 Meter&lt;br /&gt;
Tiefe: 2,5 Meter&lt;br /&gt;
&lt;br /&gt;
==== Geschichte ====&lt;br /&gt;
&lt;br /&gt;
ca. 1250: Zerstörung des alten Doms durch Stadtbrand&lt;br /&gt;
1273: Neubau des Doms im Westen&lt;br /&gt;
ca. 1285/90: Neuplanung als hochgotig&lt;br /&gt;
ca. 1320: alte dom wird abgebrochen; vom neuen Dom können 3 Chöre benutzt werden&lt;br /&gt;
1385-1415: Das Hauptportal im Westen wird vollendet&lt;br /&gt;
1442: Im Mittelschiff wird der Dachstuhl eingerichtet&lt;br /&gt;
ca. 1520: vorläufiges Ende der Bauarbeiten&lt;br /&gt;
1514-1538: Kreuzgang wird Ausgebaut&lt;br /&gt;
1613-1649:Der Dom wurde ausgebautund die barocke Umgestaltung auf eine Vierungskuppel&lt;br /&gt;
&lt;br /&gt;
===Bau===&lt;br /&gt;
Die Fenster der Westfassade wurden erst im 19. Jahrhundert ergänzt. 1967 und 1968 kamen die Fenster  im linken Nebenchor hinzu.&lt;br /&gt;
Der silberne Hochaltar wurde von Augsburger Künstler in den Jahren 1695 bis 1785 gebaut.&lt;br /&gt;
Eine Besonderheit sind die fünf gotischen Ziborienaltäre. Im Südchor entstand 2004 ein neuer Zelebrationsaltar , gebaut von Helmut. Langhammer.&lt;br /&gt;
&lt;br /&gt;
== Die Steinerne Brücke ==&lt;br /&gt;
&lt;br /&gt;
==== Besonderes über die Brücke ====&lt;br /&gt;
&lt;br /&gt;
Die in Regensburg in den Jahren 1135 - 1146 erbaute Steinbogenbrücke über die Donau gilt als die älteste Steinbrücke Deutschlands.&lt;br /&gt;
&lt;br /&gt;
Das Bauwerk war 800 Jahre die einzigste Donaubrücke in Regensburg (bis ca. 1935).&lt;br /&gt;
&lt;br /&gt;
Sie wurde von der UNESCO zum Weltkulturerbe erklärt.&lt;br /&gt;
&lt;br /&gt;
Für die Auszeichnung &amp;quot;Historisches Wahrzeichen der Ingenieurbaukunst in Deutschland&amp;quot; wurde die Steinerne Brücke 2007 nominiert.&lt;br /&gt;
&lt;br /&gt;
==== Die Entstehung ====&lt;br /&gt;
&lt;br /&gt;
Der Steinernen Brücke ging eine Holzbrücke zuvor, um den Händlern einen Weg in die Stadt zu ermöglichen. Diese musste allerdings oft erneuert werden, da sie gegen Wetter und Wind nicht standhaft war. Daher beschloss man, da die Stadt Regensburg zu dieser Zeit noch sehr wohlhabend war, eine Brücke aus Stein zu bauen. So begann der Bau der Steinernen Brücke im Jahre 1135, diese wurde innerhalb von 11 Jahren (!) im Jahre 1146 fertiggestellt. Für damalige Verhältnisse war das mit der stattlicher Höhe von 15 m, einer Breite von 8 m und einer Gesamtläge von 336 m eine bewundernswert kurze Bauspanne. Die Steinerne Brücke war ganze 800 Jahre die einzige Donaubrücke in Regensburg.&lt;br /&gt;
&lt;br /&gt;
==== Die Bauweise ====&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der Bögen der Brücke betrug ursprünglich 16, allerdings können heute nur noch 15 bewundert werden, da einer nur noch Ansatzweise zu erkennen ist. Der Durchmesser der Bögen betragt zwischen 10,5 m und 16,6 m. Die Breite der tragenden Brückenpfeiler beträgt ungefähr 5,85 m bis 7,4 m. Die Gesamtbaumasse der Brücke wird auf 100.000 t geschätzt.&lt;br /&gt;
&lt;br /&gt;
Bei der Fertigstellung der Steinernen Brücke im Jahre 1146 verfügte sie über drei Türme, von denen aber nur einer bis heute erhalten geblieben ist. Während eines Krieges wurden der mittlere und südliche Turm angezündet und fast vollständig niedergebrannt. Am Ende dieses Krieges wurden die beiden Türme 1648 wieder hergestellt, allerdings wurde der mittlere Turm 1784 abgebrochen, nachdem er durch einen Eisstoß fast zerstört worden war. Bei der Rückeroberung wurde der nördliche Turm 1809 beschädigt und 1810 schließlich abgebrochen. Den südlichen Turm kann man noch heute bewundern, da er, wie oben schon erwähnt, bis heute erhalten geblieben ist.&lt;br /&gt;
&lt;br /&gt;
Im Dreißigjährigen Krieg wurde 1633 das vierte, heute das dritte (sichtbare), Brückenjoch durch eine Sprengung zerstört und durch eine Holzzugbrücke ersetzt. Erst 1790 bis 1791 wurde diese Lücke wieder geschlossen, der Torbogen südlich neben dem Brückturm und die Brückenverbreitung wurden allerdings erst am Anfang des 20. Jahrhunderts gebaut. Im Jahr 1732 wurde die Fahrbahn der Brücke verbreitert, 1877 wurde die Brücke mit Granitplatten ausgestattet und die Verbindungsrampe, die ursprünglich aus Holz war, wurde durch Eisen ersetzt. Die Brücke wurde 1950 mit Brüstungen aus Betonplatten versehen. Bis heute wurden immer wieder Sanierungen unternommen und die Steinerne Brücke ist bis heute eine bekannte Sehenswürdigkeit.&lt;br /&gt;
&lt;br /&gt;
2009 wurde nach geeignetem Stein für eine Sanierung der Brücke gesucht, damit die Brücke ihrem Orginalzustand wieder glich, 2010 begann die Sanierung. Das Sanieren soll 2014 abgeschlossen werden, allerdings geht die Stadt Regensburg davon aus, dass die&lt;br /&gt;
&lt;br /&gt;
==== Die Sage der Brücke ====&lt;br /&gt;
&lt;br /&gt;
Es wird eine Sage erzählt, warum die Regensburger Brücke in nur 11 Sommern, eine damals kurze Bauweise, erbaut wurde.&lt;br /&gt;
In dieser Sage spielt auch der Regensburger Dom eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
Zwei Baumeister wetteten, wer schneller bauen könne.&lt;br /&gt;
Der Dombauer war jedoch schneller, sodass&lt;br /&gt;
sich der Brückenbauer mit dem Teufel verband, der ihm beim Brückenbau half.&lt;br /&gt;
Sein Lohn: Die ersten drei Seelen, die über die Brücke gingen.&lt;br /&gt;
Dadurch wurde die Brücke in 11 Jahren erbaut.&lt;br /&gt;
Nach dem Ende der Bauzeit hetzte der Brückenbauer Tiere über Brücke, die Seelen für den Teufel.&lt;br /&gt;
Dieser war darüber aber sehr zornig, sodass er versuchte, die Brücke einzureißen;&lt;br /&gt;
diese war jedoch so stabil, sodass er nur einen Knick in die  Brücke machte.&lt;br /&gt;
&lt;br /&gt;
==== Die Steinere Brücke als heutige Touristenattraktion ====&lt;br /&gt;
&lt;br /&gt;
Das faszinierende Bauwerk gilt neben dem Dom wohl als die bedeutenste Sehenswürdigkeit ganz Regensburgs. Die riesige Anzahl der Touristen bietet eine enorme Belastung für das mittelalterliche Bauwerk. So wurde 1997 auf Wunsch der Bürger hin der Privatverkehr auf der Brücke verboten, so wurde am 01.08.2008 beschlossen, dass auch der öffentliche Verkehr nicht mehr über die Brücke fahren darf. Denn aufgrund von mehreren professionellen Gutachten wurde eingesehen, dass das faszinierende Bauwerk weitere Strapazen dieser Art nicht mehr lange aushalten würde.&lt;br /&gt;
&lt;br /&gt;
==== Das &amp;quot;Bruckmandl&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;Bruckmandl&amp;quot; (Brückenmännchen) ist ein Statue, die auf der Steineren Brücke steht.&lt;br /&gt;
Ihm wurde Ende 2012 der rechte Arm vermutlich aus Zerstörungswut abgeschlagen;&lt;br /&gt;
dieser konnte trotz einer großen Suchaktion nicht mehr gefunden werden.&lt;br /&gt;
&lt;br /&gt;
== Geschichten aus der Bevölkerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Barbara Blomberg ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barbara Blomberg (1527-1597) war die Geliebte von Kaiser Karl V. (1500-1558) und die Mutter von Don Juan d`Austria (1547-1578), der auch der Sieger der Seeschlacht von Lepanto war. Sie war die Tochter des Gürtlermeisters Wolfgang Blomberg und seiner Frau Sibilla Blomberg und aufgrund ihrer Schönheit schon früh in ganz Regensburg bekannt. Ihre Großeltern besaßen ein Gasthaus (&#039;&#039;Zum Goldenen Kreuz&#039;&#039;), in welchem Karl V. am Reichstag 1546 oftmals einkehrte. Während dieser Zeit traf Karl oft auf Barbara, weil er häufig die Hintertür benutzte, um nicht gesehen zu werden. Er traf Barbara nun öfters und benutzte die Ausrede das Holzaroma des Bades im Haus von ihren Großeltern, welches er manchmal benutzte, würde ihm helfen zu entspannen. Er verliebte sich in Barbara und einige Zeit später wurde sie schwanger. Als der &amp;quot;immerwährende&amp;quot; Reichstag beendet war, musste Karl wieder gehen. Alles schien perfekt, doch es gab ein Problem: Barbara und Karl waren nicht verheiratet und als Barbara ihren Sohn gebar wurde sie von den Bewohnern Regensburgs gemieden, aber nicht verjagt. Nach einiger Zeit erinnerte sich Karl an Barbara und reiste drei Jahre nach Johanns (Don Juan d` Austria) Geburt nach Regensburg zurück, wo er die beiden aufsuchte und Johann ins Ausland bringen ließ. Barbara heiratete später dann Hironymus Kegel, der später den Posten eines Musterungs- und Kriegskommissars bekam. Sie lebten dann gemeinsam in einer Villa in Brüssel und hatten drei gemeinsame Kinder. Nach der Schlacht besuchte Johann Barbara, aber danach trennten sich ihre Wege, weil er sehr über ihren ausschweifenden Lebensstil verärgert war. Er starb 1569 und seine Familie hatte einen unsicheren finanziellen Stand. Aus diesem Grund gewährte der damalige Statthalter der Niederlande, Herzog von Alba, dem Sohn Karls V., Barbara und den anderen Kindern einen bemessenen Unterhalt. Somit erhielten sie eine angesehen Stellung in der Gesellschaft. Dafür sollte sie in ein spanisches Kloster umziehen, jedoch war Babara nicht bereit ihr freizügiges Leben aufzugeben.&lt;br /&gt;
Nachdem Treffen zwischen ihr und ihrem unehelichen Sohn im Jahre 1576 entschied sie sich doch in das Dominikanerinnenkloster in Kastilien. Nachdem ihr Sohn gestorben war, gestattete Phillip II. ihr ihren Wohnsitz frei zu wählen. Obwohl sie sich in Colindres niederließ, verweilte sie dort nicht lange und zog  1584 nach Amebrosero um. dort führte sie mit ihren Kindern und einigen Arbeitern einen kleinen Bauernhof.&lt;br /&gt;
Die so genannte „Madame Barbara de Blombergh“, starb mit siebzig Jahren auf ihrem Hof und den einzigen wertvollen Nachlass war ein Wappenring des Kaisers Karl V.&lt;br /&gt;
&lt;br /&gt;
===Don Juan de Austria (Ritter Johann von Österreich)===&lt;br /&gt;
&lt;br /&gt;
Er wurde am 24.Februar 1547 in Regensburg geboren und starb am 1. Oktober 1578 in der Provinz Namur.&lt;br /&gt;
Seine Eltern sind Kaiser Karl V. und Barbara Blomberg.&lt;br /&gt;
Johann wurde mit drei Jahren zum spanischen Hof geschafft, wo er aufwuchs und auch den Namen Don Juan erhielt. Er schlug eine militärische Laufbahn ein und wurde, nachdem er die Seeschlacht von Lepanto gewann, als Held gefeiert. Nach der Schlacht besuchte er Barbara, aber danach trennten sich ihre Wege, weil Don Juan sehr über ihren ausschweifenden Lebensstil verärgert war. Nach seinem Tod hatte seine Familie hatte einen unsicheren finanziellen Stand.&lt;br /&gt;
&lt;br /&gt;
== Das Rathaus und die Politik in Regensburg ==&lt;br /&gt;
&lt;br /&gt;
=== Das Alte Rathaus===&lt;br /&gt;
Das alte Rathaus ist der Sitz des Oberbürgermeisters.&lt;br /&gt;
Der Beginn des Baus des alten Rathauses war Mitte 13. Jahrhundert.&lt;br /&gt;
Im 18. Jahrhundert wurde der Anbau von 2 Gebäudeteilen fertiggestellt. In der Mitte des Gebäudes wurde ein Turm gebaut, welcher heutzutage immer noch komplett erhalten ist. Im Hof des Rathauses  ist der sogenannte Venusbrunnen gelegen, der in der zweiten Hälfte des 17. Jh. erbaut wurde. Am linken Teil des Bauwerkes ist der Tanzsaal zu sehen, der früher zwar auch als Tanzsaal benutzt wurde, aber später in diesen Räumen der sogenannten „Immerwährende Reichstag“ abgehalten wurde. Aus dem „neuen und barockem Rathaus“ besteht der 3. Häuserblock.&lt;br /&gt;
Heutzutage  befindet sich im alten Rathaus das Reichstagmuseum. Viele der Räume sind dem Original erhalten.&lt;br /&gt;
&lt;br /&gt;
==== Allgemeines ====&lt;br /&gt;
Das Alte Rathaus ist ein unter Denkmalschutz stehendes Gebäude, dass um 1380 erbaut wurde. Nach einigen An- und Umbauten besteht der dreiteilige Gebäudekomplex nun aus dem Rathausturm, dem Reichssaal und dem Barock-Rathaus.&lt;br /&gt;
&lt;br /&gt;
==== Der immerwährende Reichstag ====&lt;br /&gt;
Ungefähr im Jahre 1350 wurde der Reichstag zum ersten Mal von Kaiser Karl IV.im Reichssaal veranstaltet.&lt;br /&gt;
Die Reichstage fanden ab ca. 1590 immer in Regensburg statt.&lt;br /&gt;
Ab dem Jahre 1663 wurde dieser immerwährend im Reichssaal veranstaltet.&lt;br /&gt;
Der Reichstag wurde zuvor in verschiedenen Abständen und in immer anderen Städten abgehalten.&lt;br /&gt;
&lt;br /&gt;
=== Politik ===&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=681</id>
		<title>Regensburg im Mittelalter</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=681"/>
		<updated>2013-05-17T06:35:24Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Der Handel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Klasse 7b beschäftigte sich im Geschichtsunterricht lehrplangemäß mit dem Thema &amp;quot;Die Stadt im Mittelalter&amp;quot;. Dabei wurden die Themen wie Stadtentstehung, der Aufbau der Gesellschaft einer mittelalterlichen Stadt, die Zünfte und die Außenseiter einer Stadt näher besprochen. Ein &amp;quot;Gesicht&amp;quot; bekam das Ganze im Rahmen einer Exkursion nach Regensburg, wo sich die Schülerinnen und Schüler der Klasse 7b genauer über die bedeutenden Bauwerke der Stadt Regensburg und den Aufbau der Stadt im Mittelalter informierten. Im Rahmen des Informatikunterrichts, in dem im ersten Halbjahr die Themen Internet und Erstellen von Websites auf dem Programm standen, präsentieren die Schülerinnen und Schüler ihre Ergebnisse nun auf unserem Schul-Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Lage Regensburgs, der Aufbau der Stadt und der Handel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die geographische Lage ===&lt;br /&gt;
&lt;br /&gt;
Regensburg liegt in der heutigen Oberpfalz( Deutschland,Bayern ) und liegt somit ganz in der Nähe des bayerischen Waldes und dem Gäuboden ,der auch die Donauebene gennant wird.&lt;br /&gt;
Außerdem liegt Regensburg an der Donau und  zwei Nebenflüssen Naab und Regen.Von dem zuletzt genannten Fluss stammt der Name ab.&lt;br /&gt;
Da die Stadt eine der wenigen war, wo man wegen einer Brücke den Fluss überqueren konnte.Dadurch siedelten sich dort viele Leute an ,deswegen wuchs Regensburg rasant.&lt;br /&gt;
&lt;br /&gt;
=== Der Aufbau der Stadt ===&lt;br /&gt;
&lt;br /&gt;
==== Die Stadt ====&lt;br /&gt;
Regensburg wurde von den Römern unter dem Namen &amp;quot;Castra Regina&amp;quot; (Das am Regen gelegene Lager) gegründet. Später wurde Regensburg Reichsstadt (Stadt die nur dem Kaiser untersteht); deswegen zahlten die Einwohner nur dem Kaiser Steuern. Weil der bayerische Herzog Albrecht IV. auch Steuern einziehen wollte, errichtete er die Gegenstadt &amp;quot;Stadt am Hof&amp;quot;. Der bayerische Herzog gab den Einwohnern auch  Stadtrechte, aber dennoch wollte dort niemand leben. Ein wichtiger Punkt ist ,dass die Steinerne Brücke eine der wenigen Brücken über die Donau war (die einzige von Regensburg bis Ulm), deswegen wurde Regensburg reich durch den Handel.Der heutige Neupfarrplatz war im Mittelalter das Ghetto(abgetrenntes Judenviertel).&lt;br /&gt;
&lt;br /&gt;
==== Häuser ====&lt;br /&gt;
&lt;br /&gt;
=== Der Handel ===&lt;br /&gt;
Zuerst wurde ein Lager namens Castra Regina von den Römern gegründet. Dort siedelte sich dann auch das normale Volk an und so wurde aus dem Lager schnell eine Stadt, deshalb begann dort der Handel schon sehr früh. Da Regensburg einen Flussübergang hat, mussten viele Händler, um auf die andere Seite des Flusses zu kommen durch Regesburg hindurch, wodurch die Regensburger von den Händlern hohe Steuern verlangen konnten. Der 3. Vorteil ist, dass Regensburg an einem Fluss liegt, wodurch viele Waren verschifft werden konnten. Dank dieser guten Lage an den Flüssen und der Brücke über den Fluss konnte Regensburgs Handel aufblühen.&lt;br /&gt;
&lt;br /&gt;
== Der Dom ==&lt;br /&gt;
==== Allgemein ====&lt;br /&gt;
Die Gesamtlänge innen beträgt 86,00 Meter,&lt;br /&gt;
die Breite innen beträgt 34,80 Meter. &lt;br /&gt;
Um 700 wurde die erste Bischofskirche an der Stelle der heutigen Dompfarrkirche Niedermünster errichtet.&lt;br /&gt;
&lt;br /&gt;
==== Bedeutung ====&lt;br /&gt;
Der Regensburger Dom ist das bedeutendste Bauwerk der süddeutschen Gotik.&lt;br /&gt;
Der Dom ist auch die Ruhestätte berühmter Bishöfe wie zum Beispiel Johann Michael Sailer (1829-1832) ,Georg Michael Wittmann (1832–1833) und Erzbischof Dr. Michael Buchberger.&lt;br /&gt;
Am 13. September 2006 besuchte Papst Benedikt XVI. den Dom und hielt dort ein Abendlob ab .&lt;br /&gt;
&lt;br /&gt;
==== Orgeln ====&lt;br /&gt;
2009 baute die Firma Rieger Orgelbau eine neue Hauptorgel in den Regensburger Dom, die aus 80 Registern auf 4 Manuale und Pedal besteht. Es ist die größte freihängende  Orgel der Welt.&lt;br /&gt;
Ganze 36,7 Tonnen hängen an vier 30 mm dicken Stahlseilen.&lt;br /&gt;
Maße:&lt;br /&gt;
Höhe: 18 Meter&lt;br /&gt;
Breite: 7,7 Meter&lt;br /&gt;
Tiefe: 2,5 Meter&lt;br /&gt;
&lt;br /&gt;
==== Geschichte ====&lt;br /&gt;
&lt;br /&gt;
ca. 1250: zerstörung des alten Doms durch Stadtbrand&lt;br /&gt;
1273: neubau des Doms im Westen&lt;br /&gt;
ca. 1285/90: Neuplanung als hochgotig&lt;br /&gt;
ca. 1320: alte dom wird abgebrochen; vom neuen Dom können 3 Chöre benutzt werden&lt;br /&gt;
1385-1415: Das Hauptportal im Westen wird vollendet&lt;br /&gt;
1442: Im Mittelschiff wird der Dachstuhl eingerichtet&lt;br /&gt;
ca. 1520: vorläufiges Ende der Bauarbeiten&lt;br /&gt;
1514-1538: Kreuzgang wird Ausgebaut&lt;br /&gt;
1613-1649:Der Dom wurde ausgebautund die barocke Umgestaltung auf eine Vierungskuppel&lt;br /&gt;
&lt;br /&gt;
===Bau===&lt;br /&gt;
Die Fenster der Westfassade wurden erst im 19. Jahrhundert ergänzt. 1967 und 1968 kamen die Fenster  im linken Nebenchor hinzu.&lt;br /&gt;
Der silberne Hochaltar wurde von Augsburger Künstler in den Jahren 1695 bis 1785 gebaut.&lt;br /&gt;
&lt;br /&gt;
== Die Steinerne Brücke ==&lt;br /&gt;
&lt;br /&gt;
==== Besonderes über die Brücke ====&lt;br /&gt;
&lt;br /&gt;
Die in Regensburg in den Jahren 1135 - 1146 erbaute Steinbogenbrücke über die Donau gilt als die älteste Steinbrücke Deutschlands.&lt;br /&gt;
&lt;br /&gt;
Das Bauwerk war 800 Jahre die einzigste Donaubrücke in Regensburg (bis ca. 1935).&lt;br /&gt;
&lt;br /&gt;
Sie wurde von der UNESCO zum Weltkulturerbe erklärt.&lt;br /&gt;
&lt;br /&gt;
Für die Auszeichnung &amp;quot;Historisches Wahrzeichen der Ingenieurbaukunst in Deutschland&amp;quot; wurde die Steinerne Brücke 2007 nominiert.&lt;br /&gt;
&lt;br /&gt;
==== Die Entstehung ====&lt;br /&gt;
&lt;br /&gt;
Der Steinernen Brücke ging eine Holzbrücke zuvor, um den Händlern einen Weg in die Stadt zu ermöglichen. Diese musste allerdings oft erneuert werden, da sie gegen Wetter und Wind nicht standhaft war. Daher beschloss man, da die Stadt Regensburg zu dieser Zeit noch sehr wohlhabend war, eine Brücke aus Stein zu bauen. So begann der Bau der Steinernen Brücke im Jahre 1135, diese wurde innerhalb von 11 Jahren (!) im Jahre 1146 fertiggestellt. Für damalige Verhältnisse war das mit der stattlicher Höhe von 15 m, einer Breite von 8 m und einer Gesamtläge von 336 m eine bewundernswert kurze Bauspanne. Die Steinerne Brücke war ganze 800 Jahre die einzige Donaubrücke in Regensburg.&lt;br /&gt;
&lt;br /&gt;
==== Die Bauweise ====&lt;br /&gt;
&lt;br /&gt;
Bei der Fertigstellung der Steinernen Brücke im Jahre 1146 verfügte sie über drei Türme, von denen aber nur einer bis heute erhalten geblieben ist. Während eines Krieges wurden der mittlere und südliche Turm angezündet und fast vollständig niedergebrannt. Am Ende dieses Krieges wurden die beiden Türme 1648 wieder hergestellt, allerdings wurde der mittlere Turm 1784 abgebrochen, nachdem er durch einen Eisstoß fast zerstört worden war. Bei der Rückeroberung wurde der nördliche Turm 1809 beschädigt und 1810 schließlich abgebrochen. Den südlichen Turm kann man noch heute bewundern, da er, wie oben schon erwähnt, bis heute erhalten geblieben ist.&lt;br /&gt;
&lt;br /&gt;
Im Dreißigjährigen Krieg wurde 1633 das vierte, heute das dritte (sichtbare), Brückenjoch durch eine Sprengung zerstört und durch eine Holzzugbrücke ersetzt. Erst 1790 bis 1791 wurde diese Lücke wieder geschlossen, der Torbogen südlich neben dem Brückturm und die Brückenverbreitung wurden allerdings erst am Anfang des 20. Jahrhunderts gebaut. Im Jahr 1732 wurde die Fahrbahn der Brücke verbreitert, 1877 wurde die Brücke mit Granitplatten ausgestattet und die Verbindungsrampe, die ursprünglich aus Holz war, wurde durch Eisen ersetzt. Die Brücke wurde 1950 mit Brüstungen aus Betonplatten versehen. Bis heute wurden immer wieder Sanierungen unternommen und die Steinerne Brücke ist bis heute eine bekannte Sehenswürdigkeit.&lt;br /&gt;
&lt;br /&gt;
2009 wurde nach geeignetem Stein für eine Sanierung der Brücke gesucht, damit die Brücke ihrem Orginalzustand wieder glich, 2010 begann die Sanierung. Das Sanieren soll 2014 abgeschlossen werden, allerdings geht die Stadt Regensburg davon aus, dass die&lt;br /&gt;
&lt;br /&gt;
==== Die Sage der Brücke ====&lt;br /&gt;
&lt;br /&gt;
Es wird eine Sage erzählt, warum die Regensburger Brücke in nur 11 Sommern, eine damals kurze Bauweise, erbaut wurde.&lt;br /&gt;
In dieser Sage spielt auch der Regensburger Dom eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
Zwei Baumeister wetteten, wer schneller bauen könne.&lt;br /&gt;
Der Dombauer war jedoch schneller, sodass&lt;br /&gt;
sich der Brückenbauer mit dem Teufel verband, der ihm beim Brückenbau half.&lt;br /&gt;
Sein Lohn: Die ersten drei Seelen, die über die Brücke gingen.&lt;br /&gt;
Dadurch wurde die Brücke in 11 Jahren erbaut.&lt;br /&gt;
Nach dem Ende der Bauzeit hetzte der Brückenbauer Tiere über Brücke, die Seelen für den Teufel.&lt;br /&gt;
Dieser war darüber aber sehr zornig, sodass er versuchte, die Brücke einzureißen;&lt;br /&gt;
diese war jedoch so stabil, sodass er nur einen Knick in die  Brücke machte.&lt;br /&gt;
&lt;br /&gt;
==== Die Steinere Brücke als heutige Touristenattraktion ====&lt;br /&gt;
&lt;br /&gt;
Das faszinierende Bauwerk gilt neben dem Dom wohl als die bedeutenste Sehenswürdigkeit ganz Regensburgs. Die riesige Anzahl der Touristen bietet eine enorme Belastung für das mittelalterliche Bauwerk. So wurde 1997 auf Wunsch der Bürger hin der Privatverkehr auf der Brücke verboten, so wurde am 01.08.2008 beschlossen, dass auch der öffentliche Verkehr nicht mehr über die Brücke fahren darf. Denn aufgrund von mehreren professionellen Gutachten wurde eingesehen, dass das faszinierende Bauwerk weitere Strapazen dieser Art nicht mehr lange aushalten würde.&lt;br /&gt;
&lt;br /&gt;
==== Das &amp;quot;Bruckmandl&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;Bruckmandl&amp;quot; (Brückenmännchen) ist ein Statue auf der Steineren Brücke.&lt;br /&gt;
Ihm wurde Ende 2012 der rechte Arm aus (vermutlich) Zerstörungswut abgeschlagen&lt;br /&gt;
und konnte trotz einer großen Suchaktion nicht mehr gefunden werden.&lt;br /&gt;
&lt;br /&gt;
== Geschichten aus der Bevölkerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Barbara Blomberg ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barbara Blomberg (1527-1597) war die Geliebte von Kaiser Karl V. (1500-1558) und die Mutter von Don Juan d`Austria (1547-1578), der auch der Sieger der Seeschlacht von Lepanto war. Sie war die Tochter des Gürtlermeisters Wolfgang Blomberg und seiner Frau Sibilla Blomberg und aufgrund ihrer Schönheit schon früh in ganz Regensburg bekannt. Ihre Großeltern besaßen ein Gasthaus (&#039;&#039;Zum Goldenen Kreuz&#039;&#039;), in welchem Karl V. am Reichstag 1546 oftmals einkehrte. Während dieser Zeit traf Karl oft auf Barbara, weil er häufig die Hintertür benutzte, um nicht gesehen zu werden. Er traf Barbara nun öfters und benutzte die Ausrede das Holzaroma des Bades im Haus von ihren Großeltern, welches er manchmal benutzte, würde ihm helfen zu entspannen. Er verliebte sich in Barbara und einige Zeit später wurde sie schwanger. Als der &amp;quot;immerwährende&amp;quot; Reichstag beendet war, musste Karl wieder gehen. Alles schien perfekt, doch es gab ein Problem: Barbara und Karl waren nicht verheiratet und als Barbara ihren Sohn gebar wurde sie von den Bewohnern Regensburgs gemieden, aber nicht verjagt. Nach einiger Zeit erinnerte sich Karl an Barbara und reiste drei Jahre nach Johanns (Don Juan d` Austria) Geburt nach Regensburg zurück, wo er die beiden aufsuchte und Johann ins Ausland bringen ließ. Barbara heiratete später dann Hironymus Kegel, der später den Posten eines Musterungs- und Kriegskommissars bekam. Sie lebten dann gemeinsam in einer Villa in Brüssel und hatten drei gemeinsame Kinder. Johann wuchs am spanischen Hof auf, wo er auch den Namen Don Juan erhielt. Er schlug eine militärische Laufbahn ein und wurde, nachdem er die Seeschlacht von Lepanto gewann, als Held gefeiert. Nach der Schlacht besuchte er Barbara, aber danach trennten sich ihre Wege, weil Don Juan sehr über ihren ausschweifenden Lebensstil verärgert war. Er starb 1569 und seine Familie hatte einen unsicheren finanziellen Stand. Aus diesem Grund gewährte der damalige Statthalter der Niederlande, Herzog von Alba, dem Sohn Karls V., Barbara und den anderen Kindern einen bemessenen Unterhalt. Somit erhielten sie eine angesehen Stellung in der Gesellschaft. Dafür sollte sie in ein spanisches Kloster umziehen, jedoch war Babara nicht bereit ihr freizügiges Leben aufzugeben.&lt;br /&gt;
Nachdem Treffen zwischen ihr und ihrem unehelichen Sohn im Jahre 1576 entschied sie sich doch in das Dominikanerinnenkloster in Kastilien. Nachdem ihr Sohn gestorben war, gestattete Phillip II. ihr ihren Wohnsitz frei zu wählen. Obwohl sie sich in Colindres niederließ, verweilte sie dort nicht lange und zog  1584 nach Amebrosero um. dort führte sie mit ihren Kindern und einigen Arbeitern einen kleinen Bauernhof.&lt;br /&gt;
Die so genannte „Madame Barbara de Blombergh“, starb mit Jahren auf ihrem Hof und den einzigen wertvollen Nachlass war ein Wappenring des Kaisers Karl V.&lt;br /&gt;
&lt;br /&gt;
===Don Juan de Austria (Ritter Johann von Österreich)===&lt;br /&gt;
&lt;br /&gt;
Er wurde am 24.Februar 1547 in Regensburg geboren und starb am 1. Oktober 1578 in der Provinz Namur.&lt;br /&gt;
&lt;br /&gt;
== Das Rathaus und die Politik in Regensburg ==&lt;br /&gt;
&lt;br /&gt;
=== Das Alte Rathaus===&lt;br /&gt;
Das alte Rathaus ist der Sitz des Oberbürgermeisters.&lt;br /&gt;
Ca. im Jahre 1360 wurde der Reichssaalbau als Tanzsaal errichtet.&lt;br /&gt;
&lt;br /&gt;
==== Allgemeines ====&lt;br /&gt;
Das Alte Rathaus ist ein unter Denkmalschutz stehendes Gebäude, dass um 1380 erbaut wurde. Nach einigen An- und Umbauten besteht der dreiteilige Gebäudekomplex nun aus dem Rathausturm, dem Reichssaal und dem Barock-Rathaus.&lt;br /&gt;
&lt;br /&gt;
==== Der immerwährende Reichstag ====&lt;br /&gt;
Ungefähr im Jahre 1350 wurde der Reichstag zum ersten Mal von Kaiser Karl IV.im Reichssaal veranstaltet.&lt;br /&gt;
Die Reichstage fanden ab ca. 1590 immer in Regensburg statt.&lt;br /&gt;
Ab dem Jahre 1663 wurde dieser immerwährend im Reichssaal veranstaltet.&lt;br /&gt;
Der Reichstag wurde zuvor in verschiedenen Abständen und in immer anderen Städten abgehalten.&lt;br /&gt;
&lt;br /&gt;
=== Politik ===&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=661</id>
		<title>Regensburg im Mittelalter</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=661"/>
		<updated>2013-05-17T06:28:46Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Der Handel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Klasse 7b beschäftigte sich im Geschichtsunterricht lehrplangemäß mit dem Thema &amp;quot;Die Stadt im Mittelalter&amp;quot;. Dabei wurden die Themen wie Stadtentstehung, der Aufbau der Gesellschaft einer mittelalterlichen Stadt, die Zünfte und die Außenseiter einer Stadt näher besprochen. Ein &amp;quot;Gesicht&amp;quot; bekam das Ganze im Rahmen einer Exkursion nach Regensburg, wo sich die Schülerinnen und Schüler der Klasse 7b genauer über die bedeutenden Bauwerke der Stadt Regensburg und den Aufbau der Stadt im Mittelalter informierten. Im Rahmen des Informatikunterrichts, in dem im ersten Halbjahr die Themen Internet und Erstellen von Websites auf dem Programm standen, präsentieren die Schülerinnen und Schüler ihre Ergebnisse nun auf unserem Schul-Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Lage Regensburgs, der Aufbau der Stadt und der Handel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die geographische Lage ===&lt;br /&gt;
&lt;br /&gt;
Regensburg liegt in der heutigen Oberpfalz( Deutschland,Bayern ) und liegt somit ganz in der Nähe des bayerischen Waldes und dem Gäuboden ,der auch die Donauebene gennant wird.&lt;br /&gt;
Außerdem liegt Regensburg an der Donau und  zwei Nebenflüssen Naab und Regen.Von dem zuletzt genannten Fluss stammt der Name ab.&lt;br /&gt;
Da die Stadt eine der wenigen war, wo man wegen einer Brücke den Fluss überqueren konnte.Dadurch siedelten sich dort viele Leute an ,deswegen wuchs Regensburg rasant.&lt;br /&gt;
&lt;br /&gt;
=== Der Aufbau der Stadt ===&lt;br /&gt;
&lt;br /&gt;
==== Die Stadt ====&lt;br /&gt;
Regensburg wurde von den Römern unter dem Namen &amp;quot;Castra Regina&amp;quot; (Das am Regen gelegene Lager) gegründet. Später wurde Regensburg Reichsstadt (Stadt die nur dem Kaiser untersteht); deswegen zahlten die Einwohner nur dem Kaiser Steuern. Weil der bayerische Herzog Albrecht IV. auch Steuern einziehen wollte, errichtete er die Gegenstadt &amp;quot;Stadt am Hof&amp;quot;. Der bayerische Herzog gab den Einwohnern auch  Stadtrechte, aber dennoch wollte dort niemand leben. Ein wichtiger Punkt ist ,dass die Steinerne Brücke eine der wenigen Brücken über die Donau war (die einzige von Regensburg bis Ulm), deswegen wurde Regensburg reich durch den Handel.&lt;br /&gt;
&lt;br /&gt;
==== Häuser ====&lt;br /&gt;
&lt;br /&gt;
=== Der Handel ===&lt;br /&gt;
Zuerst wurde ein Lager namens Castra Regina von den Römern gegründet. Dort siedelte sich dann auch das normale Volk an und so wurde aus dem Lager schnell eine Stadt, deshalb begann dort der Handel schon sehr früh. Da Regensburg einen Flussübergang hat, mussten viele Händler, um auf die andere Seite des Flusses zu kommen durch Regesburg hindurch, wodurch die Regensburger von den Händlern hohe Steuern verlangen konnten. Der 3. Vorteil ist, dass Regensburg an einem Fluss liegt, wodurch viele Waren verschifft werden konnten. Dank dieser guten Lage an den Flüssen und der Brücke über den Fluss konnte Regensburg´s Handel aufblühen.&lt;br /&gt;
&lt;br /&gt;
== Der Dom ==&lt;br /&gt;
==== Allgemein ====&lt;br /&gt;
Die Gesamtlänge innen beträgt 86,00 Meter,&lt;br /&gt;
die Breite innen beträgt 34,80 Meter&lt;br /&gt;
Um 700 wurde die erste Bischofskirche an der Stelle der heutigen Dompfarrkirche Niedermünster errichtet.&lt;br /&gt;
&lt;br /&gt;
==== Bedeutung ====&lt;br /&gt;
Der Regensburger Dom ist das bedeutendste Bauwerk der süddeutschen Gotik.&lt;br /&gt;
Der Dom ist auch die Ruhestätte berühmter Bishöfe wie zum Beispiel Johann Michael Sailer(1829-1832) ,Georg Michael Wittmann (1832–1833) und Erzbischof Dr. Michael Buchberger.&lt;br /&gt;
Am 13. September 2006 besuchte Papst Benedikt XVI. den Dom und hielt dort ein Abendlob ab .&lt;br /&gt;
&lt;br /&gt;
==== Orgeln ====&lt;br /&gt;
2009 baute die Firma Rieger Orgelbau eine neue Hauptorgel in den Regensburger Dom, die aus 80 Registern auf 4 Manuale und Pedal besteht. Es ist die größte freihängende  Orgel der Welt.&lt;br /&gt;
Ganze 36,7 Tonnen hängen an vier 30 mm dicken Stahlseilen.&lt;br /&gt;
Maße:&lt;br /&gt;
Höhe: 18 Meter&lt;br /&gt;
Breite: 7,7 Meter&lt;br /&gt;
Tiefe: 2,5 Meter&lt;br /&gt;
&lt;br /&gt;
==== Geschichte ====&lt;br /&gt;
&lt;br /&gt;
ca. 1250: zerstörung des alten Doms durch Stadtbrand&lt;br /&gt;
1273: neubau des Doms im Westen&lt;br /&gt;
ca. 1285/90: Neuplanung als hochgotig&lt;br /&gt;
ca. 1320: alte dom wird abgebrochen; vom neuen Dom können 3 Chöre benutzt werden&lt;br /&gt;
1385-1415: Das Hauptportal im Westen wird vollendet&lt;br /&gt;
1442: Im Mittelschiff wird der Dachstuhl eingerichtet&lt;br /&gt;
ca. 1520: vorläufiges Ende der Bauarbeiten&lt;br /&gt;
1514-1538: Kreuzgang wird Ausgebaut&lt;br /&gt;
1613-1649:&lt;br /&gt;
&lt;br /&gt;
== Die Steinerne Brücke ==&lt;br /&gt;
&lt;br /&gt;
==== Besonderes über die Brücke ====&lt;br /&gt;
&lt;br /&gt;
Die in Regensburg in den Jahren 1135 - 1146 erbaute Steinbogenbrücke über die Donau gilt als die älteste Steinbrücke Deutschlands.&lt;br /&gt;
&lt;br /&gt;
Das Bauwerk war 800 Jahre die einzigste Donaubrücke in Regensburg (bis ca. 1935).&lt;br /&gt;
&lt;br /&gt;
Sie wurde von der UNESCO zum Weltkulturerbe erklärt.&lt;br /&gt;
&lt;br /&gt;
Für die Auszeichnung &amp;quot;Historisches Wahrzeichen der Ingenieurbaukunst in Deutschland&amp;quot; wurde&lt;br /&gt;
&lt;br /&gt;
==== Die Entstehung ====&lt;br /&gt;
&lt;br /&gt;
Der Steinernen Brücke ging eine Holzbrücke zuvor, um den Händlern einen Weg in die Stadt zu ermöglichen. Diese musste allerdings oft erneuert werden, da sie gegen Wetter und Wind nicht standhaft war. Daher beschloss man, da die Stadt Regensburg zu dieser Zeit noch sehr wohlhabend war, eine Brücke aus Stein zu bauen. So begann der Bau der Steinernen Brücke im Jahre 1135, diese wurde innerhalb von 11 Jahren (!) im Jahre 1146 fertiggestellt. Für damalige Verhältnisse war das mit der stattlicher Höhe von 15 m, einer Breite von 8 m und einer Gesamtläge von 315 m eine bewundernswert kurze Bauspanne. Die Steinerne Brücke war ganze 800 Jahre die einzige Donaubrücke in Regensburg.&lt;br /&gt;
&lt;br /&gt;
==== Die Bauweise ====&lt;br /&gt;
&lt;br /&gt;
Bei der Fertigstellung der Steinernen Brücke im Jahre 1146 verfügte sie über drei Türme, von denen aber nur einer bis heute erhalten geblieben ist. Während eines Krieges wurden der mittlere und südliche Turm angezündet und fast vollständig niedergebrannt. Am Ende dieses Krieges wurden die beiden Türme 1648 wieder hergestellt, allerdings wurde der mittlere Turm 1784 abgebrochen, nachdem er durch einen Eisstoß fast zerstört worden war. Bei der Rückeroberung wurde der nördliche Turm 1809 beschädigt und 1810 schließlich abgebrochen. Den südlichen Turm kann man noch heute bewundern, da er, wie oben schon erwähnt, bis heute erhalten geblieben ist.&lt;br /&gt;
&lt;br /&gt;
Im Dreißigjährigen Krieg wurde 1633 das vierte, heute das dritte (sichtbare), Brückenjoch durch eine Sprengung zerstört und durch eine Holzzugbrücke ersetzt. Erst 1790 bis 1791 wurde diese Lücke wieder geschlossen, der Torbogen südlich neben dem Brückturm und die Brückenverbreitung wurden allerdings erst am Anfang des 20. Jahrhunderts gebaut. Im Jahr 1732 wurde die Fahrbahn der Brücke verbreitert, 1877 wurde die Brücke mit Granitplatten ausgestattet und die Verbindungsrampe, die ursprünglich aus Holz war, wurde durch Eisen ersetzt. Die Brücke wurde 1950 mit Brüstungen aus Betonplatten versehen. Bis heute wurden immer wieder Sanierungen unternommen und die Steinerne Brücke ist bis heute eine bekannte Sehenswürdigkeit.&lt;br /&gt;
&lt;br /&gt;
2009 wurde nach geeignetem Stein für eine Sanierung der Brücke gesucht, damit die Brücke ihrem Orginalzustand wieder glich, 2010 begann die Sanierung. Das Sanieren soll 2014 abgeschlossen werden, allerdings geht die Stadt Regensburg davon aus, dass die&lt;br /&gt;
&lt;br /&gt;
==== Die Sage der Brücke ====&lt;br /&gt;
&lt;br /&gt;
Es wird eine Sage erzählt, warum die Regensburger Brücke in nur 11 Sommern, eine damals kurze Bauweise, erbaut wurde.&lt;br /&gt;
In dieser Sage spielt auch der Regensburger Dom eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
Zwei Baumeister wetteten, wer schneller bauen könne.&lt;br /&gt;
Der Dombauer war jedoch schneller, sodass&lt;br /&gt;
sich der Brückenbauer mit dem Teufel verband, der ihm beim Brückenbau half.&lt;br /&gt;
Sein Lohn: Die ersten drei Seelen, die über die Brücke gingen.&lt;br /&gt;
Dadurch wurde die Brücke in 11 Jahren erbaut.&lt;br /&gt;
Nach dem Ende der Bauzeit hetzte der Brückenbauer Tiere über Brücke, die Seelen für den Teufel.&lt;br /&gt;
Dieser war darüber aber sehr zornig, sodass er versuchte, die Brücke einzureißen;&lt;br /&gt;
diese war jedoch so stabil, sodass er nur einen Knick in die  Brücke machte.&lt;br /&gt;
&lt;br /&gt;
==== Die Steinere Brücke als heutige Touristenattraktion ====&lt;br /&gt;
&lt;br /&gt;
Das faszinierende Bauwerk gilt wohl als die bedeutenste Sehenswürdigkeit ganz Regensburgs. Die riesige Anzahl der Touristen bietet eine enorme Belastung für das mittelalterliche Bauwerk. So wurde 1997 auf Wunsch der Bürger hin der Privatverkehr auf der Brücke verboten, so wurde am 01.08.2008 beschlossen, dass auch der öffentliche Verkehr nicht mehr über die Brücke fahren darf. Denn aufgrund von mehreren professionellen Gutachten wurde eingesehen, dass das faszinierende Bauwerk weitere Strapazen dieser Art nicht mehr lange aushalten würde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Das &amp;quot;Bruckmandl&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
== Geschichten aus der Bevölkerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Barbara Blomberg ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barbara Blomberg (1527-1597) war die Geliebte von Kaiser Karl V. (1500-1558) und die Mutter von Don Juan d`Austria (1547-1578), der auch der Sieger der Seeschlacht von Lepanto war. Sie war die Tochter des Gürtlermeisters Wolfgang Blomberg und seiner Frau Sibilla Blomberg und aufgrund ihrer Schönheit schon früh in ganz Regensburg bekannt. Ihre Großeltern besaßen ein Gasthaus (&#039;&#039;Zum Goldenen Kreuz&#039;&#039;), in welchem Karl V. am Reichstag 1546 oftmals einkehrte. Während dieser Zeit traf Karl oft auf Barbara, weil er häufig die Hintertür benutzte, um nicht gesehen zu werden. Er traf Barbara nun öfters und benutzte die Ausrede das Holzaroma des Bades im Haus von ihren Großeltern, welches er manchmal benutzte, würde ihm helfen zu entspannen. Er verliebte sich in Barbara und einige Zeit später wurde sie schwanger. Als der &amp;quot;immerwährende&amp;quot; Reichstag beendet war, musste Karl wieder gehen. Alles schien perfekt, doch es gab ein Problem: Barbara und Karl waren nicht verheiratet und als Barbara ihren Sohn gebar wurde sie von den Bewohnern Regensburgs gemieden, aber nicht verjagt. Nach einiger Zeit erinnerte sich Karl an Barbara und reiste drei Jahre nach Johanns (Don Juan d` Austria) Geburt nach Regensburg zurück, wo er die beiden aufsuchte und Johann ins Ausland bringen ließ. Barbara heiratete später dann Hironymus Kegel, der später den Posten eines Musterungs- und Kriegskommissars bekam. Sie lebten dann gemeinsam in einer Villa in Brüssel und hatten drei gemeinsame Kinder. Johann wuchs am spanischen Hof auf, wo er auch den Namen Don Juan erhielt. Er schlug eine militärische Laufbahn ein und wurde, nachdem er die Seeschlacht von Lepanto gewann, als Held gefeiert. Nach der Schlacht besuchte er Barbara, aber danach trennten sich ihre Wege, weil Don Juan sehr über ihren ausschweifenden Lebensstil verärgert war. Er starb 1569 und seine Familie hatte einen unsicheren finanziellen Stand. Aus diesem Grund gewährte der damalige Statthalter der Niederlande, Herzog von Alba, dem Sohn Karls V., Barbara und den anderen Kindern einen bemessenen Unterhalt. Somit erhielten sie eine angesehen Stellung in der Gesellschaft. Dafür sollte sie in ein spanisches Kloster umziehen, jedoch war Babara nicht bereit ihr freizügiges Leben aufzugeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Don Juan de Austria (Johann von Österreich)===&lt;br /&gt;
&lt;br /&gt;
== Das Rathaus und die Politik in Regensburg ==&lt;br /&gt;
&lt;br /&gt;
=== Das Alte Rathaus===&lt;br /&gt;
Das alte Rathaus ist der Sitz des Oberbürgermeisters.&lt;br /&gt;
Ca. im Jahre 1360 wurde der Reichssaalbau als Tanzsaal errichtet.&lt;br /&gt;
&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Das Alte Rathaus ist ein unter Denkmalschutz stehendes Gebäude, dass um 1380 erbaut wurde. Nach einigen An- und Umbauten besteht der dreiteilige Gebäudekomplex nun aus dem Rathausturm, dem Reichssaal und dem Barock-Rathaus.&lt;br /&gt;
&lt;br /&gt;
=== Der immerwährende Reichstag ===&lt;br /&gt;
Ungefähr im Jahre 1350 wurde der Reichstag zum ersten Mal von Kaiser Karl IV.im Reichssaal veranstaltet.&lt;br /&gt;
Die Reichstage fanden ab ca. 1590 immer in Regensburg statt.&lt;br /&gt;
Ab dem Jahre 1663 wurde dieser immerwährend im Reichssaal veranstaltet.&lt;br /&gt;
Der Reichstag wurde zuvor in verschiedenen Abständen und in immer anderen Städten abgehalten.&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=630</id>
		<title>Regensburg im Mittelalter</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=630"/>
		<updated>2013-05-17T06:20:00Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Der Handel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Klasse 7b beschäftigte sich im Geschichtsunterricht lehrplangemäß mit dem Thema &amp;quot;Die Stadt im Mittelalter&amp;quot;. Dabei wurden die Themen wie Stadtentstehung, der Aufbau der Gesellschaft einer mittelalterlichen Stadt, die Zünfte und die Außenseiter einer Stadt näher besprochen. Ein &amp;quot;Gesicht&amp;quot; bekam das Ganze im Rahmen einer Exkursion nach Regensburg, wo sich die Schülerinnen und Schüler der Klasse 7b genauer über die bedeutenden Bauwerke der Stadt Regensburg und den Aufbau der Stadt im Mittelalter informierten. Im Rahmen des Informatikunterrichts, in dem im ersten Halbjahr die Themen Internet und Erstellen von Websites auf dem Programm standen, präsentieren die Schülerinnen und Schüler ihre Ergebnisse nun auf unserem Schul-Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Lage Regensburgs, der Aufbau der Stadt und der Handel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die geographische Lage ===&lt;br /&gt;
&lt;br /&gt;
Regensburg liegt in der heutigen Oberpfalz( Deutschland,Bayern ) und liegt somit ganz in der Nähe des bayerischen Waldes und dem Gäuboden ,der auch die Donauebene gennant wird.&lt;br /&gt;
Außerdem liegt Regensburg an der Donau und  zwei Nebenflüssen Naab und Regen.Von dem zuletzt genannten Fluss stammt der Name ab.&lt;br /&gt;
Da die Stadt eine der wenigen war, wo man wegen einer Brücke den Fluss überqueren konnte.Dadurch siedelten sich dort viele Leute an ,deswegen wuchs Regensburg rasant.&lt;br /&gt;
&lt;br /&gt;
=== Der Aufbau der Stadt ===&lt;br /&gt;
Regensburg wurde von den Römern unter dem Namen &amp;quot;Castra Regina&amp;quot; (Das am Regen gelegene Lager) gegründet. Später wurde Regensburg Reichsstadt (Stadt die nur dem Kaiser untersteht); deswegen zahlten die Einwohner nur dem Kaiser Steuern. Weil der bayerische Herzog Albrecht IV. auch Steuern einziehen wollte, errichtete er die Gegenstadt &amp;quot;Stadt am Hof&amp;quot;. Der bayerische Herzog gab den Einwohnern auch  Stadtrechte, aber dennoch wollte dort niemand leben. Ein wichtiger Punkt ist ,dass die Steinerne Brücke eine der wenigen Brücken über die Donau war (die einzige von Regensburg bis Ulm), deswegen wurde Regensburg reich durch den Handel.&lt;br /&gt;
&lt;br /&gt;
=== Der Handel ===&lt;br /&gt;
Zuerst wurde ein Lager namens Castra Regina von den Römern gegründet. Dort siedelte sich dann auch das normale Volk an und so wurde aus dem Lager schnell eine Stadt, deshalb begann dort der Handel schon sehr früh. Da Regensburg einen Flussübergang hat, mussten viele Händler, um auf die andere Seite des Flusses zu kommen durch Regesburg hindurch, wodurch die Regensburger von den Händlern hohe Steuern verlangen konnten. Der 3. Vorteil ist, dass Regensburg an einem Fluss liegt, wodurch viele Waren verschifft werden konnten.&lt;br /&gt;
&lt;br /&gt;
== Der Dom ==&lt;br /&gt;
==== Allgemein ====&lt;br /&gt;
Die Gesamtlänge innen beträgt 86,00 Meter,&lt;br /&gt;
die Breite innen beträgt 34,80 Meter&lt;br /&gt;
&lt;br /&gt;
Um 700 wurde die erste Bischofskirche an der Stelle der heutigen Dompfarrkirche Niedermünster errichtet. Der Neubau wurde 1273 gestartet ,weil der alte Dom  von einem Feuer ,das vermutlich 1250 ausbrach, zerstört wurde.&lt;br /&gt;
In den Jahren 1285 bis 1290 war die hochgtische Neuplanung. Als die drei Chöre des neuen Doms genutzt werden können, wurde der alte Dom abgebrochen. Das aufwendige Hauptportal im Westen wurde 1385 bis 1415 vollendet.&lt;br /&gt;
&lt;br /&gt;
===Bedeutung===&lt;br /&gt;
Der Regensburger Dom ist das bedeutendste Bauwerk der süddeutschen Gotik.&lt;br /&gt;
Der Dom ist auch die Ruhestätte berühmter Bishöfe wie zum Beispiel Johann Michael Sailer(1829-1832) oder Konrad Eberhard.&lt;br /&gt;
Am 13. September 2006 besuchte Papst Benedikt XVI. den Dom.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Orgeln===&lt;br /&gt;
2009 baute die Firma  Rieger Orgelbau eine neue Hauptorgel in den Regensburger Dom ,die aus 80 Registern auf 4 Manuale und Pedal besteht.Es ist die größte freihängende  Orgel der Welt .&lt;br /&gt;
Ganze 36,7 tonnen hängen an vier 30 mm dicken Stahlseilen.&lt;br /&gt;
Maße:&lt;br /&gt;
Höhe: 18 Meter&lt;br /&gt;
Breite : 7,7 Meter&lt;br /&gt;
Tiefe:2,5 Meter&lt;br /&gt;
&lt;br /&gt;
== Die Steinerne Brücke ==&lt;br /&gt;
&lt;br /&gt;
==== Besonderes über die Brücke ====&lt;br /&gt;
&lt;br /&gt;
Die in Regensburg in den Jahren 1135 - 1146 erbaute Steinbogenbrücke über die Donau gilt als die älteste Steinbrücke Deutschlands.&lt;br /&gt;
&lt;br /&gt;
Mit ihrer Gesamtlänge von 336m, ihrer Breite von 8m und ihrer Höhe von ca. 15m darf sie nur von Fußgängern und Radfahrern genutzt werden. &lt;br /&gt;
&lt;br /&gt;
Sie wurde von der UNESCO zum Weltkulturerbe erklärt.&lt;br /&gt;
&lt;br /&gt;
Den Titel &amp;quot;Historisches Wahrzeichen der Ingenieurbaukunst in Deutschland&amp;quot; erhielt die Brücke 2007.&lt;br /&gt;
&lt;br /&gt;
==== Die Entstehung ====&lt;br /&gt;
&lt;br /&gt;
Der Steinernen Brücke ging eine Holzbrücke zuvor, um den Händlern einen Weg in die Stadt zu ermöglichen. Diese musste allerdings oft erneuert werden, da sie gegen Wetter und Wind nicht standhaft war. Daher beschloss man, da die Stadt Regensburg zu dieser Zeit noch sehr wohlhabend war, eine Brücke aus Stein zu bauen. So begann der Bau der Steinernen Brücke im Jahre 1135, diese wurde innerhalb von 11 Jahren (!) im Jahre 1146 fertiggestellt. Für damalige Verhältnisse war das mit der stattlicher Höhe von 15 m, einer Breite von 8 m und einer Gesamtläge von 336 m eine bewundernswert kurze Bauspanne. Die Steinerne Brücke war ganze 800 Jahre die einzige Donaubrücke in Regensburg.&lt;br /&gt;
&lt;br /&gt;
==== Die Bauweise ====&lt;br /&gt;
&lt;br /&gt;
Bei der Fertigstellung der Steinernen Brücke im Jahre 1146 verfügte sie über drei Türme, von denen aber nur einer bis heute erhalten geblieben ist. Während eines Krieges wurden der mittlere und südliche Turm angezündet und fast vollständig niedergebrannt. Am Ende dieses Krieges wurden die beiden Türme 1648 wieder hergestellt, allerdings wurde der mittlere Turm 1784 abgebrochen, nachdem er durch einen Eisstoß fast zerstört worden war. Bei der Rückeroberung wurde der nördliche Turm 1809 beschädigt und 1810 schließlich abgebrochen. Den südlichen Turm kann man noch heute bewundern, da er, wie oben schon erwähnt, bis heute erhalten geblieben ist.&lt;br /&gt;
&lt;br /&gt;
Im Dreißigjährigen Krieg wurde 1633 das vierte, heute das dritte (sichtbare), Brückenjoch durch eine Sprengung zerstört und durch eine Holzzugbrücke ersetzt. Erst 1790 bis 1791 wurde diese Lücke wieder geschlossen, der Torbogen südlich neben dem Brückturm und die Brückenverbreitung wurden allerdings erst am Anfang des 20. Jahrhunderts gebaut. Im Jahr 1732 wurde die Fahrbahn der Brücke verbreitert, 1877 wurde die Brücke mit Granitplatten ausgestattet und die Verbindungsrampe, die ursprünglich aus Holz war, wurde durch Eisen ersetzt. Die Brücke wurde 1950 mit Brüstungen aus Betonplatten versehen. Bis heute wurden immer wieder Sanierungen unternommen und die Steinerne Brücke ist bis heute eine bekannte Sehenswürdigkeit.&lt;br /&gt;
&lt;br /&gt;
==== Die Sage der Brücke ====&lt;br /&gt;
&lt;br /&gt;
Es wird eine Sage erzählt, warum die Regensburger Brücke in nur 11 Sommern, eine damals kurze Bauweise, erbaut wurde.&lt;br /&gt;
In dieser Sage spielt auch der Regensburger Dom eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
Zwei Baumeister wetteten, wer schneller bauen könne.&lt;br /&gt;
Der Dombauer war jedoch schneller, sodass&lt;br /&gt;
sich der Brückenbauer mit dem Teufel verband, der ihm beim Brückenbau half.&lt;br /&gt;
Sein Lohn: Die ersten drei Seelen, die über die Brücke gingen.&lt;br /&gt;
Dadurch wurde die Brücke in 11 Jahren erbaut.&lt;br /&gt;
Nach dem Ende der Bauzeit hetzte der Brückenbauer Tiere über Brücke, die Seelen für den Teufel.&lt;br /&gt;
Dieser war darüber aber sehr zornig, sodass er versuchte, die Brücke einzureißen;&lt;br /&gt;
diese war jedoch so stabil, sodass er nur einen Knick in die  Brücke machte.&lt;br /&gt;
&lt;br /&gt;
==== Die Steinere Brücke als Touristenattraktion ====&lt;br /&gt;
&lt;br /&gt;
Das faszinierende Bauwerk gilt wohl als die bedeutenste Sehenswürdigkeit ganz Regensburgs.&lt;br /&gt;
Die Steinere Brücke wird jedes Jahr von Millionen von Besuchern besbesichtigt&lt;br /&gt;
und wird inzwischen als UNESCO-Welterbe bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Geschichten aus der Bevölkerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Barbara Blomberg ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barbara Blomberg (1527-1597) war die Geliebte von Kaiser Karl V. (1500-1558) und die Mutter von Don Juan d`Austria, der auch der Sieger der Seeschlacht von Lepanto war. Sie war die Tochter des Gürtlermeisters Wolfgang Blomberg und seiner Frau Sibilla Blomberg und aufgrund ihrer Schönheit schon früh in ganz Regensburg bekannt. Ihre Großeltern besaßen ein Gasthaus (&#039;&#039;Zum Goldenen Kreuz&#039;&#039;), in welchem Karl V. am Reichstag 1546 oftmals einkehrte. Während dieser Zeit traf Karl oft auf Barbara, weil er häufig die Hintertür benutzte, um nicht gesehen zu werden. Er traf Barbara nun öfters und benutzte die Ausrede das Holzaroma des Bades im Haus von ihren Großeltern, welches er manchmal benutzte, würde ihm helfen zu entspannen. Er verliebte sich in Barbara und einige Zeit später wurde sie schwanger. Als der &amp;quot;immerwährende&amp;quot; Reichstag beendet war, musste Karl wieder gehen. Alles schien perfekt, doch es gab ein Problem: Barbara und Karl waren nicht verheiratet und als Barbara ihren Sohn gebar wurde sie von den Bewohnern Regensburgs gemieden, aber nicht verjagt. Nach einiger Zeit erinnerte sich Karl an Barbara und reiste drei Jahre nach Johanns (Don Juan d` Austria) Geburt nach Regensburg zurück, wo er die beiden aufsuchte. Barbara heiratete später dann Hironymus Kegel, der später den Posten eines Musterungs- und Kriegskommissars bekam. Sie lebten dann gemeinsam in einer Villa in Brüssel und hatten drei gemeinsame Kinder. Johann wuchs am spanischen Hof auf, wo er auch den Namen Don Juan erhielt. Er schlug eine militärische Laufbahn ein und wurde, nachdem er die Seeschlacht von Lepanto gewann, als Held gefeiert. Nach der Schlacht besuchte er Barbara, aber danach trennten sich ihre Wege. Er starb 1569 und seine Familie hatte einen unsicheren finanziellen Stand. Aus diesem Grund gewährte der damalige Statthalter der Niederlande, Herzog von Alba, dem Sohn Karls V., Barbara und den anderen Kindern einen bemessenen Unterhalt. Somit erhielten sie eine angesehen Stellung in der Gesellschaft. Dafür sollte sie in ein spanisches Kloster umziehen, jedoch war Babara nicht bereit ihr freizügiges Leben aufzugeben.&lt;br /&gt;
&lt;br /&gt;
== Das Rathaus und die Politik in Regensburg ==&lt;br /&gt;
&lt;br /&gt;
=== Das Alte Rathaus===&lt;br /&gt;
Das alte Rathaus ist der Sitz des Oberbürgermeisters&lt;br /&gt;
&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Das Alte Rathaus ist ein unter Denkmalschutz stehendes Gebäude, dass um 1380 erbaut wurde. Nach einigen An- und Umbauten besteht der dreiteilige Gebäudekomplex nun aus dem Rathausturm, dem Reichssaal und dem Barock-Rathaus.&lt;br /&gt;
&lt;br /&gt;
=== Der immerwährende Reichstag ===&lt;br /&gt;
Ungefähr im Jahre 1350 wurde der Reichstag zum ersten Mal von Kaiser Karl IV.im Reichssaal veranstaltet.&lt;br /&gt;
Die Reichstage fanden ab ca. 1590 immer in Regensburg statt.&lt;br /&gt;
Ab dem Jahre 1660 wurde dieser immerwährend im Reichssaal veranstaltet.&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=627</id>
		<title>Regensburg im Mittelalter</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=627"/>
		<updated>2013-05-17T06:17:43Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Der Handel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Klasse 7b beschäftigte sich im Geschichtsunterricht lehrplangemäß mit dem Thema &amp;quot;Die Stadt im Mittelalter&amp;quot;. Dabei wurden die Themen wie Stadtentstehung, der Aufbau der Gesellschaft einer mittelalterlichen Stadt, die Zünfte und die Außenseiter einer Stadt näher besprochen. Ein &amp;quot;Gesicht&amp;quot; bekam das Ganze im Rahmen einer Exkursion nach Regensburg, wo sich die Schülerinnen und Schüler der Klasse 7b genauer über die bedeutenden Bauwerke der Stadt Regensburg und den Aufbau der Stadt im Mittelalter informierten. Im Rahmen des Informatikunterrichts, in dem im ersten Halbjahr die Themen Internet und Erstellen von Websites auf dem Programm standen, präsentieren die Schülerinnen und Schüler ihre Ergebnisse nun auf unserem Schul-Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Lage Regensburgs, der Aufbau der Stadt und der Handel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die geographische Lage ===&lt;br /&gt;
&lt;br /&gt;
Regensburg liegt in der heutigen Oberpfalz( Deutschland,Bayern ) und liegt somit ganz in der Nähe des bayerischen Waldes und dem Gäuboden ,der auch die Donauebene gennant wird.&lt;br /&gt;
Außerdem liegt Regensburg an der Donau und  zwei Nebenflüssen Naab und Regen.Von dem zuletzt genannten Fluss stammt der Name ab.&lt;br /&gt;
Da die Stadt eine der wenigen war, wo man wegen einer Brücke den Fluss überqueren konnte.Dadurch siedelten sich dort viele Leute an ,deswegen wuchs Regensburg rasant.&lt;br /&gt;
&lt;br /&gt;
=== Der Aufbau der Stadt ===&lt;br /&gt;
Regensburg wurde von den Römern unter dem Namen &amp;quot;Castra Regina&amp;quot; (Das am Regen gelegene Lager) gegründet. Später wurde Regensburg Reichsstadt (Stadt die nur dem Kaiser untersteht); deswegen zahlten die Einwohner nur dem Kaiser Steuern. Weil der bayerische Herzog Albrecht IV. auch Steuern einziehen wollte, errichtete er die Gegenstadt &amp;quot;Stadt am Hof&amp;quot;. Der bayerische Herzog gab den Einwohnern auch  Stadtrechte, aber dennoch wollte dort niemand leben. Ein wichtiger Punkt ist ,dass die Steinerne Brücke eine der wenigen Brücken über die Donau war (die einzige von Regensburg bis Ulm), deswegen wurde Regensburg reich durch den Handel.&lt;br /&gt;
&lt;br /&gt;
=== Der Handel ===&lt;br /&gt;
Zuerst wurde ein Lager namens Castra Regina von den Römern gegründet. Dort siedelte sich dann auch das normale Volk an und so wurde aus dem Lager schnell eine Stadt, deshalb begann dort der Handel schon sehr früh. Da Regensburg einen Flussübergang hat, mussten viele Händler, um auf die andere Seite des Flusses zu kommen , durch Regesburg, wodurch Regensburg von den Händlern hohe Steuern verlangen konnten. Der 3. Vorteil ist, das Regesburg an einem Fluss liegt, wodurch viele Waren verschifft werden konnten.&lt;br /&gt;
&lt;br /&gt;
== Der Dom ==&lt;br /&gt;
==== Allgemein ====&lt;br /&gt;
Die Gesamtlänge innen beträgt 86,00 Meter,&lt;br /&gt;
die Breite innen beträgt 34,80 Meter&lt;br /&gt;
&lt;br /&gt;
Um 700 wurde die erste Bischofskirche an der Stelle der heutigen Dompfarrkirche Niedermünster errichtet. Der Neubau wurde 1273 gestartet ,weil der alte Dom  von einem Feuer ,das vermutlich 1250 ausbrach, zerstört wurde.&lt;br /&gt;
In den Jahren 1285 bis 1290 war die hochgtische Neuplanung. Als die drei Chöre des neuen Doms genutzt werden können, wurde der alte Dom abgebrochen. Das aufwendige Hauptportal im Westen wurde 1385 bis 1415 vollendet.&lt;br /&gt;
&lt;br /&gt;
===Bedeutung===&lt;br /&gt;
Der Regensburger Dom ist das bedeutendste Bauwerk der süddeutschen Gotik.&lt;br /&gt;
Der Dom ist auch die Ruhestätte berühmter Bishöfe wie zum Beispiel Johann Michael Sailer(1829-1832) oder Konrad Eberhard.&lt;br /&gt;
Am 13. September 2006 besuchte Papst Benedikt XVI. den Dom.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Orgeln===&lt;br /&gt;
2009 baute die Firma  Rieger Orgelbau eine neue Hauptorgel in den Regensburger Dom ,die aus 80 Registern auf 4 Manuale und Pedal besteht.Es ist die größte freihängende  Orgel der Welt .&lt;br /&gt;
Ganze 36,7 tonnen hängen an vier 30 mm dicken Stahlseilen.&lt;br /&gt;
Maße:&lt;br /&gt;
Höhe: 18 Meter&lt;br /&gt;
Breite : 7,7 Meter&lt;br /&gt;
Tiefe:2,5 Meter&lt;br /&gt;
&lt;br /&gt;
== Die Steinerne Brücke ==&lt;br /&gt;
&lt;br /&gt;
==== Besonderes über die Brücke ====&lt;br /&gt;
&lt;br /&gt;
Die in Regensburg in den Jahren 1135 - 1146 erbaute Steinbogenbrücke über die Donau gilt als die älteste Steinbrücke Deutschlands.&lt;br /&gt;
&lt;br /&gt;
Mit ihrer Gesamtlänge von 336m, ihrer Breite von 8m und ihrer Höhe von ca. 15m darf sie nur von Fußgängern und Radfahrern genutzt werden. &lt;br /&gt;
&lt;br /&gt;
Sie wurde von der UNESCO zum Weltkulturerbe erklärt.&lt;br /&gt;
&lt;br /&gt;
Den Titel &amp;quot;Historisches Wahrzeichen der Ingenieurbaukunst in Deutschland&amp;quot; erhielt die Brücke 2007.&lt;br /&gt;
&lt;br /&gt;
==== Die Entstehung ====&lt;br /&gt;
&lt;br /&gt;
Der Steinernen Brücke ging eine Holzbrücke zuvor, um den Händlern einen Weg in die Stadt zu ermöglichen. Diese musste allerdings oft erneuert werden, da sie gegen Wetter und Wind nicht standhaft war. Daher beschloss man, da die Stadt Regensburg zu dieser Zeit noch sehr wohlhabend war, eine Brücke aus Stein zu bauen. So begann der Bau der Steinernen Brücke im Jahre 1135, diese wurde innerhalb von 11 Jahren (!) im Jahre 1146 fertiggestellt. Für damalige Verhältnisse war das mit der stattlicher Höhe von 15 m, einer Breite von 8 m und einer Gesamtläge von 336 m eine bewundernswert kurze Bauspanne. Die Steinerne Brücke war ganze 800 Jahre die einzige Donaubrücke in Regensburg.&lt;br /&gt;
&lt;br /&gt;
==== Die Bauweise ====&lt;br /&gt;
&lt;br /&gt;
Bei der Fertigstellung der Steinernen Brücke im Jahre 1146 verfügte sie über drei Türme, von denen aber nur einer bis heute erhalten geblieben ist. Während eines Krieges wurden der mittlere und südliche Turm angezündet und fast vollständig niedergebrannt. Am Ende dieses Krieges wurden die beiden Türme 1648 wieder hergestellt, allerdings wurde der mittlere Turm 1784 abgebrochen, nachdem er durch einen Eisstoß fast zerstört worden war. Bei der Rückeroberung wurde der nördliche Turm 1809 beschädigt und 1810 schließlich abgebrochen. Den südlichen Turm kann man noch heute bewundern, da er, wie oben schon erwähnt, bis heute erhalten geblieben ist.&lt;br /&gt;
&lt;br /&gt;
Im Dreißigjährigen Krieg wurde 1633 das vierte, heute das dritte (sichtbare), Brückenjoch durch eine Sprengung zerstört und durch eine Holzzugbrücke ersetzt. Erst 1790 bis 1791 wurde diese Lücke wieder geschlossen, der Torbogen südlich neben dem Brückturm und die Brückenverbreitung wurden allerdings erst am Anfang des 20. Jahrhunderts gebaut. Im Jahr 1732 wurde die Fahrbahn der Brücke verbreitert, 1877 wurde die Brücke mit Granitplatten ausgestattet und die Verbindungsrampe, die ursprünglich aus Holz war, wurde durch Eisen ersetzt. Die Brücke wurde 1950 mit Brüstungen aus Betonplatten versehen. Bis heute wurden immer wieder Sanierungen unternommen und die Steinerne Brücke ist bis heute eine bekannte Sehenswürdigkeit.&lt;br /&gt;
&lt;br /&gt;
==== Die Sage der Brücke ====&lt;br /&gt;
&lt;br /&gt;
Es wird eine Sage erzählt, warum die Regensburger Brücke in nur 11 Sommern, eine damals kurze Bauweise, erbaut wurde.&lt;br /&gt;
In dieser Sage spielt auch der Regensburger Dom eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
Zwei Baumeister wetteten, wer schneller bauen könne.&lt;br /&gt;
Der Dombauer war jedoch schneller, sodass&lt;br /&gt;
sich der Brückenbauer mit dem Teufel verband, der ihm beim Brückenbau half.&lt;br /&gt;
Sein Lohn: Die ersten drei Seelen, die über die Brücke gingen.&lt;br /&gt;
Dadurch wurde die Brücke in 11 Jahren erbaut.&lt;br /&gt;
Nach dem Ende der Bauzeit hetzte der Brückenbauer Tiere über Brücke, die Seelen für den Teufel.&lt;br /&gt;
Dieser war darüber aber sehr zornig, sodass er versuchte, die Brücke einzureißen;&lt;br /&gt;
diese war jedoch so stabil, sodass er nur einen Knick in die  Brücke machte.&lt;br /&gt;
&lt;br /&gt;
==== Die Steinere Brücke als Touristenattraktion ====&lt;br /&gt;
&lt;br /&gt;
Das faszinierende Bauwerk gilt wohl als die bedeutenste Sehenswürdigkeit ganz Regensburgs.&lt;br /&gt;
Die Steinere Brücke wird jedes Jahr von Millionen von Besuchern besbesichtigt&lt;br /&gt;
und wird inzwischen als UNESCO-Welterbe bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Geschichten aus der Bevölkerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Barbara Blomberg ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barbara Blomberg (1527-1597) war die Geliebte von Kaiser Karl V. (1500-1558) und die Mutter von Don Juan d`Austria, der auch der Sieger der Seeschlacht von Lepanto war. Sie war die Tochter des Gürtlermeisters Wolfgang Blomberg und seiner Frau Sibilla Blomberg und aufgrund ihrer Schönheit schon früh in ganz Regensburg bekannt. Ihre Großeltern besaßen ein Gasthaus (&#039;&#039;Zum Goldenen Kreuz&#039;&#039;), in welchem Karl V. am Reichstag 1546 oftmals einkehrte. Während dieser Zeit traf Karl oft auf Barbara, weil er häufig die Hintertür benutzte, um nicht gesehen zu werden. Er traf Barbara nun öfters und benutzte die Ausrede das Holzaroma des Bades im Haus von ihren Großeltern, welches er manchmal benutzte, würde ihm helfen zu entspannen. Er verliebte sich in Barbara und einige Zeit später wurde sie schwanger. Als der &amp;quot;immerwährende&amp;quot; Reichstag beendet war, musste Karl wieder gehen. Alles schien perfekt, doch es gab ein Problem: Barbara und Karl waren nicht verheiratet und als Barbara ihren Sohn gebar wurde sie von den Bewohnern Regensburgs gemieden, aber nicht verjagt. Nach einiger Zeit erinnerte sich Karl an Barbara und reiste drei Jahre nach Johanns (Don Juan d` Austria) Geburt nach Regensburg zurück, wo er die beiden aufsuchte. Barbara heiratete später dann Hironymus Kegel, der Später den Posten eines Musterungs- und Kriegskommissars bekam. Sie lebten dann gemeinsam in einer Villa in Brüssel und hatten drei gemeinsame Kinder. Johann wuchs am spanischen Hof auf, wo er auch den Namen Don Juan erhielt. Er schlug eine militärische Laufbahn ein und wurde, nachdem er die Seeschlacht von Lepanto gewann, als Held gefeiert. Er starb 1569 und seine Familie hatte einen unsicheren finanziellen Stand. Aus diesem Grund gewährte der damalige Statthalter der Niederlande, Herzog von Alba, dem Sohn Karls V., Barbara und den anderen Kindern einen bemessenen Unterhalt. Somit erhielten sie eine angesehen Stellung in der Gesellschaft. Dafür sollte sie in ein spanisches Kloster umziehen, jedoch war Babara nicht bereit ihr freizügiges Leben aufzugeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Albertus Magnus===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Albertus Magnus (1193-1280) war&lt;br /&gt;
&lt;br /&gt;
== Das Rathaus und die Politik in Regensburg ==&lt;br /&gt;
&lt;br /&gt;
=== Das Alte Rathaus===&lt;br /&gt;
Das alte Rathaus ist der Sitz des Oberbürgermeisters&lt;br /&gt;
&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Das Alte Rathaus ist ein unter Denkmalschutz stehendes Gebäude, dass um 1380 erbaut wurde. Nach einigen An- und Umbauten besteht der dreiteilige Gebäudekomplex nun aus dem Rathausturm, dem Reichssaal und dem Barock-Rathaus.&lt;br /&gt;
&lt;br /&gt;
=== Der immerwährende Reichstag ===&lt;br /&gt;
Ungefähr im Jahre 1350 wurde der Reichstag zum ersten Mal von Kaiser Karl IV.im Reichssaal veranstaltet.&lt;br /&gt;
Die Reichstage fanden ab ca. 1590 immer in Regensburg statt.&lt;br /&gt;
Ab dem Jahre 1660 wurde dieser immerwährend im Reichssaal veranstaltet.&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=615</id>
		<title>Regensburg im Mittelalter</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=615"/>
		<updated>2013-05-17T06:14:16Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Der Handel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Klasse 7b beschäftigte sich im Geschichtsunterricht lehrplangemäß mit dem Thema &amp;quot;Die Stadt im Mittelalter&amp;quot;. Dabei wurden die Themen wie Stadtentstehung, der Aufbau der Gesellschaft einer mittelalterlichen Stadt, die Zünfte und die Außenseiter einer Stadt näher besprochen. Ein &amp;quot;Gesicht&amp;quot; bekam das Ganze im Rahmen einer Exkursion nach Regensburg, wo sich die Schülerinnen und Schüler der Klasse 7b genauer über die bedeutenden Bauwerke der Stadt Regensburg und den Aufbau der Stadt im Mittelalter informierten. Im Rahmen des Informatikunterrichts, in dem im ersten Halbjahr die Themen Internet und Erstellen von Websites auf dem Programm standen, präsentieren die Schülerinnen und Schüler ihre Ergebnisse nun auf unserem Schul-Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Lage Regensburgs, der Aufbau der Stadt und der Handel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die geographische Lage ===&lt;br /&gt;
&lt;br /&gt;
Regensburg liegt in der heutigen Oberpfalz( Deutschland,Bayern ) und liegt somit ganz in der Nähe des bayerischen Waldes und dem Gäuboden ,der auch die Donauebene gennant wird.&lt;br /&gt;
Außerdem liegt Regensburg an der Donau und  zwei Nebenflüssen Naab und Regen.Von dem zuletzt genannten Fluss stammt der Name ab.&lt;br /&gt;
Da die Stadt eine der wenigen war, wo man wegen einer Brücke den Fluss überqueren konnte.Dadurch siedelten sich dort viele Leute an ,deswegen wuchs Regensburg rasant.&lt;br /&gt;
&lt;br /&gt;
=== Der Aufbau der Stadt ===&lt;br /&gt;
Regensburg wurde von den Römern unter dem Namen &amp;quot;Castra Regina&amp;quot; (Das am Regen gelegene Lager) gegründet. Später wurde Regensburg Reichsstadt (Stadt die nur dem Kaiser untersteht); deswegen zahlten die Einwohner nur dem Kaiser Steuern. Weil der bayerische Herzog Albrecht IV. auch Steuern einziehen wollte, errichtete er die Gegenstadt &amp;quot;Stadt am Hof&amp;quot;. Der bayerische Herzog gab den Einwohnern auch  Stadtrechte, aber dennoch wollte dort niemand leben. Ein wichtiger Punkt ist ,dass die Steinerne Brücke eine der wenigen Brücken über die Donau war (die einzige von Regensburg bis Ulm), deswegen wurde Regensburg reich durch den Handel. Außerdem konnten sie hohe Steuern von Händlern, die die Brücke überqueren wollten, fordern.&lt;br /&gt;
&lt;br /&gt;
=== Der Handel ===&lt;br /&gt;
Zuerst wurde ein Lager namens Castra Regina von den Römern gegründet. Dort siedelte sich dann auch das normale Volk an und so wurde aus dem Lager schnell eine Stadt, deshalb begann dort der Handel schon sehr früh. Da Regensburg einen Flussübergang hat, mussten viele Händler, um auf die andere Seite des Flusses zu kommen , durch Regesburg, wodurch der Handel dort aufblüte. Der 3. Vorteil ist, das Regesburg an einem Fluss liegt, wodurch viele Waren verschifft werden konnten.&lt;br /&gt;
&lt;br /&gt;
== Der Dom ==&lt;br /&gt;
==== Allgemein ====&lt;br /&gt;
Die Gesamtlänge innen beträgt 86,00 Meter,&lt;br /&gt;
die Breite innen beträgt 34,80 Meter&lt;br /&gt;
&lt;br /&gt;
Um 700 wurde die erste Bischofskirche an der Stelle der heutigen Dompfarrkirche Niedermünster errichtet. In den Jahren 1285 bis 1290 war die hochgtische Neuplanung. Als die drei Chöre des neuen Doms genutzt werden können, wird der alte Dom abgebrochen. Der Neubau wurde 1273 gestartet ,weil der alte Dom  von einem Feuer ,das vermutlich 1250 ausbrach, zerstört wurde.&lt;br /&gt;
&lt;br /&gt;
===Bedeutung===&lt;br /&gt;
Der Regensburger Dom ist das bedeutendste Bauwerk der süddeutschen Gotik.&lt;br /&gt;
Der Dom ist auch die Ruhestätte berühmter Bishöfe wie zum Beispiel Johann Michael Sailer(1829-1832) oder Konrad Eberhard.&lt;br /&gt;
Am 13. September 2006 besuchte Papst Benedikt XVI. den Dom.&lt;br /&gt;
&lt;br /&gt;
== Die Steinerne Brücke ==&lt;br /&gt;
&lt;br /&gt;
==== Besonderes über die Brücke ====&lt;br /&gt;
&lt;br /&gt;
Die in Regensburg in den Jahren 1135 - 1146 erbaute Steinbogenbrücke über die Donau gilt als die älteste Steinbrücke Deutschlands.&lt;br /&gt;
&lt;br /&gt;
Mit ihrer Gesamtlänge von 336m, ihrer Breite von 8m und ihrer Höhe von ca. 15m darf sie nur von Fußgängern und Radfahrern genutzt werden. &lt;br /&gt;
&lt;br /&gt;
Sie wurde von der UNESCO zum Weltkulturerbe erklärt.&lt;br /&gt;
&lt;br /&gt;
Den Titel &amp;quot;Historisches Wahrzeichen der Ingenieurbaukunst in Deutschland&amp;quot; erhielt die Brücke 2007.&lt;br /&gt;
&lt;br /&gt;
==== Die Entstehung ====&lt;br /&gt;
&lt;br /&gt;
Der Steinernen Brücke ging eine Holzbrücke zuvor, um den Händlern einen Weg in die Stadt zu ermöglichen. Diese musste allerdings oft erneuert werden, da sie gegen Wetter und Wind nicht standhaft war. Daher beschloss man, da die Stadt Regensburg zu dieser Zeit noch sehr wohlhabend war, eine Brücke aus Stein zu bauen. So begann der Bau der Steinernen Brücke im Jahre 1135, diese wurde innerhalb von 11 Jahren (!) im Jahre 1146 fertiggestellt. Für damalige Verhältnisse war das mit der stattlicher Höhe von 15 m, einer Breite von 8 m und einer Gesamtläge von 336 m eine bewundernswert kurze Bauspanne. Die Steinerne Brücke war ganze 800 Jahre die einzige Donaubrücke in Regensburg.&lt;br /&gt;
&lt;br /&gt;
==== Die Bauweise ====&lt;br /&gt;
&lt;br /&gt;
Bei der Fertigstellung der Steinernen Brücke im Jahre 1146 verfügte sie über drei Türme, von denen aber nur einer bis heute erhalten geblieben ist. Während eines Krieges wurden der mittlere und südliche Turm angezündet und fast vollständig niedergebrannt. Am Ende dieses Krieges wurden die beiden Türme 1648 wieder hergestellt, allerdings wurde der mittlere Turm 1784 abgebrochen, nachdem er durch einen Eisstoß fast zerstört worden war. Bei der Rückeroberung wurde der nördliche Turm 1809 beschädigt und 1810 schließlich abgebrochen. Den südlichen Turm kann man noch heute bewundern, da er, wie oben schon erwähnt, bis heute erhalten geblieben ist.&lt;br /&gt;
&lt;br /&gt;
Im Dreißigjährigen Krieg wurde 1633 das vierte, heute das dritte (sichtbare), Brückenjoch durch eine Sprengung zerstört und durch eine Holzzugbrücke ersetzt. Erst 1790 bis 1791 wurde diese Lücke wieder geschlossen, der Torbogen südlich neben dem Brückturm und die Brückenverbreitung wurden allerdings erst am Anfang des 20. Jahrhunderts gebaut. Im Jahr 1732 wurde die Fahrbahn der Brücke verbreitert, 1877 wurde die Brücke mit Granitplatten ausgestattet und die Verbindungsrampe, die ursprünglich aus Holz war, wurde durch Eisen ersetzt. Die Brücke wurde 1950 mit Brüstungen aus Betonplatten versehen. Bis heute wurden immer wieder Sanierungen unternommen und die Steinerne Brücke ist bis heute eine bekannte Sehenswürdigkeit.&lt;br /&gt;
&lt;br /&gt;
==== Die Sage der Brücke ====&lt;br /&gt;
&lt;br /&gt;
Es wird eine Sage erzählt, warum die Regensburger Brücke in nur 11 Sommern, eine damals kurze Bauweise, erbaut wurde.&lt;br /&gt;
In dieser Sage spielt auch der Regensburger Dom eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
Zwei Baumeister wetteten, wer schneller bauen könne.&lt;br /&gt;
Der Dombauer war jedoch schneller, sodass&lt;br /&gt;
sich der Brückenbauer mit dem Teufel verband, der ihm beim Brückenbau half.&lt;br /&gt;
Sein Lohn: Die ersten drei Seelen, die über die Brücke gingen.&lt;br /&gt;
Dadurch wurde die Brücke in 11 Jahren erbaut.&lt;br /&gt;
Nach dem Ende der Bauzeit hetzte der Brückenbauer Tiere über Brücke, die Seelen für den Teufel.&lt;br /&gt;
Dieser war darüber aber sehr zornig, sodass er versuchte, die Brücke einzureißen;&lt;br /&gt;
diese war jedoch so stabil, sodass er nur einen Knick in die  Brücke machte.&lt;br /&gt;
&lt;br /&gt;
==== Die Steinere Brücke als Touristenattraktion ====&lt;br /&gt;
&lt;br /&gt;
Das faszinierende Bauwerk gilt wohl als die bedeutenste Sehenswürdigkeit ganz Regensburgs.&lt;br /&gt;
Die Steinere Brücke wird jedes Jahr von Millionen von Besuchern besbesichtigt&lt;br /&gt;
und wird inzwischen als UNESCO-Welterbe bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Geschichten aus der Bevölkerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Barbara Blomberg ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barbara Blomberg (1527-1597) war die Geliebte von Kaiser Karl V. (1500-1558) und die Mutter von Don Juan d`Austria, der auch der Sieger der Seeschlacht von Lepanto war. Sie war die Tochter des Gürtlermeisters Wolfgang Blomberg und seiner Frau Sibilla Blomberg und aufgrund ihrer Schönheit schon früh in ganz Regensburg bekannt. Ihre Großeltern besaßen ein Gasthaus (&#039;&#039;Zum Goldenen Kreuz&#039;&#039;), in welchem Karl V. am Reichstag 1546 oftmals einkehrte. Während dieser Zeit traf Karl oft auf Barbara, weil er häufig die Hintertür benutzte, um nicht gesehen zu werden. Er traf Barbara nun öfters und benutzte die Ausrede das Holzaroma des Bades im Haus von ihren Großeltern, welches er manchmal benutzte, würde ihm helfen zu entspannen. Er verliebte sich in Barbara und einige Zeit später wurde sie schwanger. Als der &amp;quot;immerwährende&amp;quot; Reichstag beendet war, musste Karl wieder gehen. Alles schien perfekt, doch es gab ein Problem: Barbara und Karl waren nicht verheiratet und als Barbara ihren Sohn gebar wurde sie von den Bewohnern Regensburgs gemieden, aber nicht verjagt. Nach einiger Zeit erinnerte sich Karl an Barbara und reiste drei Jahre nach Johanns (Don Juan d` Austria) Geburt nach Regensburg zurück, wo er die beiden aufsuchte. Barbara heiratete später dann Hironymus Kegel, der Später den Posten eines Musterungs- und Kriegskommissars bekam. Sie lebten dann gemeinsam in einer Villa in Brüssel und hatten drei gemeinsame Kinder. Johann wuchs am spanischen Hof auf, wo er auch den Namen Don Juan erhielt. Er schlug eine militärische Laufbahn ein und wurde, nachdem er die Seeschlacht von Lepanto gewann, als Held gefeiert.&lt;br /&gt;
&lt;br /&gt;
== Das Rathaus und die Politik in Regensburg ==&lt;br /&gt;
&lt;br /&gt;
=== Das Alte Rathaus===&lt;br /&gt;
Das alte Rathaus ist der Sitz des Oberbürgermeisters&lt;br /&gt;
&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Das Alte Rathaus ist ein unter Denkmalschutz stehendes Gebäude, dass um 1380 erbaut wurde.&lt;br /&gt;
&lt;br /&gt;
=== Der immerwährende Reichstag ===&lt;br /&gt;
Ungefähr im Jahre 1350 wurde der Reichstag zum ersten Mal von Kaiser Karl IV.im Reichssaal veranstaltet.&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=593</id>
		<title>Regensburg im Mittelalter</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=593"/>
		<updated>2013-05-16T10:15:03Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Die geographische Lage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Klasse 7b beschäftigte sich im Geschichtsunterricht lehrplangemäß mit dem Thema &amp;quot;Die Stadt im Mittelalter&amp;quot;. Dabei wurden die Themen wie Stadtentstehung, der Aufbau der Gesellschaft einer mittelalterlichen Stadt, die Zünfte und die Außenseiter einer Stadt näher besprochen. Ein &amp;quot;Gesicht&amp;quot; bekam das Ganze im Rahmen einer Exkursion nach Regensburg, wo sich die Schülerinnen und Schüler der Klasse 7b genauer über die bedeutenden Bauwerke der Stadt Regensburg und den Aufbau der Stadt im Mittelalter informierten. Im Rahmen des Informatikunterrichts, in dem im ersten Halbjahr die Themen Internet und Erstellen von Websites auf dem Programm standen, präsentieren die Schülerinnen und Schüler ihre Ergebnisse nun auf unserem Schul-Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Lage Regensburgs, der Aufbau der Stadt und der Handel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die geographische Lage ===&lt;br /&gt;
&lt;br /&gt;
Regensburg liegt in der heutigen Oberpfalz(Deutschland,Bayern ) und liegt somit ganz in der Nähe des bayerischen Waldes und dem Gäuboden der auch die Donauebene gennant wird.&lt;br /&gt;
Außerdem liegt Regensburg an der Donau und den zwei Nebenflüssen Naab und Regen.Von dem zuletzt genannten Fluss stammt der Name ab.&lt;br /&gt;
Da die Stadt eine der wenigen war, wo man durch eine Brücke den Fluss überqueren konnte,wodurch sich dort viele Leute ansiedelten,  ist sie in einem rasantem Tempo gewachsen.&lt;br /&gt;
&lt;br /&gt;
=== Der Aufbau der Stadt ===&lt;br /&gt;
Regensburg wurde von den Römern unter dem Namen &amp;quot;Castra Regina&amp;quot; (Das am Regen gelegene Lager) gegründet. Später wurde Regensburg Reichsstadt (Stadt die nur dem Kaiser untersteht)und unterstand deswegen nur dem Kaiser; deswegen zahlten die Einwohner nur dem Kaiser Steuern. Weil der bayerische Herzog auch Steuern einziehen wollte, errichtete er die Gegenstadt &amp;quot;Stadt am Hof&amp;quot;. Der bayerische Herzog gab den Einwohnern auch  Stadtrechte, aber dennoch wollte niemand dort leben. Ein wichtiger Punkt ist ,dass die Steinerne Brücke eine der wenigen Brücken über die Donau war ,die einzige von Ulm bis Regensburg ,dewegen wurde Regensburg reich durch den Handel. Außerdem konnten sie hohe Steuern von Händlern, die die Brücke überqueren wollten, fordern.&lt;br /&gt;
&lt;br /&gt;
=== Der Handel ===&lt;br /&gt;
Zuerst wurde Regensburg von den Römern gegründet ,deshalb begann dort der Handel schon sehr früh. Ein weiterer Punkt für den Handel&lt;br /&gt;
ist ,dass Regensburg einen Brückenübergang hatte und immer noch hat.Deswegen mussten viele Händler durch die Stadt und Regensburg wurde reich.&lt;br /&gt;
&lt;br /&gt;
== Der Dom ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Die Gesamtlänge innen beträgt 86,00 Meter&lt;br /&gt;
Die Breite innen beträgt 34,80 Meter&lt;br /&gt;
&lt;br /&gt;
Um 700 wurde die erste Bischofskirche an der stelle der heutigen Dompfarrkirche Niedermünster. Der Neubau wurde 1273 gestartet ,weil der alte Dom  von einem Feuer ,das vermutlich 1250 ausbrach, zerstört wurde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bedeutung===&lt;br /&gt;
Der Regensburger Dom ist das bedeutendste Bauwerk der süddeutschen Gotik.&lt;br /&gt;
Der Dom ist auch die Ruhestätte berühmter Bishöfe wie zum Beispiel Johann Michael Sailer(1829-1832) oder Konrad Eberhard.&lt;br /&gt;
Am 13. September 2006 besuchte Papst Benedikt XVI. den Dom.&lt;br /&gt;
&lt;br /&gt;
== Die Steinerne Brücke ==&lt;br /&gt;
&lt;br /&gt;
==== Besonderes über die Brücke ====&lt;br /&gt;
&lt;br /&gt;
Die in Regensburg in den Jahren 1135 - 1146 erbaute Steinbogenbrücke über die Donau gilt als die älteste Steinbrücke Deutschlands.&lt;br /&gt;
&lt;br /&gt;
Mit ihrer Gesamtlänge von 336m, ihrer Breite von 8m und ihrer Höhe von ca. 15m darf sie nur von Fußgängern und Radfahrern genutzt werden. &lt;br /&gt;
&lt;br /&gt;
Sie wurde von der UNESCO zum Weltkulturerbe erklärt.&lt;br /&gt;
Den Titel &amp;quot;Historisches Wahrzeichen der Ingenieurbaukunst in Deutschland&amp;quot; erhielt die Brücke 2007.&lt;br /&gt;
&lt;br /&gt;
==== Die Entstehung ====&lt;br /&gt;
&lt;br /&gt;
Der Steinernen Brücke ging eine Holzbrücke zuvor, um den Händlern einen Weg in die Stadt zu ermöglichen. Diese musste allerdings oft erneuert werden, da sie gegen Wetter und Wind nicht standhaft war. Daher beschloss man, da die Stadt Regensburg zu dieser Zeit noch sehr wohlhabend war, eine Brücke aus Stein zu bauen. So begann der Bau der Steinernen Brücke im Jahre 1135, diese wurde innerhalb von 11 Jahren (!) im Jahre 1146 fertiggestellt. Für damalige Verhältnisse war das mit der stattlicher Höhe von 15 m, einer Breite von 8 m und einer Gesamtläge von 336 m eine bewundernswert kurze Bauspanne. Die Steinerne Brücke war ganze 800 Jahre die einzige Donaubrücke in Regensburg.&lt;br /&gt;
&lt;br /&gt;
==== Die Bauweise ====&lt;br /&gt;
&lt;br /&gt;
Bei der Fertigstellung der Steinernen Brücke im Jahre 1146 verfügte sie über drei Türme, von denen aber nur einer bis heute erhalten geblieben ist. Während eines Krieges wurden der mittlere und südliche Turm angezündet und fast vollständig niedergebrannt. Am Ende dieses Krieges wurden die beiden Türme 1648 wieder hergestellt, allerdings wurde der mittlere Turm 1784 abgebrochen, nachdem er durch einen Eisstoß fast zerstört worden war. Bei der Rückeroberung wurde der nördliche Turm 1809 beschädigt und 1810 schließlich abgebrochen. Den südlichen Turm kann man noch heute bewundern, da er, wie oben schon erwähnt, bis heute erhalten geblieben ist.&lt;br /&gt;
&lt;br /&gt;
Im Dreißigjährigen Krieg wurde 1633 das vierte, heute das dritte (sichtbare), Brückenjoch durch eine Sprengung zerstört und durch eine Holzzugbrücke ersetzt. Erst 1790 bis 1791 wurde diese Lücke wieder geschlossen, der Torbogen südlich neben dem Brückturm und die Brückenverbreitung wurden allerdings erst am Anfang des 20. Jahrhunderts gebaut. Im Jahr 1732 wurde die Fahrbahn der Brücke verbreitert, 1877 wurde die Brücke mit Granitplatten ausgestattet und die Verbindungsrampe, die ursprünglich aus Holz war, wurde durch Eisen ersetzt. Die Brücke wurde 1950 mit Brüstungen aus Betonplatten versehen. Bis heute wurden immer wieder Sanierungen unternommen und die Steinerne Brücke ist bis heute eine bekannte Sehenswürdigkeit.&lt;br /&gt;
&lt;br /&gt;
==== Die Sage der Brücke ====&lt;br /&gt;
&lt;br /&gt;
Es wird eine Sage erzählt, warum die Regensburger Brücke in nur 11 Sommern, eine damals kurze Bauweise, erbaut wurde.&lt;br /&gt;
In dieser Sage spielt auch der Regensburger Dom eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
Zwei Baumeister wetteten, wer schneller bauen könne.&lt;br /&gt;
Der Dombauer war jedoch schneller, sodass&lt;br /&gt;
sich der Brückenbauer mit dem Teufel verband, der ihm beim Brückenbau half.&lt;br /&gt;
Sein Lohn: Die ersten drei Seelen, die über die Brücke gingen.&lt;br /&gt;
Dadurch wurde die Brücke in 11 Jahren erbaut.&lt;br /&gt;
Nach dem Ende der Bauzeit hetzte der Brückenbauer Tiere über Brücke, die Seelen für den Teufel.&lt;br /&gt;
Dieser war darüber aber sehr zornig, sodass er versuchte, die Brücke einzureißen;&lt;br /&gt;
diese war jedoch so stabil, sodass er nur einen Knick in die  Brücke machte.&lt;br /&gt;
&lt;br /&gt;
==== Die Steinere Brücke als Touristenattraktion ====&lt;br /&gt;
&lt;br /&gt;
Das faszinierende Bauwerk gilt wohl als die bedeutenste Sehenswürdigkeit ganz Regensburgs.&lt;br /&gt;
Die Steinere Brücke wird jedes Jahr von Millionen von Besuchern besbesichtigt&lt;br /&gt;
und wird inzwischen als UNESCO-Welterbe bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Geschichten aus der Bevölkerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Barbara Blomberg ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barbara Blomberg (1527-1597) war die Geliebte von Kaiser Karl V. (1500-1558) und die Mutter von Don Juan D`Austria, der auch der Sieger der Seeschlacht von Lepanto war. Sie war die Tochter des Gürtlermeisters Wolfgang Blomberg und seiner Frau Sibilla Blomberg und aufgrund ihrer Schönheit schon früh in ganz Regensburg bekannt. Ihre Großeltern besaßen ein Gasthaus (&#039;&#039;Zum Goldenen Kreuz&#039;&#039;), in welchem Karl V. am Reichstag 1546 oftmals einkehrte. Während dieser Zeit traf Karl oft auf Barbara, weil er häufig die Hintertür benutzte, um nicht gesehen zu werden. Er traf Barbara nun öfters und benutzte die Ausrede das Holzaroma des Bades im Haus von ihren Großeltern, welches er manchmal benutzte, würde ihm helfen zu entspannen. Er verliebte sich in Barbara und einige Zeit später wurde sie schwanger. Als der &amp;quot;immerwährende&amp;quot; Reichstag beendet war, musste Karl wieder gehen. Alles schien perfekt, doch es gab ein Problem: Barbara und Karl waren nicht verheiratet und als Barbara ihren Sohn gebar wurde sie von den Bewohnern Regensburgs gemieden, aber nicht verjagt. Nach einiger Zeit erinnerte sich Karl an Barbara und reiste drei Jahre nach Johanns (Don Juan D` Austria) Geburt nach Regensburg zurück, wo er die beiden aufsuchte. Barbara heiratete später dann Hironymus Kegel, der Später den Posten eines Musterungs- und Kriegskommissars bekam. Sie lebten dann gemeinsam in einer Villa in Brüssel und hatten drei gemeinsame Kinder.&lt;br /&gt;
&lt;br /&gt;
== Das Rathaus und die Politik in Regensburg ==&lt;br /&gt;
&lt;br /&gt;
=== Das Alte Rathaus===&lt;br /&gt;
Das alte Rathaus ist der Sitz des Oberbürgermeisters&lt;br /&gt;
&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
Das Alte Rathaus ist ein unter Denkmalschutz stehendes Gebäude,dass um 1380 erbaut wurde.&lt;br /&gt;
&lt;br /&gt;
=== Der immerwährende Reichstag ===&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=587</id>
		<title>Regensburg im Mittelalter</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=587"/>
		<updated>2013-05-16T10:13:18Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Die geographische Lage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Klasse 7b beschäftigte sich im Geschichtsunterricht lehrplangemäß mit dem Thema &amp;quot;Die Stadt im Mittelalter&amp;quot;. Dabei wurden die Themen wie Stadtentstehung, der Aufbau der Gesellschaft einer mittelalterlichen Stadt, die Zünfte und die Außenseiter einer Stadt näher besprochen. Ein &amp;quot;Gesicht&amp;quot; bekam das Ganze im Rahmen einer Exkursion nach Regensburg, wo sich die Schülerinnen und Schüler der Klasse 7b genauer über die bedeutenden Bauwerke der Stadt Regensburg und den Aufbau der Stadt im Mittelalter informierten. Im Rahmen des Informatikunterrichts, in dem im ersten Halbjahr die Themen Internet und Erstellen von Websites auf dem Programm standen, präsentieren die Schülerinnen und Schüler ihre Ergebnisse nun auf unserem Schul-Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Lage Regensburgs, der Aufbau der Stadt und der Handel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die geographische Lage ===&lt;br /&gt;
&lt;br /&gt;
Regensburg liegt in der heutigen Oberpfalz(Deutschland,Bayern ) und liegt somit ganz in der Nähe des bayerischen Waldes und dem Gäuboden der auch die Donauebene gennant wird.&lt;br /&gt;
Außerdem liegt Regensburg an der Donau und den zwei Nebenflüssen Naab und Regen.Von dem zuletzt genannten Fluss stammt der Name ab.&lt;br /&gt;
Da die Stadt eine der wenigen war, wo man durch eine Brücke den Fluss überqueren konnte, ist sie wahsinnig gewachsen.&lt;br /&gt;
&lt;br /&gt;
=== Der Aufbau der Stadt ===&lt;br /&gt;
Regensburg wurde von den Römern unter dem Namen &amp;quot;Castra Regina&amp;quot; (Das am Regen gelegene Lager) gegründet. Später wurde Regensburg Reichsstadt und unterstand deswegen nur dem Kaiser; deswegen zahlten die Einwohner nur dem Kaiser Steuern. Weil der bayerische Herzog auch Steuern einziehen wollte, errichtete er die Gegenstadt &amp;quot;Stadt am Hof&amp;quot;. Der bayerische Herzog gab den Einwohnern auch  Stadtrechte, aber dennoch wollte niemand dort leben. Ein wichtiger Punkt ist ,dass die Steinerne Brücke eine der wenigen Brücken über die Donau war ,die einzige von Ulm bis Regensburg ,dewegen wurde Regensburg reich durch den Handel. Außerdem konnten sie hohe Steuern von Händlern, die die Brücke überqueren wollten, fordern.&lt;br /&gt;
&lt;br /&gt;
=== Der Handel ===&lt;br /&gt;
Zuerst wurde Regensburg von den Römern gegründet ,deshalb begann dort der Handel schon sehr früh. Ein weiterer Punkt für den Handel&lt;br /&gt;
ist ,dass Regensburg einen Brückenübergang hatte und immer noch hat.Deswegen mussten viele Händler durch die Stadt und Regensburg wurde reich.&lt;br /&gt;
&lt;br /&gt;
== Der Dom ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Die Gesamtlänge innen beträgt 86,00 Meter&lt;br /&gt;
Die Breite innen beträgt 34,80 Meter&lt;br /&gt;
&lt;br /&gt;
Um 700 wurde die erste Bischofskirche an der stelle der heutigen Dompfarrkirche Niedermünster. Der Neubau wurde 1273 gestartet ,weil der alte Dom  von einem Feuer ,das vermutlich 1250 ausbrach, zerstört wurde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bedeutung===&lt;br /&gt;
Der Regensburger Dom ist das bedeutendste Bauwerk der süddeutschen Gotik.&lt;br /&gt;
Der Dom ist auch die Ruhestätte berühmter Bishöfe wie zum Beispiel Johann Michael Sailer(1829-1832) oder Konrad Eberhard.&lt;br /&gt;
Am 13. September 2006 besuchte Papst Benedikt XVI. den Dom.&lt;br /&gt;
&lt;br /&gt;
== Die Steinerne Brücke ==&lt;br /&gt;
&lt;br /&gt;
==== Besonderes über die Brücke ====&lt;br /&gt;
&lt;br /&gt;
==== Die Entstehung ====&lt;br /&gt;
&lt;br /&gt;
Der Steinernen Brücke ging eine Holzbrücke zuvor, um den Händlern einen Weg in die Stadt zu ermöglichen. Diese musste allerdings oft erneuert werden, da sie gegen Wetter und Wind nicht standhaft war. Daher beschloss man, da die Stadt Regensburg zu dieser Zeit noch sehr wohlhabend war, eine Brücke aus Stein zu bauen. So begann der Bau der Steinernen Brücke im Jahre 1135, diese wurde innerhalb von 11 Jahren (!) im Jahre 1146 fertiggestellt. Für damalige Verhältnisse war das mit der stattlicher Höhe von 15 m, einer Breite von 8 m und einer Gesamtläge von 336 m eine bewundernswert kurze Bauspanne. Die Steinerne Brücke war ganze 800 Jahre die einzige Donaubrücke in Regensburg.&lt;br /&gt;
&lt;br /&gt;
==== Die Bauweise ====&lt;br /&gt;
&lt;br /&gt;
Bei der Fertigstellung der Steinernen Brücke im Jahre 1146 verfügte sie über drei Türme, von denen aber nur einer bis heute erhalten geblieben ist. Während eines Krieges wurden der mittlere und südliche Turm angezündet und fast vollständig niedergebrannt. Am Ende dieses Krieges wurden die beiden Türme 1648 wieder hergestellt, allerdings wurde der mittlere Turm 1784 abgebrochen, nachdem er durch einen Eisstoß fast zerstört worden war. Bei der Rückeroberung wurde der nördliche Turm 1809 beschädigt und 1810 schließlich abgebrochen. Den südlichen Turm kann man noch heute bewundern, da er, wie oben schon erwähnt, bis heute erhalten geblieben ist.&lt;br /&gt;
&lt;br /&gt;
Im Dreißigjährigen Krieg wurde 1633 das vierte, heute das dritte (sichtbare), Brückenjoch durch eine Sprengung zerstört und durch eine Holzzugbrücke ersetzt. Erst 1790 bis 1791 wurde diese Lücke wieder geschlossen, der Torbogen südlich neben dem Brückturm und die Brückenverbreitung wurden allerdings erst am Anfang des 20. Jahrhunderts gebaut. Im Jahr 1732 wurde die Fahrbahn der Brücke verbreitert, 1877 wurde die Brücke mit Granitplatten ausgestattet und die Verbindungsrampe, die ursprünglich aus Holz war, wurde durch Eisen ersetzt. Die Brücke wurde 1950 mit Brüstungen aus Betonplatten versehen. Bis heute wurden immer wieder Sanierungen unternommen und die Steinerne Brücke ist bis heute eine bekannte Sehenswürdigkeit.&lt;br /&gt;
&lt;br /&gt;
==== Die Sage der Brücke ====&lt;br /&gt;
&lt;br /&gt;
Es wird eine Sage erzählt, warum die Regensburger Brücke in nur 11 Sommern, eine damals kurze Bauweise, erbaut wurde.&lt;br /&gt;
In dieser Sage spielt auch der Regensburger Dom eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
Zwei Baumeister wetteten, wer schneller bauen könne.&lt;br /&gt;
Der Dombauer war jedoch schneller, sodass&lt;br /&gt;
sich der Brückenbauer mit dem Teufel verband, der ihm beim Brückenbau half.&lt;br /&gt;
Sein Lohn: Die ersten drei Seelen, die über die Brücke gingen.&lt;br /&gt;
Dadurch wurde die Brücke in 11 Jahren erbaut.&lt;br /&gt;
Nach dem Ende der Bauzeit hetzte der Brückenbauer Tiere über Brücke, die Seelen für den Teufel.&lt;br /&gt;
Dieser war darüber aber sehr zornig, sodass er versuchte, die Brücke einzureißen;&lt;br /&gt;
diese war jedoch so stabil, sodass er nur einen Knick in die  Brücke machte.&lt;br /&gt;
&lt;br /&gt;
==== Die Steinere Brücke als Touristenattraktion ====&lt;br /&gt;
&lt;br /&gt;
Das faszinierende Bauwerk gilt wohl als die bedeutenste Sehenswürdigkeit ganz Regensburgs.&lt;br /&gt;
Die Steinere Brücke wird jedes Jahr von Millionen von Besuchern besbesichtigt&lt;br /&gt;
und wird inzwischen als UNESCO-Welterbe bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Geschichten aus der Bevölkerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Barbara Blomberg ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barbara Blomberg (1527-1597) war die Geliebte von Kaiser Karl V. (1500-1558) und die Mutter von Don Juan D`Austria, der auch der Sieger der Seeschlacht von Lepanto war. Sie war die Tochter des Gürtlermeisters Wolfgang Blomberg und seiner Frau Sibilla Blomberg und aufgrund ihrer Schönheit schon früh in ganz Regensburg bekannt. Ihre Großeltern besaßen ein Gasthaus (&#039;&#039;Zum Goldenen Kreuz&#039;&#039;), in welchem Karl V. am Reichstag 1546 oftmals einkehrte. Während dieser Zeit traf Karl oft auf Barbara, weil er häufig die Hintertür benutzte, um nicht gesehen zu werden. Er traf Barbara nun öfters und benutzte die Ausrede das Holzaroma des Bades im Haus von ihren Großeltern, welches er manchmal benutzte, würde ihm helfen zu entspannen. Er verliebte sich in Barbara und einige Zeit später wurde sie schwanger. Als der &amp;quot;immerwährende&amp;quot; Reichstag beendet war, musste Karl wieder gehen. Alles schien perfekt, doch es gab ein Problem: Barbara und Karl waren nicht verheiratet und als Barbara ihren Sohn gebar wurde sie von den Bewohnern Regensburgs gemieden, aber nicht verjagt. Nach einiger Zeit erinnerte sich Karl an Barbara und reiste 3 Jahre nach Johanns (Don Juan D` Austria) Geburt nach Regensburg zurück, wo er die beiden aufsuchte. Barbara heiratete später dann Hironymus Kegel, der Später den Posten eines Musterungs- und Kriegskommisars bekam. Sie lebten dann gemeinsam in einer Villa in Brüssel und hatten drei gemeinsame Kinder.&lt;br /&gt;
&lt;br /&gt;
== Das Rathaus und die Politik in Regensburg ==&lt;br /&gt;
&lt;br /&gt;
=== Das Alte Rathaus===&lt;br /&gt;
&lt;br /&gt;
=== Der immerwährende Reichstag ===&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=582</id>
		<title>Regensburg im Mittelalter</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Regensburg_im_Mittelalter&amp;diff=582"/>
		<updated>2013-05-16T10:11:01Z</updated>

		<summary type="html">&lt;p&gt;Hoeherl011: /* Die geographische Lage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Klasse 7b beschäftigte sich im Geschichtsunterricht lehrplangemäß mit dem Thema &amp;quot;Die Stadt im Mittelalter&amp;quot;. Dabei wurden die Themen wie Stadtentstehung, der Aufbau der Gesellschaft einer mittelalterlichen Stadt, die Zünfte und die Außenseiter einer Stadt näher besprochen. Ein &amp;quot;Gesicht&amp;quot; bekam das Ganze im Rahmen einer Exkursion nach Regensburg, wo sich die Schülerinnen und Schüler der Klasse 7b genauer über die bedeutenden Bauwerke der Stadt Regensburg und den Aufbau der Stadt im Mittelalter informierten. Im Rahmen des Informatikunterrichts, in dem im ersten Halbjahr die Themen Internet und Erstellen von Websites auf dem Programm standen, präsentieren die Schülerinnen und Schüler ihre Ergebnisse nun auf unserem Schul-Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Lage Regensburgs, der Aufbau der Stadt und der Handel ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die geographische Lage ===&lt;br /&gt;
&lt;br /&gt;
Regensburg liegt in der heutigen Oberpfalz(Deutschland,Bayern ) und liegt somit ganz in der Nähe des bayerischen Waldes und dem Gäuboden der auch die Donauebene gennant wird.&lt;br /&gt;
Außerdem liegt Regensburg an der Donau und den zwei Nebenflüssen Naab und Regen.Von dem zuletzt genannten Fluss stammt der Name ab.&lt;br /&gt;
Regensburg könnte desshalb so wachsen weil diem Stadt eine der wenigen war, wo man durch eine Brücke den Fluss überqueren konnte&lt;br /&gt;
&lt;br /&gt;
=== Der Aufbau der Stadt ===&lt;br /&gt;
Regensburg wurde von den Römern unter dem Namen &amp;quot;Castra Regina&amp;quot; (Das am Regen gelegene Lager) gegründet. Später wurde Regensburg Reichsstadt und unterstand deswegen nur dem Kaiser; deswegen zahlten die Einwohner nur dem Kaiser Steuern. Weil der bayerische Herzog auch Steuern einziehen wollte, errichtete er die Gegenstadt &amp;quot;Stadt am Hof&amp;quot;. Der bayerische Herzog gab den Einwohnern auch  Stadtrechte, aber dennoch wollte niemand dort leben. Ein wichtiger Punkt ist ,dass die Steinerne Brücke eine der wenigen Brücken über die Donau war ,die einzige von Ulm bis Regensburg ,dewegen wurde Regensburg reich durch den Handel. Außerdem konnten sie hohe Steuern von Händlern, die die Brücke überqueren wollten, fordern.&lt;br /&gt;
&lt;br /&gt;
=== Der Handel ===&lt;br /&gt;
Da Regensburg an einem Fluss liegt konnten viele Waren verschifft werden.Zusätzlich war Regensburg einer der wenigen Orte mit Flussübergang. Außerdem war Regensburg weit bevor es eine Stadt wurde, ein Lager der Römer.&lt;br /&gt;
&lt;br /&gt;
== Der Dom ==&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
Die Gesamtlänge innen beträgt 86,00 Meter, Die Breite innen beträgt 34,80 Meter. Um 700 wurde die erste Bischofskirche an der stelle der heutigen Dompfarrkirche Niedermünster. Der Neubau wurde 1273 gestartet ,weil der alte Dom  von einem Feuer ,das vermutlich 1250 ausbrach, zerstört wurde.&lt;br /&gt;
&lt;br /&gt;
== Die Steinerne Brücke ==&lt;br /&gt;
&lt;br /&gt;
==== Besonderes über die Brücke ====&lt;br /&gt;
&lt;br /&gt;
==== Die Entstehung ====&lt;br /&gt;
&lt;br /&gt;
Der Steinernen Brücke ging eine Holzbrücke zuvor, um den Händlern einen Weg in die Stadt zu ermöglichen. Diese musste allerdings oft erneuert werden, da sie gegen Wetter und Wind nicht standhaft war. Daher beschloss man, da die Stadt Regensburg zu dieser Zeit noch sehr wohlhabend war, eine Brücke aus Stein zu bauen. So begann der Bau der Steinernen Brücke im Jahre 1135, diese wurde innerhalb von 11 Jahren (!) im Jahre 1146 fertiggestellt. Für damalige Verhältnisse war das mit der stattlicher Höhe von 15 m, einer Breite von 8 m und einer Gesamtläge von 336 m eine bewundernswert kurze Bauspanne. Die Steinerne Brücke war ganze 800 Jahre die einzige Donaubrücke in Regensburg.&lt;br /&gt;
&lt;br /&gt;
==== Die Bauweise ====&lt;br /&gt;
&lt;br /&gt;
Bei der Fertigstellung der Steinernen Brücke im Jahre 1146 verfügte sie über drei Türme, von denen aber nur einer bis heute erhalten geblieben ist. Während eines Krieges wurden der mittlere und südliche Turm angezündet und fast vollständig niedergebrannt. Am Ende dieses Krieges wurden die beiden Türme 1648 wieder hergestellt, allerdings wurde der mittlere Turm 1784 abgebrochen, nachdem er durch einen Eisstoß fast zerstört worden war. Bei der Rückeroberung wurde der nördliche Turm 1809 beschädigt und 1810 schließlich abgebrochen. Den südlichen Turm kann man noch heute bewundern, da er, wie oben schon erwähnt, bis heute erhalten geblieben ist.&lt;br /&gt;
&lt;br /&gt;
Im Dreißigjährigen Krieg wurde 1633 das vierte, heute das dritte (sichtbare), Brückenjoch durch eine Sprengung zerstört und durch eine Holzzugbrücke ersetzt. Erst 1790 bis 1791 wurde diese Lücke wieder geschlossen, der Torbogen südlich neben dem Brückturm und die Brückenverbreitung wurden allerdings erst am Anfang des 20. Jahrhunderts gebaut. Im Jahr 1732 wurde die Fahrbahn der Brücke verbreitert, 1877 wurde die Brücke mit Granitplatten ausgestattet und die Verbindungsrampe, die ursprünglich aus Holz war, wurde durch Eisen ersetzt. Die Brücke wurde 1950 mit Brüstungen aus Betonplatten versehen. Bis heute wurden immer wieder Sanierungen unternommen und die Steinerne Brücke ist bis heute eine bekannte Sehenswürdigkeit.&lt;br /&gt;
&lt;br /&gt;
==== Die Sage der Brücke ====&lt;br /&gt;
&lt;br /&gt;
Es wird eine Sage erzählt, warum die Regensburger Brücke in nur 11 Sommern, eine damals kurze Bauweise, erbaut wurde.&lt;br /&gt;
In dieser Sage spielt auch der Regensburger Dom eine wichtige Rolle.&lt;br /&gt;
&lt;br /&gt;
Zwei Baumeister wetteten, wer schneller bauen könne.&lt;br /&gt;
Der Dombauer war jedoch schneller, sodass&lt;br /&gt;
sich der Brückenbauer mit dem Teufel verband, der ihm beim Brückenbau half.&lt;br /&gt;
Sein Lohn: Die ersten drei Seelen, die über die Brücke gingen.&lt;br /&gt;
Dadurch wurde die Brücke in 11 Jahren erbaut.&lt;br /&gt;
Nach dem Ende der Bauzeit hetzte der Brückenbauer Tiere über Brücke, die Seelen für den Teufel.&lt;br /&gt;
Dieser war darüber aber sehr zornig, sodass er versuchte, die Brücke einzureißen;&lt;br /&gt;
diese war jedoch so stabil, sodass er nur einen Knick in die  Brücke machte.&lt;br /&gt;
&lt;br /&gt;
==== Die Steinere Brücke als Touristenattraktion ====&lt;br /&gt;
&lt;br /&gt;
Das faszinierende Bauwerk gilt wohl als die bedeutenste Sehenswürdigkeit ganz Regensburgs.&lt;br /&gt;
Die Steinere Brücke wird jedes Jahr von Millionen von Besuchern besbesichtigt&lt;br /&gt;
und wird inzwischen als UNESCO-Welterbe bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Geschichten aus der Bevölkerung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Barbara Blomberg ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Barbara Blomberg (1527-1597) war die Geliebte von Kaiser Karl V. (1500-1558) und die Mutter von Don Juan D`Austria, der auch der Sieger der Seeschlacht von Lepanto war. Sie war die Tochter des Gürtlermeisters Wolfgang Blomberg und seiner Frau Sibilla Blomberg und aufgrund ihrer Schönheit schon früh in ganz Regensburg bekannt. Ihre Großeltern besaßen ein Gasthaus (&#039;&#039;Zum Goldenen Kreuz&#039;&#039;), in welchem Karl V. am Reichstag 1546 oftmals einkehrte. Während dieser Zeit traf Karl oft auf Barbara, weil er häufig die Hintertür benutzte, um nicht gesehen zu werden. Er traf Barbara nun öfters und benutzte die Ausrede das Holzaroma des Bades im Haus von ihren Großeltern, welches er manchmal benutzte, würde ihm helfen zu entspannen. Er verliebte sich in Barbara und einige Zeit später wurde sie schwanger. Als der &amp;quot;immerwährende&amp;quot; Reichstag beendet war, musste Karl wieder gehen. Alles schien perfekt, doch es gab ein Problem: Barbara und Karl waren nicht verheiratet und als Barbara ihren Sohn gebar wurde sie von den Bewohnern Regensburgs gemieden, aber nicht verjagt. Nach einiger Zeit erinnerte sich Karl an Barbara und reiste 3 Jahre nach Johanns (Don Juan D` Austria) Geburt nach Regensburg zurück, wo er die beiden aufsuchte.&lt;br /&gt;
&lt;br /&gt;
== Das Rathaus und die Politik in Regensburg ==&lt;br /&gt;
&lt;br /&gt;
=== Das Alte Rathaus===&lt;br /&gt;
&lt;br /&gt;
=== Der immerwährende Reichstag ===&lt;/div&gt;</summary>
		<author><name>Hoeherl011</name></author>
	</entry>
</feed>