Dagens tema: Sjekking
|
|
|
- Charlotte Karlsen
- 9 år siden
- Visninger:
Transkript
1 Dagens tema Dagens tema: Sjekking Navnebinding (obligatorisk oppgave 3) Biblioteket Logging Riktig bruk av navn (frivillig) Typesjekking (frivillig)
2 Hele prosjektet Strukturen til kompilatoren vår f.pas f.s 1 Skanner :Token :Token :Token 2 Parser <program> <var decl> 4 Kodegenerator 3 Sjekker
3 Hva skal gjøres? Navnebinding program ; var : ; procedure (V: ); type = ; Gitt følgende program: Oppgaven er: lle navneforekomster skal bindes til sin deklarasjon. function F (V: ): ; := 2*V; F := end; { F } := + F(V) end; { } := 1; (10); write( =,, eol) end.
4 Syntakstreet program ; var : ; procedure (V: ); type = ; function F (V: ): ; := 2*V; F := end; { F } <program> := + F(V) end; { } := 1; (10); write( =,, eol) end. <var decl part> <proc decl> <var decl> <param decl list> <proc call> <proc call> <type> <param decl> <type decl part> <func decl> <variable> <type name> <type name> <type decl> <param decl list> <type name> <simple expr> <simple expr> <simple expr> <simple expr> <simple expr> <type> <param decl> <variable> <term> <term> <term> <term> <term> <type name> <type> <simple expr> <number literal> <number literal> <string literal> <variable> <variable> <type name> <variable> <variable> <term> <term opr> <term> <simple expr> <simple expr> <variable> <func call> <term> <term> <number literal> <factor opr> <variable> <variable> <simple expr> <term> <variable>
5 Syntakstreet La oss forenkle syntakstreet: program ; var : ; procedure (V: ); type = ; function F (V: ): ; := 2*V; F := end; { F } := + F(V) end; { } := 1; (10); write( =,, eol) end. Prog library Type boolean Type char Const eol Type integer Proc write Var Proc Enum false Enum true Param V write Type Func F 1 10 = eol Param V F F 2 V V
6 Hvilke noder har vi? Grønne noder er deklarasjoner. program ; var : ; procedure (V: ); type = ; function F (V: ): ; := 2*V; F := end; { F } := + F(V) end; { } := 1; (10); write( =,, eol) end. Prog library Type boolean Type char Const eol Type integer Proc write Var Proc Enum false Enum true Param V write Type Func F 1 10 = eol Param V F F 2 V V
7 Hvilke noder har vi? Blå noder er navneforekomster. program ; var : ; procedure (V: ); type = ; function F (V: ): ; := 2*V; F := end; { F } := + F(V) end; { } := 1; (10); write( =,, eol) end. Prog Library Type boolean Type char Const eol Type integer Proc write Var Proc Enum false Enum true Param V write Type Func F 1 10 = eol Param V F F 2 V V
8 Navnebindingen En del av dem skal bindes slik: program ; var : ; procedure (V: ); type = ; function F (V: ): ; := 2*V; F := end; { F } := + F(V) end; { } := 1; (10); write( =,, eol) end. Prog Library Type boolean Type char Const eol Type integer Proc write Var Proc Enum false Enum true Param V write Type Func F 1 10 = eol Param V F F 2 V V
9 Navnebindingen De andre skal bindes slik: program ; var : ; procedure (V: ); type = ; function F (V: ): ; := 2*V; F := end; { F } := + F(V) end; { } := 1; (10); write( =,, eol) end. Prog Library Type boolean Type char Const eol Type integer Proc write Var Proc Enum false Enum true Param V write Type Func F 1 10 = eol Param V F F 2 V V
10 Hvordan gjør vi det? Hvordan kan foreta navnebindingen? lle deklarasjonene er i en block : konstanter (const pi = 3;) typer (type decimal = 0..9;) enum-konstanter (type farge = (R, G, B);) variabler (var teller: 1..2;) funksjoner (function f: char;...) prosedyrer (procedure p;...) parametre (om block i funksjon eller prosedyre)
11 Hvordan gjør vi det? Et forslag La klassen Block inneholde en oversikt over alle dens deklarasjoner, for eksempel i form av en HashMap<String,PascalDecl>. En slik struktur ar en ekstra fordel: Det er enkelt å sjekke om noen navn er deklarert flere ganger i samme blokk. Dette skal i så fall gi en feilmelding.
12 Hvordan gjør vi det? Sjekkingen For å sjekke hele programmet, må vi skrive en rekursiv metode void check(block curscope, Library lib) som traverserer det. (Parametrene kommer vi tilbake til senere.)
13 Hvordan gjør vi det? Deler av Block kan se slik ut: public class Block extends PascalSyntax { ConstDeclPart constdeclpart = null; : HashMap<String,PascalDecl> decls = new HashMap<String,PascalDecl>(); void adddecl(string id, PascalDecl d) { if (decls.containskey(id)) d.error(id + " declared twice in same block!"); decls.put(id, d); void check(block curscope, Library lib) { if (constdeclpart!= null) { constdeclpart.check(this, lib); for (ConstDecl cd: constdeclpart.constants) { adddecl(cd.name, cd); } } :
14 Leting i lokalt skop Leting etter navn 1 Det enkleste først: nta at navnet finnes i den lokale blokken: Da sender vi med en peker til den som parameter til check. Eksempel class ProcCallStatm extends Statement { String procname; rraylist<expression> actparams = new rraylist<expression>(); ProcDecl void check(block curscope, Library lib) { PascalDecl d = curscope.finddecl(procname,this); : procref = (ProcDecl)d; :
15 Leting i ytre skop 2 Hvis deklarasjonen ikke er lokal, kan vi finne den ved å lete i ytre skop. Derfor bør Block inneholde en peker Block outerscope som peker på blokken utenfor. Den kan initieres av check.
16 Leting i ytre skop program ; var : ; procedure (V: ); type = ; function F (V: ): ; := 2*V; F := end; { F } := + F(V) end; { } := 1; (10); write( =,, eol) end. Prog Library Type boolean Type char Const eol Type integer Proc write Var Proc Enum false Enum true Param V write Type Func F 1 10 = eol Param V F F 2 V V
17 Leting i ytre skop Klassen Block kan da ha en metode finddecl: PascalDecl finddecl(string id, PascalSyntax where) { PascalDecl d = decls.get(id); if (d!= null) { Main.log.noteBinding(id, where, d); return d; } if (outerscope!= null) return outerscope.finddecl(id,where); } where.error("name " + id + " is unknown!"); return null; // Required by the Java compiler.
18 Biblioteket Biblioteket Noen navn som integer og write er predefinert. Hvordan bør vi håndtere dem? Løsning Lag et «kunstig» Block-objekt med disse predefinerte deklarasjonene og legg det ytterst. Da vil de bli funnet om ikke brukeren har deklarert noe med samme navn. Hint Lag en subklasse Library av Block for dette formålet.
19 Biblioteket program ; var : ; procedure (V: ); type = ; function F (V: ): ; := 2*V; F := end; { F } := + F(V) end; { } := 1; (10); write( =,, eol) end. Prog Library Type boolean Type char Const eol Type integer Proc write Var Proc Enum false Enum true Param V write Type Func F 1 10 = eol Param V F F 2 V V
20 Sjekk hva loggen sier Kontroll For å sjekke navnebindingen brukes opsjonen -logb. Kallet på Main.log.noteBinding i Block.findDecl gir oss den informasjonen vi trenger. 1 program ; 2 var : ; 3 4 procedure (V: ); 5 type = ; 6 7 function F (V: ): ; 8 9 := 2*V; 0 F := 1 end; { F } := + F(V) 5 end; { } := 1; 9 (10); 0 write( =,, eol) 1 end. Binding on line 2: integer was declared in <type decl> in the libra Binding on line 4: integer was declared in <type decl> in the libra Binding on line 5: integer was declared in <type decl> in the libra Binding on line 7: a was declared in <type decl> on line 5 Binding on line 7: a was declared in <type decl> on line 5 Binding on line 9: x was declared in <var decl> on line 2 Binding on line 9: v was declared in <param decl> on line 7 Binding on line 10: f was declared in <func decl> on line 7 Binding on line 10: x was declared in <var decl> on line 2 Binding on line 14: x was declared in <var decl> on line 2 Binding on line 14: x was declared in <var decl> on line 2 Binding on line 14: f was declared in <func decl> on line 7 Binding on line 14: v was declared in <param decl> on line 4 Binding on line 18: x was declared in <var decl> on line 2 Binding on line 19: a was declared in <proc decl> on line 4 Binding on line 20: write was declared in <proc decl> in the librar Binding on line 20: x was declared in <var decl> on line 2 Binding on line 20: eol was declared in <const decl> in the library
21 Brukes navnet riktig? Navnebruk (frivillig) Etter å ha funnet hvor et navn er deklarert, må en kompilator sjekke at det brukes rett, for eksempel at vi ikke har const C = 5; procedure P; C := 10 + P; end; {P}
22 Brukes navnet riktig? Hvordan sjekke dette? Det er mange måter å sjekke navnebruken på; jeg skal vise at oo-programmering kan gjøre dette enkelt og oversiktlig. 1 Deklarer en virtuell funksjon i klassen PascalDecl: abstract void checkwhetherssignable(pascalsyntax where); 2 I alle deklarasjoner som kan stå til venstre i en tilordning (f eks VarDecl og FuncDecl), implementeres denne som en tom void checkwhetherssignable(pascalsyntax where) {} 3 I alle andre deklarasjoner lager vi i stedet void checkwhetherssignable(pascalsyntax where) { where.error("you cannot assign to a constant."); }
23 Brukes navnet riktig? Ved alle navneforekomster der det skal skje en tilordning (f eks i ssignstatm), kan vi bruke denne metoden: class ssignstatm extends Statement { Variable var; Expression void check(block curscope, Library lib) { var.check(curscope, lib); var.vardecl.checkwhetherssignable(this); expr.check(curscope, lib); :
24 Hvor mange trenger vi? Hvilke checkwhether-metoder trenger vi? Selv har jeg brukt disse: checkwhetherssignable for tilordning (i ssignstatm og funksjons- og prosedyrekall) checkwhetherfunction for funksjonskall checkwhetherprocedure for prosedyrekall checkwhethervalue for uttrykk
25 Hvordan sjekke riktig bruk av typer? Typesjekking (frivillig) Det er også viktig å sjekke at programmereren overholder typereglene og ikke skriver slikt som type Index = 1.. z ; var : ; B: Char; C: array [Index] of Boolean; if then B := C + 1; :
26 Hvordan gjøre det i praksis? Hvordan kan dette implementeres? Det er også her mange mulige måter å ordne seg på; jeg vil vise én som minner om checkwhether: 1 I klassen Type deklareres en virtuell metode abstract void checktype(type tx, PascalSyntax where, String message); Parametrene er: tx er typen som «vår» type skal sammenlignes med where angir hvor i programmet typen forekommer message inneholder meldingen som skal gis om det er typefeil
27 Hvordan gjøre det i praksis? 2 Hver subklasse til Type må da implementere en fornuftig checktype. I EnumType kan den se slik ut: class EnumType extends Type { rraylist<enumliteral> values = new void checktype(type tx, PascalSyntax where, String message) { if (tx == this) return; // OK else if (tx instanceof TypeName) checktype(((typename)tx).namedref, where, message); else where.error(message); }
28 Hvordan gjøre det i praksis? Nå har vi testapparatet vi trenger. I WhileStatm kan vi for eksempel skrive class WhileStatm extends Statement { Expression expr; Statement void check(block curscope, Library lib) { expr.check(curscope, lib); Main.log.noteTypeCheck("while", expr.type, this); expr.type.checktype(lib.booleantype, this, "While-test is not Boolean."); body.check(curscope, lib); } (Her ser vi at parameteren lib til check-metoden er nyttig.)
Dagens tema: Sjekking (obligatorisk oppgave 3)
Dagens tema Dagens tema: Sjekking (obligatorisk oppgave 3) Navnebinding Biblioteket Logging Riktig bruk av navn Typesjekking Utregning av konstanter Hele prosjektet Strukturen til kompilatoren vår f.pas
Dagens tema: INF2100. Syntaksanalyse. Hva annet gjør en kompilator? Sjekking av navnebruk. Testutskrifter
Dagens tema: Syntaksanalyse Hva annet gjør en kompilator? Sjekking av navnebruk Testutskrifter Dag Langmyhr,Ifi,UiO: Forelesning 4. oktober 2005 Ark 1 av 20 Syntaksanalyse På skolen hadde vi grammatikkanalyse:
Syntaksanalyse. Dagens tema: Språkdiagrammene Jernbanediagrammene er et ypperlig utgangspunkt for å analysere et program: INF2100 INF2100 INF2100
Syntaksanalyse På skolen hadde vi grammatikkanalyse: Dagens tema: Syntaksanalyse Hva annet gjør en kompilator? Sjekking av navnebruk Testutskrifter Fanger krabber så lenge de orker Syntaksanalyse er på
Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?
Dagens tema: 12 gode råd for en kompilatorskriver Hva skal gjøres med navn? Sjekking av navn Hvordan sjekke navn? Testutskrifter 12 gode råd En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme
Dagens 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
Kompilering 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
Beskrivelse 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
Oversikt Kodegenerering Variabler Setninger Uttrykk While-setningen
Dagens tema Dagens tema: Kodegenerering Introduksjon Enkle variabler Uttrykk Tilordning Litt mer kompliserte setninger med betingelser (Alt om kodegenerering unntatt funksjoner.) Prosjektoversikt Del 0
Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen
Dagens tema Dagens tema: Kodegenerering Introduksjon Enkle variable Uttrykk Tilordning Litt mer kompliserte setninger med betingelser (Alt om kodegenerering unntatt funksjoner.) Prosjektoversikt Del-0
Dagens 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
Diverse eksamensgaver
Diverse eksamensgaver Noen har fått den idé å lage et språk hvor klasser kan ha noe tilsvarende byvalue-result -parametere. Klasser har ingen konstruktører, og by-value-result parametere spesifiseres som
Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen Oppsummering
Dagens tema Dagens tema: Kodegenerering Introduksjon Enkle variable Uttrykk Tilordning Litt mer kompliserte setninger med betingelser (Alt om kodegenerering unntatt funksjoner og array-er.) Prosjektoversikt
Anatomien 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
2 Parser. 1 Skanner. 4 Kodegenerator. 3 Sjekker. Oversikt Datamaskinhistorie x86 Kodegenerering Setninger Uttrykk.
Dagens tema Dagens tema: Maskinkode del 1 Litt datamaskinhistorie Hva er maskin- og assemblerkode? x86-prosessoren Programkode for setninger Konstanter og uttrykk Prosjektoversikt f.pas f.s 1 Skanner :Token
INF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt
INF5110 Obligatorisk Oppgave 2 del 2 Andreas Svendsen SINTEF 23. April 2009 Oversikt Tilbakeblikk på oppgaven Eksempel på sjekk av semantikk Eksempel på kodegenerering Nødvendige instruksjoner for IF-noden
Hjemmeeksamen 2 i INF3110/4110
Hjemmeeksamen 2 i INF3110/4110 Innleveringsfrist: onsdag 19. november kl. 1400 Innlevering Besvarelsen av oppgave 2,3,4 og 5 skal leveres skriftlig på papir i IFI-ekspedisjonen. Merk denne med navn, kurskode,
Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012
Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Simpila. Den dynamiske
Viktig. Rettet i koden. Oppgaven. Obligatorisk oppgave 2 - Kort om oppgaven og litt informasjon. Fredrik Sørensen OMS-gruppen, IfI
Viktig Obligatorisk oppgave 2 - Kort om oppgaven og litt informasjon Fredrik Sørensen OMS-gruppen, IfI Ny patch (patch_oblig2.zip) legges ut på kurssiden i dag. Oblig 1 vil bli rettet denne uken Sjekk
Hvordan 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
Semantisk Analyse del I
Semantisk Analyse del I Attributtgrammatikker Kapittel 6.1-6.2 26.02.2013 1 Statisk semantisk analyse kapittel 6: Innhold Generelt om statisk semantisk analyse Attributt-grammatikker (kapittel 6.1-6.2)
Plan: 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
INF2100. Oppgaver uke 40 og
INF2100 Oppgaver uke 40 og 41 2014 For å få trening i å programmere en parser, skal vi aller først gjøre det for et veldig enkelt programmeringsspråk: E. Dette språket består av uttrykk med de fire vanligste
Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:
Konstruktører Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver Punkt p = new Punkt(3,4); class Punkt { skjer følgende: int x, y; 1. Det settes av plass i
Hva er kompilering? Dagens tema. En kompilator En kompilator leser Minila koden og lager Flok koden.
Dagens tema Dagens tema Kildekode Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Hvordan analysere et program? Hvordan programmere dette i Java? Hvordan
Obligatorisk Innlevering 2
Obligatorisk Innlevering 2 INF5110 - Kompilatorteknikk Våren 2017 Frist 07.05.2017 23:59 Dette er den andre av to oppgaver våren 2017. Den bygger videre på det som er gjort i den første innleveringen.
Oversikt. 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
IN2030. Oppgave 1. Løsningsforslag. Uke (Disse filene finnes også i mappen ~inf2100/e/e2/.)
IN00 Løsningsforslag Uke 0 019 Oppgave 1 (Disse filene finnes også i mappen ~inf0/e/e/.) 1 class E { public s t a t i c void main ( S t r i n g arg [ ] ) { Scanner s = new Scanner ( arg [ 0 ] ) ; Expression
Datatyper 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
Datatyper 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
Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre
Oppsummering Kort gjennomgang av klasser etc ved å løse halvparten av eksamen 2012. Klasser Interface Subklasser Klasseparametre Datastrukturer Hva er problemet? Oppgaven Emballasjefabrikken Renpakk skal
Oversikt. Praktisk. Litt om meg. Obligatorisk oppgave 1 - Kort om oppgaven og verktøyene. Fredrik Sørensen OMS-gruppen, IfI.
Oversikt Obligatorisk oppgave 1 - Kort om oppgaven og verktøyene Fredrik Sørensen OMS-gruppen, IfI Litt om meg Praktisk Oppgaven Verktøyene Ant JFlex CUP Utfordringer Torsdag Litt om meg Fredrik Sørensen
Oblig 2 - Simpila. INF Kompilatorteknikk. Våren Typesjekking, sjekking av bruk av navn og blokkstrtuktur i språk.
Oblig 2 - Simpila INF5110 - Kompilatorteknikk Våren 2012 Dette er den andre av to oppgaver våren 2012. Den bygger videre på det som er gjort i oblig 1. 1 Hensikten med oppgaven Hensikten er å få enda mer
Repitisjonskurs. 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
INF1000 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
OPPGAVE 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.
INF2100. Oppgave 1, 2 og 3. Løsningsforslag til oppgaver 23. og 24. september Her er det mange mulige løsninger her er én: import java.io.
INF2100 Løsningsforslag til oppgaver 23. og 24. september 2010 Oppgave 1, 2 og 3 Her er det mange mulige løsninger her er én: import java.io.*; class E { public static void main(string arg[]) { Scanner.init();
UNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 Eksamensdag : Tirsdag 6. juni 2006 Tid for eksamen : 09.00-12.00 Oppgavesettet er på : 5 sider Vedlegg : Intet Tillatte
Programmering i C++ Løsningsforslag Eksamen høsten 2005
Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det
13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER
.9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,
Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }
Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =
Gjennomgang av eksamen H99
Gjennomgang av eksamen H99 Administrasjon av kurser, studenter og påmeldinger Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Oppgave 1 (15 %) (Besvares
Repetisjon: 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
Dagens 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:
class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }
Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere
En kompilator for Pascal. Kompendium for INF2100
En kompilator for Pascal Kompendium for INF2100 Stein Krogdahl, Dag Langmyhr Høsten 2016 Innhold Forord 9 1 Innledning 11 1.1 Hva er emnet INF2100?....................... 11 1.2 Hvorfor lage en kompilator?....................
Programmering Høst 2017
Programmering Høst 2017 Tommy Abelsen Ingeniørfag - Data Innledning Dette er et dokument med litt informasjon og eksempler om kontrollstrukturer, samt oppgaver til forskjellige kontrollstrukturer. Spør
Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {
Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere
LO191D/LC191D Videregående programmering
LO191D/LC191D Videregående programmering Eksamen mai 2012 Løsningsforslag Oppgave 1 Klassen Destinasjon: // Oppgaven er uklar på hva som skal inn i klassen Destinasjon. // Her følger en minimumsutgave
Løsnings forslag i java In115, Våren 1998
Løsnings forslag i java In115, Våren 1998 Oppgave 1 // Inne i en eller annen klasse private char S[]; private int pardybde; private int n; public void lagalle(int i) if (i==n) bruks(); else /* Sjekker
INF5110. Oblig 2 presentasjon
INF5110 Oblig 2 presentasjon Informasjon Oppgaven Semantikksjekk Kodegenerering Bytecode-biblioteket Ant-targets Oppsummering Oversikt Informasjon Oblig 2 tilgjengelig på kurssiden Patch med testfiler
2 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.
Løsningsforslag til hjemmeeksamen 2 i INF3110/4110
til hjemmeeksamen 2 i INF3110/4110 Roger Antonsen November 2003 Oppgave 1 Siden oppgaven går ut på å utvide programmet slik at det også genereres kode for prosedyrer, må flere funsjoner endres og legges
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
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
Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004
Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Oppgave 1 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new
Forelesning 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
BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl. 09.00 13.
BOKMÅL Side 1 av 5 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTERINGSEKSAMEN
IN1010 våren januar. Objektorientering i Java
IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som
UNIVERSITETET I OSLO
UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på
