Dagens tema: Mer av det dere trenger til del 1
|
|
- Torfinn Holt
- 8 år siden
- Visninger:
Transkript
1 Dagens tema Dagens tema: Mer av det dere trenger til del 1 Hvilke klasser trenger vi? Uttrykk Typer Testutskrifter 12 gode råd
2 Dagens tema Prosjektet Utifra dette AlboC-programmet: int pot2 (int x) { int p2; p2 = 1; while (2*p2 <= x) { p2 = 2*p2; return p2; int x; int main () { int v; v = getint(); x = pot2(v); putint(x); putchar(10);
3 Dagens tema... skal vi bygge opp dette treet (som her er klippet): Program GlobalDeclList FuncDecl GlobalVarDecl FuncDecl ParamDeclList FuncBody ParamDeclList FuncBody ParamDecl LocalDeclList StatmList LocalDeclList StatmList DeclType LocalVarDecl AssignStatm WhileStatm ReturnStatm LocalVarDecl AssignStatm AssignStatm CallStatm CallStatm DeclType
4 Hvor mange klasser trenger vi? Koblingen mellom grammatikken og klasser Normalt skal det være én klasse for hvert metasymbol (definisjon) i grammatikken: while-statm while ( expression ) { statm list class WhileStatm extends Statement { Expression test; StatmList body;
5 Hvor mange klasser trenger vi? Ekstra klasser Noen ganger kan vi innføre ekstra klasser fordi 1 noen metasymboler hører naturlig sammen og/eller 2 vi må lagre noe informasjon. Eksempel: DeclList program declaration func decl name ( param decl, ) func body abstract class DeclList extends SyntaxUnit { Declaration firstdecl = null; DeclList outerscope;
6 Hvor mange klasser trenger vi? Noen ganger kan vi velge å implementere et metasymbol med flere klasser fordi 1 ulike varianter trenger forskjellig data og/eller 2 de kan trenge ulike virtuelle metoder. Eksempel: VarDecl er implementert som en abstrakt klasse med tre underklasser: GlobalVarDecl, LocalVarDecl og ParamDecl.
7 Hvor mange klasser trenger vi? Noen ganger kan man droppe å lagre et metasymbol: kan lagres som x = 4; return x; StatmList Statement Statement StatmList AssignStatm ReturnStatm eller AssignStatm ReturnStatm (Varianten til høyre er brukt i prosjektet vårt. Statement er da bare en abstrakt klasse.)
8 Hvor mange klasser trenger vi? Hint Hvis du stadig programmerer «Hvis det er den varianten, gjør jeg det, og hvis...», kan subklasser med en virtuell metode være løsningen. Dette gjelder spesielt ved test på instanceof.
9 Hvordan lagre uttrykk Uttrykk Et uttrykk har én eller to termer: expression term rel opr term
10 Hvordan lagre uttrykk class Expression extends SyntaxUnit { Expression nextexpr = null; Term firstterm, secondterm = null; Operator relopr = null; Type type = null; static Expression parse() { Log.enterParser("<expression>"); Expression e = new Expression(); e.firstterm = Term.parse(); if (Token.isRelOperator(Scanner.curToken)) { e.relopr = RelOpr.parse(); e.secondterm = Term.parse(); Log.leaveParser("</expression>"); return e;
11 Hvordan lagre uttrykk Termer En term har én eller flere faktorer: term term opr factor Implementasjonen av dette må dere finne ut av selv.
12 Hvordan lagre uttrykk [SyntaxUnit] Expression [Operand] Address FunctionCall InnerExpr Number Variable [Operator] RelOpr Term Disse klassene (og de du lager selv) brukes til å lagre uttrykk.
13 Klassen Type Typer Modulen Types inneholder klasser og variabler for å representere typer. Basisklassen er Type: package no.uio.ifi.alboc.types; Type.java public abstract class Type { public abstract int size(); public abstract boolean issametype(type t); public abstract boolean maybeindexed(); public abstract Type getelemtype();
14 Klassen ValueType Enkle type som kan overføres som parametre og være returverdi for funksjoner (dvs int og pekere) er instanser av ValueType. ValueType.java package no.uio.ifi.alboc.types; public abstract class ValueType extends Type public boolean maybeindexed() { return false; // Most value types may public Type getelemtype() { return null; // Most value types have none.
15 Modulklassen Types inttype opprettes som statisk variabel i modulen Types: package no.uio.ifi.alboc.types; Types.java public class Types { public static Type inttype; public static void init() { inttype = new ValueType() public String tostring() { return public int size() { return 4; public boolean issametype(type t) { return this == t;
16 Må alle klasser ha et navn? Anonyme subklasser Vanligvis deklarerer vi klasser og subklasser slik: abstract class Bil { abstract double antpassasjerer(); Bil.java Sportsbil.java class Sportsbil extends Bil double antpassasjerer() { return 1; Bilregister.java class Bilregister { public static void main(string arg[]) { Bil a = new Sportsbil();
17 Må alle klasser ha et navn? Hvis vi ikke trenger Sportsbil til noe annet, kan vi oppnå tilsvarende med en anonym subklasse: abstract class Bil { abstract double antpassasjerer(); Bil.java Bilregister2.java class Bilregister2 { public static void main(string arg[]) { Bil a = new Bil() double antpassasjerer() { return 1; ; $ ls *.class Bil.class Bilregister2$1.class Bilregister2.class
18 Må alle klasser ha et navn? Array-typer package no.uio.ifi.alboc.types; public class ArrayType extends Type { private int nelems; private Type elemtype; public ArrayType(Type t, int n) { elemtype = t; nelems = public String tostring() { return elemtype + public int size() { return nelems * public boolean issametype(type t) { return public boolean maybeindexed() { return public Type getelemtype() { return elemtype;
19 Må alle klasser ha et navn? Pekertyper package no.uio.ifi.alboc.types; public class PointerType extends ValueType { private Type elemtype; public PointerType(Type t) { elemtype = public String tostring() { return elemtype + public int size() { return public boolean issametype(type t) { return public boolean maybeindexed() { return public Type getelemtype() { return elemtype;
20 Oversikt Testutskrifter Det er lett å gjøre feil når man programmerer noe såpass komplisert som en kompilator. Det lureste er å godta dette og heller finne teknikker for å oppdage feilen. -logp avslører om man gjør riktige valg i jernbanediagrammene. La hver parse gi lyd fra seg. -logi sjekker om analysetreet ble riktig ved å skrive det ut etterpå.
21 logp Vårt testprogram int pot2 (int x) { int p2; p2 = 1; while (2*p2 <= x) { p2 = 2*p2; return p2; int x; int main () { int v; v = getint(); x = pot2(v); putint(x); putchar(10);
22 logp 1: int pot2 (int x) <program> <type> </type> <func decl> <type> </type> <param decl> 2: { </param decl> 3: int p2; p2 = 1; <func body> <type> </type> <var decl> </var decl> <statm list> <statement> <assign-statm> <assignment> <lhs-variable> <variable> </variable> </lhs-variable> <expression> <term> <factor> <primary> <operand> <number> 4: while (2*p2 <= x) { p2 = 2*p2; </number> </operand> </primary> </factor> </term> </expression> </assignment> </assign statm> </statement> <statement> <while-statm> <expression> <term> <factor> <primary> <operand> <number> </number> </operand>
23 logp Implementasjon Alle parse-metoder må kalle Log.enterParser("<while-statm>"); (eller tilsvarende) ved oppstart og Log.leaveParser("</while-statm>"); ved avslutning. Innrykk må håndteres automatisk.
24 logi Korrekt parsering av treet sjekkes enkelt ved å regenerere det (såkalt «pretty-printing»): Produsert av -logi Original int pot2 (int x) { int p2; p2 = 1; while (2*p2 <= x) { p2 = 2*p2; return p2; int x; int main () { int v; v = getint(); x = pot2(v); putint(x); putchar(10); Tree: int pot2 (int x) Tree: { Tree: int p2; Tree: Tree: p2 = 1; Tree: while (2 * p2 <= x) { Tree: p2 = 2 * p2; Tree: Tree: return p2; Tree: Tree: Tree: int x; Tree: Tree: int main () Tree: { Tree: int v; Tree: Tree: v = getint(); Tree: x = pot2(v); Tree: putint(x); Tree: putchar(10); Tree:
25 logi Et eksempel class WhileStatm extends Statement { Expression test; StatmList body; static WhileStatm parse() { Log.enterParser("<while-statm>"); WhileStatm ws = new WhileStatm(); Scanner.skip(whileToken); Scanner.skip(leftParToken); ws.test = Expression.parse(); Scanner.skip(rightParToken); Scanner.skip(leftCurlToken); ws.body = StatmList.parse(); Scanner.skip(rightCurlToken); Log.leaveParser("</while-statm>"); return ws;
26 logi Alle klasser som utvider SyntaxUnit, må redefinere den virtuelle metoden void printtree() { Log.wTree("while ("); test.printtree(); Log.wTreeLn(") {"); Log.indentTree(); body.printtree(); Log.outdentTree(); Log.wTreeLn("");
27 logi I Log-modulen finnes noen nyttige metoder: public static void wtree(string s) { if (curtreeline.length() == 0) { for (int i = 1; i <= treelevel; ++i) curtreeline += " "; curtreeline += s; public static void wtreeln() { writelogline("tree: " + curtreeline); curtreeline = ""; public static void wtreeln(string s) { wtree(s); wtreeln(); public static void indenttree() { //-- Must be changed in part 1: public static void outdenttree() { //-- Must be changed in part 1:
28 Forstå hva du skal gjøre! Råd nr 1: Forstå problemet! Forstå hva du skal gjøre før du begynner å programmere. NB! Skriv noen korte kodesnutter i AlboC. Tegn syntakstrærne deres. Studér eksemplet med språket E i øvelsesoppgavene. På dette stadium kan man samarbeide så mye man ønsker!
29 Start enkelt! Råd nr 2: Start med noe enkelt! Ingen bør forvente at de kan skrive all koden og så bare virker den. Start med et enkelt programmeringsspråk program var decl var decl int name ; og få det til å virke først. Utvid etter hvert. Sjekk hver utvidelse før du går videre.
30 Bruk aktiv feilsøking! Råd nr 3: Ikke sitt og stirr på koden! Når programmet ikke virker: 1 Se på siste versjon av programkoden. 2 Siden du arbeider i små steg er feilen sannsynligvis i de siste linjene du endret. 3 Hvis du ikke har funnet feilen i løpet av fem minutter, gå over til aktiv feilsøking.
31 Husk testutskriftene! Råd nr 4: Les testutskriftene! P-utskriftene forteller hvilke parse-metoder som kalles. Anta at vi har programmet int pot2 (int x) { int p2; p2 = 1; : Programmet gir en feilmelding i linje 1: Expected a leftcurltoken but found a leftpartoken! Hva er galt?
32 Husk testutskriftene! Svaret kan vi finne i P-utskriften: 1: int pot2 (int x) <program> <type> </type> <func decl> 2: { 3: int p2; p2 = 1; <func body> Utskriften skulle ha startet 1: int pot2 (int x) <program> <type> </type> <func decl> <type> </type> <param decl> 2: { 3: int p2; p2 = 1; </param decl> <func body>
33 Husk testutskriftene! I-utskriften viser en utskrift av det genererte treet. Anta at vi har det samme testprogrammet int pot2 (int x) { int p2; p2 = 1; : Hvis I-utskriften er int pot2 (int x) { p2 = 1; : så vet vi at lokale deklarasjoner i funksjoner ikke settes opp riktig (eller at det er feil i I-utskriften ).
34 Lag egne testutskrifter Råd nr 5: Lag egne testutskrifter Her er litt (muligens feilaktig) kode fra StatmList.parse: class StatmList extends SyntaxUnit { Statement firststatement = null; static StatmList parse() { Log.enterParser("<statm list>"); StatmList sl = new StatmList(); Statement laststatm = null; while (Scanner.curToken!= rightcurltoken) { Statement s = Statement.parse(); if (laststatm!= null) sl.firststatm = laststatm = s; else laststatm.nextstatm = laststatm = s; Log.leaveParser("</statement>"); return sl;
35 Lag egne testutskrifter Anta at vi får melding om null-peker i linjen med laststatm.nextstatm = laststatm = sx;. Slikt skal ikke skje. Mitt råd er å legge inn noe à la while (...) { System.out.println("StatmList.parse: " + "laststatm er " + (laststatm==null? "null" : "ikke null"));
36 Lag egne testutskrifter Slik skal koden være: class StatmList extends SyntaxUnit { Statement firststatement = null; static StatmList parse() { Log.enterParser("<statm list>"); StatmList sl = new StatmList(); Statement laststatm = null; while (Scanner.curToken!= rightcurltoken) { Statement s = Statement.parse(); if (laststatm == null) sl.firststatm = laststatm = s; else laststatm.nextstatm = laststatm = s; Log.leaveParser("</statement>"); return sl;
37 Behold testutskriftene! Råd nr 6: Behold testutskriftene! Når feilen er funnet, bør man la testutskriften forbli i koden. Man kan få bruk for den igjen. Derimot bør man kunne slå den av eller på: Det mest avanserte er å bruke opsjoner på kommandolinjen: java Alboc -debugsl.a testprog.alboc Det fungerer også godt å benytte statusvariable: static boolean debugsl_a = true; : if (debugss_a) { System.out.println("...");
38 Stol ikke på det du har skrevet! Råd nr 7: Mistro din egen kode! Det er altfor lett å stole på at ens egen kode andre steder er korrekt. Løsningen er å legge inn assertions som bare sjekker at alt er som det skal være.
39 Stol ikke på det du har skrevet! class WhileStatm extends Statement { Expression test; StatmList body; static WhileStatm parse() { Log.enterParser("<while-statm>"); WhileStatm ws = new WhileStatm(); assert Scanner.curToken==whileToken: "While-setning starter ikke med while!"; Scanner.skip(whileToken); Scanner.skip(leftParToken); test = Expression.parse(); Scanner.skip(rightParToken); Scanner.skip(leftCurlToken); body = StatmList.parse(); Scanner.skip(rightCurlToken); Log.leaveParser("</while-statm>"); return ws;
40 Stol ikke på det du har skrevet! NB! Husk å kjøre med java -ea -jar Alboc.jar... for å slå på mekanismen.
41 Synkronisér med symbolgeneratoren! Råd nr 8: Sjekk spesielt på Scanner.readNext()! Det er lett å kalle readnext() for ofte eller for sjelden. Her er reglene som parse-metodene må følge: 1 Når man kaller parse, skal første symbol være lest inn. 2 Når man returnerer fra en parse, skal første symbol etter konstruksjonen være lest. Vær spesielt oppmerksom der du har forgreninger og løkker i jernbanediagrammet.
42 Ta sikkerhetskopier! Råd nr 9: Ta kopier daglig eller oftere! Programmering er mye prøving og feiling. Noen ganger må man bare glemme alt man gjorde den siste timen. Det finnes systemer for versjonskontroll som man bør lære seg før eller siden. I mellomtiden kan man ha nytte av 1 Ta en kopi av Java-filen hver gang du starter med å legge inn ny kode. 2 Ta uansett en kopi hver dag (om noe som helst er endret).
43 Hele folket i arbeid! Råd nr 10: Fordel arbeidet! Dere er to om jobben. Selv om begge må kjenne til hovedstrukturen, kan man fordele programmeringen. Forslag 1 Én tar deklarasjoner. 2 Én tar setninger og uttrykk. Men... Snakk ofte sammen. Planlegg hvordan dere bruker filene så ikke den ene ødelegger det den andre har gjort.
44 Søk profesjonell hjelp! Råd nr 11: Bruk hjelpemidlene Spør gruppelærerne! De er tilgjengelige under gruppetimene og svarer på e-post til andre tider. Orakel De siste ukene før oblig-fristene vil gruppelærerne bare jobbe med å svare på spørsmål. Les kompendiet Stoffet er forklart med flere detaljer enn det er mulig på forelesningene.
45 Start nå! Råd nr 12: Start nå! Det tar typisk timer å programmere Del-1. Det er vanskelig å anslå dette nøyaktig på forhånd. Påtrengende spørsmål Det er 25 arbeidsdager til 31. oktober. Hvor mange timer per dag blir det?
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
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
DetaljerDagens tema: Resten av det dere trenger til del 1
Dagens tema Dagens tema: Resten av det dere trenger til del 1 Hvordan sjekke navn? Testutskrifter Programmeringsstil 12 gode råd Dagens tema Prosjektet Utifra dette RusC-programmet: int pot2 (int x) {
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: Resten av det dere trenger til del 1
Dagens tema Dagens tema: Resten av det dere trenger til del 1 Hvordan sjekke navn? Testutskrifter Programmeringsstil 12 gode råd Dagens tema Prosjektet Utifra dette C
DetaljerDagens tema: 12 gode råd for en kompilatorskriver. Prosjektet. Koblingen mellom grammatikken og klasser. Utifra dette RusC-programmet:
Dagens tema Dagens tema: 12 gode råd for en kompilatorskriver Hvordan sjekke navn? Testutskrifter Programmeringsstil 12 gode råd Dagens tema Prosjektet Utifra dette RusC-programmet: int pot2 (int x) int
DetaljerDagens tema: 12 gode råd for en kompilatorskriver. Prosjektet. Modifikasjon av grammatikken. Utifra dette RusC programmet:
Dagens tema Dagens tema: 12 gode råd for en kompilatorskriver Hvordan sjekke navn? Testutskrifter Programmeringsstil 12 gode råd Dagens tema Prosjektet Utifra dette RusC programmet: func pot2 (int x) int
DetaljerRåd nr 1: Start nå! Det tar typisk timer å programmere Del 1 om man ikke har gjort slikt før. Dagens tema:
Dagens tema: 12 gode råd når man rammerer en kompilator Råd nr 1: Start nå! Det tar typisk 10 50 timer å rammere Del 1 om man ikke har gjort slikt før. Hvor mange timer per dag blir det? Dag Langmyhr,Ifi,UiO:
DetaljerDagens tema: Mer av det dere trenger til del 1
Dagens tema Dagens tema: Mer av det dere trenger til del 1 Hvilke klasser trenger vi? Uttrykk Typer Versjonskontroll Dagens tema Prosjektet Utifra dette C -programmet: int pot2 (int x) { int p2; p2 = 1;
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
DetaljerOversikt Kompilering Syntaksanalyse Java Feilsjekking Oppsummering
Dagens tema Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at vi lager dette lille
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
DetaljerDagens tema: Resten av det dere trenger til del 1
Dagens tema Dagens tema: Resten av det dere trenger til del 1 Uttrykk Typer Testutskrifter Programmeringsstil Dokumentasjon 12 gode råd Dagens tema Prosjektet Utifra dette C -programmet: int pot2 (int
DetaljerDagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering?
Dagens tema Dagens tema Kildekode Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette
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
DetaljerOversikt 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
DetaljerDagens tema: Sjekking
Dagens tema Dagens tema: Sjekking Navnebinding (obligatorisk oppgave 3) Biblioteket Logging Riktig bruk av navn (frivillig) Typesjekking (frivillig) Hele prosjektet Strukturen til kompilatoren vår f.pas
Detaljer13.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,
DetaljerOversikt 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
DetaljerDagens 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:
DetaljerINF2100. 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
DetaljerOversikt 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
DetaljerSyntaksanalyse. 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å
DetaljerOversikt 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
DetaljerINF2100. Oppgave 1. Oppgave 2 4. Løsningsforslag til oppgaver uke 40 og Se figur 1 på neste side.
INF2100 Løsningsforslag til oppgaver uke 40 og 41 2014 Oppgave 1 Se figur 1 på neste side. Oppgave 2 4 Her er det mange mulige løsninger her er én: import java.io.*; import java.util.*; class E { public
DetaljerINF2100. Oppgaver 23. og 24. september 2010
INF2100 Oppgaver 23. og 24. september 2010 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med + og ; grammatikken ser du i figur 1 på neste side. Tallkonstanter består av bare ett
DetaljerOblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59
Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være
DetaljerINF2100. Oppgaver 9. oktober 2012 C 100 X 10
INF2100 Oppgaver 9. oktober 2012 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med de fire vanligste regneartene +,, * og /; grammatikken 1 ser du i figur 1 på neste side. Tallkonstanter
DetaljerDiverse 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
DetaljerDagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java
Dagens tema: Kompilatorens struktur Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java De ulike modulene Prosjektet Hva skal del-0 gjøre? Feilmeldinger Testutskrifter Siste råd og påbud
DetaljerINF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004
INF1000 Metoder Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 Motivasjon Når man begynner å skrive store programmer, vil man fort oppleve at programmene blir uoversiktlige. Det blir vanskeligere
DetaljerDagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java
Dagens tema: Kompilatorens struktur Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java De ulike modulene Prosjektet Hva skal Del-0 gjøre? Feilmeldinger Testutskrifter Siste råd og påbud
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
DetaljerUNIVERSITETET I OSLO
Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet LØSNINGSFORSLAG Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet
DetaljerINF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10
INF2100 Oppgaver 6. og 11. oktober 2011 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med de fire vanligste regneartene +,, * og /; grammatikken 1 ser du i figur 1 på neste side.
DetaljerTOD063 Datastrukturer og algoritmer
TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage
DetaljerHva 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 =
DetaljerKapittel 7: Mer om arv
Kapittel 7: Mer om arv 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 Forlag,
DetaljerDagens tema: Resten av det dere trenger til del 1
Dagens tema Dagens tema: Resten av det dere trenger til del 1 Testutskrifter 12 gode råd Programmeringsstil Dokumentasjon Dagens tema Prosjektet Utifra dette C
DetaljerOversikt Deklarasjoner Typesjekk Programmering Datamaskinhistorie x86 Kodegenerering
Dagens tema Dagens tema: Semantisk sjekking Hvordan finne deklarasjoner? Typesjekking Hvordan programmere sjekking av riktig navnebruk? Maskinkode Litt datamaskinhistorie Hva er maskin- og assemblerkode?
DetaljerTre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm
Mer om easyio Mer om forgreninger Løkker 7. september 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 4 1 Tre måter å lese fra terminal Først:
DetaljerINF1010 - Seminaroppgaver til uke 3
INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar
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
DetaljerDagens 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
DetaljerOversikt 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
DetaljerProgrammeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket
Programmeringsspråk for nybegynnere Krav til språket Hva om vi laget vårt eget språk til INF1000? Programmeringsspråket må være så enkelt som mulig. (Programmering er vanskelig nok som det er.) Hvilke
DetaljerUtførelse av programmer, metoder og synlighet av variabler i JSP
Utførelse av programmer, metoder og synlighet av variabler i JSP Av Alf Inge Wang 1. Utførelse av programmer Et dataprogram består oftest av en rekke programlinjer som gir instruksjoner til datamaskinen
DetaljerLøsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011)
Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) HashMap, innstikksortering, javadoc (kap. 9.1-9.11, m.m. i "Rett på Java" 3. utg.) NB! Legg merke til at disse er løsningsforslag. Løsningene
DetaljerLøsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011)
Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse
DetaljerKonstruktø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
DetaljerTDT4100 Objektorientert programmering
Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson
DetaljerAlgoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2
Delkapittel 9.2 Rød-svarte og 2-3-4 trær Side 1 av 16 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 9.2 Rød-svarte og 2-3-4 trær 9.2.1 B-tre av orden 4 eller 2-3-4 tre Et rød-svart tre og et
DetaljerINF1010 Arv. Marit Nybakken marnybak@ifi.uio.no 2. februar 2004
INF1010 Arv Marit Nybakken marnybak@ifi.uio.no 2. februar 2004 Motivasjon Arv bruker vi så vi skal slippe å skrive oss i hjel. Når vi programmerer, prøver vi gjerne å modellere en del av verden ved hjelp
DetaljerBeskrivelse 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
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
DetaljerUNIVERSITETET I OSLO
Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet er på
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.
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 1. desember 2010 Tid for eksamen: 14.00 18.00
DetaljerINF2100. 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();
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:
DetaljerUniversitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk
Side 1 av 20 Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk Bokmål Eksamen i emnet INF100 Grunnkurs i programmering Torsdag 27. november 2014 Tid: 09:00 14:00
DetaljerSyntaksanalyse. Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger. IN 211 Programmeringsspråk
Syntaksanalyse Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger Ark 1 av 26 Forelesning 15.10.2001 Syntaksanalyse En parser er et program som analyserer
DetaljerVelkommen til INF2100
Kursopplegg Velkommen til INF2100 Jeg er (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? Programmeringsspråket C En kort
DetaljerIN1010 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
DetaljerKapittel 9: Sortering og søking Kort versjon
Kapittel 9: Sortering og søking Kort versjon 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
DetaljerOPPGAVE 5b og 8b Java Kode
OPPGAVE 5b og 8b Java Kode public class Kant boolean behandlereturavbil() BehandleReturAvBil behandler = new BehandleReturAvBil(this); String regnr; int kmstand, tanknivaa; boolean erskadet; // 1: Få verdiene
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen : 09.00
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 Delprøve Kandidatnr: Prøvedato: 2. mars 2005 Varighet: 3 timer (9:00 12:00) Fagnummer: LO196D Fagnavn: Videregående programmering med
DetaljerUNIVERSITETET I OSLO
FASIT UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen :
DetaljerKapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering
Kapittel 1 Datamaskiner og programmeringsspråk Dette kapitlet er en kort introduksjon til programmering. Vi vil se på hvordan man skriver, bygger og kjører programmer, samt illustrere noen sentrale programmeringsbegrep
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
DetaljerTDT4102 Prosedyreog objektorientert programmering Vår 2016
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap TDT4102 Prosedyreog objektorientert programmering Vår 2016 Øving 4 Frist: 2016-02-12 Mål for denne øvingen:
DetaljerINF1000: Forelesning 7
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en
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
DetaljerINF1010 våren januar. Objektorientering i Java
INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort
DetaljerHØGSKOLEN I SØR-TRØNDELAG
HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 4.mai 2011 Varighet: 0900-1300 Emnekode: Emnenavn: Klasse(r): LO191D / LC191D Campus: LC191D Videregående
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
DetaljerINF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012
INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver
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
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
DetaljerOBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK
INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer, bruker og telefonnummer Med
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
DetaljerLese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:
Lese fra fil Filbehandling Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo INF1000 : Forelesning 5 Vi må først importere pakken easyio Vi åpner
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
DetaljerFra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr
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 eksempel Klasser
DetaljerForelesningsquiz. Forelesning inf1000 - Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.
Forelesning inf1000 - Java 5 Forelesningsquiz Tema: En liten quiz (se utdelt ark) Filbehandling Tekster Ole Christian Lingjærde, 19. september 2012 Sett dere to (eller tre) sammen og besvar de fire spørsmålene
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.
DetaljerEnkle generiske klasser i Java
Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt
DetaljerViktig. 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
DetaljerProgrammering 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
DetaljerSemantisk 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)
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
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
DetaljerINF1000: Forelesning 6. Klasser og objekter del 1
INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK 2 Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer navn, brukernavn og telefonnummer.
DetaljerFra problem til program
Fra problem til program Gitt et problem, hvordan går man fram for å programmere en løsning? UML klassediagrammer Enhetstesting Dokumentasjon Som student ønsker vi oss et program som kan holde oversikt
DetaljerHva 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
DetaljerOm oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 211 Programmeringsspråk Eksamensdag: 6. desember 2001 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 9 sider. Vedlegg: Ingen
DetaljerINF1000: Forelesning 7. Konstruktører Static
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter
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
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
Detaljer