Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk



Like dokumenter
Kapittel 1: Datamaskiner og programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Kapittel 1: Datamaskiner og programmeringsspråk

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Hva er en datamaskin? En datamaskins bestanddeler

2 Om statiske variable/konstanter og statiske metoder.

Kapittel 7: Mer om arv

Kapittel 5: Objektkommunikasjon

Hva er programmering?

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Litt om Javas class-filer og byte-kode

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

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

Kapittel 13: Grafiske brukergrensesnitt INF 100. Java som første programmeringsspråk

Kapittel 8: Programutvikling

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

2 Om statiske variable/konstanter og statiske metoder.

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

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

Kapittel 1 En oversikt over C-språket

Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus

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

TOD063 Datastrukturer og algoritmer

Operativsystemer og grensesnitt

Generelt om operativsystemer

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

INF 1000 høsten 2011 Uke september

Forelesning inf Java 1

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Kapittel 15: Grafiske brukergrensesnitt: Enkel GUI. Del I

Læringsmål og pensum. v=nkiu9yen5nc

Kapittel 15: Grafiske brukergrensesnitt: Enkel GUI. Del I

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

6108 Programmering i Java. Leksjon 1. Introduksjon til programmering og til Java

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

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

Forelesning inf Java 1

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

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

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

INF1000: Forelesning 7. Konstruktører Static

Intro til WWW, HTML5 og CSS

Programmeringsspråket C

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Kapittel 9: Sortering og søking Kort versjon

Programmeringsspråket C

Introduksjon til objektorientert programmering

INF1000: Forelesning 7

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

Dagens tema Kapittel 8: Objekter og klasser

INF1000 : Forelesning 1 (del 2)

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Kapittel 8: Sortering og søking

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

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

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Velkommen til. INF våren 2016

Hvordan en prosessor arbeider, del 1

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

Programmeringsspråket C

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Fra Python til Java, del 2

Introduksjon til programmering og programmeringsspråk

Debugging. Tore Berg Hansen, TISIP

Kapittel 8: Sortering og søking INF100

Kapittel 8: Sortering og søking INF100

Del 1 En oversikt over C-programmering

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

Obligatorisk Innlevering 2

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

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

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Øving 0 - Xcode TDT4102

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

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

Velkommen til INF5110 Kompilatorteknikk

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Kom i gang med programmering i Java

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

INF5110. Oblig 2 presentasjon

UNIVERSITETET I OSLO

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

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

Forelesning inf Java 1

IN våren 2019 Onsdag 16. januar

INF Oblig 2 semantikksjekk og kodegenerering

IN våren 2018 Tirsdag 16. januar

INF1000 : Forelesning 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

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

Forelesning inf Java 4

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Generelt om operativsystemer

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

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

UNIVERSITETET I OSLO

Inf1000 uke 5 18.sept. 2007

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Transkript:

Kapittel 1: Datamaskiner og programmeringsspråk Forelesningsnotater for: Java som første programmeringsspråk Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag, 2003. ISBN 82-02-23274-0 http://www.ii.uib.no/~khalid/jfps/ Vi gir tillatelse til å bruke disse notatene i tilknytning til boken. Modifisert: 16/1/06 JFPS 1: Datamaskiner og programmeringsspråk 1-1/29 Emneoversikt Datamaskinens virkemåte Programmeringsspråk og programoversettelse: høy- og lavnivå språk Java-modell for progamutvikling og -utføring Kompilering og utføring av Java-program JFPS 1: Datamaskiner og programmeringsspråk 1-2/29

Mål med kurset: problemløsing på datamaskin Kursets mål er ikke å lære et bestemt programmeringsspråk (Java, C++, Ada, Simula, Lisp, Pascal) men å gi en introduksjon til programmering som aktivitet. Dette omfatter: systematisk problemanalyse konstruksjon av enkle databaserte systemer v.h.a. Java d.v.s. problemløsningsteknikker Valg av programmeringsspråk er et pragmatisk problem. Programmeringsmetodikk er i stor grad uavhengig av programmeringsspråk. JFPS 1: Datamaskiner og programmeringsspråk 1-3/29 Hva er et program? Et program er en oppskrift for å løse et problem på datamaskinen. Det er en sekvens av instruksjoner uttrykt i et spesifikt programmeringsspråk med presis syntaks og semantikk. Instruksjoner er skrevet (programmert, kodet) av en programmerer. Instruksjoner blir utført av en datamaskin, som utfører dem, vanligvis én om gangen. Eksempler: tekstbehandlingssystem, minibankprogram, videospill, billettbestillingsystem JFPS 1: Datamaskiner og programmeringsspråk 1-4/29

