Springen naar inhoud

Organigram algoritme probleem


  • Log in om te kunnen reageren

#1

Mossi

    Mossi


  • >100 berichten
  • 157 berichten
  • Ervaren gebruiker

Geplaatst op 28 september 2011 - 20:40

Beste,

Ik heb vandaag mijn eerste inleiding gehad over algoritmes, aangezien dit mijn eerste les is had ik wat moeilijkheden maar ik heb het een klein beetje onder de knie. Tot ik aan deze oefeningen kwam, namelijk oefening 6 op de afbeelding.
Ik weet namelijk niet hoe ik er aan moet beginnen, als iemand mij een duw in de juiste richting kan geven kan ik de rest wss ook oplossen. Oefening 6 staat in de bijlage.

Alvast bedankt!

Bijgevoegde miniaturen

  • Scan.jpeg

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 28 september 2011 - 20:48

Ik zal de oefening even anders verwoorden.

Het programma vraagt een voor een om x waarden in te geven. x is hierbij dus een variabele in je programma die eender welke waarde kan aannemen.
(Als je de eerdere oefeningen begrijpt dan weet je waarschijnlijk al hoe je dit maakt.)

Per waarde die ingegeven wordt, kijkt het programma of die waarde strikt positief is.
(Zegt een ALS of een IF controle je iets?)

Op het einde van het programma moet er ergens gekend zijn hoeveel van de x waarden er strikt positief zijn.
(Dit moet dus in een of andere teller variabele komen.)

Kan je hiermee al verder?

#3

Mossi

    Mossi


  • >100 berichten
  • 157 berichten
  • Ervaren gebruiker

Geplaatst op 28 september 2011 - 21:09

Ik zal de oefening even anders verwoorden.

Het programma vraagt een voor een om x waarden in te geven. x is hierbij dus een variabele in je programma die eender welke waarde kan aannemen.
(Als je de eerdere oefeningen begrijpt dan weet je waarschijnlijk al hoe je dit maakt.)

Per waarde die ingegeven wordt, kijkt het programma of die waarde strikt positief is.
(Zegt een ALS of een IF controle je iets?)

Op het einde van het programma moet er ergens gekend zijn hoeveel van de x waarden er strikt positief zijn.
(Dit moet dus in een of andere teller variabele komen.)

Kan je hiermee al verder?


Dank je voor je uitleg, je hebt me een beetje geholpen maar ik begrijp de vraag wel. Ik heb alleen moeilijkheden om dat toe te passen in dat voorbeeldorganigram boven de oefening.

- Bij BEGIN moet niks staan
- Bij INITIATIES weet ik niet wat daar moet komen
- Bij teller <-- 0 denk ik dat er teller <-- x moet staan, maar in de opgave staat er een vooraf gekende waarden dus moet je er een paar willekeurig nemen? Bv van -2 naar 3?
- Bij het geruite "teller < aantal" moet er dan staan " teller < 0" aangezien je de negatieve moet hebben.
- Bij de vraag nLees kan ik niet volgen wat daar moet staan
- Idem bij WAARDE

#4

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 28 september 2011 - 21:27

BEGIN en EINDE duiden puur het begin en einde van je programma aan. In oude programmeertalen moest je dat expliciet zo schrijven.

Bij initiaties moet je variabelen die je gaat gebruiken een beginwaarde geven. Dit is niet altijd nodig, maar zeker wel voor variabelen die je gaat gebruiken om te tellen.

Je hebt inderdaad een teller nodig. Het voorbeeld boven oefening 6 toont hoe je een WHILE loop kan maken. Dat stuk geeft al weg hoe je x keer iets kan vragen. 'aantal' in het voorbeeld is x in mijn uitleg.

De variabele 'teller' gebruik je dus om een bepaald aantal keer naar een waarde te vragen.

VraagEnLees(waarde) vraagt aan de gebruiker om een waarde in te vullen en schrijft dat resultaat dan weg in een variabele met de naam 'waarde'.

Het tel-systeem om een aantal vragen te stellen had je dus eigenlijk al cadeau gekregen.

