プログラミング II (RISE) 1999・お知らせ
プログラミング IIに関するお知らせを掲示します。
(新しいものほど、上に記載します。)
第3回レポートの評価
各自あての連絡がある場合があります。
\\Ruby\report\kagawa\1999\programming2\Messages\s各自の学籍番号\message.txt
を見ておいてください。
- 問4
ループの最初または最後に、配列の添字が範囲を逸脱してしまうような解答が、
割合多かった。n個の点がある折れ線グラフを描くには、n-1個の線を引けば良い。
また、線を描き始める点に MoveToしていないので、
最初に余計な線が入っているような解答も多かった。
- 問6
leapyearを使ってという問題なのに、daysのなかで、
leapyearを使っていない解答が意外に多かった。
y%400==0 || y%100!=0 && y%4==0のような式を、
何度も書くのでは、leapyearを定義した意味がない。
- 問7
次のような count関数を使って、
1つの文字列を何度も調べるような解答が多かった。
int count(char str[], char c) {
int i, ret=0;
for(i=0; str[i]; i++) {
if (str[i]==c) ret++;
}
return ret;
}
これでは、効率があまり良くない。
- 問8
ポインタを使って、
int mystrlen(char* str) {
int i=0;
for(; *str; str++) {
i++;
}
return i;
}
という解答が多かった。配列の演算[]を使った解答を期待していたのだが...
- 問9
c[0][0] = a[0][0]*b[0][0]+ a[0][1]*b[1][0] + a[0][2]*b[2][0];
c[0][1] = a[0][0]*b[0][1]+ a[0][1]*b[1][1] + a[0][2]*b[2][1];
...
のような、力わざの解答が結構多かったが、これは反則に近い。
もっと大きな配列に対応できるように、繰り返しの文を使うべきでしょう。
参考書の紹介
今使っている教科書は、初学者対象にひじょうに平易に書かれていて良い本ですが、
簡単にするために説明が省かれている事柄も多く、
一通り勉強した後で C言語の知識を整理したい時には、
あまり向いているとは言えません。
そこで、最近出版された次の本をお勧めします。
もう一度、基礎から C言語のすべてを勉強したい人に
定本 明快 C言語 入門編
柴田 望洋 著
ソフトバンク
ISBN4-7973-1151-7
\2,200-
一通り、C言語は習得したが、もう一段、上のレベルを目指したい人に
C/C++によるプログラミングスタイルブック
林 晴比古 著
ソフトバンク
ISBN4-7973-1183-5
\1,900-
C言語の知識は 2年生以降の授業でも絶対必要になりますから、
春休みにしっかり復習しておいてください。
第4回レポートの説明
演習問題(3)のうち、
以下の条件を満たすように
-
計 4問以上選択すること
-
1〜3から少なくとも 1問、4〜8から少なくとも 1問選択すること
-
1番と2番を同時に選択した場合は、両問で 1.5問とみなす。
また、4番と5番を同時に選択した場合は、両問で 1.5問とみなす。
8番は (a)だけでも、1問と見なす。
(b)だけの場合 1.5問、両方解いた場合は 2.5問と見なす。
問題を選んで、プログラムを作成し、レポートを作成せよ。
プログラムは数人で相談して作っても良いが、その場合でも、
実行例は必ず別々に考えること。
オンライン提出の場所は、
\\Ruby\Report\kagawa\1999\programming2\Report4\
その他は第 1・2・3 回レポートの作成提出要領に準じます。
(追加: 表紙に選択した問題の番号を必ず書いてください。)
締切は印刷・オンラインとも 2月 23日(水)18:00。
★★★ 重要! ★★★
以下の者
- 1月 19日以降に累積の無断欠席(その週の課題を提出していない場合を含む)
の回数が 3回以上になった者
- 1月 12日時点で、既に累積の無断欠席が 3回以上になっていて、
第 3 回レポートの提出時に、次回のレポートも直接手渡しで提出するように言われた者
は、
通常のレポート問題の他に、欠席した週の「今週の課題」を解いて、
レポートに追加し、
印刷分を直接手渡しで提出してください。
- 2月 23日(水) 13:30 〜 17:00
- 2月 24日(木) 13:30 〜 17:00
のいずれかに香川研究室に来てください。
(どうしてもこの時までに来れない者は事前に連絡すること。)
もちろん、これ以前でも構いませんが、不在の時もありますので、
できるだけ、事前にメールなどで確認をとるようにしてください。
「今週の課題」は、授業の各週の Webページに公開してあります。
すでに解答を公開しているものもありますが、
提出時にいくつかの質問をしますので、必ず自分の力で解いてください。
欠席した回数や欠席した週が良くわからない人は、
\\Ruby\report\kagawa\1999\programming2\Messages\s各自の学籍番号\message.txtを見てください。
★★★★★★★★★★
演習問題(3)の訂正
1番と 2番の問題の中の intをすべて doubleに変更してください。
正しい問題文:
-
直交座標 (x, y)と極座標 (r, t)の変換は
r | = | sqrt(x*x+y*y); |
t | = | atan2(y, x); |
という式で行なわれる。
直交座標から極座標への変換を行なう関数、
void c2p (double x, double y, double *ptrR, double *ptrT)を定義せよ。
-
直交座標で表された点 (x, y)を角度θ回転すると、
(x cosθ-y sinθ, x sinθ+y cosθ)に移る。この回転を計算する関数
void rotate (double x, double y, double theta, double
p *newX, double *newY)を定義せよ。
第 3 回レポートの説明
演習問題(2)のうち、
難易度の数の合計が 5以上となるように問題を選んで、プログラムを作成し、
レポートを作成せよ。
演習問題(2)に対する補足
プログラムは数人で相談して作っても良いが、その場合でも、
-
問 1・4〜10・12については、実行例は必ず各自で異なるデータで作成すること。
-
問 2については(問題では 91となっているが)最初の呼出しの戻り値を各自で変えること。
- 問 11については、必ず各自で異なる形の数学関数を用いること。
オンライン提出の場所は、
\\Ruby\Report\kagawa\1999\programming2\Report3\
その他は第 1・2 回レポートの作成提出要領に準じます。
締切は印刷・オンラインとも 1月 18日(火)18:00。
★★★ 重要! ★★★
これまでに授業を 3回以上無断欠席している者(その週の課題を提出していない者を含む)は、
通常のレポート問題の他に、欠席した週の「今週の課題」を解いて、
レポートに追加し、印刷分を直接手渡しで提出してください。
- 1月 18日(火) 午後 2時 〜 午後 5時
- 1月 19日(水) 午後 2時 〜 午後 5時
のいずれかに香川研究室に来てください。
(どうしてもこの時間に来れない者は事前に連絡すること。)
「今週の課題」は、授業の各週の Webページに公開してあります。
すでに解答を公開しているものもありますが、
提出時にいくつかの質問をしますので、必ず自分の力で解いてください。
欠席した回数や欠席した週が良くわからない人は、
\\Ruby\report\kagawa\1999\programming2\Messages\s各自の学籍番号\message.txtを見てください。
★★★★★★★★★★
第 2 回レポートの評価
- DOSプロンプトの画面でインクまたはトナーが大量に消費されるようなので、
白い背景の DOSプロンプトを使いたいという人は
\\Vodka\Material\common\CBuilder\dos\
の Cpp.batを C:\KagawaUniv\bin\に、
Cppというショートカットを
C:\Windows\スタートメニュー\工学部メニュー\
にコピーしておいてください。
- 変数名になんでもfactを使うのはやめましょう。
例題で factという変数名を使ったのは階乗
(factorial)を求める例題だったからです。
変数の使われ方に合った名前をつけるようにしましょう。
- 問題 4の数列は何を意味しているか、わかったでしょうか?
- 問題 5はグラフの左端の点にあらかじめ
MoveToしておかないと余計な線が描かれてしまいます。
「面白い形のグラフ」という言葉に悩んだ人も多かったようですが、
基本的に自分で面白いと思えば良いです。
- 今回のレポートについて
\\Ruby\Report\kagawa\1999\programming2\Messages\
の各自の学籍番号のフォルダに個人宛の連絡事項が入っている場合があるので、
見ておいてください。
第 2 回レポートの説明
演習問題(1)のうち、
問 1〜4から 1題以上、問 5〜7から 1題以上、全体で 3題以上を選択して
プログラムを作成し、レポートを作成せよ。
問 1〜4については、3通り以上の実行例(画面のコピーまたは出力文字のコピー)、
問 5〜7については問題文に指定されている数の実行例(画面のコピー)を含んでいること。
プログラムは数人で相談して作っても良いが、その場合でも
問 1〜4・6については、実行例は必ず各自で異なるデータで作成すること。
問 5・7については、必ず各自で異なるプログラムにすること。
オンライン提出の場所は、
\\Ruby\Report\kagawa\1999\programming2\Report2\
その他は第 1 回レポートの作成提出要領に準じます。
締切は印刷・オンラインとも 11月 26日(金)18:00。
第 1 回レポートの評価
-
exeファイルのオンライン提出がショートカットになっている人が、
ひじょうに多かった。(約 15名)
該当する人は提出し直すこと。
普通に左ボタンでドラッグすると、
exeファイルのみコピーではなく、
代わりにショートカットができる。
コピーをするには右ボタンでドラッグして、
メニューで「ここにコピー」を選ぶ必要がある。
-
またオンライン提出分で必要なファイル(特に exeファイルや 2番の cppファイル)が提出されていない人もひじょうに多かった。
(約 15名)
下記の説明を良く読んで必要なファイルを全て提出すること。
-
印刷分の提出がまだの人(2, 3名)は早急に提出すること。
-
その他少数だが、
ファイル名に英数字以外を使っている人、
印刷分の右上をホッチキスで綴じている人、
実行画面のコピー (スクリーンショット・Alt+Fn+Del)がレポートにない人、
がいた。
次回から気をつけること。
次回以降のレポートでは、このようなミスは減点の対象となります。
第 1 回レポートの説明
つぎの 2つのプログラム
- (問 2.3.1の発展)
キャラクター(文字)によるグラフィックス(絵は各自のオリジナル)を描くコンソールアプリケーション。
絵自体は 問 2.3.1のような文字の形でなくてもよい。
例:
* *****
** * *
* * * *
* * **
***** *
printfまたは coutを用いる。プリント p.5のエスケープシーケンスを用いて、
文字の色を 3色以上使うこと。
- (問 2.3.9の発展)
C++Builderのグラフィックス関数を用いて各自のオリジナルの絵を描く
ウインドウアプリケーション。
を作成し、またそれらについてのレポートを作成し提出する。
プログラムは仲間で協力しあって作って良いが、
必ず各自で異なるプログラムにすること。
全く同一か、違いが 1, 2箇所しかないプログラムは認めない。
レポートも各自で作成すること。
- レポートは Wordで作成する。
- 最初に表題「プログラミング II 第 1 回レポート」・名前・学籍番号・顔写真が入っていること。
- プログラムの実行時の画面のイメージが貼り付けられていること。
(モノクロのプリンタで印刷するときはどこが何色か簡単な説明をつけてください。)
- プログラムのソース(1.はソースファイル全体、2.は Unit1.cppのうち自分で書いた部分)が入っていること。
その部分には固定ピッチのフォント(MS明朝・courier newなど)を使うこと。
- 最後に(授業とレポートの)感想が数行入っていること。
A4用紙に印刷したものとファイルの両方を提出する。
印刷したものは、左上をホッチキスで綴じて
学務係前のレポートボックスに提出する。
Docファイルは
\\Ruby\Report\kagawa\1999\programming2\Report1\
の下の各自の学籍番号のフォルダに「report1.doc
」というファイル名で
オンライン提出すること。
また、同じフォルダに「1」と 「2」というフォルダを作成し、
それぞれのフォルダに各問題のソースファイル(1.の場合は .cまたは .cppファイル、
2.の場合は C++Builderが生成するファイルのうち、.cpp,
.h, .bpr, .res, .dfmファイル)と
実行可能ファイル(.exeファイル)も同時にオンライン提出すること。
オンライン提出するファイルのファイル名は英数字のみをもちいること。
締切は印刷・オンラインとも 11月 5日(金) 18:00。
プログラミング II(RISE)のホームページへ戻る。
Koji Kagawa (kagawa@eng.?????)