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

● 実習内容

N/A
N/A
Protected

Academic year: 2021

シェア "● 実習内容"

Copied!
3
0
0

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

全文

(1)

2003年度・計算機数学3・第3回実習

1

● 実習内容

【C言語】

1.

まず

,

以下の

ex03.c

を入力してコンパイルおよび実行を行ってみよう

.

このプログラムは

,

以下を行っていることに注意する

.

整数型変数(int型変数)の宣言(定義)

変数に定数を代入すること

変数に16進定数を代入すること

変数に定数を加算すること

変数にほかの変数の値を代入すること

変数にほかの変数の値を加算すること

これらの操作がどのように行われているかを良く理解してほしい

.

2. ex03.c

を参考にして,以下のようなプログラムを書いてみよう.

利用している処理系での「(符号付き)正の整数の最大値」を

int

型変数に代入する

.

その変数の値を10進および16進で表示させる

.

その変数の値に

1

を加える

.

その変数の(加算した後の)値を10進および16進で表示させる

.

「正の整数の最大値」に

1

を加えたときにどのようなことが起ったのか

,

それはなぜなのかを考 えてみよう

.

3.

さらに

,

次のようなプログラムを書いてみよう

.

利用している処理系での「(符号付き)正の整数の最大値」を

unsigned int

型変数に代入 する

.

その変数の値を10進および16進で表示させる

.

その変数の値に

1

を加える

.

その変数の(加算した後の)値を10進および16進で表示させる

. int

型変数と

unsigned int

型変数では何が違うのかを理解しよう

.

なお,

printf

関数で

unsigned int

の値を表示させるには

%d

ではなく,

%u

を用いる必要が ある.

電子メールで「今日の講義の感想や意見」を送ってください.

★ 注意

上の実習内容の

2

で行ったことは

,

やってはいけないことである

.

プログラムで算術型の変数を利用す る場合には

,

常に「桁あふれ」を考慮しなければならず

,

符号付き整数では

,

桁あふれが生じた場合に何が 起るかは処理系依存であるので

,

桁あふれの結果に依存するようなプログラムを書いてはいけない

.

なお

,

「符号なし整数」に対しては

,

桁あふれが生じてもその演算結果は規格により「保証」されている

.

ex03.tex,v 1.1 2003-04-24 15:50:47+09 naito Exp naito

(2)

2

2003年度・計算機数学3・第3回実習

ex03.c

の内容

#

" !

/* ex03.c */

/*

整数型変数

*/

#include <stdio.h>

int i, j, k ;

int main(int argc, char **argv) {

i = 0 ; /* i

0

を代入

*/

printf("i = %d\n", i) ; printf("i+1 = %d\n", i+1) ; printf("i = %d\n", i) ;

i = i + 1 ; /* i

1

を加算

*/

printf("i = %d\n", i) ;

j = 0x7f ; /* j

に16進定数

7F

を代入

*/

printf("j = %d\n", j) ; printf("j = %X\n", j) ;

k = i ; /*

変数

k

に変数

i

の値を代入

*/

j = k + j ; /*

変数

j

に変数

k

の値を加算する

*/

printf("j = %d\n", j) ; return 0 ;

}

● 前回の実習の解説

【UNIX】

【シェルとワイルドカード】

foo1.txt, foo2.txt, bar.txt

という3つのファイルを作成してから

,

「ワイルドカード」

を用いて

, foo1.txt

foo2.txt

だけを消去することを考えてみよう

. (

資料

section 4.4.2)

例えば

, rm foo?.txt

で消去できる

.

この他にも

rm foo* , rm f*

など

,

いくつも考え られる

.

これは以下のように考えれば良い

.

消去したい

foo1.txt , foo2.txt

で共通する部分を抜き出すと

, foo?.txt

となる

.

らに

, foo?.txt

,

消去してはいけない

bar.txt

にはマッチしないので

, rm foo?.txt

