Strukturering av programmer
|
|
- Unni Bjerke
- 6 år siden
- Visninger:
Transkript
1 Strukturering av programmer Jfr. læreboka kapittel 4 og 5 Kontrollstrukturer Algoritmer i imperative språk kan bygges opp av de tre grunnleggende programstrukturene Kontrollstrukturer o Sekvens Unntak (Exceptions) o Valg Event-driven computing o Løkke (iterasjon) Modularisering o Skille grensesnitt og implementasjon o Separat og uavhengig kompilering o Modulmekanismer i ulike språk Alle imperative språk tilbyr derfor disse strukturene, men med litt ulik syntaks o if then else, endif elseif fi o for, while, repeat, do, dowhile Se læreboka side for detaljer IN211-Strukturereprogram-1 IN211-Strukturereprogram-2 Dijkstras Guarded commands if <Boolsk uttrykk> -> <setning> [ ] <Boolsk uttrykk> -> <setning> [ ] <Boolsk uttrykk> -> <setning> fi Hvis en eller flere av de Boolske uttrykkene er sanne, utføres en av de tilsvarende setningene ikke-deterministisk Hvis ingen av de Boolske uttrykkene er sanne, avsluttes programmet med en kjøretidsfeil Tilsvarende konstruksjon finnes for løkker Hensikten med konstruksjonene er å kunne skrive programmer som ikke er overspesifiserte og som det er lett å bevise er riktige. Eksempel: Finn det største av to tall: if x >= y -> max := x [ ] y >= x -> max := y fi Rutiner Rutiner gjør det mulig å bryte ned et program i mindre enheter Kallende rutine kaller en rutine ved navn, den kalte rutinen returnerer dit den ble kalt fra. I de fleste språk finnes rutiner finnes i to varianter o Prosedyrer, som ikke returnerer noe resultat, men gir tilstandsendringer som utskrift, endring av globale variable, endring av objekttilstand (kan bare endre eksterne verdier gjennom sideeffekter). Kall på prosedyrer brukes som selvstendige setninger. o Funksjoner, som returnerer en verdi, og som derfor kan brukes i uttrykk Sideeffekt (def): Endring av ikke-lokale variabler Språkutformingsspørsmål: Skal funksjoner tillates å ha sideeffekter? IN211-Strukturereprogram-3 IN211-Strukturereprogram-4
2 Sideeffekter et tveegget sverd Korutiner Effektivt for å kommunisere med rutinens omgivelser Korutiner er rutiner som samvirker med hverandre på like fot. men Typisk oppsett: o Et overordnet program starter opp alle korutinene. For å studere virkningen av rutinen, er det ikke nok å se på signaturen, vi må studere hele rutinen. Programmer med sideeffekter kan derfor være meget vanskelige å lese. o Hver korutine initialiserer seg selv og returnerer til det overordnede programmet. o Det overordnede programmet restarter en av korutinene med resume. o Deretter restarter korutinene hverandre med resume. Allment akseptert at det er uheldig at funksjoner har sideeffekter, og mange programmeringsspråk forbyr det. o Kjøringen avsluttes når en av korutinene utfører sin avsluttende kode. Korutinene utføres i kvasiparallell bare en korutine er aktiv ad gangen. Korutiner er velegnet for simuleringer eksempelvis spill. Korutiner er implementert i SIMULA 67. IN211-Strukturereprogram-5 IN211-Strukturereprogram-6 Exceptions - unntak Språk uten unntakshåndtering Hensikten med unntakshåndtering er at programmet skal gjenspeile det normale programmet skal ikke bli overkomplisert på grunn av alle mulige unntak Hvis man programmerer i et språk som ikke tilbyr unntakshåndtering, må programmereren allikevel forsøke å forutse alle eventualiteter og håndtere mulige unntak Definisjoner: Alternativer: o Unntak ( exception ): En uvanlig, unormal hendelse, feilaktig eller ikke, som kan fanges opp av maskin- eller programvare, og som kan kreve spesiell prosessering o Sende med en ekstra parameter som kan brukes som statusindikator til alle subprogrammer (f.eks. C biblioteksfunksjoner) o Unntakshåndtering ( excepton handling ): Prosesseringen av et unntak o Sende med en label -parameter til alle subprgrammer ved feil returneres til denne (f.eks. FORTRAN) o Unntakshåndterer ( exception handler ): Programkoden for unntakshåndtering o Kasting av unntak ( raise an exception eller throw an exception ) gjøres når den uvanlige hendelsen inntreffer o Sende med en unntakshånderings-subrutine til alle subprogrammer Feilhåndteringskode er kjedelig å skrive og forkludrer programmet Fanges ikke feilen, går kontrollen til operativsystemet som gir en feilmelding og avslutter programmet IN211-Strukturereprogram-7 IN211-Strukturereprogram-8
3 Språk med unntakshåndtering Utfordringer i språkutformingen I et språk med unntakshåndtering fanges unntakene automatisk bak kulissene, og det gis muligheter for å rette opp problemet og fortsette. Feilforplantningsmekanismer åpner for effektiv gjenbruk av unntakshåndterere. Hvordan blir unntakshåndterere spesifisert og hva er deres skop? Hvordan blr et unntak bundet til en unntakshåndterer? Hvor fortsetter utførelsen (hvis den fortsetter) etter at unntakshåndtereren er ferdig? Hvordan spesifiseres brukerdefinerte unntak? Mange språk har ikke komplett unntakshåndtering, men gir allikevel muligheter for å fange opp I/O-feil (inkludert EOF). Skal det finnes standard unntakshåndterere for programmer som ikke inneholder egne håndterere? Skal det finnes implisitte, innebygde unntak? Skal det være mulig for programmereren eksplisitt å kaste implisitte, innebygde unntak? Skal feil som fanges av maskinvaren betraktes som unntak som skal kunne håndteres? Skal unntakshåndtering kunne settes ut av kraft? IN211-Strukturereprogram-9 IN211-Strukturereprogram-10 Exception is raised Unntakshåndtering kontrollflyt Executing code some statement; Termination Exception to handler binding? Continuation Exception handlers when when when Sebesta Figure 14.1 page 563 Java unntakshåndtering try { farlig kode catch (SomeException) { // flere unntakshåndterere finally { Alle unntak er objekter av subklasser av klassen Throwable Java-biblioteket omfatter to subklasser av Throwable : 1. Error Kastes av JVM for hendelser som f.eks. heap full. Fanges aldri av brukerprogrammer 2. Exception To predefinerte direkte subklasser: 1. IOException 2. RuntimeException (f.eks. ArrayIndexOutOfBoundsException og NullPointerException) Brukerdefinerte unntak er vanligvis subklasser av Exception IN211-Strukturereprogram-11 IN211-Strukturereprogram-12
4 Java unntakshåndtering try { farlig kode catch (SomeException) { // flere unntakshåndterere finally { Alle unntak er objekter av subklasser av klassen Throwable Error Throwable IOException Exception RuntimeException UserExceptions Java unntakshåndtering Alle catch krever en navnet parameter og alle parametre må være subobjekter av Throwable Unntak kastes med throw, inkluderer ofte new-operatoren for å lage et nytt unntaksobjekt: throw new MyException( ); Et unntak bindes til den første catch med en parameter som er av samme klasse som det kastede objektet eller en superklasse til det Finnes ingen passende catch, forplantes unntaket videre til kallende metode. Fanges ikke unntaket et eller annet sted, avsluttes programmet. En catch(exception) fanger det meste! ArrayIndexOutOfBoundsException NullPointerException Et unntak kan bli håndtert og kastet på nytt ved å inkludere en throw i unntakshåndtereren kan da kaste et annet unntak enn det opprinnelige IN211-Strukturereprogram-13 IN211-Strukturereprogram-14 Java unntaksforplantning Unntak av klassene Error og RunTimeException og deres subklasser blir kalt unchecked exceptions. Kompilatoren bryr seg ikke om disse. Alle andre unntak er checked exceptions. Checked exceptions som kastes av en metode må enten 1. Listes i throws-leddet i metodeklarasjonen 2. Håndteres i metoden En metode som kaller en metode som lister en bestemt checked exception i throws-leddet har tre muligheter: 1. Fange og håndtere unntaket 2. Fange unntaket og kaste et nytt som er listet i dens eget trows-ledd 3. Deklarere den i throws-leddet og la være å håndtere den Korrekt bruk av unntak? enum Ukedager {mandag, tirsdag, onsdag, torsdag, fredag, lørdag, søndag ; imorgen := Ukedager succ(idag); exception when constraint_error => imorgen := mandag; IN211-Strukturereprogram-15 IN211-Strukturereprogram-16
5 Navn Adresse Hendelsesdrevne programmer Registering Lagre Tøm xxxxxxx xxx xxxxxxx xxx xxxxxxx xxx Modularisering I ALGOL og ALGOL-liknende språk er programmet en monolittisk tekst. OK for små programmer, problematisk for store ( programming in the large ) For programming in the large er det behov for å kunne dele programmet opp i relativt selvstendige moduler, med o Høy kohesjon o Lav kopling Programming in the small : Utvikling av enkeltmoduler Lyttere fanger opp hendelser i skjermbildet og gir kontrollen til ansvarlig rutine. Programming in the large : Dekomponere i moduler Hvorfor modularisering? Skjermbildet kan o Dele noe stort opp i håndterbare biter o settes opp av programmet o Oppdeling av navnerommet, unngå navnekonflikter for rutiner/metoder o settes opp automatisk o Uavhengig utvikling og vedlikehold av moduler IN211-Strukturereprogram-17 IN211-Strukturereprogram-18 Viktige konsepter i modularisering Viktige konsepter i modularisering (forts.) Service og service provider klientemoduler har behov for service som ytes av service providers, dvs. tjenermoduler Innkapsling in the large : Gi klientene tilgang til de tjenestene de behøver, men ikke mer Grensesnitt o Beskriver en mengde med tjenester som eksporteres av en o Implementasjonen er skjult for omgivelsene dermed kan implementasjonen fritt endres, så lenge grensesnittet ikke berøres tjenermodul (typer, rutinekall/signaturer, variabler), og som modulens klienter kan gjøre seg nytte av ved å importere dem. o Rutinene i en modul har behov for å dele hemmeligheter med hverandre, uten at disse blir kjent utenfor modulen. o Hvordan får klientene tilgang til tjenestene? Hva kan eksporteres og importeres? Implementering o Implementerer tjenestene som er beskrevet i grensesnittet Det er hensiktsmessig å skille grensesnitt fra implementasjon Hvordan støtter programmeringsspråkene opp under dette? Disse konseptene er velkjente i den objektorienterte verden, og realiseres der ved hjelp av klasser. En modul er imidlertid som regel mer omfattende enn en enkel klasse. IN211-Strukturereprogram-19 IN211-Strukturereprogram-20
6 Separat/uavhengig kompilering Logisk vs. fysisk modularisering For programming in the large er det en stor fordel om programmeringsspråket tilbyr separat/uavhengig kompilering. Programmeringsspråket må definere o Kompileringsenheten: Hva kan kompileres uavhengig? Hva kan grupperes inn i en kompileringsenhet? o Kompileringsrekkefølgen: Hvor uavhengig kan fysiske moduler implementeres og kompileres? Må kompileringen skje i en bestemt rekkefølge? Logisk modularisering: Inndeling av programkoden i subrutiner, funksjoner, klasser, pakker o.l. Fysisk modularisering: Fordeling av programkoden på ulike filer som kan kompileres separat eller uavhengig o Innkapsling og synlighet: Hvilke synlighetsmekanismer og tilgangskontrollmekanismer understøttes av språket? o Typesjekking: Hva sjekkes på tvers mellom separatkompilerte moduler? IN211-Strukturereprogram-21 IN211-Strukturereprogram-22 Separat/uavhengig kompilering Fysisk modul: En fil Modularisering i C Separat kompilering (def): De fysiske modulene kan kompileres separat, men i en bestemt rekkefølge: Grensesnittene, så grensesnittets klienter og grensesnittets implementasjon Hvis grensensitt og implementasjon ikke er separate må tjener kompileres før klienter Uavhengig kompilering (def): De fysiske modulene kan kompileres fullstendig uavhengig av hverandre. Umuliggjør typesjekking på tvers av moduler av kompilatoren. (Kan linkeren overta denne oppgaven?) Ingen språkstøtte for å skille grensesnitt fra implementasjon. Men det er sedvane å dele en logisk modul i to fysiske moduler, som omtrent tilsvarer grensesnittet og implementasjonen the header file eller include file (file.h) og the implementation file (file.c). Se eksempel i læreboka side 255. Ingen innkapslingsmuligheter innen den fysiske modulen (filen) Navn som er definert utenfor funksjoner er kjent også utenfor den fysiske modulen. Funksjoner er pr default tilgjengelige for import. Variabler blir tilgjengelige ved å deklarere dem extern. Funksjoner og variable kan deklareres som lokale med static. IN211-Strukturereprogram-23 IN211-Strukturereprogram-24
7 Modularisering i C++ C++ bygger som kjent på C, derfor mye likt Viktige utvidelser: Klasser o understøtter implementering av abstrakte datatyper o understøtter innkapslingsprinsippet En klasses grensesnitt og implementering kan (men må ikke) adskilles og kompileres hver for seg (grensesnittet først!) Men ikke noe rent skille grensesnitt -definisjonen innholder også private entities, usynlige for klientene Klienter kan kompileres med tilgang bare til grensesnittet, ikke til implementasjonen Navn definert i klassen er lokale med mindre de er deklarert public. Kan gi tilgang til private variable gjennom Friend functions, se side 259 Oppdeling av det globale navnerom med namespaces, side 261 IN211-Strukturereprogram-25 Modularisering i Java Klasser og grensesnitt kan grupperes sammen i en package, som er en innkapslingsenhet for programming in the large. Se oppskrift i ukens øvingsoppgave! Klasser og grensesnitt deklarert som public kan eksporteres til andre pakker Hvordan importere pakker: import pakkenavn.*; Grensesnitt og klasser kan fordeles på filer som kan kompileres separat (men ikke uavhengig!) IN211-Strukturereprogram-26
INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java
INF1010 våren 2017 Onsdag 25. januar Litt om unntak i Java Stein Gjessing Nytt tema: Feilhåndtering (IO: Innlesing/Utskrift) n En metode som kan komme til å gjøre en IO-feil på fil må enten behandle denne
DetaljerInnhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49
Innhold Forord...5 1 Det første programmet...15 1.1 Å kommunisere med en datamaskin 16 1.2 Programmeringsspråk 17 1.3 Et program som skriver på skjermen 18 1.4 Kompilering og kjøring 19 1.5 Kommentarer
DetaljerOversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays
Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson
DetaljerINF1010 våren 2018 tirsdag 23. januar
INF1010 våren 2018 tirsdag 23. januar I/O og litt om bruk av unntak i Java Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type: Scanner boolean
DetaljerLæringsmål for forelesningen
Læringsmål for forelesningen Objektorientering Håndtering av unntak (eng: exceptions) Java-programmering Håndtering av unntak Exception-objekter og klasser try, catch og finally throw og throws Eclipse
DetaljerINF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)
INF1010 våren 2019 Onsdag 30. januar Mer om unntak i Java (med litt repetisjon av I/O først) Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type:
DetaljerKapittel 11: Unntakshåndtering. Java som første programmeringsspråk
Kapittel 11: Unntakshåndtering 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/
DetaljerKapittel 11: Unntakshåndtering. Java som første programmeringsspråk
Kapittel 11: Unntakshåndtering 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/
DetaljerINF 1010, vår 2005 Løsningsforslag uke 11
INF 1010, vår 2005 uke 11 Anders Brunland 11. april 2005 Oppgave 1 Oppgave 1 i kapittel 19, Rett på Java Er følgende metoder lovlige? Hovorfor/hvorfor ikke? a) void koknverter ( int mnd ) { konverterdato
DetaljerArk 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk
Ark 1 av 18 IN 211 Programmeringsspråk Velkommen til programmeringsspråkenes verden IN 211 Forelesning 20.8.2001 Foreleser Ragnhild Kobro Runde E-post: ragnhilk@ifi.uio.no Kontor: 3345 Treffetid: torsdager
DetaljerVideregående programmering 6
Videregående programmering 6 1. Feilkontroll i klasser uten unntaksobjekter Klasser skal lages sikre. Argumentverdier skal kontrolleres, og eventuelle feil skal rapporteres til klienten. I praksis har
DetaljerKapittel 13: Unntakshåndtering
Kapittel 13: Unntakshåndtering Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk
DetaljerKapittel 8: Programutvikling
Kapittel 8: Programutvikling Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk
DetaljerKapittel 1 En oversikt over C-språket
Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske
DetaljerKapittel 13: Unntakshåndtering
Kapittel 13: Unntakshåndtering Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk
DetaljerStein Gjessing, Institutt for informatikk, Universitetet i Oslo
INF1010 Våren 2015 Feilsituasjoner og unntak i Java (Engelsk: Exception) Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Jeg prøvde å bestille billett med Air France:
DetaljerGeneriske mekanismer i statisk typede programmeringsspråk
Generiske mekanismer i statisk typede programmeringsspråk Dette stoffet er Pensum, og det er bare beskrevet her Mye her er nok kjent stoff for mange INF5110 7. mai 2013 Stein Krogdahl 1 Hvordan kunne skrive
DetaljerDel 4 Noen spesielle C-elementer
Del 4 Noen spesielle C-elementer 1 RR 2016 Header-filer inneholder Prototypene til funksjonene i standard biblioteket Verdier og definisjoner som disse funksjonene bruker #include #include
DetaljerTDT4100 Objektorientert programmering
Eksamensoppgave i TDT4100 Objektorientert programmering Mandag 6. august 2012, kl. 15:00-19:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Rune Sætre. Kontaktperson under
DetaljerJentetreff INF1000 Debugging i Java
Jentetreff INF1000 Debugging i Java Ingrid Grønlie Guren ingridgg@student.matnat.uio.no 11. november 2013 Kort om feilmeldinger i Java Java har to ulike type feilmeldinger som man kan få når man skriver
DetaljerLøse reelle problemer
Løse reelle problemer Løse problemer med data fra fil, samt litt mer om funksjoner IN1000, uke6 Geir Kjetil Sandve Mål for uken Få enda mer trening i hvordan bruke løkker, samlinger og beslutninger for
DetaljerINF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen
INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og
DetaljerINF1010 våren 2016. Arv og subklasser - del 2
INF1010 våren 2016 Onsdag 10. februar Arv og subklasser - del 2 pluss litt om feil og unntak hvis tid Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi
DetaljerIN 147 Program og maskinvare
Dagens tema Mer om C Cs preprosessor Allokering av variable Separat kompilering Programmet make Pekere i C Operasjoner på pekere Pekere og vektorer Referanseparametre Pekere til «alt» og «ingenting» Dynamisk
DetaljerVelkommen til INF2100
Kursopplegg Velkommen til INF2100 Jeg er Dag Langmyhr (dag@ifi.uio.no). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får man det godkjent? Pause (med registrering
DetaljerOversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp
INF1000: Grunnkurs i objektorientert programmering Uke 0, høst 2014 Oversikt Informatikk - hva & hvorfor? Datasystemer, maskinvare, programmer Objektorientert programmering i INF1000 Programmeringsspråket
DetaljerOPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?
OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.
DetaljerArray&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister
Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java
DetaljerAnatomien til en kompilator - I
Anatomien til en kompilator - I program Symboltabell tekst tokens syntaks-tre beriket syntaks-tre Finne struktur i programmet OK i henhold til grammatikk? Preprocessor Makroer Betinget kompilering Filer
DetaljerBakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?
Kursopplegg Velkommen til INF2100 Bakgrunnen Bakgrunnen for INF2100 Jeg er Dag Langmyhr (dag@ifi.uio.no). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får
DetaljerINF3110 Programmeringsspråk. Velkommen til kurset INF 3110/4110. Programmeringsspråk 1/24
Velkommen til kurset INF 3110/4110 Programmeringsspråk 1/24 Forelesning 1 20.8.2003 Først det praktiske Foreleser: Roger Antonsen E-post: rantonse@ifi.uio.no Kontor: rom 3403 Treffetid: etter avtale Undervisning
DetaljerINF 3110/4110. Velkommen til kurset. Programmeringsspråk. Først det praktiske
Velkommen til kurset INF 3110/4110 Programmeringsspråk 1/24 Først det praktiske Foreleser: Roger Antonsen E-post: rantonse@ifi.uio.no Kontor: rom 3403 Treffetid: etter avtale Undervisning Forelesninger:
DetaljerD Feilhåndtering og unntaksklasser
Algoritmer og datastrukturer D Feilhåndtering og unntaksklasser D Feilhåndtering og unntaksklasser D.1 Klassehierarki for Throwable Figur D.1 a) : Hierarki for Throwable Klassen Throwable er basisklasse
DetaljerDagens tema: 12 gode råd for en kompilatorskriver
Dagens tema: 12 gode råd for en kompilatorskriver Hvordan sjekke navn? Testutskrifter 12 gode råd Hva skal gjøres med navn? Sjekking av navn En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme
DetaljerForkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.
Forkurs INF1010 Dag 2 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 14. januar 2016 Forkurs INF1010 - dag 2 Feilmeldinger 2 Forkurs INF1010
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.
DetaljerRepitisjonskurs. Arv, Subklasser og Grensesnitt
Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett
DetaljerInnhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk
Innhold uke 7 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2017 uke 7 Siri Moe Jensen Lite tilbakeblikk: Prosedyrer og funksjoner Objektorientert programmering Introduksjon: Hvorfor,
Detaljer23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.
Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen
DetaljerINF 1000 høsten 2011 Uke september
INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første
DetaljerINF1000 undervisningen INF 1000 høsten 2011 Uke september
INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første
DetaljerSemantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!
agens tema Kjøresystemer (Ghezzi&Jazayeri.,.) Innledende om semantikk Operasjonell semantikk / SIMPLESEM Bokholderi og minneorganisering Forskjellige språkklasser... en beskrivelse av hva som skjer når
DetaljerIntroduksjon til objektorientert programmering
Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes
DetaljerPlan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk
Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Neste uke: ML Ark 1 av 16 Forelesning 16.10.2000 Parameteroverføring
DetaljerKlasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse Transaksjonshåndtering LC191D Videregående programmering
DetaljerProgrammeringsspråket C
Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger
DetaljerInf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo
Inf1010 Våren 2009 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Oversikt Hva er en feil (er det ikke mulig å unngå feil?) Hva skjer når et program feiler
DetaljerInf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo
Inf1010 Våren 2008 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Oversikt Hva er en feil (er det ikke mulig å unngå feil?) Hva skjer når et program feiler
DetaljerForklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Forklaring til programmet AbstraktKontoTest.java med tilhørende
DetaljerHvordan skrive Flok og Flass kode? I mange tilfelle er det svært enkelt:
Hvordan skrive Flok og Flass kode? I mange tilfelle er det svært enkelt: inchar INC inint INI Tegnet eller tallverdien kommer i I registeret. outchar OUTC outint (n) OUTI n outline OLIN I Flink maskinen
DetaljerOversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java
Oversikt Inf1010 Våren 2008 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Hva er en feil (er det ikke mulig å unngå feil?) Hva skjer når et program feiler
DetaljerINF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19
Dagens tema Typer (Kapittel 3 frem til 3.3.1.) Innføring i ML (Kapittel 7.4.3 & ML-kompendiet.) 1/19 Forelesning 2 27.8.2003 Typer En (data-)type består av: en mengde verdier en mengde operasjoner man
DetaljerTyper. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning
Dagens tema Typer (Kapittel 3 frem til 331) Innføring i ML (Kapittel 743 & ML-kompendiet) Typer En (data-)type består av: en mengde verdier en mengde operasjoner man kan anvende på disse verdiene Eksempel:
DetaljerKjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (
Kjøresystemer Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Statiske språk (2.7.1-2.7.2) FORTRAN, COBOL Stakk-baserte språk (2.7.3-2.7.4) ALGOL 60 Dynamiske språk
DetaljerLitt om Javas class-filer og byte-kode
Litt om Javas class-filer og byte-kode INF 5110, 11/5-2010, Stein Krogdahl (Dessverre litt få figurer) Disse formatene ble planlagt fra start som en del av hele Java-ideen Bt Byte-koden gir portabilitet
DetaljerDel 1 En oversikt over C-programmering
Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av
DetaljerArray&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre
Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerDatatyper og typesjekking
Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører
DetaljerForkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.
Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 15. januar 2016 Forkurs INF1010 - dag 3 Strenger 2 Forkurs INF1010 - dag
DetaljerInnhold Forst a program
Innhold 1 Forstå program 1 1.1 Kom i gang med Java....................... 1 Lese programkode........................ 2 Kompilere og utføre Java-program............... 4 1.2 Den programmerbare maskinen.................
DetaljerHØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL
HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 15. mai 2003 Varighet: Fagnummer: Fagnavn: Klasse(r): 3 timer LO116D Programmering i Visual Basic FU Studiepoeng:
DetaljerHvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000
Objektorientert programmering i Python: Introduksjon IN1000 Høst 2019 uke 7 Siri Moe Jensen Læringsmål uke 7 Kjenne til motivasjon og bakgrunn for objektorientert programmering Kunne definere en klasse,
DetaljerDel 3: Evaluere uttrykk
Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret
DetaljerLæringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop
Læringsmål uke 7 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2018 uke 7 Siri Moe Jensen Kjenne til motivasjon og bakgrunn for objektorientert programmering Kunne definere en klasse,
DetaljerLeksjon 7. Filer og unntak
6108 Programmering i Java Leksjon 7 Filer og unntak Del2: 7.2 og 7.4 Roy M. Istad 2015 Fil: Permanent lagring av data PrintWriter(filnavn) throws Exception usjekkede/sjekkede unntak? skriver.println(data-i-tekstlinje)
DetaljerIntroduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus
Introduksjon til programmering og programmeringsspråk Henrik Lieng Høgskolen i Oslo og Akershus Kategorisering av programmeringsspråk? Deklarativ vs. imperativ Lav nivå vs. høy nivå Kompilert vs. tolket
DetaljerDagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?
Dagens tema Dagens tema Kildekode Hva er kompilering? Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Anta at vi lager dette lille
DetaljerINF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene
Dagens tema: INF 2100 8. september 2004 Mer om strukturen i treet og hvordan bygge det Testing av at navn er deklarert og brukt riktig Arbeid i gruppene neste uke: Oppgaver relevant for dette stadiet i
DetaljerOperativsystemer og grensesnitt
Operativsystemer og grensesnitt Ulike måter å bruke OS'et på Application Program Interface (API) Applikasjoner (ofte C-programmer) som f.eks. emacs, som bruker tjenestene i OS ved å kalle på funksjoner
DetaljerForkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs
Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Eivind Storm Aarnæs (eivinsaa@math.uio.no) Institutt for Informatikk, 14. januar 2015 Forkurs INF1010 - dag 3 Strenger Fil-I/O Unntakshåndtering
DetaljerBeskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015
Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerADT og OO programmering
ADT og OO programmering I. ADT I JAVA - INTERFACE I.1 grensesnitt skal dokumenteres Javadoc I.2 bruk av interface I.3 implementasjoner av interface II. OO II.1 Arv av type og implementasjon II.2 Abstrakte
Detaljeri=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
Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I
DetaljerForelesning inf Java 4
Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når
DetaljerEksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus
// class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen
Detaljer156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk
IT1101 Informatikk basisfag I dag Programmeringsspråk Problemer med maskinspråk I dag: 5.1-5.3 Fra lavnivå til høynivå programmeringsspråk - utvikling Kompilator / tolker Programmeringsparadigmer Tradisjonelle
DetaljerIN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20
Java på 20 enkle ark spesielt for de som kan Simula (og gjerne litt C) Ark 1 av 20 Forelesning 28.9.1998 Et minimalt eksempel Filen Hallo.java ser slik ut: class Hallo { public static void main(string
DetaljerRepetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri.6,.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/5 Repetisjon: Statiske språk uten rekursive
DetaljerKompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering
Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Statiske metoder og variabler Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at
DetaljerDagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/25 Forelesning 11 5.11.2003 Repetisjon:
DetaljerPython: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre
Python: Intro til funksjoner TDT4110 IT Grunnkurs Professor Guttorm Sindre Snart referansegruppemøte Viktig mulighet for å gi tilbakemelding på emnet Pensumbøker Forelesninger Øvingsforelesninger Veiledning
DetaljerOversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java
Oversikt Inf1010 Våren 2009 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Hva er en feil (er det ikke mulig å unngå feil?) Hva skjer når et program feiler
DetaljerHvorfor objektorientert programmering?
Objektorientert programmering i Python: Introduksjon IN1000 Høst 2019 uke 7 Siri Moe Jensen Læringsmål uke 7 Kjenne til motivasjon og bakgrunn for objektorientert programmering Kunne definere en klasse,
DetaljerHØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL
HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 12. desember 2002 Varighet: Fagnummer: Fagnavn: Klasse(r): 3 timer LO116D Programmering i Visual Basic FU
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler
DetaljerLøse reelle problemer
Løse reelle problemer Litt mer om løkker, metoder med returverdier og innlesing fra fil INF1000, uke4 Geir Kjetil Sandve Repetisjon fra forrige uke: while Syntaks: while (condition) do1; do2;... Eksempel:
DetaljerInnhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java
INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:
DetaljerIntroduksjon til programmering og programmeringsspråk
Introduksjon til programmering og programmeringsspråk Henrik Lieng Høgskolen i Oslo og Akershus https://code.org/ Veldig høy-nivå programmering med Scratch End-user programming Overtone, Tidal, etc., bygger
Detaljerprogrameksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"
Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte En større problemstilling I uke 4 skrev vi et program for å sjekke om et gen (en tekstfil) inneholdt ordet "TGA"
DetaljerIN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr
IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler
DetaljerProgrammeringsspråket C
Programmeringsspråket C Programmeringsspråket C Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard i 1988;
DetaljerDatatyper og typesjekking
Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører
DetaljerVelkommen til INF2100 Jeg er Dag Langmyhr
Velkommen til Jeg er Dag Langmyhr (dag@ifi.uio.no). Bakgrunn for I INF1000 20 har dere lært å rammere, men bare små rammer (< 1000 linjer). Hensikten med er å gi mer rammeringstrening Dagens tema: Hva
DetaljerDatatyper og typesjekking
Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører
DetaljerKapittel 1: Datamaskiner og programmeringsspråk
Kapittel 1: Datamaskiner og programmeringsspråk Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen
DetaljerInf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo
Inf1010 Våren 2010 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Jeg prøvde å bestille billett med Air France:
DetaljerForelesere. Velkommen til programmeringsspråkenes verden IN211. Praktiske opplysninger. Faglige forutsetninger. Ragnhild Kobro Runde
Forelesere Velkommen til programmeringsspråkenes verden IN211 Ragnhild Kobro Runde e-post: ragnhilk@ifi.uio.no Kontor: 3345 Gerhard Skagestein e-post: gerhard@ifi.uio.no Kontor: 3402 IN211-Innledning-1
Detaljer