Oversikt. Hva er programmering & Java forkurset til INF1000. Hva er en datamaskin. Arne Maus Inst for Informatikk Univ. i Oslo

Like dokumenter
Oversikt. Uke 2, INF 1000, 30 aug Variable, tilordninger og uttrykk. Repetisjon: Java programmering

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

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

Velkommen til. Grunnkurs i Objektorientert Programmering. Universitetet i Oslo. Arne Maus, Ole Christian Lingjærde og Arild Waaler

Plan for denne uka: Velkommen til. Mål for INF1000: Hva er INF1000. Grunnkurs i Objektorientert Programmering. Universitetet i Oslo

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

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Velkommen til INF 1000 høsten 2008

Ukeoppgaver 1: 30. aug 3. sep (INF Høst 2010)

Plan for denne uka: Velkommen til. Mål for INF1000: Hva er INF1000. Grunnkurs i Objektorientert Programmering. Universitetet i Oslo

Plan for denne uka: Hva er INF1000. Mål for INF1000: INF 1000 høsten Velkommen til

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter i dag! Klart for første oblig

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

Velkommen til. Grunnkurs i Objektorientert Programmering. Universitetet i Oslo. Siri Moe Jensen og Arne Maus

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter denne uken! Klart for første oblig

Første forelesning! Mål for INF1000. Kursevaluering. Velkommen til INF1000 høst 2010

INF1000 : Forelesning 1 (del 2)

Velkommen til INF1000 høst 2010

MAT-INF 1100: Obligatorisk oppgave 1

Plan for denne uka: Velkommen til. Hva er INF1000. Mål for INF1000: Grunnkurs i Objektorientert Programmering. Universitetet i Oslo

Plan for denne uka: Velkommen til. Hva er INF1000. Mål for INF1000: Grunnkurs i Objektorientert Programmering. Universitetet i Oslo

UNIVERSITETET I OSLO

MAT-INF 1100: Obligatorisk oppgave 1

Velkommen til. INF våren 2016

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

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

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

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

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

Ukeoppgaver 2: sep (INF Høst 2010)

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

Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)

Løsningsforslag ukeoppg. 3: sep (INF Høst 2011)

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

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

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009

Forelesning inf Java 1

Mål for INF1000: Velkommen til INF 1000 høsten 2006 INF1000. Hva er INF1000

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 h2006

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Fra Python til Java, del 2

INF 1000 høsten 2011 Uke 3 6. september

Oblig 4Hybelhus litt mer tips enn i oppgaven

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

2 Om statiske variable/konstanter og statiske metoder.

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

INF våren Mål for INF1000. Velkommen til INF 1000 våren Kort sagt. Hva er INF1000? Innholdet i kurset. Verktøy

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

Læringsmål og pensum. v=nkiu9yen5nc

Innhold uke 3. INF 1000 høsten 2011 Uke 3 6. september. Uttrykk. Variabel: En plass i hukommelsen

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2008

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Kapittel 1: Datamaskiner og programmeringsspråk

Forelesning inf Java 4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

UNIVERSITETET I OSLO

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

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Programmeringsspråket C

Mål for INF1000: Velkommen til INF 1000 høsten 2007 INF1000. Hva er INF1000

INF1000 : Forelesning 4

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

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

Java. INF1000 : Forelesning 2. Ulike varianter for ulike behov. Java Standard Edition (Java SE) Java:

Velkommen til INF 1000 våren 2005

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

Ukeoppgaver INF1000: 12. feb 16. feb

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Løsningsforslag ukeoppg. 4: sep (INF Høst 2011)

INF1000: Forelesning 6. Klasser og objekter del 1

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

Mål for INF1000: Velkommen til INF 1000 våren INF1000: oversikt. Hva er INF1000

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

Gi grunnleggende forståelse av noen sentrale. begreper, problemstillinger og metoder innen. Gi noe innsikt i datamaskiners muligheter og

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

