2004-03-10.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som ritar ut en åtthörning på skärmen. Åtthörningen skall dock se ut enligt exemplen nedan och det är så att användaren skall bestämma storleken på polygonen. Ingen felhantering krävs. Detta är en typisk kemiuppgift (O är väl beteckningen för syre). Körexempel 1: Mata in storleken: 1 +-+ +-+ Körexempel 2: Mata in storleken: 2 +--+ +--+ Körexempel 3: Mata in storleken: 3 +---+ +---+ Krav: Programmet skall vara skrivet på ett programtekniskt vettigt sätt.
2004-03-10.kl.08-13 Uppgift 2 På en fil som heter OMFORMATERAD.TXT finns en text. Tyvärr har denna text blivit lite omformaterad då den flyttades till an ny dator. I texten har det på ställen där det tidigare endast var ett blanktecken smugit in sig ett flertal blanktecken. På andra ställen har det istället för ett vagnreturtecken (RETURN) smugit in sig både blanktecken och extra vagnreturer. Din uppgift blir att skriva ett program som läser igenom den omformaterade filen och skapar en korrekt fil (som skall heta FORMATERAD.TXT). D.v.s. du skall leta reda på alla sekvenser av blanktecken och ersätta dessa med endast ett blanktecken och alla sekvenser där det finns flera vagnreturer i rad skall ersättas med ett vagnreturtecken.
2004-03-10.kl.08-13 Uppgift 3 Du har ett givet huvudprogram som heter listcopier.adb. Detta vill använda sig av ett paket som skall heta Listhandling. I detta paket (som du skall skriva) skall det finnas de saker som fattas i huvudprogrammet. Den datastruktur som skall skapas skall vara uppbyggd av pekare (en enkellänkad lista) och den skall se ut på följande sätt. A B C D Krav: Du får INTE ändra på huvudprogrammet. I paketet skall följande saker skapas: En datatyp som heter List_Type som representerar ovanstående. A-D är heltal som motsvarar antalet protoner i olika atomer. Olika antal protoner anger som ni vet vilket grundämne man har att göra med. En procedur, Insert, som skall stoppa in ett protonantal på rätt plats (sorterat i storleksordning med det minsta sist) i listan. En procedur, Copy, som kopierar en lista så att man får en identisk kopia. När man tar bort en av listorna skall inte den andra påverkas. En procedur, Delete, som tar bort en hel lista (utan att minnesläckor uppstår). En procedur, Put, som skriver ut listan (för ovanstående exempel: A B C D).
2004-03-10.kl.08-13 Uppgift 4 Som ni vet har just Vasaloppet avgjorts. I år vann en norrman (för första gången sen 1971). Under Vasaloppet bjuds det på en enorm mängd blåbärssoppa och andra kemiska substanser. För att få fram lite statistik har Vasaloppsarrangörerna bestämt sig för att du skall skriva ett program där varje deltagare som får något frivilligt skall kunna mata in sitt namn, vilket kön de tillhör samt vad och hur många av denna sort de ätit (de vill endast ha följande alternativ: bulle, blåbärssoppa eller kaffe). Om det är så att de ätit flera saker får de mata in detta i flera omgångar. Du skall skapa en procedur Get som läser in ovanstående data och lagrar detta i en post. Namnet skall lagras i en sträng som är 20 tecken lång. Vad de ätit skall lagras i en sträng som är 12 tecken lång. Get skall ENDAST ha en parameter och det är posten där datat är lagrat. Du skall även skriva en procedur Put som skriver ut postens innehåll. Det skall se snyggt ut det du skriver ut. Även din Put får ENDAST ha en parameter, d.v.s. posten. Krav 1: Inga globala variabler får användas lokalt i underprogrammen utan att skickas med som parametrar. Skriv dessutom ett huvudprogram som läser in en persons data och skriver ut det på skärmen igen. Krav 2: Tänk nu på att det även finns norrmän med i Vasaloppet. Detta kräver FULL FELHANTERING vad det gäller inmatningen av antal enheter man fått. För er som eventuellt kommer från Norge vill jag också påpeka att det finns svenskar med i Vasaloppet. :-) Körexempel: Välkommen! Mata in ditt namn: Ambjörn Aukland Vilken kön tillhör du? Man Vad har du ätit/druckit? Blåbärssoppa Hur många enheter av Blåbärssoppa har du fått? Fyra FEL! Måste skriva in med siffror. Hur många enheter av Blåbärssoppa har du fått? 4 Följande data har du matat in: Namn: Ambjörn Aukland Kön: Man Mat/dryck: Blåbärssoppa Antal: 4
2004-03-10.kl.08-13
2004-03-10.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som skall kunna läsa in ett antal maträtter från en fil som heter MAT.TXT och lagra alla dessa i ett fält (eng. array). Man vet att det maximalt finns 100 maträtter på filen och att varje maträtt bara består av ett ord, namnet på rätten, samt ett heltal, som anger matlagningstiden. Varje maträtt står på en egen rad i textfilen där matlagningstiden står först, sen ett blanktecken och resten av raden är själva maträtten. Ingen maträtt består av mer än 40 tecken. Din uppgift är att läsa in alla de maträtter som finns i filen och sortera dessa. Sorteringen skall göras så att man i första hand sorterar efter matlagningstiden och i andra hand efter maträttens namn. När detta är klart skall de sorterade maträtterna skrivas ut på skärmen. Antag att filen innehåller: 20 Fluffkyckling 13 Yttermakaroner 10 Silltårta 23 Istergryta 42 Kalkongröt Körexempel: 10 Silltårta 13 Yttermakaroner 20 Fluffkyckling 23 Istergryta 42 Kalkongröt
2004-03-10.kl.14-19 Uppgift 2 Du har ett givet huvudprogram som heter mergeprinter.adb. Detta vill använda sig av ett paket som skall heta Listhandling. I detta paket (som du skall skriva) skall det finnas de saker som fattas i huvudprogrammet. Den datastruktur som skall skapas skall vara uppbyggd av pekare (en enkellänkad lista) och den skall se ut på följande sätt. A B C D Krav: Du får INTE ändra på huvudprogrammet. I paketet skall följande saker skapas: En datatyp som heter List_Type som representerar ovanstående. A-D är heltal som motsvarar årtal. De olika årtalen representerar i sin tur olika kända fysiker. En procedur, Insert, som skall stoppa in ett årtal på rätt plats (sorterat i storleksordning med det största sist) i listan. En procedur, Delete, som tar bort en hel lista (utan att minnesläckor uppstår). En procedur, Put, som skriver ut två sorterade listor som om de vore en sorterad lista, d.v.s. proceduren skall få in två listor och sen skriva ut dem så att alla årtal i båda listorna skrivs ut i sorterad ordning. Listorna får inte ändras. Antag att vi har listorna som innehåller (A, D, E) och (B, C, F) där A-F motsvarar tal i motsvarande sorteringordning. I detta fall skall Put skriva ut talen som motsvarar: A B C D E F.
2004-03-10.kl.14-19 Uppgift 3 Som ni vet har just Vasaloppet avgjorts och där måste man ju ha god fysik. I år vann en norrman (för första gången sen 1971). Under Vasaloppet bjuds det på en enorm mängd blåbärssoppa och annat. För att få fram lite statistik har Vasaloppsarrangörerna bestämt sig för att du skall skriva ett program där varje deltagare som får något frivilligt skall kunna mata in sitt namn, vilket kön de tillhör samt vad och hur många av denna sort de ätit (de vill endast ha följande alternativ: bulle, blåbärssoppa eller kaffe). Om det är så att de ätit flera saker får de mata in detta i flera omgångar. Du skall skapa en procedur Get som läser in ovanstående data och lagrar detta i en post. Namnet skall lagras i en sträng som är 20 tecken lång. Vad de ätit skall lagras i en sträng som är 12 tecken lång. Get skall ENDAST ha en parameter och det är posten där datat är lagrat. Du skall även skriva en procedur Put som skriver ut postens innehåll. Det skall se snyggt ut det du skriver ut. Även din Put får ENDAST ha en parameter, d.v.s. posten. Krav 1: Inga globala variabler får användas lokalt i underprogrammen utan att skickas med som parametrar. Skriv dessutom ett huvudprogram som läser in en persons data och skriver ut det på skärmen igen. Krav 2: Tänk nu på att det även finns norrmän med i Vasaloppet. Detta kräver FULL FELHANTERING på indatat som gäller vilket kön man tillhör. För er som eventuellt kommer från Norge vill jag också påpeka att det finns svenskar med i Vasaloppet. :-) Körexempel: Välkommen! Mata in ditt namn: Ambjörn Aukland Vilken kön tillhör du? Norrman FEL! Du måste skriva Man eller Kvinna. Vilken kön tillhör du? Man Vad har du ätit/druckit? Blåbärssoppa Hur många enheter av Blåbärssoppa har du fått? 4 Följande data har du matat in: Namn: Ambjörn Aukland Kön: Man Mat/dryck: Blåbärssoppa Antal: 4
2004-03-10.kl.14-19 Uppgift 4 Du skall skriva ett program som ritar ut ett liggande plustecken på skärmen. Plustecknet skall dock se ut enligt exemplen nedan och det är så att användaren skall bestämma storleken på plusset. Ingen felhantering krävs. Detta är en typisk fysikuppgift (plustecknet har på grund av gravitationen trillat omkull). Körexempel 1: Mata in storleken: 1 / \ + + Körexempel 2: Mata in storleken: 3 / \ / \ / \ + + Krav: Programmet skall vara skrivet på ett programtekniskt vettigt sätt.
2004-03-11.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Du skall leta reda på det största primtalet i filen TAL.TXT och skriva ut det på skärmen. Ett primtal är per definition ett heltal som endast är jämnt delbart med sig självt och talet 1. Per definition är det minsta primtalet 2. I filen står varje tal på en egen rad och det är inget annat på filen. Alla tal ryms i en vanlig heltalsvariabel. Det finns inga extra tomma rader i filen. Om filen innehåller talen 2, 5, 13 och 7 (på separata rader förstås) skall resultatet vara: Det största primtalet i filen är 13. Tips 1: Man skall alltid tänka på att filer inte behöver innehålla några data (de kan vara tomma). Givetvis skall programmet då skriva ut att det inte fanns något primtal. Tips 2: Dra slutsatser av det resultat du får.
2004-03-11.kl.08-13 Uppgift 2 Som ni vet har just Vasaloppet avgjorts. I år vann en norrman (för första gången sen 1971). Under Vasaloppet bjuds det på en enorm mängd blåbärssoppa och annat. För att få fram lite statistik har Vasaloppsarrangörerna bestämt sig för att du skall skriva ett program där varje arrangör som gör något frivilligt skall kunna mata in sitt namn, vilket kön de tillhör samt vad och hur mycket av detta de gjort (de vill endast ha följande alternativ: matutdelning, tidtagning eller kranskulla). Om de gjort flera saker får de mata in detta i flera omgångar. Ett specialfall är att man endast kan vara kranskulla två gånger (en för männen och en för kvinnorna). Alla övriga delar kan utföras flera gånger under samma tävling. Du skall skapa en procedur Get som läser in ovanstående data och lagrar detta i en post. Namnet skall lagras i en sträng som är 20 tecken lång. Vad de ätit skall lagras i en sträng som är 12 tecken lång. Get skall ENDAST ha en parameter och det är posten där datat är lagrat. Du skall även skriva en procedur Put som skriver ut postens innehåll. Det skall se snyggt ut det du skriver ut. Även din Put får ENDAST ha en parameter, d.v.s. posten. Skriv dessutom ett huvudprogram som läser in en persons data och skriver ut det på skärmen igen. Krav 1: Inga globala variabler får användas lokalt i underprogrammen utan att skickas med som parametrar. Krav 2: Tänk nu på att vissa arrangörer är från Dalarna. Detta kräver FULL FELHANTERING på indatat som gäller vilket kön man tillhör. (Vissa tror att examinator också är från Dalarna, men är han det? :-) Körexempel: Välkommen! Mata in ditt namn: Matte Larsdotter Vilken kön tillhör du? Fru FEL! Du måste skriva Man eller Kvinna. Vilken kön tillhör du? Kvinna Vad har du haft för uppgift? Kranskulla Hur många enheter av Kranskulla har du utfört? Tolv FEL! Man måste mata in talet med siffror. Hur många enheter av Kranskulla har du utfört? 12 FEL! Man kan inte vara Kranskulla mer än 1 gång per år. Hur många enheter av Kranskulla har du utfört? 1 Följande data har du matat in: Namn: Matte Larsdotter Kön: Kvinna Uppgift: Kranskulla Antal: 1
2004-03-11.kl.08-13 Uppgift 3 Du skall skriva ett program som ritar ut ett plustecken på skärmen. Plustecknet skall dock se ut enligt exemplen nedan och det är så att användaren skall bestämma storleken på plusset. Ingen felhantering krävs. Detta är en typisk matteuppgift (plus). Körexempel 1: Mata in storleken: 1 +-+ +--+ +--+ +-+ Körexempel 2: Mata in storleken: 2 +--+ +----+ +----+ +--+ Körexempel 3: Mata in storleken: 3 +---+ +------+ +------+ +---+ Krav: Programmet skall vara skrivet på ett programtekniskt vettigt sätt.
2004-03-11.kl.08-13 Uppgift 4 Du har ett givet huvudprogram som heter printerchoice.adb. Detta vill använda sig av ett paket som skall heta Listhandling. I detta paket (som du skall skriva) skall det finnas de saker som fattas i huvudprogrammet. Den datastruktur som skall skapas skall vara uppbyggd av pekare (en enkel bakåtlänkad lista) och den skall se ut på följande sätt. A B C D Krav: Du får INTE ändra på huvudprogrammet. I paketet skall följande saker skapas: En datatyp som heter List_Type som representerar ovanstående. A-D är tal i Fibonacciserien. En procedur, Insert, som skall stoppa in ett talen sist i listan (därför är det praktiskt att ha en bakåtlänkad lista där man ju pekar direkt på det sista elementet i listan). Listan blir på detta sätt inte sorterad, men det är vi inte ute efter. I exemplet ovan är talet A först instoppat i listan, följt av B, sen C och sist D. En procedur, Delete, som tar bort en hel lista (utan att minnesläckor uppstår). En procedur, Put, som skriver ut listan framifrån (för ovanstående exempel: A B C D) eller bakifrån (D C B A). Vilken ordning som skall användas skickas med till Put som ett sanningsvärde (Boolean). Om inget sanningsvärde skicka med skall listan skrivas ut framifrån.