第8講 プロシージャ(2)
第3話 1次元配列を送る
@ 実行画面が
1 2 3 4 5 6 7 8 9 10
(ただし、
Rnd(-1)
Randomize(Timer())
がはいっているのでデータの内容は毎回異なります。)
となるプログラムを考えて下さい。
プロシージャ(1)では、変数や配列を渡す方法がなかったので、
データ作成とデータ表示を分業することが出来ませんでしたが、
実質渡せるようになって、分業をさせることができます。
Main()のおいて1次元配列を作り、それの先頭アドレスをf()とg()に渡して、
プロシージャf()はデータを作成して、プロシージャg()はそのデータを表示する、
という分業をして下さい。
という条件を実現するプログラム例
Module Module1
Sub Main() '私は社長だ。
Rnd (-1)
Randomize (Timer())
Dim a(9) As Integer '配列の宣言
f (a) 'データ作成
g (a) 'データ表示
End Sub
Sub f(x() As Integer)
Dim i As Integer
For i = 0 To 9
x(i) = i + 1
Next
End Sub
Sub g(x() As Integer)
Dim i As Integer
For i = 0 To 9
Console.Write("{0:d} ", x(i))
Next
Console.WriteLine()
End Sub
End Module
A 実行画面が
(ただし、
Rnd(-1)
Randomize(Timer())
がはいっているのでデータの内容は毎回異なります。)
となるプログラムを考えて下さい。
@と同じくMain()が1次元配列を作り、
データ作成はf()が、データ表示はg()が担当するという分業のもとに行って下さい。
という条件を実現するプログラム例
Module Module1
Sub Main() '私は社長だ。
Rnd (-1)
Randomize (Timer())
Dim a(9) As Integer '配列の宣言
f (a) 'データ作成
g (a) 'データ表示
End Sub
Sub f(x() As Integer)
Dim i As Integer
For i = 0 To 9
x(i) = Int(10 * Rnd())
Next
End Sub
Sub g(x() As Integer)
Dim i As Integer
For i = 0 To 9
Console.WriteLine("x({0:d})={1:d}", i, x(i))
Next
End Sub
End Module
次話の課題です。
@ Main()のおいて2次元配列を作る。
A Main()がプロシージャf()にその2次元配列のアドレスを送り、
プロシージャf()において一桁整数のランダムデータを作る。
B Main()がプロシージャg()にその2次元配列のアドレスを送り、
プロシージャg()において一桁整数のランダムデータを表示する。
という条件下で実行画面が
1 7 4 0 9 4 8
8 2 4 5 5 1 7
1 1 5 2 7 6 1
4 2 3 2 2 1 6
8 5 7 6 1 8 9
2 7 9 5 4 3 1
(例によって、シード値を時刻から取得しているために、
データは毎回異なります。)
となるプログラムを作って下さい。
2次配列を受け取る側の引数は
Sub f(x(,) As Integer)
などとします。