Archive for the ‘クイズ’ Category

(Quiz/1年次) プログラミング: C言語におけるデバッグ

月曜日, 7月 27th, 2009

(出典: Wikipedia:デバッグ

デバッグ (debug) とはコンピュータプログラムや電気機器中のバグ・欠陥を発見および修正し、動作を仕様通りのものとするための作業である。
(中略)
デバッグの基本的なステップは以下である。

  1. バグの存在を認識する
  2. バグの発生源を分離する
  3. バグの原因を特定する
  4. バグの修正方法を決定する
  5. 修正し、テストする

上記を踏まえて,以下のクイズに答えよ.

  • プログラムを実行した結果,誤りのある最終結果が出力された.どうやらどこかで処理を誤っているようだが,プログラムとしては正常終了(最後まで実行して処理を終了する)している.このような場合,どのように誤りを見つけたら良いか?
  • プログラムを実行した結果,何も出力する事無く Bus error,または Segmentation fault により異常終了してしまった.このような場合,どのように誤りを見つけたら良いか?
  • 「Bus error」や「Segmentation fault」とはどのような状況で起きるのだろうか?

(Quiz/4年次) 科学論文の英語用法百科: according to

木曜日, 7月 23rd, 2009

以下は「科学論文の英語用法百科〈第1編〉よく誤用される単語と表現, pp.12-17.」からの抜粋です.

[1] According to the entropic effect, the polymer tends to occupy a large spatial region.
[2] According to the primitive method of obtaining these curves, they contain some unnatural parts.

上記は,according to の誤用であり,結果として異なる意図が伝わってしまう.

  • それぞれどのようなニュアンスで according to を使っているだろうか?想定出来る解釈を述べよ.
  • それぞれ曖昧さを回避するためには,どのように表現するべきか?

(Quiz/3年次) 情報工学実験3/4: プリプロセッサ

水曜日, 7月 22nd, 2009

(出典: Wikipedia:プリプロセッサ

プリプロセッサ(preprocessor)とは、一般にある処理を行うソフトウェアに対して、データ入力やデータ整形などの準備的な処理を行うソフトウェアのことである。特にコンパイラに対して使うことが多く、ここではこのことを中心に述べる。
(中略)
コンパイル処理において、プリプロセッサ(preprocessor)とは、コンパイラがソースコードをコンパイルする前に、一旦ソースコードに処理を施すためのプログラムである。

上記を踏まえて,以下のクイズに答えよ.

  • C言語における「ファイルの読み込み (including)」に相当するプリプロセッサの利用例を示せ.
  • 同様に,「マクロの展開(文字列を、あらかじめ定義された規則に従って置換する)」に相当する利用例を示せ.
  • 同様に,「コンパイル条件によるソースコードの部分的選択」に相当する利用例を示せ.
  • このような機能が実現出来ると,何が嬉しいのだろうか?検討せよ.

(Quiz/2年次) 情報工学実験1/2: Make

火曜日, 7月 21st, 2009

(出典: Wikipedia:Make

make は、プログラムのビルド作業を自動化するツール。コンパイル、リンク、インストール等のルールを記述したテキストファイル (Makefile) に従って、これらの作業を自動的に行う。

このように適切な Makefile さえ用意してあげれば,誰でも中身を確認する事無く自前でプログラムをコンパイルし,実行ファイルを生成できるようにするのが make である.

上記を踏まえて,以下のクイズに答えよ.

  • 「インストール等のルールを記述したテキストファイル (Makefile)」とあるが,そのルールはどのように記述するのだろうか?
  • 複数のルールを記述するにはどうすれば良いだろうか?
  • 複数のルールが記述されている場合には,引数無しで make コマンドを実行した場合にどのように処理される(どのルールを選択する)か?
  • こちらで意図したルールを選択して実行するにはどうすれば良いだろうか?

(Quiz/1年次) ソフトウェア基礎演習: コマンドの利用

月曜日, 7月 20th, 2009

Unixのコマンドラインで使えるちょっとした小技をまとめた『Unix Comman-Line Kung Fu』より)

これは良い文書。毎年Unixをいろいろな人に教えているコンサルタント、HalさんのプレゼンテーションがScribdで公開されていました。初心者が覚えるべきちょっとしたコマンドの小技がまとまっています。

たくさんの技があるのですが、個人的にぐっときたポイントをメモ程度にまとめておきます。興味のある方は是非全文読破してください。

上記で紹介されている小技集は,bash シェルを前提としたドキュメントである.tcsh で使えない場合には bash を利用してみよう.一時的に利用したいだけならばコマンドライン上で

prompt> bash

のように実行するだけである.

これらを踏まえて,以下のクイズに答えよ.

  • プログラミング等,作業によっては「少し編集->コンパイル->実行->動作確認」のように,なんらかのループ処理を何度も繰り返すスタイルで行われる事が多い.このように「直前や少し前に実行した過去のコマンドを実行したい」という欲求に答えるものが【コマンドヒストリ】である.現在利用しているシェルでコマンドヒストリとして記録されているヒストリを出力し,確認するにはどうすれば良いか?
  • ヒストリ上に記録されている過去のコマンドを実行するには,どうすれば良いか?
  • 過去のコマンドを「全く同じように実行したい」事もあれば,「同じ引数に対して違うコマンドを実行した」事など,さまざまな欲求が出てくるシチュエーションが出てくる.このようなヒストリ機能への対応は,シェルにより大きく異なる機能の一つである.tcsh, bash, zsh でのヒストリ機能について違いを調べよ.

(Quiz/1年次) ソフトウェア基礎演習: シェル

金曜日, 7月 17th, 2009

Wikipedia:シェルより)

シェル (shell) はオペレーティングシステム (OS) の機能の一部であり、ユーザーからの指示を受けて解釈し、プログラムの起動や制御などを行うプログラムである。

上記を踏まえて,以下のクイズに答えよ.

  • 情報工学科では未だに tcsh から教えているが,実はこれは既に標準シェルとして利用されることが少なくなって来ている,古くさいシェルである.どのようなシェルがあるだろうか? tcsh より使いやすいシェルは無いだろうか?
  • 何故このように多くのシェルがあるのだろうか?シェル毎に何が違うのだろうか?
  • 一般的に,シェルは CUI である.提供している機能の多くは GUI でも実行可能なことが多い.それでもシェルを使うにはそれだけのメリットがあるからである.どのようなメリット・デメリットがあるだろうか?

(Quiz/4年次) 科学論文の英語用法百科: about

木曜日, 7月 16th, 2009

以下は「科学論文の英語用法百科〈第1編〉よく誤用される単語と表現, p.6」からの抜粋です.

[1] These values are all about 2.0.
[2] These cross sections are all about the same.

上記は,about を使うことによって表現が曖昧になる例文である.

  • 「表現が曖昧になる」とは,複数の解釈が考えられてどう解釈したら良いのかが分からないという意味である.それぞれどのようなニュアンスで about を使っているだろうか?想定出来る解釈を述べよ.
  • それぞれ曖昧さを回避するためには,どのように表現するべきか?

P.S.
この本はいろんな誤用・表現が網羅されてるだけでなく,検索出来るようにPDFファイル(英語版)がCDに収録されているので,お勧め!

(Quiz/3年次) プログラミング3/4: テスト駆動開発

水曜日, 7月 15th, 2009

[動画で解説]和田卓人の“テスト駆動開発”講座: 第2回 「テスト駆動開発」とは何か?より)

