Datorteknisk introduktion Tekniska beräkningar med Python för gymnasiet (β-version!) Teknik 1, 150p Realgymnasiet i Linköping

Relevanta dokument
TEKNIK. Ämnets syfte. Undervisningen i ämnet teknik ska ge eleverna förutsättningar att utveckla följande:

TEKNIK. Ämnets syfte. Undervisningen i ämnet teknik ska ge eleverna förutsättningar att utveckla följande: Kurser i ämnet

Håkan Elderstig, förstelärare, Stockholm Science & Innovation School

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Introduktion till programmering och Python Grundkurs i programmering med Python

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Grundkurs i programmering - intro

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Ett projektarbete i svenska, teknik och engelska, riktat mot DICE. Thoren Innovation School HT2012.

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Användarhandledning Version 1.2

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

LEGO MINDSTORMS Education EV3 Naturvetenskapligt aktivitetspaket

Extramaterial till Matematik Y

Föreläsning 2. Operativsystem och programmering

Uppgifter: Ansvarig: Tidigare jobb:

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Introduktion till programmering, hösten 2011

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Matematisk Modellering

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Introduktion till Matlab

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

KONSTRUKTION. Ämnets syfte. Kurser i ämnet

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Datalogi för E Övning 3

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Språket Python - Del 1 Grundkurs i programmering med Python

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Matematisk Modellering

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Digitalt lärande och programmering i klassrummet

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Program & programmering

Objektorienterad programmering Föreläsning 2

KONSTRUKTION. Ämnets syfte

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Föreläsning 1 & 2 INTRODUKTION

INSTITUTIONEN FÖR FYSIK

TDDE44 Programmering, grundkurs

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

KURSMÅL WINDOWS STARTA KURSEN

Funktioner. Linda Mannila

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Operativsystem och användargränssnitt

Grundläggande datalogi - Övning 1

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

Editering, Kompilering och Exekvering av Javaprogram

Uppgifter teknik HT17 (uppdaterad v. 40)

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Föreläsning 3. Programmering, C och programmeringsmiljö

JavaScript Block Editor:

Föreläsning 1 & 2 INTRODUKTION

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Uttryck, satser och strömhantering

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Programmering för alla!

Laboration: Whitebox- och blackboxtesting

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Introduktion till Matlab

Planering Programmering grundkurs HI1024 HT 2014

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Beräkningsmetoder för superellipsens omkrets

Extramaterial till Matematik Y

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Förkortning och förlängning av rationella uttryck (s. 27 Origo 3c)

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Naturvetenskapligt aktivitetspaket Koppling till Lgr11

Inledande programmering med C# (1DV402) Introduktion till programmering

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Innehålls förteckning

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Övningar i 2D2050. Per-Anders Staav (kallas Pa) Epost: eller

Laboration 1 Introduktion till Visual Basic 6.0

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

MEDICINSK TEKNIK. Ämnets syfte

SKOLFS. beslutade den -- maj 2015.

Planering Programmering grundkurs HI1024 HT data

SKOLFS. beslutade den XXX 2017.

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Använda Python Laboration 1 GruDat, DD1344

C++ Slumptalsfunktioner + switch-satsen

Transkript:

Datorteknisk introduktion Tekniska beräkningar med Python för gymnasiet (β-version!) Teknik 1, 150p Realgymnasiet i Linköping Andreas Göransson 8 maj 2012 1 Mål med avsnittet Vad menas med att tänka som en datavetare? Problemlösning 2 Introduktion till grundläggande begrepp och datorns utveckling Du redogör för några historiskt viktiga tekniska framsteg, befintlig teknik och aktuell teknikutveckling samt beskriver hur teknik och samhälle samspelar. 2.1 Hårdvara 2.1.1 Vad är en dator? ˆ Mekaniska räknehjälpmedel ˆ Elektriska reläer (Konrad Zuse) ˆ Elektronrör (ENIAC) ˆ Transistorn ˆ Integrerade kretsen (IC) Grundläggande tekniska begrepp. ENIAC programmerades genom att koppla om sladdar. EDVAC, ENIACS efterföljare var en stored program computerdär programmet lagrades i ett minne istället. Stored program computer: ˆ Programmerade instruktioner ˆ Data ˆ Lagras i minne (RAM) ˆ Normalt lagras både data och instruktioner i samma minne 1

