Tentamen i Programmering grundkurs och Programmering C

Relevanta dokument
Tentamen i. Programmering i språket 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 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. 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 grundkurs och Programmering C

Tentamen i. Programmering i språket C

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

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C

Kompilatorer och interpretatorer

Strängar. Strängar (forts.)

Kompilatorer och interpretatorer

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

Standardfunktioner i C

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,

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

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

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

Tentamen ges för: Tentamensdatum: Tid:

Tentamen *:58/ID100V Programmering i C Exempel 3

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,

Databasteknik för D1, SDU1 m fl

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

Databasteknik för D1, SDU1 m fl

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

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

Tentamen i Programmering

Lämna in en ifylld kursvärdering tillsammans med tentan! Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl

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

Innehåll. Rela+oner mellan klasser Operatoröverlagring. Sta+c- medlemmar. Const- och referensmedlemmar. Const medlemsfunk+oner. friend

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

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

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

Planering Programmering grundkurs HI1024 HT 2014

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Föreläsning 13. In- och utmatning

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

HI1024 Programmering, grundkurs TEN

Systemnära programmering Tentamen. Systemnära programmering, 7.5hp 5 november 2012

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

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Pekare och arrayer. Indexering och avreferering

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

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,

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Dagens föreläsning. Specialtecken. Mer om printf. Formateringssträngar. Mer om scanf. Programmeringsteknik för Ingenjörer VT05

Föreläsning 11. Strängar

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

HI1024 Programmering, grundkurs TEN

TDIU01 - Programmering i C++, grundkurs

PDA-applikationer med.net

Grundläggande programmering med C# 7,5 högskolepoäng

2 Pekare och dynamiska variabler.

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

Klassdeklaration. Metoddeklaration. Parameteröverföring

OOP Tentamen

C-programmering. Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Programmeringsteknik med C och Matlab

Enkla datatyper minne

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Tentamen i Grundläggande programmering STS, åk

Planering Programmering grundkurs HI1024 HT data

i LabVIEW. Några programmeringstekniska grundbegrepp

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

C++ Slumptalsfunktioner + switch-satsen

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Planering Programmering grundkurs HI1024 HT TIDAA

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

tentaplugg.nu av studenter för studenter

Föreläsning 4. Val, boolska värden, läsbarhet, osv

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

Parameteröverföring. Exempel. Exempel. Metodkropp

HI1024 Programmering, grundkurs TEN

TDDC77 Objektorienterad Programmering

SP:PROG3 HT12 Tenta

TENTAMEN. Luleå tekniska universitet

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

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Programmeringsteknik med C och Matlab

C-programmering, föreläsning 2 Jesper Wilhelmsson

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Föreläsning 7 Strängar

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Beräkningsvetenskap föreläsning 2

Transkript:

1 of 6 Ö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 torsdag 16 januari 2014 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 23 poäng. För den som följt campuskursen hösten 2013 ger varje i tid inlämnad inlämningsuppgift med deadline en extra poäng. Den som inte gått campuskursen hösten 2013 får dessa (tre) extrapoäng ändå. Resultat och lösningar: Återlämning av tentor: Examinator och jourhavande: Meddelas via e-post eller på kursens hemsida, http://basen.oru.se /kurser/c/2013-2014-p2/, senast torsdag 6 februari 2014. 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 6 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 6 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 6 Uppgift 1 (1 p) Vilka värden har följande C-uttryck? a) 1 + 1 * 1 + 1 b) 1+1 * 1+1 c) 1-1 / (1 + 1) d) 1.0-1.0 / (1.0 + 1.0) Uppgift 2 (2 p) Variablerna a, b, c och d är av typen int. Vilka värden har variablerna efter att följande kod har körts? a = 1; b = 2; c = a + b; if (a > b) d = 1; else d = 2; while (a < c) { d = d + a; a = a + 1; if (a > c) d = 100; } Uppgift 3 (4 p) Skriv ett komplett C-program (med #include och allt) som läser in rader, med ett ord på varje rad, ända tills användaren matar in ordet klar. Därefter ska programmet tala om hur många gånger användaren skrev vart och ett av orden luftpistol och godis. Ord med stora bokstäver, som Godis, behöver inte räknas. Man kan förutsätta att användaren aldrig skriver några mellanslag, utan bara ett ord per rad. I den här och alla andra uppgifter på tentan gäller: Normalt ska man aldrig använda funktionen gets, utan i stället till exempel fgets. Här kan du dock använda gets. 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.

