情報基礎実習I (第5回) 木曜4・5限 担当:北川 晃
プログラミング演習 非負の整数 を読み込んで,その階乗 を計算するプログラムを作れ.ただし, とする. 考え方: 非負の整数 を読み込んで,その階乗 を計算するプログラムを作れ.ただし, とする. 考え方: 非負の整数nと整数pを導入する. i=1~nについて,繰り返しp=p*iを計算する. 最終的なpを書き出す.
階乗の計算:プログラム例 整数型では Dim n, p As Integer Console.Title = "階乗の計算" の数しか扱えない Dim n, p As Integer Console.Title = "階乗の計算" Console.Write("非負の整数nを入力して下さい:n=") n = Console.ReadLine() p = 1 If n <> 0 Then For i As Integer = 1 To n p = p * i Next End If Console.WriteLine("{0}!={1}", n, p) pの初期値 nがゼロかどうかで場合分け
階乗の計算:実行例
プログラミング演習 三角形の3辺a, b, cを読み込んで, 三角形ができる場合は面積Sを計算せよ. A 三角形の成立条件 c b かつ C ヘロンの公式 ただし
三角形の面積:出力例
三角形の面積:プログラム例 Label1~4,TextBox1~4, Button1~3の貼り付け
三角形の面積:プログラム例(つづき) 「計算」ボタン Dim a, b, c, p, s As Single a = Val(TextBox1.Text) b = Val(TextBox2.Text) c = Val(TextBox3.Text) If a = 0 Or (Math.Abs(a - b) > c Or a + b <= c) Then TextBox4.Text = "三角形にならない" Else p = (a + b + c) / 2 s = Math.Sqrt(p * (p - a) * (p - b) * (p - c)) TextBox4.Text = s End If
例題:ピタゴラス数 すべてを正数としたとき,次の関係 を満たすような の組を見つけて表示せよ. ただし, とする. 考え方 すべてを正数としたとき,次の関係 を満たすような の組を見つけて表示せよ. ただし, とする. を求め,Fix関数を用いて小数点を切り捨てる. この数を再び二乗し, に一致するか調べる. より,l=1~99,m=l+1~100の数値に対して For~Next文を用いて調べる. 考え方
ピタゴラス数:プログラム例 Dim ℓ, m As Integer Dim n_sq, n_int As Single Console.Title = "ピタゴラス数" For ℓ = 1 To 99 For m = ℓ + 1 To 100 n_sq = ℓ ^ 2 + m ^ 2 n_int = Fix(Math.Sqrt(n_sq)) If n_sq = n_int ^ 2 Then Console.WriteLine( _ "{0,4}^2+{1,4}^2={2,4}^2", ℓ, m, n_int) End If Next ループの 入れ子構造 nの整数部分 の計算 nが整数なら, 書き出す “l”を書き出すために, 4文字分確保する
ピタゴラス数:出力例 “ℓ”を書き出すために, 4文字分確保されている
プログラミング演習 角度 について, きざみに 正弦,余弦,正接の表を出力する プログラムを作れ. 考え方: 角度 について, きざみに 正弦,余弦,正接の表を出力する プログラムを作れ. 考え方: 変数’theta’について,For~Next文を用いて 繰り返し計算する. 組み込み関数’Math.Sin(x)’の変数はラジアン単位.
三角関数の表:プログラム例 πの近似値 Dim theta_rad As Single, pi As Single = 3.1415926 Console.WriteLine("θ(°) sinθ cosθ tanθ") For theta As Integer = 0 To 90 Step 5 theta_rad = pi / 180 * theta Console.WriteLine( _ "{0,4}, {1,20}, {2,20}, {3,20}", _ theta, Math.Sin(theta_rad), _ Math.Cos(theta_rad), Math.Tan(theta_rad)) Next スペースは適宜調整する ラジアン単位の角度変数 整数’theta’を 0から5おきに 90まで繰り返す 度からラジアンへの変換 スペースは 適宜調整
三角関数の表:実行例
プログラミング演習 N=11個のデータ 最大値:9,最小値:1 n個のデータx1, x2, …, xnがある.データの個数とデータを 順次読み込んで,それらのデータの最大値と最小値を求めよ. N=11個のデータ 最大値:9,最小値:1
最大と最小:考え方 第(i-1)番目までのデータについて, 最大値xmaxと最小値xminが分かっているとする. 次に読み込む第 i 番目のデータ xi について, (i)xi>xmaxのとき,xiが新たな最大値となる. xmax=xi (ii)xi≦xmaxのとき, (ii)-1. xi≧xminのとき,xmax,xminは変わらず. (ii)-2. xi<xminのとき,xiが新たな最小値となる. xmin=xi これをすべてのデータについて繰り返す.
最大と最小:アルゴリズム 最初のデータxを読み込む. 最大値と最小値の初期値として,最初のデータを代入 xmax=x, xmin=x 必要があればxmaxもしくはxminを 読み込んだデータxで置き換え. これを繰り返し,最後にxmaxとxminを書き出す.
プログラム例:最大値と最小値 その1 Dim xmax, xmin, x As Single, n As Integer Console.Write("データの個数nを入力して下さい") n = Console.ReadLine() Console.Write("1個目のデータxを入力して下さい") x = Console.ReadLine() xmax = x xmin = x 最大の値,最小の値の初期値として, ともに1個目のデータxを代入する.
プログラム例:最大値と最小値 その2 For i As Integer = 2 To n Console.Write("{0}個目のデータxを入力して下さい", i) x = Console.ReadLine() If x > xmax Then xmax = x ElseIf x >= xmin Then Else xmin = x End If Next Console.WriteLine("最大の値は{0}", xmax) Console.WriteLine("最小の値は{0}", xmin) xが最大値より大きければ, 最大値を置き換える. xは最大値より小さい. このとき,xの値が最小値より 大きい場合は,何もしない. それ以外の場合は 最小値を置き換える.
最大値と最小値:実行例
例題:不定回数の繰り返し 1日目に1円,2日目に2円,…,n日目にはd=2n-1円の ように,毎日倍額を貯金するとする.ある金額tを読み 時の合計金額がいくらになるか,表示するプログラム を作れ.
不定回数の繰り返し:プログラム例 Label1~3,Textbox1~3, Button1,2の貼り付け
不定回数の繰り返し:プログラム例(つづき) Private Sub Button1_Click(sender As Object, e As EventArgs) … Dim n, d, t, sum As Integer t = Val(TextBox1.Text) n = 0 : d = 1 : sum = 0 While sum < t sum = sum + d d = d * 2 n = n + 1 End While TextBox2.Text = Format(n, "###") TextBox3.Text = Format(sum, "###,###,###") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) … End sumがtを超える まで繰り返す
不定回数の繰り返し:出力例
プログラミング演習 高知大学の各学部を入力し,どこのキャンパスに あるかを表示するプログラムを作れ.
各学部の所在地:プログラム例 Label1~3,TextBox1,2, Button1の貼り付け
各学部の所在地:プログラム例(つづき) 「検索」ボタン Dim faculty As String faculty = TextBox1.Text Select Case faculty Case "人文" TextBox2.Text = "朝倉" Case "教育" Case "理" Case "医" TextBox2.Text = "岡豊" Case "農" TextBox2.Text = "物部" Case Else TextBox2.Text = "(存在しない)" End Select
プログラミング演習 ラジオボタンで高知大学の各学部を選択し, どこのキャンパスにあるかを表示するプログラムを作れ.
Label1~4,TextBox1,2,Button1,2, 学部の場所:プログラム例 Label1~4,TextBox1,2,Button1,2, RadioButton1~5の貼り付け
学部の場所:プログラム例(つづき) 「検索」ボタン If RadioButton1.Checked Then TextBox1.Text = "人文" TextBox2.Text = "朝倉" ElseIf RadioButton2.Checked Then TextBox1.Text = "教育" ElseIf RadioButton3.Checked Then TextBox1.Text = "理" ElseIf RadioButton4.Checked Then TextBox1.Text = "医" TextBox2.Text = "岡豊" ElseIf RadioButton5.Checked Then TextBox1.Text = "農" TextBox2.Text = "物部" End If
学部の場所:プログラム例(つづき) 「クリア」ボタン RadioButton1.Checked = False TextBox1.Text = "" : TextBox2.Text = ""