HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

Relevanta dokument
KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Programmering Grundkurs (HI1900) Teoridel

HI1024 Programmering, grundkurs TEN

Programmering, grundkurs, 8.0 hp HI1024, extra tentamen, TEN1, för TIDAA1. Fredagen den 11 mars 2011,

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Detta är andra problemlösningsföreläsningen, vi diskuterar problemen ur Problem II.

*Pekarvärden *Pekarvariabler & *

BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag

Funktioner och programstruktur. Föreläsning 5

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Tentamen i Programmering grundkurs och Programmering C

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Funktioner och programstruktur. Föreläsning 5

#include <stdio.h> #include <string.h>

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ };

Uppgifter till praktiska tentan, del A. (7 / 27)

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Planering Programmering grundkurs HI1024 HT 2014

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

Tentamen ges för: Tentamensdatum: Tid:

Fråga 13. Skriv en loop som fyller arrayen int v[100] med talen

Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 2011

Tentamen i Programmering grundkurs och Programmering C

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Föreläsning 6 pekare och pekare tillsammans med arrayer

Föreläsning 11. Strängar

Tentamen i. Programmering i språket C

Att använda pekare i. C-kod

Programmering i C, 7,5 hp

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Tentamen i. Programmering i språket C

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Tentamen Grundläggande programmering

Tecken & Strängar. Kapitel 7

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

Föreläsning 8: Structar

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Föreläsning 7 Strängar

Tentamen i Programmering grundkurs och Programmering C

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Föreläsning 10. Pekare (Pointers)

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

tentaplugg.nu av studenter för studenter

Tentamen TEN1 HI

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

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 i Programmering grundkurs och Programmering C

TDIU01 - Programmering i C++, grundkurs

Tentamen *:58/ID100V Programmering i C Exempel 3

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 13:15-18:15. Tisdagen 26 april Tentamen består av 8 sidor

Tentamen TEN1 HI

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

Programmering Grundkurs (6H2950) Grundläggande Programmering (6A2001)

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Föreläsning 9. Repetition och exempelproblem

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

TDIU01 - Programmering i C++, grundkurs

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Föreläsning 12. struct

Tentamen i Grundläggande Programvaruutveckling, TDA548

Planering Programmering grundkurs HI1024 HT TIDAA

HI1024 Programmering, grundkurs TEN

Tentamen i Datakunskap NT

Planering Programmering grundkurs HI1024 HT data

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13. Omtentamen i Programmering C, 5p, A1, D1, PA1, Fri,

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 13:15-18:15. Fredagen 14 januari Tentamen består av 8 sidor

Tentamen i Programmering grundkurs och Programmering C

En kort text om programmering i C.

Tentamen i Programmering

Switch, Array (fält) switch break, continue, goto (scary) Sammansatta tilldelningar Kommentarer Array Sortering

Funk%oner. Vad är det och hur definierar vi en Top- down- programmering lokala globala variabler void och flera inparametrar

Föreläsning 13. In- och utmatning

Föreläsning 9. struct

Tillämpad Programmering (ID1218) :00-13:00

Övning från förra gången: readword

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Om pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp().

Fråga 5. Vad krävs av funktionen undersok(a) för att b ska ökas med 1 respektive minskas med 1?

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

Transkript:

KTH STH TENTAMEN HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011, 8.15-12.15 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny Panrike och Peter Steiner Tentamen konstruerad av de som rättar tentan. Tentamen består av 8 sidor inklusive denna sida. Längst bak finns en ASCII-tabell. Instruktioner. Tentan har en A-del och en B-del. A-delen innehåller fem kryssuppgifter. B-delen innehåller 12 uppgifter som man ska svara skriftligt på. För att få minsta godkända betyg, E, ska man nå runt hälften av poängen. Uppgift 10, 11och 13 kräver fullständiga motiveringar för full poäng. Alla andra uppgifter kräver endast svar utan motiveringar. Uppgift 10 och 11 har högre poäng än de andra uppgifterna och det är för att motiveringarna ska också poängsättas. Uppgift 13 är en speciell uppgift. Sista uppgiften brukar vara lite speciell, om du inte förstår den kan du tryggt ägna dig åt de andra uppgifterna. Tillåtna hjälpmedel: Inga alls! Brandefelt, Panrike, Steiner 1(8)

