HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 18. desember 2002 Varighet: Fagnummer: Fagnavn: 3 timer BO328D Applikasjonsutvikling Klasse(r): FU 1HKD2002 Studiepoeng: 6 Faglærer(e): Hjelpemidler: Oppgavesettet består av: Vedlegg består av: Svend Andreas Horgen tlf: 951 49 731 Jostein Lund tlf: 73 55 95 73 Alle skriftlige hjelpemidler 3 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. Lykke til! Side 1 av 5
Oppgave 1 Programmeringsteknikk (35%) a) Hva er de vanligste måtene å åpne en sekvensiell fil på? Forklar! Tegn også opp hva som vises i skjermbildet etter at følgende kodesnutt er utført. Forklar! (List1 er navnet på en listbox). Open "test.txt" For Output As #1 Print #1, "hei på deg" Print #1, "dette er en fin dag" Open "test.txt" For Output As #1 Print #1, "her er litt mer informasjon" Open "test.txt" For Input As #1 linje = "" Do While Not EOF(1) Input #1, linje List1.AddItem linje Loop b) Lag en funksjon som finner det minste av to tall. Lag også en funksjon som regner ut volumet av en kube (terning). 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 minste volumet er. Dette er for øvrig på 24 kubikk centimeter svaret er ikke det viktige her men koden for å finne svaret. (Merk at du ikke skal finne hvilken kloss som har minst volum, men kun det minste volumet). e) Forklar med egne ord og evt. pseudokode hvordan du ville gå fram for å tegne opp 120 tilfeldig fargede prikker på skjermen (form/skjema) på ulikt sted i løpet av nøyaktig ett minutt. Illustrer med kode bare dersom du synes det er nødvendig. Side 2 av 5
Oppgave 2 Matriser/tabeller (30%) a) I en klasse med 16 studenter var det følgende resultater til en eksamen: B, A, C, D, E, D, D, C, B, B, C, D, A, B, B, B. Lag et program som leser inn disse karakterene fra en InputBox og legger inn antallet av hver karakter i en matrise der det første elementet representerer A, det neste B osv. Dvs matrisen skal tilslutt se slik ut dersom resultatene over skrives inn: 2 6 3 4 1 0 Husk å deklarere matrisen! 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 Asciiverdien til bokstaven A, som er 65, mens txtkode.text = Str(Asc( C ) vil skrive ut Ascii-verdien til C (67) i en tekstboks. b) 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 og legger inn dette i den siste raden i hver kolonne (tom på dette bildet). Finn tilslutt den laveste 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 Oppgave 2 fortsetter på neste side Side 3 av 5
Fortsettelse på oppgave 2. c) Fyll en todimensjonal matrise med den lille multiplikasjonstabellen. Lag et program som skriver ut innholdet i den lille multiplikasjonstabellen fra matrisen. Formatering med fet skrift skal ikke være med, men utskriften bør se omtrent slik ut: 1 2 3 4 5 6 7 8 9 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 5 5 10 15 20 25 30 35 40 45 6 6 12 18 24 30 36 42 48 54 7 7 14 21 28 35 42 49 56 63 8 8 16 24 32 40 48 56 64 72 9 9 18 27 36 45 54 63 72 81 Bruk for eksempel picture.print eller list1.additem når du skal skrive ut neste linje av tabellen. Hint: Se på en linje som en lang tekststreng og skisser gjerne med pseudokode først. Side 4 av 5
Oppgave 3 Filbehandling (35%) Lise har en privat adresseliste over sine venner og bekjente. Nå ønsker hun å lage et program som administrerer denne listen. Hun vil registrere e-post, navnet på personen og alderen til personen. Siden alderen er relativ, bør ikke alderen, men fødselsdatoen til en person registreres. Det første som slår Lise er at her må informasjonen tas vare på over tid, og hun tyr derfor til filbehandling med randomiserte filer. a) Hva er en egendefinert datatype? Gi et forslag til en egendefinert datatype som kan brukes i dette tilfellet. Lag deretter en rutine som både oppretter og legger inn informasjon om Hans Olsen, født 17. januar 1973, med epost hans@olsen.no på ei fil. Hint: variabler deklarert som Date krever 8 byte med plass. b) Videre ønsker Lise følgende tjenester: å kunne lete fram opplysninger om en bestemt person basert på et navnesøk i adresselisten og skrive ut disse til skjerm å få vite hvor mange personer som er eldre enn for eksempel 23 år å få listet ut alle som har bursdag i en bestemt måned, for eksempel september Vis med kode eller pseudokode et forslag til et program som støtter Lises ønsker. Du kan anta at fila er fylt med innhold slik at du ikke trenger å legge inn navn. c) Hva er forskjellen på en sekvensiell og en randomisert fil? Gi eksempel på når det er mest hensiktsmessig å bruke den ene framfor den andre. Side 5 av 5