Tabell 1: Mål och innehåll Syfte Centralt innehåll Moment/Uppgift Kunskaper om teknikutvecklingsprocessen och förståelse av sambanden mellan de olika delarna i den Förmåga att använda teknikvetenskapliga metoder, begrepp och teorier. Kunskaper om hur teknik har utvecklats och utvecklas i samspel med det omgivande samhället samt kunskaper om befintlig teknik och aktuell teknikutveckling. Kunskaper om teknikens roll och drivkrafter ur ett etiskt perspektiv. Kunskaper om hur föreställningar och traditioner inom teknikområdet styr uppfattningar om vad som är manligt och kvinnligt och hur det har påverkat och påverkar teknik och teknikutveckling. Förmåga att kommunicera inom det tekniska området samt kommunicera om teknik Teknikutvecklingsprocessens alla delar från idé och modell, produkt eller tjänst till användning och återvinning med praktisk tillämpning av teknik och teknikutveckling inom ett eller flera teknikområden. Tekniska begrepp, teorier och modeller innefattande beräkningar och rimlighetsbedömningar. Teknikens historia och teknikutvecklingens betydelse för samhället samt introduktion i aktuella utvecklingsområden inom teknik. Grundläggande teknikfilosofi: etiska värderingar och genusstrukturer samt hur de har påverkat och påverkar tekniken, dess användning och tillgänglighet. Hur teknik och teknikens attribut könsmärks. Projektarbets-, kommunikations-, presentations- och modellteknik, till exempel digitala medier och programvaror, manualer och instruktioner, muntliga och skriftliga framställningar samt digitala och manuella tekniker för att skapa modeller. Kommunikations-, dator- och nätverksteknik för lärande och förmedling av teknik och information. Utvecklingsprocessen för ett datorprogram ( system engineering ), olika utvecklingsmetoder som extreme programming. Tekniska begrepp och teorier inom det datortekniska området. T ex hur mycket rymmer en hårddisk, vad är en fil, hur snabbt kan en fil överföras i ett nätverk, hur skapar man ett effektivt datorprogram? Kunskaper om hur dator- och nätverkstekniken utvecklats, dess betydelse för samhället samt kunskaper om aktuell utveckling inom det datortekniska området. Vilka etiska aspekter finns på datoranvändning och informationsöverföring? Hur förhåller sig datorteknik till begrepp som manligt och kvinnligt? I syfte att utveckla förmåga att använda verktyg för dokumentation, presentation och information. Hur dokumenterar man med hjälp av datorn? Hur kan man presentera med datorstöd? Hur dokumenterar vi ett datorprogram? Hur gör man en manual eller en hjälptext till ett datorprogram? Hur skapar vi en matematisk modell och simulerar ett förlopp? Hur kan datornätverk och internet användas för att förmedla teknik och information, t ex bloggar och videoteknik. 2

2.1.2 Material som används i datorer En dator kräver en mängd olika speciella material med vissa kemiska, mekaniska, termiska och elektriska egenskaper. ˆ Magnetminnen ˆ Optiska lagringsmedier ˆ Halvledare i kretsar och komponenter som dioder, transistorer och integrerade kretsar ˆ Kylning ˆ Ledningsmotstånd 2.2 Mjukvara 2.2.1 Operativsystem Ett operativsystem kan beskrivas som det program som alltid finns igång i bakgrunden på en dator och som möjliggör att andra program kan köras. För en programmerare innebär ett operativsystem att vi inte behöver skriva program som kommunicerar direkt med kretsarna eller datorns hårdvara utan att mycket redan finns färdigt för oss. Ett exempel är att vi inte behöver uppfinna ett sätt att spara filer på en magnetisk skiva varje gång vi skriver ett nytt program utan att det redan finns färdiga metoder och funktioner för det i operativsystemet som vi kan anropa och låta göra jobbet åt oss. 2.3 Systemprogram eller hjälpprogram Finns som extra funktioner för att datorsystemet ska fungera, t ex program som kan användas för att ställa in saker i datorn som bildskärmsupplösning eller liknande eller sköta om säkerhetskopiering i bakgrunden. 2.3.1 Applikationsprogram Applikation eller tillämpning är program som vi som slutanvändare kommer i kontakt med. Man gör något med ett sådant program, t ex ordbehandling, kalkyl, presentation, e-post osv. 2.4 Uppgift 1a Du använder tekniska begrepp... Syfte: Att träna på datorns delar samt få träning i användning av dator- och kommunikationsteknik för förmedling av information Gör en poster med datorns hjälp, där delarna i en modern persondator framgår samt deras funktion beskrivs. 3

