• 検索結果がありません。

計算機言語

N/A
N/A
Protected

Academic year: 2021

シェア "計算機言語"

Copied!
3
0
0

読み込み中.... (全文を見る)

全文

(1)

計算機言語

II

1

http://www.math.u-ryukyu.ac.jp/~suga/gengo/2018-2/01.pdf

1

講義情報とそれに関連すること

この講義は「計算機言語I」です. 登録許可コードは,j26nです. 前半は,テキスト

柴田望洋著,·明解C言語 入門編,ソフトバンククリエイティブ を利用し,前期の続きを講義します. 後半では,

奥村晴彦著, 改訂新版C言語によるアルゴリズム辞典,技術評論社 を参考に,様々なアルゴリズムとそのC言語への実装を解説します.

前期と同様,以下の参考文献は, 必要に応じて各自参考にしてください.

参考文献

[1] B. W. Kernighan, D. Ritchie, The C Programminng Language 日本誤訳 石田晴久訳 プログラミング言語C2版 共立出版

[2] S. Oualline,岩谷宏訳, Practical C Programming 現実的なCプログラミング ソフトバンク [3] 藤原博文著, Cプログラミング診断室 技術評論社

[4] L. Baker,吉田弘一郎訳, C言語数学関数ハンドブック 技術評論社 [5] W. H. Press他著,丹慶勝市他訳,Numerical recipies in C 技術評論社

[6] B. W. Kernighan, R. Pike,福崎俊博訳,プログラミング作法,アスキー, 2017

[7] B. W. Kernighan, R. Pike,石田晴久監訳,野中浩一訳, Unixプログラミング環境,アスキー, 1985[8] N. Wirth,片山卓也訳,アルゴリズム+データ構造=プログラム日本コンピュータ協会1979[9] Donald E. Knuth, The art of computer programing, vol 1 - vol 3 Addison-Wesley (アスキーから日

本語訳あり)

[10] K.Jensen, N. Wirth,原田賢一訳, Pascal4版 培風館

[11] A. W. Aho, B. W. Kernighan, P. J. Weinberger, 足立高徳訳,プログラミング言語AWKアジソ ン ウェスレイ トッパン1988

1

(2)

単位とテキストについて

単位はe-mailによるレポートで判定します. 問題は,配布テキストに書きます. 送り先は以下です.

[email protected]

配布プリントをanonymous ftpに置きます. 置き忘れていれば催促して下さい.

ftp://ftp.math.u-ryukyu.ac.jp/pub/gengo/2018-2

前期に述べたディレクトリ(フォルダ)を用いたファイルの整理や,コンパイラの使い方などは, 改めて解説 はしません. 忘れた場合は,上記のサイトからテキストを取ってきて,復習してください.

2 getchar()

テキスト8–5(p. 228)から授業を始めます. テキストでは「文字」となっていますが,現実には, char型 の解説です.

getchar は 標 準 入 力 か ら 1 文 字 を 取 っ て く る の に 用 い る ラ イ ブ ラ リ 関 数 で す. 講 義 で 用 い て い る 処 理 系 で の 実 際 の 動 作 は, 呼 ば れ る ご と に 1Byte 毎 に 入 力 を 読 み 込 み ま す. す な わ ち, 日本語の漢字やかなは,たとえそれが1文字であっても, getchar()で取得することはできません. 以 前 に putchar()という標準出力に1文字を出力する関数を用いましたが,それの入力版です. 返り値は, int型です. 正常な入力では, char(用いている処理系で1Bypte)の値を取得しますが,エラーやファイルの終わりを検 知したときには, EOF (End of File)というstdio.hでマクロ定義された値が返ります. この値がint型なの です. 従って, getchar()で取得する値を代入する変数型はintにする必要があります. EOF の値は, stdio.h でマクロ定義されており,1とする処理系が多いですが,この値は処理系依存です(p.229 Column 8–3).

教科書list 8-8.cをコンパイル,実行してみてください. プログラムを見ればわかるように,標準入力を読ん

でそのまま出力するおうむ返しプログラムです. 実行させると,標準入力からの入力待ちになるので,キーボー ドから何か入力すると,それがおうむ返しで返されます. おうむ返しが起こるのが, Enterキーを押されたとき であるというのは,入力のバッファリングが理由です. また,このバファリングのおかげで,日本語を入力して もきちんと出力されます(p. 234, Column 8–4). EOFを受け取ると,処理が終わりますが, キーボードから それを入力するには, Ctrl – d を推します.

