仮定文の仕組み

情報教育論 第9回
仮定文の仕組み
政策・メディア研究科 岡田 健
新しい言霊環境を
ダウンロードしてください
http://www.crew.sfc.keio.ac.jp/~turkey/
Kotodama_Install20041213.exe
Mac環境の方は
http://www.crew.sfc.keio.ac.jp/~turkey/dama.jar
前回の環境をアンインストールした後に、今回
の環境をインストールしてください
本日の学習目標
仮定文を見て,処理の流れを説明すること
が出来る
真偽値が取りうる値を説明できる
比較式や論理式を見て,それを真偽値に
変換することが出来る
目的に応じて仮定条件を記述できる
ある目的が与えられたときに,適切に仮定
文を用いてプログラムが書ける
仮定文はどんな時に使う?
入力
処理
出力
入力により
処理を変えた
い
仮定文はどんな時に使う?
※-------------------※挨拶するプログラム
※-------------------変数を定義して、名前を入力とする。
※時間を尋ねる
「現在の時間を入力してください。」を出力する。
「1:朝 2:昼 3:夜」を出力する。
入力を整数で受け取り、入力に書き込む。
※挨拶する
もし入力が1ならば{
「おはよう」を出力する。
}をして、入力が2ならば{
「こんにちは。」を出力する。
}をして、入力が3ならば{
「こんばんは。」を出力する。
}をする。
ユーザの入力
により、処理
内容を変えた
い場合
ユーザ入力を受け付けるには?
以下のように書く
入力を整数として受け取り、入力に書き込む。
入力を文字列として受け取り、名前に書き込む。
記法は以下の通り。
入力を型として受け取り、変数に書き込む。
型 は「整数」か「文字列」が入ります。
処理の分岐を書くには
以下のように書く
もし入力が1ならば{
・・・
}をする。
記法は以下の通り
もし条件 ならば{
処理
}をする。
「もし」の部分は「もしも」と書いても良いし、省略してもいい。
「ならば」の部分は「なら」と書いても良い。
処理の分岐の流れ
条件が成立したら、
処理を実行する
条件
成
立
処理
不
成
立
不成立の時の処理を書くには
以下のように書く
もし入力が1ならば{
・・・
}をして、そうでないならば{
・・・
}をする。
記法は以下の通り
もし条件 ならば{
処理
}をして、そうでないならば{
処理
}をする。
処理の分岐の流れ
条件が成立したら、
処理を実行する
条件
成
立
処理
不
成
立
処理
さらに複雑な分岐を書くには
以下のように書く
もし入力が1ならば{
・・・
}をして、もし入力が2ならば{
・・・
}をして、そうでないならば{
・・・
}をする。
処理の分岐の流れ
条件
成
立
処理
条件が成立したら、
処理を実行する
不
成
立
条件
成
立
処理
不
成
立
処理
条件をどうやって表現する?
条件は真偽値として記述する
以下は全て真偽値を表している
真
偽
A=0
A≠B
A<C
A<D
A≧E
A≦F
A>0かつA>B
A>0あるいはA>B
真偽値をどうやって記述する?
真偽値は以下の3通りで記述できる
真偽値定数
比較式
論理式
条件を比較式として書くには?
以下のように書く
時間=1
距離>10
角度≦90
記法は以下の通り
記法
大なり
小なり
大なり等号
小なり等号
等号
不等号
値>値
値<値
値≧値
値≦値
値=値
値≠値
使用できる記号
>(全角) >(半角)
<(全角) <(半角)
≧(全角) >=(半角)>=(全角)
≦(全角) <=(半角)<=(全角)
=(全角) ==(全角)=(半角)==(半角)
≠(全角) !=(半角)!=(全角)
条件を文として書くには?
以下のように書く
時間=1でない
距離>10である
角度≦90でない
※時間≠1である、と同じ意味
※角度>90である、と同じ意味
記法は以下の通り
記法
肯定
否定
比較式である
比較式でない
条件式を使ったプログラム
(西暦和暦変換)
変数を定義して、名前を「西暦」とする。
※西暦を入力する
「和暦を求めます。」を出力する。
「西暦を入力してください。」を出力する。
入力を整数で受け取り、西暦に書き込む。
変数名
西暦
値
2004
西暦>1988である
※和暦を求める
↓
西暦>1988であるならば{
「今年は平成」を改行無しで出力する。 2004>1988である
↓
西暦-1988を改行無しで出力する。
真
「年です。」を出力する。
}をする。
試しに条件式を出力してみよう
1>0を出力する。
3=1を出力する。
1≠3を出力する。
4≦4を出力する。
4<4を出力する。
変数を定義して、名前を「西暦」とする。
西暦に2000を書き込む。
西暦>1988を出力する。
論理式を書くには?
以下のように書く
x>0、かつx<100
x>0である、あるいはy>100
記法は以下の通り
記法
論理積
論理和
比較式かつ比較式
比較式あるいは比較式
比較式を文として書く場合、活用し
ても良い
x>0であり、かつ・・・
x>0で、かつ・・・
論理式を使ったプログラム例
(金と銀の斧)
変数を定義して、名前を選択肢Aとする。
変数を定義して、名前を選択肢Bとする。
「金のオノと銀のオノがあります。」を出力する。
「この金のオノは,あなたのものですか? はい→1
入力を整数で受け取り、選択肢Aに書き込む。
いいえ→2」を出力する。
「この銀のオノは,あなたのものですか? はい→1
入力を整数で受け取り、選択肢Bに書き込む。
いいえ→2」を出力する。
選択肢Aが1でかつ選択肢Bが1ならば{
「あなたはウソツキですね」を出力する。
}をする。
課題1
和暦西暦変換のプログラムを、明治・大
正・昭和にも対応させてください
課題2
金の斧銀の斧のプログラムを、正直者に
対する処理も追加して完成させてください
課題3
相性判断のプログラム(前回HCPで設計
してもらいました)を、プログラムで書いてく
ださい
発展課題
肉屋のレシートのプログラム(前回HCPで
設計してもらいました)を、プログラムで書
いてください
課題提出について
課題1~3及び発展課題を、出来るところま
でやってみてください。
宛先は [email protected]
サブジェクトは半角で「report09」です。
〆切は12月17日(金)23時59分まで。
課題をやってみてどんなことを考えたかを考
察して、メール本文に付けてください。