Obligatorisk uppgift: Numerisk kalkylator

Relevanta dokument
Obligatorisk uppgift: Numerisk kalkylator

Obligatorisk uppgift: Numerisk kalkylator

Obligatorisk uppgift 5

F3: Recursive descent, tokenisering, avbildningar och undantag. Carl Nettelblad

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

List.java. List.java. Printed by Tom Smedsaas

Obligatorisk uppgift 5: Symbolisk kalkylator

public boolean containskey(string key) { return search(key, head)!= null; }

List.java. List.java. Printed by Tom Smedsaas

Obligatorisk uppgift: Symbolisk kalkylator

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Att skriva till och läsa från terminalfönstret

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Observera. Tentamen Programmeringsteknik II Skrivtid:

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Inlämningsuppgift MiniPlotter

Obligatorisk uppgift 5: Symbolisk kalkylator

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

DAT043 Objektorienterad Programmering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsnings 9 - Exceptions, I/O

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Tentamen. Lösningsförslag

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Del A (obligatorisk för alla)

Exempel på användning av arv: Geometriska figurer

Föreläsning 3: Booleans, if, switch

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Föreläsning 3-4 Innehåll

Lösningar för tenta 2 DAT043,

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

F2: Algoritmanalys, sökning, sortering, recursive descent Carl Nettelblad

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Chapter 4: Writing Classes/ Att skriva egna klasser.

F3: OU2, undantag, avbildningar, listor och träd. Carl Nettelblad

Föreläsning 3. Stack

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 3. Stack

Algoritmer. Två gränssnitt

Föreläsning 14. Filhantering

Dugga i Grundläggande programmering STS, åk

Tentamen , Introduktion till Java, dtaa98, dtea53

JAVAUTVECKLING LEKTION 4

Typkonvertering. Java versus C

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Tentamen OOP

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Recitation 4. 2-D arrays. Exceptions

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Felhantering. Andra brott mot språkets regler. Man kan också i programmet bryta mot ett antal olika regler som gäller. Exempelvis:

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

JAVAUTVECKLING LEKTION 7

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Presentation av trafiksimuleringsprojektet

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning 5-6 Innehåll

F4. programmeringsteknik och Matlab

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Föreläsning 8: Exempel och problemlösning

PROGRAMMERING-Java Omtentamina

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Del A (obligatorisk för alla)

Presentation av trafiksimuleringsprojektet

Språkkonventioner och redigering av tal.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Skillnader mellan Python och Java

Transkript:

(11 april 2016 T03.1 ) Obligatorisk uppgift: Numerisk kalkylator Följande klasser skall ingå Calculator Stokenizer Parser Till stor del given. Kompletteras bara med exceptionhantering. Given - skall användas (i oförändrat skick)! En mall ( ParserTemplate ) given SyntaxException EvaluationException

