Wie sinnvoll ist ein Lehramtsstudium wirklich?

In Österreich ist die Situation so, dass alle Lehrer*Innen, die an der NMS und an der AHS unterrichten möchten ein Lehramtsstudium abgeschlossen haben müssen.

Die Frage ist jedoch, ob so ein Studium in allen Schulfächern so sinnvoll ist. Zum Beispiel sind die Lehramtsstudien in Informatik, Physik, Mathematik und Chemie extrem theorielastig und man lernt kaum etwas aus der echten Praxis von Physikern, Chemikern, Informatikern, usw.

Ein Schulfach sollte ja Schülern auch einen gewissen Realitätsbezug bieten und deshalb wäre es eigentlich sinnvoll, wenn in den MINT-Fächern speziell Praktiker*innen zum Einsatz kommen die ein entsprechendes Zusatzstudium mit Fachdidaktik und Pädagogik absolviert haben bzw. gleichzeit mit dem Schuleinsatz eine Zusatzausbildung absolvieren.

Außerdem könnte man auch BWLer*Innen, Physiker*Innen, Chemiker*Innen Mathematik unterrichten lassen, da diese Studien oft auch mit einem hohen Anteil an Mathematik einher gehen.

Ich habe das Gefühl, dass unser Lehrer*Innen-System bzw. unser Schulsystem kaum hinterfragt wird und noch immer alles so gemacht wird, wie das schon vor hunderten von Jahren gemacht wurde.

Wie denkt ihr über dieses Thema? Was würdet ihr an unserem Schulsystem ändern?

Studium, Schule, Mathematik, Wirtschaft, Pädagogik, Bildung, Biologie, Psychologie, Biologieunterricht, BWL, Didaktik, Forschung, Gymnasium, hausübung, Informatik, Informatiker, Lehramt, Lehrer, Lehrerin, Physik, Physiker, Schulsystem, Bildungssystem, Mint, ahs, Informatikstudium, Lehrer Schüler, Lehrer werden, Uni Wien, Universität Wien, Chemiestudium, Ausbildung und Studium, Nms, MINT-Fächer, Beruf und Büro
Stimmt dieses Python Craps Programm?

Hallo,

wir müssen in Informatik unser eigenes Craps Spiel programmieren.

Die beiden Würfel werden geworfen. Wenn die Augensumme 7 oder 11 beträgt, hat man gewonnen. Wenn die Augensumme 2, 3 oder 12 beträgt, hat man verloren. Ansonsten wird weitergewürfelt, bis eine Entscheidung gefallen ist. Bei jedem weiteren Wurf der beiden Würfel hat man verloren, wenn eine 7 fällt, und gewonnen, wenn die neue Augensumme gleich der Augensumme im ersten Wurf ist.

Ich bin mir jedoch sehr unsicher, ob ich es richtig programmiert habe, ich bekomme am Ende ein Ergebnis, jedoch bin ich mir unsicher, ob das Spiel nach den Spielregeln ausgeführt wird.

Ich bitte um Hilfe und bedanke mich im Voraus.

Hier der Code:

from random import randint;


#Eingang
print('Dieses Programm simuliert das bekannte Casino-Spiel "Craps". Der Spieler wirft ein normales Paar Würfel.')
print('Beträgt die Augensumme am Ende 2, 3 oder 12, hat der Spieler verloren. Beträgt die Augensumme 7 oder 11, hat der Spieler gewonnen.')
print('Bekommt man keine dieser Augensumme wird weitergewürfelt, bis eine Entscheidung gefallen ist.')
print('Bei jedem weiteren Wurf der beiden Würfel hat man verloren, wenn eine 7 fällt, und gewonnen,')
print('wenn die neue Augensumme gleich der Augensumme im ersten Wurf ist.\n')


anzahl = int(input("Gib die Anzahl der zu simulierenden Craps-Spiele ein: "))


#Verarbeitung


hilf = 0
gewinn = 0
weiterwuerfeln = 0


while hilf < anzahl:


    hilf = hilf + 1


    wuerfel1 = randint(1, 6)
    wuerfel2 = randint(1, 6)
    ergebnis = wuerfel1 + wuerfel2


    if ergebnis == 2 or ergebnis == 3 or ergebnis == 12:
        gewinn = gewinn + 0
    
    elif ergebnis == 7 or ergebnis == 11:
        gewinn = gewinn + 1


    else:


        while weiterwuerfeln != 7 and weiterwuerfeln != ergebnis:


            wuerfelneu1 = randint(1, 6)
            wuerfelneu2 = randint(1, 6)


            weiterwuerfeln = wuerfelneu1 + wuerfelneu2


            if weiterwuerfeln == ergebnis:
                gewinn = gewinn + 1


            if weiterwuerfeln == 7:
                gewinn = gewinn


print('Von', anzahl, 'simulierten Craps-Runden, waren ', gewinn, ' Gewinne dabei, daraus ergibt sich eine Gewinnrate von '+ str(100*(gewinn/anzahl)) + '%.') 
Computer, Schule, programmieren, Informatik, Python
Warum dauert dieser C# Task so lange?

Was ist beim Mischen von synchronen mit asynchronen Tasks in C# das Problem, sodass der folgende Code extrem lange zur Ausführung benbötigt?

var sema = new SemaphoreSlim(1);

