Tentamen i Programmering grundkurs och Programmering C



Relevanta dokument
Tentamen i Programmering grundkurs och Programmering C

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

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

Tentamen i. Programmering i språket C

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

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

Tentamen i Programmering grundkurs och Programmering C

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

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

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

Tentamen i. Programmering i språket C

Tentamen i Programmering grundkurs och Programmering C

Strängar. Strängar (forts.)

Snabbslumpade uppgifter från flera moment.

Lathund, procent med bråk, åk 8

Databasteknik för D1, SDU1 m fl

Databasteknik för D1, SDU1 m fl

( ostream ) << ( annan datatyp ) : ostream

Programmeringsteknik med C och Matlab

3.1 Linjens ekvation med riktningskoefficient. y = kx + l.

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

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

Tillämpad UNIX. Laborations-PM Christian von Schultz, Programpaket och processhantering

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

Vad är det och hur definierar vi en Biblioteksfunktioner (math) Top-down-programmering lokala globala variabler Arrays som in-parametrar

Får nyanlända samma chans i den svenska skolan?

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

Facit med lösningsförslag kommer att anslås på vår hemsida Du kan dessutom få dem via e-post, se nedan.

ANVÄNDARHANDLEDNING FÖR

Standardfunktioner i C

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,

Programexempel: tärningsspel

ATT KUNNA TILL. MA1050 Matte Grund Vuxenutbildningen Dennis Jonsson

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

4-6 Trianglar Namn:..

Innehåll. Relationer mellan klasser Operatoröverlagring. Static-medlemmar. Const- och referensmedlemmar. Const medlemsfunktioner

1. Frekvensfunktionen nedan är given. (3p)

konstanterna a och b så att ekvationssystemet x 2y = 1 2x + ay = b 2 a b

Föreläsning 5: Rekursion

Från min. klass INGER BJÖRNELOO

729G04 - Hemuppgift, Diskret matematik

Tentamen. Makroekonomi NA0133. Juni 2016 Skrivtid 3 timmar.

Distribuerade Informationssystem VT-04

Modul 6: Integraler och tillämpningar

Kapitel 6. f(x) = sin x. Figur 6.1: Funktionen sin x. 1 Oinas-Kukkonen m.fl. Kurs 6 kapitel 1

För alla uppgifter på tentan gäller: Man får använda både standard-c++ (som till exempel har pekare som anges med * och objekt som skapas med new) och

Mål Blå kurs Röd kurs

Kompilatorer och interpretatorer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Volymer av n dimensionella klot

Webb-bidrag. Sök bidrag på webben Gäller från

Datorövning 2 Statistik med Excel (Office 2007, svenska)

Två konstiga klockor

Riktlinjer - Rekryteringsprocesser inom Föreningen Ekonomerna skall vara genomtänkta och välplanerade i syfte att säkerhetsställa professionalism.

Matematik. Bedömningsanvisningar. Vårterminen 2009 ÄMNESPROV. Delprov B ÅRSKURS

Övningar Dag 2 En första klass

PROGRAMMERING A VB6 UTVECKLINGSVERKTYGET VISUAL BASIC

Facit åk 6 Prima Formula

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Utveckla arbetsmiljö och verksamhet genom samverkan

Arbeta bäst där du är Dialect Unified Mi

7. SAMHÄLLSORIENTERING ÅK 5

Skriva B gammalt nationellt prov

Varför är det så viktigt hur vi bedömer?! Christian Lundahl!

Programmering A. Johan Eliasson

Övningshäfte Algebra, ekvationssystem och geometri

Tentamen I a och I b. Personlighet, hälsa och socialpsykologi, PC1245, Delkurs 1 Personlighet och hälsa Personlighet och Hälsa, PC1205 Helfart, vt 10

TIMREDOVISNINGSSYSTEM

Hävarmen. Peter Kock

Tentamen OOP

ELEV- HANDLEDNING (Ansökan via webben)

Möbiustransformationer.

Väga paket och jämföra priser

HT 2011 FK2004 Tenta Lärare delen 4 problem 6 poäng / problem

Praktisk programmering

Gissa det hemliga talet

Tentamensdeltagare från Dataekonomutbildningen, Textilekonomutbildningen och Affärsinformatikutbildningen.

Sammanfattning av kursdag 2, i Stra ngna s och Eskilstuna

För dig som är valutaväxlare. Så här följer du reglerna om penningtvätt i din dagliga verksamhet INFORMATION FRÅN FINANSINSPEKTIONEN

Thomas Padron-Mccarthy Datateknik A, Programmering grundkurs, 7.5 hp (DT ) Antal svarande = 7. Svarsfrekvens i procent = 17.

Kängurun Matematikens hopp Benjamin 2006 A: B: C: D: E:

