演算子 - みる会図書館


検索対象: 月刊 C MAGAZINE 2001年6月号
184件見つかりました。

1. 月刊 C MAGAZINE 2001年6月号

かない。実際に土地を占有している。だか ら不動産。しかし , Java の配列はそれと根 本的に異なります。 Java の配列は「コンセント」ととらえると わかりやすいのではないでしようか。配列 変数はコンセントの根元で , そこからコー ドが出て , オプジェクトを接続するコンセ ントが多数並んでいます ( Fig. 5 ) 。コンセ ントだから別のものに差し替えることもで きるし ( 代入ができる。 C ではできない ) , 参照の数がいくつでもいい ( 型として同じ。 C の場合は要素数の異なる配列は型として 異なる ) 。コンセントがあるだけだから , オプジェクトをつなげないと役に立たない ( C の場合実体もいっしょに存在する ) 。コ ンセントというよりテープルタップかな。 ー配列の使用 配列の各要素は , 配列名と目を使って使 用できます。たとえば要素数 10 個の配列 a rray があったとすれば , array[O], array [ll , ・・・ a 仼 ay 回が使えます。Ⅱの中に入る添 字は , 0 から始まって n- 1 で終わることに 注意してください ( これは C 言語から持ち 越されたものです ) 。 配列の長さは , 配列変数の length フィー ルドから得ることができます。つまり , 上 の場合 , array. length とすると配列の長さ ( 要素数 ) が得られます。この場合は 10 とな ります。 ー配列型の初期化 配列は , 宣言のときに要素も含めて初期 化できます。この場合 new による生成がい りません。 = { 2 , 3 , 5 , 7 int [ ] primes boolean[]arr={false,true,false}; とすると , primes という int 型の配列と arr という b 。 olean 型の配列が生成され , それ ぞれ要素数は 4 と 3 です。参照型でも同様 Data[] a = {new Data(1), new Data(3), new Data(5)) ・ とすると , それぞれ要素数 2 , 要素数 3 の配 列ができます。 宣言した後でも , 即値から配列を生成す ることができますが , そのときはちょっと 違う書き方をします。以下のように書きま す。 int [ ] numbers; numbers = new 土 nt [ ] { 1 , 2 , 3 , 4 , 5 あと , 配列には , 「配列の配列」という ものが存在するのですが , それを話し出す と紙幅が足りないので割愛させていただき ます。 Java の配列の概念を理解できていた らそう難しいものではないので , 各自で調 演算子 べてください。 TabIe 3 演算子 ( その 1 ) とりあえずグループに分けて表にしておき なので , C の講座を参考にしてください。 とおり , Java の演算子はほとんど C と同じ もうスペースがありません。最初に言った やっと演算子になりました。といっても ます (TabIe 3 ~ 5 ) 。 ー算術演算子 数値型に適用され , 算術演算に使います。 インクリメント・デクリメント演算子は変 数にのみ使用でき , その値を 1 だけ増やす・ 減らす働きを持ちます。 * , / , % , + , - は加減乗除を行います。 この中で * , / , % は , 普通の算数と同じ ように + , - より優先されます。すなわち , x + y * z とあったら , x + (y * z) と解釈さ れます。解釈される順番のことを優先順位 といいます。 TabIe 3 では , 優先順位が高いものを上 にしています。 ービット演算子 整数型にのみ適用され , ビットを操作す るのに使います。 ビットの操作といってもなじみがないと 思いますが , たとえば , 変数 x に 10 が入っ ていたとすると , そのビットは 00001010 となっています ( 本当は int 型なら 32 ビット 並んでいる ) 。 ~ x によって反転させると 111 演算子名 ビット演算子 算術演算子 記号名前 ( 「演算子」は省略 ) 十十 十 < く 十 インクリメント デクリメント 単項プラス 単項マイナス 乗算 除算 剰余 ニ項プラス 二項マイナス ビットこと反転 左シフト 符号付き右シフト 符号なし右シフト ビットごと論理積 ビットこと論理和 意味 変数の値を 1 増やす 変数の値を 1 減らす プラス符号 ( あまり意味はない ) マイナス符号 掛け算 割り算 割り算の余りを求める。整数のみ 足し算 引き算 各ビットを反転させる ビットを左にシフトする ビットを右にシフトする ビットを右にシフトする。先頭は 0 で埋められる ビットことの論理積をとる ビットこと排他的論理和ビットことの排他的論理和をとる ビットことの論理和をとる x / Y x % y X くく y X > > y x & y x Y 十十 X ′ X 十十 / 2 string [ ] names = { "Daisuken "Hanakon C MAGAZINE 2001 6

2. 月刊 C MAGAZINE 2001年6月号

スタートアップ Ja a Java 言語事始 TabIe 4 演算子 ( その 2 ) 演算子名 記号名 前 等値 等値演算子 非等値 と & & , にⅡはほとんど同じことをします が , 通常は & & , Ⅱのほうを使ってください。 そのほうが効率がいいです。 ー代入演算子 プリミテイプ型 , 参照型のどちらにも適 用されます。 ーキャスト演算子 式の「型」を変換する演算子です。 たとえば , double 型の変数 d と , float 型 の変数 f があったとします。 d の値を f に代 入しようとして , とすると , 工ラーになります。なぜかとい うと , 元の double の値は float で表せないか もしれない , そうだったら , 値が変になっ てしまう危険性があります。そのため Java では , そういう代入を認めていません。 しかしどうしても代入したいとき , キャ スト演算子を使って以下のように明示的に 型を変えてやります。 ( 創 oa 日 このように , カッコの中に変えたい型名 を記入して , 式の前にくつつけます。 これは参照型にも使えるのですが , その 意味は「継承」のときにお話します。 linstanceof 演算子 (int)x キャスト これも継承の話のときに取り上げます。 X instanceof y 条件 x==y ? a : b 一条件演算子 ( 三項演算子 ) 第 1 項の boolean 型の値によって第 2 項か 10101 となり , x くく 3 によって左シフトする ら true ですが , 参照型の場合は実体が同じ と 001010000 となります。 でなければなりません。 2 つのオプジェク 第 3 項を返すという演算子です。 たとえば , トのフィールドが一致しても , 実体として ー等値演算子 違えば false とみなされます。 x = y > 0 ? 1 プリミテイプ型 , 参照型のどちらにも適 という式は , y が正なら右辺全体の値は 1 ー数値比較演算子 用できます。両辺が同じであるかどうか ( も となって x に 1 が代入され , y が正でなけれ しくは , 違うかどうか ) を判定し , 同じだ 数値型に適用され , 比較の結果を表す b ば x に -1 が代人されます。 ったら ( 違っていたら )boolean 型の true を返 。 olean 型を返します。 します (boolean b = (x==y) ; のようにもでき ー論理演算子 る ) 。 プリミテイプ型の場合 , 値が同じだった boolean 型に適用されます。 この中で , & 意味 両辺が等しければ t 「 ue を返す 両辺が等しくなければ t 「 ue を返す 左辺が右辺より小さい場合 t 「 ue を返す 左辺が右辺以下の場合 t 「 ue を返す 左辺が右辺より大きい場合 t 「 ue を返す 左辺が右辺以上の場合 t 「 ue を返す 論理否定 true のとき false, fa e のとき t 「 ue となる 論理積 両辺が t 「 ue だったときのみ t 「 ue となる 排他的論理和 両辺が異なっていたときのみ t 「 ue となる 論理和 少なくとも一方が t 「 ue だったとき t 「 ue となる 条件 A N D 両辺が t 「 ue だったときのみ t 「 ue となる Ⅱ 条件 O 日 少なくとも一方が t 「 ue だったとき t 「 ue となる 数値比較演算子 論理演算子 ( b00 an 型に適 用される ) TabIe 5 演算子 ( その 3 ) 演算子名 記号 名前 意味 単純代入右辺の式の値を左辺の変数に代入する x = Y 例 代入演算子 複合代入 x ? = y は x =x ? y と同じ意味 ( 型名 ) instanceof その他 まとめ 次回は制御構造についてお話します。 スタートアップ Java 73

3. 月刊 C MAGAZINE 2001年6月号

今回の Homework では , 前回と今回 2 回にわたって説明し 60 C MAGAZINE 2001 6 も同じように , goto 文のジャンプ先のラベ ル名には : を付けなくてはいけないのです。 どのようなプログラム言語でも共通して いえることに「むやみに g 。 to 文を使用しな い」ということがあります。使用したほう が見た目にすっきりとまとめられるという 場合を除いて , ループなどから脱出する場 合などに goto 文を使用することは避けるほ うがよいというのがプログラマの常識にな っています。というのも , goto 文がやたら に多いプログラムを実際目にしたらわかる のですが , 処理の流れがたいへんわかりに くく誤解を招きやすくなってしまうからで す。見た目もすっきり , 何のために処理を 抜けるのかをわかりやすくプログラミング することが大切だということは以前もお話 したとおりです。この点については初心者 であっても常識として心がけましよう。 最後に , 制御文のまとめを Fig. 6 に示し ます。 前回の Homework の答え 前回の Homework はいかがでしたか。正 しく加減演算子の計算ができましたか ? ・ Ex. 1.1 加減演算子の計算 回答を以下に示します。このような細か a = 50 ; 6 : 11 : } a = 67 b = 66 a = 66 ; a = 29 b = 29 a = 30 ; a = 31 ; a = 30 い文法については初めのうちにしつかり違 いを理解しておいてください。 問題 1 問題 2 問題 3 問題 4 ~ 計算 b = 十十 a ; b = a 十十 ; a = 51 b = 51 b = 31 た演算子と制御文について , Homework を 出題します。次回 , 解答とその解説をしま す。 ・ Ex.2.1 プログラムの実行 今回例題として示した List 1 ~ 4 までと , それから次に説明する scanf 関数の使用例 である List 5 を実際にプログラミングして 実行してください。 ・ Ex. 2.2 fo 「文についての出題 次の条件を満たすプログラムを作成・実 行してください。 くプログラムの仕様 > ・ for 文を使用して 50 から 20 までの数字 を一 2 ごとに画面出力させる ・ Ex.2.3 次の条件を満たすプログラムを作成・実 行してください。 くプログラムの仕様 > ・画面から繰り返し入力される整数値 を加算する ・入力されたテータが一 999 ならば加算 処理を終了する ・最後に加算した結果を画面に出力する くヒント > ①加算処理は無限ループで行う ②無限ループは入力データが一 999 なら scanf 関数・・・・・・テータ入力・書式付入力 で , その解説をしておきます。 Ex. 2.3 で scanf 関数が新たに登場するの ・ scanf 関数について ③入力に scanf 関数を使う ば終了するようにする 1St 10 : 9 : 8 : 5 : 2 : return 0 ー printf(" 入力された数字は宅 d です。 % a scanf( ″ d ” ,&a); printf ( ”数字を入力してください。″ ) 3 : main() #include く stdio. h> 1 : / * scanf 関数の使用例 * / scanf 関数の使用例 6 ロロロロ これまでに画面出力する関数として prin ば関数を使用してきましたが , scanf 関数は 画面からの人力に使用する関数です。今回 問題 ( Ex. 2.3 ) で使用する書式は整数を扱う もので , たとえば変数 i ( int 型 ) を使用して データ入力する場合 , scanf( ”宅 d ” , &i ) ・ というように使用します。書式はほとんど printf 関数と同じですが , 人力データを格 納する変数名の前に & を付けるということ のみ覚えておいてください。この変数の前 にある & については次回説明します。 List 5 に scanf 関数の使用例を示します。使用時 あとがき の参考にしてください。 システムに戻り値を返す 変数 a の値を表示する 面で入力された数字を変数 a に格納する “数字を入力してください。“と画面表示する 確実に C 言語を身につけていきましよう。 いと思います。あせらず , じっくり , でも より C 言語らしい内容を少しずつ説明した の宣言やデータの引き渡しについてなど , anf 関数で指定した & について , および関数 次回からは , 今回宿題の中で使用する sc 台となり重要な役割を果たしてくるのです。 今後複雑なプログラミングを行う場合に土 この繰り返しと実践で身につけた知識が , たことをどんどん実際に試してください。 るまで復習してください。そして , 理解し 度だけではなく , 何度も繰り返し理解でき いただけたなら幸いです。そのためにも一 とを少しずつ理解できるようになってきて 通じて , 構造化プログラミングに必要なこ ができたでしようか。前回と今回の説明を をもっともらしく見せるコツをつかむこと が , いかがでしたか ? 少しはプログラム 今回は制御文についてまとめてみました

4. 月刊 C MAGAZINE 2001年6月号

スタートアッフ Ja a 1 a v a 言語事始 データ型と演算子 毛呂宗夫 ロ 前回はクラスとオブジェクトについて解説しました。 今回は Java のデータ型と演算子の話をします。 データはメモリにそれぞれに合った形式で 使う必要がある場合は普通この型を使いま C と C 十 + と Java 格納されます。これらの形式のことを型と す。 b e や sho れよりもメモリを必要とするの いいます。 ですが , CPU が計算をするときはメモリが 前回お話した「クラス」も型です。型の中 Java は C 言語・ C + + 言語をベースに設計 少ないとかえって効率が悪いことがあるの です。「入る値は 100 以下だから b e で間に されています。とくに , 制御構造や式など , でも基本的なものがいくつかあります。数 値を記憶する型 , 文字を記憶する型 , 「判 合うかな・・・・・」などと考えずに int を使って プログラミング言語一般に共通する部分 断」を記憶する型・・・・・・。 Java の場合 , それ は , C 言語とほば同じになっています。 ください。 今回はデータ型と演算子について話しま らは 8 種類あって , プリミティプ型あるい char は character ( 文字 ) の略です。 Java プ す。データ型には C と似たものがあります。 は基本型と呼ばれています。 ログラム内部では文字は ( 漢字も含めて ) , プリミテイプ型は大きく分けて「 boolean 演算子もそうで , たとえば四則演算などの 0 ~ 65535 の数値で表されています。 char は 型 ( 論理型 ) 」と「数値型」に分かれます。数 演算子は基本的に C 言語と同じです。本誌 主にそれを記憶するのに使います。ただし の「 c 言語入門講座」の第 1 回 ( 4 月号 ) には , 値型はさらに「整数型」と「浮動小数点型」 数値型の一種なので , 計算に使うことも可 データ型と演算子についての説明がありま に分かれます。整数型には byte , short, 能です。 す。そちらも見て参考にしてください。 int, long, char 型があり , 浮動小数点型に 浮動小数点型は , 表せる数値の範囲が非 Java は簡単だといわれています。まあ C は float, double 型があります。 常に広いのですが , 完全に正確に表せるわ + + に比べれば文法的には簡単ですが , ラ これらはそれぞれ表せる範囲が違います けではありません。 float の場合だと先頭か イプラリが膨大なので話すべきことは多く , ( 使用するメモリの量も違います ) 。表にし ら 6 ~ 7 桁しか正確ではありません。キャス 全部を説明するのはキツイのです。 C と共 ておきましよう (TabIe 1 ) 。 ト ( 後述 ) によって long 型をⅡ oat にしてまた 通する部分はあまり詳しくはやりません。 long に戻すと , 値が変わってしまうことが かいつまんで説明します。まず int につ 悪しからず。また次回解説する予定の「制 いて。これはⅲ teger ( 整数 ) の略で , 整数を あります。 List 1 (Precision. java) はその実 御構造」なんかも同じです。 TabIe 1 プリミティプ型 種類 表せる範囲 型 プリミティプ型 -128 ~ 127 -32768 ~ 32767 -2147483648 ~ 2147483647 -9223372036854775808 ~ 92233720368 図 775807 0 L 0 ~ 65535 ( 文字リテラルでは ' \ u0000 ' =yuffff' と表記 ) -3.4X1038 ~ + 3.4X1038 ( 有効桁数は 6 ~ 7 ) -1 .7XIO% ~ + 1.7X1 ( 有効桁数は 14 ~ 15 ) t 「 ue , f 引 se の 2 種類 byte short int long Cha 「 float double boolean コンピュータは computer( 計算するもの ) というくらいで , 計算することが本職です。 「計算」をするためには , まず数値データ を受け取り , それを記憶しておかなければ なりません。 また , 文字データを記憶することや , 「状 態」や「判断」を記憶することも必要です。 整数型 数値型 浮動小数点型 boolean 型 65 スタートアップ Java

5. 月刊 C MAGAZINE 2001年6月号

6 ロロ囚ロロ 00 ロ 小薗三典 / 中井信ム 前回 , 構造化プログラミングの基礎を理解するために , 演算子と制御文に ついて解説しました。今回は , 前回に触れなかった残りの制御文について 説明します。 使用している値を変更することもできます。 制御文 for 文は , 回数指定で処理を行うときに よく使用されます。この場合回数を管理す こんにちは。前回は意図した みなさん , 前回は入門の段階で覚えておくべき演算 るために , 制御変数というものを利用しま とおりにプログラムの流れを変えられるよ 子の説明とそのまとめ , および条件ごとに す。この制御変数は , 繰り返しの処理内で うになることを目的に , 演算子と制御文に 処理を分岐させるための制御文として , 値を変更することもできます。 for 文の書 ついて説明しました。今回は前回に続いて , else 文と switch-case 文について説明しまし 式は次のようになっています。 残りの制御文の説明とそのまとめを行って た。今回は処理を一定の条件で反復させる fo 「 ( 初期設定式 ( 式 1 ) ; 継続条件式 ( 式 2 ) ; 再設定式 ( 式 3 ) ) { いきます。前回と今回を通じて構造化プロ 反復文の for 文 , while 文 , do-while 文につ グラミングの基礎を習得していきます。 いて , またこれらの処理をさまざまな形で 条件に合った場合 ( 真 ) の処理 また , プログラミングの初心者とはいえ 終了させたりスキップしたりする break 文 , 最低限守らなければならない「基本事項」 continue 文 , goto 文についての説明および 式 1 の初期設定式は f 。 r 文の処理に入る として , これまで文法の説明とともにプロ まとめを解説していきたいと思います。 前 , 初回に一度だけ必ず実行され , ある変 グラミングマナーについても少しずつ触れ 数に初期値を設定するために使用します。 f0 「文 てきました。バグを少なくするため , ある 式 1 は代入文で指定します。式 2 の継続条 いは後から見ても読みやすくするといった for 文は , ある条件が真の間処理を反復さ 件式は f 。 r 文の処理を継続させるための条 目的のために , 先輩プログラマの方々によ せる機能を持つ制御文です。条件判定内で 件を設定します。つまりこの式の条件判定 り積み重ねられてきた定石と呼べるもので Fig. 1 fo 「ループ処理の流れ す。これらを身につけることで , ずいぶん しつかりとしたプログラミングを行うこと ができます。たとえば日本語を使っている 子供が「年上の人には敬語を使うものです よ」というマナーをひとつ覚えて実行する だけで , ずいぶんとしつかりしているよう に見られることと同じなのです。 プログラミングマナーは , とくに C 言語 に限ったことではなくすべてのプログラミ ング言語に共通していることも多いため , より注意して身につけるように心がけまし よう。今後も文法の説明とあわせて , この プログラミングマナーについても解説して いきます。 56 C MAGAZINE 2001 6 初期設定式① 偽 継続条件式② 処理本文 再設定式③

6. 月刊 C MAGAZINE 2001年6月号

が真の間 for 文の処理を反復し , 条件判定 が偽になると処理を終了します。式 3 の再 設定式は for 文の条件に合った場合の処理 の実行後に毎回必ず 1 回実行される式です。 式 1 , 式 3 の設定式は , それぞれ「 , ( カン マ ) 」で区切って複数の式を指定することも できます。この処理の繰り返しの形態をル ープといいます。 f 。 r 文の処理の流れを Fig. 1 に示します。 実際に式を当てはめてみると次のように なります。 1 をすること ( 命令 1 ①まず for ループに入る前に一度 i = 1 とい う代入文を実行し , 変数 i の初期化を行いま す。② i が 100 以下ならば , 命令 1 を実行し ます。③命令 1 を実行するごとに i + + を実行 します。そして変数 i の値が 100 になるまで 処理が繰り返され , 101 になったとき命令 14 : } 16 : } for( 土 = i く = 10 の土十十 ) { do - wh ⅱ e ループ処理の流れ 1 の処理を行わずに for ループの処理を終了 します。 こでは , f 。 r 文の再設定式として i + + を 指定しました。この加減演算子は単独で使 用しているため , + + i にしても同じ意味で す。ここに i = i + 1 のように通常の計算式を 指定しても間違いではありませんが , 1 加 算 ( あるいは 1 減算 ) する場合には , 簡潔に するために加減演算子を使用することが一 般的です。先ほど制御変数と呼んでいたも こでの変数 i に当たります。制御 のが 変数を反復回数の管理用に使用しているの です。例ではたまたま i としましたが , ど のような変数名を使用するかはとくに決め られていません。一般的に変数 i はカウン ト用の変数としてよく使用されます。 また , ほかの言語におけるループ処理 ( F 0 れ ran の DO ループや , Visual Basic の for ル ープ ) では , 「変数 i を 1 から 10 まで 1 ずつ増 加させて処理を行う」というような指定を fo 「文の例題 / * 1 から 10 までの数字の和を求める * / #include く stdio. h> 3 : main( ) int i , wa ー wa = の f0 て ( i = i く = 1 の i + 十 ) { wa = wa 十 i; printf ( ” 1 から 10 の和は % d です。 %n", wa); return 0 ー Fig. 2 wh ⅱ e ループ処理の流れ 1 : 2 : 5 : 6 : 9 : 10 : 11 : 12 : 13 : a ″に 0 を代入レて初期化する 変数 i に 1 を初期代ん 10 以下の間処理を行う 変数 wa に wa + i の結果を代入する fo てループ終端 1 から 10 の和を画面に出力する システムに戻り値を返す 2 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : 凵 st 6 ロロロロ 行います。しかし C 言語の for 文では「 ~ ま で処理を行う」という指定方法ではなく , 継続条件式で「 ~ の条件が真の間処理を行 う」と指定することに注意してください。 具体的な使用例を List1 に示します。 while 文 while 文は while ループ処理の前に条件判 定を行い , 条件が真の間処理を反復させる 機能を持つ制御文です。 while 文の書式は 次のようになっています。 while( 継続条件式 ) { 条件に合った場合 ( 真 ) の処理 while 文ではループに人る前に条件判定 を行い , 結果が真の間ループ処理を行いま す。つまり , 条件判定結果が始めから偽の 場合は一度も処理が実行されず , while 文 の次の文に移ります。 while 文の処理の流 れを Fig. 2 に示します。 while 文 , do - wh ⅱ e 文を比較する例題 1 : / * 配列の値をチェックする * / #include く stdio. h> 3 : main( ) int 土 = 0 , a [ 引 = { 10 , 20 , 30 , 40 , while ( a [ 幻 ! = 30 ) { printf("while 文 : 配列の値は記です。 % a [ 幻 土十十一 do{ p て intf ( ” do - whi 厄文 : 配列の値は宅 d です。” , a [ 幻 Fig. 3 継続条件式② 真 処理本文 真 )while( a は + 十 ] ! = 30 return 0 ー Getlnto C World ! ! 偽 継続条件式② 処理本文 57

7. 月刊 C MAGAZINE 2001年6月号

プログラミング技術情報誌・ C マガジン 0 C 0 N T E N T S 。 = 。使いやすい ユーザインタフェイスを求めて 12 アプリケーションと Web ページのデザインフィンローダ ユーザインタフェイスの定義 人間というシステム ユーザインタフェイスの基本 ユーザインタフェイスを意識したデザインの例 。 = , Mac OS X アプリケーション開発力イド PARTI Mac OS X の概要 PART2 開発環境の準備 PART3 アプリケーションの開発 (Carbon 編 /Cocoa 編 /Java 編 ) GetInt0 C WorId ! ! ー C 言語入門講座 く第 3 回 > 演算子と制御文 Pa 2 小薗光典 / 中井信会 c プログラマのための c + + 入門実践 C + + ゼミナール く第 3 回 > コンストラクタとデストラクタ吉野智興 スタートアップ J ava —Java 言語事始く第 3 回 > データ型と演算子毛呂宗夫 Q&A プログラミング相談室く書式文字列と 16 進数 > 毛呂宗夫 Standard C/C + + 『単リンクリスト』 p. J. 円 auge 「 / 熊谷典大訳 8 なて叮 77 のオブジェクト工房く第 3 回 > 文字コードの変換処理 EnjOY PerI Programming モジュールを活用しようく第 5 回 > HTML の解析結城浩 Ruby マスターへの道 く第 2 回 > 拡張ライプラリの作成 ( 2 ) 前田修吾 アルゴリズム入門プログラミングの宝箱 く第 2 回 > 探索春日伸弥 / 紀平拓男 画像処理を極めるアルゴリズムラボ く第 21 回 > デジタル画像での図形描画⑦スプライン曲線 , ベジェ曲線など 昌達 K'z 32 真紀俊男 6 1 -3 4 -3 0 6 3 8 -3 -3 6 6 7 7 8 8 9 9 0

8. 月刊 C MAGAZINE 2001年6月号

00 ① ユーサインタフェイス 求めて r¯使いやすい があれば , それを見直してみてください。 ン」を理解すれば , UI をより理解すること の一種ということになります。 従来 , UI の設計は専門家の仕事でした。 が可能になると思われます。ただ , そのた また , ちょっとした欠陥に慣れてしまって めにはコンピュータに関する学問とは異な いて , ふだんから不具合があることを忘れ 機械を作ることのできる人は限られている る分野の理解が必要です。とくに , 行動心 からです。しかしコンヒ。ュータが普及する てしまっていることも意外とあります。ア 理学や認知心理学のような心理学系の知識 プリケーションがどんなに優れた UI を持っ につれ , 少しその様子が変わってきました。 や , 人間の特性を研究する人間工学のよう GUI を設計するのはプログラマや SE ですが ていても , このような環境要因がダメでは そのような人たちが必ずしも UI の専門家で な分野の知識が重要になってきます。もち だいなしです。 あるとは限りません。きわめて簡単な UI の ろん , これらの分野を勉強するのも一案で 基本でさえ知らなければ , どうしようもな すが , 最近では UI だけでもひとつの学問の い画面デザインを作ってしまうこともしば 分野として成立するようになってきました しばあるのです。さらに , コンピュータか そこで UI に関して書かれた書籍を調べてみ 誰でも使える時代になるにつれ , 個人レベ 人間をシステムとしてモデル化する試み るのがわりといいのではないかと思います ルで簡単にプログラムを作ったり web サイ は , かなり昔から行われてきました。みな ただし , そのような分野のべースになって さんが得意分野のはずのコンピュータをモ トを公開する機会が増えました。 いるのは , やはり前述した心理学や人間工 デル化するとわかりやすいと思います。す UI に関する予備知識をまったく持ってい 学なので , そちらの分野の理解もある方が なわち , 入出力 , 演算装置 , 記憶装置とい ないと , 知らないうちに非常に使いにくい 望ましいでしよう。 ものを作って広めてしまう危険性がありま しかし , 今さら研究する暇も時間もない , うようにモデル化すればよいのです。 す。また , ちょっとした工夫でずいぶん使 という人が多いと思います。ある程度「よ 入出力は , 感覚器官からの情報をやりと いやすくなることに気づかず , コミュニケ い UI 」を設計するには , ある程度の専門的 りすることに対応させればよいでしよう な知識があれば , 精通していなくてもそれ 何かを見た結果を行動に反映するには , ま ーションの機会を失ってしまっているかも ず , 目から情報を得る必要があります。 しれません [ 注 1 ] 。 なりに何とかなるものです。本稿が , その UI の知識への重要性は , ますます高くな れは , ビデオカメラからの情報を PC に取り 「ある程度」のおおまかな知識を得るきっか けになれば幸いです。 込むのと同じことです。演算装置は , その りつつあります 刺激に従って , 脳などの神経系が判断を行 [ 注 1 ] 世の中に非常によく広まっている GUI の 中には , 首をかしげざるをえないような設計 ユーサインタフェイスを見直す前に うことに対応させればよいでしよう。記憶 のものが意外とたくさんある。先例が必ずし 装置は , 人間が情報を記憶する機能に対応 も優れているとは限らないことに注意か必要だ。 本論とはあまり関係ないのですが , とく させることになります。 関連する分野 に GUI を見直す前に再考しておいてほしい コンピュータという存在が , ある意味人 間をまねしたものとして解釈されることが ことがあります。それは , 物理的な環境が ありますが , そう思えば対応させやすいの UI を完璧に理解するには , 少なくとも 3 適切であるかということです。 ではないかと思います。つまり , 情報処理 たとえば , 作業環境の明るさ , 静けさ , つのことを理解しなければなりません。す の視点から考えれば , 人間はコンピュータ なわち , 「ユーザを理解すること」「ユーザ 温度 , 湿度などは作業に適した状況になっ に似ているし , コンピュータは人間に似て の操作するオプジェクト ( たとえばコンピ ているでしようか。作業時の姿勢や , いす いるということです ュータ ) を理解すること」そして「インタフ の高さはどうでしようか。机の広さは十分 ェイスそのものを理解すること」です。と でしようか。画面の明るさは十分で , 写り 短期記憶と長期記憶 ころが , この 3 つのどれもが非常に奥が深 込みがなく , フォーカスはちゃんと合って く , 完璧ざを求めるには難しい分野でもあ いるでしようか。キーポードは正常に動作 短期記憶とは , 大ざっぱにいえば , 一瞬 ります。少なくとも , とてもしろうとが手 していますか。押しにくいキーがあをり で忘れてしまうような種類の記憶のことで に負えるものではありません。 しませんか。マウスは思ったとおりに操作 す。あなたはこの文章を読んでいるとき , この記事を読んでいるみなさんは , おそ できるでしようか。ボタンのクリック感が 目で見た文字や言葉を , まずどこかに記憶 らくコンピュータについての理解度は人並 変だったり , ポールが汚れていてひっかか しているはずです。文章を解釈するために み以上だと思います。したがって , ユーザ ったりしないでしようか。 は , 1 文字だけ認識できても無意味で , あ を理解する , すなわち「人間の行動パター このほかにも , 作業に影響しそうな要因 特集 1 使いやすいユーザインタフェイスを求めて 13 人間というシステム

9. 月刊 C MAGAZINE 2001年6月号

参照型の変数は , ( ローカル変数を除い ては ) デフォルトの値は null という特殊な 値です。これは「何も指していない」ことを 意味します。また , 参照型変数には nu Ⅱを 代入することができます (x = null; というよ うに ) 。これは「そのオプジェクトはもう いらない」ということであり , 変数からオ プジェクトへの参照を断ち切ります。どの 変数からも参照されなくなったオプジェク トは自動的に消去されますにの機構をカ べージコレクションといいます ) 。 ー String 型 こでちょっと String 型について説明し ておかなければなりません。この String と いうのは , 標準ライプラリの java. lang パッ ケージで定義されている string クラスで す。クラス型だから当然参照型です。ただ これは , ほかの参照型と大きく異なってい ます。 1 つは String 型のリテラルが存在するこ とです。前述のように "abcdefg" のように 二重引用符で囲んだ文が String 型のリテラ ルになります。これは , string s = nabcdef" のように変数に代人することができます。 もう 1 つ , 参照型の中で String 型だけは + 演算子が使えるのです。 String 型の変数で もリテラルでも , + で結び付けるとそれが 合わさった String 型が生成されます。たと えば "abc" + "def" で "abcdef" という文字列 が生成されます。 さらに , string 型とほかの型が + で結ば れている場合 , 「ほかの型のほうを文字列 にして string 型と合成する」という働きが あります。たとえば List 7 の 3 行目のように すると「 x の値は 5 です」と表示されます。 文字列はプログラム中できわめて多く使 われるので , 特別扱いしているわけです。 この機能がないと , たとえば同じ表示をし ようと思っても , List 7 の 5 行目のようにな ってしまいます。 ・・・まあ , できることは できるんですけど , やつばり 3 行目のほう / 0 c MAGMINE 2()() 1 6 List 7 Fig. 5 Fig. 4 Fig. 3 St 「 ing の連結 土 n セ x = System. out.println()x の値は”十 x 十″です” 5 : System. out.println( ( ( "x の値はつ . concat( lnteger ・ tostring(x) ) ) . concat( ”ですっ 4 : 3 : 2 : 1 : プリミテイプ型の配列 ar 「 ay 参照型の配列要素 dataArray Java の配列のイメー 配列型の変数 [ 0 ] 4 [ 0 ] オブジェクト [ 2 ] 0 [ 2 ] 1 [ 3 ] [ 3 ] 6 [ 4 ] [ 4 ] 8 オブジェクト シ が楽ですね。 配列型 配列オブジェクト 配列の要素のオブジェクト オブジェクトオブジェクト まずプリミテイプ型の配列から。たとえ しれません。注意して読んでください。 ず表記は似ているので , 混乱しやすいかも 「型」の最後に配列についてお話しま す。 最初に言ったとおり Java の文法は C / C + + と似ているのですが , 「配列」に関しては根 本的に違います。違っているにもかかわら ば int 型の配列ならこう宣言します。 int [ ] array; int array[ 嵭 れによって array という int 型の配列が宣言 の方法で宣言してください。とりあえずこ 2 種類あるのが変ですが , 基本的には ( a )

10. 月刊 C MAGAZINE 2001年6月号

ースエデイタ ソースエデイタは , Java ソースファイル みやすくする機能である。構文要素はファ のフォントや色を変えて , プログラムを読 P ファイルの構文要素を認識し , 該当部分 Java ソースファイル /HTML ファイル /JS 色分け機能 明する。 機能を備えている。次に各機能の詳細を説 機能 / コード補完機能 / キーカスタマイズ (Fig. 3 ) 。 Fo e のソースエデイタは色分け ための , いわゆるテキストエデイタである /HTML ファイル /JSP ファイルを編集する イルタイプごとに 演算子 , 数値表現 , 文字表現 , 単一行 Java キーワード , Java 識別子 , Java ・ Java ソースファイル ている。次にその分類の一部を示す。 かなり細かく分類され 154 C MAGAZINE 2001 6 ースエデイタで Java のクラス名 / メソッド たとえば Java ソースファイルの場合 , ソ 能である。 対するコード補完機能は release 2.0 の新機 (Fig. 4 ) 。 HTML ファイル /JSP ファイルに 編集を支援するコード補完機能を備える ファイル /HTML ファイル /JSP ファイルの Forte のソースエデイタは , Java ソース コード補完機能 色 / 背景色を割り当てることができる。 構文要素に対して , 任意のフォント / 前景 ユーザは , 各ファイルタイプごとに , 各 ル , JSP 属性名 , JSP コメントなど JSP タグ , JSP テキスト , JSP シンポ ・ JSP ファイル HTML コメントなど HTML タグ , タグの属性 , 属性値 , ・ HTML ファイル メソッド呼び出しなど コメント , プロックコメント , Java 名 / 変数名の先頭の数文字を入力して , 特 定のキー ( デフォルトでは朝 + キー ) を押すと , 入力した文字列に先頭が一致す る候補の一覧をポップアップメニューに表 示してくれる。一覧から候補のひとつを選 択すれば , 対応する Java ソースコードがカ ーソル位置に挿入される。 長い名称は忘れてしまうことが多いし , たとえ覚えていても入力するのがたいへん なので , コード補完機能は実に便利である。 また , いちいちへルプを調べなくても , メ ソッドの引数の型 / 数 / 順序がわかるため , プログラミングの手間を大いに軽減してく れる。 Forte のコード補完機能はインテリジェ ントである。単なる文字列の一致だけでは なく , きちんとユーザが入力した文字列を 構文要素として解釈して , 適切な候補を示 す。たとえば FileOutputStream 型の変数 「 f 。 s 」が定義されているときに , 「 f 。 s. 」と入 力して + space キーを押す。するとコ ード補完機能は「 fos 」を「 FiIeOutputStream 型」と識別して , FileOutputStream クラス のメソッドー覧をポップアップウインドウ に表示してくれる。 さらにコード補完機能は , ユーザが定義 したメソッドもデータベースに登録してく れる。たとえば「 doSave ( ) 」メソッドと「 do SaveAs() 」メソッドを持つユーザ定義クラ スの中で「 d 。 s 」と入力して + キ ーを押す。するとコード補完機能はきちん と「 doSave() 」と「 doSaveAs() 」を候補として リストアップしてくれる。 キーカスタマイズ機能 Forte のソースエデイタは無償版の Java 統合開発環境としてはめずらしくキーカス タマイズの自由度が高い。ソースエデイタ では , ファイルの種類ごとに , キーの割り 当てを自由に変更することができる。カッ ト / コピー / ペースト / 検索 / 置換などに加 えて , カーソルの移動やバックスペースの ようなごく基本的な操作に関しても , キー カスタマイズが可能である。 カスタマイズの際に , すでに使用してい るキーを再割り当てする場合 , 初めに古い キーを消去しなければならないことと , キ ーが機能のジャンル別に分類されていない ため目的のキーが探しにくいことは , rele ase 1.0 から変わっていない。そのためカ スタマイズは多少めんどうであるが , 一度 がんばってカスタマイズすれば実に快適に 利用できる。 そのほかの機能 ソースエデイタは , 以上の機能に加えて , 略語を用いた入力支援機能も備える。たと えば「 st 」と入力してキーを押すと「 s tring 」に変換される。このほかにも , 「 psf 」 →「 private static nal 」 , 「 imps 」→「 import ja vax. swing. 」など , 多くの略語が登録されて いる。ューザが独自の略語を追加すること も可能である。 release2.0 のソースエデイタの新機能は , 前述の HTM レ JSP のコード補完機能と , Ja va インデント設定機能である。後者は Java ソースコードに対する拡張インデント機能 で , 中力ッコの前への改行の追加や , カッ コの前への空白文字の追加などを自動的に 行うものである。 フォームエデイタ Text Årea