Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor på boken Lunell: Datalogi-begreppen och tekniken Obs! Andra frågor än dessa kan komma på tentan! 1. Konvertera talet 186 till a) Binär form b) Hexadecimal form 2. På en dator med ordlängden 21 bitar (ingen realistisk ordlängd, detta är endast ett räkneexempel) lagras flyttal normaliserat med 12 bitars mantissa och 8 bitars karakteristika. 2-komplementmetoden används för negativa tal. a) Beskriv hur flyttalslagringen ser ut. Se till att få med vad som menas med normaliserad lagring, mantissa, exponent, karakteristika och 2-komplementmetoden. b) Visa hur det binära talet 100010.1 lagras som normaliserat flyttal med representationen ovan. c) Antag att A och d är flyttalsvariabler i något programspråk och antag att både Aoch d innehåller värden >0. Det logiska uttrycket A = A+d borde ha värdet sant om d=0 och värdet falskt om d6=0. Förklara varför A=A+d kan få värdet sant i ett program trots att d>0. 3. a) Vad är en algoritm? b) Vilka är de tre grundkonstruktionerna som används i algoritmer? Ge exempel på grundkonstruktionerna. Du får använda svenska, pseudokod eller något programspråk. c) Kan en ekvation, t.ex. 2x 4 19x +6 = 0, vara en algoritm? Motivera svaret! Endast ja eller nej som svar ger 0 poäng. d) Vad menas med komplexiteten hos en algoritm? e) Vad är pseudokod och varför använder man det? f) Vad är ett ohanterligt problem i algoritmsammanhang? 4. a) Vad menas med testning av program respektive felsökning i program? Klargör skillnaden! b) Vilka speciella krav ställs på testdata till ett program? c) Beskriv kort minst två metoder för felsökning i program. 5. Här följer namnen på 8 st programspråk som alla varit populära under någon period de senaste 40 åren: Algol60, C, Fortran, Java, Lisp, Pascal, Scheme, Simula a) Välj ut 4 språk och ordna dem efter deras tillkomstår, sätt äldsta språk först. b) Vilka två av språken är s.k. funktionella språk? c) Vilka två språk är mest lämpade för objektorienterad programmering? 1
6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-printer ) g) avlusare ( debugger ) 7. Minnen a) Vad är primärminne respektive sekundärminne? Ge exempel på vad som brukar lagras i vardera minnestypen. b) Beskriv hur skivminnen är konstruerade och principerna för lagring av data på dessa. c) Beskriv hur ett virtuellt minne fungerar. Finns det någon egenskap hos ett program, som påverkar hur väl det fungerar med virtuellt minne? 8. Den konventionella datorn arbetar i princip rent sekventiellt och utför en instruktion i taget. Förklara genom en skiss av centralenheten hur en enskild instruktion utförs mer i detalj och vilka delar av datorn som då berörs. 9. a) Vad innebär multiprogrammering? b) System som använder sig av multiprogrammering måste ha en avbrotts mekanism. Vad är det? c) Beskriv och jämför programstyrd inmatning från tangenbord med avbrottsstyrd inmatning från tangentbord. Varför är avbrottsstyrning att föredra i samband med multiprogrammering? 10. Konvertera det hexadecimala talet (DA0) 16 till a) Decimal form (alltså till vårt vanliga sätt att skriva tal) b) Oktal form c) Binär form 11. Vad innebär redundans hos data? Ge exempel! Varför används data med redundans? 12. a) Vad är lågnivåspråk respektive högnivåspråk? Ange minst en viktig skillnad mellan dem. b) Ange en ungefärlig tidpunkt (±5 år) för när det första högnivåspråket började användas c) Vad är en Abstrakt Datatyp (ADT)? Kan man använda en sådan i Java? 2
13. En programmeringsmetodik som är vanlig vid programmering i imperativa språk som Pascal och C kallas för top-down. Hur arbetar man enligt denna metodik? 14. Vad är en databuss? Var används bussar? 15. a) Skriv det binära talet (10110110) 2 på decimal form (den vanliga) b) Skriv det binära talet (10110110) 2 på oktal form c) Skriv talet 29 på binär form 16. Beskriv principen för normaliserad flyttalslagring. Förklara speciellt vad mantissa, exponent, excess-n-metoden och karakteristika är. Du får gärna visa med ett exempel men det krävs inte för full poäng! 17. Vad betyder termen abstraktion i programmeringssammanhang? Vilken nytta har man av abstraktion? Ge två exempel på abstraktion. 18. Vad menas med syntaxen hos ett programspråk? Om du har ett syntaxfel i ett program, när upptäcks det senast? 19. Nämn minst tre olika typer av fel som kan finnas i ett program och något om hur/när man kan hitta och avhjälpa fel av de olika typerna. 20. Vad är primärminne respektive sekundärminne? Jämför dem vad gäller lagringskapacitet, åtkomsthastighet och kostnad. Du behöver inte ge några sifferuppgifter som svar, endast jämförelser av typen större, dyrare o.s.v. behövs. 21. Vid anrop av metoder (procedurer, funktioner) förekommer något som kallas aktiveringspost. Vad är det? 3
Svar och lösningar till vissa uppgifter samt hänvisningar till boken för övriga uppgifter 1. a)avsnitt 10.1, sid 208 211. Dividera 186 med 2 (heltalsdivision). Spara kvot och rest. Resten blir den minst signifikanta siffran i svaret, dvs. siffran längst till höger. Dela sedan kvoten med 2. Resten blir nästa siffra i talet. Upprepa tills en kvot blir 0. kvot rest 186=2 =93 0 93=2 =46 1 46=2 =23 0 23=2 =11 1 11=2 =5 1 5=2 =2 1 2=2 =1 0 1=2 =0 1 186 = (10111010) 2 b) Hexadecimal form fås genom att gruppera de binära siffrorna 4 och 4 (med början vid binärpunkten). Minst signifikanta siffran blir (1010) 2 = (10) 10 = (A) 16 Nästa siffra blir (1011) 2 = (11) 10 = (B) 16.Svar 186 = (BA) 16 2. a) Se Lunell, avsnitt 10.3, sid 217 218. Talet lagras som mb k b) Siffrorna som lagras i m blir 100010100000 då mantissan består av 12 bitar. Exponentenär6=(110) 2 Karakteristikan är då 6+2 7 =(110) 2 + (10000000) 2 = 10000110 2 och hela talets lagring med teckenbit, karakteristika och mantissa blir 0 10000110 100010100000 Mellanrummen är där endast för att förtydliga de olika delarna i lagringen. c) Vid beräkning av A + d måste d skrivas om med samma exponent (ochkarakteristika) som A. Det är fullt möjligt att d är så mycket mindre än A att d måste lagras som 0 med det påtvingade lagrings- formatet, exponent given av de stora talet A och ett begränsat antal siffor i mantissan. Vid obegränsad noggrannhet i lagringen av talen skulle problemet aldrig uppstå. 3. a) Lunell 2.1, sid 30. b) 2.4 figuren sid 35. c) Nej. En ekvation är inte en algoritm, då en algoritm är en beskrivning av de operationer som leder fram till en lösning. d) Komplexitet = hur tids- eller minnesåtgång växer med problemets storlek, se avsnitt 2.6 sid 39. e) Avsnitt 2.3, 2.4, sid. 33-34. f) Avsnitt 2.8, sid. 46. 4
4. a) Avsnitt 3.4, sid 60. b) Avsnitt 3.5. De 5 punkterna på sid 62 63 överlappar varandra. Man behöver inte svara med alla punkterna utan en sammanfattning av dem räcker. c) Avsnitt 3.6, sid 64 65 5. a) Enligt bilden sid. 76 är följande den korrekta tidsordningen: Fortran, Lisp, Algol60, Simula, Pascal, C, Scheme, Java Vilka 4 språk som helst i rätt ordning ger full poäng. b) Lisp och Scheme är funktionella språk c) Simula och Java är lämpade för objektorientering (men kan också användas rent imperativt). 6. a) Editor sid 107 b) Kompilator sid 96 c) Länkare sid 101 102 (bra figur nr 5.5 på sid 102) d) Interpretator sid 97, e) Korskompilator sid. 96 f) Formatterare sid. 109, g) Avlusare sid. 110 och sid. 65 7. a) Sid. 12 samt avsnitt 11.1, se även avsnitt 9.1 b) Avsnitt 6.7, sid 131 133 8. Se avsnitt 11.1, utgå från figurerna på sid. 228 och 230. 9. a) Avsnitt 6.4. b) Avsnitt 6.5 10. a)(da0) 16 = D 16 2 + A 16 1 +0 16 0 = 13 16 2 +10 16 1 +0 16 0 = 13 256 + 10 16 + 0 = 3488 11. Se sid. 156 157 12. a) Avsnitt 4.1 samt 5.1, sid 100. b) Avsnitt 4.1, sid 67, Svar: 1956 c) Avsnitt 4.2, sid 81. 13. Se sid 63. Där beskrivs visserligen testning top-down och bottom-up men resonemanget kan överföras till programutveckling. 14. Se avsnitt 11.1, Dataöverföring inom centralenheten, sid 235 236 5
15. a) (10110110) 2 =1 2 7 +0 2 6 +1 2 5 +1 2 4 +0 2 3 +1 2 2 +1 2 1 +0 2 0 = 2 7 +2 5 +2 4 +2 2 +2 1 =182 b) Gruppera ihop de binära siffrorna 3 och 3 med början vid binärpunkten. Vi får tre grupper: (10), (110) och (110). Gör om var och en till motsvarande oktala siffra. (10) 2 =2 8 ; (110) 2 =6 8 :Svar : (166) 8. c) Se lösningen till uppgift 1. Upprepad division med 2 ger: 29=2 =14, rest 1 14=2 =7,rest0 7=2 =3, rest 1 3=2 =1, rest 1 1=2 =0, rest 1 Restsiffrorna bildar det sökta binära talet. Den första restsiffran skall stå längst till höger i svaret: (11101) 2 16. Se fråga 2! 17. Se avsnitt 4.2 18. Se avsnitt 4.3 19. Feltyper: Syntaxfel (upptäcks vid kompilering), semantiska fel, logiska fel, exekveringsfel. Fel av de tre senare typerna upptäcks vid testning av programmet och hittas förhoppningsvis m.h.a. någon felsökningsmetod. Se vidare fråga 4! 20. Se fråga 7! 21. Se avsnitt 4.4, sid 91 6