5min

Tags in dit artikel

, , ,

Eind voorbeeld

In dit eind voorbeeld zal ik alles wat in deze tutorial even herhalen om te laten zien hoe het ‘praktisch’ kan worden gebruikt. Voor het gemak maak ik alle functies even static, met klassen en instances leren werken komt in een latere tutorial terug.

Het idee is dat een klant een kleine rekenmachine wilt voor zijn appels magazijn. Die wilt een menu er in waarbij hij of zij kan kiezen tussen het berekenen van:

  • Aantal appels in de x kisten
  • Gewicht appels in de x kisten
  • Aantal kisten voor x appels
  • Aantal kisten voor x kg gewicht

Als de gebruiker een keuze heeft uitgevoerd, moet het menu weer terugkomen, totdat er een afsluit commando wordt gegeven.

Als we gaan kijken wat hier voor nodig hebben komen veel dingen vaak voor. Dat is het inlezen van een getal, het weergeven van een menu keuze, en het uitvoeren van die keuze. Het is dus al mogelijk om nu te verzinnen dat we een functie LeesGetal nodig hebben, WeergeefMenu en KeuzeUitvoeren.

Een voorbeeld hoe dit zou kunnen worden gemaakt vind je hier onder. In de volgende les over C# zal ik ingaan op het maken van een simpel Windows programma. Heb je nog vragen over deze tutorial of kom je er niet uit? Stel ze op het Programmeren forum!

Voorbeeld:

