DSV A Procedurell programmering 5 poäng Tentamen 2002-12-04



Relevanta dokument
Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

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

Föreläsning 6: Introduktion av listor

OOP Objekt-orienterad programmering

Tentamen i Objektorienterad programmering

Visual Basic, en snabbgenomgång

Omtenta, Programmeringsteknisk översiktskurs, VT06

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen OOP

Chapter 3: Using Classes and Objects

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Björn Abelli Programmeringens grunder med exempel i C#

Översikt över Visual Basic

Objektorienterad programmering D2

Föreläsning 1 & 2 INTRODUKTION

Tentamen, EDAA20/EDA501 Programmering

SMD 134 Objektorienterad programmering

Föreläsning 4: Poster

Snabbguide Visma Compact API Version 5.1 Copyright Visma Spcs AB Visma Compact API

Att använda pekare i. C-kod

Lösningsförslag, tentamen FYTA11 Javaprogrammering

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

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

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Skizz till en enkel databas

Övningar Dag 2 En första klass

OOP Omtenta

Tentamen, EDA501 Programmering M L TM W K V

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Föreläsning 7. Träd och binära sökträd

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

5 Grundläggande in- och utmatning

Tentamen, EDAA10 Programmering i Java

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

Dugga Datastrukturer (DAT036)

Objektorienterad programmering i Java

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

Tentaupplägg denna gång

2. Registrera en ny medlem

Föreläsning 2: Avlusning och antilustekniker

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Tentamen TEN1 HI

trafiksimulering Intro OU5 trafiksimulering

DELPROV 1 I DATAVETENSKAP

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Laboration 1 Introduktion till Visual Basic 6.0

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,

"if"-satsen. Inledande programmering med C# (1DV402)

Tentamen ID1004 Objektorienterad programmering May 29, 2012

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Objektsamlingar i Java

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 27 maj 2008

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Uppgift 1 (Oläsliga krypterade meddelanden)

Institutionen för TENTAMEN CTH HT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Twincat: PLC Control

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Lektion 1 - Programmeringsteknik F1, ht 2003

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Föreläsning 4: Kombinatorisk sökning

Hur kör vi egentligen en undersökning om trafikanters beteende och nya hastighetsgränser utifrån en bussförares perspektiv?


ANONYMA TENTAMINA (FÖRDELAR) ÅSIKTSTORG:

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Handbok Treserva uppföljning delegeringar

FACKFÖRBUNDET ST DITT ARBETSPLATSFACK

UTBILDNINGSKATALOG KRISTIANSTAD 2015

Manual för punch-out handel via Göteborgsregionens kommunalförbund (GR) webbutik

Sätt att skriva ut binärträd

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

1. Motionen. Kultursekretariatet. Rapport Kulturupplevelser för regionens unga

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Användarmanual Skolrapport.se. Vårdnadshavare

Programmering för språkteknologer II, HT2014. Rum

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Så fungerar FLEXLINJEN. i Mölndal

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

VÅRTERMINEN 2016 VÄLKOMMEN TILL EN NY RIDTERMIN PÅ JUTAGÅRDENS RIDSKOLA HÄLSAS BÅDE NYA OCH "TROGNA" ELEVER. Ridskolestart:

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

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

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Transportnivån. Kommunikation mellan processer. Kommunikation mellan processer. Sockets och TCP. UDP (User Datagram Protocol) Checksumman

KOMPLETTERANDE HEMTENTAMEN TDDB53

Skapa test med fritextfrågor

Enkät Plantskolan Hammarby IF FF vinter 2015/ Har din son deltagit som? 2. I vilken åldersgrupp har din son deltagit?

TAIU07 Matematiska beräkningar med Matlab

Tentamen i Introduktion till programmering

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Programmeringsteknik med C och Matlab

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

Instruktioner för dig som ska söka till Mattekollo 2016

Transkript:

