Eksamen høst 2006 ble studert: 15 likt vektede deloppgaver på 6 timer gir
[kd@harr ~]$ bc -l
bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
1/15
.06666666666666666666
360/15
24.00000000000000000000
altså 6.7 % vekt og 24 minutt tid per deloppgave. Vi så på oppgavene 3 a), b), c) og h) og brukte objektorientering (kap. 11.1) med konstruktør (nytt, s. 560):
[kd@harr ordliste]$ more ov.vb
Public Class ov
Private _norsk As String
Private _svensk As String
Public Sub New(ByRef s1 As String, ByRef s2 As String)
_norsk = s1 ' "konstruktør"
_svensk = s2
End Sub
Public Property norsk() As String
Get ' "getter"
Return _norsk
End Get
Set(ByVal value As String) ' "setter"
_norsk = value
End Set
End Property
Public Property svensk() As String
Get
Return _svensk ' "getter"
End Get
Set(ByVal value As String)
_svensk = value ' "setter"
End Set
End Property
End Class
og "hovedklassen" (som skaper brukerens visuelle inntrykk):
[kd@harr ordliste]$ more Form1.vb
Public Class Form1
'Structure ov ' vi kunne brukt Structure istedet for objekter
' Dim norsk As String
' Dim svensk As String
'End Structure
Dim o(4) As ov
Dim nl As Integer = 0 ' Christer foreslo navnet
Dim filnavn As String = "k:\in-kurs\IBE150\ordliste.txt"
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
lesfil(filnavn)
End Sub
Private Sub lesfil(ByVal n As String)
Dim linjenr As Integer = 0
Try
Dim sr As IO.StreamReader = IO.File.OpenText(n)
Do While Not sr.EndOfStream()
nyoversettelse(sr.ReadLine(), sr.ReadLine())
linjenr += 2
Loop
Catch ex As IO.IOException
MsgBox("feil ved lesing av fil i linje " & linjenr)
End Try
End Sub
Private Sub nyoversettelse(ByVal norsk As String, ByVal svensk As String)
If nl > o.GetUpperBound(0) Then
Return ' full mage (ja, vi kunne utvidet)
End If
o(nl) = New ov(norsk, svensk)
nl += 1
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
nyoversettelse(InputBox("norsk ord: "), InputBox("svensk ord: "))
End Sub
Private Sub lagrefil(ByRef n As String)
Dim sw As IO.StreamWriter
Try
sw = IO.File.CreateText(n)
For i As Integer = 0 To nl - 1
sw.WriteLine(o(i).norsk())
sw.WriteLine(o(i).svensk())
Next
Catch ex As IO.IOException
MsgBox("feil ved lagring")
Finally
sw.close()
End Try
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
lagrefil(filnavn)
End Sub
End Class
Altså brukes en 1D-tabell av objekt (eller Structure, som nevnt i kommentarene). Man kunne (tredje alternativ) bruke et 2D-array med norsk og svensk i kolonne 0 og 1. Eller (fjerde mulighet), ha 1D-array med norsk og svensk ord i annethvert element.
Ingen kommentarer:
Legg inn en kommentar