情報基礎II (第1回)

情報基礎Ⅱ/基礎工学Ⅲ
(第13回)
月曜4限
担当:北川 晃
例題:真理値表
論理式
a  b  c 
の真理値表を与えるプログラムを作れ.
真理値表:
変数の取り得るすべての値の組み合わせに対し,
論理式がとる値を表にしたもの.
例:a∧bの真理値表
a
b
ab
真
真
偽
偽
真
偽
真
偽
真
偽
偽
偽
真理値表:出力例
要素の数を
指定しない
真理値表:プログラム例
Dim v() As Boolean = {True, False}
配列に初期値を
代入する場合
Console.WriteLine("
a
b
c result")
Console.WriteLine("------------------------------------")
For i As Integer = 0 To 1
For j As Integer = 0 To 1
For k As Integer = 0 To 1
Console.WriteLine(" {0,8} {1,8} {2,8} {3,8}", _
v(i), v(j), v(k), v(i) And Not (v(j) Or v(k)))
Next
Next
a bc
a, b, c
Next


例題:エラトステネスのふるい
n までの素数を求めて出力するプログラムを作れ.
アルゴリズム:エラトステネスのふるい
•2の倍数(2自身を除く)に全部印をつける.
•3の倍数(3自身を除く)に全部印をつける.
•5の倍数(5自身を除く)に全部印をつける.
•…
• n まで全部の倍数に印をつけたとき,
印がつかないで残っている数は,
どの数の倍数でもないから素数である.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17…
エラトステネスのふるい:アルゴリズム
• 上限となる整数nを読み込む.
• i=3以上の奇数について調べる.
• c(i)という配列(印をつけるのに用いる)のすべての
成分に,「真」を代入する.
• エラトステネスのふるいの方法で,
各整数の倍数に印をつける.
• 印なしを「真」,印ありを「偽」として区別する.
• ふるいをかける整数の最初の値を,
配列成分p(m)に代入する.
• これをnまで繰り返し,最後に配列p(m)を書き出す.
エラトステネスのふるい:出力例
エラトステネスのふるい:プログラム例
Console.Title = "nまでの素数の探索"
Dim c(10000) As Boolean
Dim i, j, m, n, p(10000) As Integer, l As Integer = 1
Console.WriteLine("上限となる値を入力して下さい")
Console.Write("n=")
n = Console.ReadLine()
'c(i)は素数かどうかのチェック(=Trueは素数,=Falseは素数でない)
'mは素数列の項番号
'素数列の初項
m = 1
p(m) = 2
'3以上の奇数について,すべてに一旦,素数のチェックを入れる(True)
For i = 3 To n Step 2
c(i) = True
Next
エラトステネスのふるい:プログラム例(つづき)
For i = 3 To n Step 2
‘iのチェック(c(i))が入っていない(True)場合
If c(i) = True Then
‘素数の項数mを1増やし,iを素数としてp(m)に書き出す.
m = m + 1
p(m) = i
'iとそれ以降の倍数のチェック(c(i))を入れる(False)
For j = i To n Step i
c(j) = False
Next
End If
Next
For i = 1 To m
If (i = m) Or (i Mod 10 = 0) Then
Console.WriteLine("{0,5}", p(i))
Else
Console.Write("{0,5}", p(i))
End If
Next