ざざ虫ロゴ


なでしこ入門

日本語プログラミング言語

なでしこ


 もしも〜なら…

○ if ‥‥ else ‥‥ 文(C言語)

例2-1 もし‥‥なら○○、そうでないなら××
「年=」と、西暦を入力して、「うるう年」かどうか判定する。
なお、うるう年は以下の年とする。
4で割り切れた年はうるう年、ただし、100で割り切れた年はうるう年でなく、400で割り切れた年はうるう年。
なでしこ
# 西暦から「うるう年」かどうか判定する 「年=」と尋ねる。 年はそれ。 もし、年%100==0ならば   もし、年%400==0ならば     「うるう年です」と表示。   違えば     「うるう年ではありません」と表示。 違えば   もし、年%4==0ならば     「うるう年です」と表示。   違えば     「うるう年ではありません」と表示。
C言語
'西暦から「うるう年」かどうか判定する #include <stdio.h> main() { int n; printf("年="); scanf("%d",&n); if (n%100==0) { if( n%400==0) { printf("うるう年です\n"); } else { printf("うるう年ではありません\n"); } } else { if( n%4==0) { printf("うるう年です\n"); } else { printf("うるう年ではありません\n"); } } }
なでしこ関連
もし、条件ならば
  条件が正しい場合の処理
違えば
  条件が正しくない場合の処理


 論理演算子

○ 論理演算子(C言語)

例2-2 もし‥‥なら○○、そうでないなら×× (論理演算子を使って)
「年=」と、西暦を入力して、「うるう年」かどうか判定する。
なお、うるう年は以下の年とする。
4で割り切れた年はうるう年、ただし、100で割り切れた年はうるう年でなく、400で割り切れた年はうるう年。
なでしこ
# 西暦から「うるう年」かどうか判定する 「年=」と尋ねる。 年はそれ。 もし、年%4==0かつ年%100!=0または年%400==0ならば   「うるう年です」と表示。 違えば   「うるう年ではありません」と表示。
C言語
'西暦から「うるう年」かどうか判定する #include <stdio.h> main() { int n; printf("年="); scanf("%d",&n); if (n%4==0&&n%100!=0||n%400==0) { printf("うるう年です\n"); } else { printf( "うるう年ではありません\n"); } }
なでしこ関連
関係演算子、特殊な不等号、論理演算子がある。



なでしこの関係演算子、特殊な不等号、論理演算子
記号(関係演算子)
  特殊な不等号
  論理演算子
記号意味  記号意味  記号意味
より大きい  ==数値として等しい  &&、かつ かつ(論理積)
≧ または >=以上  !=数値として等しくない  ||、または または(論理和)
より小さい  =&文字列として等しい   
≦ または <=以下  !&文字列として等しくない 
等しい   
≠ または <>等しくない 


 たくさんから一つを選ぶ

○ switch文(C言語)

例2-3 switch文による分岐処理
「+−*/」を選び、四則演算する。なお、A=12、B=5として計算させる。
なでしこ
# 条件による四則演算 a = 12 b = 5 「?」と尋ねる。 演算子はそれ。 演算子で条件分岐   「+」ならば     答えは、a + b     「a + b = {答え}」と表示。   「-」ならば     答えは、a - b     「a - b = {答え}」と表示。   「*」ならば     答えは、a * b     「a * b = {答え}」と表示。   「/」ならば     答えは、a / b     「a / b = {答え}」と表示。   違えば     「演算子が違います」と表示。
C言語
'条件による四則演算 include <stdio.h> main() { int a, b, c; a = 12; b = 5; c = getchar(); switch(c) { case '+': printf("a + b = %d\n", a + b); break; case '-': printf("a - b = %d\n", a - b); break; case '*': printf("a * b = %d\n", a * b); break; case '/': printf("a / b = %f\n", a / b); break; default: printf("Bad character !!\n"); break; } }
なでしこ関連
(条件)で条件分岐。
  (選択肢)ならば(実行したい内容)。
  (選択肢)ならば(実行したい内容)。
         …