DSV A Procedurell programmering 5 poäng Tentamen 2002-12-04 Uppgift 1 3 poäng Vilka uppgifter ingår i programutveckling, dvs vilka faser bör man gå igenom när man utvecklar ett större program? Beskriv faserna kort. Se båda artiklarna! Uppgift 2 4 poäng Vad kommer att skrivas ut när nedanstående program exekveras (körs)? Redovisa dina beräkningar så har du möjlighet att få delpoäng även om hela lösningen inte är rätt! Public Sub Tentauppg2() Dim inttotal As Integer Dim intr As Integer Dim strtext As String inttotal = 5 strtext = "Uppgift 2 " For intr = 1 To 10 Step 4 inttotal = inttotal + 2 * (intr + inttotal) strtext = strtext & " Rond: " & intr & " Total: " & inttotal Next intr MsgBox strtext Select Case intr Mod 4 Case 0 MsgBox "Talet tillhör grupp A" Case 1 MsgBox "Talet tillhör grupp B" Case 2 MsgBox "Talet tillhör grupp C" Case Else MsgBox "Talet tillhör grupp D" End Select Utskrifter Uppgift 2 Rond: 1 Total: 17 Rond: 5 Total: 61 Rond: 9 Total: 201 Talet tillhör grupp B 1

Uppgift 3 7 poäng Vad blir resultatet när följande program (command1_click) exekverar? Redovisa dina beräkningar så har du möjlighet att få delpoäng även om hela lösningen inte är rätt! Private Sub Command1_Click() Dim intx As Integer, inty As Integer, intz As Integer Count1 10,intY MsgBox "intx = " & intx & "inty = " & inty Count2 intx, inty MsgBox "intx = " & intx & "inty = " & inty intz = Compare(intX,intY) If Zero(intZ) Then MsgBox "Det blev lika" Else MsgBox "Det blev olika" End If MsgBox "intx = " & intx & "inty = " & inty & "intz = " & intz Private Sub Count1(ByVal inta As Integer, ByRef intb as Integer) inta = inta + 15 intb = inta * 2 Private Sub Count2(ByRef inta As Integer, ByRef intb as Integer) inta = inta + 15 intb = intb * 2 Private Function Compare(ByVal intb As Integer, ByVal intc As Integer) As Integer intc = intb - intc Compare = intc End Function Private Function Zero(ByVal intc as Integer) As Boolean Dim blnflag As Boolean blnflag = False If intc = 0 Then blnflag= True Zero = blnflag OBS DENNA RAD SAKNADES I DET UTDELADE MATERIALET End Function Utskrifter: intx = 0 inty = 50 intx = 15 inty = 100 Det blev olika intx = 15 inty = 100 intz = -85 2

Uppgift 4 8 poäng Utanför skolor så får bilister inte köra fortare än 30km/tim dagtid. När polisen senast hade en trafikkotroll utanför en skola fann man att många körde alldeles för fort. Nu vill man ge Uppsala Nya Tidning information om dessa fortkörningar för att förhoppningsvis få andra att hålla fartgränserna. Skriv ett program som beräknar viss statistik som sedan kan lämnas till tidningen. Man vill mata in hastigheten för alla som kontrollerats samt få ut medelhastigheten. Dessutom vill man få reda på hur många som fick körkortet indraget, vilket görs om man kör 50km/tim eller mer på en 30-sträcka. Inläsningen görs via InputBox och utskrift om medelhastighet och indragna körkort görs med hjälp av MsgBox. Stoppvillkor vid inläsningen är när hastigheten som ges är ett negativt tal. Lösningsförslag Public Sub Tentauppg4() Dim snghastighet As Single, dblsumma As Double Dim intant As Integer, dblmedel As Single Dim intkörkort As Integer dblsumma = 0 'summan av alla hastigheter intant = 0 'antal kontrollerade bilister intkörkort = 0 'antal indragna körkort snghastighet = InputBox("Ge hastighet, negativt värde vid slut") Do Until snghastighet < 0 intant = intant + 1 dblsumma = dblsumma + snghastighet If snghastighet >= 50 Then intkörkort = intkörkort + 1 End If snghastighet = InputBox("Ge hastighet negativt värde vid slut") Loop dblmedel = dblsumma / intant 'beräknar medelvärde av de kontrollerade MsgBox "Medelhastigheten var " & dblmedel MsgBox "Antalet indragna korkort var " & intkorkort 3

