1 INF5110 – 23. april, 2013 Noen oppgaver til kap. 8 Dette er en bedre utgave av oppgavene, lagt ut 24. april Nå fredag (26/4): Det blir ikke undervisning.

Slides:



Advertisements
Liknende presentasjoner
Kombinatorikk for lærerstudenter
Advertisements

Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Hvordan skrive en vitenskapelig artikkel?
Høgskolen i Oslo Webprogrammering Tilstandsbevaring Sessions og cookies.
En innføring i spillet: Lag En Setning
Hva er PRIMTALL?.
Høgskolen i Oslo Webprogrammering Grunnleggende PHP.
Kompilatorer - Hva foregår under panseret? BEKK fagdag
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Kontrollstrukturer (Kapittel 3)
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Høgskolen i Oslo Webprogrammering Introduksjon til Java-scripting.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
Transformasjoner Men hva hvis relasjonen er kurvelinjær?
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Filer Finne minste Finne Største Beregne gjennomsnitt Variabler Tabeller – Arrays Lage frekvenstabell.
Feilhåndtering. Feil er uunngåelige! Erfaring viser at feil i dataprogrammer som består av mer enn noen få linjer ikke er til å unngå. For å få et godt.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
Klargjøring fra forrige gang
INF150 Programmering mandag 11.9
Kapittel 11 Rekursjon Å tenke rekursivt Rekursjon er ein programmeringsteknikk der ein metode kallar seg sjølv for å fullføre ei oppgåve For å kunne.
Innskriving av data (1) 1. Slik ser dataeditoren ut fra start.Vi
PHP oversikt. Basis egenskaper Grensesnitt med web tjener Skripttaggene Kommentartegn Ikke case sensitiv Avslutningstegn for instruksjoner.
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Dynamiske nettsider PHP Del 1 – variable. PHP  PHP (Personal Home Page)  Fritt tilgjengelig programmeringsspråk  åpen kildekode  Plattformuavhengig.
XSLT The Candy Community. Fiktivt community Godteri-relatert og sukkersøt musikk. To typer metadata: Candy factor Sugar level.
Oblig 2: The Candy-community. Om XML, XSLT, Sablotron og HTML.
Uke 7 - del I: Repetisjon del II: Objekter, klasser og pekere 30 sept. 2003, Arne Maus Inst. for informatikk, UiO.
Hvordan kan foreldre bruke de vangligste funksjonene i Itslearning.com
Andre funksjoner.
VI LAGER EN PLATEBUTIKK
Oppgave 1. Automaten aksepterer språket over alfabetet {a,b} bestående av strenger med et like antall forekomster av a og et like antall forekomster av.
HUMIT 1750 Høsten 2005 Løsningsforslag med utfyllende kommentarer til Obligatorisk oppgave 1 Vi hadde gitt de tre setningene A: Regntøyet er hjemme eller.
INF 4130 Eksamen 2008 Gjennomgang.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Foreldremøte 10. trinn 24. april 2013.
Magnus Haug Algoritmer og Datastrukturer
1 INF5110 – 23. april, 2013 Svar på noen oppgaver til kap. 8 Beklager noe trykkfeil og rot på forelesningene Håper dette er bedre (lagt ut 24/4) Nå fredag.
Java 5 Litt mer om løkker Arrayer Metoder Ole Christian Lingjærde
Eksamen 2005, oppgave 2 Eksamen 2006, oppgave 2 Stein Krogdahl INF5110 – V2007.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Web-grensesnitt Øyvind A. Bratne - April 2004.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
1 INF oktober 2010 Stein Krogdahl Foreløpige foiler Dagens program: –Første time: Kap 23.5: Trær og strategier for spill med to spillere –Andre.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 25.9 MER OM: Sub-prosedyrer og sub-funksjoner Kap 4.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
Finne feil - Debugging Introduksjon til sortering.
Lokalisering og max minimumavstand. LOG530 Distribusjonsplanlegging 2 2 Anta at nettverket angir en region hvor McBurger skal opprettes 3 konkurrerende.
Kapittel 5 Vilkårssetningar og løkker. 5.1 Boolske uttrykk George Boole ( ), britisk matematikar Utvikla teori om logikk ved bruk av symbol i.
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 14.9 Ulike måter for å lese inn og skrive ut data. Kap. 3.5 mer om if – setninger Ferdige.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Nyttige kommandoer $df -h Viser diskbruk $lspci Lister pci kortene $cd
INF5110 – 23. april, 2013 Svar på noen oppgaver til kap
TDT4105 Informasjonsteknologi, grunnkurs
Variabler, datatyper og uttrykk
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
INF5110 – 5. og 7. mai 2015 Stein Krogdahl, Ifi, UiO
IS-102 Interaksjon med objekter
IN1000-seminar høsten 2017 Henrik H. Løvold
Spillutvikling Introduksjon til spillutvikling i Processing
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
For, While, prosedyrer m/ parametere, funskjoner
Utskrift av presentasjonen:

