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

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

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.

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

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

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

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

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

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

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

TDT4105 Informasjonsteknologi, grunnkurs

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

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

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

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

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

Øvingsforelesning 1 Python (TDT4110)

Filbehandling Tekstfiler

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

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

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

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

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

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.

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

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

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

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

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

TDT4105 Informasjonsteknologi, grunnkurs. Mer om funksjoner: - rekursive funksjoner

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

Datastrukturer (kap. 8)

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

Informasjon Prøveeksamen i IN1000 høsten 2018

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

Bruk piazza for å få rask hjelp til alles nytte!

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

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

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

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

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

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

Læringsmål og pensum. v=nkiu9yen5nc

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

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

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

Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 IT Grunnkurs Høst 2015

TDT4105 Informasjonsteknologi, grunnkurs

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

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

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

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

Python: Lister og tupler Gaddis: Kapittel 7

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

TDT4110 Informasjonsteknologi, grunnkurs

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Løse reelle problemer

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

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

Læringsmål og pensum. Designe et program

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Løse reelle problemer

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Læringsmål og pensum. Oversikt

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

IN1000 Obligatorisk innlevering 7

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

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4110 IT Grunnkurs Høst 2014

Læringsmål og pensum. Algoritmeeffektivitet

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

Informasjon Eksamen i IN1000 høsten 2017

Programmering i C++ Løsningsforslag Eksamen høsten 2005

GJØVIK INGENIØRHØGSKOLE

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

Python: Filer og unntak Gaddis: Kapittel 6

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

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

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

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

INF1000 (Uke 4) Mer om forgreninger, While-løkker

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

TDT4127 Programmering og Numerikk

TDT4105 Informasjonsteknologi, grunnkurs Matlab: Betinget programutførelse (valg: IF og SWITCH) og løkker (FOR)

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

INF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning

UNIVERSITETET I OSLO

MAT1030 Diskret matematikk

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

Transkript:

1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case Terje Rydland - IDI/NTNU 2 Fram mot eksamen Tirsdag 21/11 Repetisjon. Send inn behov/ønsker til : terjery@idi.ntnu.no Tekstfiler Rekursjon Onsdag 24/11 «Eksamenstips» Tirsdag 12/12 Eksamen

3 Læringsmål og pensum Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12. 4 Programmering av systemer Hvordan kan vi 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: Brukeren skal kunne: F1: legge inn utgifter F2: legge inn inntekter F3: se på alle utgifter og innteker og få vist balanse F4: fjerne en utgift/inntekt F5: laste inn regnskap fra disk F6: lagre regnskap til disk Systemet skal F7: 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å dataene? Hvilke datatyper eller datastrukturer kan vi bruke? Hvordan skal vi dele opp systemet i moduler? Hvordan er flyten i systemet?

7 Dataanalyse Data: utgifter og inntekter. Hva trenger vi å vite om utgifter og inntekter. Enkleste løsning: 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 Datatypeanalyse Hvilken datatype trengs for de ulike elementene: ID: int (heltall) - unikt tall for hvert innslag Dato: streng: åååå-mm-dd (lettere å sortere) Beløp: float (desimaltall) Beskrivelse: streng (kan evt. begrense lengden på beskrivelsen)

9 Datastrukturanalyse Neste skritt 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. 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? 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 Tilbyr funksjoner som: Hente 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). Unødvendig i dette systemet Systemet består nå altså av følgende moduler: main.py bruker.py fil.py 14 Hvordan er flyten i systemet? Hvordan skal programmet fungere steg for steg. 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 pseudokode eller tegnes med flytdiagram. Her er en mulig pseudokode for hybelregnskap: Importer moduler Opprett nødvendige variabler Vis en velkomstmelding til brukeren Så lenge 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 (typisk databasesystemer). Systemene må da opplyse 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.