Een duidelijke titel
Toon op de eerste regel Voorraad: Kabels, met de met TrimSpace opgeruimde material.
Voor een buurtactiviteit tel je materialen, houd je reserveringen apart en plan je een levering. Je wilt daar een klein voorraadbericht van maken dat een collega direct kan lezen. Deze les combineert de bouwstenen die je al hebt gebruikt; er komt geen nieuwe besturingsvorm bij.
Een berekening is pas bruikbaar als duidelijk is welke vraag zij beantwoordt. stock is hier de huidige fysieke voorraad en reserved is het deel dat al aan iemand is toegezegd. De vrije voorraad is daarom stock - reserved.
Een geplande levering staat nog niet tussen de huidige spullen. Wil je de beschikbare voorraad na die levering weten, tel je delivery bij de vrije voorraad op. Bewaar de huidige en de toekomstige uitkomst apart, zodat een lezer ze niet met elkaar verwart.
| Naam | Afspraak in dit programma |
|---|---|
| stock | Alle spullen die nu aanwezig zijn. |
| reserved | Het al toegezegde deel van die voorraad. |
| available | Wat nu nog vrij beschikbaar is. |
| afterDelivery | Vrije voorraad na de geplande levering. |
package main
import (
"fmt"
"strings"
)
func main() {
material := " Doeken "
stock := 12
reserved := 4
delivery := 3
capacity := 5
available := stock - reserved
afterDelivery := available + delivery
crates := (afterDelivery + capacity - 1) / capacity
fmt.Printf("Materiaal: %s\n", strings.TrimSpace(material))
fmt.Printf("Nu vrij: %d\n", available)
fmt.Printf("Na levering: %d\n", afterDelivery)
fmt.Printf("Kratten: %d\n", crates)
}Materiaal: Doeken Nu vrij: 8 Na levering: 11 Kratten: 3
Het voorbeeld maakt eerst een leesbare materiaalnaam met TrimSpace. Daarna berekent het de vrije voorraad en telt de levering daarbij op. Pas als die waarden klaarstaan, worden ze in het bericht gebruikt.
De naam available geeft het resultaat een betekenis. Wie de volgende regel leest, hoeft niet opnieuw uit te zoeken waarom er twee getallen worden afgetrokken. Goede namen verminderen zo het werk dat een lezer in het hoofd moet doen.
In dit kleine programma kun je drie gedeelten herkennen: beginwaarden, berekeningen en uitvoer. Go voert de instructies in main hier van boven naar beneden uit. Een tussenresultaat moet dus bekend zijn voordat een volgende regel het gebruikt.
Dat vraagt geen ingewikkeld ontwerp. Zet bijvoorbeeld eerst available := stock - reserved en daarna afterDelivery := available + delivery. De tweede regel laat meteen zien dat de levering bij het vrije deel hoort, en niet bij alles wat fysiek aanwezig is.
De spullen gaan in kratten met een positieve vaste capaciteit. Gebruik de berekening uit de rekenles om het aantal benodigde kratten te bepalen. Ook een onvolledige laatste krat moet meegeteld worden.
Met afterDelivery % capacity == 0 vraag je daarnaast of alle spullen precies in volle kratten passen. Het antwoord is een bool. Nul als rest betekent hier dat er geen gedeeltelijk gevulde krat overblijft.
Dit antwoord staat los van het totale aantal kratten. Zowel één als vier volle kratten kunnen een rest van nul hebben. Toon daarom de gevraagde waarden afzonderlijk, zodat de collega zowel de hoeveelheid als de verdeling kan zien.
package main
import (
"fmt"
"strings"
)
func main() {
material := " Doeken "
stock := 12
reserved := 4
delivery := 3
fmt.Println(strings.TrimSpace(material))
fmt.Println(stock + delivery)
fmt.Println(stock - reserved + delivery)
}Doeken 15 11
De foutvariant telt de levering bij de hele fysieke voorraad op. Het resultaat is groter dan wat je werkelijk aan nieuwe aanvragen kunt toezeggen. Het programma compileert wel, want optellen is geldig; de betekenis van de gebruikte aantallen klopt niet.
Controleer een berekening daarom ook met een klein voorbeeld op papier. Als twaalf spullen aanwezig zijn en vier al beloofd zijn, zijn er nu acht vrij. Een levering van drie maakt daarvan elf, niet vijftien.
De oefening bevat 37 kabels, twaalf reserveringen, een levering van zes en acht plekken per krat. Ruim de materiaalnaam op, bereken de huidige vrije voorraad en gebruik de toekomstige vrije voorraad voor het kratplan. Toon het bericht in de vier gevraagde regels.
Deze gegevens voldoen aan onze aannames: aantallen zijn niet-negatief, reserveringen passen binnen de voorraad en de capaciteit is positief. In de volgende module leer je die voorwaarden met if en andere keuzes bewaken. Nu richt je je op de samenhang van de berekeningen.
Toon op de eerste regel Voorraad: Kabels, met de met TrimSpace opgeruimde material.
Toon op de tweede regel het aantal kabels dat nu nog niet gereserveerd is. Druk alleen het getal af.
Toon op de derde regel het totale aantal kratten voor de vrije kabels na levering. Reken ook een onvolledige laatste krat mee.
Toon op de vierde regel of de toekomstige vrije voorraad exact in volle kratten past.
Hierna gebruik je voorwaarden om alleen de passende instructies uit te voeren.
Voer je code uit en ontdek
wat je hebt gemaakt.
Je hoeft het niet in één keer goed te doen. Na het uitvoeren zie je hier welke stappen al kloppen.