Datateknik A, 5 p, Datakunskap NT Sid: 1 (9) Jan-Erik Jonsson 060-14 87 90, Karl Pettersson, 060-14 85 91 DTAA04 Utbildningsprogram: Tentamen i Datakunskap NT 2000-12-02 Step by Step Datakunskap NT A 5p Dagtid halvfart Tentamenslokaler: Hjälpmedel: Inga! Skrivningsanvisningar: Skriv enkelt och tydligt för att undvika feltolkningar. Skriv endast på en sida, max en uppgift per papper. Ange namn och skrivkod på alla sidor. Du får ej använda röd penna! En uppgift med flera delar kan ge poäng utan att alla delar är lösta. Uppgifterna är inte ordnade efter svårighetsgrad. Var noga med att notera alla (lämpliga) antaganden. Observera att det finns flervalsuppgifter. Det innebär att svaret skall ges på sista sidan i tentamen. Den skall lämnas in tillsammans med lösningar till alla andra uppgifter. Inga andra svar än de som ges på Svarssida för flervalsfrågor behövs vad gäller flervalsfrågor. Inga andra svar kommer heller att beaktas vad gäller flervalsfrågor. Preliminära gränser: 3: 50p. G: 50p. 4: 68p. VG: 75p. 5: 86p. Max:100p. Studenter som lämnat in alla laborationsredovisningar i ett godkänbart skick före första ordinarie tentamenstillfälle kan erhålla 5+5 poäng i bonus. Eventuell bonus gäller max ett år för samma examinator. Lycka till!
Sid: 2 (9) Datorsystem och programanvändning 1. (9 p) Detta är en del av en dataöverföring enligt RS-232 med följande parametrar: Startbit: 1 st Databitar: 8 st Stoppbitar: 2 st Paritet: jämn a.) b.) c.) Visa var den enda kompletta och korrekta överföringen börjar och slutar. Identifiera de olika bitarna i den kompletta och korrekta överföringen. Ange det överförda värdet i hexadecimal form. 1 0 2. (7p) Detta är en automatisk rättningsmall för flervalsfrågor. Genom att fylla i raden Elevsvar så räknar den automatiskt ut summan av poängen, men hur fungerar den? (Man kan naturligtvis inte få minuspoäng totalt på en uppgift, men det behöver inte rättningsmallen klara av, läraren måste tänka lite själv också.) a.) Hur gör man för att få utseendet i cellerna C2:H2? b.) Hur ser funktionen ut i C8, som genom att markera och dra, kan kopieras till alla cellerna i C8:H8? c.) Hur ser funktionen ut i I8?
Sid: 3 (9) 3. (7p) a.) Vilka olika steg ingår i en vanlig programutvecklingsprocess (ibland kallad vattenfallsmetoden)? b.) Redogör kortfattat för vart och ett av stegen. 4. (5 p) a.) Vilka är operativsystemets två huvudsakliga uppgifter? 5. (6p) Två tal i minnet, med adresserna 0F31 och 0F32, har följande värden: Adress: Värde: 0F31 Hex 1011 1100 Bin 0F32 Hex 0100 1011 Bin Vi antar att, i förekommande fall, byten på adress 0F31 innehåller den mest signifikanta byten. Vilka tolkningar är riktiga? A.) Två 8-bitars heltal, utan tecken med värdena 190 Dec och 75 Dec. B.) C.) D.) Två 8-bitars heltal, med tecken med värdena -66 Dec och 75 Dec. Summan, med 8 bitar och tecken, av de två 8-bitars heltalen, med tecken, blir 7 Dec. Som ASCII-tecknen 'L' och 'K'. E.) Som ett 16-bitars heltal, med värdet BC4B Hex. F.) Som två 8-bitars tal, utan tecken, med värdena 4B Hex och BC Hex. 6. (6p) Vi har påståendena X: 3C Hex > 0011 1100 Bin Y: '0' ASCII = = 48 Dec Z: falskt Vilka av nedanstående påståenden är då sanna? A.) X Y B.) X + Z C.) Y + Z D.) X E.) ( X + Y ) Z F.) Z + Z
Sid: 4 (9) Programmering i C++ 7. (6p) Programmet nedan är komplett men fungerar inte. Vilka påståenden om programmet är sanna? A.) Överlagringen av rensa är felaktig. B.) Kompilatorn upptäcker ett fel på rad 20. C.) Utskriften på rad 23 är felaktig. D.) Utskriften på rad 24 är felaktig. E.) Raderna 28 t.o.m. 31 ger inga kompileringsfel. F.) Raderna 37 t.o.m. 40 ger inga kompileringsfel. 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: #include <iostream.h> #include <string.h> int rensa(int n[], const int SIZE); void rensa(char n[]); void main(){ const int STORLEK=10; int falt[storlek]; rensa(falt, STORLEK); char falt2[storlek+1]; falt2[storlek]='\0'; rensa(falt2); for( int i=0; i<storlek; i++ ) falt[i]=i + '0'; for( int i=0; i<storlek; i++ ) falt2[i]= i +'0'; cout << falt << endl; cout << falt2 << endl; int rensa(int n[], const int SIZE){ for( int i=0; i<size; i++ ) n[i]=0; return 0; void rensa(char n[]){ int langd = strlen(n); for( int i=0; i<langd; i++ ) n[i]='\0'; return 0;
Sid: 5 (9) 8. (6p) Vilka påståenden om funktioner är sanna? A.) Funktioner har alltid en returtyp. B.) Operativsystemet anropar funktionen main. C.) Funktioner måste innehålla en och endast en return-sats. D.) Returtypen är en del av funktionens signatur. E.) Om en variabel används som argument vid värdeanrop så kan variabeln inte förändras av funktionen. F.) Det är funktionsnamnet som avgör vilken funktion som anropas. 9. (6p) Det två satserna while och do-while fungerar nästan likadant. Vad är skillnaden? Exempel #include <iostream.h> void main(){ int a=0; while( a < 5 ) { cout << a << " "; a++; cout << endl; do { cout << a << " "; a++; while( a < 5 ); cout << endl; 10. (6p) a.) Förklara skillnaden mellan värdeanrop och referensanrop. b.) Hur och var ser man, i ett C++-program, om en funktion anropas med värdeanrop eller referensanrop?
Sid: 6 (9) 11. (9p) I C++ finns tyvärr ingen färdig funktion för avrundning av flyttal till heltal. Skriv en funktion avrunda som gör detta. Funktionen ska ta en double som inparameter och returnera ett heltal. Avrundningen ska ske enligt svensk modell, dvs om värdet ligger precis mitt emellan två heltal ska den avrunda till det jämna heltalet. Ex 2.5 ska ge 2 3.5 ---"--- 4 4.5 ---"--- 4 3.4 ---"--- 3 3.6 ---"--- 4-3.4 --"--- -3-3.5 --"--- -4-4.5 --"--- -4 osv. 12. (12p) Skriv ett program i C++ som beräknar ett annuitetslån. För annuitetslån gäller att annuiteten=ränta+amortering utom vid sista avbetalningen (se år 5 i exemplet). För att kunna avsluta lånet så gäller: om återstående skuld > annuitet-ränta så är amorteringen = annuitet-ränta annars Exempel på användardialog: så är amorteringen = återstående skuld Mata in belopp: 10000 Mata in rantesats (i procent): 10 Mata in annuitet: 3000 Ar Skuld Ranta Amortering 1 10000 1000 2000 2 8000 800 2200 3 5800 580 2420 4 3380 338 2662 5 718 71.8 718 Press any key to continue
Sid: 7 (9) 13. (7p) Skriv en funktion stringtoint som tar en sträng som inparameter och returnerar ett motsvarande heltal. Ex om funktionen anropas med strängen "178" som inparameter ska funktionen returnera heltalet 178. Ex på användning:.. void main() { char str[]="1000"; int ut; ut=stringtoint(str)/2;.. cout << ut << endl; Detta ger utskriften: 500 14. (8p) Skriv ett program som beräknar arean(ytan) på en ölburk, formeln för detta är: r h A = 2*π*r 2 + 2*π*r*h där A = arean r = radien h = höjden π är ca 3.14159 Exempel på användardialog: Mata in diametern (i cm):8 Mata in höjden (i cm): 15 Burkens yta är: 477.522 kvcm Press any key to continue
Sid: 8 (9) Ascii-kod, ISO 646, 7 bitar. LSB MSB 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 000 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 001 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 010 SP! # $ % & ( ) * +, -. / 011 0 1 2 3 4 5 6 7 8 9 : ; < = >? 100 @ A B C D E F G H I J K L M N O 101 P Q R S T U V W X Y Z [ \ ] ^ _ 110 ` a b c d e f g h i j k l m n o 111 p q r s t u v w x y z { ~ DEL
Svarssida för flervalsfrågor Kurs: Datakunskap NT Datum: 2000-12-02 Personnummer:... Namn (textat):... Skrivkod: Program:...... Flervalsfrågor Observera att minst ett kryss skall lämnas på varje fråga nedan. Det kan inträffa att flera alternativ är korrekta. Om Du använt bläckpenna och vill ändra ditt svar så ringa in de kryss som skall gälla. I test A och test B har samma alternativ valts. Fråga (poäng) A B C D E F Inget av alternativ A-F Test A (0p.) Test B (0p.) Datakunskap och programanvändning Fråga (poäng) A B C D E F Inget av alternativ A-F 5. (6p.) 6. (6p.) Programmering i C++ Fråga (poäng) A B C D E F Inget av alternativ A-F 7. (6p.) 8. (6p.)