プログラミング演習の課題提出用のリポジトリ
Important
自動採点対象に × が付いているものは TA・SA が手動で採点をするため、submit した際に番号が出ないが正常である。
下記コマンドで c ファイルをコンパイル・実行する。scanf を用いたコードの場合は自身で値を入力して正しい結果を返すかを確認する。
# c ファイルをコンパイルして実行
gcc ex??_?.c -o ex??_?
./ex??_?
# 具体例(第 2 回の 3 つ目の課題の場合)
gcc ex02_3.c -o ex02_3
./ex02_3
コンパイルされた状態で以下コマンドを打つことで、実際のテストを実行出来る。
# 全ての課題のテストを実行
./test.sh all
# 特定の課題のテストを実行
./test.sh ${課題の番号}
# 具体例 (課題 1 つ目のテストを実行)
./test.sh 1
Warning
test.sh は、提出前の確認用として用意しているため、課題を進めている最中には実行しないこと。(原則上記の方法で挙動を確認する)
下記コマンドを実行するとプログラムが提出され自動採点が開始される。
# 基本課題を提出
./submit.sh basic
# 発展課題を提出
./submit.sh advanced
# 全ての課題を提出
./submit.sh all
Important
./submit.sh を実行する前には必ず./test.sh all を実行し、極力正解数が多い状態で提出すること。
また下記コマンドを実行すると、提出をせずに各自の最新の採点状況を確認することが出来る。
# 最新の採点結果を確認
./submit.sh status
Caution
課題の進行にあたり、以下の点に留意すること。これらの基準に違反した場合、課題の評価が 0 点とする可能性がある。
- locked ディレクトリ内や test.sh、submit.sh を編集しないこと
- 答えが一致している場合でも、課題に無関係なプログラムを作成しないこと
※ make コマンドが使える環境を想定。使えない場合は以下を実行。
sudo apt install make
make --version
clone した後に .git ディレクトリ配下を全削除し、新しく template リポジトリを立ててそこをリモートリポジトリとして登録。
# ex{SESSION} で基本課題が BASIC 個、発展課題が ADCANVED 個のテンプレートを展開
make create_template SESSION=1 BASIC=1 ADVANCED=0
// ex) ex01_1.c
#include <stdio.h>
int main(void)
{
int n1, n2;
printf("二つの整数を入力してください.\n");
printf(" 整数 1: ");
scanf("%d", &n1);
printf(" 整数 2: ");
scanf("%d", &n2);
printf(" それらの和は %d です. \n", n1+n2);
return 0;
}
2 の工程で ./locked/cases/{ASSIGNMENT}/in というディレクトリに 0~5.txt が存在しているはずなので、そこにテストの入力情報を用意する。(必要に応じてテストを増やしたり減らしたり)
# ASSIGNMENT.c の出力を SHA-256 で Hash 化
make test_hash ASSIGNMENT=ex01_1
実行後に ./locked/cases/{ASSIGNMENT}/out の中に Hash 化されたテストケースがあれば完了。
Tip
{ASSIGNMENT}_test というディレクトリも同時に作成され、そこには Hash 化する前の出力結果が入っているので、必要に応じてその結果を違う場所に補完することをお勧めする。
- README.md の template 作成手順以降
- makefile
- local_test_template.sh
- locked/test_template.sh
- locked/test_template_no_input.sh
- test 生成時に出現する {ASSIGNMENT}_test
- c ファイルコンパイル時に生成されるバイナリ
Tip
6 は削除でなくディレクトリの外部に移しておくことを推奨
*
Tip
生徒の無駄なバイナリ push 防止として以下のような .gitignore を最後にコミットしてあげることを推奨。
ex) 第 3 回演習の自動採点対象表
課題名 | ex03_1 | ex03_2 | ex03_3 | ex03_4 |
---|---|---|---|---|
自動採点の有無 | ○ | ○ | ○ | ○ |
- あくまで template の為、output を違うものにしたい場合は自由にカスタマイズするので OK
- 以下を実行すると create_template を実行する前の環境まで戻る
make clear