HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 15. mai 2003 Varighet: Fagnummer: Fagnavn: Klasse(r): 3 timer LO116D Programmering i Visual Basic FU Studiepoeng: 6 Faglærer(e): Svend Andreas Horgen tlf: 73 55 92 69 Hjelpemidler: Oppgavesettet består av: Vedlegg består av: Alle skriftlige hjelpemidler 2 oppgaver og 5 sider (inkludert forsiden) Ingen vedlegg Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. Viktig: Les hele oppgaveteksten for hver oppgave før du setter i gang. Planlegg tiden godt. Det er selvsagt lov å bruke funksjoner du har lagd i en oppgave i en annen. Lykke til! Side 1 av 5
Oppgave 1 Diverse (40%) a) Gitt denne kodesnutten: Dim Ferdig As Boolean Dim Teller, Tall, Magisk As Integer Teller = 0 Ferdig = false Do While (NOT Ferdig) AND (Teller < 10) Teller = Teller + 1 Tall = CInt(InputBox( Skriv inn et tall )) If (Tall > 25) AND (Tall <= 36) Then List1.AddItem(Tall & er et magisk tall ) ElseIf Tall = 20 Then Ferdig = true Else List1.AddItem(Tall & er et helt vanlig tall ) End If Loop Brukeren har følgende tall foran seg: 8, 25, 35, 10, 36, 14, 20, 36, 39, 43, 55, 34, 12, 27. Tallene skrives inn i den rekkefølgen de står listet opp etter hvert som brukeren blir spurt om dette ett tall for hver ny inputbox som kommer fram. Hva blir skrevet ut i listboksen List1 etter at programmet over er kjørt? (I tilfelle det skulle være uklart: Setningen List1.AddItem(ettEllerAnnet) legger til innholdet av ettellerannet i en listboks med navn List1 ) b) Lag to funksjoner: en som finner det største av to tall og en som regner ut volumet av en kube (terning). Forklar med egne ord hva en funksjon er. Formelen for volumet er: Volum = høyde * bredde * lengde. c) Vi har fire legoklosser med følgende mål: 1. 2 cm høy, 3 cm bred, 8 cm lang 2. 4 cm høy, 3 cm bred, 2 cm lang 3. 2 cm høy, 4 cm bred, 7 cm lang 4. 6 cm høy, 5 cm bred, 1 cm lang Sett opp Visual Basic-koden som er nødvendig for å skrive ut på skjerm hva det største volumet er. Merk at du ikke skal finne hvilken kloss som har størst volum. Du skal bare finne det største volumet. d) Her er en oversikt over temperaturer gjennom en uke i august for henholdsvis Oslo, Bergen, Trondheim og Tromsø. Anta at dataene er lest inn i en todimenasjonal matrise. Skriv kode som regner ut gjennomsnittet til alle stedene Side 2 av 5
og legger inn dette i den siste raden i hver kolonne (tom på dette bildet). Finn tilslutt den høyeste gjennomsnittstemperaturen og skriv ut til skjerm. Oslo Bergen Trondheim Tromsø mandag tirsdag onsdag torsdag fredag lørdag søndag 19 20 17 13 22 22 18 12 23 21 19 15 18 20 22 16 16 20 23 16 18 17 24 15 19 16 25 18 gjennomsnitt Side 3 av 5
Oppgave 2 Programmeringsforståelse (60%) Løkker og betingelser er eksempel på kontrollstrukturer. Når det gjelder løkker kan vi velge mellom tre typer: Do While, Loop Until og For Next. Når det gjelder betingelser har vi If then, If then else og Select Case. a) Vi har et ønske om å lage et program som leser inn karakterer for studenter og deretter skriver ut et histogram og statistikk som ser ut som det under i en listbox: Karakter A: * * Karakter B: * * * * * * Karakter C: * * * * * * * * * Karakter D: * * * * * Karakter E: * * * * * * Karakter F: * * Antall studenter: 30 Du skal forklare den strategien som må til og deretter lage programmet. Karakterene skal gis inn til programmet en etter en via en input-box helt til Ferdig skrives inn. Et tips for å lage histogrammet er å sette sammen en tekststreng av stjerner med riktig antall for hver karakter. En liten opplysning for de spesielt ambisiøse: Den innebygde funksjonen Asc(tegn) returnerer Ascii-verdien til det første tegnet som ligger i variabelen tegn. Dvs kodesnutten MsgBox Asc( A ) vil skrive ut Ascii-verdien til bokstaven A, som er 65, mens kodesnutten txtkode.text = Str(Asc( C ) vil skrive ut Ascii-verdien til C, som er 67, i en tekstboks. b) Vi har mange datatyper, for eksempel Integer, Single, Date og String. Les alle deloppgavene før du tar fatt på denne oppgaven slik at du unngår ekstra arbeid. Forklar kort med egne ord hva en brukerdefinert datatype er og i hvilken sammenheng slike brukes mest. Lag en brukerdefinert datatype som kan lagre informasjon om personer med navn, alder og inntekt. Lag en kodesnutt som leser inn navn, adresse og inntekt fra tekstfelt som angitt på figuren, og samler opp informasjonen i en matrise. Du kan anta at det ikke er behov for å registrere mer enn 100 personer. Du kan deklarere en matrise med X antall elementer av en egendefinert datatype slik: matrise(x) as mindatatype Av figuren ser vi at for hver gang brukeren trykker på knappen Registrer person skal det som står i tekstfeltene legges inn på i neste element i matrisen. Side 4 av 5
Lag en rutine som skriver ut informasjon om alle de personer som er registrert i en listbox. Utskriften skal se slik ut: Kalle Jensen er 36 år gammel og tjener 280000 kroner. Lag en rutine som finner navnet på den personen med høyest inntekt blant de som er mellom 20 og 50 år, og skriver dette ut i en msgbox. Lag en kodesnutt som lagrer alt som ligger i matrisen på fil, slik at informasjonen kan bli tatt vare på over tid. Husk å åpne og lukke filen. Lag en kodesnutt som leser alt fra filen tilbake inn i matrisen. Side 5 av 5