TILLÄMPAD DATALOGI (TILDA) Övning 6 www.nada.kth.se/~mhj/tilda.

Slides:



Advertisements
Liknande presentationer
Handledning för innehavare och kontaktpersoner i JPBS.
Advertisements

Kampanjuppföljning Hur den senaste kupongkampanjen gick totalt sett vet du säkert. Men hur gick den i exempelvis Skåne jämfört med i Göteborg? Var resultatet.
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Andragradsfunktioner & Andragradsekvationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Via SMS så får du erbjudande om nya vikariepass, kan acceptera eller avböja dessa erbjudanden, eller blir direktbokade på pass. Förfrågningarna besvaras.
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Access med Sebastian och Robert
hej och välkomna EKVATIONER Ta reda på det okända talet.
En utvecklares bekännelser Daniel
E-post juni 2013.
Enkel dator teknik Tips och tricks.
De fundamentala datatyperna
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Metoder i java Det finns två typer av metoder i java
Arv.
Inkapsling.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Att programmera i språket Java
Virus, Maskar och trojaner
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Lotus Webbaccess Steg 1 Logga in, skicka och ta emot e-post och lite om adressboken. För att gå vidare - vänsterklicka.
Föreläsning 11 Arrayer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Repetition inför slutprovet
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmering B PHP Lektion 2
Från binära till hexadecimala
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Tabeller.
Vektorer (klassen Vector) Sortering
Max start-guide Liten och väldigt snabbt ihopkastad.
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Java paket och jar-filer
TILLÄMPAD DATALOGI (TILDA) Övning 3
Lösningsförslag Rättningsmall som gäller alla uppgifter Enligt följande princip -1p slarvfel -2p räknefel Om dessa fel påverkar svaret får man inget ytterligare.
Föreläsning 2 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 2 2D1312 Introduktion till Python Kap 1 och 2 i kursboken.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
Regler för citatteknik
Enkel dator teknik Tips och tricks. Välja storlek och radavstånd Här väljer du storlek på texten vi vill att ni använder 14 p till rubriker och 12 p till.
Python.
Presentationens avskrift:

TILLÄMPAD DATALOGI (TILDA) Övning 6 www.nada.kth.se/~mhj/tilda

Komprimering Abstraktion

Abstraktion

Varför komprimera? Komprimerade filer tar mindre plats på datorn. Komprimerade filer går snabbare att hämta/skicka över nätet. Ex) Ovning6.ppt 234 496 bytes 33 909 bytes komprimerad

Varför EJ komprimera? Filer måste packas upp innan de kan användas Man måste ha tillgång till rätt program för att kunna packa upp en komprimerad fil Vissa filer ger dåligt komprimeringsratio Ex) Equation.ppt 101 376 bytes 68 066 bytes komprimerad

En komprimeringsidè Antag att ett mening på finska i regel kräver fler bokstäver än motsvarande mening på svenska. Komprimera finska texter genom att översätta de till svenska Ex) Text på Oboj-paketen Paina läppaä sisään ja avaa = 27 tecken Tryck in fliken och öppna = 25 tecken

Varför går det att komprimera? Informationen i en fil sparas inte på det ”snålaste” sättet. Ex) Textfiler vanliga ord kodas längre än mindre vanliga ord: kanske, varför uv, påå Vanliga tecken tar lika mycket minne som ovanliga tecken: T, S, E, ., A W, Z, }, £

(RLE – Run Length Encoding) Följdlängdskodning (RLE – Run Length Encoding) ÅÅÅÅH! JAAAAAAA! AAAAAAAAAAAAH. 4ÅH! J7A! 12AH. Om texten innehåller siffror… #4ÅH! J#7A! #12AH.

Huffmankodning U H B A ! I . B U ! H A H I H A H A . B U U U ! B U U Tecken Sannolikhet . 0.05 I ! 0.1 A 0.15 B H 0.2 U 0.3 1.0 1 0.6 0.4 0.2 1 1 0.3 1 0.1 1 1 U H B A ! I . B U ! H A H I H A H A . B U U U ! B U U 101 11 001 01 100 01 0001 01 100 01 100 0000 101 11 11 11 001 101 11 11

Fågelkomprimering (041019:6) Fågelinformationen nedan är komprimerad med ett Huffmanträd där nollor motsvarar vänster och ettor motsvarar höger (se figur, ’K’ kodas t.ex. som 11). Skriv upp hur alla bokstäver kodas och tala om vad det står i meddelandet: 1110000110110010101110 Fågelkomprimering (041019:6) Tecken Huffman C 000 L 001 I 010 E 011 U 10 K 11 1 1 1 1 1 C L I E U K K U C K E L I K U

Lempel-Ziv 1E 1N 1_ 1A 3A 6S EN_ANANAS Kodning Tecken- Kombination 1 2 4 _ 5 A 6 NA 7 NAS 1E 1N 1_ 1A 3A 6S