Syntaks, semantikk, pragmatikk Syntaks grammatiske regler Hvordan et program må skrives for at det overhodet kan utføres av en datamaskin. ren pugg Semantikk mening Meningen til ulike syntaktisk korrekte deler av språket. mer komplisert Pragmatikk riktig bruk Metoder og regler for hvordan en bør bruke språket på en fleksibel og forståelig måte. Programmeringsmetodologi. læres ved programmering og erfaring JFPS 1: Datamaskiner og programmeringsspråk 1-5/29 Programmeringsmetodikk: Objektorientert programmering (OOP) OOP går ut på å identifisere objekter, og hvordan disse samarbeider for å løse et problem. OOP-objekter er ment å modellere objekter fra virkeligheten de har både egenskaper og atferd. JFPS 1: Datamaskiner og programmeringsspråk 1-6/29

Læremåte for (;;) programmér; // alltid JFPS 1: Datamaskiner og programmeringsspråk 1-7/29 Datamaskinens virkemåte: analogi Apotek Arbeidsinstruks (oppskrifter) Internt lager Daglig leder Regnskap Eksternt lager Resept innlevering Resept utlevering Bruker JFPS 1: Datamaskiner og programmeringsspråk 1-8/29

Datamaskinens virkemåte Program Datamaskin hente-dekode-utføre syklus Internt lager (minne) Kontrollenhet (CPU) Aritmetisk/ Logisk enhet (ALU) Eksternt lager (disk) Lese-enhet (tastatur) Skrive-enhet (skjerm) Bruker JFPS 1: Datamaskiner og programmeringsspråk 1-9/29 Datamaskin og programvare: løk-modellen maskinvare vindusystem Java programmeringsverktøy Java program Lag av programvarer fører til maksimal utnyttelse av maskinkraft. har organisering i biblioteker og programmer. OS JFPS 1: Datamaskiner og programmeringsspråk 1-10/29

To utsnitt (views) av et program (som også er et objekt) grafisk brukergrensesnitt programvarer skjult v.h.a. grensesnitt A maskinvarer OS X/Windows Java program programmerer bruker JFPS 1: Datamaskiner og programmeringsspråk 1-11/29 Programoversettelse Høynivå språk x = y * z kildekode Assemblyspråk MOV y, R MUL z, R MOV R, x assemblykode Maskinspråk 0000 0110 0111 0001 0000 0111 0110 0001 0000 0110 0001 0010 maskinkode Meningsbevarende oversettelse Kompilator er et program som oversetter kildekode til lavnivå kode JFPS 1: Datamaskiner og programmeringsspråk 1-12/29

Dataspråk Maskinspråk språket som datamaskinen utfører tett tilknyttet en bestemt maskinarkitektur sekvens av nuller og enere vanskelig for mennesker å forstå f.eks. 0000 0110 0111 0001 er en maskin instruksjon. Assembly språk navn for operasjoner, etc. som finnes i maskinspråk lavnivå: hver instruksjon (pakker minst mulig informasjon) tilsvarer en maskin instruksjon tett tilknyttet et bestemt maskinspråk fremdeles vanskelig for mennesker å forstå f.eks. MOV y, R Høynivå språk Høynivå: hver instruksjon tilsvarer mange lavnivå instruksjoner lettere for mennesker å forstå (eks. FORTRAN, Pascal, C, C++, Simula, Ada, Java) kan oversettes til mange lavnivå språk v.h.a. kompilatorer, f. eks. x = y * z JFPS 1: Datamaskiner og programmeringsspråk 1-13/29 Programoversettelse for Java Høynivå språk x = y * z Java kildekode Mellomliggende språk iload_2 iload_3 imul istore_1 Java byte-kode JFPS 1: Datamaskiner og programmeringsspråk 1-14/29