1 INF5110 – 23. april, 2013 Noen oppgaver til kap. 8 Dette er en bedre utgave av oppgavene, lagt ut 24. april Nå fredag (26/4): Det blir ikke undervisning Oblig 2: Merk at den må levers før fristen (senest 1/5). Dersom den ikke aksepteres får man den tilbake for retting.

Oppgave 8.1.c pluss litt Lag for hånd TA-kode for følgende uttrykk: a * b + a * b * c Du skal ikke prøve å optimalisere koden. Velg variabelnavn på temporære som t1, t2, osv. : + * ** a ab b c Her er et ADT for uttrykket, og det er en metode i hver node. Angi i hvilken node de forskjellige deler av TA-koden blir produsert. x z y r

Oppgave 8.1.c, med optimalisering Lag for hånd TA-kode for følgende uttrykk: a * b + a * b * c Du skal nå prøve å optimalisere koden, ved ikke å beregne samme subuttrykk om igjen. + * ** a ab b c Her er et ADT for uttrykket, og det er én kodegen.-metode i hver node. Tenk på hvordan en kompilator skulle kunne gjøre slike optimaliseringer. x y z

Oppgave 8.2.c P-kode Lag for hånd P-kode for følgende uttrykk: a * b + a * b * c Du skal her ikke prøve å optimalisere koden. + * ** a ab b c Her er et ADT for uttrykket, og det er én metode i hver node. Angi i hvilken node de forskjellige deler av P-koden blir produsert. x u z y r p v q w

Oppgave 8.2.c, P-kode med optimalisering Lag for hånd P-kode for følgende uttrykk: a * b + a * b * c Du skal nå prøve å optimalisere koden, ved ikke å beregne samme uttrykket om igjen. Foreslå en ekstra P-instruksjon slik at dette går an.

Oppgave: If-setninger oppg. 1. P-kode I den følgende if-setning er b, c og d boolske variable if (b and c or d) a = x else x = a ; Bet. tolkes slik: ((b and c) or d) Lag P-kode for denne pr. hånd der betingelsen ikke er kortsluttet, og slik at betingelsen blir beregnet til en logisk verdi.

If-setninger oppg. 2. P-kode med kortslutning I den følgende if-setning er b, c og d boolske variable if (b && c || d) a = x else x = a ; Lag P-kode for denne der betingelsen blir kortsluttet og slik at alle hopp går så direkte som mulig.

Oppgave: If-setninger oppg. 3, TA-kode I den følgende if-setning er b, c og d boolske variable if (b and c or d) a = x else x = a ; Lag TA-kode for denne der betingelsen ikke er kortsluttet og slik at den blir beregnet til en logisk verdi.

Oppgave: If-setninger oppg. 4, Med kortslutning I den følgende if-setning er b, c og d boolske variable if (b && c || d) a = x else x = a ; Lag TA-kode for denne der betingelsen blir kortsluttet og slik at alle hopp går så direkte som mulig. Kodegenereings-metode diskuteres i pensum- foilene. Det blir lite «vanlige» TA-instruksjoner her!

Lag OO-versjon av program som genererer kode med kortslutning for betingelser Et program fra pensumfoilene som gjør dette ligger på neste foil. Oppgaven er å skrive det i en objektorientert stil. Oppsett for svar ligger på foilen deretter.

11 Genere TA-kode for boolske uttrykk void genBoolCode(String labT, labF) { … case ”||”: { String labx = genLabel(); left.genBoolCode(labT, labx); emit2(”label”, labx); right.genBoolCode(labT, labF); } case ”&&”: { String labx = genLabel(); left.genBoolCode(labx, labF); // som over emit2(”label”, labx); right.genBoolCode(labT, labF); // som over } case ”not”: { // Har bare ”left”-subtre left.genBoolCode(labF, labT); // Ingen kode lages!!! } case ”<”: { String temp1, temp2, temp3; // temp3 skal holde den boolsk verdi for relasjonen temp1 = left.genIntCode(); temp2 = right.genIntCode(); temp3 = genLabel(); emit4(temp3, temp1, «lt», temp2); // temp3 får (det boolske) svaret på relasjonen emit3(«jmp-false», temp3, labF); emit2(«ujp», labT); // Denne er unødvendig dersom det som følger etter er labT // Dette kan vi oppdage med en ekstra parameter som angir labelen bak } } // den konstrusksjonen man kaller kodegenererings-metoden for. labT true false labx labT true false labF left right For ”||”: Men heller ikke denne vil lage helt god kode! Hvorfor?? (se helt nederst) Vi bryr oss ikke med retur-navnet, siden de alltid vil hoppe ut

Oppsett for kortsluttet kode: Metoden for et slikt uttrykk blir kalt fra while-stm eller if-stm, med labler den vet det skal hoppes til ved true eller false betingelse abstract class Expression { // Hvordan skal «String codeGen(…)» se ut her? } class OrOp extends Expression { String codeGen (String LabT, LabF){... } } class AndOp extends Expression { String codeGen (…){ … } } class NotOp extends Expression { String codeGen (…){ … } } class LessThanOp extends expression { String codeGen (…){ … } } Merk at disse metodene kalles «langs» pekere typet med Expression. Spørsmål: Hva må da stå i Expression-klassen?