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

Like dokumenter
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

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

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

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

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

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

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

Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

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

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.

Oppsummering fra sist

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

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

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

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

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

Læringsmål og pensum. v=nkiu9yen5nc

Øvingsforelesning 1 Python (TDT4110)

TDT4105 Informasjonsteknologi, grunnkurs

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

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

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

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

TDT4110 IT Grunnkurs Høst 2015

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

TDT4110 Informasjonsteknologi, grunnkurs

Forkurs i informatikk Python. Andreas Færøvig Olsen

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Læringsmål og pensum. Designe et program

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

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

Læringsmål og pensum. Oversikt

YouTube-kanal ITGK. Læringsmål og pensum

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

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

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner. - 3rd edition: Kapittel Professor Alf Inge Wang

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

Designe et program. TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Mål.

Python: Filer og unntak Gaddis: Kapittel 6

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Læringsmål og pensum. Oversikt. Systemprogramvare Operativsystemer Drivere og hjelpeprogrammer. To hovedtyper programvare

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

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

Læringsmål og pensum. if (be): else (not_to_be):

Sprettende ball. Introduksjon: Steg 1: Vindu. Sjekkliste. Skrevet av: Sigmund Hansen

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Del 1 En oversikt over C-programmering

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

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

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

TDT4110 IT Grunnkurs Høst 2014

GJØVIK INGENIØRHØGSKOLE

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

Informasjon Prøveeksamen i IN1000 høsten 2018

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4110 IT Grunnkurs Høst 2016

Tell sekunder. Introduksjon. Skrevet av: Teodor Heggelund. I denne oppgaven skal vi lage vårt eget spill!

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Rekursjon. Binærsøk. Hanois tårn.

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

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

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

Python: Filer og unntak Gaddis: Kapittel 6

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Professor Alf Inge Wang

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

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

Sprettende ball Introduksjon Processing PDF

TDT4102 Prosedyreog objektorientert programmering Vår 2016

IN1000 Obligatorisk innlevering 7

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

Filbehandling Tekstfiler

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

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler. - 3rd edition: Kapittel Professor Alf Inge Wang

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Informasjon Eksamen i IN1000 høsten 2017

Rekursjon. Hanois tårn. Milepeler for å løse problemet

INF 1000 høsten 2011 Uke 3 6. september

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater

UNIVERSITETET I OSLO

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

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

TDT4105 Informasjonsteknologi, grunnkurs

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

Hvordan angripe en større oppgave? (og hva skal jeg gjøre i oblig 7!?)

Datastrukturer (kap. 8)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

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

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Transkript:

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

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

3 Sette sammen mange biter av det vi har lært En større case

4 Programmering av systemer Vi skal nå se på hvordan vi kan sette sammen det vi har lært til å lage et lite system som består av flere deler. Koden til systemet inkluderer (stort sett alt dere har lært): Bruk av flere moduler Bruk av funksjoner Bruk av for- og while-løkker Bruk av if-setninger Bruk av diverse datatyper og datastrukturer (bla. dictionary) Bruk av filhåndtering

5 CASE: hybelregnskap Vi skal lage et system for å kunne føre hybelregnskap. Funksjonelle krav til systemet: F1: Brukeren skal kunne legge inn utgifter F2: Brukeren skal kunne legge inn inntekter F3: Brukeren skal kunne se på alle utgifter og innteker og få vist balanse F4: Brukeren skal kunne fjerne en utgift/inntekt F5: Brukeren skal kunne laste inn regnskap fra disk F6: Brukeren skal kunne lagre regnskap til disk F7: Systemet skal tilby et tekstlig brukergrensesnitt

6 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å dataen? Hvilke datatyper eller datastrukturer kan vi bruke? Hvordan skal vi dele opp systemet i moduler? Hvordan er flyten i systemet?

7 Dataanalyse Dataene vi skal håndtere i dette systemet er utgifter og inntekter. Vi må da bestemme hva vi trenger å vite om utgifter og inntekter. Vi gjør det enkelt og går for følgende: ID: Gjøre det mulig å skille innslaget fra de andre Dato: Datoen for utgiften eller inntekten Beløp: Hvor stor inntekten eller utgiften er i kr Beskrivelse: Beskrivelse av inntekten og utgiften.

