ta_AProg/2011
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*応用プログラミング演習 2011年度 TA向けページ [#r30c585d]
[[takataka]] | [[時間割2011]] | [[AProg/2011]] | [[AProg2010]] | [[ta_AProg2010]]
#contents
//&color(Red){工事中};
-Google Documentの共有フォルダ https://docs.google.com/?ui=3#folders/0B3hjc-iHtX2cODUwNjA2YjgtMDZkMi00ZWQ2LTk5ZjktYjdkMTc5YmEyZjZi
**おしらせ [#q030ad76]
//-&color(White,Blue){NEW};
-2011-09-06 9月19日までの宿題 [[ta_AProg/2011/HW0919]]
-2011-09-06 このページを作成しました.
**注意 [#rdeabaf6]
-お金をもらって仕事をするわけですから,みなさんはプロです.
その自覚をもって行動して下さい.
-担当科目の授業時間外にも準備や勉強に時間を割く必要があります.
TAの時給が高い理由にはいろいろありえますが,これも一つの理由だと考えます.
-欠勤する場合,事前に高橋に連絡をとって下さい.
勝手に代理を頼んだりしてはいけません.
**昨年度の反省 [#l9c463c4]
-現行の課題Aなどは自分でやっておくように言い,TAチェックの課題を減らしたらよい?
-TAさんおすすめのC言語関係の本を紹介するコーナーをつくる?
**第7回1107 [#gaf41576]
-講義資料 なし スキャン版 なし
-演習のページ [[ta_AProg/2011/ex07]] | [[AProg/2011/ex07]]
-&attachref(./checksheet.pdf); | &attachref(./sammoku_4ta.c.pdf); &attachref(./sammokumain_4ta.c.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
//,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
//,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
//,ex04,秋山,佐伯,村下,長瀬,濱岡,柳原,鰐部
//,ex05,鰐部,秋山,佐伯,村下,長瀬,濱岡,柳原
//,ex06,柳原,鰐部,秋山,佐伯,村下,長瀬,濱岡
,ex07,濱岡,柳原,鰐部,秋山,佐伯,村下,長瀬
***おしらせと宿題 [#l2ea89fa]
>
村下くん: チェック完了してますか? 確認欄の oxo には何か意味がありますか? 完了してない可能性があると解釈せざるを得ないので,高橋の方の集計作業に入れません.もし終わってるなら o にしといてください.
<
>
&color(Red){第6回のチェック結果で,Aを出せてなくてBを出したことになってる人がいます.この回の課題ではそういうケースはほとんど発生しないように思う(Aのしめきりが最後までだから)のですが,入力間違いではありませんか?今一度確認をお願いします.};
<
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--%%講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)%%
--演習課題Aをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---ソース中にどう修正したのかコメントを入れておいてください
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートはすみやかに高橋or村下くんor鰐部くんに渡してください
***コメント [#bf646006]
-佐伯くん 要再提出 → ok
--isBlank()まわりが変です.コメントの文をよく読んでもらえないでしょうか.
-鰐部くん よくできました.
-長瀬くん 要再提出 → ok
--これはまずい
if(0 <= x && x <= BOARDSIZE && 0 <= y && y <= BOARDSIZE && b->board[y][x] == 0)
-柳原くん 要再提出(まずい理由もつけてください)→ ok
--これもまずい
if(b->board[y][x]==0 && ((x<BOARDSIZE && x>=0) && (y<BOARDSIZE && y>=0)))
>
以前の場合だと、まずb.board[y][x]の値を見るため
その時のx,yの値によっては配列の範囲外を見てしまうのでまずい
先にxとyが配列の範囲内であるかの判別をしてから
b.board[y][x]の値を見るべきだという事でしょうか。
<
そういうことです.
-村下くん 要再提出 → 要再々提出 → 本質的な部分は問題なくなりましたが,勝敗判定の出力メッセージが文字化けしてます… 次回のTAは早めに来てください.
どうしてこういうことを繰り返すのかお話を聞きたいと思います.
--これもまずい
if( x < 0 || x > BOARDSIZE || y < 0 ||y > BOARDSIZE)return 0;
--sammokumain.c の間違いが残ってます
--&color(Red){TAとして活動するならもっときちんと取り組んでくださることを期待します.}; → と書きましたが,まだおかしいです.
ちゃんとテストしてないのでしょうか?
-秋山くん 要再提出 → ok
--何度も同じミスを繰り返しています.指示をちゃんと読んでください.
-濱岡くん よくできました.ただし…
--以下は他によりよい修正法があります.考えておいてください.
#pre{{
if(b->board[y][x] == 1) printf("o");
if(b->board[y][x] == -1) printf("x");
//**修正
if(b->board[y][x] == 0) printf(".");
}}
--以下はまずいでしょうか?
#pre{{
if(x >=0 && x < BOARDSIZE && y >=0 && y < BOARDSIZE && b->board[y][x] == 0)
}}
**第6回1031 [#r50b9080]
-講義資料 [[AProg:AProg2011-06.pdf]] スキャン版 &attachref(./2011-scan06.pdf);
-演習のページ [[ta_AProg/2011/ex06]] | [[AProg/2011/ex06]]
-&attachref(./checksheet.pdf); | &attachref(./ex06.pdf); &attachref(./ex06zs.c.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
//,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
//,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
//,ex04,秋山,佐伯,村下,長瀬,濱岡,柳原,鰐部
//,ex05,鰐部,秋山,佐伯,村下,長瀬,濱岡,柳原
,ex06,柳原,鰐部,秋山,佐伯,村下,長瀬,濱岡
***おしらせと宿題 [#l2ea89fa]
&color(Red){25日13時に課題Aを一部修正しました.}; こちらにも data4ex06a.txt をつけておきます.
#pre{{
$ cat data4ex06a.txt
1055 Hogeo 40 1.5
666 Henako 18
5
999 Fugayo 20 0.1
2345 Piyochan 67 1.0
2 HogeHogeHogeo 1 xxx
1 Uni 100 9.0
}}
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,Bをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---送るソースは自分で作成したものだけで結構です
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#gee2ee82]
-村下くん
--A 要再提出 → ok
---問題文をよく読んでください.以下では&color(Red){TAにあるまじき間違いをしています.};
#pre{{
struct data{
int id;
char name[50];
int age;
double sight;
};
}}
---fopen()のエラー処理をさぼらないでください.
---以下では配列の大きさを超えてfscanf()できてしまいます.課題の文章と講義資料をよく読んで直してください.
for(n=0;2==fscanf(fp,"%d %s",&x[n].code,x[n].addr);n++);
---&color(Red){TAとして活動するならもっときちんと取り組んでくださることを期待します.};
--B 要再提出 → ok
---Aと同様の間違いが多数あります.出力の形式が正しくありません.
&color(Red){TAとして活動するならもっときちんと取り組んでくださることを期待します.};
それから,
printf("探索回数は17回でした\n",nsearch);
ここは課題の要件ではありませんが…ちょっと信じられない間違いです.
-秋山くん
--A 要再提出 → ok
---村下くんと同様の間違いが複数あります.講義資料読んでないのでしょうか? &color(Red){TAとして活動するならもっときちんと取り組んでくださることを期待します.};
--B 要再提出.読み込み部分を直してください. → ok
-佐伯くん
--A 要再提出.村下くんのAの一番最初のコメント参照.&color(Red){TA,中でも馬研の学生がこんな間違いしたらいかんのではないかと思います};.→ ok
--B よくできました.
-柳原くん
--A 要再提出.→ ok
---村下くんのAの一番最初のコメント参照.&color(Red){TAにあるまじき間違いです.};
--B 要再提出.→ ok
---読み込み部分は,明記していませんが講義資料や課題Aから暗黙のうちにAと同様の作りにしてくれることを期待しています.
-鰐部くん
--A 要再提出 → ok
#pre{{
#define N 100
struct data {
int id;
char name[N];
int age;
double sight;
};
村下氏へのAのコメントをみて, 自分も同じ間違いをしていたので修正しましたが, 課題の
> ただし,名前は最大50文字格納できるようにすること.
という文章でひっかかって間違えるのではないかと思われます.
(半角文字なら配列を50個分だけ用意すればいいので, それで宣言すればいいのではと最初思いました)
演習でも, 同じ間違いをしそうな学生が非常に多い気がします. (個人的な意見ですが)
}}
こういう間違い方をする人がいるとは想像できませんでした.
課題の文を「アスキー文字で50文字分を」に修正しておきました.
村下氏へのコメントを読んでもぴんとこなかったというのは大変残念です.
「2バイトコードのことを考えろ」というような本筋をはずれた話なら,「&color(Red){TAにあるまじき間違い};」とまでは指摘しませんよ.
---たとえこの文字配列の大きさを100とするのが正しかったとしても,構造体配列の大きさのために定義した N を用いるのは変ですね.
--B よくできました.
-濱岡くん
--A 佐伯くんのAへのコメント参照 → ok
--B 郵便番号の出力形式が間違っています.要再提出 → ok (%.7d で実現してくれましたが,本当は %07d がよいでしょう)
-長瀬くん
--A よくできました
--B よくできました
**第5回1024 [#j3469498]
-講義資料 [[AProg:AProg2011-05.pdf]] スキャン版 &attachref(./2011-scan05.pdf);
-演習のページ [[ta_AProg/2011/ex05]] | [[AProg/2011/ex05]]
-&attachref(./checksheet.pdf); | &attachref(./ex05check.pdf); &attachref(./ex05.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
//,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
//,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
//,ex04,秋山,佐伯,村下,長瀬,濱岡,柳原,鰐部
,ex05,鰐部,秋山,佐伯,村下,長瀬,濱岡,柳原
***おしらせと宿題 [#l2ea89fa]
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,B,Cをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---送るソースは自分で作成したものだけで結構です
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#e9e92975]
-佐伯くん
--A よくできました
--B 次のように関数Uzumaki()を呼んでますが,この呼び方では問題が起こります.
ソースの再提出は不要ですので,どのように修正すればよいか,何が問題かをメイルで送ってください.
Uzumaki(a, w, h, thetamax, a);
佐伯くんからのお返事です.その通りです.ok
>
課題Bの問題点についてですが入力画像用の配列と出力画像の配列を同じにしていると回転処理後の点を使って回転処理をしてしまうという問題があると思います。
よって引数として渡す入力画像用の配列と出力画像用の配列を別にしたらいいと思います。
<
--C よくできました
-秋山くん
--A よくできました.変な個数が入力されるのを防ぐ工夫をしてくれましたが,
do{
printf("何個?: (1〜100まで)");
scanf("%d", &m);
if(m <= 0 || m > 100)
printf("1〜100までの間です\n");
}while(m <= 0 || m > 100);
これだと条件を複数箇所にかかないといけないので,保守性に難があります.
フラグを使うとかする方がよいかもしれません.printf()の文字列のことまで考えだすと,チェックの関数作りたくなるかも (^^)
--B よくできました
--C よくできました
-濱岡くん
--A わかってやっているかどうかがわからない(コメントつけてくれるとよいのですが)のでつっこみます.
以下には何かが足りない気配がしますが,なぜこれで問題ないのか説明をメイルで送ってください.→ ok
#pre{{
#include "prime.h"
int main(){
int a[100];
int n,i;
printf("何個?(´・ω・`)つ:");
}}
--B よくできました
--C よくできました.データが負数として入力されたら再入力させるように作ってくれました.ただし,ヘッダファイルの作り方&使い方に潜在的な問題があります(授業では説明してないところですが).
uzumaki.h のコメントを読んで,実際にはどうするのがよいか調べておくとよいでしょう.
-柳原くん
--A よくできました
--B よくできました.重箱の隅ですが,
#pre{{
#include<math.h>
#include"uzumaki.h"
#define THETAMAX M_PI/2.0
}}
の最後の行は
#define THETAMAX (M_PI/2.0)
の方がよいでしょう.
#define HOGE 2 + 3
みたいなのよりはましですが,除算より結合順位が上の演算が前にきたら気持ち悪いことになるかもしれませんので.
--C よくできました.負数が入力されたら再入力を促すように作ってくれました.
#ifndef も使ってくれました.
ちなみに,配列の大きさを表す定数も search.h で定義するようにしてくれましたが,この課題では main の方で定義していてもよいし,int x[100]; とかでも構いません.
-村下くん
--A 濱岡くんのAと同じことになっています.同様に対応してください.
村下くんのお返事です.その通りですね.
>
課題Aのプログラムでは#include<stdio.h>を書いていませんでした。
理由はprime.hですでに#include<stdio.h>と書かれていたので、ex05prime.cでは#include"prime.h"
を書く事で#include<stdio.h>も書いていることと同じになるからです。
<
--B よくできました
--C よくできました.ヘッダファイルについては濱岡くんのCへのコメントも参照してください.
-鰐部くん
--A よくできました
--B よくできました
--C よくできました.負数が入力されたら再入力を促すように作ってくれました.#ifndef も使ってくれました.
-長瀬くん
--A 濱岡くん,村下くんのAと同様 → ok
--B よくできました
--C よくできました.#ifndef も使ってくれました.柳原くんのCへのコメントも参照しといてください.
ちなみに,exit() の引数は,0,1を使わず stdlib.h で定義された値 EXIT_SUCCESS, EXIT_FAILURE を使うことが推奨されています.
たいていの環境では前者が0で後者が1になってると思いますが,規格上はexit(0)が「成功終了」ではない可能性がある(環境依存である)ので,exit(0) と書かずに exit(EXIT_SUCCESS) と書くとすてきなようです.
余談: exit()の引数は,次のようにプログラムが成功したかどうかによって動作を切り替えるシェルスクリプトを作るのに役立ちます.この例は sh/bash を想定してます.
#pre{{
$ cat exit.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
exit(EXIT_SUCCESS);
//exit(EXIT_FAILURE);
}
$ cc exit.c
$ ./a.out && echo "hoge" a.out がSUCCESSなので && のうしろのコマンドが実行される
hoge
(FAILUREにする)
$ cc exit.c
$ ./a.out && echo "hoge" a.out がFAILUREなので && のうしろのコマンドは実行されない
$
}}
**第4回1017 [#a74711ef]
-講義資料 [[AProg:AProg2011-04.pdf]] スキャン版 &attachref(./2011-scan04.pdf);
-演習のページ [[ta_AProg/2011/ex04]] | [[AProg/2011/ex04]]
-&attachref(./checksheet.pdf);(びみょーに更新しました) | &attachref(./ex04.pdf); &attachref(./ex04a.pdf); &attachref(./ex04b.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
//,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
//,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
,ex04,秋山,佐伯,村下,長瀬,濱岡,柳原,鰐部
***おしらせと宿題 [#z05a9b1a]
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,Bをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---Aのstep1のソースは不要です(wani君指摘ありがとう)
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#zbb00706]
-鰐部くん
--ex04A よくできました
--ex04B よくできました
-村下くん
--ex04A よくできました
--ex04B okですが,反転の関数にまともな名前をつけてくださることを期待しています.
void mirror1(int ipt[480][640],int x,int y)
void mirror2(int ipt[480][640],int x,int y)
-佐伯くん
--ex04A よくできました
--ex04B よくできました
-秋山くん
--ex04A データ数がおかしいと再入力を促すように作ってくれました.
再提出は不要ですが,以下の点についてよく考えてください.環境によっては警告がでます.
void main(){
--ex04B 課題の要件を満たしてみません.反転の関数にまともな名前をつけてくださることを期待しています.要再提出 → ok
#pre{{
void Reverse1(int a[][640], int n, int m);
void Reverse2(int a[][640], int n, int m);
void Reverse3(int a[][640], int n, int m);
}}
-柳原くん
--ex04A よくできました
--ex04B よくできました
-長瀬くん
--ex04A ok. 再提出は不要ですが,以下の関数はどこがいけてないか考えておいてください.
#pre{{
int min(int a[], int n)
{
int m, i;
for(i = 0; i < n; i++){
if(i == 0 || m > a[i])
m = a[i];
}
return m;
}
}}
--ex04B ok. 再提出は不要ですが,以下についてよく考えておいてください.
for(j = 0; j < width/2.0; j++){
-濱岡くん
--ex04A okですが,以下の点についてよく考えておいてください.
void nnn_times(int a[],int n);
int minimum_n(int n,int a[]);
--ex04B okですが,以下の点についてよく考えておいてください.
int W=640,H=480;
int a[H][W];
**第3回1010 [#ib0f219f]
-講義資料 [[AProg:AProg2011-03.pdf]] スキャン版 &attachref(./2011-scan03.pdf);
-演習のページ [[ta_AProg/2011/ex03]] | [[AProg/2011/ex03]]
-&attachref(./checksheet.pdf); | &attachref(./ex03.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
***おしらせと宿題 [#z05a9b1a]
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,B,Cをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---課題Aの%%ソース%%データファイルは送らなくて結構です
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#he6818d7]
-秋山くん「特記事項」の使い方はその欄のコメントにありますのでお手数ですが参照して書き直してみてください.→ 修正ありがとうございます
-rt11m008 のひと.黒い箇所は高橋以外は変更してはいけません.入力場所を間違ってないでしょうか.至急修正をお願いします.それから,注意書きがあるはずですが,○は最後につけてください(想像力を働かせてよく考えましょう.君が○をつけた直後に高橋がアクセスしてこのファイルを完成版として保存したらどうなる?) → 修正ありがとうございます
-秋山くん
--ex03x999.c よくできました
--ex03fliph.c よくできました
--ex03c.c okですが,最初のメッセージ「扱える画像サイズは…」の順序がサンプルと逆です.
-村下くん
--ex03x999.c は? → よくできました
#pre{{
> 課題Aは「課題Aのソースは送らなくて結構です」と書いたあったので送らないでいいと
思っていたので送っていませんでした、すみません。
ごめんなさい,ソースじゃなくてデータファイルを送らなくてよいと書いたつもりに
なっていました.TAページは修正しておきました.
}}
--ex03fliph.c 反転関数にバグあり.要再提出 → ok
--ex03c.c 再提出は不要ですが,出力の方のfopen()もエラー処理してください.なぜかこっちの反転関数は正しいようです.
-柳原くん
--ex03x999.c よくできました.fclose() はもっと上でやる方がよいと思いますが.
--ex03fliph.c よくできました.入力画像サイズが扱える大きさを超えてたら停止するように作ってくれました.
--ex03c.c 再提出は不要ですが,出力の方のfopen()もエラー処理してください.
-佐伯くん
--ex03x999.c よくできました.
--ex03fliph.c バグあり.要再提出 → なおってません.要再々提出 → ok
--ex03c.c 同じくバグあり.要再提出 → なおってません.要再々提出 → ok
-長瀬くん
--ex03x999.c よくできました.
--ex03fliph.c よくできました.ただし,当日までに,反転関数内で新たな画像配列を用意しないで済ませる方法を考えておいてください.
--ex03c.c ok. ただし,反転関数については↑と同様.それから,↓はださださです.どうすべきか当日までに考えておいてください.
printf("@_@)/ 扱える画像の大きさは 640 × 480 までやで\n");
-鰐部くん
--ex03x999.c よくできました.
--ex03fliph.c よくできました.
--ex03c.c よくできました.ただ,前回聞き忘れましたが,画素値の反転を以下のようにしているのはなぜか今度教えてください.
a[i][j] = a[i][j] - ((a[i][j]-128)*2+1);
-濱岡くん
--ex03x999.c よくできました.ただし,以下の出力は課題の例では i+1 ではなく i です
printf("%d番目: ",i+1);
--ex03fliph.c よくできました.
--ex03c.c ok. ただし,長瀬くん同様ださださです.それから,「数字を入力してね」の処理を
scanf("%d",&n);
o = getchar();
if(o!='\n'){
n=0;
}
switch(n){
のようにしています.考えがあってのことだろうとは思いますが,scanf()とgetchar()の組み合わせはバグのもとですので,避ける方がよいでしょう.
ちなみに,元のサンプルでは単純に scanf() してるだけなので,
1 3
のように空白やタブで区切って複数の数字を入力すると,1の処理→3の処理と2段階の処理をまとめてすすめることができます.
**第2回1003 [#sdaebb21]
-講義資料 [[AProg:AProg2011-02.pdf]] スキャン版 &attachref(./2011-scan02.pdf);
-演習のページ [[ta_AProg/2011/ex02]] | [[AProg/2011/ex02]]
-&attachref(./checksheet.pdf); | &attachref(./ex02.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
***おしらせと宿題 [#l55364c7]
-To: ALL 濱岡くんほげおの評価ありがとうございます.ただ,彼の成績は,高橋の作業用(おまけ以外の課題数のカウント)に使いますので,みなさんいじらないようお願いします.
-To: wani
>
Googleドキュメントの入力ありがとうございます.今回から,特記事項欄の記入の
仕方を変えました.「特記」欄のコメントに書き方が書いてありますので,現在の
記述を変更しておいてもらえるとありがたいです.
<
-To: ALL 上記のとおりです.鰐部君より先に入力した佐伯君,村下君は再確認をお願いします.
-課題A,B,Cをやってソースを高橋に送る(おまけstepはならなくてもかまいません)
-当日は&color(Red){10分前(厳守)};(&color(Lime){すいません,座席指定の説明などがあるので,今回は10分前集合とさせてください};)に集合(1-542)してください
-次のものを用意しておいてください
--自分のお気に入りにC言語の参考書
--課題チェックシート(A4です)の記入に使える下敷きなど
--課題チェックシートの記入のための筆記具(簡単には消せないもの)
--その他必要だと思う資料があれば
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,B,Cをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---ex02array.c は送らなくて結構です.また,おまけstepはやらなくてもかまいません.
-演習開始前までに,↑に課題チェックに関する資料を添付しておきます.自分で印刷して持参してください.
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#ze16272d]
-佐伯くん
--ex02pgm.c 以下が気になりますがok → 何を気にしているか考えておいてください
#pre{{
main()
{
char str[] ={"P2"};
}}
--ex02array2.c よくできました
--ex02negate.c 実行しても気づかないかもしれませんがまちがってます.要再提出 → ok
-濱岡くん
--ex02pgm.c ok
--ex02array2.c よくできました
--ex02negate.c 実行しても気づかないかもしれませんがまちがってます.要再提出 → ok
-柳原くん
--ex02pgm.c ok. ただし他のソースも含めて以下の点を考えておいてください.
---佐伯くんと同じく main の書き方について
--ex02array2.c よくできました.
--ex02negate.c よくできました
-秋山くん
--ex02pgm.c 以下の解答は間違いではないですがセンスが悪いです.要再提出.→ ok
#pre{{
for(i = 0; i < height; i++){
for(j = 0; j < width; j++){
a[i][j] = j+55;
}
}
printf("P2\n");
printf("%d %d\n%d\n", width, height, 255);
for(i = 0; i < height; i++){
for(j = width-1; j >= 0; j--){
printf("%d ", a[i][j]);
}
printf("\n");
}
}}
--ex02array2.c よくできました.
--ex02negate.c 問題の意味を理解していません.要再提出 → 問題の意味を理解していません.要再々提出 → ok
-長瀬くん
--ex02pgm.c 問題の意味を理解していません.要再提出 → ok
--ex02array2.c 問題の意味を理解していません.要再提出 → ok
--ex02negate.c 問題の意味を理解していません.要再提出 → 間違いだらけです.もっと注意深くとりくんでくださることを希望します.まさか実行してみもせずに提出してませんよね.要再々提出 → ok
-村下くん
--ex02pgm.c よくできました
--ex02array2.c ok. ただし,ソースファイル名まちがってます
--ex02negate.c 実行しても気づかないかもしれませんがまちがってます.要再提出 → ok
-鰐部くん
--ex02pgm.c よくできました
--ex02array2.c よくできました
--ex02negate.c 間違ってます.要再提出 → ok
**第1回0926 [#jd367725]
-講義資料 [[AProg:AProg2011-01.pdf]] スキャン版 &attachref(./2011-scan01.pdf);
-演習のページ [[ta_AProg/2011/ex01]] | [[AProg/2011/ex01]]
***おしらせと宿題 [#ea7b38af]
&color(Red){ここに書いてあるのは第1回前日までの宿題です};.
&color(Red){それより締切の早い宿題が}; [[ta_AProg/2011/HW0919]] &color(Red){にあります};.
-事前にみなさんに集まってもらうことは予定していません
-当日は&color(Red){10分前(厳守)};に集合(1-542)してください
--%%1%%4講時に別のTAがあるなどの理由で10分前に集合できないひとはあらかじめ高橋に連絡してください.
-次のものを用意しておいてください
--自分のお気に入りにC言語の参考書
--課題チェックシート(A4です)の記入に使える下敷きなど
--課題チェックシートの記入のための筆記具(簡単には消せないもの)
--その他必要だと思う資料があれば
-前日13:30までに次のことをやってね(&color(Red){準備中};)
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
---課題A-1のチェックのためにp.6のQ9をやっておいてください
--演習課題B,Cをやって解答(たいていの課題ではソース)を高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
-%%演習終了後翌日13:00までに次のことをやってね%% Google Documentの準備が間に合わないので,今回のみ28日13時までとします.
--チェック結果を Google Document に入力する
--&color(,#ffa0a0){o};は入力完了後につけるようにしてください(ドキュメントにアクセスしたら意味がわかると思います)
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#u4e02de3]
-To: 濱岡くん &color(Red){再提出のたびに新規メイルとするのではなく,以前自分が送ったメイルへの返信としていただけると助かります};
--B: 関数は? 問題(と授業)の趣旨を理解していないようです.要再提出 → &color(Red){プロトタイプ宣言について勉強してください.要再々提出}; → ok
--C: 関数をどこで定義するかよく考えてください.
授業の趣旨を理解していないようです.プロトタイプ宣言について講義資料を確認しておいてください.要再提出.→ &color(Red){プロトタイプ宣言について勉強してください.要再々提出}; → ok
--この課題では「紙に書きなさい」の部分までみなさんに提出してもらうつもりはありませんでしたが,濱岡くんはWordの文書にそれを書いて提出してくれました.
このような情報をWordの文書にして送ることについて,よく考えてみましょう.
---世の中の誰もがMicrosoftのソフトウェアを購入して使えるのか?
---テキストデータならば検索しやすい形で情報を蓄積できるが,特定のソフトウェアでしか閲覧できない文書にすると,それがむずかしくならないか?
--exit(0) は警告が出るが return 0 なら警告が出ないというコメントを書いてくれていますが,せっかくなので少しコメント.
まず,stdlib.h をインクルードしないで exit を使うと警告が出る理由は,exitの戻り値がvoid型だからです.
stdlib.h をインクルードしないと暗黙の型宣言(講義資料3/7参照)が…以下略.
それから,
exit(0)
はよいですが,
exit(99)
などは行儀が悪いのでやめましょう.
C99の規格では,引数として可能なのは 0, EXIT_SUCCESS, EXIT_FAILURE のいずれか(後ろ2つは stdlib.h で定義されている)です.
少し調べてみるとよいでしょう.
--UNIX系の環境なら,
$ man 3 exit
してみるとよいでしょう.
-To: 佐伯くん
--B: よくできました
--C: よくできました
-To: 秋山くん
--B: okとしますが,関数の定義をどこに書くことを期待しているか,講義資料から読み取ってください.
--C: 上に同じ
-To: 村下くん
--B: よくできました
--C: よくできました
-To: 鰐部くん
--B: よくできました
--C: よくできました
--S: Sもやってくれました
-To: 柳原くん
--B: よくできました
--C: よくできました
-To: 長瀬くん
--B: よくできました
--C: よくできました
**サブページリスト [#vc099a5f]
#ls2
終了行:
*応用プログラミング演習 2011年度 TA向けページ [#r30c585d]
[[takataka]] | [[時間割2011]] | [[AProg/2011]] | [[AProg2010]] | [[ta_AProg2010]]
#contents
//&color(Red){工事中};
-Google Documentの共有フォルダ https://docs.google.com/?ui=3#folders/0B3hjc-iHtX2cODUwNjA2YjgtMDZkMi00ZWQ2LTk5ZjktYjdkMTc5YmEyZjZi
**おしらせ [#q030ad76]
//-&color(White,Blue){NEW};
-2011-09-06 9月19日までの宿題 [[ta_AProg/2011/HW0919]]
-2011-09-06 このページを作成しました.
**注意 [#rdeabaf6]
-お金をもらって仕事をするわけですから,みなさんはプロです.
その自覚をもって行動して下さい.
-担当科目の授業時間外にも準備や勉強に時間を割く必要があります.
TAの時給が高い理由にはいろいろありえますが,これも一つの理由だと考えます.
-欠勤する場合,事前に高橋に連絡をとって下さい.
勝手に代理を頼んだりしてはいけません.
**昨年度の反省 [#l9c463c4]
-現行の課題Aなどは自分でやっておくように言い,TAチェックの課題を減らしたらよい?
-TAさんおすすめのC言語関係の本を紹介するコーナーをつくる?
**第7回1107 [#gaf41576]
-講義資料 なし スキャン版 なし
-演習のページ [[ta_AProg/2011/ex07]] | [[AProg/2011/ex07]]
-&attachref(./checksheet.pdf); | &attachref(./sammoku_4ta.c.pdf); &attachref(./sammokumain_4ta.c.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
//,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
//,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
//,ex04,秋山,佐伯,村下,長瀬,濱岡,柳原,鰐部
//,ex05,鰐部,秋山,佐伯,村下,長瀬,濱岡,柳原
//,ex06,柳原,鰐部,秋山,佐伯,村下,長瀬,濱岡
,ex07,濱岡,柳原,鰐部,秋山,佐伯,村下,長瀬
***おしらせと宿題 [#l2ea89fa]
>
村下くん: チェック完了してますか? 確認欄の oxo には何か意味がありますか? 完了してない可能性があると解釈せざるを得ないので,高橋の方の集計作業に入れません.もし終わってるなら o にしといてください.
<
>
&color(Red){第6回のチェック結果で,Aを出せてなくてBを出したことになってる人がいます.この回の課題ではそういうケースはほとんど発生しないように思う(Aのしめきりが最後までだから)のですが,入力間違いではありませんか?今一度確認をお願いします.};
<
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--%%講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)%%
--演習課題Aをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---ソース中にどう修正したのかコメントを入れておいてください
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートはすみやかに高橋or村下くんor鰐部くんに渡してください
***コメント [#bf646006]
-佐伯くん 要再提出 → ok
--isBlank()まわりが変です.コメントの文をよく読んでもらえないでしょうか.
-鰐部くん よくできました.
-長瀬くん 要再提出 → ok
--これはまずい
if(0 <= x && x <= BOARDSIZE && 0 <= y && y <= BOARDSIZE && b->board[y][x] == 0)
-柳原くん 要再提出(まずい理由もつけてください)→ ok
--これもまずい
if(b->board[y][x]==0 && ((x<BOARDSIZE && x>=0) && (y<BOARDSIZE && y>=0)))
>
以前の場合だと、まずb.board[y][x]の値を見るため
その時のx,yの値によっては配列の範囲外を見てしまうのでまずい
先にxとyが配列の範囲内であるかの判別をしてから
b.board[y][x]の値を見るべきだという事でしょうか。
<
そういうことです.
-村下くん 要再提出 → 要再々提出 → 本質的な部分は問題なくなりましたが,勝敗判定の出力メッセージが文字化けしてます… 次回のTAは早めに来てください.
どうしてこういうことを繰り返すのかお話を聞きたいと思います.
--これもまずい
if( x < 0 || x > BOARDSIZE || y < 0 ||y > BOARDSIZE)return 0;
--sammokumain.c の間違いが残ってます
--&color(Red){TAとして活動するならもっときちんと取り組んでくださることを期待します.}; → と書きましたが,まだおかしいです.
ちゃんとテストしてないのでしょうか?
-秋山くん 要再提出 → ok
--何度も同じミスを繰り返しています.指示をちゃんと読んでください.
-濱岡くん よくできました.ただし…
--以下は他によりよい修正法があります.考えておいてください.
#pre{{
if(b->board[y][x] == 1) printf("o");
if(b->board[y][x] == -1) printf("x");
//**修正
if(b->board[y][x] == 0) printf(".");
}}
--以下はまずいでしょうか?
#pre{{
if(x >=0 && x < BOARDSIZE && y >=0 && y < BOARDSIZE && b->board[y][x] == 0)
}}
**第6回1031 [#r50b9080]
-講義資料 [[AProg:AProg2011-06.pdf]] スキャン版 &attachref(./2011-scan06.pdf);
-演習のページ [[ta_AProg/2011/ex06]] | [[AProg/2011/ex06]]
-&attachref(./checksheet.pdf); | &attachref(./ex06.pdf); &attachref(./ex06zs.c.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
//,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
//,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
//,ex04,秋山,佐伯,村下,長瀬,濱岡,柳原,鰐部
//,ex05,鰐部,秋山,佐伯,村下,長瀬,濱岡,柳原
,ex06,柳原,鰐部,秋山,佐伯,村下,長瀬,濱岡
***おしらせと宿題 [#l2ea89fa]
&color(Red){25日13時に課題Aを一部修正しました.}; こちらにも data4ex06a.txt をつけておきます.
#pre{{
$ cat data4ex06a.txt
1055 Hogeo 40 1.5
666 Henako 18
5
999 Fugayo 20 0.1
2345 Piyochan 67 1.0
2 HogeHogeHogeo 1 xxx
1 Uni 100 9.0
}}
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,Bをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---送るソースは自分で作成したものだけで結構です
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#gee2ee82]
-村下くん
--A 要再提出 → ok
---問題文をよく読んでください.以下では&color(Red){TAにあるまじき間違いをしています.};
#pre{{
struct data{
int id;
char name[50];
int age;
double sight;
};
}}
---fopen()のエラー処理をさぼらないでください.
---以下では配列の大きさを超えてfscanf()できてしまいます.課題の文章と講義資料をよく読んで直してください.
for(n=0;2==fscanf(fp,"%d %s",&x[n].code,x[n].addr);n++);
---&color(Red){TAとして活動するならもっときちんと取り組んでくださることを期待します.};
--B 要再提出 → ok
---Aと同様の間違いが多数あります.出力の形式が正しくありません.
&color(Red){TAとして活動するならもっときちんと取り組んでくださることを期待します.};
それから,
printf("探索回数は17回でした\n",nsearch);
ここは課題の要件ではありませんが…ちょっと信じられない間違いです.
-秋山くん
--A 要再提出 → ok
---村下くんと同様の間違いが複数あります.講義資料読んでないのでしょうか? &color(Red){TAとして活動するならもっときちんと取り組んでくださることを期待します.};
--B 要再提出.読み込み部分を直してください. → ok
-佐伯くん
--A 要再提出.村下くんのAの一番最初のコメント参照.&color(Red){TA,中でも馬研の学生がこんな間違いしたらいかんのではないかと思います};.→ ok
--B よくできました.
-柳原くん
--A 要再提出.→ ok
---村下くんのAの一番最初のコメント参照.&color(Red){TAにあるまじき間違いです.};
--B 要再提出.→ ok
---読み込み部分は,明記していませんが講義資料や課題Aから暗黙のうちにAと同様の作りにしてくれることを期待しています.
-鰐部くん
--A 要再提出 → ok
#pre{{
#define N 100
struct data {
int id;
char name[N];
int age;
double sight;
};
村下氏へのAのコメントをみて, 自分も同じ間違いをしていたので修正しましたが, 課題の
> ただし,名前は最大50文字格納できるようにすること.
という文章でひっかかって間違えるのではないかと思われます.
(半角文字なら配列を50個分だけ用意すればいいので, それで宣言すればいいのではと最初思いました)
演習でも, 同じ間違いをしそうな学生が非常に多い気がします. (個人的な意見ですが)
}}
こういう間違い方をする人がいるとは想像できませんでした.
課題の文を「アスキー文字で50文字分を」に修正しておきました.
村下氏へのコメントを読んでもぴんとこなかったというのは大変残念です.
「2バイトコードのことを考えろ」というような本筋をはずれた話なら,「&color(Red){TAにあるまじき間違い};」とまでは指摘しませんよ.
---たとえこの文字配列の大きさを100とするのが正しかったとしても,構造体配列の大きさのために定義した N を用いるのは変ですね.
--B よくできました.
-濱岡くん
--A 佐伯くんのAへのコメント参照 → ok
--B 郵便番号の出力形式が間違っています.要再提出 → ok (%.7d で実現してくれましたが,本当は %07d がよいでしょう)
-長瀬くん
--A よくできました
--B よくできました
**第5回1024 [#j3469498]
-講義資料 [[AProg:AProg2011-05.pdf]] スキャン版 &attachref(./2011-scan05.pdf);
-演習のページ [[ta_AProg/2011/ex05]] | [[AProg/2011/ex05]]
-&attachref(./checksheet.pdf); | &attachref(./ex05check.pdf); &attachref(./ex05.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
//,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
//,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
//,ex04,秋山,佐伯,村下,長瀬,濱岡,柳原,鰐部
,ex05,鰐部,秋山,佐伯,村下,長瀬,濱岡,柳原
***おしらせと宿題 [#l2ea89fa]
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,B,Cをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---送るソースは自分で作成したものだけで結構です
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#e9e92975]
-佐伯くん
--A よくできました
--B 次のように関数Uzumaki()を呼んでますが,この呼び方では問題が起こります.
ソースの再提出は不要ですので,どのように修正すればよいか,何が問題かをメイルで送ってください.
Uzumaki(a, w, h, thetamax, a);
佐伯くんからのお返事です.その通りです.ok
>
課題Bの問題点についてですが入力画像用の配列と出力画像の配列を同じにしていると回転処理後の点を使って回転処理をしてしまうという問題があると思います。
よって引数として渡す入力画像用の配列と出力画像用の配列を別にしたらいいと思います。
<
--C よくできました
-秋山くん
--A よくできました.変な個数が入力されるのを防ぐ工夫をしてくれましたが,
do{
printf("何個?: (1〜100まで)");
scanf("%d", &m);
if(m <= 0 || m > 100)
printf("1〜100までの間です\n");
}while(m <= 0 || m > 100);
これだと条件を複数箇所にかかないといけないので,保守性に難があります.
フラグを使うとかする方がよいかもしれません.printf()の文字列のことまで考えだすと,チェックの関数作りたくなるかも (^^)
--B よくできました
--C よくできました
-濱岡くん
--A わかってやっているかどうかがわからない(コメントつけてくれるとよいのですが)のでつっこみます.
以下には何かが足りない気配がしますが,なぜこれで問題ないのか説明をメイルで送ってください.→ ok
#pre{{
#include "prime.h"
int main(){
int a[100];
int n,i;
printf("何個?(´・ω・`)つ:");
}}
--B よくできました
--C よくできました.データが負数として入力されたら再入力させるように作ってくれました.ただし,ヘッダファイルの作り方&使い方に潜在的な問題があります(授業では説明してないところですが).
uzumaki.h のコメントを読んで,実際にはどうするのがよいか調べておくとよいでしょう.
-柳原くん
--A よくできました
--B よくできました.重箱の隅ですが,
#pre{{
#include<math.h>
#include"uzumaki.h"
#define THETAMAX M_PI/2.0
}}
の最後の行は
#define THETAMAX (M_PI/2.0)
の方がよいでしょう.
#define HOGE 2 + 3
みたいなのよりはましですが,除算より結合順位が上の演算が前にきたら気持ち悪いことになるかもしれませんので.
--C よくできました.負数が入力されたら再入力を促すように作ってくれました.
#ifndef も使ってくれました.
ちなみに,配列の大きさを表す定数も search.h で定義するようにしてくれましたが,この課題では main の方で定義していてもよいし,int x[100]; とかでも構いません.
-村下くん
--A 濱岡くんのAと同じことになっています.同様に対応してください.
村下くんのお返事です.その通りですね.
>
課題Aのプログラムでは#include<stdio.h>を書いていませんでした。
理由はprime.hですでに#include<stdio.h>と書かれていたので、ex05prime.cでは#include"prime.h"
を書く事で#include<stdio.h>も書いていることと同じになるからです。
<
--B よくできました
--C よくできました.ヘッダファイルについては濱岡くんのCへのコメントも参照してください.
-鰐部くん
--A よくできました
--B よくできました
--C よくできました.負数が入力されたら再入力を促すように作ってくれました.#ifndef も使ってくれました.
-長瀬くん
--A 濱岡くん,村下くんのAと同様 → ok
--B よくできました
--C よくできました.#ifndef も使ってくれました.柳原くんのCへのコメントも参照しといてください.
ちなみに,exit() の引数は,0,1を使わず stdlib.h で定義された値 EXIT_SUCCESS, EXIT_FAILURE を使うことが推奨されています.
たいていの環境では前者が0で後者が1になってると思いますが,規格上はexit(0)が「成功終了」ではない可能性がある(環境依存である)ので,exit(0) と書かずに exit(EXIT_SUCCESS) と書くとすてきなようです.
余談: exit()の引数は,次のようにプログラムが成功したかどうかによって動作を切り替えるシェルスクリプトを作るのに役立ちます.この例は sh/bash を想定してます.
#pre{{
$ cat exit.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
exit(EXIT_SUCCESS);
//exit(EXIT_FAILURE);
}
$ cc exit.c
$ ./a.out && echo "hoge" a.out がSUCCESSなので && のうしろのコマンドが実行される
hoge
(FAILUREにする)
$ cc exit.c
$ ./a.out && echo "hoge" a.out がFAILUREなので && のうしろのコマンドは実行されない
$
}}
**第4回1017 [#a74711ef]
-講義資料 [[AProg:AProg2011-04.pdf]] スキャン版 &attachref(./2011-scan04.pdf);
-演習のページ [[ta_AProg/2011/ex04]] | [[AProg/2011/ex04]]
-&attachref(./checksheet.pdf);(びみょーに更新しました) | &attachref(./ex04.pdf); &attachref(./ex04a.pdf); &attachref(./ex04b.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
//,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
//,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
,ex04,秋山,佐伯,村下,長瀬,濱岡,柳原,鰐部
***おしらせと宿題 [#z05a9b1a]
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,Bをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---Aのstep1のソースは不要です(wani君指摘ありがとう)
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#zbb00706]
-鰐部くん
--ex04A よくできました
--ex04B よくできました
-村下くん
--ex04A よくできました
--ex04B okですが,反転の関数にまともな名前をつけてくださることを期待しています.
void mirror1(int ipt[480][640],int x,int y)
void mirror2(int ipt[480][640],int x,int y)
-佐伯くん
--ex04A よくできました
--ex04B よくできました
-秋山くん
--ex04A データ数がおかしいと再入力を促すように作ってくれました.
再提出は不要ですが,以下の点についてよく考えてください.環境によっては警告がでます.
void main(){
--ex04B 課題の要件を満たしてみません.反転の関数にまともな名前をつけてくださることを期待しています.要再提出 → ok
#pre{{
void Reverse1(int a[][640], int n, int m);
void Reverse2(int a[][640], int n, int m);
void Reverse3(int a[][640], int n, int m);
}}
-柳原くん
--ex04A よくできました
--ex04B よくできました
-長瀬くん
--ex04A ok. 再提出は不要ですが,以下の関数はどこがいけてないか考えておいてください.
#pre{{
int min(int a[], int n)
{
int m, i;
for(i = 0; i < n; i++){
if(i == 0 || m > a[i])
m = a[i];
}
return m;
}
}}
--ex04B ok. 再提出は不要ですが,以下についてよく考えておいてください.
for(j = 0; j < width/2.0; j++){
-濱岡くん
--ex04A okですが,以下の点についてよく考えておいてください.
void nnn_times(int a[],int n);
int minimum_n(int n,int a[]);
--ex04B okですが,以下の点についてよく考えておいてください.
int W=640,H=480;
int a[H][W];
**第3回1010 [#ib0f219f]
-講義資料 [[AProg:AProg2011-03.pdf]] スキャン版 &attachref(./2011-scan03.pdf);
-演習のページ [[ta_AProg/2011/ex03]] | [[AProg/2011/ex03]]
-&attachref(./checksheet.pdf); | &attachref(./ex03.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
***おしらせと宿題 [#z05a9b1a]
-当日は&color(Red){5分前(厳守)};に集合(1-542)してください
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,B,Cをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---課題Aの%%ソース%%データファイルは送らなくて結構です
-演習時に用意してもらうものはいつも通りです(前回のチェックシート,↑の資料も忘れずに)
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#he6818d7]
-秋山くん「特記事項」の使い方はその欄のコメントにありますのでお手数ですが参照して書き直してみてください.→ 修正ありがとうございます
-rt11m008 のひと.黒い箇所は高橋以外は変更してはいけません.入力場所を間違ってないでしょうか.至急修正をお願いします.それから,注意書きがあるはずですが,○は最後につけてください(想像力を働かせてよく考えましょう.君が○をつけた直後に高橋がアクセスしてこのファイルを完成版として保存したらどうなる?) → 修正ありがとうございます
-秋山くん
--ex03x999.c よくできました
--ex03fliph.c よくできました
--ex03c.c okですが,最初のメッセージ「扱える画像サイズは…」の順序がサンプルと逆です.
-村下くん
--ex03x999.c は? → よくできました
#pre{{
> 課題Aは「課題Aのソースは送らなくて結構です」と書いたあったので送らないでいいと
思っていたので送っていませんでした、すみません。
ごめんなさい,ソースじゃなくてデータファイルを送らなくてよいと書いたつもりに
なっていました.TAページは修正しておきました.
}}
--ex03fliph.c 反転関数にバグあり.要再提出 → ok
--ex03c.c 再提出は不要ですが,出力の方のfopen()もエラー処理してください.なぜかこっちの反転関数は正しいようです.
-柳原くん
--ex03x999.c よくできました.fclose() はもっと上でやる方がよいと思いますが.
--ex03fliph.c よくできました.入力画像サイズが扱える大きさを超えてたら停止するように作ってくれました.
--ex03c.c 再提出は不要ですが,出力の方のfopen()もエラー処理してください.
-佐伯くん
--ex03x999.c よくできました.
--ex03fliph.c バグあり.要再提出 → なおってません.要再々提出 → ok
--ex03c.c 同じくバグあり.要再提出 → なおってません.要再々提出 → ok
-長瀬くん
--ex03x999.c よくできました.
--ex03fliph.c よくできました.ただし,当日までに,反転関数内で新たな画像配列を用意しないで済ませる方法を考えておいてください.
--ex03c.c ok. ただし,反転関数については↑と同様.それから,↓はださださです.どうすべきか当日までに考えておいてください.
printf("@_@)/ 扱える画像の大きさは 640 × 480 までやで\n");
-鰐部くん
--ex03x999.c よくできました.
--ex03fliph.c よくできました.
--ex03c.c よくできました.ただ,前回聞き忘れましたが,画素値の反転を以下のようにしているのはなぜか今度教えてください.
a[i][j] = a[i][j] - ((a[i][j]-128)*2+1);
-濱岡くん
--ex03x999.c よくできました.ただし,以下の出力は課題の例では i+1 ではなく i です
printf("%d番目: ",i+1);
--ex03fliph.c よくできました.
--ex03c.c ok. ただし,長瀬くん同様ださださです.それから,「数字を入力してね」の処理を
scanf("%d",&n);
o = getchar();
if(o!='\n'){
n=0;
}
switch(n){
のようにしています.考えがあってのことだろうとは思いますが,scanf()とgetchar()の組み合わせはバグのもとですので,避ける方がよいでしょう.
ちなみに,元のサンプルでは単純に scanf() してるだけなので,
1 3
のように空白やタブで区切って複数の数字を入力すると,1の処理→3の処理と2段階の処理をまとめてすすめることができます.
**第2回1003 [#sdaebb21]
-講義資料 [[AProg:AProg2011-02.pdf]] スキャン版 &attachref(./2011-scan02.pdf);
-演習のページ [[ta_AProg/2011/ex02]] | [[AProg/2011/ex02]]
-&attachref(./checksheet.pdf); | &attachref(./ex02.pdf);
-担当グループ
,group, 1, 3, 5, 7, 9, はぐ1, はぐ2
,ex02,村下,長瀬,濱岡,柳原,鰐部,秋山,佐伯
,ex03,佐伯,村下,長瀬,濱岡,柳原,鰐部,秋山
***おしらせと宿題 [#l55364c7]
-To: ALL 濱岡くんほげおの評価ありがとうございます.ただ,彼の成績は,高橋の作業用(おまけ以外の課題数のカウント)に使いますので,みなさんいじらないようお願いします.
-To: wani
>
Googleドキュメントの入力ありがとうございます.今回から,特記事項欄の記入の
仕方を変えました.「特記」欄のコメントに書き方が書いてありますので,現在の
記述を変更しておいてもらえるとありがたいです.
<
-To: ALL 上記のとおりです.鰐部君より先に入力した佐伯君,村下君は再確認をお願いします.
-課題A,B,Cをやってソースを高橋に送る(おまけstepはならなくてもかまいません)
-当日は&color(Red){10分前(厳守)};(&color(Lime){すいません,座席指定の説明などがあるので,今回は10分前集合とさせてください};)に集合(1-542)してください
-次のものを用意しておいてください
--自分のお気に入りにC言語の参考書
--課題チェックシート(A4です)の記入に使える下敷きなど
--課題チェックシートの記入のための筆記具(簡単には消せないもの)
--その他必要だと思う資料があれば
-前日13:30までに次のことをやってね
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
--演習課題A,B,Cをやってソースを高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
---ex02array.c は送らなくて結構です.また,おまけstepはやらなくてもかまいません.
-演習開始前までに,↑に課題チェックに関する資料を添付しておきます.自分で印刷して持参してください.
-演習終了後翌日13:00までに次のことをやってね
--チェック結果を Google Document に入力する
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#ze16272d]
-佐伯くん
--ex02pgm.c 以下が気になりますがok → 何を気にしているか考えておいてください
#pre{{
main()
{
char str[] ={"P2"};
}}
--ex02array2.c よくできました
--ex02negate.c 実行しても気づかないかもしれませんがまちがってます.要再提出 → ok
-濱岡くん
--ex02pgm.c ok
--ex02array2.c よくできました
--ex02negate.c 実行しても気づかないかもしれませんがまちがってます.要再提出 → ok
-柳原くん
--ex02pgm.c ok. ただし他のソースも含めて以下の点を考えておいてください.
---佐伯くんと同じく main の書き方について
--ex02array2.c よくできました.
--ex02negate.c よくできました
-秋山くん
--ex02pgm.c 以下の解答は間違いではないですがセンスが悪いです.要再提出.→ ok
#pre{{
for(i = 0; i < height; i++){
for(j = 0; j < width; j++){
a[i][j] = j+55;
}
}
printf("P2\n");
printf("%d %d\n%d\n", width, height, 255);
for(i = 0; i < height; i++){
for(j = width-1; j >= 0; j--){
printf("%d ", a[i][j]);
}
printf("\n");
}
}}
--ex02array2.c よくできました.
--ex02negate.c 問題の意味を理解していません.要再提出 → 問題の意味を理解していません.要再々提出 → ok
-長瀬くん
--ex02pgm.c 問題の意味を理解していません.要再提出 → ok
--ex02array2.c 問題の意味を理解していません.要再提出 → ok
--ex02negate.c 問題の意味を理解していません.要再提出 → 間違いだらけです.もっと注意深くとりくんでくださることを希望します.まさか実行してみもせずに提出してませんよね.要再々提出 → ok
-村下くん
--ex02pgm.c よくできました
--ex02array2.c ok. ただし,ソースファイル名まちがってます
--ex02negate.c 実行しても気づかないかもしれませんがまちがってます.要再提出 → ok
-鰐部くん
--ex02pgm.c よくできました
--ex02array2.c よくできました
--ex02negate.c 間違ってます.要再提出 → ok
**第1回0926 [#jd367725]
-講義資料 [[AProg:AProg2011-01.pdf]] スキャン版 &attachref(./2011-scan01.pdf);
-演習のページ [[ta_AProg/2011/ex01]] | [[AProg/2011/ex01]]
***おしらせと宿題 [#ea7b38af]
&color(Red){ここに書いてあるのは第1回前日までの宿題です};.
&color(Red){それより締切の早い宿題が}; [[ta_AProg/2011/HW0919]] &color(Red){にあります};.
-事前にみなさんに集まってもらうことは予定していません
-当日は&color(Red){10分前(厳守)};に集合(1-542)してください
--%%1%%4講時に別のTAがあるなどの理由で10分前に集合できないひとはあらかじめ高橋に連絡してください.
-次のものを用意しておいてください
--自分のお気に入りにC言語の参考書
--課題チェックシート(A4です)の記入に使える下敷きなど
--課題チェックシートの記入のための筆記具(簡単には消せないもの)
--その他必要だと思う資料があれば
-前日13:30までに次のことをやってね(&color(Red){準備中};)
--講義資料とそのスキャン版に目を通しておく(気になることがあったら知らせてね)
---課題A-1のチェックのためにp.6のQ9をやっておいてください
--演習課題B,Cをやって解答(たいていの課題ではソース)を高橋にメイルで送る(コメントをこのページ上にのせるのであとで見といてね)
-%%演習終了後翌日13:00までに次のことをやってね%% Google Documentの準備が間に合わないので,今回のみ28日13時までとします.
--チェック結果を Google Document に入力する
--&color(,#ffa0a0){o};は入力完了後につけるようにしてください(ドキュメントにアクセスしたら意味がわかると思います)
--チェックシートは次回の演習時に高橋に渡してください
***コメント [#u4e02de3]
-To: 濱岡くん &color(Red){再提出のたびに新規メイルとするのではなく,以前自分が送ったメイルへの返信としていただけると助かります};
--B: 関数は? 問題(と授業)の趣旨を理解していないようです.要再提出 → &color(Red){プロトタイプ宣言について勉強してください.要再々提出}; → ok
--C: 関数をどこで定義するかよく考えてください.
授業の趣旨を理解していないようです.プロトタイプ宣言について講義資料を確認しておいてください.要再提出.→ &color(Red){プロトタイプ宣言について勉強してください.要再々提出}; → ok
--この課題では「紙に書きなさい」の部分までみなさんに提出してもらうつもりはありませんでしたが,濱岡くんはWordの文書にそれを書いて提出してくれました.
このような情報をWordの文書にして送ることについて,よく考えてみましょう.
---世の中の誰もがMicrosoftのソフトウェアを購入して使えるのか?
---テキストデータならば検索しやすい形で情報を蓄積できるが,特定のソフトウェアでしか閲覧できない文書にすると,それがむずかしくならないか?
--exit(0) は警告が出るが return 0 なら警告が出ないというコメントを書いてくれていますが,せっかくなので少しコメント.
まず,stdlib.h をインクルードしないで exit を使うと警告が出る理由は,exitの戻り値がvoid型だからです.
stdlib.h をインクルードしないと暗黙の型宣言(講義資料3/7参照)が…以下略.
それから,
exit(0)
はよいですが,
exit(99)
などは行儀が悪いのでやめましょう.
C99の規格では,引数として可能なのは 0, EXIT_SUCCESS, EXIT_FAILURE のいずれか(後ろ2つは stdlib.h で定義されている)です.
少し調べてみるとよいでしょう.
--UNIX系の環境なら,
$ man 3 exit
してみるとよいでしょう.
-To: 佐伯くん
--B: よくできました
--C: よくできました
-To: 秋山くん
--B: okとしますが,関数の定義をどこに書くことを期待しているか,講義資料から読み取ってください.
--C: 上に同じ
-To: 村下くん
--B: よくできました
--C: よくできました
-To: 鰐部くん
--B: よくできました
--C: よくできました
--S: Sもやってくれました
-To: 柳原くん
--B: よくできました
--C: よくできました
-To: 長瀬くん
--B: よくできました
--C: よくできました
**サブページリスト [#vc099a5f]
#ls2
ページ名: