Systemutvikling (Software Engineering) TDT 4110 IT Grunnkurs Professor Guttorm Sindre



Like dokumenter
Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

Utførelse av programmer, metoder og synlighet av variabler i JSP

TDT4110 Informasjonsteknologi, grunnkurs

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Repetisjon, del 1. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

TDT4105 Informasjonsteknologi, grunnkurs

Import av varer fra Excel

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

Python: Lister og tupler Gaddis: Kapittel 7

Enarmet banditt Nybegynner Scratch Lærerveiledning

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

TDT4110 Informasjonsteknologi grunnkurs: Uke 48 Oppsummering/Spørretime. Professor Alf Inge Wang

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Øvingsforelesning TDT4105

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

3. Introduksjon til prosjektet Hringr. Scratch fra scratch Enkel programmering for nybegynnere

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

Fra datax til Visma eaccounting

81,9(56,7(7(7,26/2 'HWPDWHPDWLVNQDWXUYLWHQVNDSHOLJHIDNXOWHW

Python: Variable og beregninger, innlesing fra tastatur utskrift til skjerm. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Oppgaven består av to deler, del A og del B. Alle skal besvare både del A og del B, men det finnes noen valgmuligheter innenfor hver del.

Sensio Velferds App Brukerveiledning for oppsett og bruk av nettbrettløsningen

Installasjon av Windows 7 og Office 2016

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Oppsummering fra sist

TDT Prosedyre- og objektorientert programmering

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Programmering i ActionScript 3.0 Flash CS3 Professional

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Læringsmål og pensum. Utvikling av informasjonssystemer. Oversikt. Systemutvikling Systemutvikling i seks faser Femstegs prosedyre for programmering

TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak ( exceptions ) - 3rd edition: Kapittel 6. Professor Alf Inge Wang

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Shellscripting I. Innhold

Norsk DS A. side 1

RUTEPLANLEGGINGSSYSTEM BRUKERVEILEDNING

TURNERINGSREGLEMENT NORSK SCRABBLEFORBUND

Elektronisk utlånskontroll

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Læringsmål og pensum. v=nkiu9yen5nc

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

MinGat ny innloggingsmetode

2 Grafisk grensesnitt 1

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Brukermanual for statistikk på Asset on web: Statistikk salg pr dag, uke eller måned fordelt på alle avdelinger:

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

Manusnett - brukerveiledning for forfatter

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

Excited. Hvordan komme i gang med tekstbasert programmering? Centre for Excellent IT Education. Guttorm Sindre

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

TOD063 Datastrukturer og algoritmer

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Veileder for opplasting av AKTIV sporlogg til PC

SPILLVEILEDNING FOR TURNERING

Innhold 1 Universelt utformete og tilgjengelige PDF dokumenter Hvorfor PDF? Gjør det lettere for deg selv Eksporter fra Word

Brukermanual for kommuneansvarlig og testleder

Straffespark Introduksjon Scratch Lærerveiledning

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Endringer i Flash CS6 Professional. Innhold. Endringer i forhold til boka. Oppdatering til boka: Multimedieutvikling i Flash CS5 Professional

buildingsmart Norge Guiden

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

IN1000 Obligatorisk innlevering 7

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Arbeidskrav 1. Se fremdriftsplanen for innleveringsfrist. Emneansvarlig: Olav Dæhli 1

INF109 - Uke 1b

Oblig 2, SLI250 Et kortfattet analyse og designdokument for skifteregister på nett

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Kom i gang med nye HRessurs Reise og Utlegg

Leksjon 3. Kontrollstrukturer

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

Komme i gang med Skoleportalen

Øvingsforelesning i Python (TDT4110)

Løsningsforslag til Case. (Analysen)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4102 Prosedyreog objektorientert programmering Vår 2016

UNIVERSITETET I OSLO

Dette er nytt i GM EPC

Kom i gang med Stata for Windows på UiO - hurtigstart for begynnere

Transkript:

Systemutvikling (Software Engineering) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Læringsmål og pensum Mål Lære å lage større og sammensatte programmer Pensum Pythonboka kap. 1-9, 12 Teorikapitlet om Software Engineering 2

Programmering av systemer Lage et lite system som består av flere deler. Bruke mye av det vi har lært: Kontrollstrukturer if, while, for Funksjoner og moduler Datatyper og datastrukturer Tall, strenger, lister, tupler, mengder, dictionary Filer Unntaksbehandling 3

CASE: bondesjakkspill For at eksemplet ikke skal bli for stort: begrensninger Simpelt tekstlig brukergrensesnitt Begge spillerne må sitte ved samme datamaskin Kun to menneskelige spillere, ingen maskinspiller Med mer tid / høyere ambisjonsnivå ville vi ha lagt til Grafisk brukergrensesnitt Mulig å spille mot andre over nettet På flere ulike typer utstyr (PC, nettbrett, mobiltelefon, ) Maskinspiller med valgbar vanskegrad 4

CASE: bondesjakkspill Funksjonelle krav: F1: Brukerne skal kunne spille partier utføre lovlige trekk se brettet oppdatert etter hvert trekk F2: Programmet skal oppdage om noen har vunnet F2: Brukerne skal kunne lagre et parti på fil F3: Brukerne skal kunne hente fram parti fra fil F4: Brukerne skal kunne spille videre på et uferdig parti F5: Brukerne skal kunne se gjennom et parti trekk for trekk F6: Bruker skal kunne få fram statistikk Hvem har spilt, antall partier, seire og tap 5

Hvordan analyserer vi problemet? Analysen kan svare på følgende spørsmål: Hvilke data trenger vi å ta vare på? Hvordan kan vi ta vare på dem? Hvilke datatyper eller datastrukturer kan vi bruke? Hvordan skal vi dele opp systemet i funksjoner og moduler? Hvordan er kontrollflyten i systemet? 6

Dataanalyse Dataene vi skal håndtere i dette systemet er Navn på spillere Partiene som spilles Trekkene Hvem som vant og tapte (spillernavn) Brettposisjonen til en hver tid 7

Datatyper og datastrukturer Hvilke datatyper passer for informasjonen: Spillernavn: streng Parti: liste med to spillernavn og deretter alle trekkene Trekk: tuppel (Rad, Kolonne) Rad, Kolonne: heltall Hvilket trekk som ble gjort (X, O)? (Unødvendig, alltid annet hvert trekk) Brettposisjon: 2D-liste (liste av lister) Hver «rute»: blank, X eller O NB: det vi viser brukeren, trenger ikke være det samme som vi har i datastrukturen. Kan f.eks. Vise på skjermen, X, O Lagre 0, 1, 1 Vise: det som er lettest for brukeren å forstå Lagre: det som tar minst lagerplass / er lettest å prosessere 8

Hvilke moduler trenger vi? Hovedmodul main.py Starter programmet Overordnet funksjonaliteten uten å gå i detaljer importerer andre moduler, kaller funksjonene deres viser overordnet prosess for systemet Modul for brukergrensesnittet bruker.py All lesing fra tastatur og skriving til skjerm Skal kun måtte endre her for å skifte UI Modul for filbehandling fil.py All lesing fra og skriving til fil Skal kun måtte endre her for å skifte lagringsmåte Moduler for å unngå for mye detaljer i main.py Modul for spill-logikken spill.py Modul for statistikk stat.py Modul for hjelpefunksjoner util.py 9

Hvilke moduler trenger vi? Systemet består nå altså av følgende moduler: spill.py bruker.py main.py fil.py stat.py util.py 10

Hvordan er flyten i systemet? Hovedmodulen: Gi startinfo Så lenge bruker ikke velger avslutt: Motta menyvalg fra brukeren Hvis valget er gyldig og mulig å utføre: Utfør det Gi sluttinfo 11

Hvordan er flyten i systemet? Spille parti: Initialiser brettet Uten trekk hvis nytt parti Med tidligere utførte trekk hvis fortsettelse av avbrutt parti Så lenge ingen har vunnet og ingen har avbrutt Les inn lovlig trekk Utfør trekket Hvis vunnet: lagre resultat 12

Moduler Vi skal nå se på hvordan vi kan implementere (programmere) systemet ved hjelp av modulene main.py spill.py stat.py bruker.py fil.py util.py 13

Oppgave: Nytt krav: Hvis CPU skrives inn som navn på en av spillerne, skal denne spilles av maskinen 1. Finn ut HVOR i koden vi må gjøre endringer for å få til dette 2. Prøv å skriv noen få kodelinjer så maskinen trekker trenger ikke være gode trekk 14

Oppsummering I utvikling av systemer bør man dele opp programmet i flere deler, for eksempel ved hjelp av moduler. Før man skriver kode for et system, bør man skrive opp kravene til systemet, samt lage en skisse for inndeling av moduler og flyten igjennom programmet. Man kan angripe problemet på to ulike måter: Top-down: Ser på overordnet struktur først, så detaljer Bottom-up: Ser på detaljer først og deretter overordnet struktur Skill ut brukergrensesnitt, filbehandling, hjelpefunksjoner og hovedprogram. 15