Onder het stuk 'Verwerk' zal je dus nu iets moeten schrijven dat controleert of een ingevoerde waarde strikt positief is. (Zo'n structuur met een diamant.) Je moet tellen hoeveel waarden er positief zijn. Je zal dus een 2de teller variabele nodig hebben. Aangezien het doel van je programma is om dat aantal te tellen kan je deze waarde bijvoorbeeld 'resultaat' noemen.

Opmerking: het helpt soms als je de opgave eerst in 'gestructureerde pseudotaal' (zoals ze het op jouw blad noemen) te schrijven. Dan moet je gewoon die code vertalen naar een diagram.

#5

Mossi

    Mossi


  • >100 berichten
  • 157 berichten
  • Ervaren gebruiker

Geplaatst op 28 september 2011 - 21:33

BEGIN en EINDE duiden puur het begin en einde van je programma aan. In oude programmeertalen moest je dat expliciet zo schrijven.

Bij initiaties moet je variabelen die je gaat gebruiken een beginwaarde geven. Dit is niet altijd nodig, maar zeker wel voor variabelen die je gaat gebruiken om te tellen.

Je hebt inderdaad een teller nodig. Het voorbeeld boven oefening 6 toont hoe je een WHILE loop kan maken. Dat stuk geeft al weg hoe je x keer iets kan vragen. 'aantal' in het voorbeeld is x in mijn uitleg.

De variabele 'teller' gebruik je dus om een bepaald aantal keer naar een waarde te vragen.

VraagEnLees(waarde) vraagt aan de gebruiker om een waarde in te vullen en schrijft dat resultaat dan weg in een variabele met de naam 'waarde'.

Het tel-systeem om een aantal vragen te stellen had je dus eigenlijk al cadeau gekregen.

Onder het stuk 'Verwerk' zal je dus nu iets moeten schrijven dat controleert of een ingevoerde waarde strikt positief is. (Zo'n structuur met een diamant.) Je moet tellen hoeveel waarden er positief zijn. Je zal dus een 2de teller variabele nodig hebben. Aangezien het doel van je programma is om dat aantal te tellen kan je deze waarde bijvoorbeeld 'resultaat' noemen.

Opmerking: het helpt soms als je de opgave eerst in 'gestructureerde pseudotaal' (zoals ze het op jouw blad noemen) te schrijven. Dan moet je gewoon die code vertalen naar een diagram.


Je bent me echt kwijt ;)

Vind het heel moeilijk om het te begrijpen zonder een voorbeeldje te bekijken en te bestuderen, wat dus niet op dat blad staat. En dat zeker voor iemand die dit nooit heeft gehad.

#6

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 28 september 2011 - 21:35

Begrijp je het voorbeeld dat op het blad staat? (Dat met die DO WHILE)

#7

Mossi

    Mossi


  • >100 berichten
  • 157 berichten
  • Ervaren gebruiker

Geplaatst op 28 september 2011 - 21:42

Begrijp je het voorbeeld dat op het blad staat? (Dat met die DO WHILE)


Ja, er schoot me net iets binnen. Ik ga het proberen op te lossen, als je wilt mag je nakijken of het klopt.

#8

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 28 september 2011 - 21:45

Ja, er schoot me net iets binnen. Ik ga het proberen op te lossen, als je wilt mag je nakijken of het klopt.


Jaja, dat is de bedoeling van dit forum ;)

#9

Mossi

    Mossi


  • >100 berichten
  • 157 berichten
  • Ervaren gebruiker

Geplaatst op 28 september 2011 - 21:55

Jaja, dat is de bedoeling van dit forum ;)


Haha idd, en het is toch niet gelukt. Ik heb echt moeilijkheden om dit te visualiseren, kun je een voorbeeldje plaatsen los van deze oefening om te zien of ik dit kan begrijpen?

#10

Mossi

    Mossi


  • >100 berichten
  • 157 berichten
  • Ervaren gebruiker

Geplaatst op 28 september 2011 - 22:07

Ik weet dat dit sowieso niet gaat kloppen maar ik kan u wel laten zien dat ik hier echt moeite voor doe..

Bijgevoegde miniaturen

  • Scan_1.jpeg

#11

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 28 september 2011 - 22:23

Je hebt een voorbeeld staan op dat blad.

Ik loop er even met je door:

Je begint aan de bovenkant bij BEGIN.

Je zet een teller op 0.

Onderstel dat aantal = 2.

Je komt aan de diamant: teller(0) < aantal(2) ?

JA, dus we volgen de pijl naar beneden.
De teller wordt met 1 verhoogd om aan te geven dat we al 1 keer op deze plaats gepasseerd zijn.

Nu krijgen we via VraagEnLees een waarde binnen van de gebruiker.

In het stuk VERWERK krijg je dan de kans om met die waarde iets te doen, dat komt later.

We komen terug aan de diamant, de teller staat nu op 1.
teller(1) < aantal(2) ?

JA, dus we volgen weer de pijl naar beneden. We verhogen de teller weer met 1 om aan te geven dat we 2 keer gepasseerd zijn. We krijgen een nieuwe waarde binnen van de gebruiker en we VERWERKEN die weer.

We komen terug op de diamant, de teller staat nu op 2.
teller(2) < aantal(2) ?

NEE, dus we volgen de andere pijl en die komt op EINDE dus het programma is afgelopen.

Dit heb je al allemaal cadeau gekregen, en hierin staat al alles wat je kan doen. Probeer dit eerst helemaal te begrijpen.

Nu gaan we dit diagram een beetje uitbreiden om oefening 6 op te lossen:

Ik heb je al verteld dat we een 2de teller zullen nodig hebben. Ik noem deze 'resultaat'. Op de plaats waar je 'teller' op 0 zet, zal je nu ook 'resultaat' op 0 moeten zetten.