8 Datatype analyse Neste skritt er å se på hvilken data type de ulike elementene skal være: ID: int (heltall) Dato: streng: åååå-mm-dd (lettere å sortere) Beløp: float (desimaltall) Beskrivelse: streng (kan evt. begrense lengden på beskrivelsen)

9 Datastruktur analyse Neste skritt er å se på hvilken datastruktur vi kan gruppere de ulike elementene på. Et krav var at vi skulle kunne fjerne utgifter eller inntekter. Den mest fleksible løsningen for dette er dictionary med en liste av elementene vi skal ha med for hver id. En mulig datastruktur er da: db= {ID:[dato, beløp, beskrivelse]} For å kunne ha unike innslag kan vi bare bruke: ID som er et nummer som vi øker med en for hvert nytt innslag.

10 Hvilke moduler trenger vi? Alle systemer har en hovedmodul som starter programmet. Denne modulen kalles gjerne main.py Hovedmodulen skal ha den overordnede funksjonaliteten til systemet uten å gå i detaljer. Hovedmodulen importerer andre moduler som systemet består av og kaller funksjoner i de andre modulene. Hovedmodulen viser gjerne den overordnede prosessen (stegene i programmet) for systemet.

11 Hvilke moduler trenger vi? I systemutvikling anbefales det å skille ut interaksjon med brukeren i en egen modul: bruker.py Denne modulen har som hovedansvar å tilby funksjoner som: Henter input fra brukeren (fra tastaturet) Skrive ut til skjerm Ved å skille ut brukergrensesnittet, kan man lett endre på utseende og interaksjon med bruker uten å endre på resten av systemet.

12 Hvilke moduler trenger vi? I systemutvikling anbefales det også å skille ut filhåndtering i en egen modul: fil.py Denne modulen har som hovedansvar å tilby funksjoner som: Laste inn data fra fil til programmet Lagre data til fil fra programmet Ved å skille ut filhåndtering, tar man høyde for eventuelle endringer i måten man kan lagre på eller for eksempel bruk av database i stedet for fil.

13 Hvilke moduler trenger vi? I systemutvikling anbefales det også å skille ut hjelpefunksjoner som ikke passer inn i andre moduler i en hjelpe-modul (util). Vi trenger ikke et slikt modul i vårt system. Systemet består nå altså av følgende moduler: bruker.py main.py fil.py

14 Hvordan er flyten i systemet? Her må vi prøve å tenke oss hvordan programmet skal fungere steg for steg. Det kan være en fordel å prøve å beskrive flyten i hovedmodulen først, uten å spesifisere flyten til funksjoner i andre moduler. Dette kaller vi et top-down approach. Alternativt kan vi prøve å finne alle detaljer i alle moduler først og så sette det samme til slutt. Dette kaller vi bottom-up approach.

15 Hvordan er flyten i systemet? Flyten i programmet kan skrives med psaudokode eller tegnes med flytdiagram. Her er en mulig psaudokode for hybelregnskap: Importer moduler Opprett nødvendige variabler Vis en velkomstmelding til brukeren Så lenge at brukeren ikke vil avslutte: La brukeren få et valg mellom ulike funksjoner i systemet Utfør funksjonene i systemet basert på brukerens valg

16 Tekstbaserte brukergrensesnitt Tekstbaserte brukergrensesnitt brukes ikke så ofte lenger, men det finnes en del systemer som bruker det. Systemene opplyser ofte brukeren om hvilke valg hun/han har. Brukeren skriver så inn en kommando for å gjøre et valg. Brukeren kan så bli spurt om å skrive inn mer data relatert til kommandoen han/hun valgte

17 Moduler Vi skal nå se på hvordan vi kan implementere (programmere) systemet ved hjelp av modulene: main.py: Hovedmodul for initialisering, hovedflyt bruker.py: Interaksjon med bruker (input/print) fil.py: Innhenting og lagring av data fra/til disk. main.py bruker.py fil.py

18 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.