CSHARP Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Csharp_les1
{
    class Program
    {
        static void Main( string[] args )
        {
            int keuze = 1;
 
            // Blijven uitvoeren totdat afsluiten worden gekozen. Dat is namelijk keuze 0.
            while ( keuze != 0 )
            {
                // Maakt het console scherm leeg.
                Console.Clear( );
 
                // Het menu weergeven.
                // Deze functie geeft een integer terug, met de opgegeven menu keuze
                keuze = WeergeefMenu( );
 
                // De keuze uitvoeren die zojuist gekozen is
                KeuzeUitvoeren( keuze );
 
                // Indien het programma niet afgesloten wordt; mag er nog een keer worden geprobeerd.
                if ( keuze != 0 )
                    Console.WriteLine( "Druk op enter om nog een keer te proberen" );
 
                // Wacht op enter totdat het resultaat wordt gewist!
                Console.ReadLine( );
            }
 
        }
 
        static public void KeuzeUitvoeren( int keuze )
        {
            // Variabele voor definieren zodat ze niet dubbel voorkomen.
            int Kisten;
            int Appels;
            int AppelsPerKist;
            double Gewicht;
 
            switch ( keuze )
            {
                case 0:
                    Console.WriteLine( "Druk op ENTER om het program af te sluiten" );
                    break;
 
                // Aantal appels in x kisten
                case 1:
                    // Aantal kisten inlezen
                    Console.WriteLine( "Hoeveel kisten zijn er?" );
                    Kisten = LeesGetal( );
 
                    // Aantal appels per kist inlezen
                    Console.WriteLine( "Hoeveel appels zitten er per kist in?" );
                    AppelsPerKist = LeesGetal( );
 
                    // Binnen de grenzen of niet?
                    if ( IsBinnenGrenzen( AppelsPerKist, 500, 1500 ) )
                    {
                        // Berekenen en weergeven
                        Appels = AppelsPerKist * Kisten;
                        Console.WriteLine( "U heeft " + Appels + " appels" );
                    }
                    else
                    {
                        Console.WriteLine( "Het aantal appels moet tussen de 500 en 1500 liggen!" );
                    }
                    break;
 
 
                // Gewicht appels in x kisten
                case 2:
                    // Aantal kisten inlezen
                    Console.WriteLine( "Hoeveel kisten zijn er?" );
                    Kisten = LeesGetal( );
 
                    // Aantal appels per kist inlezen
                    Console.WriteLine( "Hoeveel appels zitten er per kist in?" );
                    AppelsPerKist = LeesGetal( );
 
                    // Binnen de grenzen of niet?
                    if ( IsBinnenGrenzen( AppelsPerKist, 500, 1500 ) )
                    {
                        // Berekenen en weergeven
                        Appels = AppelsPerKist * Kisten;
                        Gewicht = Appels * 0.1;
 
                        Console.WriteLine( "U heeft " + Appels + " appels" );
                        Console.WriteLine( "Dat weegt " + Gewicht + "kg" );
                    }
                    else
                    {
                        Console.WriteLine( "Het aantal appels moet tussen de 500 en 1500 liggen!" );
                    }
                    break;
 
                // Aantal kisten voor x appels
                case 3:
                    // Aantal appels inlezen
                    Console.WriteLine( "Hoeveel appels heeft u?" );
                    Appels = LeesGetal( );
 
                    // Aantal appels per kist inlezen
                    Console.WriteLine( "Hoeveel appels zitten er per kist in?" );
                    AppelsPerKist = LeesGetal( );
 
                    // Binnen de grenzen of niet?
                    if ( IsBinnenGrenzen( AppelsPerKist, 500, 1500 ) )
                    {
                        // Berekenen en weergeven
                        // Enkel doubles kunnen worden afgerond, dus we 'casten' Appels naar een double. Vervolgens ronden we die omhoog af met Math.Ceiling(), die we vervolgens naar een normale Int32 weer terug laten zetten.
                        Kisten = Convert.ToInt32( Math.Ceiling( (double) Appels / AppelsPerKist ) );
 
                        Console.WriteLine( "U heeft " + Kisten + " kisten nodig!" );
                    }
                    else
                    {
                        Console.WriteLine( "Het aantal appels moet tussen de 500 en 1500 liggen!" );
                    }
                    break;
 
                // Aantal kisten voor x kg gewicht
                case 4:
                    // Aantal appels inlezen
                    Console.WriteLine( "Hoeveel hele kg appels heeft u?" );
                    Gewicht = LeesGetal( );
 
                    // Aantal appels per kist inlezen
                    Console.WriteLine( "Hoeveel appels zitten er per kist in?" );
                    AppelsPerKist = LeesGetal( );
 
                    // Binnen de grenzen of niet?
                    if ( IsBinnenGrenzen( AppelsPerKist, 500, 1500 ) )
                    {
                        // Berekenen en weergeven
                        Appels = Convert.ToInt32( 10 * Gewicht );
 
                        Kisten = Convert.ToInt32( Math.Ceiling( (double) Appels / AppelsPerKist ) );
 
                        Console.WriteLine( "U heeft " + Kisten + " kisten nodig!" );
                    }
                    else
                    {
                        Console.WriteLine( "Het aantal appels moet tussen de 500 en 1500 liggen!" );
                    }
                    break;
 
                // geen van de andere cases komen overeen, deze keuze bestaat dus niet!
                default:
                    Console.WriteLine( "Die keuze ken ik niet!" );
                    break;
            }
        }
 
        static public int WeergeefMenu( )
        {
            Console.WriteLine( "Geef je keuze op:" );
            Console.WriteLine( "0: Afsluiten" );
            Console.WriteLine( "1: Aantal appels in x kisten" );
            Console.WriteLine( "2: Gewicht appels in x kisten" );
            Console.WriteLine( "3: Aantal kisten voor x appels" );
            Console.WriteLine( "4: Aantal kisten voor x kg gewicht" );
 
            int keuze = LeesGetal( );
            return keuze;
        }
 
        static public int LeesGetal( )
        {
            int getal;
 
            // Vraag de gebruiker om 1 invoer.
            string invoer = Console.ReadLine( );
 
            // Zet het getal veilig om.
            if ( Int32.TryParse( invoer, out getal ) )
            {
                return getal;
            }
            else
            {
                return 0;
            }
        }
        static public bool IsBinnenGrenzen( int getal, int grens_laag, int grens_hoog )
        {
            // Getal groter dan de hoogste grens? 
            if ( getal > grens_hoog )
                return false;
 
            // Getal groter dan de laagste grens
            else if ( getal < grens_laag )
                return false;
            else
                return true;
        }
    }
}