プログラミングA/B Q&A
Q.
Windowsマシン上でPASCALプログラムを実行したいのですが?
A.
処理系一式を用意しましたので,ここからダウン
ロード(4.5MB)してインストールしてください.また,CD-Rの空メディア
を持って来てもらえれば,こちらで焼いて手渡しすることもできます.
なお,日本語を入力する場合は「Alt+半角/全角」を押して入力モードを切替
えてください.
あるいは,Windowsと同居させるかたちで,サイバーメディアセンターで使用
しているOS(Vine Linux)をインストールし,その上でPASCAL処理系を使う手
もあります.
Q.
Windowsマシン上でPASCALプログラム内の日本語が文字化けするのですが?
A.
nkfやqkcなどの文字コード変換ツールを使ってプログラムの文字コードを変換
してください.
Windowsマシン上では,文字コードがSJISで,改行コードがCR+LFです.サイバー
メディアセンターでは,文字コードがEUCで,改行コードがLFです.ここから
ダウンロードした処理系であれば,下記のコマンドで変換できます.
% qkc -sm hoge.pas (SJISへ変換する場合)
% qkc -eu hoge.pas (EUCへ変換する場合)
Q.
PASCAL コンパイラの使い方がわかりません.
A.
PASCAL コンパイラの使い方について簡単にまとめておきます.
1. ソースコードの作成
gEdit または xemacs で書く.
XXX.p または XXX.pas という名前で保存する.
gpc では .p または .pas で終わる名前で保存しないとコンパイルできません.
2. コンパイル
gpc コマンドを使う.
% gpc XXX.p
とすると,a.out という名前のファイルが生成される.
a.out は XXX.p に書いたプログラムを実行するコマンドである.
つまり,gpc コマンドは,PASCALソースコードをコンピュータ上で実行
できるコマンドに変換する.
3. コンパイルで生成したコマンドの実行
% ./a.out
とする.
4. gpc が生成するコマンドのファイル名の指定
% gpc -o YYY XXX.p
とすると,a.out ではなく, YYY という名前で XXX.p に相当するコマンドが生成される.
-o の後にはスペースが必要であることに注意!
YYY を実行するには,
% ./YYY
とする.
Q.
プログラムがいつまで経っても終わらないのですが?
A.
無限ループに陥っている可能性があります.Ctrl-Cを入力してプログラムを終了
させましょう.
Q.
サイバーメディアセンターのPASCALは,write文で(' ')の中に日本語の文を入
れることは可能なのでしょうか?
A.
可能です.また,配布する処理系でも可能です.
Q.
3の3乗などはどうやって入力するのですか?
A.
ワープロソフトなどでは,普段我々が紙に書くように3の右上に3を入力すること
ができます.しかし,gEditやemacsなどのエディタでは,ワープロのように右上
に3を入力することはできません.
みなさんは,これらのエディタを使ってPASCALプログラムを編集しますが,一般
的にはx**3であるとかx^3とかの記号を用いて,階乗を表すことを約束している
言語が多いです.
ですので,これらの記号を用いるか,もしくは数値関数を使うという手もありま
す.
なお,もうすぐLatex(ラテックと読む)という文書整形ツールを習うと思いま
すが,紙のうえで書くような数式を綺麗に印刷することができます.そのために
は上で書いたようなx^3などの記号を使うのですが,詳細は楽しみにして下さい.
Q.
以下のようなエラーメッセージがでましたが,意味がわかりません.
nondigits in number whose radix <= 10
これは,どういう意味なのでしょうか,教えてください.
A.
英語の意味自体は「基数が10以下の数値(要するに10進法, 9進法, 8進法, ...,
のいずれかで記述された数値)中に'0' から '9' 以外の文字が含まれている」
ということです.
たとえば,2000と書くべきところを200a0などのように英字が混ざってしまって
いる場合などが考えられます.
Q.
ストップウォッチ(swatch.pas)の測定精度はどれくらいでしょうか?
A.
10ミリ秒です.これより短い時間は測定できません.
例えば 100 回の足し算をする時間をストップウォッチで測定すると,
測定結果は 0 秒になります.
Q.
サイバーセンターのPCでは,演習で作成した PASCAL プログラム以外にも
複数のプログラムが動作しています.
ストップウォッチ(swatch.pas)が測定する時間には,これら他のプログラムの
実行時間も含まれるのでしょうか?
A.
含みません.
ストップウォッチは,他のプログラムが動いていても,PASCALプログラムの実行時間だけを
測定します.複数のPASCALプログラムを同時に動かした場合,個々のPASCALプログラムの
実行時間を個別に測定します.