x 2 + px = ( x + p 2 x 2 2x = ( x + 2

TT091A, TVJ22A, NVJA02 By, Pu, Ti. 50 poäng

Repetition av cosinus och sinus

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

Del 1, trepoängsproblem

Laboration 1. I. Matlabs fönster, hjälp, variabler och enkla beräkningar. Introduktion

PDA-applikationer med.net

Exempel. Rekursion. Iterativ motsvarighet. fakultet.c. fibonacci.c Fibonaccisekvensen definieras som följer ƒ 0 =0, ƒ 1 =1, ƒ i+1 =ƒ i +ƒ i-1, i=1,2,

Presentationsövningar

Instruktioner för beställning och kontoadministration för abonnenter av inlästa läromedel

Klinisk omvårdnad: Somatisk hälsa, ohälsa och sjukdom.

Institutionen för matematik Envariabelanalys 1. Jan Gelfgren Datum: Fredag 9/12, 2011 Tid: 9-15 Hjälpmedel: Inga (ej miniräknare)

Tentamen i matematisk statistik (9MA241/9MA341/LIMAB6, STN2) kl 08-13

Konsten att multiplicera (stora) heltal

Transkript:

1 of 7 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen lördag 28 februari 2015 Gäller som tentamen för: DT1029 Datateknik A, Programmering grundkurs, provkod 0100 DT1030 Datateknik A, Tillämpad datavetenskap, provkod 0410 DT1006 Datateknik A, Programmering C, distans, provkod 0100 Hjälpmedel: Inga hjälpmedel. Poängkrav: Maximal poäng är 40. För godkänt betyg (3 respektive G) krävs 20 poäng. Resultat och lösningar: Återlämning av tentor: Examinator och jourhavande: Meddelas via e-post senast lördag 21 mars 2015. Efter att resultatet meddelats kan tentorna hämtas på universitetets centrala tentamensutlämning. Thomas Padron-McCarthy, telefon 070-73 47 013. Skriv tydligt och klart. Lösningar som inte går att läsa kan naturligtvis inte ge några poäng. Oklara och tvetydiga formuleringar kommer att misstolkas. Skriv den personliga tentamenskoden på varje inlämnat blad. Skriv inte namn eller personnummer på bladen. Skriv bara på en sida av papperet. Använd inte röd skrift. Antaganden utöver de som står i uppgifterna måste anges. Skriv gärna förklaringar om hur du tänkt. Även ett svar som är fel kan ge poäng, om det finns med en förklaring som visar att huvudtankarna var rätt. LYCKA TILL!

2 of 7 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator Associativitet Högsta Unära postfixoperatorer (), [], ->,., ++, -- vänster Unära prefixoperatorer!, ++, --, +, -, *, &, sizeof, (typ) höger Multiplikation mm *, /, % vänster Addition mm +, - vänster Jämförelser <, <=, >=, > vänster Likhetsjämförelser ==,!= vänster Logiskt OCH && vänster Logiskt ELLER vänster Lägsta Tilldelning =, +=, -=, *=, /=, %= höger

3 of 7 Några användbara biblioteksfunktioner stdlib.h stdio.h string.h ctype.h math.h int rand(void); void srand(unsigned int seed); void *malloc(size_t size); void *realloc(void *ptr, size_t size); void free(void *ptr); void exit(int status); void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)); FILE *fopen(const char *path, const char *mode); int fclose(file *stream); int getc(file *stream); int getchar(void); int ungetc(int c, FILE *stream); char *fgets(char *s, int size, FILE *stream); char *gets(char *s); int putc(int c, FILE *stream); int printf(const char *format,...); int fprintf(file *stream, const char *format,...); int sprintf(char *str, const char *format,...); int snprintf(char *str, size_t size, const char *format,...); int scanf(const char *format,...); int fscanf(file *stream, const char *format,...); int sscanf(const char *str, const char *format,...); size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); size_t strlen(const char *s); char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t n); int strcmp(const char *s1, const char *s2); int strncmp(const char *s1, const char *s2, size_t n); char *strcat(char *dest, const char *src); char *strncat(char *dest, const char *src, size_t n); char *strstr(const char *haystack, const char *needle); void *memmove(void *dest, const void *src, size_t n); int isalnum(int c); int isalpha(int c); int isblank(int c); int isdigit(int c); int islower(int c); int isprint(int c); int ispunct(int c); int isspace(int c); int isupper(int c); double sqrt(double x); double pow(double x, double y);

