わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

演習アドバイス・平成25年度後期(その1)

自分のところにコピー

ファイルを,所定の場所(ディレクトリ)にコピーして使用する際,次のコマンドが便利です.なお先頭の「$ 」はプロンプトです(これは打ち込まないように).

$ cd コピー先ディレクトリ
$ cp コピー元ファイル .

cpコマンドの最後のピリオドは,カレントディレクトリを表します.cpコマンドは,最後の引数をディレクトリ名とすれば,そこへファイルをコピーすることができます.
演習を通じて,コマンド実行の方法にはいろいろあることを知り,その中から最適なものを選びながら,省力化を図るようにしましょう.

コンパイルの方法

server0.cがあるとき,実行ファイルserver0を作るためのコマンドには,何種類かあります.以下は,1年のプログラミング科目でこちらからお見せしたり,みなさんが演習中に実行してきたりしたものだと思います.

$ cc -o server0 server0.c
$ cc server0.c -o server0
$ make server0

このうち3番目の方法(makeコマンド)を推奨します.タイプ数が少ないからです.それと,このコマンドを実行後,「.」「/」のあと,Altを押しながら「.」で,「./server0」と打ち込まれたことになり,あとはEnterで実行できます*1
なお,実行してはいけないコマンドがあります.

$ cc -o server0.c server0.c
$ cc server0.c -o server0.c

これらは,実行ファイルをserver0.cにせよということで,ファイルが破壊されてしまいます.cc(gcc)コマンドの「-o」オプションの後は,実行ファイルの名前を指定します.それはソースファイルと必ず異なることには,くれぐれも注意しましょう.

プログラムの動作を書く課題

プログラムの動作を書く課題について,回収したみなさんのファイルをざっと読みました.
採点時に,次の記述があれば,減点する予定ですので,見直してください.

  • スペルミス・誤変換:「conect」「コネクション確率時」「化せられた条件」「if分」
  • ASCII文字にしよう:「ー1」「ー1」
  • 使用していない:「gethostname」
  • 不適切な説明:
    • 変数rpは線形リスト構造になっている
    • 全ての処理が終わるとcloseを用いてソケットを閉じる
    • close関数にて終了する
  • 動詞に配慮を:
    • ソケットを探す
    • sが-1のときif文で処理をスルーする
    • 次の反復に突入する

なにこれ

木曜の3年生向け*2演習授業で,学生に提示しているアドバイスです.上記は担当7回のうち,最初の2回分からです.
Webで表示している課題や要領とは別に,受講者のみが参照可能なところにテキストファイルを置いています*3.授業中,学生の質問や,挙動や答案などで全体に知ってもらいたいことが出てきたら,書き足して,モニタで掲示しています.また学生も,そのファイルを開けるようにして,課題の取り組みに活用してもらっています.
そういったアドバイスの中で,公開しても良さそうなものを選び,何回かに分けて,解説することにしました.
目次や,過去のアドバイスについても,そのうち整備します.

*1:bashzshで,Emacs表記でいう M-. をすると,直前のコマンドの最後の引数を打ち込むのと同じ効果になります.「cc server0.c -o server0」でコンパイルした場合にも,有効です.10年以上前の演習の中で,「cc -o totemo_totemo_nagai_fairumei very_very_long_file_name.c」と「cc very_very_long_file_name.c -o totemo_totemo_nagai_fairumei」のどちらがキーストロークを少なくできるか,という問題を出したことがあります.

*2:コピーやコンパイルの方法を3年生に? と思った人がいるかもしれませんが,使わないと忘れるものです.この科目に限らず,演習の初回は,コマンドの復習に時間をとらざるを得ません.それと,上で書いたとおり,あることをするのに複数の方法(コマンドなど)があります.こちらとしては代表的なものを提示して,その中で各学生に「自分に合った方法」を選んでほしい---こちらが提示したものを選ばないのもよし---という期待があります.

*3:Web掲載の情報はwhyやwhatを重視し,テキストファイルのほうはhowを重視している,という区別もできます.