• Tidak ada hasil yang ditemukan

2 章前半部分の補足とレポートに対するコメント 計算機言語 I 第 2 回教科書

N/A
N/A
Protected

Academic year: 2025

Membagikan "2 章前半部分の補足とレポートに対するコメント 計算機言語 I 第 2 回教科書"

Copied!
2
0
0

Teks penuh

(1)

計算機言語 I 2

教科書 2 章前半部分の補足とレポートに対するコメント

この資料: http://www.math.u-ryukyu.ac.jp/~suga/gengo/2023a/02.pdf

講義は,教科書に従って進めます. この資料はその補足です. 今回は,教科書 2章, 2.1節から2.6節を講義します.

1 #include について

まずは,教科書p. 18 – p. 20の内容を読んで, p.18プログラム2.1 を実行してください(前回の内容を思 い出すこと).

前回述べましたが, C言語の処理系(gccあるいはcc)では,処理をいくつかに分割して最終的な成果物を作 成します. その際,行の先頭が# で始まる行はcpp (C pre processor)が処理をします. それは, C compiler

(ccom)が処理をする前に,コメント文の削除や,マクロの展開などの文字列処理を行いなす.

プログラムの先頭に書かれる#include,別ファイルに記述してある内容をプログラムの中に取り込む操 作が行われます.

教科書に書かれている

#include <stdio.h>

は, stdio.h という名前のファイルをプログラムに取り込んでいます. この時, ファイル名の両脇にある記

号<, >は,プログラム処理系で特に定まった場所にあるファイルを取り込むという意味になります. Linuxで は処理系では,その場所は, /usr/includeというディレクトリです. 実際そこには, stdio.hや, math.hという 名前のファイルがあります. macOSでは,全く違うディレクトリにstdio.hがありますが, Unix系なのでそ の記述はLinuxと似ています. Microsoft のVisual Studioは, Unix系とはかなり違う構成になっています が,それを詳しく解説できません. Windowsでも, Cygwin やMinGW を用いて処理系を導入した場合,ある

いは, WSLを利用する場合は, Linuxと似たようなものになります.

1.1 教科書とレポートへのツッコミ

ファイルmath.h は前回のプログラム,レポート問題, この後の教科書のプログラムで用います. math.hと

いうのは,数学関数や数学上重要な定数を利用するにあたって,それらの宣言が記述されたファイルです.

bash-4.4$ less /usr/include/math.h

1

(2)

を実行してみると,

# define M_PI 3.14159265358979323846

という行があります.

従って, double型で数値計算をするときには, math.hをinclude して, M_PIを利用するのが通常で,教科 書のように,#define PAI ....と書いたりはしません.

有効数字という悩ましい問題があって, M_PIは,通常使う有効数字的には桁が多すぎます. 現実の実験 系がその辺をどう扱っているかは, 知りません. ただし,πを最定義するのなら, 普通はPAIではなく PIだと思います.

レポートの解答で, sin(30)を計算した方がいました. 通常, sinの変数はradianですので, 当然,間違った 答えになっています.

間違いを犯すのはよくあることなのですが,重要なのは間違いに気づくことです. sin(30) = 12 は,三角比 を習った時点ですぐに知る内容なはずです. 0.5に近い値が出なかったときに,「何かを間違えている」と気づ けないようでは,数理の学生として失格です.

また, 3角関数の変数がradianを単位にする理由もきちんとわかっていてください. (sinx) = cosxのそ こそこ厳密な証明くらいはできるようになって, (あるいは, 高校の教科書の lim

x0

sinx

x = 1の証明のどこにゴ マカシがあるのかを理解して)卒業してください.

1.2 マクロ置換 : #define

教科書p. 24にあるように,行頭の #defineはcpp により,マクロ置換と呼ばれる操作が行われます.

#define HOGE hogehoge

とあると, cppがプログラムソース内のHOGEという文字列を hogehogeという文字列に置き換えて,その

結果をC compiler に渡します. 実行していることは単純な置き換え以外の何者でもありません.

レポート問題

640320×640320×640320の値を出力するプログラムを書け. (教科書を先読みするか, 64bit整数の使い 方を調べないと,答は出ない.)

• レポートする内容は,プログラムソースと実行結果. 実行結果の出力形式は, 各自に任せる.

• 件名: gengo2023 report 2-1,送り先: [email protected],締切5月1日(月) 10:00(JST)

2

Referensi

Dokumen terkait

新・漢語類別語彙(暫定版)の検証 新・漢語類別語彙(暫定版)が,諸方言間の対応を示すものとして,また世代間の対応 を示すものとして使用できるものかどうかを検証するために,愛媛県東中予地方でもっと も共通語化が進行している松山市方言の若年層(1名)をとりあげ,和語との比較をおこな った.具体的には,漢語にも,和語と同様の変化(共通語化)が起きているのかを確認し

置換を許す体系はどんな文字列の対応関係でも 記述できるのだが,見通しが効かないのである. この点の下で,次のことにも注意しておくと 有益だろう: 注意3: 変形に置換を含め,sとtの型が同じで あるという制約を外した場合,変形は写 像と等しい.従って,それはすべてのこ とが扱える. 具体的に言えば,h s, t i の型として ih 統語 構造, 統語構造

Σをalphabetとする正規言語A, B ∈ PΣ∗に対し、A∩B も再び正規言語で あることを示せ。ヒント: 正規表現の定義から示すのは煩わしい。A, B を認識する有限 オートマトン MA, MB が存在するので、これを用いて A∩B を認識する有限オートマト ンを構成せよ。 問12... 文脈自由言語非決定性プッシュダウンオートマトンに対するPumping

ここでは、なるべく自動的にやろうとしているわけですが、本当 に常にそれがいい結果を生むかどうかは別問題です。特にこの問題では、 関数が周期2πですから、ラベルの間隔を例えば πにして、piとか、2pi などのラベルを書く方が良いと思われますが、こういうことをプログラ ムで自動的に処理するのは難しいです。 ラベルについては、xclick

計算機演習3(講義) 補足 − 2の補数 服部哲弥 質問票3に書いていただいた質問のうち,講義の説明がいちばん不十分だったと思われる 2の補数について補足説明します. 2の補数 定義.講義の通りだが,記号の設定を兼ねて繰り返す. 自然数 を固定する. を満たす自然数の の補数とは自然数 のことをいう. つまり,定義としての の補数は,

次の Firefoxを閉じたときに Cookieとサイトデータを消去するにチェックを入れておくと, Firefox が原因で, Disk quotaが問題になることは無くなります.. 同様のことをできる仕様が複数考えられるわけですが, その中で

しかしif等の予約語、組み込み関数名、組み込み定数名とは同じに出来 ない。 8 真偽 maoは制御フローをもっている。具体的に言えば、他のプログラミング 言語と同じようにif文やwhile文を用いることが出来る。その制御を司る ものとして、普通、関係演算子を用いる。関係演算子とは二つの値がどの ような関係にあるかを示すもので、関係演算子の結果は真または偽のどち

f, g: R→Cは十分滑らかな関数で、 fx = ∑ n∈Z aneinx, gx =∑ n∈Z bneinx をその Fourier 級数展開とする。 4これが任意のf について成り立つとき、{φn}は完全正規直交系であるという。Parsevalの等式は、通常完 全正規直交系に関する命題として提示される。... この問題で述べた事実は、Fourier