- 本日の作業内容
- 前回の宿題について
今回の宿題提出ではちょっと緊張感がなくなってきたかもしれません.不備が増えたようです.
コンパイルエラー: b1566
解答用紙不使用: b1831
解答用紙に番号と名前なし: b1838 b1841
ハイフンライン無し: b1826 b1827 b1836 b1759
また,依然として警告も出ています.
警告: b1806 b1845
警告の出る理由は相変わらず printf 内での意味のない変数によるものです.注意してください.
printf("\n\n-------------------------\n",a,b);
|
インデント: b1820 b1821 b1848 b1854 b1864 b1772
変わったもので,インデントの際全てスペースで行っていたものがあります.見かけは区別しにくいですが,スペースではなく,TABで入れてください.
TABの代わりにスペース: b1835
さて,今回はさまざまなやり方が使われていました.やり方は一つではないとはいえ,無駄なことが多いものは減点しています.また,いろいろと考えてください.
if (0<= a*a+b*b && a*a+b*b <=1)
{
printf("Point: 10\n");
}
|
論理演算子を使っている人が何人かいました.ただ,プログラムの中で else を使用しているので,このように論理演算子を使用する必要はありません.プログラムは短くできます.
また,上の例では何度も a*a+b*b が出てきます.このような場合には別に変数を定義して入力を簡略化するほうが間違いも少ないし,わかりやすくなるのでそうしてください.
/*
10P (0.0)(0.1)(1.0)
8P (0.2)(1.1)(2.0)
6P (0.3)(1.2)(2.1)(2.2)(3.0)
4P (0.4)(0.5)(1.3)(1.4)(2.3)(2.4)(3.1)(3.2)(3.3)(3.4)(4.0)(4.1)(4.2)(4.3)(4.4)(5.0)
0P (1.5)(2.5)(3.5)(4.5)(5.5)(5.1)(5.2)(5.3)(5.4)
*/
|
上のようなコメント行を入れておいて,それに従って処理するものでしたが,上記のように自分で作業することは
絶対にしないでください!
どうやって楽をするのかを考えるのがプログラミングです.自分で全部やるのではなく,面倒なことは計算機にやらせましょう.
最後に壮大なものを一つ.このような考え方をする人が何人かいました.ちょっと残念です.
if(a==0 && b==0 || a==1 && b==0 || a==0 && b==1 || a==-1 && b==0 || a==0
&& b==-1)
{
printf("Point: 10\n");
}
else
{
if(a==0 && b==2 || a==0 && b==-2 || a==2 && b==0 || a==-2 && b==
0|| a==1 && b==1 || a==1 && b==-1 || a==-1 && b==1|| a==-1 && b==-1)
{
printf("Point: 8\n");
}
else
{
if(a==0 && b==3 || a==0 && b==-3 || a==3 && b==0 || a==-
3 && b==0 ||a==1 && b==2 || a==1 && b==-2 || a==2 && b==1 || a==2 && b==-1|| a==
2 && b==2 || a==2 && b==-2 || a==-2 && b==2|| a==-2 && b==-2|| a==-1 && b==2 ||
a==-1 && b==-2 || a==-2 && b==1 ||a==-2 && b==-1)
{
printf("Point: 6\n");
}
else
{
if(a==1 && b==5 || a==-1 && b==5 || a==1 && b==-5 || a==-1 && b==-5 || a==2 && b==5 || a==-2 && b==5 || a==2 && b==-5 || a==-2 &
& b==-5 || a==3 && b==5 || a==-3 && b==5 || a==3 && b==-5 || a==-3 && b==-5 || a==4 && b==5 || a==-4 && b==5 || a==4 && b==-5 || a==-4 && b==-5 || a==5 && b==5 || a==-5 && b==5 || a==5 && b==-5 || a==-5 && b==-5 || a==5 && b==1 || a==5 && b==-1 || a==-5 && b==1 || a==-5 && b==-1 || a==5 && b==2 || a==5 && b==-2 || a==-5 && b==2 || a==-5 && b==-2 || a==5 && b==3 || a==5 && b==-3 || a==-5 && b==3 || a==-5 && b==-3 || a==5 && b==4 || a==5 && b==-4 || a==-5 && b==4 || a==-5 && b==-4)
{
printf("Point: 0\n");
}
else
{
printf("Point: 4\n");
}
}
}
}
|
- 前回の復習
前回は if-else 文でした.ポイントは何らかの処理を分岐しても必ず行う場合には,セーフティネットとしての else を使用するということでした.覚えておいてください.
- switch 文
今回は switch 文ですが,この授業では必ず使えるようにならないといけないわけではありません.ただ,処理によっては if 文よりも速く動作する場合がありますので,あくまで必要に応じて使用する感じでしょうか.
switch 文で特徴的なことは,式の部分が整数でなければならないことです. if 文では,ある値よりも大きいや小さいとか,等しいなどブール値が返ってくるような条件式が使用されましたが, switch 文ではそのような条件式は使用できません.あくまで,整数の定数値のみ使用可能です.ややこしいですが,結果が整数値になる四則演算などを含む式は大丈夫です.やってみないとわからないことも多いですので,まずは演習で試してみましょう.
また, if-else 文のところでも説明しましたが,分岐処理の後,必ず何かを行うのであれば,条件の最後は case 句を書くのではなく, default にしましょう.何もしない場合もある場合には, case 句の並びだけで記述します.
- 実習
実習の演習問題は予習用の部分はすでに見えますのでしっかり予習してください.
- 次回の予習範囲
引き続き教科書のp.57まで勉強をしてきてください.
- 確認テストの予告
次回は条件分岐の総まとめです.授業の後半で確認テストを行いますので,準備をしておいてください.
- 宿題
宿題についても当日ご案内します.ただし,
宿題の問題を見ることができるのは27日以降になりますので,注意してく
ださい.