1 / 21

情報基礎実習 I ( 第 9 回)

情報基礎実習 I ( 第 9 回). 木 曜4・5限 担当 :北川 晃. プログラミング演習.    の否定を   で表す.次の四つの演算に対して 真理値表を作成し ,同じ動作をするものを見つけよ.. ①      ②      ③      ④. プログラミングの指針 最初に n=1 ~ 4 の値を代入し, それぞれ①~④の評価を行わせる. Select Case 文を使うとよい.. Select Case 例文. Select Case x Case Is < 0 Text=“ 負の値です ” Case 0 Text=“0 の値です ”

adanne
Download Presentation

情報基礎実習 I ( 第 9 回)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 情報基礎実習I(第9回) 木曜4・5限 担当:北川 晃

  2. プログラミング演習    の否定を   で表す.次の四つの演算に対して 真理値表を作成し,同じ動作をするものを見つけよ. ①      ②      ③      ④ • プログラミングの指針 • 最初にn=1~4の値を代入し, • それぞれ①~④の評価を行わせる. • Select Case文を使うとよい.

  3. Select Case 例文 Select Case x Case Is < 0 Text=“負の値です” Case 0 Text=“0の値です” Case 1 To 99 Text=“1~99の値です” Case Else Text=“100以上の値です” End Select xの値がどのケースに 当てはまるかを選ぶ End Selectで締めくくる

  4. ド・モルガンの法則:プログラム例 Dim m As Integer Sub Main() Dim v() As Boolean = {True, False} Console.Write("どの式を評価しますか?(1-4)") m = Console.ReadLine() Console.WriteLine(" a b result") Console.WriteLine("--------------------") For i As Integer = 0 To 1 For j As Integer = 0 To 1 Console.WriteLine("{0,6} {1,6} {2,6}", _ v(i), v(j), Ev(v(i), v(j))) Next Next End Sub

  5. ド・モルガンの法則:プログラム例(つづき)ド・モルガンの法則:プログラム例(つづき) Function Ev(a, b) Dim Ev0 As Boolean Select Case m Case 1 Ev0 = Not (a And b) Case 2 Ev0 = Not (a Or b) Case 3 Ev0 = (Not a) And (Not b) Case 4 Ev0 = (Not a) Or (Not b) End Select Return Ev0 End Function それぞれの式を評価する

  6. ド・モルガンの法則:出力例

  7. プログラミング演習  図に示したように,スイッチA, B, C, Dが配置してある 回路がある.各スイッチの状態(ONかOFF)に応じて, 電灯(L)が点灯するかどうかを示す表を作れ. A B D C L

  8. ランプの回路:考え方 A それぞれのスイッチの’ON’をTrueに,’OFF’をFalseに対応させる. B AとBがともにONになって,電気が通る A B AかB,どちらかがONになれば,電気が通る A, B, C, D, Lについての真理値表を作る

  9. ランプの回路:プログラム例 Sub Main() Dim v() As Boolean = {True, False} Dim i_A, i_B, i_C, i_D Console.WriteLine(" A B C D L") Console.WriteLine("----------------------------------") For i_A = 0 To 1 For i_B = 0 To 1 For i_C = 0 To 1 For i_D = 0 To 1 Console.WriteLine("{0,6} {1,6} {2,6} {3,6} {4,6}", _ v(i_A), v(i_B), v(i_C), v(i_D), _ lamp(v(i_A), v(i_B), v(i_C), v(i_D))) Next Next Next Next End Sub 電気回路に相当する評価関数

  10. ランプの回路:プログラム例 Function lamp(a, b, c, d) Dim L As Boolean L= a Or ((b Or c) And d) Return L End Function 電気回路に相当する評価関数

  11. ランプの回路:出力例

  12. プログラミング演習 4人の狩人A, B, C, Dが7日間,野営地にいた. Aが狩りに出た日はBは出なかった. Bが狩りに出た日にはDも出たが,Cは出なかった. Dが狩りに出た日には,AまたはBが出た. 狩りに出た狩人の組み合わせが同じ日は一日もなかった. Dは何日狩りに出て,それは誰と一緒だったか. 以上の問題を,論理型変数を用いたプログラムを用いて解け. ポール・J・ナーイン著, 「0と1の話 ブール代数とシャノン理論」, 青土社(2013年)

  13. 狩人の問題:考え方 • A, B, C, Dそれぞれが狩りに出た場合を’True’, • 狩りに出なかった場合を’False’とする. • 4人の狩人が狩りに出る組み合わせを表に書き出す. • ただし,条件に当てはまらない場合は書き出さない. A = Trueなら,B = Trueでない B = Trueなら,D = True ただしC = Trueでない D = Trueなら,A = TrueもしくはB = True A, B, C, D = {True, False}の24=16通りについて, 上記条件を満たさない場合を除いて,7通りが残ればよい 条件を二つに分けるとよい

  14. 狩人の問題:プログラム例 Dim v() As Boolean = {True, False} Console.WriteLine(" a b c d") Console.WriteLine("---------------------------") For i As Integer = 0 To 1 For j As Integer = 0 To 1 For k As Integer = 0 To 1 For m As Integer = 0 To 1 If v(i) And v(j) Then GoTo point1 If v(j) = True And v(m) = False _ Then GoTo point1 If (v(j) And v(m)) And v(k) _ Then GoTopoint1 条件に当てはまらない場合はすべて,point1へ飛ぶ

  15. 狩人の問題:プログラム例(つづき) If (v(j) And v(m)) And v(k) _ Then GoTo point1 If (v(m) = True) _ And (v(i) = False And v(j) = False) _ Then GoTo point1 Console.WriteLine( _ "{0,6} {1,6} {2,6} {3,6}", _ v(i), v(j), v(k), v(m)) point1: Next Next Next Next 条件を満たしている場合は, 真理値表を書き出す

  16. 狩人の問題:出力例 7通り Dが狩りに出たのは3日, A, Cとともに Aとともに Bとともに

  17. 例題:エラトステネスのふるい までの素数を求めて出力するプログラムを作れ. アルゴリズム:エラトステネスのふるい • 2の倍数(2自身を除く)に全部印をつける. • 3の倍数(3自身を除く)に全部印をつける. • 5の倍数(5自身を除く)に全部印をつける. • … • まで全部の倍数に印をつけたとき, • 印がつかないで残っている数は, • どの数の倍数でもないから素数である.

  18. エラトステネスのふるい:アルゴリズム • 上限となる整数nを読み込む. • i=3以上の奇数について調べる. • c(i)という配列(印をつけるのに用いる)のすべての • 成分に,「真」を代入する. • エラトステネスのふるいの方法で, • 各整数の倍数に印をつける. • 印なしを「真」,印ありを「偽」として区別する. • ふるいをかける整数の最初の値を,  • 配列成分p(m)に代入する. • これをnまで繰り返し,最後に配列p(m)を書き出す.

  19. エラトステネスのふるい:出力例

  20. エラトステネスのふるい:プログラム例 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

  21. エラトステネスのふるい:プログラム例(つづき)エラトステネスのふるい:プログラム例(つづき) 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

More Related