Del A Denna del innehåller 5 påståenden som antingen är helt korrekta eller innehåller minst ett allvarligt fel. Man ska kryssa det som gäller för att få poäng. Om man kryssar rätt får man 2 poäng. Om man kryssar fel får man 1 poäng, det är alltså riskabelt att chansa. Man kan inte få mindre än noll totalt på del A och max på del A är alltså 10 poäng. Man kan alltid avstå från att svara vilket säkert ger 0 poäng. Påstående 1 Om man vill att en funktion som man anropar i C ska förändra innehållet i en variabel deklarerad utanför funktionen så går inte det på annat sätt än att man låter funktionen returnera ett värde med return. Påstående 2 En lokal variabel deklarerad inne i en funktion kan ha samma namn som en lokal variabel deklarerad inne i en annan funktion. Dock kan man inte ha ett namn på en lokal variabel i en funktion om man har har det namnet på en parameter hörande till en annan funktion i samma program. Påstående 3 Om en variabel eller funktion ska vara åtkomlig för en funktion måste den vara deklarerad ovanför den funktionen. För att två funktioner då ska kunna vara tillgänliga för varandra kan man förhandsdeklarera den ena funktioner och lägga ovanför den andra. Följande är alltså giltigt: funk1(); funk2()... funk1()... Här kan båda funktionerna anropa varandra. Mellan måsvingarna finns det jobb som funktionerna gör, symboliserat med..., överst ser vi alltså förhandsdeklarationen av funktionen funk1(). Påstående 4 Om man har en struct som formell parameter till en funktion så kopieras, vid ett anrop, hela innehållet i den aktuella parametern. Detta kan ta mycket tid om structen är stor och det är då värt att endast skicka en pekare till den struct man önskar skicka till funktionen. Brandefelt, Panrike, Steiner 2(8)

Påstående 5 Då man skickar en array av arrayer (också kallat matris) av till exempel heltal (int) till en funktion kan man inte deklarera det med dubbla hakparenteser av formen funk( int param[][] ) man behöver här ange den så kallade elementstorleken för att funktionen ska kunna hålla reda på hur många heltal det är på varje rad i matrisen av heltal. En korrekt funktionsprototyp här skulle kunna vara funk( int param[][8] ) om param ska ha 8 heltal i varje rad. Brandefelt, Panrike, Steiner 3(8)

Del B I många av uppgifterna är nödvändiga inkluderingsdirektiv som #include <stdio.h> och liknande utelämnade, uppgiften ska dock lösas som om direktiven skulle funnits med. 6. Vad ger följande program för utskrift: main() int i, j, a = 0; (2p) for(i=0;i<5;i++) for(j=i+1;j<5;j++) a++; printf("a: %d.\n", a); 7. Vad ger följande program för utskrift: main() int i, j; for(i=0;i<4;i++) int z; for(z=4-i;z>0;z--)printf(" "); //Tre mellanslag, bredd = 3 tecken for(j=-i+1;j<i;j++) printf("%3d", j); //Utskriftsbredd = 3 tecken printf("\n"); (3p) Brandefelt, Panrike, Steiner 4(8)

8. Vad ger följande program för utskrift: struct tretal int a,b,c; ; void f1( int *x, int *y, int z ) int i; for(i=0;i<z;i++) (*x)++; (*y)--; void oka(int a) a = a+1; int f2( struct tretal *w ) oka(w->a); oka(w->b); oka(w->c); f1(&(w->a),&(w->c),w->c); return w->a + w->b + w->c; main() struct tretal t1; t1.a = 1; t1.b = 3; t1.c = 5; int tal; HI1024, Programmering, grundkurs, 8hp tal = f2(&t1); printf("%d: %d, %d, %d.\n", tal, t1.a, t1.b, t1.c); (4p) 9. Vad ger följande program för utskrift: int vokal(char ch) if(ch>='a' && ch<='z')ch+=32; if(ch=='a' ch=='e' ch=='i' ch=='o' ch=='u' ch=='y') return 1; return 0; byt(char str[]) int i, n=strlen(str); for(i=0;i<n;i++)if(vokal(str[i]))str[i]='i'; main() char str1[] = "HAHAHOHOHEHE hahahohohihi"; byt(str1); printf("%s\n", str1); (3p) Brandefelt, Panrike, Steiner 5(8)