Java modell teksteditor Java kildekode fil* Java byte-kode lastes inn i minne Klasselaster Verifisering JVM: Java virtuellmaskin Java kompilator Interpreter operativsystem Java byte-kode fil* maskinvare Programoversettelse/ kompilering *filer lagres på sekundærlager (disk) Programutføring eller -kjøring oversetter hver Java byte-kode til maskinkode som utføres umiddelbart. JFPS 1: Datamaskiner og programmeringsspråk 1-15/29 Java plattformuavhengighet KOMPILERING: Java program Datamaskin 1 Java byte-kode Java byte-kode kompilator UTFØRING: Java byte-kode inndata fra bruker Datamaskin 1 utdata til bruker Virtuell maskin 1 Java byte-kode inndata fra bruker Datamaskin 2 utdata til bruker Virtuell maskin 2 Samme Java byte-kode kan kjøres på forskjellige datamaskiner med forskjellige Java virtuelle maskiner. JFPS 1: Datamaskiner og programmeringsspråk 1-16/29

Makinvarekonfigurasjon admiral Servere Arbeidsstasjoner veps brems bie bille Ut i verden gateway Laserskriver mygg JFPS 1: Datamaskiner og programmeringsspråk 1-17/29 Nettverk Et nettverk består av to eller flere datamaskiner som er koblet sammen slik at de kan utveksle data øker produktivitet og evne til å dele informasjon. LAN (Local Area Network): nettverk for lokalmiljø og med få datamaskiner. WAN (Wide Area Network): nettverk som kan bestå av flere LAN. Internett: Samling av flere nettverk som er koblet sammen. TCP/IP: protokoll for utveksling av informasjon på Internett. IP adresse: entydig adresse for å identifisere hver maskin på Internett, f.eks. 129.177.123.1 WWW (World Wide Web): Programvare som gjør det lettere å dele informasjon i et nettverk. hypertekst og hypermedia Web-leser (Web browser): Verktøy for å lese Web-dokumenter HTML: HyperText Markup Language brukt for å utforme Web-dokumenter. URL: Uniform Resource Locator entydig måte å spesifisere lokasjon av Webdokumenter. f.eks. http://www.ii.uib.no/~khalid/jfps/ HTTP: HyperText Transfer Protocol protokoll for kommunikasjon, brukt av Weblesere. JFPS 1: Datamaskiner og programmeringsspråk 1-18/29

Verktøy: Java Development Kit (JDK 5.0) Et sett med verktøy for programmering i Java, tilgjengelig for forskjellige plattformer. javac: java: javadoc: oversetter Java kildekode til Java byte-kode utfører Java byte-kode genererer API dokumentasjon i HTMLformat appletviewer: jdb: javah: javap: kjører snutter (applets) avlusing (debugging) av Java byte-kode genererer C header & stubs disassembler Java byte-kode trenger en teksteditor i tillegg for å skrive Java kildekode. JFPS 1: Datamaskiner og programmeringsspråk 1-19/29 State-of-the-art kurs i programmering Programmeringsmetodikk: Objektorientert programmering (OOP) Programmeringsspråk: Java Programmeringsverktøy: JDK 5.0 Maskinvare: Kraftige PC er JFPS 1: Datamaskiner og programmeringsspråk 1-20/29

Programmering er tidskrevende! Programmering krever tid/arbeid, men er gøy særlig det som har med grafikk å gjøre. Nøkkelen til suksess: programmér oppgavene arbeid jevnt med stoffet DET ER IKKE MULIG Å PUGGE! JFPS 1: Datamaskiner og programmeringsspråk 1-21/29 Programmeringsspråk: Java Java er et objektorientert programmeringsspråk. I Java kan du skrive to typer programmer: Programmer som kalles for snutter (applets), og er nedfelt i en web-side. En web-side er et dokument på Internetts World Wide Web (WWW) som kan "leses" ved hjelp av en web-browser eller web-leser (f.eks. Internet Explorer, Opera, Mozilla, Konquorer). Programmer som er selvstendige applikasjoner disse trenger ikke ekstra støtte for å kunne utføres. JFPS 1: Datamaskiner og programmeringsspråk 1-22/29