で良いことがわかる

.

foo1.txt, foo2.txt, bar1.txt

という3つのファイルを作成してから,「ワイルドカード」

を用いて

, foo1.txt

bar1.txt

だけを消去することを考えてみよう

. (

資料

section 4.4.2)

ex03.tex,v 1.1 2003-04-24 15:50:47+09 naito Exp naito

(3)

2003年度・計算機数学3・第3回実習

3

上と同様に考えれば

, rm *1.txt , rm *1.* , rm *1*

などが考えられる

.

★ 発展課題

foo1.txt , foo2.txt

という2つのファイルのみがあった状態で

,

これらをそれぞれ

bar1.txt , bar2.txt

という名前のファイルに置き換えたい

.

これを

“ mvfoo?.txtbar?.txt ”

により望む結果が得られるのか

?

もし

,

そうでないならば

,

その理由は何か

?

これは

,

それなりに難問である

.

まず

,

次の事実に注意しなければならない

.

コマンドが受け取る「文字列」はワイルドカードを含んだものではなく

,

ワイルドカー ドがシェルによって展開された後のものである

.

また

,

ワイルドカードの展開結果は文 字列の辞書式順序にしたがって展開される

.

この場合は

,

ワイルドカード

foo?.txt

foo1.txt foo2.txt

に展開され

, bar?.txt

に一致するものが存在しないので

, mv foo1.txt foo2.txt

というコマンドを実行した ことに等しい

.

【C言語】

次に

,

おなじ

hello.c

% gcchello.c-otest Return

としてコンパイルしてみよう

.

さらに

,

% test Return

としたときと

% ./test Return

としたときの実行結果には何か違いが生じるかを調べ

,

その理由を考えてみよう

. (

資料

section 4.4.5.1)

UNIX

のシェルには「コマンド実行パス」という「環境変数」が存在する

.

シェルから

「絶対パス」や「相対パス」で表されていないコマンド名を入力した場合には

,

コマン ド実行パス(ディレクトリ)の中からそのコマンドを検索し

,

最初に見つかったコマン ドを実行する

.

例えば

,

コマンド実行パスが

/usr/bin:/bin

となっている場合には

,

のコマンドを

,

最初に

/usr/bin

から探し

,

次に

/bin

から探す

.

それが見つからなかっ た場合には

“Command not found”

と判断し

,

実行を取りやめる

.

また

,

コマンド実行 パスには標準的には

/usr/bin, /bin

が含まれている

.

したがって

,

単に

test

と実行した場合には

,

実際には

/usr/bin/test

などが実行され ている

.

カレントディレクトリに存在する

test

を実行するには

,

明示的に相対パスを 利用して

./test

とする必要がある

.

なお

,

コマンド実行パスを表示させるには(

csh

では)printenv PATHというコマンド を実行すればよい.

ex03.tex,v 1.1 2003-04-24 15:50:47+09 naito Exp naito

参照

関連したドキュメント

最も偏相関が高い要因は年齢である。生活の 中で健康を大切とする意識は、 3 0 歳代までは強 くないが、 40 歳代になると強まり始め、

(注)本報告書に掲載している数値は端数を四捨五入しているため、表中の数値の合計が表に示されている合計

・本計画は都市計画に関する基本的な方 針を定めるもので、各事業の具体的な

・ 教育、文化、コミュニケーション、など、具体的に形のない、容易に形骸化する対 策ではなく、⑤のように、システム的に機械的に防止できる設備が必要。.. 質問 質問内容

LUNA 上に図、表、数式などを含んだ問題と回答を LUNA の画面上に同一で表示する機能の必要性 などについての意見があった。そのため、 LUNA

(注)本報告書に掲載している数値は端数を四捨五入しているため、表中の数値の合計が表に示されている合計

必要があります。仲間内でぼやくのではなく、異

これらの事例は、照会に係る事実関係を前提とした一般的