ちがえば(実行したい内容)。
二択・三択:「?と二択。」、「?と三択。」という形で使う。それには、はい、いいえ、キャンセルが入る。「」なし
ボタンで選択:「?を?でボタン選択。」という形で使う。選択肢は、改行または改行記号の{〜}で区切って指定する。


 練習問題 2
四則演算のプログラム
変数A、Bを入力し、演算子の入力をボタンで選択するようにして、演算するプログラムを作成する。
例にある以下の部分を右のように変えてみよう。
「演算子は?」と尋ねる。 → 「演算子は?」を「+{〜}―{〜}×{〜}÷」でボタン選択。
回答
#条件による四則演算(ボタン選択) 「a =」と尋ねる。 aは、それ。 「a = {a}」と表示。 「b =」と尋ねる。 bは、それ。 「b = {b}」と表示。 「演算子は?」を「+{〜}−{〜}×{〜}÷」でボタン選択。 演算子はそれ。 演算子で条件分岐   「+」ならば     答えは、a + b     「a + b = {答え}」と表示。   「−」ならば     答えは、a - b     「a - b = {答え}」と表示。   「×」ならば     答えは、a * b     「a * b = {答え}」と表示。   「÷」ならば     もし、a=0ならば       「a=0 なので a / b は計算できません。」と表示。     違えば       答えは、a / b       「a / b = {答え}」と表示。


 課題 2
糖尿病の可能性をチェックする
簡単な糖尿病チェックプログラムを考えなさい。なお、1〜4問の回答は はい、いいえ、どちらとも言えない 
の三択とし、「はい」の場合点数は1、「どちらとも言えない」の場合点数は、1/2としなさい。
5問目の回答は、はい、いいえ の二択として、「はい」の場合点数は2としなさい。
また、質問と回答などを画面に表示する様にするともっと良い。
参考プログラム=sample\02-01 糖尿病チェック.nako

表 質問内容と診断結果
質問内容(はいの場合は各1点)
診断結果
甘いものや脂肪の多いものが好き
あまり運動してない
イライラすることが多い
最近体重が増えている
家族に糖尿病の人がいる  これだけ2点
4点以上:危険です。食事は控えめにして運動をしましょう。
3点以上:注意が必要です。食事・運動・睡眠を意識しましょう。
2点以上:ちょっと注意が必要です。健康に気をつけましょう。
それ以下:まず大丈夫でしょう。しかし油断は禁物です。
表示画面例

      糖尿病診断
    質問事項             回答
甘いものや脂肪の多いものが好き  はい
あまり運動していない         どちらとも言えない
イライラすることが多い         はい
最近体重が増えている         いいえ
家族に糖尿病の人がいる       いいえ

診断結果
糖尿病に注意する必要あり
回答
#糖尿病診断プログラム 「糖尿病の診断をします。これから出す質問に、 はい、いいえ、どちらとも言えない で答えてください。」と、言う。 回答は、「はい{〜}いいえ{〜}どちらとも言えない」 点数は、0 「      糖尿病診断{改行}」& 「    質問事項          回答」と、表示。 #質問して点数を加算する---------------------------------------------(1) #質問1 質問は、「甘いものや脂肪の多いものが好き  」 質問を回答でボタン選択。 「{質問}{それ}」と表示。  それで条件分岐   「はい」ならば     点数=点数+1     「どちらとも言えない」ならば     点数=点数+0.5 #質問2 質問は、「あまり運動していない       」 質問を回答でボタン選択。 「{質問}{それ}」と表示。 それで条件分岐   「はい」ならば     点数=点数+1     「どちらとも言えない」ならば     点数=点数+0.5 #質問3 質問は、「イライラすることが多い      」 質問を回答でボタン選択。 「{質問}{それ}」と表示。 それで条件分岐   「はい」ならば     点数=点数+1     「どちらとも言えない」ならば     点数=点数+0.5 #質問4 質問は、「最近体重が増えている       」 質問を回答でボタン選択。 「{質問}{それ}」と表示。 それで条件分岐   「はい」ならば     点数=点数+1     「どちらとも言えない」ならば     点数=点数+0.5 #質問5 質問は、「家族に糖尿病の人がいる      」 質問を「はい{〜}いいえ」でボタン選択。 「{質問}{それ}」と表示。 もし、「はい」ならば   点数=点数+2      #点数により診断結果を表示する---------------------------------------(2) 「◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇ 診断結果」と表示。 もし、点数≧4ならば   「糖尿病の危険性あり」と表示。   「危険です。食事は控えめにして運動をしましょう。」と言う。 違えば、もし、点数≧3ならば   「糖尿病に注意する必要あり」と表示。   「注意が必要です。食事・運動・睡眠を意識しましょう。」と言う。 違えば、もし、点数≧2ならば   「糖尿病にちょっと注意」と表示。   「ちょっと注意が必要です。健康に気をつけましょう。」と言う。 違えば   「糖尿病の恐れなし」と表示。   「まず大丈夫です。しかし油断は禁物です。」と言う。


 おまけ 2