4 of 7 Uppgift 1 (1 p) Vilka värden har följande C-uttryck? a) 4-3 + 2-1 b) 4-2 * 3 + 1 c) 4-2 * 3+1 d) 4 * (3 - (2-1)) Uppgift 2 (2 p) Variabeln a är en array med tre heltal. Variablerna b och c är av typen int. Vilka värden har variablerna efter att följande kod har körts? a[0] = 0; a[1] = 0; a[2] = 0; b = a[1]; c = a[2] + b; a[b] = 10; for (b = 0; b < 3; ++b) a[b] = b * 2 + 1; for (b = 0; b < 3; ++b) a[b] = b + 1; for (b = 0; b < 70; ++b) c = c; b = a[0] + a[1]; Uppgift 3 (4 p) Regeringen har beslutat att förenkla reglerna för hur mycket skatt man ska betala. De nya reglerna är att inkomster under 100000 kronor per år är skattefria. För inkomster över 100000 kronor per år ska man betala hälften av den del som är större än 100000 kronor. Exempel: En årsinkomst på 75000 kronor är skattefri. På en årsinkomst på 100002 kronor ska man betala 1 krona i skatt. På en årsinkomst på 200000 kronor ska man betala 50000 kronor i skatt. Skriv ett komplett C-program (med #include och allt) som upprepat låter användaren mata in en årsinkomst, och skriver ut hur mycket skatten blir. Om inkomsten noll matas in, ska programmet omedelbart avslutas. I den här och alla andra uppgifter på tentan gäller: Normalt är felhantering en stor del av ett program. Vad ska till exempel hända om användaren skriver Kalle när hon egentligen borde mata in ett tal? Här behövs dock ingen felhantering, om så inte särskilt efterfrågas i uppgiften. I den här och alla andra uppgifter på tentan gäller: Man kan strunta i detaljer som bara behövs just när man utvecklar konsolprogram i Visual Studio, som konstiga teckenkoder för ÅÄÖ, eller att fönstret med programkörningen försvinner när programmet avslutas.

5 of 7 Uppgift 4 (5 p) Variablerna i och j är av typen int. Här är tio korta kodavsnitt med loopar. Hur många stjärnor skrivs ut i vart och ett av dessa kodavsnitt? a) b) c) d) e) f) g) h) i) j) for (i = 0; i < 3; ++i) { for (i = 0; i <= 3; ++i) for (i = 0; i < 3; i++) { for (i = 3; i < 0; i++) i = 0; while (i < 3) { ++i; for (i = 0; i < 43*1000; i++) i = 7; do { i = 0; while (i > 0); for (i = 0; i < 3; i++) { ++i; for (j = 0; j < 3; ++j) { ++i; i = 0; while (i < 3) ++i;

6 of 7 Uppgift 5 (10 p) Här är ett koordinatsystem med några punkter och ett par cirklar. a) Skapa posttypen struct Cirkel, som beskriver en cirkel. Vi behöver lagra x- och y-koordinaterna för mittpunkten, och radien. b) Definiera en variabel av typen struct Cirkel och initiera den med data om den stora cirkeln i figuren i uppgiften ovan. c) Skriv funktionen area. Funktionen ska ta en cirkelpost (eller pekare till den) som argument och returnera dess area. Arean A av en cirkel ges av denna formel. π är ungefär 3.14159265358979323846. d) Skriv funktionen centrumavstand som tar två cirkelposter (eller pekare till dem) som argument, och returnerar avståndet mellan cirklarnas mittpunkter. Avståndet d mellan de två punkterna (x 1, y 1 ) och (x 2, y 2 ) kan beräknas med Pythagoras sats: d) Skriv funktionen avstand som tar två cirkelposter (eller pekare till dem) som argument, och returnerar avståndet mellan cirklarnas ytterkanter. Gör det genom att anropa funktionen centrumavstand, och sedan subtrahera de två cirklarnas radier. e) Vi vill provköra de tre funktionerna från deluppgifterna ovan. Skriv därför en main-funktion, som anropar dem med lämpliga argument, och skriver ut resultaten. I den här och alla andra uppgifter på tentan gäller: Om du behöver använda något från en tidigare uppgift eller deluppgift, till exempel utnyttja en datatyp eller anropa en funktion som skrevs i den tidigare uppgiften, så behöver du inte skriva samma kod igen. Du får också göra uppgiften även om du inte gjort den tidigare uppgiften.

7 of 7 Uppgift 6 (5 p) a) Skriv funktionen visa_array som tar en array med heltal som argument, och som skriver ut talen i arrayen på skärmen med 10 tal per rad. Om det behövs fler argument till funktionen än bara heltalsarrayen, så ha med dem också. b) Skriv en main-funktion som först låter användaren mata in 47 heltal till en array, och därefter använder funktionen visa_array för att skriva ut dem. Uppgift 7 (5 p) Skriv ett program som upprepat läser in kommandon från användaren. Beroende på vilket kommando som användaren gav, ska programmet göra olika saker: Om kommandot är avsluta eller quit ska programmet avslutas. Om kommandot är stjärnor ska programmet fråga efter antalet stjärnor (ett heltal) och sedan skriva ut så många stjärnor som talet anger. Om kommandot är plus ska programmet fråga efter två flyttal, och sedan skriva ut deras summa. Om kommandot är något annat ska ett felmeddelande skrivas ut. Uppgift 8 (8 p) a) Skriv ett program som slumpar fram data om ett slumpmässigt antal cirklar med slumpmässiga (men rimliga) data, och sparar dessa data på en fil. Man kan använda anropet rand() för att få ett stort, slumpmässigt heltal. Innan man använder den funktionen bör slumptalsgeneratorn initieras, till exempel med anropet srand(time(null)); b) Skriv ett annat program som läser filen ovan, och talar om vilken cirkel som har störst area, och hur stor den arean är. För både a- och b-uppgiften gäller att om filen inte går att öppna ska ett felmeddelande skrivas ut, och programmet ska avslutas.