Inf1000 uke 5 18.sept. 2007

Mål for INF1000. Velkommen til INF 1000 våren Kort sagt. Hva er INF1000? Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo

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

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

Forelesning inf Java 1

INF Obligatorisk innlevering 5

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

INF1000 : Forelesning 3

Velkommen til INF 1000 våren 2006

Enkle generiske klasser i Java

Blokker. Uke 4, INF 1000, 13 sept Løkker og arrayer. Eksempel. Deklarasjoner inne i blokker. Institutt for Informatikk Universitet i Oslo

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

Transkript:

Oversikt Hva er programmering & Java forkurset til INF1000 Arne Maus Inst for Informatikk Univ i Oslo I) Hva er en datamaskin Hvordan får vi den til å gjøre det vi vil Et program er en oppskrift til maskinen Hvordan får vi programmer inn i maskinen Et superenkelt program (skriver ut en linje med tekst) II) Program og data Hva består et (enkelt) Javaprogram av Et enkelt program i Java som regner ut et tall - kompilering og kjøring III) Et litt mer komplisert program som skriver ut 1000 linjer hva er INF1000 og Informatikk er mye mer enn INF1000 2 Hva er en datamaskin Hvordan får vi maskinen til å gjøre det vi vil Hoved - hukommelse Her lagres program og data under kjøring CPU 0 1 2 Her regner maskinen Data buss Lokalnett Disk Her flyttes data og program frem og tilbake Her lagres program og data permanent 3 Vi gir den en rekke ordre Maskinen er ganske innskrenket, men kan noen få typer ordre: Les inn et tall (fra tastatur) Skriv ut en tekst (til skjerm, disk,) Legg sammen to tall For å få gjort det vi vil, ber vi maskinen utføre et antall slike ordre/handlinger (én etter én) Denne rekken av ordre kalles et program 4

Et program er en oppskrift til maskinen Hvordan får vi våre programmer inn i maskinen Vi kjenner andre typer oppskrifter: matoppskrift strikkeoppskrift piano-noter Et program er en oppskrift til en datamaskin Med noter lager man ulike melodier ved å kombinere et mindre antall muligheter for lyder fra pianoet Med programmering kan men lage alle mulige programmer ved å kombinere et begrenset sett av mulige operasjoner i datamaskinen Husk: Det er enklere å følge en oppskrift enn å lage en oppskrift selv (som dere skal lære i INF1000) NB: Det finnes allerede en rekke programmer inne i datamaskinen: operativsystemet program-editoren (en enkel tekstbehandler) oversetteren (kompilatoren) kjøre-programmet Det er disse programmene som hjelper deg til å få ditt program inn i maskinen og kjøre programmet 5 6 Programmering: Lage et super-enkelt program og kjøre det tresteg Vi skriver våre programmer på en måte som er lettest for oss mennesker (til editoren) Denne skrivemåten kalles et programmeringsspråk En programtekst skrevet i et slikt programmeringsspråk kan lett oversettes (av oversetteren) til enkle operasjoner, som lagres i hovedhukommelsen og så kjøres (av kjøre-programmet) Det er mange programmeringsspråk - det vi bruker i INF1000 heter Java 7 1 Lage det skrive programmet som tekst i emacs lagre det på en fil som heter noe feks: SuperEnkeltjava 2 Oversette det til noe maskinen forstår Bruker da et program (oversetteren) som oversetter den java fila vi har til noe maskinen forstår Det hjelpeprogrammet heter: javac Har da et kommandovindu og sier som en kommando: javac SuperEnkeltjava (Nå lages fila: SuperEnkeltclass som er oversettelsen av SuperEnkeltjava) 3 Kjøre programmet vi har laget Bruker da et annet hjelpeprogram (kjøreprogrammet) : java Har det samme kommandovinduet og gir kommandoen: java SuperEnkelt Dette starter programmet vi laget og det utfører ordrene sine 8

