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

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

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

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

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

Programmering Grundkurs (HI1900) Teoridel

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

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

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

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

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

TDIU01 - Programmering i C++, grundkurs

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

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

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,

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

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

Programmering i C, 7,5 hp

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2

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

Repetition C-programmering

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 tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Planering Programmering grundkurs HI1024 HT 2014

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:

*Pekarvärden *Pekarvariabler & *

Introduktion C-programmering

HI1024 Programmering, grundkurs TEN

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

Enkla datatyper minne

Tentamen i Programmering grundkurs och Programmering C

Objektorienterad Programmering (TDDC77)

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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

HI1024 Programmering, grundkurs TEN

2 Pekare och dynamiska variabler.

Föreläsning 10. Pekare (Pointers)

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

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Tentamen i Programmering grundkurs och Programmering C

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

HI1024 Programmering, grundkurs TEN

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

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

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

Planering Programmering grundkurs HI1024 HT data

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

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

Tentamen *:58/ID100V Programmering i C Exempel 3

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

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

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

Parameteröverföring. Exempel. Exempel. Metodkropp

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

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

4 Sammansatta datatyper

Uttryck, satser och strömhantering

En kort text om programmering i C.

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,

Planering Programmering grundkurs HI1024 HT TIDAA

Klassdeklaration. Metoddeklaration. Parameteröverföring

HI1024 Programmering, grundkurs TEN

Loopar och datatyper. Föreläsning 3

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

Tentamen i Programmering grundkurs och Programmering C

Loopar och datatyper. Föreläsning 3

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

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

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

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

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

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

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

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

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Några småsaker. switch break, continue, goto Kommentarer

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

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

Tecken & Strängar. Kapitel 7

Att använda pekare i. C-kod

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

Föreläsning 13. In- och utmatning

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Pekare och arrayer. Indexering och avreferering

Tentamen i. Programmering i språket C

Uppgift 1 (grundläggande konstruktioner)

HI1024 Programmering, grundkurs TEN

Tentamen i. Programmering i språket C

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg

Transkript:

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman inom C programmering. Varje fråga är uppbyggd på ett påstående. Påståendet är antingen helt korrekt och är då alltså SANT, eller så finns minst ett allvarligt fel i påståendet och då är alltså påståendet FALSKT. Man kryssar det man tror på och om man kryssar rätt får man 1 poäng. Kryssar man fel får man 1 poäng. Det är alltså riskabelt att chansa. Man har alltid alternativet att kryssa AVSTÅR som då ger 0 poäng. Del A kan inte ge mindre än 0 poäng totalt. (Om man har mer fel är rätt får man alltså inga negativa poäng.) Del B innehåller 13 traditionella frågor som ni ska svara skriftligt på. Totalt antal poäng är 26. Gränsen för E är 13 och gränsen för Fx är 11. KTHs allämnna regler för examination gäller. Del A. Påstående 1. Då ett C program kompileras så översätts källkoden till maskinkod som är körbar för en speciell datortyp. Olika fel kan då uppstå, lexikala, syntaktiska och logiska. Lexikala och syntaktiska fel kan inte rättas av kompilatorn, men vissa typer av logiska fel kan rättas. Programmeraren behöver då inte själv rätta dessa fel, det sker automatiskt. Påstående 2. Ett C program som innehåller kompileringsfel kan köras men det går mycket långsammare. Påstående 3. Pekare i C är variabler som innehåller adresser till andra variabler, det går alltså teoretiskt att lagra ett pekares värde i en vanlig heltalsvariabel (int eller long int). Påstående 4. Om en array har 10 platser numreras dessa från 0 till 9. Om man försöker skriva till plats nr 10 (som ju inte finns) så börjar det om från plats 0 igen, det vill säga det värde man försöker skriva in på plats 10 hamnar på plats 0 istället. Påstående 5. Antag att vi har deklarationerna struct person char namn[20]; int alder; ; struct person p1, p2; Om vi då lägger in data i p1 och skriver p2 = p1; så kopieras data i p1 in på de rätta platserna i p1. Vi behöver då alltså inte använda strcpy() för kopiering av strängfältet namn från p1 till p2.

Påstående 6. Strängar, så som de hanteras i biblioteket string.h, är representerade som en array av characters (char) som avslutas med tecknet med koden 0. Man kan förstås bilda arrayer av characters som inte avslutas med tecknet med koden 0, men dessa arrayer kommer då inte att kunna hanteras som strängar av biblioteket string.h. Man kan till och med hävda att de noga taget inte kan kallas strängar, i strikt mening, utan att de då bara är arrayer av characters. Påstående 7. En funktion som anropas i C kan aldrig ändra på värdet av sina parametrar så att det märks utanför funktionen. Däremot kan man skicka adresser till saker som ligger utanför funktionen som funktionen kan ändra på, det kan då märkas utanför funktionen. Påstående 8. Förprocessordirektiv kan hjälpa oss att definera värden i ett C program som ska gälla överallt i programmet. Vi kan skriva #define MAX 10 så blir MAX lika med 10 i hela programmet. Vi kan också, i den efterföljande programkoden, skriva MAX = 20; så tilldelas MAX värdet 20 istället för 10, ungefär som en variabel. Påstående 9. Heltalsvariabler av typen int är normalt på 4 bytes (på en 32 bitarsdator), det betyder att de kan lagra heltal mellan ca 2 miljarder upp till +2 miljarder. Om man däremot deklarerar en variabel av typen unsigned int kan den lagra heltalsvärden i intervallet 0 till ca +4 miljarder. Påstående 10. Om man begär att en division med noll ska utföras avbryts normalt programkörningen och ett fel genereras, division by zero. Man kan dock undvika att programmet avbryts vid en division med noll om man ser till att den nolla man ska dividera med är inlagd i en flyttalsvariabel (float eller double), flyttalsvariabler har variabel precision vilket innebär att de aldrig riktigt har rätt värden. En division med noll blir då en division med något som nästan är noll och det kan gå igenom utan att programmet avbryts. Följande programkod kan alltså gå att köra: float x = 0.0; float y = 1.0/x;

