Document

情報基礎A
プログラムやソフトウエアの構造
徳山 豪
東北大学情報科学研究科
システム情報科学専攻
情報システム評価学分野
1
プログラムとソフトウエア
• コンピュータが行える基本演算
–
–
–
–
–
–
スイッチのオンオフ(ビットの01の反転)
四則演算
大小比較
記憶領域からのデータ読みとり
記憶領域へのデータ書き込み
入出力 (画面などへの)
•
プログラム: コンピュータに作業させるために基本演算
を組み立てたもの
• プログラミング: プログラムの組み立て作業
• ソフトウエア: 複雑なアプリケーション(ワープロ、メール
などの目的と、そのための計算機利用)を便利に実行す
るためにプログラムやその周辺環境(使い方やユーザイン
ターフェースなど)をまとめたシステム
2
簡単なプログラム 1
•
データを書く
– データが数値であるか文字であるか指定する
– エクセルでの直接入力だと自動的に判定する
• A1に数値を書こう
– A1=250
• B1に文字列を書こう
– B1=“ カレーライス”
• C1にA1をコピーしよう
– C1=A1
3
簡単なプログラム 2
•
四則演算を行う
– A1= 20+30
– B1= 20*40
– C1= (300-200)*2 -10
• 格納したデータを読み取って計算する
–
–
–
–
–
D2=250
D3 =120
D4= D2 +D3
D5= D4 * D3
D6 = (D4 + D2 )*2 -100
4
簡単なプログラム 3
•
大小比較を行う
– A1= 3>2
– B1= 2>3
– C1= (2*2) >5
•
スイッチのオンオフ
– True はon False はoff
– True とFalseでの動作選択(Branching, 分岐)
– If 文を用いたプログラム
•
•
•
•
E1=True
E2= False
E3 =If (E1, “正解”, “不正解”)
E4=If (E2, “正解”, “不正解”)
5
プログラムの構造
• プログラム=アルゴリズムの記述
• 手続き型プログラム
–
–
–
–
時系列で手続きを行い、データを変化させていく
アルゴリズムの自然な記述
コンピュータの実際の動作に近い
大規模システムだと、プログラムの手間は多い
• 手続き型プログラムを記述する言語:アセンブ
ラ言語、Basic、COBOL, Pascal, Fortran など
6
アルゴリズムと手続き
• アルゴリズム: ある作業をするための手続き
– コロッケを作る
•
•
•
•
•
•
•
•
•
•
–
–
A1= ジャガイモの皮をむく
A2= A1をゆでる
B1= たまねぎを刻む
B2= B1とひき肉を混ぜて炒め、下味をつける
C1= キャベツを刻む
A3= A2をすり鉢でつぶし、塩と胡椒をふる
A4= B2とA3を混ぜて手の平大に丸める
A5= A4を小麦粉、溶き卵、パン粉でまぶす
A6= A5を170度の油に入れ、3分で取り出す
A7= A6とC1を皿に盛り付け、ソースをかける
成績表を作る
4月の家計簿を作成する
• あなた方はアルゴリズムを考えるはずです。
7
プログラムの構造
• 関数型プログラム
–
–
–
–
データ処理を関数で記述する
関数の組み合わせでプログラムを書く
関数が多数準備されていれば使いやすい
再利用しやすく、安全性は高い
• 関数型プログラム言語: Lisp, MLなど
• Excelで作った表は関数型プログラムの一種
– データの関連(relation)を関数で記述する
– データ変化(イベントという)にしたがって関連する
関数の値を計算しなおす
8
関数とは
• 関数: 入力に対し出力を出す機構
– 算術関数、統計関数
•
•
•
•
C1= sum (A1, B1)
A21 = sum (A1: A20)
最大値関数 max(A1: A10)
平均値関数 average(A1:A10)
– 論理関数 (特に大切)
• If : 判定関数。 IF (判定式, 動作1, 動作2)
–
–
–
判定式がTrue なら動作1を、Falseなら動作2を行う
IF(C20>C21, “今月は黒字”, “今月は赤字”)
IF(A1>B1, A1-B1, B1-A1) これは何でしょうか?
– 検索関数
•
VLOOKUP(“りんご”, A1:C8, 2)
9
If文を使った計算
•
成績が90点以上なら秀、80点以上90点未満は優、
70点以上80点未満は良、60点以上70点未満は可,
60点未満は不可
>=90
false
>=80
true
true
秀
優
false
>=70
false
>=60
false
true
true
良
可
10
If文を使った計算
•
成績が90点以上なら秀、80点以上90点未満
は優、70点以上80点未満は良、60点以上70点
未満は可, 60点未満は不可
• 成績がA1に蓄えられていれば、
• B1= If (A1>=90, “秀”, If(A1>=80, “優”,”そ
の他“))
• C1= If (A1>=90, “秀”, If(A1>=80, “優”,
If(A1>=70,“良”, If(A1>=60,”可“, “不可”))))
11
アルゴリズムの問題
•
税金の計算
–
–
–
–
–
A1に年収を書く
A2に控除額を計算する
A3= A1-A2
B1に税率を計算する
A4に税金額を計算する
• 税率: 年収が500万円未満なら10%、500万円以
上900万円未満なら20%、900万円以上なら30%
• 控除額: 年収が500万円未満なら100万円、500
万円以上900万円未満なら 300万円、900万円以
上なら500万円
12
宿題
• 最大値関数 Max を使わないで最大値を
計算できるでしょうか?
• 使っていい関数は論理関数 IFと大小比
較のみ
• A1からA10 まで数値が入っている
• そのうちの最大をB11 に出力する
13