Her har vi bare startet kommandovindu og sett a ikke er noen filer der M starte emacs Vi skriver java-programmet i emacs Et trykk på denne (eller skriv kommandoen emacs i kommandovinduet) og emacs starter i et nytt vindu De 5 linjene vi skrev i emacs: public class SuperEnkelt { public static void main ( String[] args){ Systemoutprintln( Dette er forkurset 16aug 2007"); Her har vi skrev SuperEnkeltj og skal til å lag 11

Her oversetter vi fila SuperEnkeltjava til fila: SuperEnkeltclass Her kjører vi fila: SuperEnkeltclass og se neste linje hva program gjør (det skriver ut tekstlinje programmet) Her sjekker vi hvilke fi med kommandoen Oppgaver til i morgen, fredag: II) Program = Data + Handlinger 1 Skriv et program som skriver ut en linje (bruk ditt eget navn) : Jeg heter Ola Olsen Du skal altså skrive inn et program i emacs, lagre det, oversette det med javac, og så kjøre det som er oversatt med programmet java Kall klassen Oppgave1 og da fila: Oppgave1java 2 Lag et annet program som skriver ut to linjer med tekst (feks din navn og adresse) Kall her klassen Oppgave2 og fila da Oppgave2java Ordre i et program er av to typer: Sett av plass til data Gjør noe (regn, skriv ut osv) på data Ethvert problem vi skal løse, innholder data som beskriver problemet Et problemet søking i Ibsens skuespill, trenger vi å lagre en rekke tekster i hovedhukommelsen Skal vi regne på værmeldinga, trenger vi plass til en rekke tall i hovedhukommelsen (bla data fra vær-observasjonene ) I tillegg trenger vi å lagre de ordrene som beskriver løsningen av problemet - handlingene vi skal gjøre på data Handlingene og data er i hovedhukommelsen under kjøring 15 16

Deklarere variable = sette av plasser i lageret for data Deteravfleretyperavdata: Heltall Flyttall (kommatall) (Tekster ) To ordre som setter av plasser og gir plassene navn i lageret: int setter av plass til heltall Eks: int i; setter av en plass i lageret som heter i og hvor vi senere kan lagre heltallsverdier (vi kan både lese og skrive verdier til/fra denne plassen i ) double - setter av plass til flyttall Eks: double xx; setter av en plass i lageret som heter xx og hvor vi senere kan lagre flyttallsverdier (vi kan både lese og skrive verdier til/fra denne plassen xx ) En slik plass i lageret kalles en variabel 17 Et program i Java består av: En eller flere Java-setinger satt etter hverandre med semikolon ; mellom Vi kan grovt sette setningene i den rekkefølge vi vil og ha så mange setninger vi vil I de enkle programmene vi lager i dette forkurset skal alle setningene være inne i main, og vi betrakter foreløpig starten og slutten av programmet som noe (uforstålige besvergelser) som må være med: public class XXXXXXX { public static void main ( String[] args){ Javasetningene skriver her Det eneste vi gjør med denne begynnelsen er at vi velger et navn på klassen i stedet for XXXXXX (feks MittBesteProg)og kaller filen det samme som klassenavnet med punktum og java etter (her da: MittBesteProgjava) Fritt valg av navn (bare ikke et som er brukt før på noe annet) 18 Vi ser på fire sentrale setningstyper i Java Om deklarasjon av variable Utskriftssetningen Eks: Systemoutprintln( Hei på deg ); Deklarasjoner (sette av plass til navngitte plasser i lageret) Eks: int antall, i; Tilordningssetningen To eks: antall = 14; i = antall +1; En variabel er en plass i lageret med tre egenskaper: Et navn (eks: antall) En type (eks int) En verdi som ligger lagret der (eks: 123) int antall; antall = 123; antall 123 while setningen (en gjentagelses-setning) Eks: while (antall > 0) { Systemoutprintln( Hei og hå ); antall = antall - 1; 19 20

Utskriftssetningen Systemoutprintln( Hei på deg ); Står det bare en tekst (dvs bokstaver mellom anførselstegn ) inne i parentesen, skrives den ut på en linje på skjermen i kommandovinduet Vi kan bruke + til å skjøte sammen tekster og verdier på variable i en setning: int i; i = 14; Systemoutprintln( Her er verdien til i: +i); Vil skrive ut: Her er verdien til i:14 Tilordnings-setningen (1) Brukes til å få en (ny) verdi ned i en variabel Tilordnings-setningen har en venstre side, et likhetstegn = (leses: settes lik ) og en høyre side: i = antall + 1; På venstre side står navnet på den variabelen som skal få en ny verdi Den verdien som regnes ut av høyresiden, legges ned i denne varabelen (den gamle verdien som var der overskrives) På høyre side står et regnestykke som regnes ut Forekommer det navn på variable i dette regnestykket, brukes verdien som er i variablene 21 22 Tilordningssetningen (2) Oppgave: Lag et program som regner ut og skriver ut radius og arealet av en sirkel med radius 4 Regnestykket på høyre side kan bruke parenteser og vanlige regneoperasjoner som: + - * / eks: int i, antall, j, d; i = 3*2: antall = 2; antall = antall + 1; j = (i*14+antall)/3; Oppretter 4 heltalls-variable : i, antall, j og d Gir ulike verdier til 3 av disse variablene Hva er formelen for arealet av en sirkel? Hvilke variable trenger vi? Hvilke setninger trenger vi: deklarasjoner av variable tilordnings-setninger utskriftssetning(er) Hva kaller vi programmet (klassen)? 23 24

Et enkelt program i Java som regner ut et svar, Problem: Utregning av sirkel-areal (radius = 4) Samme programteksten, med kommentarer public class EnkeltProgram { public static void main ( String[] args) { int radius; double areal ; radius = 4; areal = 314 * radius * radius; Systemoutprintln("Sirkel, radius: " + radius +", areal: " + areal); public class EnkeltProgram Data, vi setter { av to plasser: public static void main ( String[] args) - et heltall { int radius; - et flyttall double areal ; Handlinger: regn ut skriv ut radius = 4; areal = 314 * radius * radius; Systemoutprintln("Sirkel, radius: " + radius +", areal: "+ areal); 25 26 Kompilering (oversetting) kjøring (start) samt utskrift fra progammet nelja ~/Innforing-1time>javac EnkeltProgramjava nelja ~/Innforing-1time>java EnkeltProgram Sirkel, radius: 4, areal: 5024 while setningen (while-løkka) Brukes til å gjenta så mange (andre) Java-setninger vi ønsker så mange ganger vi trenger Disse setningene som skal gjentas står inne i klammeparentesen { while-løkka gjentar disse setningene så lenge det som står inne i den vanlige parentesen ( ) er sant En slik løkke kan gå evig (hvis vi har skrevet den galt) while (antall > 0) { Systemoutprintln( Hei og hå ); antall = antall - 1; Programmet tester om antall > 0 hver gang setningene inne i { skal utføres (også første gang) og gjør setningene bare hvis det er sant Disse to setningene gjentas så lenge antall>0 28

Vanskelig program bruk av while Et litt mer komplisert program Bruk while-løkka til å skrive ut radius og areal på de 100 sirklene som har radius = 1,2,,100 Gi de hundre linjene du skriver ut en OK overskrift Spørsmål: Hvilke variable trenger vi? Hva blir testen i while-setningen? Hva blir setningene inne i while-setningen? 29

Oppgaver til øvelsene i dag Hva bør dere huske 1 Lag et program som deklarerer to heltallsvariable i og j Gi i verdien 5 og j verdien 3 og skriv ut summen av dem (hint: deklarer og bruk en tredje variabel k ) 2 Lag et program som skriver ut 25 linjer med teksten Hei 3 Lag et program som skriver ut n, n 2 og n 3 for n= 1,2,,14 Finn på en overskrift over tabellen og skriv ut -----SLUTT--- etter de 14 linjene Hint: Ikke alle de variable du trenger er nevnt i oppgaveteksten - lag så mange du trenger Programmering er å gi ordre / en oppskrift til maskinen Først skriver vi den som en tekst til maskinen Så ber vi kompilatoren oversette vår programtekst Så ber vi kjøreprogrammet kjøre det Da kommer svarene fra vårt program på skjermen Det er mange programmeringsspråk - i INF1000 bruker vi Java 33 34 Om å programmere noen tips Lett å skrive feil i programmet feks glemme et ; etter en programsetning og da gir kompilatoren feilmeldinger (mange) Programmet må være feilfritt for å kompilere og senere bli kjørt av kjøreprogrammet Både fritt fra skrive-feil og virkelig løse problemet dvs inneholde programsetninger som er riktige i forhold til problemet Det er mange måter (dvs mange ulike samlinger av Java-setninger) som løser samme problemet 35 Mange hjelpeprogrammer hvert med sine kommandoer og måter å bruke dem Desktoppen eks klikke på ikoner, operere med vinduer, Kommandovinduet Skrive en kommando på en linje og så linjeskift (hva er kommandoene finnes det en oversikt over alle?) Emacs (eller TextPad) Hvordan lagre en fil, fjerne en bokstav, (velg i menyene) Java Alle setningstypene Den rare innledningen av programmet class xxx{ public static void main (String [ ] args) { Huske å avslutte hver setning med ; Ofte flere måter å gjøre den samme operasjonen i ett bestemt verktøy Vi kan av og til også gjøre samme operasjon fra flere verktøy (feks fjerne og opprette filer og kompilere Javaprogrammer fra både emacs og kommandovinduet) Fortvil ikke lær først det nødvendige og utvid repertoaret når det trengs 36

Hva er INF1000 Advarsel og løfte Lære å programmere ca 500 linjers Java-programmer lære Objekt-Orientert programmering Forelesning 2 t/u - grupper med oppgavegjennomgang 2 t/u + terminaltimer 2 t/u (h2007 : Arne Maus og Fredrik Sørensen + gruppelærere) (Finnes også som fjernundervisning egne tillegg, bla Laste ned forelesningene (lysarkene + lyd) Sjekk-deg-selv flervalgs-tester, egen nyhetsgruppe mm) Mye egenøvelser på terminalstuene eller hjemme Levere 4 obligatoriske øvelser (2 av dem er lette ) Disse må leveres og godkjennes av gruppelærer + lære litt Edb & samfunn og kanskje litt om et annet programmeringsspråk Får internettkonto og rett til å bruke Ifis maskiner Får Ifis CD med programvare for PC (bla Java hjemme) 37 INF1000 er ikke billige vekttall: stå på, mye jobb helt fra starten tro ikke at du kan jobbe halv tid og studere full tid tro ikke du kan det fra før (selv om du har PC og kan programmere ) De som jobber godt hele tida, greier nesten alltid eksamen Ikke lever andres oppgaver som dine vi har et program (JOLY) som oppdager slik juks 38 Informatikk er mye mer enn INF1000 på Ifi Systemarbeid Tilpassing av it-systemer til bedrifter/organisasjoner Hvordan sette krav til it-systemer, utforming av it-systemer Databehandling Hvordan lage store datasystemer & databaser Programmeringsteori- og språk, logikk, grunnproblemer Nanoelektronikk Hvordan lage digitale og analoge kretser (kunstig hørsel) Robot-teknologi Matematisk modellering Matematiske metoder egnet for datamaskiner Bioinformatikk Bilde- og signalbehandling Kommunikasjon Datanett, multimedia, distribuerte løsninger 39