# Oefeningen

## Oefeningen

### **Oefening: H6-ArrayTrueFalse**

#### **Leerdoelen**

* Declareren van arrays
* Initialiseren van arrays
* Opvullen van arrays
* Arrays gebbruiken - afprinten

#### **Functionele analyse**

Maak een array gevuld met afwisselend true en false (de array is 30 lang)

Per array: output de array naar het scherm, maar ieder element naast elkaar met komma gescheiden. Dus niet:

1 true

2 false

3 true

4 \\\etc

maar wel: true, false, true, ...

Implementeer onderstaande flowchart in C#.

#### Technische analyse

{% file src="<https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FBmADYwXNGc4dtJ04cdal%2FH6-ArrayTrueFalse.fprg?alt=media&token=01f0c731-9864-4ca8-b0dd-396a3faf5f28>" %}

#### Voorbeeldinteractie

![](https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FaA6EvcL77Nl854k1H880%2Fimage.png?alt=media\&token=75ca032e-c4e1-444f-8fa0-077caf227431)

### **Oefening: H6-ArrayOefener1**

#### **Leerdoelen**

* Declareren van arrays
* Initialiseren van arrays
* Opvullen van arrays
* Arrays gebruiken

#### **Functionele analyse**

Maak een programma dat aan de gebruiker vraagt om 10 waarden (int) in te voeren in een array. Vervolgens toont het programma de som, het gemiddelde en het grootste getal van deze 10.

Vervolgens vraagt het programma de gebruiker om een getal in te voeren. Het programma toont dan alle getallen die groter of gelijk zijn aan dit ingevoerde getal zijn die in de array aanwezig zijn. Indien geen getallen groter zijn dan verschijnt een bericht Niets is groter op het scherm.

Implementeer onderstaande flowchart in C#. Merk op: je kan in principe de statistieken al bijhouden terwijl de getallen worden ingevoerd, maar hier worden ze pas achteraf berekend. Doe het ook zo.

#### &#x20;**Technische analyse**

{% file src="<https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FRois3YwgT8jBl2eZuMzS%2FH6-ArrayOefener1.fprg?alt=media&token=ac2e6976-ef4b-4a80-b94f-5b7dbecc18dd>" %}

#### **Voorbeeldinteractie**

![](https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FtMvgY5rd10xSuqf5rsTv%2Fimage.png?alt=media\&token=537692f6-943f-492d-871b-b80bcb560fb7)

### **Oefening: H6-Boodschappenlijst**

#### **Leerdoelen**

* Declareren van arrays
* Initialiseren van arrays
* Opvullen van arrays
* Arrays gebruiken

#### **Functionele analyse**

Maak een programma dat de gebruiker een boodschappenlijstje laat samenstellen.

* Het programma vraagt eerst hoeveel items de boodschappenlijst moet bevatten en laat dan de lijst vullen.
* Vervolgens wordt een gesorteerde lijst van de items getoond.
* Daarna, in de winkel, kan de gebruiker aangeven welke items er gekocht worden. De gebruiker kan dit blijven doen zolang er 'ja' geantwoord wordt op de vraag 'Nog winkelen?'. Als de gebruiker een item intypt dat niet op de lijst staat, wordt er een bericht getoond.
* Na het winkelen toont het programma welke items van de lijst niet gekocht zijn.

Implementeer onderstaande flowchart in C#.

#### **Technische analyse**

{% file src="<https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2Fb7T7GZ9Am9TG0RICA6Mc%2FH6-Boodschappenlijst.fprg?alt=media&token=0e5a1124-3776-4541-ac2f-188d73164ff2>" %}

#### **Voorbeeldinteractie**

![](https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2F2ikRI7hZQZpWo9VTlASH%2Fimage.png?alt=media\&token=234bd40b-3290-4de3-a065-4883167551be)

### **Oefening: H6-Kerstinkopen**

#### **Leerdoelen**

* Declareren van arrays
* Initialiseren van arrays
* Opvullen van arrays
* Arrays gebruiken
* Array methodes gebruiken

