Vokabeltrainer Prgrammiern

10/11/2012 22:13 elitewache#1
Hey

Ich hab mir gedacht es wäre ne coole Idee mal einen Vokabeltrainer zu Programmieren gibts zwar ein Paar bei google suche aber finde da nix passendes.

Ich will mir einfach ein Programm basteln das aus einer .txt datei oder so z.b. 50 vokabeln ausliest und diese dann per Zufall nacheinander Abfragt.

Jetzt wollte ich fragen welche Programmier sprache sich dazu am besten eignet vermute mal Visual Basics oder?

Also das sollte so aussehen das ich in eine Datei meine aktuellen Vokabeln eintrage z.b. so

Deutsches Wort Spanisches Wort

und dann kann man einstellen nach Deutsch fragen oder nach Spanisch fragen und die vokabeln werden dann zufällig angeordnet und abgefragt.

Bei falsch eingabe sollte das richtige danach angezeigt werden damit man sieht wies geschrieben wird oder so.

Wäre echt nett wenn mir jemand paar tipps zu sowas sagen kann.

Evtl. kennt ja auch jemand ein gutes Programm das sowas kann wäre auch nicht schlecht.
10/11/2012 23:46 boxxiebabee#2
Dazu gab es schon einmal paar Threads.
Wenn du schnelle Erfolge haben willst, und dich auf Windows beschränken willst dann Empfehle ich dir eine .NET Sprache wie z.B. C# (CSharp).

Hab dir mal was extrem simples zusammen gebastelt was das abdeckt was du wolltest:
Code:
using System;
using System.Collections.Generic;
using System.IO;

namespace Vokabel
{
    internal class Program
    {
        private const string File = "vokabel.txt";

        private static void Main()
        {
            IList<Vokabel> dict = VokabelEinlesen(File);
            var rnd = new Random();
            Console.WriteLine("Willkommen zum Vokabeltrainer.\r\nVerfügbare Sprachen:\r\n[1] Deutsch\r\n[2] Englisch\r\n\nNach welcher Sprache soll gefragt werden?");
            int sprache = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("\r\nSchreibe 'Exit' um das Programmzu schließen.\r\n");
            while (true)
            {
                int index = rnd.Next(0, dict.Count - 1);
                if (sprache == 1)
                {
                    Console.Write(dict[index].Englisch + ":");
                    string antwort = Console.ReadLine();
                    if (antwort == dict[index].Deutsch)
                        Console.WriteLine("Richtig!");
                    else if (antwort == "Exit")
                        break;
                    else
                        Console.WriteLine("Falsch! Richtige Antwort: " + dict[index].Deutsch);
                }
                else
                {
                    Console.Write(dict[index].Deutsch + ":");
                    string antwort = Console.ReadLine();
                    if (antwort == dict[index].Englisch)
                        Console.WriteLine("Richtig!");
                    else if (antwort == "Exit")
                        break;
                    else
                        Console.WriteLine("Falsch! Richtige Antwort: " + dict[index].Englisch);
                }
                Console.WriteLine("\r\n---------------------------------------\r\n");
            }
        }

        public static IList<Vokabel> VokabelEinlesen(string file)
        {
            IList<Vokabel> dict = new List<Vokabel>();
            using (var reader = new StreamReader(file))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    string[] temp = line.Split(':');
                    dict.Add(new Vokabel {Deutsch = temp[0], Englisch = temp[1]});
                }
            }
            return dict;
        }
    }

    public class Vokabel
    {
        public string Deutsch { get; set; }
        public string Englisch { get; set; }
    }
}
Vokabel werden aus einer Textdatei gelesen, und der User kann auswählen nach welcher Sprache (Englisch, Deutsch) er gefragt werden will.

vokabel.txt:
Code:
hund:dog
fisch:fish
katze:cat
schwein:pig
pferd:horse
vogel:bird
ameise:ant
10/11/2012 23:57 マルコ#3
Für sowas einfaches ist es so ziemlich egal, was für eine Sprache du nimmst. Und wenn du mit .NET (oder VCL) arbeitest, kannst du es ziemlich leicht mit Forms erzeugen.

Theoretisch musst du es dann einfach so programmieren, das du die Vokabeln Zeile für Zeile ausliest, nach einem eindeutigen Separator (zum Beispiel Doppelpunkt) suchst, dort trennst, und alles in ein 2D Array speicherst. Dann kannst du per Zufallszahl einfach eine Zahl aus dem Array auswählen.

Pseudocode Beispiel:
Code:
openfile("xyz.txt")
while (line = readline())
begin
  2darray[nextposition][0] := read2symbol(":")
  2darray[nextposition][1] := readfromsymbol(":")
end
closefile()

while (not end)
begin
  i := random(count(2darray))
  print("Das spanische Wort für %s ist: ", 2darray[i][1])
  input := read&newline()
  if (uppercase(input) = uppercase(2darray[i][0]))
    print&newline("ok")
  else
    print&newline("Falsch, das Wort wäre %s gewesen", 2darray[i][1])
end
cleanup()
Persönlich empfehle ich Delphi. Dafür gibt es die kostenlose Entwicklungsumgebung Lazarus: [Only registered and activated users can see links. Click Here To Register...]
Oder du nimmst Visual Studio Express und wählst dann eine andere Sprache, z.B. C++, C#, VB,...
Delphi arbeitet mit VCL, die anderen mit .NET, falls du eine Form nehmen willst.
Gleich von vorne weg, mein Beispiel arbeitet ohne Form. Ohne Form ist es wahrscheinlich leichter, vor allem für einen Anfänger.

Was du auch machen kannst wäre das ganze mit JavaScript umzusetzen. Dazu reicht ein Texteditor. Und du kannst einfach eine Methode machen, die vom Browser per Knopfdruck ausgeführt wird. JS (JavaScript) wäre der allereinfachste Ansatz, aber du erstellst damit eben kein Programm, sondern "nur" einen Script. Das Ergebnis sollte das gleiche sein. Da der Vokabeltrainer wahrscheinlich nur für dich gedacht ist, musst du dir selbst überlegen, wie du es brauchst.
10/12/2012 20:30 Gamekeystore#4
Kleiner Tipp: Streamwriter, bzw. -reader
Random