Java programstruktur og -miljø Et Java program er en samling av en eller flere klasser. Kildekode til klasser lagres i tekstfiler. Hver klasse kompileres til en egen.class-fil som består av Java byte-kode. klassedeklarasjon klassenavn metodedeklarasjon public class Hilsen { metodenavn public static void main(string[] args) { handlinger som skal utføres i sekvens parametere } } JFPS 1: Datamaskiner og programmeringsspråk 1-23/29 Et enkelt selvstendig program 1. // En liten hilsen 2. public class Hilsen { 3. public static void main(string[] args) { 4. System.out.println("Velkommen til Portveien 2!"); 5. } 6. } Utskrift på skjerm: Velkommen til Portveien 2! JFPS 1: Datamaskiner og programmeringsspråk 1-24/29

Linje 1: // En liten hilsen Énlinjes kommentar som brukes til å dokumentere program. Alt f.o.m. // og t.o.m. slutt på linjen har ingen betydning for programutføring. Program uten dokumentasjon er vanskelig å forstå. Linje 2: public class Hilsen { En klasse defineres med en deklarasjon som begynner med nøkkelord class. En klasse har navn. Identifikator Hilsen er navn på klassen. Klassedeklarasjoner er omsluttet av en blokk,{...}. Alt i et Java program må være inne i en klasse. Nøkkelord public angir synlighet av en klasse: klassen Hilsen er tilgjengelig til alle andre klasser. JFPS 1: Datamaskiner og programmeringsspråk 1-25/29 Linje 3: public static void main(string[] args) { Hvert selvstendig program må ha én metode med navn main for å bli utført. kroppen til en metode er omsluttet av en blokk, {...}. public Nøkkelord public angir synlighet av en metode. Metode main er tilgjengelig til alle andre klasser. static Metode main er deklarert som en statisk metode, dvs den tilhører klassen og ikke instanser av klassen (objekter). void Metoder returner vanligvis verdier. Metodedeklarasjon må da eksplisitt angi type til returnert verdi. Nøkkelord void angir at metoden ikke returnerer en verdi. main(string[] args) Parameterliste, (...), brukes til å overføre data til en metode. Metode main tar én parameter, args, som er en tabell av strenger (angitt ved String[]) JFPS 1: Datamaskiner og programmeringsspråk 1-26/29

args inneholder kommandolinje argumenter. Linje 4: System.out.println("Velkommen til Portveien 2!"); Setningen skriver streng "Velkommen til Portveien 2!" på skjermen. Klassen System har en statisk variabel out som betegner standard ut-enhet (vanligvis skjerm) for hvert program som utføres. Metoden println, som tilhører objektet out angitt ved punktum (.) notasjon, skriver ut argumentstreng sendt til den. Semikolon (;) avslutter en setning. JFPS 1: Datamaskiner og programmeringsspråk 1-27/29 Fremgangsmåten for å skrive og kompilere et program 1. SKRIV programmet v.h.a. en teksteditor. 2. Lagre filen og gi den et navn, f.eks. Hilsen.java Gå ut av teksteditor. 3. KOMPILER kildekode fil ved å gi kommando: javac Hilsen.java Hvis kompilator gir noen feilmelding gå tilbake til teksteditor (filen Hilsen.java), rett feilene, fortsett fra og med pkt. 3. ellers (ingen feilmeldinger). Kompilator har oversatt programmet og laget nye filer (bl.a. Hilsen.class) 4. KJØR programmet ved å gi kommando: java Hilsen Klassenavn må være identiske med filnavn (uten.java suffiks) Klassen må definere main() metode. JFPS 1: Datamaskiner og programmeringsspråk 1-28/29

Oppsummering: Å kjøre et selvstendig program 1 2 Utdata Velkommen til Portveien 2! Hilsen.java Kompilator javac Hilsen.class Tolker java 1 KOMPILER kildekode fil: javac Hilsen.java 2 KJØR programmet: java Hilsen JFPS 1: Datamaskiner og programmeringsspråk 1-29/29