このWeb連載では,テスト駆動開発の啓蒙,つまりテスト駆動開発の紹介と説明を行っていきたいと考えています。そのためにはまず,「テスト駆動開発」という言葉の説明をしなければなりません。

テスト駆動開発は,よく略されて「TDD」と呼ばれます。これは「Test Driven Development」の略です。Drivenを「駆動」と訳すので,「テスト駆動開発」となるわけです。まずみなさんにテスト駆動開発とはどのようなものなのかを説明するところから,この連載を開始します。

「テスト駆動」と同じ意味で用いられることが多い用語に「テストファースト」がある.特に後者では【モノを作るよりも前に,まずテストから着手する】という点でそれまでの開発スタイルに対して大きな衝撃を与えた.

上記を踏まえて,以下のクイズに答えよ.

  • 「テスト」とは何だろうか?
  • テスト駆動やテストファーストの利点は何だろうか?
  • 同様に,欠点は何だろうか? それとも,欠点の無い理想的な開発スタイルだろうか?

(Quiz/2年次) 情報ネットワーク: ネットワークアドレス

火曜日, 7月 14th, 2009

IT用語辞典:ネットワークアドレスより)
ネットワークアドレスとは、IPアドレスを構成するビット列のうち、個々の組織が管理するネットワーク(サブネット)を識別するのに使われる部分。

 インターネットのような巨大なTCP/IPネットワークは、複数の小さなネットワーク(サブネット)に分割されて管理されており、IPアドレスもネットワークアドレス部とホストアドレス部に分かれる。このうち、ネットワーク全体の中でサブネットを識別するのに使われる部分がネットワークアドレス部である。

上記を踏まえて,以下のクイズに答えよ.

  • 情報工学科ではLANを含めいくつかのサブネットワークで構成されている.各々のネットワークアドレスは何か? もしくはどのような構成になっているだろうか?
  • 異なるネットワークに接続された機器同士が通信するために必要なネットワーク機器は何か?
  • そのネットワーク機器は,情報工学科内にあるだろうか?

(Quiz/1年次) ソフトウェア基礎演習: sudo

月曜日, 7月 13th, 2009

Wikipedia:sudoより)
sudo(“su do”)はUNIXおよびUnix系オペレーティングシステムのプログラムの1つで、ユーザーが別のユーザー(通常、スーパーユーザーすなわち root)の特権レベルでプログラムを実行するためのコマンドである。デフォルトではその別ユーザーのパスワード入力を求めてくるが、設定を変更すれば root のパスワードを求めるようにもできるし、擬似端末につき1回だけパスワードを入力すればよいようにも、全くパスワード入力を求めないようにもできる[2]。sudo は各コマンド実行を記録でき、スーパーユーザーとしてのログインの完全な代替として使う場合もある。例えば、アップルの Mac OS X や Linuxディストリビューションの Ubuntu はそのような使い方をしている[3][4]。

上記を踏まえて,以下のクイズに答えよ.

  • 「特権レベルでプログラムを実行するためのコマンド」とあるが,特権レベルとは何か? 何のために特権レベルが存在しているのだろうか?
  • 「sudo は各コマンド実行を記録でき」とあるように,その実行履歴がログとして保存されている.その保存場所は環境依存の部分もあり,必ずしも同一の場所・同一ファイル名とは限らないが大凡似たような場所にある.Mac OS X の場合はどこに保存されているだろうか? 学科サーバ(Cent OS, Fedora)の場合にはどこに保存されているだろうか?
  • ログファイルがどうしても見つけられない場合,どうやれば探し出す事が可能だろうか?