Hallo iedereen,

ik heb dit jaar voor het eerst php met informatica, zelf kan ik wel beetje overweg met html maar nu kregen wij de volgende opdracht:

Maak een pagina in php waarbij de even getallen 1 tm 20 en de oneven
getallen van 21 tm 40 bij elkaar worden geteld.

Ik zou dus echt geen idee hebben hoe ik hieraan moet beginnen,
meestal kan ik wel scripts bewerken die ik van internet haal..
maar nu gaat om zelf coderen.

Kan mij op weg helpen?

Mvg Tjerk Muller
Mark Coenen op 18/11/2010 19:07:36

@Karl Ik vroeg of hij wist wat arrays waren omdat ik aan range() dacht. Leek me wel handig voor hem.


Mij lijkt basiskennis belangrijker.

- SanThe - op 18/11/2010 19:11:35

<?php
echo array_sum(array_merge(range(0, 20, 2), range(21, 40, 2)));
?>


Leuk. En als je nog steeds niet weet hoe je er doorheen moet lopen?
eigenlijk vind ik toch dat wij hem beter alleen op weg kunnen helpen
het is zijn huiswerk wat wij maken
we kunnen hem wel helpen maar niet maken
Tjerk,

Ik ben ook nog een redelijke leek op het gebied van PHP, maar heb deze oefening toch op een klein kwartier opgelost. Ik heb mij niet in verwarring laten brengen door arrays, ondanks dat ik deze in theorie wel ken. Het lijkt mij aangewezen voor u om deze aanvankelijk niet te gebruiken. Als de oefening gelukt is kan je ze (als je gemotiveerd bent) ze altijd nog proberen te herschrijven met arrays.

Het belangrijkste in het oplossen van dit probleem is om even na te denken en best op papier even uit te schrijven wat er moet gebeuren. Hiervoor heb je geen letter code nodig, enkel logica. Iets wat ze u niet kunnen leren volgens mij.

Hieronder leg ik even de logica en stappen uit die ik gevolgd heb, maar ik raad u aan om hier eerst zelf over na te denken.
----
Ik ben er van uitgegaan dat ik eerst alle getallen van 1 tot en met 40 moest genereren. Daarom heb ik een FOR loop geschreven die de getallen van 1 tot en met 40 op het scherm schreef. De volgende stap was om de getallen onder de 20 te scheiden van de getallen boven de twintig maar kleiner dan 40. Hiervoor heb ik een IF functie gebruikt. Ik had ook nog nooit met modulo gewerkt, maar dit is niet zo moeilijk. Een geneste IF (een IF in de vorige IF functie) hielp me om te bepalen wat even was in de getallen onder de twintig en wat oneven was in de getallen vanaf 21. Dan is het een kwestie van deze telkens weg te schrijven d.m.v. bijvoorbeeld += en op te tellen.

[size=xsmall]Toevoeging op 19/11/2010 12:00:08:[/size]

Ik heb ondertussen wel zelf een vraag voor de meer gevorderde leden hier. Ik wou in mijn eerste geneste if bepalen wat de even getallen waren m.b.v. ($counter % 2). Uiteraard moest dit in dit geval (!$counter % 2) zijn, maar dit werkt niet. Ik heb nu gebruik gemaakt van een ELSE om dit probleem te omzeilen, maar had graag geweten hoe ik hier kan zeggen NIET($counter % 2).
if($counter % 2 == 0)

% berekend hoe vaak het getal achter de % in het getal er voor kan en geeft de rest waarde als return

1 % 2 = 1
2 % 2 = 0

en bijv 8 % 3 zal je 2 geven en 14 % 5 => 4
@ewergreen Kun je een eigen topic aanmaken? en daar relevante code in plaatsen zodat we kunnen zien wat je nu precies doet. Het wordt anders straks een warboel als we het over meerdere dingen in 1 topic gaan hebben.
Bitwise kijken of het getal even of oneven is, is ook leuk.
En dat vereist wat meer technische kennis :-)
@Jacoo, bedankt voor de uitleg, dat werkt perfect. Ik had ook al eens geprobeerd met true en false, maar uiteraard is dit geen boolean.
@Mark, het overgrote deel was on topic en bedoeld om Tjerk te helpen. Ik had een probleem waar hij misschien ook tegenaan zou lopen, dus besloot om het hier maar snel te vragen.
Ewergreen none op 19/11/2010 11:59:38

NIET($counter % 2).


Gewoon letterlijk. Dus NIET wordt een uitroepteken.
if(!($counter % 2))
Thanks SanThe, die werkt inderdaad ook.
<?php
function even($n) {
return (bool) $n & 2;
}
?>

Reageren