var tasks = new List<Task>();

for (int i = 0; i < 20; i++)
{
    var t2 = Task.Run(async () =>
    {
        var sw = new Stopwatch();
        sw.Start();
        await sema.WaitAsync().ConfigureAwait(false);
        try
        {
            await Task.Delay(1).ConfigureAwait(false);
        }
        finally
        {
            sema.Release();
        }
        sw.Stop();
        Console.WriteLine($"sync {sw.Elapsed}");
    });

    var t1 = Task.Run(() =>
    {
        var sw = new Stopwatch();
        sw.Start();
        sema.Wait();
        try
        {
        }
        finally
        {
            sema.Release();
        }
        sw.Stop();
        Console.WriteLine($"async {sw.Elapsed}");
    });

    tasks.Add(t1);
    tasks.Add(t2);
}

await Task.WhenAll(tasks).ConfigureAwait(false);

Ausgabe: es dauert 16 Sekunden!!! Nur die erste Ausgabe ist schnell, der Rest nach 16 Sekunden.

sync 00:00:00.8306484
sync 00:00:16.8401071
... Rest

Nehme ich beide male synchrone Tasks, geht es wesentlich schneller:

var sema = new SemaphoreSlim(1);

var tasks = new List<Task>();

for (int i = 0; i < 20; i++)
{
    var t2 = Task.Run(async () =>
    {
        var sw = new Stopwatch();
        sw.Start();
        await sema.WaitAsync().ConfigureAwait(false);
        try
        {
            await Task.Delay(1).ConfigureAwait(false);
        }
        finally
        {
            sema.Release();
        }
        sw.Stop();
        Console.WriteLine($"sync {sw.Elapsed}");
    });

    var t1 = Task.Run(async () =>
    {
        var sw = new Stopwatch();
        sw.Start();
        await sema.WaitAsync().ConfigureAwait(false);
        try
        {
        }
        finally
        {
            sema.Release();
        }
        sw.Stop();
        Console.WriteLine($"async {sw.Elapsed}");
    });

    tasks.Add(t1);
    tasks.Add(t2);
}

await Task.WhenAll(tasks).ConfigureAwait(false);

Ausgabe: alles nach etwa 300ms fertig.

async 00:00:00.0180861
sync 00:00:00.3329542
...

Was passiert da im Hintergrund? Ich weiß, dass man snchrone mit asynchronen Tasks nicht mischen soll, aber die 16 Sekunden sind schon heftig und kommen fast einem Deadlock gleich. Was passiert nach 16 Sekunden, dass es dann plötzlich weitergeht ;-) ?

programmieren, C Sharp, Informatik
C#: Wie kann ich die binäre Suche am besten schreiben?

Hallo alle zusammen.

Ich habe eine Frage bezüglich dieses Quellcodes hier.

static void Main(string[] args)
{
  int[] Reihe = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // Anlegen eines Arrays
  int max; // Bestimmung der Variablen
  int min;
  int mid;
  int Zahl;
  bool erfolgreich = false;
  
  min = 0;
  max = Reihe[9];

  foreach(int write in Reihe) // Ausgabe der vorhandenen Zahlen
  {
    Console.WriteLine(write);
  }

  Console.WriteLine("Geben Sie Ihre Zahl ein, damit wir überprüfen können, ob diese im System hinterlegt ist."); // Abfrage der gesuchten Zahl
  Zahl = Convert.ToInt32(Console.ReadLine());
  
  while (min <= max) // Mittelwert ermitteln
  {
    mid = (min + max) / 2;
    mid = Reihe[mid];

    if (mid < Zahl) // Wenn gesuchte Zahl größer als der Mittelwert, befindet sich der Wert in der rechten Hälfte
    {
      min = mid + 1;
    }

    if (mid > Zahl) // Wenn gesuchte Zahl kleiner als der Mittewert, befindet sich der Wert in der linken Hälfte
    {
      max = mid - 1;
    }

    if (mid == Zahl) // Wenn gesuchte Zahl gleich dem Mittelwert = Suche erfolgreich
    {
      erfolgreich = true;
      break;
    }
  }

  if (erfolgreich == true) // Ausgabe, ob die Zahl gefunden wurde oder nicht
  {
    Console.WriteLine("Ihre Zahl, die Sie eingegeben haben, ist im System hinterlegt.");
    Console.ReadLine();
  }
  else
  {
    Console.WriteLine("Ihre Zahl, die Sie eingegeben haben, ist NICHT im System hinterlegt.");
    Console.ReadLine();
  }

Und zwar möchte ich ein Programm schreiben, welches eine binäre Suche in einem Programm durchführt. Aber ich bekomme es nicht genau hin.

Die Funktion soll sein, dass, wenn ich das Programm starte eine Abfrage kommt, wo man dann eine gewünschte Zahl eingibt und danach Bescheid bekommt, ob diese in der Reihe vorhanden ist.

Wenn ich dort eine falsche Zahl eingebe, die nicht in der Reihe ist, kommt eine Fehlermeldung. Außerdem klappt das Programm wirklich nur, wenn im Array {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } steht. Aber hier hätte ich auch gerne andere Werte.

Danke im Voraus.

MfG

Computer, Schule, programmieren, Informatik

Meistgelesene Beiträge zum Thema Informatik