10. Det finns tre problem med nedastående program som vill skriva ut tecken från en array av tecken... finn dessa problem och föreslå rättelser. Fullständiga motiveringar krävs för denna uppgift. const int data[] = 2,4,6,8,1,3,5,7; const char alfabetet[] = "abcdefghijklmnopqrstuvwxyz"; skriv_ut_tecken(const char teckenarray[], const int positioner[], int antal) int i; for(i=0;i<antal;i++) printf("%s ", teckenarray[positioner[i]]); main() int i, j; skriv_ut_tecken(alfabetet,data[0],15); printf("\n"); Ledning: Att det står const lite här och var har vi inte studerat så noga, men det är inte det som är problemet i det här programmet så du kan bara bortse från det här. (5p) 11. Antag att du har en struct som är deklarerad så här struct lager_status int varu_id; int antal; float pris; ; Detta bygger på att vi har flera varor numrerade från 0 och uppåt med varu_id. Vi vill nu skriva en funktion som tar fram det totala värdet av alla varor med ett visst varu id ur lagret. Ett lager beskrivs i något sammanhang av en array av structar av denna typ. Vi tänker oss då en funktion som opererar på en array av sådana structar som ser ut så här: float total_varde_av(int varu_id, struct lager_status s[], int antal) int i; float buf_varde = 0.0; for(i=0;i<antal;i++) buf_varde = buf_varde + (s[i].pris)*(s[i].antal); return buf_varde; Det finns dock ett problem med denna funktion... vilket är det? Föreslå en förbättring. Fullständiga motiveringar krävs för denna uppgift. (5p) Brandefelt, Panrike, Steiner 6(8)

12. Vad skriver följande program ut? int a=4; int func(int a) a++; return a; int main(void) func(5); printf("%d",a); (2p) HI1024, Programmering, grundkurs, 8hp 13. Varför blir inte utskrifterna identiska i följande exempel? void func(int v[]) printf("%ld\n",sizeof v); int main(void) int v[4]; printf("%ld\n",sizeof v); func(v); (2p) Brandefelt, Panrike, Steiner 7(8)

Ett utdrag ur ASCII tabellen: 32 : ' ' 33 : '!' 34 : '"' 35 : '#' 36 : '$' 37 : '%' 38 : '&' 39 : ''' 40 : '(' 41 : ')' 42 : '*' 43 : '+' 44 : ',' 45 : '-' 46 : '.' 47 : '/' 48 : '0' 49 : '1' 50 : '2' 51 : '3' 52 : '4' 53 : '5' 54 : '6' 55 : '7' 56 : '8' 57 : '9' 58 : ':' 59 : ';' 60 : '<' 61 : '=' 62 : '>' 63 : '?' 64 : '@' 65 : 'A' 66 : 'B' 67 : 'C' 68 : 'D' 69 : 'E' 70 : 'F' 71 : 'G' 72 : 'H' 73 : 'I' 74 : 'J' 75 : 'K' 76 : 'L' 77 : 'M' 78 : 'N' 79 : 'O' 80 : 'P' 81 : 'Q' 82 : 'R' 83 : 'S' 84 : 'T' 85 : 'U' 86 : 'V' 87 : 'W' 88 : 'X' 89 : 'Y' 90 : 'Z' 91 : '[' 92 : '\' 93 : ']' 94 : '^' 95 : '_' 96 : '`' 97 : 'a' 98 : 'b' 99 : 'c' 100 : 'd' 101 : 'e' 102 : 'f' 103 : 'g' 104 : 'h' 105 : 'i' 106 : 'j' 107 : 'k' 108 : 'l' 109 : 'm' 110 : 'n' 111 : 'o' 112 : 'p' 113 : 'q' 114 : 'r' 115 : 's' 116 : 't' 117 : 'u' 118 : 'v' 119 : 'w' 120 : 'x' 121 : 'y' 122 : 'z' 123 : '' 124 : ' ' 125 : '' 126 : '~' Brandefelt, Panrike, Steiner 8(8)