Del B. Uppgift 11. (1p) Studera nedanstående program: int i,j; for(i=0;i<5;i++) for(j=0;j<i;j++) printf("(%d,%d) ",i,j); printf("\n"); Uppgift 12. (1p) Studera nedanstående program: char str[] = "ORVBA"; int i, pos = 0; for(i=0;i<5;i++) pos+=3; pos%=5; printf("%c", str[pos]); printf("\n"); Uppgift 13. (1p) Studera nedanstående program: int i, a[] = 3, 2, 4, 1, 0; int b[] = 3, 2, 4, 1, 0; for(i=0;i<=4;i++) printf("%d ", a[b[i]] ); printf("\n");

Uppgift 14. (1p) Studera nedanstående program: int f1(int a) a=10 a; printf("f1 %d\n",a); return a; f2(int x, int *py) int z; *py++; x++; printf("f2 %d %d\n", x, *py); z=f1(x+*py); int i=10,j=20; f2(i,&j); printf("main %d %d\n", i, j); Uppgift 15. (2p) Studera nedanstående program, det är tänkt att användas för att omvandla temperaturangivelser angivna i Celsius och Fahrenheit enligt formlerna f = 9/5*c+32 respektive c=5/9*(c 32). float c, f; int val = 0; while(val!=1 val!=2) printf("konvertera \n"); printf("1) c >f eller 2) f >c: "); scanf("%d",val); if(val==1) printf("c >f\n"); printf("ange c: "); scanf("%f", &f); printf("f: %f\n", 9/5*c+32); else

printf("f >c\n"); printf("ange f: "); scanf("%f", &f); printf("c: %f\n", 5/9*(f 32)); Programmet har fem felaktiga rader. Rätta dessa fel. Felen är av logisk karaktär så det genereras inga kompileringsfel, dock genereras en varning. Uppgift 16. (3p) Betrakta nedanstående program, det läser in 10 flyttal från en textfil. float flyttal[10]; int i=0,j; FILE * fp; fp = fopen ("flyttal.txt","r"); while(i<10)fscanf(fp,"%f",&flyttal[i++]); /*...*/ for(i=0;i<10;i++)printf("%f ", flyttal[i]); I positionen som är markerad med /*...*/, lägg till en sortering som är uppbyggd på följande sätt: 1. Läs in alla tal i en vektor (redan gjort i flyttal[10]). 2. Sortera genom att gå igenom hela arrayen och hitta största och minsta talet, placera det minsta först i arrayen och det största sist. 3. Utför steg 2 igen fast på den del av arrayen som blir kvar om man bortser från första och sista elementet. 4. Fortsätt så tills hela arrayen är sorterad. Uppgift 17. (1p) Man önskar utskriften 1 2 4 8 16 av programsnutten i=...; while(i<...) printf( %d, i); i=...; Fyll i C kod där det står punkter så att programsnutten ger det resultat som är önskat.

Uppgift 18. (2p) Skriv ett program som läser in enskilda tecken i alfabetet, a z, från tangentbordet. Varannan bokstav som matas in ska byta case, det vill säga om det är en stor bokstav så ska den bli liten och om det är en liten bokstav ska den bli stor. Resultatet ska skrivas ut på skärmen samtidigt med inmatningen. Ett körexempel: > a A > B B > 8 > C c > d d De fetmarkerade tecknena är de som användaren matar in. I steg tre ser vi att användaren matar in en 8:a, det är inte en bokstav, då kommer prompten (>) tillbaka igen tills användaren matar in ett tecken, då matar användaren in C som omvandlas till c. Uppgift 19. (2p.) I Del A förekom flera falska påståenden. Välj två av dessa falska påståenden och förklara vad som egentligen gäller i sammanhanget, det vill säga uttryck vad som skulle vara sant i sammanhanget och varför det är på det viset. Uppgift 20. (2p) Strängvändaren. Nedanstående program är tänkt att ta en sträng där ett ord lagras som användaren matar in. Programmet fungerar inte som det är tänkt. Förklara vad problemet är och rätta felet genom att skriva om väl valda rader. #include <string.h> char str[100]; int i,len; printf("str: "); gets(str); printf("\n"); len = strlen(str); printf("str: %s Len: %d\n\n", str, len); for (i=0;i<=len;i++)str[i]=str[len i]; printf("str: %s Len: %d\n", str, len); En provkörning: Str: Johnny Str: Johnny Len: 6 Str: Len: 6 Vi vill ju att sista utskriften ska vara Str: ynnhoj Len: 6