Project Practices 1 Puidance
プロジェクト実習 1

授業の進め方

出席の確認はOpenLMS の 1 限のコマを用いて行う. 1 限の授業時間中に出席登録を完了せよ.

3回目の授業では課題を出題する, 授業用サーバーには課題の自動採点機能がある. 自力で課題に挑戦し, 自動採点の結果を確認してプログラミング能力の向上に利用せよ.

接続テスト

情報通信学科以外の学生は授業用サーバーにアカウントを 追加する必要があるので山本 <hiroshi@u-tokai.ac.jp> まで連絡 (自分の学生証番号,氏名,科目名をメール本文に書くこと)し, アカウントの追加が完了したというメールを受け取ったら以下の接続テストを行え.

通知メールの確認

情報通信学科の学生にはすでに授業用サーバーにアカウントを 作成してある.ユーザ名とパスワードをメールで連絡してある. 学番メールを確認し,4/14 に "Username and password for Project Practices 1 Group C,D" という件名のメールが届いているはずなので開け.

わからない場合はユーザ名とパスワードをメールで山本に聞くこと.

授業用サーバへのログイン

上で開いたメールに 授業で使用する研究室のサーバへログインするための ユーザ名とパスワードが書かれている. データ構造とアルゴリズムで使用したアカウントと同じである. これは計算機室の端末にログインするときに用いたものとは 独立なので注意せよ.

以下の手順で授業用サーバへログインせよ.

  1. Windows の場合は「コマンドプロンプト」を,Mac の場合は「ターミナル」を起動せよ.
  2. 自分のユーザ名がje00000cとすると,ターミナルに
    ssh je00000c@sirius.yamamotolab.jt.u-tokai.ac.jp
    とと入力し,改行キーを押せ.
  3. セキュリティ警告のメッセージが出た場合は yes を選択せよ.
  4. パスワードを聞かれるので自分のパスワードを入力して改行キーを押せ. 自分が入力した文字は画面に表示されないが入力されているので注意して入力せよ. ターミナルに Welcome to ... という文字列が出ればログイン成功である.
  5. 学習を終えてログアウトするときはwindowsの場合はコントロールキーを押しながらZ, Mac の場合はコントロールキーを押しながら D を押して終了する.

講義のまえに

最初にプログラム作成,コンパイル,実行の環境の実習を行う.

上の説明に従って授業用サーバーにログインした状態で実習を続ける.

UNIX 入門

ログインすると,自分のホームディレクトリにいるはずである. ターミナルの最下行の

jeXXXXXX@sirius:~$

をプロンプトという.プロンプトが出ているときはコマンド入力が可能である. 以下のようにキーボードから "ls" と入力し改行キーを押せ.

jeXXXXXX@sirius:~$ ls

これは ls というコマンドを実行する方法で,ls コマンドは 現在自分のいる「カレントディレクトリ」にあるファイル,ディレクトリの 一覧を表示するコマンドである.初期状態では以下のように結果が表示さる はずである.再びプロンプトが出力され,次の入力が可能な状態になっていることが 分る.

jeXXXXXX@sirius:~$ ls
algo
jeXXXXXX@sirius:~$ 

このディレクトリ(ホームディレクトリ,ログインしたときの初期位置) に授業専用のディレクトリを作成し,すべてのプログラムをそこで作成 するようにする.まず,ディレクトリの作成を行うために mkdir pp1 というコマンドをターミナルに入力せよ.

jeXXXXXX@sirius:~$ mkdir pp1
jeXXXXXX@sirius:~$ 

mkdir が「コマンド」,pp1 は「引数」とよばれ, 今いるディレクトリに pp1 という名前のディレクトリを作るコマンド となっている.できたかどうか ls コマンドで確認せよ. このコマンドは最初に 1度だけ実行するコマンドである.

jeXXXXXX@sirius:~$ ls
algo pp1
jeXXXXXX@sirius:~$ 

作成したディレクトリ pp1 に移動して作業を行う.ディレクトリを 移動するコマンドは cd で,移動先を引数で与えるため,コマンドは 以下のとおりである.

jeXXXXXX@sirius:~$ cd pp1
jeXXXXXX@sirius:~/pp1$ 

プロンプトの $ 記号の左に現在いるディレクトリ(カレントディレクトリ) が表示されている.この場所にはまだファイルが存在しないはずである. ls コマンドを実行して確認せよ.

プログラムの作成は emacs エディタで行う.プログラムの作成には emacs のようなテキストエディタとよばれるものが使われることが多い.

プログラム作成

ここまでの作業を行うと自分のホームディレクトリの直下の pp1 ディレクトリがカレントディレクトリになっているはずである. この場所に最初のプログラムとして画面に hello, world と出力する プログラム hello.c を作成する.ファイル名をまずターミナルから emacs コマンドを作成したファイル名を引数として入力する.(下図)

jeXXXXXX@sirius:~/pp1$ emacs hello.c

ここからはターミナル全体は emacs が支配することになる. emacs を終了し,プロンプトが現れるまで他のコマンドは入力できない.

emacs の操作方法は大学作成のコンテンツ, 「Emacs」 などを参照すること.情報はウェブ上にも多くの情報があるので参考にすること.

hello.c の内容は以下のものとする.マウスによるコピーアンドペーストで 先ほど開いた emacs を実行中の画面にコピーせよ.(マウスでコピーし, 右クリックから貼付けできる)

#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
}

図1.1 hello.c

emacs でファイルを上書きセーブするにはコントロールキーを押したまま x キーを一回押して離し,次に s を一回押して離す.この操作を CTRL-x CTRL-s と書く.この操作を実行し,セーブせよ.

emacs を終了するには CTRL-x CTRL-c を実行する.このとき ファイルが未セーブであれば確認される.終了作業を行え.

emacs が終了すると再びプロンプトが表示され,コマンドが入力できる ようになっている.ls コマンドで hello.c が存在していることを確認せよ.

自分が作成した覚えのない hello.c~ や #hello.c# のような名前の ファイルができていることがある.これらは emacs がバックアップのために 自動的に保存したファイルである.例えばhello.c というファイルをエディットして 保存すると,一つ前に保存したバージョンが hello.c~ という名前で 保存される.また,長時間エディットしているとemacs は安全のために オートセーブを行うことがある.このときのファイル名は 本来のファイル名の前後に # をつけたものになる.正常に終了した 場合は自動的に消されるが強制終了があった場合このファイルが残る.

いずれも問題が起こったときのリカバーのために保存されるもので, 放置しても問題ない.気になるならファイルを消去する rm コマンドを 使って rm hello.c~ や rm '#hello.c#' と入力することで消去することが できる.

コンパイル

c プログラムはコンパイルして実行可能となる.コンパイルのコマンドは cc というコマンドで,ソースファイルを引数として与える.この場合は hello.c が存在するディレクトリで プロンプトが表示されているときに cc hello.c というコマンドを実行すればよい.実際にコマンドを実行せよ.

cc が何も画面に表示せずに終了(次のプロンプトが出る)すれば コンパイルは成功である.同じディレクトリに実行ファイルの a.out ができているはずなので確認せよ(以下の実行例)

jeXXXXXX@sirius:~/pp1$ ls
a.out  hello.c
jeXXXXXX@sirius:~/pp1$ 

コンパイルに失敗し,エラーが出た場合は emacs で hello.c を 修正し,コンパイルを再実行せよ.

実行

出来た a.out ファイルを実行するには ./a.out というコマンドを実行 する.以下のように出力されたら成功である.

jeXXXXXX@sirius:~/pp1$ ./a.out
hello, world
jeXXXXXX@sirius:~/pp1$ 

複雑なプログラムを作成するときは emacs で修正して コンパイル,実行を繰り返すことになる.もう一枚コマンドプロンプトやターミナルを開き,両方ともディレクトリ pp1 に いる状態にして片方では emacs を起動させてままにして もう片方でコンパイル,実行を行うと効率が良い.

C 言語への導入のため,以下のリンクをクリックせよ.
C 言語入門

今回は課題は無い.


Updated in September 24, 2021, index.html, Yamamoto Hiroshi