Het programma dat er nu staat neemt een aantal waarden binnen van de gebruiker, maar doet er niks mee.

Onder VERWERK gaan we dus nu iets schrijven dat kan tellen hoeveel waarden er positief zijn. Je zal dus een diamant maken waar in staat 'waarde > 0'. Uit die diamant lopen dan 2 pijlen JA en NEE.
Kan je nu zelf die JA en NEE weg maken?

Ik begrijp dat het misschien verwarrend is van diamantstructuren binnen een andere diamantstructuur te maken, maar dit mag en gebeurt heel vaak. Probeer het dus heel duidelijk te tekenen.


Ik weet dat dit sowieso niet gaat kloppen maar ik kan u wel laten zien dat ik hier echt moeite voor doe..


Die blok met X die je maakt is eigenlijk dus die VraagEnLees(waarde).

Dan moet je inderdaad controleren of waarde > 0.

Bij JA, zal je ergens een 2de teller moeten verhogen zoals dat bij 'teller' gebeurt.

Bij NEE spring je nu meteen naar het einde. Als je als eerste waarde een negatief getal binnenkrijgt zal je programma meteen stoppen terwijl het eigenlijk nog (aantal-1) andere waarden moet vragen.
NEE moet dus ook boven die eerste diamant uitkomen.

#12

Mossi

    Mossi


  • >100 berichten
  • 157 berichten
  • Ervaren gebruiker

Geplaatst op 28 september 2011 - 23:28

Je uitleg heeft me heel veel geholpen! Nu weet ik niet hoe ik een balkje moet invullen waardoor het programma de positieve getallen optelt.

Wat vind u daarvan?

Bijgevoegde miniaturen

  • Scan_2.jpeg

#13

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 29 september 2011 - 05:40

Ok die structuur is juist.

Nu moet je nog die 2de teller aanmaken:

Onder 'teller = 0' maak je een 2de balk met 'resultaat = 0'.

Telkens je in de loop komt wordt teller met 1 verhoogd door: teller = teller + 1.

Resultaat moet verhoogd worden op net dezelfde manier, maar dan enkel wanneer een waarde strikt positief is. Op de plaats van je vraagteken moet dus 'resultaat = resultaat + 1' komen.

Opmerking: in de notatie op jouw blad staat zo'n pijl achtig symbool ipv =, je schrijft best dat symbool maar dat vind ik zo direct niet.

Die blok met X moet ook VraagEnLees(x) zijn. Die x is dan hetzelfde als de variabele 'waarde' in het voorbeeld, maar het maakt niet uit hoe je variabelen noemt.

#14

Mossi

    Mossi


  • >100 berichten
  • 157 berichten
  • Ervaren gebruiker

Geplaatst op 29 september 2011 - 10:59

Ok die structuur is juist.

Nu moet je nog die 2de teller aanmaken:

Onder 'teller = 0' maak je een 2de balk met 'resultaat = 0'.

Telkens je in de loop komt wordt teller met 1 verhoogd door: teller = teller + 1.

Resultaat moet verhoogd worden op net dezelfde manier, maar dan enkel wanneer een waarde strikt positief is. Op de plaats van je vraagteken moet dus 'resultaat = resultaat + 1' komen.

Opmerking: in de notatie op jouw blad staat zo'n pijl achtig symbool ipv =, je schrijft best dat symbool maar dat vind ik zo direct niet.

Die blok met X moet ook VraagEnLees(x) zijn. Die x is dan hetzelfde als de variabele 'waarde' in het voorbeeld, maar het maakt niet uit hoe je variabelen noemt.


Heel erg bedankt met jouw hulp en tijd, ik denk dat ik er bijna ben. Ik hoop dat deze versie de juiste is.

In de voorbije oefeningen en opgave gebruiken we altijd een pijltje idpv een =, ik vind een pijltje persoon meer begrijpelijk.

Vraagje, kun je idpv "resultaat" "som" gebruiken?

Bijgevoegde miniaturen

  • Scan_1.jpeg

Veranderd door Mossi, 29 september 2011 - 11:01


#15

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 29 september 2011 - 11:14

Je oplossing is nu correct, geef voor de duidelijkheid misschien wel aan welke de JA en NEE pijlen zijn.

Als je nog ergens iets niet begrijpt of je wil een oplossing laten controleren dan laat je maar iets weten.

In de voorbije oefeningen en opgave gebruiken we altijd een pijltje idpv een =, ik vind een pijltje persoon meer begrijpelijk.


Wat betreft dat pijltje, dat is slechts een kwestie van notatie. Programmeertalen gebruiken = of :=, 't is gewoon omdat ik sneller een = getypt krijg dan dat ik vind hoe ik dat pijltje kan schrijven ;)

Vraagje, kun je idpv "resultaat" "som" gebruiken?


De naam van een variabele maakt niet uit. Je kiest steeds voor een naam die je passend en duidelijk vindt.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures