INF109 - Uke 1b 20.01.2016



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

Øvingsforelesning i Python (TDT4110)

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

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Oppgave 1 Hva tror du følgende program skriver ut til terminalen? Diskuter med gruppen.

Verdier, variabler og forms

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

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

INF109 - Uke 1a

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

Shellscripting I. Innhold

Mattespill Nybegynner Python PDF

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

TDT4110 IT Grunnkurs Høst 2015

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

Introduksjon til beslutningsstrukturer

Straffespark Introduksjon Scratch Lærerveiledning

Oblig 4. Alternativ A: Alternativ B: Denne obligen har 3 ulike alternativ: Alternativ A: For de som har lyst til å gjøre et eget prosjekt

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

while-økker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

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

Gangemesteren Nybegynner Scratch PDF

Beskrivelse av programmeringsspråket Simpila INF Kompilatorteknikk Våren 2012

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

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

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

TDT4110 IT Grunnkurs Høst 2014

Opphavsrett: Forfatter og Stiftelsen TISIP

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

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

Enarmet banditt Nybegynner Scratch Lærerveiledning

Obligatorisk oppgave MAT-INF1100. Lars Kristian Henriksen UiO

Utviklingssak/ID Resume Endring (g2) Rettet i versjon (g1) Rettet i versjon

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

ITGK - H2010, Matlab. Repetisjon

Kapittel 3: Litt om representasjon av tall

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Kanter, kanter, mange mangekanter

HØGSKOLEN I SØR-TRØNDELAG

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

Øvingsforelesning i Python (TDT4110)

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

Leksjon 3. Kontrollstrukturer

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

Løse reelle problemer

INF1000 Metoder. Marit Nybakken 16. februar 2004

Algoritmer og Datastrukturer

Et lite oppdrag i bakgrunnen

Asteroids. Oversikt over prosjektet. Steg 1: Enda et flyvende romskip. Plan. Sjekkliste. Introduksjon

MAT1030 Diskret matematikk

Oppgave: BOW Bowling. Regler for Bowling. norwegian. BOI 2015, dag 1. Tilgjengelig minne: 256 MB

Hemmelige koder. Kodeklubb-koden. Steg 1: Alfabetet. Sjekkliste. Introduksjon

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

Spørsmål fra forrige forelesning. INF1000 Forelesning 7. Oppførselen til inword()/inint()/etc. Operator-presedens i Java

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

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.

Skilpaddefraktaler Erfaren Python PDF

INF Uke 10. Ukesoppgaver oktober 2012

Innleveringsoppgave 1

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

Repetisjon Novice Videregående Python PDF

Hangman. Level. Introduksjon

Bruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.

En oppsummering (og litt som står igjen)

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

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.

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Representasjon av tall på datamaskin Kort innføring for MAT-INF1100L

EKSAMENSOPPGAVE NFUT0006 NORSK FOR UTLENDINGER KORTKURS. Kandidatnummer:

Oppsummering fra sist

Manusnett - brukerveiledning for forfatter

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

Veileder for søknad om lisens for fiske i annet lands sone - Altinn

Løse reelle problemer

Forelesning 1. Algoritmer, pseudokoder og kontrollstrukturer. Dag Normann januar Vi som skal undervise. Hva er diskret matematikk?

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

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

2 Grafisk grensesnitt 1

Oppgavene 1, 2, 4, 5, 6, 9, 12 og 13 passer best til å løses ved en datamaskin.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler Utgave 3: Kap

Løsningsforslag Prøveeksamen i MAT-INF 1100, Høsten 2003

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

IN uke 1. Komme i gang med programmering

Hvor mye er 1341 kr delt på 2?

MAT1030 Diskret Matematikk

Transkript:

INF109 - Uke 1b 20.01.2016 1 Variabler Et program er ikke til stor hjelp hvis det er statisk. Statisk betyr at programmet bare bearbeider faste data som er lagt inn i programkoden. For å gjøre programmer mer dynamiske, bruker vi variabler. Variabler kan ses på som plassholdere, som i matematikk, men de kan også betraktes mer fysisk som referanser til lagringsplasser i datamaskinens internminne, som kan tildeles og lagre verdier. Verdiene som en variabel tar kan f.eks. være heltall, flyt-tall og strenger. (Flyttall er en tilnærming til desimaltall.) I noen programmeringsspråk må variabler deklareres (dvs defineres) med en bestemt type før de kan brukes, men in Python er det slik at med det samme variabelen gis en verdi er dens navn og type (heltall, flyt-tall, etc.) fastlagt. Dette kan endres senere i programmet. >>> var = 1+2+3 >>> p r i n t ( var ) 6 >> var = 0. 1 >> p r i n t ( var ) 0. 1 >> et_navn = " Alan Turing " >> p r i n t ( et_navn ) Alan Turing >> p r i n t (" et_navn ") et_navn >>> p r i n t (6 var, 2 et_navn ) # g j e t t hva som b l i r s k r e v e t ut : ) Generelt sett kan variabler i et program ta et hvilket som helst navn, så lenge navnet består av bokstaver og tall. Det eneste som er forbudt er variabelnavn som begynner med et tall og som er identisk med reserverte nøkkelord, som f.eks. print. (I tabell 2.1 i boken står en liste over slike nøkkelord.) I tillegg kan man bruke _ i variabelnavnet. Uansett, når man skriver programkode bør man bruke fornuftige navn. I praksis betyr dette at det bør gå fram av navnet hva variabelen brukes til, og hva den lagrer. Selv ved et medium stort program blir det forvirrende hvis variablene heter x1,x2,...,x1000. Finn 3 eksempler for gyldige og 3 eksempler for ugyldige variabelnavn. Hvis det valgte navnet var ugyldig får du en feilmelding, hvis ikke burde du være i stand til å skrive ut den tildelte verdien med: >>> p r i n t ( ditt_valgte_variabelnavn ) 1

Prøv å finne ut hvilken type en gitt variabel har. Bruk type()-funksjonen, f.eks.: >>> type ( 3 ) <c l a s s int > >>> type ( 3. 0 ) <c l a s s f l o a t > >>> type ("3") <c l a s s s t r > >>> en_variabel = 5 >>> type ( en_variabel ) <type int > Sett to variabler x1=5 og x2=2.7. Test hva slags verdi du får når du kombinerer variablene med, +,, /, // (x1*x2, etc.). Sett to variabler x og y til et tilfeldig heltall. Forsøk å dele dem (x med y og omvendt, både med / og med //) og observer resultatet. Eksperimenter med dette og prøv å forstå hva som skjer. Hva endrer seg hvis du setter x og y med.0 på slutten? Hva hvis x = 10.1 og y = 3.4? Skriv et program som bytter om verdien til to variabler x og y. Dvs. hvis for eksempel x=10 og y=15 så skal vi ha x=15 og y=10 etter at programmet er kjørt (hint: det kan være nyttig med en tredje variabel). Lag et program stoneconverter.py som først konverterer kg til pounds og siden til stones og skriv ut resultatet (6.35 kg = 1 stone = 14 pounds). F.eks.: 5 kg er 0.787401574803 s t o n e s er 11.0231131 pounds. I dette programmet skal bare verdien av kg-variabelen endres for å få korrekt ny output. Prøv å finne ut hva det følgende programmet skriver ut før du prøver selv. >>> x = 5 >>> y = 6 >>> x = x+y >>> p r i n t ( x ) 2 Innlesning av Variabler For å unngå å måtte forandre programkoden hele tiden når du vil forandre verdien til en variabel, leser vi inn data fra tastaturet. Forsøk: >>> kg_value = e v a l ( input (" Enter a value in kg : " ) ) >>> p r i n t ( kg_value ) Metoden input skriver ut strengen som står mellom anførselstegn og venter til brukeren har skrevet noe og tastet enter. Det brukeren taster inn evalueres av metoden eval og tildeles variabelen som tallverdi. Vi vil lære mer om eval senere (s. 137 i læreboken). Modifiser stoneconverter.py slik at programmet leser verdien som skal konverteres fra tastaturet. 2

Gitt ligningen a = mx + b, skriv et program linear.py med metoden lineq() som leser inn a, x, b og skriver ut m. En prøvekjøring av programmet bør se omtrent slik ut: >>> l i n e q ( ) C a l c u l a t e m in Enter a : 5. 0 Enter x : 2. 5 Enter b : 3. 0 m = 0. 8 >>> a=mx+b Ikke glem å skrive kommentarer. Hva skjer når x = 0? 3 Enkle Løkker Av og til trenger vi å utføre en bestemt del av program-koden flere ganger etter hverandre. Hvis du for eksempel vil kjøre konverterings-programmet ditt 10 ganger, så er det tungvint å skrive 10 kall til programmet etter hverandre. I slike situasjoner kan vi bruke en for-løkke. En slik løkke har følgende syntaks: f o r <var> i n <sequence >: <body> Her er <var> løkke-variablen og <sequence> en sekvens med verdier. En sekvens skrives på formen [verdi 1, verdi 2,..., verdi n], som f.eks. [1, 2, 3, 4] eller [ jeg, du, vi, de, han, hun ]. Når løkken blir utført vil løkke-variablen bli tildelt en og en verdi fra sekvensen og for hver verdi utføres koden som står i <body>. F.eks. vil koden p r i n t ( i i ) skrive ut alle kvadrat-tallene opp til 100. Merk at hva som inngår i <body> bestemmes av hvordan ting er innrykket. Skriv inn og kjør følgende to metoder: def sum1 ( ) : sum = 0 sum = sum + i p r i n t ( i, sum) og def sum2 ( ) : sum = 0 sum = sum + i p r i n t ( i, sum) (Selvfølgelig kan du definere begge metoder i èn fil. Etter Run Module kan du bruke dem med henholdsvis sum1() og sum2().) Hva gjør programmene og hvorfor oppfører de seg ulikt? 3

Lag en metode med en løkke som skriver ut alle verdiene i en sekvens. Til slutt skal programmet skrive ut hvor mange elementer det var i sekvensen. Prøv metoden på sekvensen [ jeg, du, vi, de, han, hun ]. Det kan være tungvint å skrive inn lange sekvenser med heltall. Det finnes derfor en egen funksjon range() som returnerer en sekvens med tall. Skriver man range(a,b) der a og b er heltall med a<b så får man en sekvens med verdiene [a, a + 1, a + 2,..., b 1]. Skriver man range(a) der a er et positivt heltall får man sekvensen [0, 1, 2,..., a 1]. Skriver man range(a,b,c) får man en sekvens [a, a + c, a + 2c,..., a + kc] der k er maksimal slik at b ikke blir passert (!). I Python 3 trenger man funksjonen list() til å skrive ut sekvensen, f.eks., print(list(range(10))). Hvilke sekvenser får du når du skriver range(-4), range(4,4), range(10,4) og range(10,4,-1)? Lag et program som først spør brukeren hvor mange verdier hun vil ha konvertert fra kg til stones til pounds og deretter leser inn en og en verdi og konverterer. 4 Programmeringsoppgaver 4.1 Halvliteren Som ny og fersk student tar du opp maksimalt med lån fra Statens Lånekasse og finner straks veien til Det Akademiske Kvarter hvor du bestiller en kald skummende halvliter til 49 kr. Mens du sitter der begynner du å gruble på hva glasset egentlig koster deg. Alternativet hadde vært å spare de 49 kroner og betalt de tilbake til Lånekassen straks du var ferdig med siste eksamen og før rentene begynner å løpe. Det er imidlertid for seint nå. Lånet ditt skal betales tilbake over 20 år og med en rentesats på 5.8 %. De 49 kronene du har brukt på øl vil være de siste pengene du betaler inn på lånet ditt, du må derfor betale rente på dem i 20 år. Lag et dataprogram som regner ut hvor mye du må ut med i renter for å betale tilbake pengene du brukte på halvliteren. Modifiser programmet ditt slik at det kan lese inn verdiene som brukes fra tastaturet (beløp, løpetid, rentesats). 4.2 π For å få π kan man beregne Gregory-Leibniz serien: π = 4 k=0 ( 1) k 2k + 1 = 4 1 4 3 + 4 5 4 7.... Men siden vi verken har uendelig med tid eller uendelig med plass, må vi tilnærme verdien til noen desimaler. Lag et program som tilnærmer π og skriver ut verdien. Hint: bruk en variabel fortegn = 1 og i løkken fortegn = fortegn. Eksperimenter med programmet og prøv å finne ut av hvor mange ganger løkkekroppen må utføres for at π skal bli beregnet med en presisjon på to desimaler. Modifiser koden slik at programmet leser inn hvor mange ganger det skal gå gjennom løkken. For å avbryte python fortolkeren når det tar for lang tid trykker du <Ctrl-c> samtidig. 4

Les kapittel 1 og 2 i boken til neste forelesning. Det anbefales at du gjør øvelsene i kapitlene, men dette er ikke obligatorisk. 5