3 Datorprogram 3.1 Uppgift1b En wiki finns uppsatt för kursen teknik 1 på http://teknikett.wikispaces. com. Varje person i klassen får ett datortekniskt begrepp att skriva en artikel på wikin om (läraren delar ut lista). Din sida ska länka till andra sidor där det är relevant. Du behöver inte länka till alla andra sidor. När du är färdig ska du granska den kompis sida och föreslå förbättringar eller förändringar av den. ˆ datorprogram ˆ process ˆ primärminne ˆ sekundärminne ˆ processor ˆ inenhet ˆ utenhet ˆ programmeringsspråk ˆ kompilator ˆ kompilera ˆ maskinkod ˆ skriptspråk ˆ högnivåspråk ˆ nätverk ˆ bit ˆ byte ˆ systemprogram ˆ tillämpningsprogram ˆ hårddisk ˆ optisk enhet ˆ USB ˆ firewire ˆ VGA ˆ HDMI ˆ nätverkskort 4

3.2 Uppgift 1c Du redogör för tekniska egenskaper(termiska, elektriska, mekaniska och kemiska) hos olika material samt för hur och när de kan användas: Material som har betydelse för datorns och elektronikens utveckling. Vilka material används när man bygger upp en dator, t ex för ledningsbanor på kretskort, kontaktytor och för integrerade kretsar? Vilka elektriska egenskaper är intressanta hos ett halvledarmaterial som kisel eller germanium? Varför är dessa intressanta när vi vill konstruera en dator? Vad menas med att man dopar ett halvledarmaterial och varför gör man det (A) 3.3 Programutveckling med Python Här finns det tekniska begrepp att lära i avsnittet Python är ett så kallat skriptspråk och är mycket spritt idag. Det finns på flera olika plattformar som Linux, Unix, OS X och Windows. Språket är lite speciellt så tillvida att vitutrymme (tabbar och blanksteg) spelar roll. Vi börjar med ett enkelt program som bara skriver ut en text på skärmen: print " Hello World!" Här är print ett så kallat nyckelord eller kommando och texten "Hello World!" en sträng. Vi fortsätter med ett exempel där vi gör en beräkning i Python: a = 2 b = 3 print a+b Här kallas a och b för variabler. De lagrar heltalen 2 och 3 och kommandot print kommer att skriva ut resultatet av beräkningen. Notera att inga citattecken omger a+b. Vi provar nu lite fler räknesätt: a = 2 b = 3 c = 5 print c/a Notera att resultatet av c/a blir 2 och inte 2.5. Detta beror på att Python tolkar a=2 och c=5 som att dessa variabler är heltal. Det innebär i sin tur att resultatet av c/a presenteras som ett heltal. För att komma runt det kan vi se till att en av variablerna innehåller ett flyttal, t ex c=5.0. Då kommer också resultatet att blir ett flyttal och vi får resultatet 2.5. 3.4 Kodstil och kommentarer När man programmerar är det inte bara viktigt att skriva kod som fungerar utan också kod som är lättläst och tydlig. Ett ytterligare sätt är att kommentera koden. Kommentarer i Python inleds med tecknet #. Allt efter detta tecken på en rad ignoreras av Pythontolken. Försök att kommentera det som är svårt att förstå i din kod, varför något står där eller hur det fungerar. Däremot ska du undvika att kommentera det som är självklart eller kommentera allt. Kommentarerna är till för dig eller den som underhåller och utvecklar koden. En annan 5