Uppgift 5 8 poäng Varje termin får huvudläraren för en kurs en lista med information om varje student. Informationen består av efternamn, förnamn, personnummer och utbildning. När varje students tentamensresultat skall redovisas så används endast de 6 första siffrorna i personnumret. Det är förstås arbetsamt att ta fram dessa siffror och därför kan ett VisualBasic-program vara till hjälp. Skriv ett program Kursadminstration som hjälper läraren inför tentamensredovisningen. I programmet läses en array in, strstudentinfo, där varje element är en text med all information om en student. Antalet element i arrayen är 138. Inläsningen ingår ej i uppgiften. Programmet skall utnyttja en funktion TaFramDatum för att ta fram de första siffrorna i personnumret. Dessa skall sedan lagras i en array strdatum, också med 138 element. Funktionen TaFramdatum anropas alltså från programmet. Funktionen skall utifrån en text med studentinformation ta ut de sex första siffrorna i personnumret. Indata till funktionen är texten (ges från det anropande programmet) och det som funktionen alltså ska returnera är de sex första siffrorna i personnumret. Antag att efternamnet börjar direkt i texten och att det finns exakt ett blanktecken mellan efter- och förnamn, mellan förnamn och personnummer samt mellan personnumret och kursen. Personnumret består av de 6 första siffrorna följt av ett bindestreck och de 4 avslutande siffrorna (se exempel nedan). Följande deklarationer är givna för programmet: Public Sub Kursadministration() Dim strstudentinfo(138) As String Varje element består av _ information om en student Dim strdatum(138) As String Varje element består av de 6 _ första siffrorna i personnumret : LäsIn strstudentinfo() Ingår ej i uppgiften : Anrop till funktionen TaFramDatum : Om de tre första elementen i strstudentinfo är Johansson Maria 811010-1223 DSV Jonasson Peter 751115-4335 LUTB Jones Michael 790131-2334 SV så blir de första tre elementen i strdatum 811010 751115 790131 4

Lösningsförslag Public Sub Tentauppg5() Dim strstudentinfo(138) As String 'Varje element består av _ 'information om en student Dim strdatum(138) As String 'Varje element består av de 6 _ 'första siffrorna i personnumret Dim idi As Integer, strstudent As String LasIn strstudentinfo() 'Ingår ej i uppgiften For idi = 1 To 3 'testar med 3 studenter strstudent = strstudentinfo(idi) 'tar fram info om en student - lagrat som en text strdatum(idi) = TaFramDatum(strStudent) '6 siffrorna fås från funktionen TaFramDatum lagras direkt i arrayen strdatum Next idi SkrivUt strdatum()'ingår ej i uppgiften, utnyttjas för test Private Function TaFramDatum(ByRef strtext As String) As String Dim intpos As Integer intpos = InStr(strText, " ") 'tar fram positionen för första blanktecknet, dvs efter efternamnet intpos = InStr(intPos + 1, strtext, " ") 'borjar i nästa position för att söka nästa blanktecken, ' dvs efter fornamnet TaFramDatum = Mid(strText, intpos + 1, 6) 'tar de nästföljande 6 tecknen, dvs datumet i personnumret End Function Private Sub LasIn(strStudentInfo() As String) ' för test ingår ej i uppgiften strstudentinfo(1) = "Johansson Maria 811010-1223 DSV" strstudentinfo(2) = "Jones Michael 790131-2334 SHV" strstudentinfo(3) = "Y Yang 820310-3456 FK" Private Sub SkrivUt(strDatum() As String) ' för test ingår ej i uppgiften Form1.Print strdatum(1) Form1.Print strdatum(2) Form1.Print strdatum(3) 5