#### **Functionele analyse**

Maak een programma dat kan gebruikt worden om kerstinkopen te doen, rekening houdend met een budget. Na de inkopen, wordt het totaal gespendeerd bedrag getoond en het hoogste, laagste en gemiddelde bedrag.

#### **Technische analyse**

Probeer zelf een flowchart te maken en zet die dan om naar C#.

#### Voorbeeldinteractie

![](https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FYZPMfiPfv2hwMI2oO5BV%2Fimage.png?alt=media\&token=0551e816-f446-4856-a3c6-89fb8fc15709)

### **Oefening: H6-Lotto**

**Leerdoelen**

* Arrays in flowcharts gebruiken
* Declareren van arrays
* Initialiseren van arrays
* Opvullen van arrays
* Opzoeken waarde in arrays

**Functionele analyse**

Je vraagt de gebruiker zijn 6  lotto getallen (getal tussen 1 en 42) in te geven. Je hoeft geen controle te doen op de getallen die de gebruiker ingeeft. Je bewaart deze getallen in een array lottoFormulier.

Vervolgens simuleer je een trekking. Dat doe je door random 6 getallen te genereren (zie hiervoor [random](https://apwt.gitbook.io/cursus-pro-oo/semester-1-programming-principles/h8-numerieke-data/random "mention")) en die ook in een array lottoTrekking te bewaren. Let op: hier moet je wel controleren of het inderdaad 6 verschillende getallen zijn (hoe kan je nagaan of iets aanwezig is in je array?).

Dan doe je een validatie. Heeft de gebruiker 3 juiste cijfers wint hij 10 €, bij 4 juiste cijfers 1000 €, bij 5 juiste cijfers 100.000 € en bij 6 juiste cijfers 10.000.000 €.

&#x20;Zorg dat alles mooi wordt getoond aan de gebruiker. Lotto getallen in stijgende volgorde, Trekking getallen in stijgende volgorde, winst. Zie voorbeeldinteractie.

&#x20;**Technische analyse**

Maak een flowchart en zet die om naar C#

Wat betreft het random genereren van 6 getallen tussen 1 en 42. Daar krijg je het volgend stukje code voor (probeer te begrijpen hoe het werkt en zoek op internet het gebruik van Random eens op):&#x20;

```csharp
Random random = new Random();
int lottoGetal;
        
for (int i = 0; i < lottoTrekking.Length; i++) {
    do {
        lottoGetal = random.Next(42) + 1;
    }
    while (Array.IndexOf(lottoTrekking, lottoGetal) >= 0);
    lottoTrekking[i] = lottoGetal;
}
```

#### Voorbeeldinteractie

![](https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FIcGmmW7sXoYLvKbGZiK1%2Fimage.png?alt=media\&token=b7454c48-18a9-48ff-94fc-fa3dcacfafe6)

#### Uitbreiding

Test de ingegeven lotto getallen en zorg er voor dat er geen getallen kleiner dan 1 of groter dan 42 ingegeven kunnen worden en dat er ook geen dubbels voorkomen..

### **Oefening: H6-IntegerIndexOf**

#### **Leerdoelen**

* Arrays in flowcharts gebruiken
* Opzoeken waarde in integer arrays – zelf geschreven methode

#### **Functionele analyse**

Probeer d.m.v. Flowgorithm de flowchart te gebruiken en zet dan om naar C#.

#### Technische analyse

{% file src="<https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FELR9lmQl4JG03vNShFsX%2FH6-IntegerIndexOf.fprg?alt=media&token=dc803372-eed5-407a-87b5-8b01f3b1e3d2>" %}

#### Voorbeeldinteractie

![](https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2F61HJCLGZc0wcFWHmvhJn%2Fimage.png?alt=media\&token=102ea4ff-9ae6-47fa-8007-f5f7714141b0)

![](https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FEZxnnBfbb5ki8uPRA7DC%2Fimage.png?alt=media\&token=8d5cb0a7-9aa3-4d49-8ed3-0324bb131bf3)

### **Oefening: H6-BinarySearch**

**Leerdoelen**

* Arrays in flowcharts gebruiken
* De array gebruiken, in een array zoeken.

**Functionele analyse**

Heel eenvoudig uitgelegd zal het algoritme de te zoeken waarde vergelijken met de middelste waarde (van een gesorteerde array). Als de waarde niet gelijk is wordt dat gedeelte van de array waar de waarde zich niet in kan bevinden weggegooid. De zoektocht gaat verder totdat de waarde is gevonden (of niet gevonden indien alle mogelijkheden zijn doorzocht)

Implementeer onderstaande flowchart  in C#. Om twee strings te ordenen, gebruik je `string1.CompareTo(string2)`. Dit levert -1 als string1 voor string2 komt, 1 als string1 na string2 komt en 0 als ze op dezelfde plaats komen.

#### **Technische analyse**

{% file src="<https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2F2Q0UlaFpmy7QEZNhnQGw%2FH6-BinarySearch.fprg?alt=media&token=ea4bac07-e845-4edd-9019-18c240e4ffc5>" %}

#### Voorbeeldinteractie

![](https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FzZvcbRKfzjnR9PgQkvJo%2Fimage.png?alt=media\&token=91cf4e41-884e-4e13-b78e-8ac70e1ac7aa)

![](https://4286502012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LiTpB3KNqWfMzRf0oYc-887967055%2Fuploads%2FvA4gf6w2NVRodm4RvlRN%2Fimage.png?alt=media\&token=1e4d9904-ae60-462e-99e8-c42def8bb061)

### **Oefening: H6-Boodschappenlijst-list**

#### **Leerdoelen**

* Declareren van een `List`
* Initialiseren van een `List`
* `List` gebruiken

#### **Functionele analyse**

Maak een een alternatieve versie van H6-Boodschappenlijst. Maak ditmaal gebruik van List\<T> in plaats van een array.

#### **Technische analyse**

* Je hoeft de grootte van de lijst niet meer op voorhand te vragen.
* Een lijst `myList` sorteren doe je door `myList.sort()` op te roepen.
* Je mag elementen die gekocht zijn gewoonweg verwijderen uit de lijst.
* Op het eindetoon je de resterende items met een `foreach` lus.
* Je geeft een lege regel in om aan te geven dat je niets wil toevoegen aan je lijstje.
* Noem je methode `BoodschappenList`

#### **Voorbeeldinteractie**

```
Wat is item 1 op je lijst?
> kaas
Wat is item 2 op je lijst?
> eieren
Wat is item 3 op je lijst?
> boter
Wat is item 4 op je lijst?
>
Dit is je gesorteerde lijst:
1: boter
2: eieren
3: kaas
Op naar de winkel!
Welk item heb je gekocht?
> kaas
Nog winkelen? (Ja of Nee)
> nee
Naar huis met de boodschappen!
Volgende items van je lijst ben je vergeten te kopen:
boter eieren
```

### **Oefening: H6-Kerstinkopen-list**

#### **Leerdoelen**

* Declareren van een `List`
* Initialiseren van een `List`
* `List` gebruiken

#### **Functionele analyse**

Maak een een alternatieve versie van H6-Kerstinkopen. Maak ditmaal gebruik van List\<T> in plaats van een array.

#### **Technische analyse**

* Je hoeft niet meer te vragen op voorhand hoe veel cadeautjes er gekocht zullen worden.
* Je mag stoppen bij een lege regel invoer.
* Je moet ook stoppen zodra je over budget gaat.
* Noem je methode `KerstinkopenList`

#### Voorbeeldinteractie

```
Wat is het budget voor je kerstinkopen?
> 500
Prijs van cadeau 1?
> 200
Prijs van cadeau 2?
> 330
Je bent al 30.0 euro over het budget!
Info over je aankopen:
Totaal bedrag: 530.0 euro
Duurste cadeau: 330.0 euro
Goedkoopste cadeau: 200.0 euro
Gemiddelde prijs: 265.0 euro
```
