+ Antworten
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 21 bis 40 von 50

C# Ampel Programmierung

Eine Diskussion über C# Ampel Programmierung im Forum Hausaufgaben. Teil des Reallife-Bereichs; Alter Schwede...

  1. #21
    Brigadegeneral
    Avatar von Lunak
    Registriert seit
    22.10.2008
    Ort
    Bavaria
    Alter
    27
    Beiträge
    23.613
    Name
    Flo
    Nick
    Lunak
    Clans
    MSF
    Alter Schwede

  2. #22
    Oberleutnant
    Avatar von RhiNoTaNk
    Registriert seit
    09.12.2002
    Ort
    Bautzen
    Alter
    28
    Beiträge
    7.533
    Name
    Christoph
    Nick
    ThriLLseekeR
    Clans
    MUM,HFD,WK
    Zitat Zitat von stefros Beitrag anzeigen
    Hab dieses Jahr eine Ampel auf Assembler-Ebene programmiert, C ist mir da zu hoch...
    Dieses Vergnügen habe ich dieses Jahr auch noch

    Assembler ftw
    Der Klügere kippt nach!!!

  3. #23
    Administrator
    Avatar von stefros
    Registriert seit
    28.07.2001
    Ort
    Hamburg
    Alter
    33
    Beiträge
    62.610
    Name
    Stefan
    Nick
    stefros1983
    Clans
    United-Forum
    Zitat Zitat von jonnylicious Beitrag anzeigen
    ok, geben wir folgendes vor: bei Klick auf den Button soll in die nächste Ampelphase gewechselt werden
    Wo gibts denn sowas? Klingt nach nem ziemlichen Verkehrschaos...
    Zitat Zitat von zokker13 Beitrag anzeigen
    Danke für die Hilfe, ich darf aber wie gsagt nur If&else benutzen, bei timern, true ect. sind wir nochgarnicht...
    Du kannst mit IF einen Timer bauen....

    Code:
    HALLO
    k = k + 1
    if k = 1000 
    goto TSCHUESS
    else
    goto HALLO
    endif
    TSCHUESS
    @Gonzo: Wer programmiert denn für Windows? ^^

  4. #24
    UF Supporter
    Avatar von BseBear
    Registriert seit
    27.09.2003
    Ort
    Stuttgart
    Alter
    31
    Beiträge
    3.945
    Name
    Michael
    Nick
    bsebear
    stef, wenn in ner Vorlesung/Unterrichtsstunde mit Hochsprachen gearbeitet wird, ist es lebensgefährlich "gotos" vorzuschlagen

  5. #25
    Administrator
    Avatar von stefros
    Registriert seit
    28.07.2001
    Ort
    Hamburg
    Alter
    33
    Beiträge
    62.610
    Name
    Stefan
    Nick
    stefros1983
    Clans
    United-Forum
    Warum das? "gotos" rocken total!
    Sie haben ja noch keine Do-While-Schleife, da lässt sich das nicht anders lösen.

  6. #26
    Board-Koryphäe
    Avatar von jonnylicious
    Registriert seit
    17.12.2001
    Ort
    Chemnitz
    Alter
    28
    Beiträge
    22.860
    Name
    Jonny
    Nick
    iamjonny
    Zitat Zitat von stefros Beitrag anzeigen
    Wo gibts denn sowas? Klingt nach nem ziemlichen Verkehrschaos...
    wie schon erwähnt würde ich Ampeln über Timer oder Sensoren schalten ... aber in seiner Aufgabenstellung wird scheinbar ein Button verlangt, also muss ich dem ja irgendeinen Sinn geben
    Zitat Zitat von zokker13 Beitrag anzeigen
    Danke für die Hilfe, ich darf aber wie gsagt nur If&else benutzen, bei timern, true ect. sind wir nochgarnicht...
    Hier nochmal der Code:

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9.  
    10. namespace Ample
    11. {
    12. public partial class Form1 : Form
    13. {
    14. public Form1()
    15. {
    16. InitializeComponent();
    17. }
    18.  
    19. private void cmdStart_Click(object sender, EventArgs e)
    20. {
    21. if (pnlRot.BackColor == Color.Gray)
    22. {
    23. this.pnlRot.BackColor = Color.Red;
    24. }
    25.  
    26.  
    27. else if (pnlRot.BackColor == Color.Red)
    28. {
    29. this.pnlGelb.BackColor = Color.Yellow;
    30.  
    31. }
    32.  
    33.  
    34. }
    35. }
    36. }

    Ich will erst alle Farben haben.
    Also Klick1 Rot geht an
    Klick 2 Gelb geht an, Rot bleibt.
    Klick 3 Grün geht an, Rot u. Gelb bleibt.

    Das will ich erstmal haben, dannach will ich erst Rot nachdem Gelb aufleutet, wieder grau machen.

    Dannach mache ich noch ein Reset-Knopf.

    Aber zuerst alle Farben haben.

    Habs schon versucht, aber ich bekomme einfach das letzte Panel nicht zum leuchten. =/
    ich denke, du musst auf jeden Fall mit gekoppelten Bedingungen arbeiten, also "and"

    weil: die Abfrage, ob das Feld für rot gerade grau ist, zeigt ja noch nicht, ob gerade gelb oder grün an ist. Wahrscheinlich entsteht da auch der Fehler beim letzten Panel, da sich dann möglicherweise eine Abfrage überschneidet oder so

    wenn du meine Logik von oben so umbaust, dass du die Check-Felder weg lässt und einfach nur die aktuellen Farben abfragst, müsstest du ohne True und False auskommen.

    ich versuche es mal:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9.  
    10. namespace Ample
    11. {
    12. public partial class Form1 : Form
    13. {
    14. public Form1()
    15. {
    16. InitializeComponent();
    17. }
    18.  
    19. private void cmdStart_Click(object sender, EventArgs e)
    20. {
    21. if (pnlRot.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Gray)
    22. {
    23. this.pnlRot.BackColor = Color.Red;
    24. this.pnlGelb.BackColor = Color.Gray;
    25. }
    26.  
    27.  
    28. else if (pnlRot.BackColor == Color.Red) and (pnlGelb.BackColor == Color.Gray)
    29. {
    30. this.pnlRot.BackColor = Color.Red;
    31. this.pnlGelb.BackColor = Color.Yellow;
    32.  
    33. }
    34.  
    35.  
    36. else if (pnlRot.BackColor == Color.Red) and (pnlGelb.BackColor == Color.Yellow)
    37. {
    38. this.pnlRot.BackColor = Color.Gray;
    39. this.pnlGelb.BackColor = Color.Gray;
    40. this.pnlGruen.BackColor = Color.Gruen;
    41.  
    42. }
    43.  
    44.  
    45. else if (pnlGelb.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Green)
    46. {
    47. this.pnlGelb.BackColor = Color.Yellow;
    48. this.pnlGruen.BackColor = Color.Gray;
    49.  
    50. }
    51.  
    52. }
    53. }
    54. }
    ich kann leider kein C, daher weiß ich nicht, ob ich die Zuweisungen so richtig gemacht habe, aber von der Logik her sollte es so stimmen

    nochmal zur Erklärung:

    Abfrage 1: fragt ab, ob Rot und Grün aus sind -> nur Gelb ist an -> Schaltung auf Rot
    Abfrage 2: fragt ab, ob Rot an und Gelb aus ist -> Gelb wird dazu geschaltet
    Abfrage 3: fragt ab, ob Rot und Gelb an sind -> beide werden aus- und Grün wird angeschaltet
    Abfrage 4: fragt ab, ob Gelb aus und Grün an ist -> Gelb schaltet an, Grün aus

    der Vereinfachung halber würde ich das ganze beginnen, indem ich die Ampel auf Rot setze, bevor die Abfrage beginnt. So wie ich es gemacht habe, müsste es aber das selbe bewirken

  7. #27
    Zitat Zitat von stefros Beitrag anzeigen
    Du kannst mit IF einen Timer bauen....

    Code:
    HALLO
    k = k + 1
    if k = 1000 
    goto TSCHUESS
    else
    goto HALLO
    endif
    TSCHUESS
    Ein ziemlicher busy-Timer. Man hätte zumindest noch ein paar schöne Interpolationsfehler abschätzen lassen können, wenn man schon die CPU auf 100% Auslastung bringen will.

    Zitat Zitat von jonnylicious Beitrag anzeigen
    Abfrage 1: fragt ab, ob Rot und Grün aus sind -> nur Gelb ist an -> Schaltung auf Rot
    Abfrage 2: fragt ab, ob Rot an und Gelb aus ist -> Gelb wird dazu geschaltet
    Abfrage 3: fragt ab, ob Rot und Gelb an sind -> beide werden aus- und Grün wird angeschaltet
    Abfrage 4: fragt ab, ob Gelb aus und Grün an ist -> Gelb schaltet an, Grün aus
    Ich wäre ja für eine FLAG, denn ich mag das MVC-Pattern.
    D.h. man sollte den Status der Ampel in einer anderen Variablen abstrahieren und sich nicht danach richten, welche Farben auf dem Panel angezeigt werden (wobei dies natürlich korrelieren sollte).
    Somit spart man sich Arbeit bei späteren Änderungen der Farben und/oder neuen Phasen.
    Ein negativer Aspekt ist jedoch, dass man damit dem SE-Institut einen gefallen tut :/

  8. #28
    Board-Koryphäe
    Avatar von jonnylicious
    Registriert seit
    17.12.2001
    Ort
    Chemnitz
    Alter
    28
    Beiträge
    22.860
    Name
    Jonny
    Nick
    iamjonny
    Zitat Zitat von Osbes Beitrag anzeigen
    Ich wäre ja für eine FLAG, denn ich mag das MVC-Pattern.
    D.h. man sollte den Status der Ampel in einer anderen Variablen abstrahieren und sich nicht danach richten, welche Farben auf dem Panel angezeigt werden (wobei dies natürlich korrelieren sollte).
    das hatte ich doch mit meinen Check-Variablen und True/False-Abfragen versucht, aber er hat ja geschrieben, dass sie das nicht dürfen

    oder meinst du das so, dass man jedem Ampelstatus beispielsweise eine Nummer zuweist, also

    Nur Rot = 1
    Rot und Gelb = 2
    Nur Gelb = 3
    Nur Grün = 4

    und den dann entsprechend auf einen Variable schreibt, abfragt und neu zuweist ?

  9. #29
    Brigadegeneral
    Avatar von Lunak
    Registriert seit
    22.10.2008
    Ort
    Bavaria
    Alter
    27
    Beiträge
    23.613
    Name
    Flo
    Nick
    Lunak
    Clans
    MSF
    Jungs zokker hat das Fach seit 2 Wochen ich glaub nich das er überhaupt schon bool kennt
    BTW: Unsere Ampeln ham wirklich keine Rotgelbphase^^

  10. #30
    Administrator
    Avatar von stefros
    Registriert seit
    28.07.2001
    Ort
    Hamburg
    Alter
    33
    Beiträge
    62.610
    Name
    Stefan
    Nick
    stefros1983
    Clans
    United-Forum
    Dann bist du wohl nicht in Deutschland:

    Rot-Gelb: Zwischen Rot und Grün: Achtung, gleich wird die Erlaubnis zur Fahrt gegeben (zum Beispiel in Deutschland, Großbritannien, Österreich, Ungarn, Schweiz, Polen, Norwegen, Russland, Schweden, Saudi-Arabien)
    http://de.wikipedia.org/wiki/Ampel

  11. #31
    Brigadegeneral
    Avatar von Lunak
    Registriert seit
    22.10.2008
    Ort
    Bavaria
    Alter
    27
    Beiträge
    23.613
    Name
    Flo
    Nick
    Lunak
    Clans
    MSF
    Naja ich war aufn Weg ins Bierzelt da hatte ich das Vergnügen (noch im nüchternen Zustand-) ner Ampel zuschauen zu dürfen^^
    Aber hey jetzt kann ich wenigstens sagen wir ham die geilsten Ampeln von Deutschland

  12. #32
    Zitat Zitat von jonnylicious Beitrag anzeigen
    oder meinst du das so, dass man jedem Ampelstatus beispielsweise eine Nummer zuweist, also

    Nur Rot = 1
    Rot und Gelb = 2
    Nur Gelb = 3
    Nur Grün = 4

    und den dann entsprechend auf einen Variable schreibt, abfragt und neu zuweist ?
    Genau, ich würde eine Variable anlegen und dieser Nummern (von 0 beginnend) zuweisen, wobei jede Zahl einen Zustand darstellt.
    Man könnte dies dann noch durch Switch und Konstanten verschönern, aber das ist wohl noch nicht bekannt.

    Wenn man übrigens pedantisch sein will, dann wissen wir auch gar nicht, ob er AND verwenden darf, da nicht geklärt ist, welche Operatoren bekannt sind.

    Zitat Zitat von zokker13 Beitrag anzeigen
    Habs schon versucht, aber ich bekomme einfach das letzte Panel nicht zum leuchten. =/
    Ich denke es wäre sehr gut, wenn du uns zeigst, was du für das letzte Panel programmiert hast, denn wenn du

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9.  
    10. namespace Ample
    11. {
    12. public partial class Form1 : Form
    13. {
    14. public Form1()
    15. {
    16. InitializeComponent();
    17. }
    18.  
    19. private void cmdStart_Click(object sender, EventArgs e)
    20. {
    21. if (pnlRot.BackColor == Color.Gray)
    22. {
    23. this.pnlRot.BackColor = Color.Red;
    24. }
    25.  
    26. else if (pnlRot.BackColor == Color.Red)
    27. {
    28. this.pnlGelb.BackColor = Color.Yellow;
    29.  
    30. }
    31.  
    32. else if (pnlGelb.BackColor == Color.Yellow)
    33. {
    34. this.pnlGreen.BackColor = Color.Green;
    35.  
    36. }
    37. }
    38. }
    39. }
    40.  

    geschrieben hast, dann erreicht er niemals

    1. else if (pnlGelb.BackColor == Color.Yellow)
    2. {
    3. this.pnlGreen.BackColor = Color.Green;
    4.  
    5. }

    da er ständig bei

    1. else if (pnlRot.BackColor == Color.Red)
    2. {
    3. this.pnlGelb.BackColor = Color.Yellow;
    4.  
    5. }
    abbrich, denn die rote Lampe leuchtet ja weiterhin.


    Nur mit IF kann es jedoch ohne einen weiteren Wert gar nicht lösbar sein, dann wenn du bei Gelb bist, woher willst du dann wissen, ob es nun von Gelb -> Grün, oder von Gelb -> Rot geht?

  13. #33
    Feldwebel
    Avatar von Gonzo
    Registriert seit
    13.07.2004
    Ort
    Berlin
    Alter
    46
    Beiträge
    1.669
    Code:
    if (pnlRot.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Gray)
    Bin mir da jetzt nicht 100% sicher, in C(#) gibt es doch kein 'and' sondern '&&' oder ?
    Ausserdem muss der ganze Ausdruck nach dem 'if' noch eingeklammert werden weil nach if() sonst Schluss wäre mit dem if.
    Code:
    if ((pnlRot.BackColor == Color.Gray) && (pnlGruen.BackColor == Color.Gray))
    Mal abgesehen davon würde ich das wahrscheinlich nicht mit if/else bzw. else if lösen, sondern einfach nur Klicks mitzählen und dann
    dementsprechend die Ampel schalten, aber das wäre ja sozusagen Thema verfehlt .
    Geändert von Gonzo (05.09.2009 um 15:15 Uhr)

    MfG
    Gonzo

  14. #34
    Zitat Zitat von Gonzo Beitrag anzeigen
    Code:
    if (pnlRot.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Gray)
    Bin mir da jetzt nicht 100% sicher, in C(#) gibt es doch kein 'and' sondern '&&' oder ?
    Ja, sofern man es nicht um AND erweitert gibt es zunächst nur &&

  15. #35
    Feldwebel
    Avatar von Gonzo
    Registriert seit
    13.07.2004
    Ort
    Berlin
    Alter
    46
    Beiträge
    1.669
    Dass man sich nahezu alles deklarieren kann ist schon klar
    Aber wozu 'and' deklarieren wenn es doch schon '&&' gibt ?

    MfG
    Gonzo

  16. #36
    Ich finde, dass man AND besser erkennen kann, daher definiere ich es meist über den Präprozessor (in C).

  17. #37
    Feldwebel
    Avatar von Gonzo
    Registriert seit
    13.07.2004
    Ort
    Berlin
    Alter
    46
    Beiträge
    1.669
    Ansichtssache
    Finde es nur unnötig, falls sich mal jemand anderes den Code ansieht stolpert er erst mal darüber.
    AND, wat soll dat denn ?
    Kann aber auch sein, dass ich so auf C ( das einzig wahre ) fixiert bin, dass mir AND ( Basic ? ) einfach zuwider ist.

    MfG
    Gonzo

  18. #38
    Board-Koryphäe
    Avatar von jonnylicious
    Registriert seit
    17.12.2001
    Ort
    Chemnitz
    Alter
    28
    Beiträge
    22.860
    Name
    Jonny
    Nick
    iamjonny
    Zitat Zitat von Gonzo Beitrag anzeigen
    Code:
    if (pnlRot.BackColor == Color.Gray) and (pnlGruen.BackColor == Color.Gray)
    Bin mir da jetzt nicht 100% sicher, in C(#) gibt es doch kein 'and' sondern '&&' oder ?
    Ausserdem muss der ganze Ausdruck nach dem 'if' noch eingeklammert werden weil nach if() sonst Schluss wäre mit dem if.
    Code:
    if ((pnlRot.BackColor == Color.Gray) && (pnlGruen.BackColor == Color.Gray))
    jo danke für's Korrigieren, ich kann wie gesagt leider kein C und kenne demzufolge die Schüsselwörter/Befehle da nicht
    Zitat Zitat von Osbes Beitrag anzeigen
    Nur mit IF kann es jedoch ohne einen weiteren Wert gar nicht lösbar sein, dann wenn du bei Gelb bist, woher willst du dann wissen, ob es nun von Gelb -> Grün, oder von Gelb -> Rot geht?
    der Meinung bin auch auch, dass es nur mit if/then nicht lösbar ist - entweder man nutzt eben "and", oder eine Status-Variable

  19. #39
    Zitat Zitat von jonnylicious Beitrag anzeigen
    der Meinung bin auch auch, dass es nur mit if/then nicht lösbar ist - entweder man nutzt eben "and", oder eine Status-Variable
    Ich sehe auch nicht, dass man es durch hinzunahme von AND lösen könnte.
    Etwas wie AND kann man ja durch sehr viele Verschachtelte IFs bekommen.

    Das Problem ist, dass es 2 verschiedene Zustände für Gelb geben muss (Grundlagen digitaler Systeme, theo. Informatik etc. anyone?), jedoch kann man diesen nicht erzeugen, da man nur die Eingangssignale hat und man sich den Zustand nicht merken kann.

    Bildlich gesprochen:

    1. Fall:
    Rot aus
    Gelb an
    Grün aus

    schalte Grün an.

    2. Fall:
    Rot aus
    Gelb an
    Grün aus

    schalte Rot an.

    Wie soll denn das Programm entscheiden, ob nun der 1. oder der 2. Fall eingetreten ist? Würfeln, Münze werfen?
    Wäre eine ziemlich lustige Ampel

    Rot -> Gelb -> Rot -> Gelb -> Rot *MUAHAHAHA*

    Zitat Zitat von Gonzo Beitrag anzeigen
    Ansichtssache
    Finde es nur unnötig, falls sich mal jemand anderes den Code ansieht stolpert er erst mal darüber.
    AND, wat soll dat denn ?
    Kann aber auch sein, dass ich so auf C ( das einzig wahre ) fixiert bin, dass mir AND ( Basic ? ) einfach zuwider ist.
    Meine ersten längeren Programmierstunden habe ich mit PHP verbracht und dort ist sowohl && als auch AND verfügbar, wobei ich irgendwann AND favorisiert habe.

  20. #40
    Administrator
    Avatar von stefros
    Registriert seit
    28.07.2001
    Ort
    Hamburg
    Alter
    33
    Beiträge
    62.610
    Name
    Stefan
    Nick
    stefros1983
    Clans
    United-Forum
    Deswegen gibts doch auch rot-gelb bevor grün kommt und nicht nur rot...

+ Antworten
Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Suche freie Ampel Piktogramme
    Von Nihilist im Forum Technik Ecke
    Antworten: 8
    Letzter Beitrag: 22.02.2009, 16:44

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •