Laboration 1 - AlgoritmerDu som läste DD1321 tilpro i höstas kan hoppa direkt till programmeringsuppgiften nedan.HederskodexLäs igenom hederskodexen (se vänstermenyn).FormaliteterLaborationerna görs normalt i grupper om två (om det finns utrymme kan du labba ensam, men större grupper är inte tillåtna).
SimaManagerUnder 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. Är det lugnt så är det bara att vifta så kommer vi!ProgrammeringsuppgiftI denna uppgift ska du implmentera multiplikation och division av heltal enbart med hjälp av plus och minus.MultiplikationSkriv en funktion mult som tar två heltal (x, y) som parametrar och returnerar heltalen multiplicerat med varandra. Du får enbart använda dig av plus och minus. Den enkla lösningen är att du gör en loop som adderar x med sig självt under y varv. Funktionen ska kunna multiplicera stora tal utan att det tar orimligt lång tid. Prova med 12231231232312323 * 5 och 15 * 323241244132443. Det går att få Nlog(M) men det är inget krav.DivisionFunktionen ska ta två paramtetrar (t, n) och returnera t heltalsdividerat med n. Den enkla lösningen är att loopa x varv och i varje varv kolla om mult(n, x) är större än t för i så fall är x-1 svaret. Det tar orimligt med tid för stora täljare. Det finns smartare lösningar. Ett lite effektivare alternativ är att dela upp täljaren i deltal som divideras (ungefär som liggande stolen). Deltalen kan vara olika långa. Använd slicing för att ta ut deltalen. Exempel:tal = 135212125 antalsiffror = len(str(tal)) treforstasiffror = int(str(tal)[0:3])Det finns effektivare lösningar men kom ihåg att du får enbart använda dig av plus, minus och din egen funktion mult. Programmet ska klara av stora tal utan att det tar orimlig tid. Prova med div(135212125, 25) TestprogramDina funktioner ska kunna importeras från en annan fil. Skriv därför inget vanligt main eller testkod direkt i filen. Om du vill göra testerna i samma fil som funktionerna använd följande teknik så att man kan importera dina funktioner utan att köra dina tester.def main(): # Din teskod här! if __name__ == "__main__": main()Skriv minst fem tester per funktion t.ex. stora tal, små tal, negativa tal. Skriv ut testet, resultat och förväntat resultat (använd pythons inbyggda funktioner). Så här kan det se ut. 1 * 100090909 = 100090909, förväntat resultat 100090909 Skriftlig algoritmbeskrivningRita ett flödesdiagram över dina algoritmer. Skriv därefter ner algoritmerna steg för steg på papper.Analys av algoritmenMed stöd av din algoritmbeskrivning uppskatta vilken komplexitet din multiplikation och division har.RedovisningVid redovisningen kan det bli kö. Se till att ha gjort alla deluppgifter och gå vidare med en nästa labb medan du väntar.
Väl labbat av ......................................... medger....................... den ...............PS Berätta för din assistent hur många timmar du har lagt ner på denna labb! |