Programmering

Tanken är att ni ska lära er "enkel" programmering i Python. I centrala innehållet i Ma2c (och framtida kurser) står att man ska behandla

  • Strategier för matematisk problemlösning inklusive modellering av olika situationer, såväl med som utan digitala verktyg och programmering.

Detta lär man sig inte i en handvändning men nedanstående uppgifter är ett försök att i alla fall göra något.

Introduktion

Smidigast är att skriva sina program i Python online här https://repl.it. Skaffa gärna ett konto så du kan spara dina program.

Många trevliga (och svåra) "programmeringsmatteproblem" finns på Project Euler; https://projecteuler.net/archives. Ett eventuellt slutmål med nedanstående övningar är att du ska lösa uppgift 2 om Fibonaccital, skicka in svaret till Project Euler och bli godkänd. För att klara denna uppgift behöver du känna till lite programmering, som introduceras med hjälp av några deluppgifter.

Här https://open.kattis.com finns också problem, chans att samla poäng och hamna på topplistor. Problemen är från ganska enkla till mycket svåra. Dock behöver man känna till hur man läser in data, vilket man i så fall själv får googla upp.

Uppgifter

1. Här är en for-loop som beräknar summa av de 100 första heltalen. (Notera att range(1,101) löper genom heltalen 1 till och med 100, inte 101.) Klicka på pilen för att köra programmet.

- Gör ett program som adderar de 1000 första (naturliga) talen.

- Gör ett program som multiplicerar de 100 första (naturliga) talen.


2. En for-loop stannar efter ett förutbestämt antal steg. Vill man istället "snurra" till ett visst villkor är uppfyllt använder man en while-loop. Här är en while-loop som summerar tal 1+2+3+… till summan är så stor som möjligt men mindre än 100000. Antalet termer och summan skrivs ut. Om man vill snygga till det lite kan man ange vad som spottas ut (andra raden). Matematiskt är detta såklart överflödigt.

- Gör ett program som adderar heltal 1+2+3+… till den minsta summa som är större än 1000000. Skriv ut summan och antalet termer.


3. Med en if-sats kan man styra vad som ska exekveras. Här är program i som frågar efter ett heltal och talar om om detta tal är jämnt eller udda. (Koden "n%2" returnerar resten då n delas med 2, t.ex. 6%2 ger 0 och 7%2 ger 1.)

- Gör ett program som adderar de udda heltalen i intervallet 1 till 1000. Även om det inte är det snabbaste, försök med en if-sats i en for-loop/while-loop.


4. Ett program som genererar och skriver ut de tio första Fibonaccitalen; 1,1,2,3,5,8,13,21,34,55. Dessa tal fås successivt genom att man adderar de två föregående.

- Gör ett program som skriver ut de 100 första jämna Fibonaccitalen.


5. Nu skulle det ju inte bara handla om syntax utan matematisk problemlösning. Här är några problem där du själv får tänka ut hur ditt program ska se ut.

a) Alfons läser en tjock bok på 1511 sidor. Första dagen läser han en sida, andra dagen två sidor, tredje dagen tre sidor, osv. Han håller på så tills boken är utläst. Sista dagen läser han de sidor som råkar återstå. Vilken dag läser Alfons klart sin bok och hur många sidor läser han denna dag?

b) En robot rör sig på en tallinje (x-axel) enligt följande princip. Den börjar vid x=0, rör sig ett steg i en riktning (vänster eller höger) i sitt första drag, två steg i en riktning (vänster eller höger) i sitt nästa drag, osv. Roboten kan aldrig gå till vänster om x=0 men går alltid till vänster om så är möjligt, annars till höger. Var befinner sig roboten efter sitt 10000:e drag?

Robotens första steg: 0 -> 1 -> 3 -> 0 -> 4 -> 9 …

c) Undersök en talföljd: Starta med ett positivt heltal n och bilda ett nytt heltal enligt följande. Om n är udda bilda 2n, om n är jämnt bilda 3n+1. Avbryt om n blir 1.

Testa ditt program med olika heltal som start. Kommer programmet alltid att stanna (dvs. når man alltid 1)? Hur många steg tar det i så fall (implementera en stegräknare i ditt program)?


6. Nu är du redo för "mästarprovet"; Project Euler, Problem 2

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.


Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License