dokumentationsfunktion är dokumentationssträngar eller docstrings på engelska. Docstrings används för att skapa dokumentation för användaren. Denna kod visas för användaren när kommandot help() ges i pythontolken. En docstring inleds med """. 3.5 Inmatning Oftast vill man läsa in något från tangentbordet, t ex kommandon eller siffror som användaren matar in. I Python görs detta med funktionen raw input(), t ex raw input( Vad heter du? ). Funktionen returnerar en sträng, dvs en text som vi kan spara i en variabel: >>> namn = raw_input ( Ange ditt namn : ) Ange ditt namn : Andreas >>> print namn Andreas >>> 3.6 Uppgift Skriv ett program i Python som frågar efter förnamn och efternamn. Programmet ska sedan skriva ut förnamn och efterman på skärmen. I början av programmet ska uppgiftsnumret, datum och ditt namn framgå: # Uppgift 2 # Andreas Göransson # 2012-01-01 #... din kod här! 3.7 Loopar För att upprepa saker i ett datorprogram kan man skriva samma kommando flera gånger i följd i programmets källkod: i = 0 print i i = i + 1 print i i = i + 1 print i i = i + 1 print i Du inser säkert hur ineffektivt detta sätt att skriva kod skulle vara. Datorn kan köra kommandon upprepade gånger via något som kallas för loop. Ett exempel på loop är en for-sats: for i in range (3) : print i 6

Detta kommer att ge samma resultat som det första exemplet men vi behöver koda mycket mindre! 3.8 Uppgift for-loop Skapa ett program som skriver ut en logaritmtabell för talen 1-100 på skärmen. Tips, funktionen math.log(x,[bas]) finns tillgängligt i modulen math. Utskriften ska se ut som nedan: 3.9 Gruppuppgift Vad skriver följande program ut på skärmen? for i in range ( 10) : for j in range ( 10) : print i,j 3.10 Funktioner För att göra koden lättare att underhålla och mer lättläst och funktionell använder man något som kallas för funktioner i många programspråk. En funktion är ett kodblock som utför en viss uppgift. Likt matematiska funktioner kan vi ge invärden eller indata och få tillbaka returvärden. Funktioner skrivs med nyckelordet def i Python, en förkortning för define. Vi tar ett exempel och skriver en funktion som beräknar en rektangels area utifrån indata i form av bredd och höjd (a, b): #! /usr/bin/python # area.py # Beräknar arean av en rektangel med längden a och höjden b. def area (a,b): return a * b # Anrop av funktionen a = 10 b = 4 print " Arean öfr en rektangel med sidorna a = " + str (a) + " och b = " + str (b) print " är ", area (a,b) Det kanske mest intressanta att notera i kodexemplet är det nya nyckelordet return som helt enkelt talar om vad funktionen ska sända tillbaka för värde. En funktion behöver dock inte returnera något värde utan bara utföra vissa uppgifter. 3.11 Uppgift 2.1 Skriv ett enkelt program i Python som omvandlar temperatur från Celsius till Fahrenheit. Använd funktioner. Om du vill bygga ut programmet sedan kan du lägga till möjlighet för användaren att välja vilken konvertering som ska göras. 7

3.12 Uppgift 2.2 Skriv ett program i Python som räknar ut ersättningsresistansen för en parallellkoppling av resistorer. Börja med att skriva ett program som räknar ut ersättningsresistansen för två motstånd. Gör sedan om programmet så att användaren kan mata in godtyckligt antal resistorer. Använd funktioner i ditt program. 4 Effektivitet hos program, tidskomplexitet Det finns flera sätt att lösa ett givet programmeringsproblem, frågan är vilka sätt som är bättre och vilka som är sämre. För att svara på det behöver vi förstå hur ett program körs eller exekveras av datorn och hur olika algoritmer beter sig när vi skalar upp dem. 4.0.1 Exempel exponentberäkning Vi vill beräkna exponenter med dator och vi tänker oss att ingen ännu skapat en metod för detta. För att implementera en exponentberäkning av a b kan vi helt enkelt låta datorn multiplicera talet a med sig självt b-gånger. Skriv in koden i en ny fil och döp den till exponent.py. Prova att det fungerar att beräkna till exempel 10 100. #! /usr/bin/python # Algoritm för att beräkna a upphöjt till b def exp (a,b): resultat = 1 for i in range (b): resultat = resultat * a return resultat Fundera nu över hur många gånger loopen i programmet ovan körs. Finns det då effektivare sätt att skriva programmet? Med lite kännedom om hur exponenter fungerar och exponentlagarna kan vi tänka på följande omskrivning: 10 8 = (10 2 ) 4 = (10 10) 4 (1) Om vi skulle låta programmet dela upp problemet så att det räknar ut (10 2 ) 4, hur många gånger skulle loopen då köras? def exp2 (a,b): if b == 1: return a if (b / 2) * 2 == b: return exp2 (a*a, b /2) else : return a* exp2 (a,b -1) Poängen här är inte att du ska bli expert på att skriva program för uträkning av exponenter utan att du ska inse att det finns flera sätt att lösa ett givet programmeringsproblem och att dessa sätt belastar datorn olika mycket. Vi små exponenter är det liten skillnad mellan dessa två program men när vi ökar exponenterna skalar lösningarna mycket olika. I första exemplet skalar problemet som du redan sett linjärt, O(n), med exponenten, vilket i och för sig inte är 8

så illa. I det andra exemplet halverar vi problemet vid varje gång vi kör ett funktionsanrop, man säger då att programmet skalar logaritmiskt: O(log n). 5 Datorn som verktyg för teknikutveckling 5.1 Ritning och CAD 5.2 Kommunikation och presentation 5.2.1 Grafritning med Python Python kan användas för att visualisera mätdata och beräkningar i form av grafer. I själva Python finns i grunden inte stöd för detta utan man måste installera och använda någon form av utökning eller modul. Den vanligaste är kanske Pylab. Här följer ett exempel på hur du kan rita en graf till en funktion med Pylab: # -*- coding : cp1252 -*- # bollmodell. py - äberknar en bolls öhjd över marken # Andreas 2012 from pylab import * v0 = 1 # åutgngshastighet i m/ s t = 1.0 # Tiden sekunder åfrn att bollen äslpps g = 9. 82 # Tyngdaccelerationen i m/ s* s def y(t): return v0 * t - 0.5 * g * t ** 2 # En lista med decimaltal mellan 0.0 och 1.0 genereras t = arange (0.0,1.0,0.01) plot (t,y(t)) # Ritar grafen xlabel (" Tid t (s)") # Axelrubrik ylabel (" Hojd y (m)") # Axelrubrik title ("En bolls hojd over marken $y(t)= $") # Titel åp grafen, LaTeX - kod inom $ grid ( True ) # Visa östdlinjer show () # Visa grafen åp äskrmen 5.3 Beräkning, mätning och modellering 5.3.1 Uppgift termokoppen Man vill utveckla en mugghållare till kaffekoppar som ska hålla varma drycker varma längre. För att göra detta finns olika material att tillgå vars termiska egenskaper ni vill undersöka. Drycken kommer att ha temperaturen 80 när det tappas upp. Avsvalning av ett objekt beror av olika faktorer som temperaturskillnaden mot omgivning och det omgivande material värmekonduktivitet. 9

En matematisk modell för förloppet ges av det som brukar kallas Newtons avsvalningsekvation: T (t) = T rum + (T 0 T rum )e kt (2) där T (t) är temperaturen hos drycken vid tiden t, T 0 är temperaturen hos drycken vid försökets start, T rum rumstemperaturen och k en konstant som beror av bland annat material i koppen samt dess form. Mät upp temperaturen för den varma drycken när behållaren omges av olika material. Plotta resultatet i en graf och beräkna konstanten k. ˆ Frågor att besvara... 5.3.2 Uppgift 3 x x B A Figur 1: Uppgift 2 Man vill bygga en låda av plåt. Plåtarna som finns att tillgå har storleken AxB cm. Lådan skall ha så stor volym som möjligt. Utveckla ett datorprogram i Python där en matematisk funktion beräknar volymen för olika mått på lådan. Programmet ska beräkna volymer för olika värden på x i steg om 1 mm. Gör en ritning av den optimala lådan i AutoCAD med korrekt måttsättning. Vid bedömningen av uppgiften kommer läraren att utgå från ˆ Din förmåga att lösa att tekniska problem ˆ Din grad av självständighet i arbetet ˆ Din förmåga att dokumentera arbetet och resultatet ˆ Din förmåga att göra enklare ritningar i CAD-program ˆ Din säkerhet i att utföra tekniska beräkningar och bedöma resultatens rimlighet ˆ Din säkerhet i att använda datorn som verktyg för information och kommunikation 10

Planering Implentering Testning Leverans Underhall 6 Programutveckling 6.1 Programutvecklingsmetodik Konsten att utveckla datorprogram kan sägas vara en variant av teknikutvecklingsprocessen. Det finns flera olika filosofier eller metoder för hur man utvecklar datorprogram. Förr var programutvecklingsprojekt ofta mycket omfattande och detaljerade med stora mängder dokumentation. Man arbetade sekventiellt eller i ett enda stort svep från planering till färdigt program. Som en motreaktion på detta kom iden om lättrörlig eller agil utveckling. Man jobbar istället med fokus på produkten för processen. Man satsar på att tidigt skapa en körbar version av programmet och att släppa nya versioner ofta under utvecklingsprocessen. Genom att låta kunden vara med hela tiden och testa programmet undviker man att utveckla fel saker. En viktig del i agil utveckling är också testning. Man börjar ofta med att skriva testerna som koden ska passera först. Därefter utvecklas koden så att den passerar testet. Det här är ofta ett bakvänt sätt för många att arbeta efter. Oftast utvecklar man något först och sedan kvalitetssäkrar man det, inte tvärtom. Utveckling av datorprogram följer i stort de faser ett teknikutvecklingsprojekt gör: ˆ Planering ˆ Implementering ˆ Testning ˆ Leverans ˆ Underhåll 6.1.1 Planeringsverktyg För att analysera eller konstruera ett datorprogram finns det verktyg som kan hjälpa oss på vägen. Exempelvis flödesdiagram och pseudokod. Flödesdiagrammet visar en grafisk representation av hur programmet rent logiskt arbetar medan pseudokod är ett ett mellansteg mellan flödesdiagram och ren implementering i ett visst programmeringsspråk. Pseudokod är inte standardiserad men oftast utelämnar detaljer som variabeldeklarationer för att göra koden läsbar. Flödesdiagrammen har däremot vissa standardsymboler som man bör använda: 6.1.2 Uppgift a) Konstruera ett flödesdiagram som visar hur programmet exp2 arbetar. b) Konstruera ett flödesdiagram för kvadratrotsalgoritmen. Skriv sedan ned pseudokod för algoritmen. Skriv därefter själva programmet i Python. Fundera ut några testfall som du kan köra för att verifiera att programmet fungerar som det ska. 11

6.2 Uppgift 4 Skapa ett enkelt gissa-tal spel i Python. Börja med att göra ett flödesdiagram för programmet, skriv sedan koden. Spelet ska låta användaren gissa ett tal mellan 1 och 10. Antal gissningar ska skrivas ut på skärmen. Förbättra spelet så att det ger ledtrådar genom att skriva ut på skärmen om gissningen är för låg eller hög. Du kan också skapa en highscorefunktion som låter användaren ange ett namn och som sedan sparar användarens namn och gissningar. Highscorelistan ska visas när ett spel avslutats. 6.3 Dator- och nätverksteknik för lärande och kommunikation 6.3.1 Bloggar 6.3.2 Wikis 6.3.3 RSS 6.3.4 Google+ och Docs 6.3.5 Twitter 6.3.6 Facebook 6.3.7 Lärplattformar och personliga lärmiljöer 12