(11 april 2016 T03.2 ) Klassen Calculator Huvudklass för kalkylatorn. Innehåller konstruktor, statement (med en hjälpmetod) samt main-metoden. public class Calculator { private Parser parser; private Stokenizer tokenizer; private Map<String, Double> variables; public Calculator(Stokenizer tokenizer) { this.tokenizer = tokenizer; variables = new TreeMap<String, Double>(); variables.put("pi", Math.PI); variables.put("e", Math.E); variables.put("ans", new Double(0.)); parser = new Parser(tokenizer, variables);

(11 april 2016 T03.3 ) Kalylatorns main-metod public static void main(string[] args) throws IOException { System.out.println("Numerical calculator version 2016-04-10"); Calculator calc = new Calculator(new Stokenizer()); while (true) { statement();

(11 april 2016 T03.4 ) Kalylatorns statement-metod public void statement() { try { calc.line(); catch (SyntaxException syntaxexception) { throw syntaxexception; catch (EvaluationException evaluationexception) { throw evaluationexception; Röd kod ska ersättas med kod som ger felutskrift och ser till att tokenizern positioneras till slutet på raden

(11 april 2016 T03.5 ) Hjälpmetod till statement private void line() { do { System.out.print("> "); tokenizer.nexttoken(); while (tokenizer.iseol()); // Skip empty lines statement EOL quit vars file filename assignment EOL String command = tokenizer.gettoken(); // First token if (command.equals("quit") tokenizer.iseos()) { System.out.println("Bye!"); System.exit(0); else if (command.equals("vars")) { System.out.println(variables); tokenizer.nexttoken(); else { double parsed = parser.assignment(); System.out.println(parsed); variables.put("ans", new Double(parsed)); if (!tokenizer.iseol()) { throw new SyntaxException("Expected EOL");

(11 april 2016 T03.6 ) Syntaxdiagram: Specifikation för Parser-klassen assignment expression expression term = word + term factor Obs: Hette tidigare factor ( assignment ) * / word ( exp factor log sin cos variable number

(11 april 2016 T03.7 ) Syntaxdiagram: Alternativ för -metoden ( assignment ) ( assignment ) exp ( word ( log exp sin log cos sin cos variable number number word Blir renare att koda...

(11 april 2016 T03.8 ) Parser-mallen public class ParserTemplate { private Stokenizer tokenizer; private Map<String, Double> variables; private TreeSet<String> functions; public ParserTemplate(Stokenizer tokenizer, Map<String,Double> variables) { this.tokenizer = tokenizer; this.variables = variables; functions = new TreeSet<String>(); functions.add("sin"); functions.add("cos"); functions.add("exp"); functions.add("log");

(11 april 2016 T03.9 ) Parser-mallen public double assignment() { double result = expression(); return result; public double expression() { double sum = term(); return sum; public double term() { double prod = factor(); return prod; public double factor() { return ();

(11 april 2016 T03.10 ) Parser-mallen public double () { double result = 99999; if (tokenizer.isnumber()) { result = tokenizer.getnumber(); tokenizer.nexttoken(); else { throw new SyntaxException(" not complete yet: " + tokenizer.gettoken()); return result;

(11 april 2016 T03.11 ) Tips om hantering av funktionsanropen Funktionsanropen har alla samma syntax: funktionsnamn(assignment) Hanteringen av argumentet (syntaxkontroll av och evaluering) bör alltså göras gemensamt på ett ställe. Inget klipp och klistrande av kod, alltså! För att underlätta det har parsern försetts med ett TreeSet<String> functions som innehåller funktionsnamnen. Följande kod passar då in någonstans i... else if (funtions.contains(tokenizer.gettoken()) { result = functionhandler(tokenizer.gettoken()) else if {...

(11 april 2016 T03.12 ) - ny version att koda efter ( assignment ) ( function name number word

(11 april 2016 T03.13 ) Hjälpmetoden functionhandler double functionhandler(string functionname) { tokenizer.nexttoken(); // Pass the function name if (tokenizer.getchar()!= ( ) throw new SyntaxException(...); double argument = (); // Handles the parentheses if (functionname.equals("exp")) return Math.exp(argument); else if (... )... else if (... )...... Metoden utnyttjar alltså för kontrollen av högerparentesen.

(11 april 2016 T03.14 ) Var kan syntaxfel upptäckas? assignment expression = word

(11 april 2016 T03.15 ) Var kan syntaxfel upptäckas? assignment expression = word

(11 april 2016 T03.16 ) Var kan syntaxfel upptäckas? ( assignment ) word ( exp log sin cos variable number

(11 april 2016 T03.17 ) Var kan syntaxfel upptäckas? ( assignment ) word ( exp log sin cos variable number

(11 april 2016 T03.18 ) Var kan syntaxfel upptäckas? statement EOL quit EOL vars file filename assignment

(11 april 2016 T03.19 ) Var kan syntaxfel upptäckas? statement EOL quit EOL vars file filename assignment