Utforske tallmønstre med programmering
En løkke («FOR HVERT») lar deg generere mange ledd i et tallmønster raskt, i stedet for å regne dem ut for hånd ett og ett. Dette gjør det lettere å OPPDAGE mønsteret og sjekke om en foreslått formel faktisk stemmer for mange verdier.
Tips
- Skriv pseudokoden slik at den bygger videre på forrige ledd i mønsteret (f.eks. legg til neste tall), i stedet for å regne hvert ledd helt fra bunnen av – det ligner mer på hvordan ekte kode gjør det.
- Sjekk alltid resultatet fra koden mot en kjent formel for noen få ledd FØR du stoler på at koden er riktig.
Eksempel: Generere trekanttall med en løkke
Skriv pseudokode som regner ut de fem første trekanttallene ved å legge sammen tall fortløpende (1, 1+2, 1+2+3, …), og sjekk det femte trekanttallet mot formelen .
| i | Legger til | Sum (trekanttall) |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 3 |
| 3 | 3 | 6 |
| 4 | 4 | 10 |
| 5 | 5 | 15 |
- Pseudokoden er: «SETT sum = 0. FOR HVERT tall fra 1 til 5: legg til sum, skriv ut sum.»
- vi sporer den: gir sum 1
- gir sum 3
- gir sum 6
- gir sum 10
- gir sum 15
- med formelen:
- svaret er begge metodene gir 15, det femte trekanttallet.
Alternativ forklaring/metode: Bruk formelen i stedet for løkken
Alternativ metode – innenfor pensum, men ikke hovedmetoden her
Regne alle leddene direkte fra formelen
I stedet for å bygge opp summen ledd for ledd i en løkke, kan du regne ut hvert trekanttall direkte med formelen for hver – raskere for store , men løkken viser tydeligere HVORFOR formelen stemmer, siden den følger samme oppbygning som selve mønsteret.
| n | n(n+1)/2 |
|---|---|
| 4 | 10 |
| 5 | 15 |
Oppgaver
Prøv minst én oppgave på hvert nivå.
Lett(3)
L-11En løkke summerer tallene 1, 2, 3. Hva blir summen?
Vis fasit
| Beregning | Resultat |
|---|---|
| 1+2+3 | 6 |
1+2+3 = 6
L-12Hva blir det fjerde trekanttallet, regnet med formelen n(n+1)/2 for n=4?
Vis fasit
| Beregning | Resultat |
|---|---|
| 4*5 | 20 |
| 20 : 2 | 10 |
4*5 : 2 = 20 : 2 = 10
L-13En løkke kjører «FOR HVERT tall fra 1 til 3». Hvor mange ganger kjører løkken?
Vis fasit
| Beregning | Resultat |
|---|---|
| Tall 1, 2, 3 | 3 ganger |
- Løkken går gjennom 1, 2 og 3
- 3 ganger
Middels(3)
M-11Bruk formelen n(n+1)/2 til å finne det 10. trekanttallet.
Vis fasit
| Beregning | Resultat |
|---|---|
| 10*11 | 110 |
| 110 : 2 | 55 |
10*11 : 2 = 110 : 2 = 55
M-12En løkke summerer partallene 2, 4, 6, 8. Hva blir summen?
Vis fasit
| Beregning | Resultat |
|---|---|
| 2+4+6+8 | 20 |
2+4+6+8 = 20
M-13Spor en løkke som legger sammen kvadrattall: 1², 2², 3². Hva blir summen underveis (skriv alle delsummene)?
Vis fasit
| i | Sum |
|---|---|
| 1² | sum=1 |
| 2²=4 | sum=5 |
| 3²=9 | sum=14 |
- 1²=1
- sum 1. 2²=4
- sum 1+4=5. 3²=9
- sum 5+9=14
- delsummene er 1, 5, 14
Vanskelig(3)
V-11Skriv pseudokode (i samme stil som i eksempelet) som regner ut summen av de 6 første oddetallene (1, 3, 5, 7, 9, 11).
Vis fasit
| Beregning | Resultat |
|---|---|
| Oddetall | 1, 3, 5, 7, 9, 11 |
| Pseudokode | SETT sum=0, legg til for hvert oddetall |
- Løkken må gå gjennom oddetallene 1, 3, 5, 7, 9 og 11 og legge hvert til en løpende sum
- SETT sum=0, gjenta for hvert oddetall: legg til sum
V-12Summen av de n første oddetallene er alltid n². Bruk dette til å finne summen av de 8 første oddetallene uten å legge sammen alle.
Vis fasit
| Beregning | Resultat |
|---|---|
| 8² | 64 |
- Summen av de 8 første oddetallene bruker regelen n²
- for n=8: 8² = 64
V-13Forklar hvorfor det er nyttig å teste en kode-generert tallfølge mot en kjent formel for flere verdier av n, ikke bare én.
Vis fasit
| Beregning | Resultat |
|---|---|
| Én verdi stemmer | svakt bevis |
| Mange verdier stemmer | sterkere bevis |
- Én tilfeldig treff beviser lite, men stemmer koden med formelen for MANGE ulike n, er det sterk støtte for at begge er riktige
- flere testverdier gir sterkere bevis enn én