5 of 6 Uppgift 4 (3 p) Tärningar finns i många varianter, med olika antal sidor, inte bara sexsidiga. Nu ska vi simulera en tärning. Skriv ett komplett C-program (med #include och allt) som först läser in ett heltal som anger antalet sidor på tärningen. Sen ska programmet "slå tärningen" och skriva ut resultatet. Om det till exempel är en 10-sidig tärning, blir resultatet ett heltal mellan 1 och 10 (inklusive gränserna). Ledtråd: Använd anropet rand() för att få ett stort, slumpmässigt heltal. Innan man kan använda den funktionen, bör slumptalsgeneratorn initieras, till exempel med anropet srand(time(null)); Scenario till de följande uppgifterna Vi vill arbeta med komplexa tal. Ett komplext tal består av en realdel och en imaginärdel, som kan lagras som två vanliga flyttal. Exempelvis kan det komplexa talet 7.4 + 2i lagras som de två talen 7.4 och 2.0. Uppgift 5 (1 p) Skapa datatypen struct Komplex, som ska användas för att representera ett komplext tal. Uppgift 6 (1 p) Definiera en variabel som har datatypen struct Komplex, och initiera den med det komplexa talet 7.4 + 2i. Uppgift 7 (3 p) Vi vill kunna visa komplexa tal på skärmen. Skriv därför funktionen visa_komplex, som skriver ut ett komplext tal. Ett tal som 7.4 + 2i kan skrivas ut till exempel som 7.40 + 2.00i. Om real- eller imaginärdelen är noll, ska den delen inte skrivas ut, så exempelvis 7.4 + 0i kan skrivas ut till exempel som 7.40. Talet 0 + 3.14i kan skrivas ut som 3.14i. Om både real- och imaginärdelen är noll, ska realdelen skrivas ut. Uppgift 8 (3 p) Skriv funktionen las_komplex, som läser in ett komplext tal. Funktionen ska skriva ut lämpliga ledtexter på standardutmatningen, och läsa in data från standardinmatningen (som normalt är kopplad till tangentbordet). Uppgift 9 (2 p) När man adderar två komplexa tal, adderas realdelarna för sig och imaginärdelarna för sig. Skriv funktionen komplex_plus, som tar två komplexa tal som argument, och som returnerar deras summa som ett komplext tal.

6 of 6 Uppgift 10 (3 p) Absolutbeloppet av ett komplext tal a + bi kan i det komplexa talplanet tolkas som avståndet från origo till punkten (a, b), och beräknas med Pythagoras sats: kvadratroten ur summan av kvadraterna på a och b. Skriv funktionen belopp, som tar ett komplext tal som argument, och returnerar absolutbeloppet som ett flyttal. Uppgift 11 (3 p) Skriv en main-funktion som läser in två komplexa tal med las_komplex, adderar dem med komplex_plus, och skriver ut summan med visa_komplex. Till sist ska programmet skriva ut summans absolutbelopp. 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. Uppgift 12 (3 p) Skriv funktionen komplex_summering, som summerar en hel array med komplexa tal. Den ska ta två argument: en array med komplexa tal, och ett heltal som anger antalet tal i arrayen. Den ska returnera summan av alla talen, som också är ett komplext tal. Uppgift 13 (3 p) Vi vill provköra funktionen komplex_summering från uppgiften ovan. Skriv därför en main-funktion som skickar en array med tre komplexa tal till funktionen, med några lämpliga värden, och kontrollerar att resultatet blir det förväntade. Om det resultatet inte blir det förväntade, ska funktionen skriva ut ett tydligt felmeddelande. Uppgift 14 (4 p) Skriv ett C-program som läser in komplexa tal med hjälp av funktionen las_komplex, och sparar talen på en fil. Inmatningen ska avslutas när användaren matar in talet 0 + 0i. Det talet ska inte sparas på filen. Om filen inte går att öppna, ska ett felmeddelande skrivas ut, och programmet ska avslutas. Uppgift 15 (4 p) Skriv ett C-program som läser filen från uppgiften ovan och skriver ut summan av de komplexa talen som finns på filen. Om filen inte går att öppna, ska ett felmeddelande skrivas ut, och programmet ska avslutas.