Uppgift 6 10 poäng (4+6) På färjebolaget Segla Säkert AB så håller man på att föra över sina rutiner till VisualBasicprogram. Nu vill man ha ett program som lagrar information om bokningar och sedan kan beräkna omsättningen för en färjetur. Det blir din uppgift att skriva ett program som klarar de båda första uppgifterna. a) Skriv ett program som kan läsa in information om bokningar via InputBox. Informationen för varje bokning skall lagras i en egendefinierad struktur, stbokninfo (se nedan). Alla bokningar skall lagras i en endimensionell array, Bokningar, som rymmer 1000 bokningar. Låt programmet först läsa in hur många bokningar som skall lagras, läs sedan och lagra bokningarna i denna array. Antag att antalet bokningar inte överstiger 1000. b) Utöka programmet eller skriv en subrutin som räknar ut omsättningen för en speciell båttur utifrån informationen i Bokningar. Datum för båtturen ges av användaren. Värdet på varje bokning beräknas utifrån ett biljettpris för varje person på 100 kr och eventuell kostnad om man har bil med sig, se priser nedan. Om summan för en bokning är 500 kr eller mer så ger bolaget 10% rabatt. Omsättningen för en färjetur är summan av priset för alla bokningar när rabatten är avdragen. Programmet skall presentera omsättningen via MsgBox. Priser Per person: Bil: Personbil Kombi Buss Lastbil Rabatt: 100 kr 200 kr 300 kr 800 kr 900 kr 10% om summan av personbiljetter och/eller bilkostnaderna 500 kr Exempel: 3 personer kostar 3*100 = 300 kr 2 personer och en personbil kostar 2*100 + 200 = 400 kr 3 personer och en kombi kostar 3*100 + 300 = 600 kr. Efter att 10% rabatt är dragen blir kostnaden 540 kr. Följande deklarationer är givna för programmet: Public Type stbokninfo strnamn As String strdatum As String intantal As Integer strbiltyp as String End Type Den egendefinierade typen Namn på beställaren Datum för resan Antal personer som skall åka Biltyp: _ Personbil, kombi, lastbil eller buss Dim Bokningar(1000) As stbokninfo Array för att lagra info. om bokningarna 6

Public Type stbokninfo strnamn As String strdatum As String intantal As Integer strbiltyp as String End Type Den egendefinierade typen Namn på beställaren Datum för resan Antal personer som skall åka Biltyp: _ Personbil, kombi, lastbil eller buss Public Sub Tentauppg6() Dim Bokningar(1000) As stbokninfo 'Array för att lagra info. om bokningarna Dim intant As Integer 'antal bokningar Dim dblomsattning As Double 'omsättningen för ett datum Dim strdat As String 'datumet intant = InputBox("Hur många bokningar skall göras?") Inlasning Bokningar(), intant strdat = InputBox("Ge datum for uträkning av omsättning") dblomsattning = BeraknaOmsattning(Bokningar(), intant, strdat) MsgBox "Omsättningen för färjeturen " & strdat & " är " & dblomsattning Private Sub Inlasning(ByRef Bokningar() As stbokninfo, _ ByVal intant As Integer) Dim idi As Integer For idi = 1 To intant Bokningar(idI).strNamn = InputBox("Ge namn") Bokningar(idI).strDatum = InputBox("Ge datum for resan") Bokningar(idI).intAntal = InputBox("Ge antal personer som skall aka") Bokningar(idI).strBiltyp = InputBox("Ge biltyp: personbil, kombi" & _ "lastbil, buss") Next idi ' Kan även skrivas på följande sätt ' For idi = 1 To intant ' With Bokningar(idI) '.strnamn = InputBox("Ge namn") '.strdatum = InputBox("Ge datum for resan") '.intantal = InputBox("Ge antal personer som skall aka") '.strbiltyp = InputBox("Ge biltyp: personbil, kombi" & _ ' "lastbil, buss") ' End With ' Next idi 7

Private Function BeraknaOmsattning(ByRef Bokningar() As stbokninfo, _ intant As Integer, strdat As String) As Double Dim dblsumma As Double, sngdelsumma As Single Dim idi As Integer, sngbilkostnad As Single dblsumma = 0 'lagrar omsättningen For idi = 1 To intant If Bokningar(idI).strDatum = strdat Then 'datum överensstammer sngdelsumma = Bokningar(idI).intAntal * 100 'beräknar personkostnaden for bokningen Select Case Bokningar(idI).strBiltyp 'skall beräkna ev. bilkostnad Case "personbil" sngbilkostnad = 200 Case "kombi" sngbilkostnad = 300 Case "buss" sngbilkostnad = 800 Case "lastbil" sngbilkostnad = 900 Case Else sngbilkostnad = 0 End Select sngdelsumma = sngdelsumma + sngbilkostnad If sngdelsumma >= 500 Then 'rabatt på 10 procent skall dras av sngdelsumma = 0.9 * sngdelsumma 'alternativt sngdelsumma = sngdelsumma - 0.1 * sngdelsumma End If dblsumma = dblsumma + sngdelsumma 'adderar summan for beställningen med de andra End If Next idi BeraknaOmsattning = dblsumma End Function 8