while文は多くの動作を1行に書いており,今の目で見ると感心しない記述ですが, Cのソースではこのよ

うな記述は多く見かけます. Kerighan – RitchieCのバイブルにこのような記述があるからです.

このプログラムの実際の動作は,1Byte毎に入力を読みそれをそのまま出力する」ですので,入出力のリダ イレクションを用いると,ファイルのコピーができます(p. 234, Column 8–4). 例えば,

./a.out < a.out > b

とすると, a.outと同じ内容のファイルb が作られます. ただし, cp コマンドと違い,ファイルモードは元の

ファイルとは異なります. chmodを用いて,上のように作ったファイルb を実行可能にすると, a.outと同じ 動作をするプログラムになります.

2

(3)

3

文字定数

Cのソースコードでは, シングルクォート で挟んだ1文字が文字定数になります. この文字定数は,その 処理系でプログラムを記述する際に用いられる文字に限られ,ほとんどの処理系では, Asciiコードの文字だけ です. 従って,日本語の漢字やかなは,シングルクォートで挟んで文字定数にすることはできません.

教科書p. 230, List 8-9をコンパイルし実行してみてください.

文字コード

教科書 p.232JISコードと表記されているものは, JIS X 0201 1976と呼ばれる規格で,今では用い られていません. 計算機概論I で述べましたが,今はUTF-8と呼ばれるコードが,もっとも多く用いら れています. これは, 最上位ビットが0なら1Byte Asciiコードと解釈されます. (日本語のWindows だけは\を通貨の円記号¥を表記し,他のOSや言語とは異なる表記になります.)

Ascii コードについては, http://www.math.u-ryukyu.ac.jp/~suga/joho/2018/04/node2.html を参照してください. ほとんどのCの処理系は,このアスキーコードの値が文字定数として許容される 値です.

文字コードの値は数ですので「計算」を施すことだできます, . 例えば,’8’-’2’ = 6ですし,’9’ + 1 = ’:’

です. このことを利用してlist 8–9と同じ動作をするプログラムを書くと, list 8–10になります. コンパイル して実行してみてください.

文字コードの値(数値)を表示するプログラムが, list 8–11です. これも実行してみてください.

4

エスケイピング

教科書p. 234では, 拡張表記としてありますが, 実際にはエスケイピングです. C言語でも特別な意味を持

つ文字がいくつかあります. ’, ", \, ?4つです. " は文字列を指定するときに用います. は文字定 数を表記するのに用います. ?3項演算子の記号です. \,タイトルにあるエスケイピングのための記号 です.

すなわち,これらの文字は, C のコンパイラに対して特別な意味を持つので,これらの文字そのものを扱う 際には, その意味を外す(escape する)必要があるのです. その方法は,\ に続けて記述するです. すなわち,

\’, \", \\, \?でその文字そのものを指すようになります.

これら以外にも, エスケイプシーケンス(escape sequence)と呼ばれる, Ascii 文字の制御部分(Ascii文字 表の左側の2列部分)を表記する方法が定義されています. よく用いられるのが,\n(改行)\t(水平タブ)で す. 一覧表が. 教科書p. 235にありますので,見ておいてください.

レポート問題

(

締め切り

: 10

11

(

))

教科書 p. 231,演習8–9. 件名: Enshu 8–9

教科書 p. 235,演習8–10. 件名: Enshu 8–10

3

参照

関連したドキュメント

鎌倉時代の敬語二題︵森野宗明︶

る、関与していることに伴う、または関与することとなる重大なリスクがある、と合理的に 判断される者を特定したリストを指します 51 。Entity

2021] .さらに対応するプログラミング言語も作

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

Matsui 2006, Text D)が Ch/U 7214

操作は前章と同じです。但し中継子機の ACSH は、親機では無く中継器が送信する電波を受信します。本機を 前章①の操作で

 “ボランティア”と言えば、ラテン語を語源とし、自

自作プログラムをもとに、 最高 16 段階の工程を 作ることができます。 より細かな温度設定をしたい 時に便利です。.