Laboration 1 - Datastruktur för bråk
Formaliteter
Alla laborationer görs i grupper om två. Din labbkompis är den
som har fått samma datornummer som du på sitt placeringskort.
-
Logga in.
Ni bör båda ha varsitt konto (användarnamn + lösenord).
Logga in på det ena.
- Checka in på kursen.
Välj "rapp" i vänstermenyn
och följ länken för att aktivera din kursregistrering. Logga in
med ditt kth-konto (som för Mina Sidor). Det här måste
ni göra bägge två!
- Öppna ett terminalfönster.
Under Applications hittar du Accessories och därunder
Terminal. Prova att skriva whoami
i terminalfönstret
för att se vilken av er som är inloggad just nu.
-
Skapa gemensam katalog med labbkompisen i två steg!
Skriv följande i terminalfönstret:
course labdir tilda10 kompisens_användarnamn
Låt sedan labkompisen logga in på sitt konto och ge kommandot
course labdir tilda10 ditt_eget_användarnamn
Nu har ni en gemensam katalog tilda10
där ni kan spara
alla program ni skriver i kursen.
-
Starta Python.
Under Applications hittar du Programming och därunder
IDLE (du får prova DrPython om du vill)
SimaManager
Under
Applications och sedan
CSC hittar du
SimaManager.
I fönstret som öppnas kan du välja kursen
tilda.
Denna kö använder du när det är full rulle under labbarna
och du vill få tag på en assistent,
till exempel för att fråga om hjälp eller för
att redovisa dina färdiga labbar. Är det lugnt så är det bara att vifta
så kommer vi!
Funktionen gcd
Öppna ett nytt Python-fönster (under
File i IDLE) och kopiera
följande kod dit.
# -*- coding: Latin-1 -*-
# gcd-funktionen från Miller & Ranums bok, s 35
def gcd(m,n):
while m%n != 0:
oldm = m
oldn = n
m=oldn
n=oldm%oldn
return n
|
Lägg till ett huvudprogram som läser in två tal, beräknar gcd genom att
anropa funktionen, och skriver ut resultatet. Tips: Läs in med
input
och skriv ut med
print
.
Spara programmet i tilda10-katalogen.
Svara sedan på följande frågor:
- Vad är gcd(1331, 704)?
- Hur många varv blir det i while-slingan? (Tips: lägg in en print-sats i funktionen)
- Går det lika bra att anropa funktionen med gcd(704, 1331)? Vad händer då?
Kommentera nu bort huvudprogrammet (under
Format hittar du
Comment Out Region) men låt funktionen stå kvar.
Klassen Fraction
Kopiera hela klassen nedan och klistra in den efter din gcd-funktion.
# Fraction-klassen från Miller & Ranums bok, s 35
class Fraction:
def __init__(self, top, bottom):
self.num = top
self.den = bottom
def __str__(self):
return str(self.num)+"/"+str(self.den)
def show(self):
print self.num,"/",self.den
def __add__(self,otherfraction):
newnum = self.num*otherfraction.den + \
self.den*otherfraction.num
newden = self.den * otherfraction.den
common = gcd(newnum,newden)
return Fraction(newnum/common,newden/common)
def __cmp__(self,otherfraction):
num1 = self.num*otherfraction.den
num2 = self.den*otherfraction.num
if num1 < num2:
return -1
else:
if num1 == num2:
return 0
else:
return 1
|
Redovisa ditt program och dina svar för någon av assistenterna!
Väl labbat av ................................. medger....................... den ...............