Förstörande komprimering Vi kan inte återskapa orginalet från det som komprimerats Ex) JPEG (bilder), mp3 (ljud)

Lasse Svensson, övning Algebra D2 921109 hacks på Nada > module add hacks > lsvensson Jag förstår inte hur folk törs ha CD-bandspelare utan att kunna BCH-koder. Det är knappt att jag törs sätta på en CD-bandspelare. Man vet ju inte med vilken sannolikhet det man hör är korrekt. Lasse Svensson, övning Algebra D2 921109

Felkorrektion Vill man gardera sig mot fel kan man lägga till redundans (motsatsen till komprimering) Kontrollsiffra (t ex sista siffran i ett personnummer) Skicka kopior av hela meddelandet, minst tre behövs om man ska kunna korrigera. Paritetsbitar, att man lägger till en etta eller nolla till ett binärt tal för att göra det udda. Ett jämnt tal innebär att nån bit är fel. Ex) 01101 00110 Hammingavstånd, att man lägger till så många extrabitar till koden så att varje enbitsfel ger ett kodord som skiljer sig i en bit från det korrumperade kodordet, men i flera bitar från alla övriga kodord. Ex) A: 01011 H: 10010 E: 01110 J: 10101 10010 01100 10101 Felkorrektion 1 H E J

(tyvärr inte i denna kurs) Kryptering (tyvärr inte i denna kurs) Meddelande: Vi anfaller inatt Krypterar: f(Vi anfaller inatt) = Wj bogbmmfs jobuu Mottar: Wj bogbmmfs jobuu Dekrypterar: f-1(Wj bogbmmfs jobuu) = Vi anfaller inatt

Abstraktion

Båtvård (020406:8) Fråga) Seglingen är över och det är dags att ta hand om seglen. Hur lagras egentligen information om ett segel? Räcker ett tal med segelytan i m2 eller ska det kanske vara kvadratfot? Motivera varför det är bäst med en abstrakt datatyp för ett segel (3p). Ange också exempel på metoder med deras namn, in- och utdatatyper, t ex: public utdatatyp segelmetod(indatatyp variabelnamn) (2p)

Båtvård (020406:8) Svar) Abstraktion är bra eftersom: - Användaren behöver inte bry sig om detaljer. En abstrakt datatyp avslöjar inte lagringssättet. - Användaren kan inte missbruka detaljinformation och därmed inte misstolka konstruktörens avsikter. Konstruktören kan specificera operationer för åtkomst och ändring. - Konstruktören kan anpassa den abstrakta datatypen/algoritmen till olika användare utan att förstöra en bra konstruktion. - Konstruktören kan förbättra konstruktionen utan att användarens användning behöver ändras.

Båtvård (020406:8) Svar forts) Ett abstrakt Segel kan vara en klass med till exempel följande innehåll: Segel(); // Konstruktor int compareTo(Segel segel); double getSqFeet(); double getSqMeter(); void setSqFeet(double area); void setSqMeter(double area); boolean equals(Segel segel);

Abstrakta julgransnummer (010116:8) Fråga) Det kommer nya EU-regler om att alla träd, även julgranar, ska märkas med ett tolvsiffrigt tal ur vilket man kan avläsa planteringsår (två siffror), region (tre siffror) och ett exemplarnummer (sju siffror). Vilken datatyp bör ett program använda för trädnumren? Förklara varför varken String, int eller int[ ] är idealiska och ange dom viktigaste metoderna i en abstrakt trädnummerdatatyp. (5p)

Abstrakta julgransnummer (010116:8) Svar) Antal siffror i datum osv kan komma att ändras. För att inte låsa sej i en viss implementering bör man ha en abstrakt trädtyp Träd med följande metoder: int year(); int region(); int number(); void setYear(int year); void setRegion(int region); void setNumber(int number); String toString();

Verbal magi i gamla brev (001216:8) Fråga) August Strindberg skrev flera brev om dagen och litteraturforskarna vill databehandla breven. Men vilken datatyp är ett brev? En bild i gif-format? En lång String? En array av typen String[ ]? Förklara varför det är bättre med en abstrakt datatyp och ge förslag på vilka metoder man kan vilja ha till den abstrakta brevtypen. (5p)

Verbal magi i gamla brev (001216:8) Svar) Olika forskare kan tänkas behöva olika information om breven. Vissa kanske behöver titta på brevens utseende (då är en bild bra), andra behöver bara brevens text (då passar en String), och åter andra behöver veta hur texten brutits på rader (då är en String[ ] lämplig). Om man använder en abstrakt datatyp behöver man inte skriva om forskarnas program varje gång en forskare får behov av någon information som inte enkelt kan fås fram ur den aktuella brevrepresentationen. Några metoder för den abstrakta brevtypen: Date datum(); String adressat(); String text(); String rad(int nummer); int antalRader(); Image bild();