年号を変換する
西暦の年月日から大正・昭和・平成などの年月日に変換する。
入力は、西暦、月、日別々に行う。出力は、年号、月、日とし、対比して表示しなさい。
なお、各年号の元年の西暦月日は以下のとおり。
  明治元年  1868年 9月 8日
  大正元年  1912年11月10日
  昭和元年  1926年12月25日
  平成元年  1989年 1月 7日

参考
日付フォーマット:yyyy/mm/dd
日付で使える関数:日数差 用例:日付Aと日付Bの日数差
和暦変換(確認):日付を和暦変換  
回答
#年号を変換する #西暦の年月日から大正・昭和・平成などの年月日に変換する。 #入力は、西暦、月、日別々に行う。出力は、年号、月、日とし、対比して表示しなさい。 #なお、各年号の元年の西暦月日は以下のとおり。 #  明治元年  1868年 9月 8日 #  大正元年  1912年11月10日 #  昭和元年  1926年12月25日 #  平成元年  1989年 1月 7日 明治元年は、「1868/09/08」です。 大正元年は、「1912/11/10」です。 昭和元年は、「1926/12/25」です。 平成元年は、「1989/01/07」です。 #入力した年、月、日からなでしこ日付に変換する。 「西暦の年月日から大正・昭和・平成などの年月日に変換します。」と、表示。 書式は、「%s」 「西暦何年ですか?」と、尋ねる。 西暦は、「{それを書式で形式指定}」。 書式は、「%s」 「何月ですか?」と、尋ねる。 月は、「{それを書式で形式指定}」。 書式は、「%s」 「何日ですか?」と、尋ねる。 日は、「{それを書式で形式指定}」。 #年月日が入力されなかった場合、終了する もし、西暦=「」または月=「」または日=「」ならば   「年月日が正確に入力されていません。」と表示   終わる。 西暦年月日は、「{西暦}/{月}/{日}」。 「入力した西暦年月日は、{西暦年月日}です。」と、表示。 #日数差関数を使って、該当和暦を特定し、年の計算、和暦による表示を行う。 もし、西暦年月日と明治元年の日数差>0 ならば、「明治以前です」と表示。 違えば、   もし、西暦年月日と大正元年の日数差>0 ならば、     もし、西暦=1868 ならば、「明治元年{月}月{日}日です。」と表示。     違えば、「明治{西暦-1868+1}年{月}月{日}日です。」と表示。   違えば、     もし、西暦年月日と昭和元年の日数差>0 ならば、       もし、西暦=1912 ならば、「大正元年{月}月{日}日です。」と表示。       違えば、「大正{西暦-1912+1}年{月}月{日}日です。」と表示。     違えば、       もし、西暦年月日と平成元年の日数差>0 ならば、         もし、西暦=1926 ならば、「昭和元年{月}月{日}日です。」と表示。         違えば、「昭和{西暦-1926+1}年{月}月{日}日です。」と表示。       違えば、         もし、西暦=1989 ならば、「平成元年{月}月{日}日です。」と表示。         違えば、「平成{西暦-1989+1}年{月}月{日}日です。」と表示。        #確認のため和暦変換関数にて表示する。       「なでしこ和暦変換では、{西暦年月日を和暦変換}です。」と表示。



このホームページはLightiningHTMLで作成しました。


Copyrights(c) 2000 ザザ虫. All rights reserved.