Beginnersvraag C# (C sharp)

Status
Niet open voor verdere reacties.

ROELR1

Nieuwe gebruiker
Lid geworden
30 mei 2021
Berichten
2
Goedemorgen,

Ik ben een beginneling op het gebied met C# ik heb een oefening gemaakt maar deze werkt niet.

Ik snap niet waarom. zie bijgevoegde afbeeldingen voor meer informatie.

De opdracht is een willekeurige speelkaart op het scherm te tonen. bijv.
schoppen boer 9

Ik hoop dat iemand me op weg kan helpen
 

Bijlagen

  • class.JPG
    class.JPG
    41,1 KB · Weergaven: 37
  • program.JPG
    program.JPG
    63,9 KB · Weergaven: 41
Laten we eerst eens bij de W-vragen beginnen:

- Wat doe je precies?
- Wat gebeurt er?
- Wanneer gebeurt het?
 
Laten we eerst eens bij de W-vragen beginnen:

- Wat doe je precies?
- Wat gebeurt er?
- Wanneer gebeurt het?
- En kan je de code ook delen tussen code-tags? Dat maakt het makkelijker voor ons.
 
Dit is Main

Bedankt voor je reactie. Ik heb onderstaande code geschreven in Visual Studio 2019.
Als ik de code in de console uitvoer gebeurd er niks.

Wat ik had gedacht is, ik heb de list<> gevuld en met Random haal ik een waarde uit de lijst
in combinatie met een while loop.



Code:
using System;
using System.Collections.Generic;


namespace Speelkaarten
{
    class Program
    {

      
        static void Main(string[] args)
        {
            List<Speelkaart> boekKaarten = new List<Speelkaart>();
            for (int i = 0; i < 4; i++)
            {
                for (int j = 1; i < 14; j++)
                {
                    Speelkaart toAdd = new Speelkaart() { Getal =j, Suite= (Suit)i };
                    boekKaarten.Add(toAdd);
                }
            }
            Random r = new Random();
            while (boekKaarten.Count >  0)
            {
                Speelkaart getrokken = boekKaarten[r.Next(0, boekKaarten.Count)];
                Console.WriteLine("De getrokken kaart=");
                Console.WriteLine($"{getrokken.Suite} {getrokken.Getal}");
                

            }

            


        }
    }
}

Onderstaand is de Class

Code:
sing System;
using System.Collections.Generic;
using System.Text;
enum Suit {Schoppen, Harten, Klaveren, Ruiten }

namespace Speelkaarten
{
    class Speelkaart
    {
        public int Getal { get; set; }
        public Suit Suite { get; set; }

    }
}
 
Laatst bewerkt:
Als er helemaal niks gebeurt komt hij dus niet in de sectie van Console.WriteLine
Hoe weet je zeker dat r een getal is binnen het aantal kaarten?
 
Laatst bewerkt:
Natuurlijk checken dat kaarten.Count wel ooit groter is dan 0 ;)
ook doet de while loop een oneindige loop, daar zijn nettere manieren voor om dat te omschrijven.
 
ook doet de while loop een oneindige loop, daar zijn nettere manieren voor om dat te omschrijven.
Een while loop is géén oneindige lus als de conditie goed is bepaald in while ( <conditie> )
Ter vergelijking, dan zou een if ( <conditie> ) ook niet netjes zijn omdat er een conditie in zit ;)
Je hebt wel gelijk als je erbij zegt dat de programmeur alle mogelijkheden in de conditie moet hebben gecontroleerd, maar dat geldt ook bij het if statement.
 
Een while loop is géén oneindige lus als de conditie goed is bepaald in while ( <conditie> )

Eens. Maar het maakt debuggen en nalopen van code natuurlijk onnodig complex. als je while(true) gebruikt is het voor iedereen onmiddellijk duidelijk dat je lus oneindig gaat lopen en dat dat ook de doelstelling is. Een while loop aanroepen met een variabele die niet goed gedefinieerd is en een onduidelijke toepassing heeft, maakt debuggen in een groter programma en voor andere mensen nagenoeg onmogelijk.
 
Ik ben zelf ook beginner en heb deze aangeschaft voor rond € 12. Dat had ik er wel voor over.
Je wordt aan de hand door een aantal projecten meegenomen, dus wat minder uitleg:
"Learn how to code in C# by building 17 projects"
https://www.udemy.com/course/17-beg...mIRoi9vWfp7STIMnVkYxqGYeETUQIfXBoClEEQAvD_BwE

Deze geeft geeft juist wel de uitleg en daarom vond ik deze tutorial wel aardig:
https://csharp.net-tutorials.com/nl/104/het-begin/inleiding/

Deze Youtube video's vind ik zelfs erg verhelderend:
https://www.youtube.com/watch?v=GhQdlIFylQ8
 
Een while loop aanroepen met een variabele die niet goed gedefinieerd is en een onduidelijke toepassing heeft, maakt debuggen in een groter programma en voor andere mensen nagenoeg onmogelijk.
Ben ik gedeeltelijk mee eens, hetzelfde argument zou dan ook gelden voor de conditie in elke if(), for(), foreach() en until(). Overal waar variabelen niet goed zijn gedefinieerd geven ze in een conditie problemen en is debuggen noodzakelijk. De conditie in een while() is daarom niet lastiger dan in een for() loop.

Een oneindige lus wordt nooit gebruikt (ik weet geen voorbeeld). Zelfs in een game heb je de Escape toets om de main loop te onderbreken en in een PLC heb je een Stop knop om de main lus te onderbreken.
 
Hallo,

Heb je het probleem al gevonden?
Want ik denk dat je 2de for loop in een oneindige lus zit aangezien je vergelijkt met i < 14 ipv j < 14
 
xmanneke, goed opgemerkt :thumb:
Code:
for (int i = 0; i < 4; i++)
{
    for (int j = 1; i < 14; j++)
    {
Bij de eerste keer is i < 14 al waar (en blijft waar). ik denk een kopieer/plak bugje.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan