第1回 プログラミング入門 演習(解答)

はじめに〜コンピュータとは

【主な内容】

演習課題

初級レベル

(A-1)
解答ディレクトリの作成

いま、みなさんはこのウエブページを読んでいます。 忘れないように、プログラミング入門トップページをブックマーク登録して下さい。
次に、Webブラウザを立ち上げた青いウィンドウ (kterm と呼ばれています) をマウスで選択し、以下のコマンドを打ち込んでください。
なお、少し上にも書きましたが、%はプロンプト(皆さんの環境ではstd1dc1{s1160000}1:等に相当する)を示しており、皆さんが入力するのはその次の文字からです。
% cd                   (ホームディレクトリに移動)
% mkdir Prog0          (ディレクトリ Prog0 を作成)
% cd Prog0             (ディレクトリ Prog0 に移動)
% mkdir Ex01 Ex02 Ex03 (Ex01 などを作成)
% ls -F                (ディレクトリ名を表示)

[ls -Fコマンドの実行結果]
Ex01/   Ex02/   Ex03/
最後に実行したlsコマンドの結果から、現在、Ex01とEx02とEx03というディレクトリが出来ていることが 分かります。これらのディレクトリが、各演習課題ファイルを置く場所になります。
ディレクトリ名に含まれる大文字と小文字は区別されますので正確に入力してください。 大文字・小文字が正しく入力できているか常に確認してください。
本演習はエクストラも含めると14回分ありますので、Ex14まで残りの ディレクトリを作成し、最後に以下のコマンドを実行してみてきちんとできているかを確認してください。
% ls -F
Ex01/   Ex02/   Ex03/   Ex04/   ...   Ex14/
本演習で使用するコマンドをメニュー形式で実行できる menu コマンド が用意されています。
試しに、以下のようにこのコマンドを実行し、動作を確認してください。
ここでは、表示されたメニューの中から4番目の「ディレクトリ確認」を選びます。
もし×が表示されたら、英語のつづりや大文字小文字が間違っていないか確認して下さい。
もし△が表示されたら、教員かTAを呼んで対処して下さい。
以下の***は人によって異なります。
% ~prog0/bin/menu
【プログラミング入門 メニュー】

0. メニュー終了 (exit menu)
1. 課題提出 (submit)
2. 提出済みファイル確認 (submitcheck)
3. 作成ファイル確認 (filecheck)
4. ディレクトリ確認 (dircheck)
どれを実行しますか?(数字を入力して下さい)
4


「ディレクトリ確認」が選択されました
実行日時        アカウント名
【プログラミング入門 演習用ディレクトリ作成状況】
***/あなたのアカウント名/Prog0を調べます
(○:存在する、×:存在しない、△:読めない)
---------------------------
○ ***/あなたのアカウント名/Prog0/Ex01
○ ***/あなたのアカウント名/Prog0/Ex02
                 ・
                 ・
                 ・
○ ***/あなたのアカウント名/Prog0/Ex13
---------------------------
上記コマンドを実行するために入力する1文字目のキー(~)は、 キーボードの白い文字盤の一番上の行の一番右(BackSpaceキーの上)にあります。
シフトキー (Shift) を押しながらこのキーを押してください。
なお、この文字を「チルダ」と言います。

以後、ログインするたびに 以下のコマンドをktermの青い画面上で実行し、 その回の演習を行うディレクトリに移動します。
また、昼食などで一旦ログアウトし、再度ログインした場合も このコマンドを実行して各回演習ディレクトリに戻って下さい。
% cd ~/Prog0/Ex##

##には演習番号が入ります。今日は第1回演習なので01が入ります。

[解答例]
menuコマンド+4ディレクトリ確認ですべてに○がついていればOK。


(A-2)
コンピュータの構成要素を述べなさい。

ファイル名:ex01a2.txt

上記の「ファイル名:」の右側にある文字列が提出ファイル名です。
まず、前問に従って本日の第1回演習のディレクトリに移動して下さい。
更に次のコマンドを実行し、正しいディレクトリにいるかどうか確認して下さい。
% pwd

[実行結果]
/***/あなたのアカウント名(s1160000など)/Prog0/Ex01
***は人によって異なります。このディレクトリでエディタemacsを 立ち上げて解答を書き込むようにしてください。
下の例では、emacsの引数としてファイル名が与えられています。
% emacs ex01a2.txt&

オリエンテーションで日本語変換を習わなかった人は、次のように 日本語を使えるようにしてください。
emacsウインドウを選択し、コントロールキー(Control: キーボードの左側の方にある)を押しながら バックスラッシュ(チルダキーの左隣)を押して、それからローマ字入力で何か 単語を打ち込んで下さい。 更にスペースキーを押すとカナ漢字変換できます。一番下の欄に 何かファイルを作るという質問が何回か出るので、漢字変換が されるまで全てyと打ち込んでください。

これで問題に答えることができます。問題の答を書き込んだら、 コントロール+x (小文字)、コントロール+s (小文字) でファイルに保存してください。

[解答例]
コンピュータの構成要素

    ソフトウェア
    ハードウェア


(A-3)
次の目的で用いるハードウェアの例をあげなさい。
ファイル名:ex01a3.txt

いま、あなたは ex01a2.txt ファイルを開いています。このまま次の問題を解答してコントロール+X、 コントロール+S を打って保存してしまうと、前の解答を上書きしてしまいます。 そうならないよう、新しいファイル(バッファ)を開きます。コントロール+X、コントロール+Fとタイプし、 本問題のファイル名 ex01a3.txt をタイプして下さい。emacs の下の黒い帯のファイル(バッファ)名が 正しく変わったことを確認してから、問いに答え、ファイルを保存して下さい。

[解答例]
入力のため
  マウス, キーボード, スキャナー, デジカメ, タブレット, キーボード, マイク
出力のため
  ディスプレイ, プリンター, スピーカー, ピンディスプレイ(点字用)
記憶のため
  ROM, フロッピーディスク, ハードディスク, CD/DVD, フラッシュメモリー
通信のため
  モデム, 携帯電話, 無線ルータ, スイッチングハブ


(A-4)
プログラミングとは何をすることであるか述べなさい。

ファイル名:ex01a4.txt

以下、同様に解答を続けてください。

[解答例]
コンピュータに対する命令を作成すること



中級レベル

(B-1)
コンピュータプログラミング言語の使用目的を説明しなさい。

ファイル名:ex01b1.txt

[解答例]
文法に従って文を構成し正確に効率良く命令を作成するため


(B-2)
ディレクトリ (directory) および ファイル (file)とは何かを説明しなさい。

ファイル名:ex01b2.txt

[解答例]
ファイル
  情報を入れておくもので、画像、音声、文書などがある。
ディレクトリ
  複数のファイルを入れておく箱のようなもの。
  ディレクトリの中にまた別のディレクトリを入れることができ、
  木状の構造にすることができる。


(B-3)
ワークステーションオリエンテーションやリテラシーで学んだコンピュータのコマンド(lsなど)の使用目的と使い方(使用例)を説明しなさい。 コマンドは5つ以上とします。

ファイル名:ex01b3.txt

[解答例]
ls             ファイルやディレクトリーの一覧を表示

cp file1 file2
 もしくは
cp file directory       ファイルやディレクトリーのコピー作成

cat filename        ファイルの表示

mv old_filename new_filename
 もしくは
mv filename directoryname  ファイルやディレクトリーの名称変更, 移動

cd             ディレクトリーの移動

emacs            エディターの起動

firefox            インターネットブラウザーの起動



上級レベル

(C-1)
課題B-3で述べた全てのコマンドに対して、manを用いてオプションを3つ以上調べ、それぞれ使用目的を説明しなさい。但し、以下のようにします。
  1. manで説明が見つけられない(No manual entry for ....)場合には、「マニュアルが見当たらない」と書く。
  2. オプションが全くない場合には、「オプションがない」と書く。
  3. オプションが3つ以上存在しない場合には、オプションの種数を示した上で、ある分だけの説明を書く。

ファイル名:ex01c1.txt

なお、コンピュータのコマンドの使い方を以下のように、manコマンドで調べることができます。
% man ls
man は manual(マニュアル)の略です。 上のコマンドを実行し、表示される画面を見ると OPTIONS の項目があります。 これを見ると各々のコマンドにはオプション(OPTIONS)をつけて実行することができることがわかります。

[解答例]
ls   ファイルやディレクトリーの一覧を表示
  -a 全てのファイルを表示
  -F ディレクトリー名には/をつけて表示
  -l 詳細情報を表示
  -r 逆順表示

cp   ファイルやディレクトリーのコピー作成
  -i インタラクティブにコピー
  -r 再帰的にコピー
  -p ファイルの属性を含めてコピー

cat   ファイルの表示
  -n 行番号をつけて表示
  -s 存在しないファイルを指定されても文句を言わない
  -v TAB などの通常表示されない文字も表示

mv   ファイルやディレクトリーの名称変更, 移動
    オプションは3つない.
  -f 既に存在するファイルをターゲットにしても警告なしに実行
  -i 既に存在するファイルをターゲットにすると実行するかを問い合わせる

cd   ディレクトリーの移動
  オプションはありません

emacs  エディターの起動
  man pageが無いようです。(これは単なるサンプル、実際にはある。)

firefox     インターネットブラウザーの起動
  -display  使用するX serverを指定
  -geometry 表示する座標を指定
  -help   optionの表示
  -iconic  アイコンで起動
  -install  個人のカラーマップを使用
  -mono   画像の色を白黒で表示


(C-2)
上の課題 C-1で取り上げたものそれぞれの関連コマンドを挙げなさい。

ファイル名:ex01c2.txt

manを用いると、関連するコマンドが "SEE ALSO" の項目に書かれています。もちろん、無いものもあります。

[解答例]
ls  ファイルやディレクトリーの一覧を表示
   chmod, cp, setfacl, terminfo, attributes, environ, largefile, XPG4

cp  ファイルやディレクトリーのコピー作成
   chmod, chown, setfacl, utime, attributes, environ, largefile, XPG4

cat  ファイルの表示
   touch, environ, attributes, largefile

mv  ファイルやディレクトリーの名称変更, 移動
   cp, cpio, ln, rm, setfacl, chmod, attributes, environ, largefile, XPG4

cd  ディレクトリーの移動
   csh, ksh, pwd, sh, chdir, attributes, environ

emacs エディターの起動
   マニュアルが見当たらないので不明(これは単なるサンプル、実際にはある)

firefox インターネットブラウザーの起動
   attributes


(C-3)
man コマンドにもオプションがあります。 オプション -k の用例を man で調べ、例えば man -k logoutman -k telnetrc を実行した結果を参考にして、このオプションの機能を説明しなさい。なお、man で表示したものを単にカット&ペーストするだけではダメです。和英を問わず、一通り読んで必要な個所を絞り込み、簡潔に自分の言葉で説明すること。

ファイル名:ex01c3.txt

[解答例]
-kの後に指定したキーワードを含む命令とその1行解説を表示してくれる。
関連する命令を調査するのに有用。



何か疑問や間違いがあれば以下に連絡して下さい。
プログラミング入門演習問題担当(prog0)