メニュー - みる会図書館


検索対象: Linux/FreeBSDで学ぶC言語
22件見つかりました。

1. Linux/FreeBSDで学ぶC言語

このプログラムのおおまかな流れは、次のようになります。 ・ Fig. 7.2 : リスト 7.8 の流れ 処理開始 端末の初期化 メニューの表示 選択されているメニュー項目は ( 変数 menuno) 反転して表示する 選ばれたメニューを表示 画面とキーボードを制御する 298 キーを入力 田キーが押された ? No 田キーが押された ? No ロキーが押された ? No 処理終了 端末をリセット NO が選ばれている ? 「 Exit 」のメニュー Yes 1 つ上のメニューを選択 ( 変数 menun 。の値を 1 つ減らす ) Yes 1 つ下のメニューを選択 ( 変数 menuno の値を 1 つ増やす ) Yes Yes 第 7 章

2. Linux/FreeBSDで学ぶC言語

0 変数の値に応じて処理を分ける : switch 文 たとえば、画面にメニューを表示して、選ばれたメニューの番号に応じて処理を分 ける場合を考えてみましよう。メニューの番号が変数「 menuno 」にセットされてい るとした場合、次のように記述すれば目的を達成できることになります。 ・リスト 1 .24 : 選ばれたメニューの番号に応じて処理を分ける i f (menuno = 1 ) 引 se i f (menuno = n) くメニュー番号 2 番の処理 > else if (menuno = 2 ) くメニュー番号 1 番の処理 > く - メ =. e ー se く . メ =. ュー番号「番の処理〉 ューにない番号が選択されたときの処理 > 条件によって処理の流れを変える

3. Linux/FreeBSDで学ぶC言語

◎端末の初期化 : 12 ~ 17 行目 端末の初期化を行うだけでなく、 keypad 関数を呼び出してカーソルキーなども入 力できるようにしています。 また、変数「 menuno 」に「 0 」を代入していますが、この変数に現在選択されて いるメニューの番号を記憶します。 ◎メニューの表示 : 19 ~ 36 行目 画面にメニュー項目を表示している部分です。配列「 menus 」に入っているメニュ 一項目を、 f 。 r 文の繰り返しで表示しています。 また、変数「 menuno 」は現在選ばれているメニューを表しますが、繰り返しのカ ウンタ「 i 」が「 menuno 」と等しいときは、文字を反転表示にするようにしていま す。これにより、選ばれているメニューが反転表示されることになります。 296 第 7 章画面とキーボードを制御する ExitI Menu 3 Menu 2 「・ 1 已 nu マメニューの表示

4. Linux/FreeBSDで学ぶC言語

◎カーソルキーの処理 : 41 ~ 48 ・ 51 ~ 58 行目 こでは、①・ @] キーが押されたときの処理を行っています。囮キーが押され たときは、変数「 menuno 」の値を 1 つ減らして 1 つ上のメニューを選択します。た だし、最上段のメニューが選ばれているときは、それより上にメニューはないので 「 menuno 」の値を「 0 」にします。 同様に、 [Ä] キーが押されたときは、変数「 menuno 」の値を 1 増やしています。 ◎ロキーの処理 : 60 ~ 79 行目 この部分では、ロキーが押されたときの処理を行っています。「 Exit 」のメニュー が選ばれているときは ( menun 。の値が 3 のとき ) 、繰り返しから抜けてプログラム を終了します。 一方、それ以外のメニューが選ばれているときは、メニュー項目の名前を画面に表 示しています。 2 is selected. 1 Ktenn マメニューを選んだときの状態 Menu Ex it 「・ 1 已 rlLl Menu 3 / Menu Hit ang keg. キーボードからの入力 297

5. Linux/FreeBSDで学ぶC言語

do 1 、 1 、 -1 , 1 1 、「 1 ワ ~ っ 0 ワ 0 ワ ~ っ 0 ワ 0 ワっワワ 0 っ 0 00 っ 0 っ 0 00 っ 0 っ 0 っ 0 っ 0 4- 4 ・ -4 ・ -4 -4 ・ 4 4 ・ 4 【 0 【 0 -0 -0 -0 -0 【 0 -0 【 0 なメニューを表示する * / printf("h"); printf()l : lnput dataVn"); printf()2 : Print dataVn"); printf ( " 3 : Save datah") ; printf ( " 4 : Load datah") ; printf()5 : Exith"); printf("SeIect menu number ? " ) ; scanf ( "%d" , & m 50 ) ; なメニューの 1 番が選はれた場合 ( データの入力 ) x/ if (menuno = 1 ) inputdata(); なメニューの 2 番が選はれた場合 ( データの表示 ) * / else if (menuno = 2 ) p 「 intdata(); / * メニューの 3 番が選はれた場合 ( データの書き込み ) * / else if (menuno = 3 ) savedat a ( ) ; / * メニューの 4 番が選はれた場合 ( データの読み出し ) * / else if (menuno = 4 ) loaddata( ) ; / * メニューの 5 番が選はれた場合 ( プログラムの終了 ) * / else if (menuno = 5 ) b 「 eak ; な正しくないメニュー番号が入力された場合 * / e ー se printf("Menu rMl 「 is wrong. vn"); while (I); な 1 件でもデータを入力していれは 確保したメモリを解放する x/ i f (rnembe 「 count ! : の f 「 ee(adr) ; ソースファイルを複数に分ける 239

6. Linux/FreeBSDで学ぶC言語

・ FreeBSD の場合 インストール方法に関係なく C 言語を使える状態になっているはずですが、うまく いかない場合は次の操作を行ってください。 ①「「 00t 」でログインする ② FreeBSD の CD-ROM をドライプにセットし、「 /stand/sysinstall ロ」と入力する ③言語を選ぶメニューが表示されるので「 Japanese 」を選択する ④メインメニューで「 7 カスタム」を選ぶ 0 のインストールア設定ツールにようこそ . 以下のオプションのどれか を、矢印キーかオアション名の贔初の一文字を打っことて目オアションを 選呎して下さい . [ ー ] をⅣすことでそのオアションを - ることかできま す . ロー新打駅】でメニューを抜けることができます . クイックスタート , このメニューシステムの使去 インストールに関する : 、 RFAEE€その他 キーボードのタイプを選択する 各種インストールオアションを礙認・設定する 初心者用インストールを開始する ( ビキナー用 ) クイックインストールを開始する ( せつかちな人用 ) 既存のシステムをアツアグレートする インストール後の廐圏 D の設定を行なう デフォルトのインストール設定を口一ドする 各髄 : に関する用語集 ー乍ロ岡朝導 ) 了 スムインストー ) レ カスム ⑤オプション選択メニューが表示されるので「 4 配布ファイル」を選ぶ これ」まカスタムインストレーンヨンのメニューです . インストールしたい 配布フ′ィーよ何か . どこにインストールするか、どこからインストール するか . 社優のにどごけディスクを割リ当てるか . などをこのメニュー から一綻することかてさいます さまざまなインストールオアションの設定 ee へのディスク空間リリ当て 割リ当てた′て一ティションへのラベリング パーティション、ラベリング . を実際に行な ) 6 配布ファイ ) 効のみを行なう このメニューを終了する ( 前のに戻る ) パーティシ第ン ミ開了 コ風終 Linux / F 「 eeBSD で C 言語を扱えるようにする

7. Linux/FreeBSDで学ぶC言語

membe 「 CO しれ t 十十 : / * 2 番のメニュー ( データの表示 ) が選はれた場合 * / else if (menuno = 2 ) / * 表の見出しの行を表示する * / printf("%n"); printf("NolName p 「 i ntf ("Add 「 ess pr i ntf ("Phone number lAgeVn") ; printf("-- ←ー printf("- p 「 intf("- / * それそれのデータを表示する * / fo 「 (i : 0 ; i く membercount; i + + ) printf ( " % 2 引 % 15 % 30S 15S は 3d ¥ n " , i + 1 , ad 「 Ci]. narne, ad 「 Ci]. address, adrC i ]. phonenumber, ad 「 [ i ]. age) ; / * 3 番のメニュー ( プログラムの終了 ) が選はれた場合 x/ else if (menuno = 3 ) な d 。 ~ Ⅱ ) 繰り返しを抜ける * / b reak ; / * 間違ったメニューが選はれた場合 * / e lse printf( Menu number is wrong. \n"); while (I); ・ 21 行目 : プログラムの初期化 変数「 membercount 」に「 0 」を代入して初期化しています。 この変数は、入力済みのデータの件数を数えるために使います。プログラムを起動 した段階ではデータは入力されていないので、値を「 0 」にするわけです。 ・ 26 ~ 31 行目 : メニューの表示 住所録のメニューを表示している部分です。 scanf 関数でメニュー番号を入力し、 変数 menuno に代入しています。 ・ 34 ~ 57 行目 : データの入力と保存 メニューで 1 番が選ばれると、この部分が実行されます。ここはプログラムの中心 となる部分で、データを入力して構造体配列「 adr 」に保存しています。 構造体でデータをまとめる

8. Linux/FreeBSDで学ぶC言語

/ * ↑キーが押されたときは、 1 つ上のメニュー項目を選択する x/ if ()h : : KELUP) menuno ー i f ( menuno : 0 1 ワっ 0 -4 4 -4 1 ワ 0 っ 0 4 一 0 【 / 8 9 、礙っ 0 -4 【 0 【 / 8 0 1 っ 0 っ 0 ・ 4 【 / 8 、 0 11 ワ 0 っ 0 n50 : 0 ; な↓キーが押されたときは、 1 つ下のメニュー項目を選択する * / se i f ()h = KEY-DOWN) rnenu 「十十 ; i f ( m げ = MENUMAX) menuno : MENUMAX ー 1 ; な Ente 「キーが押された場合 * / e lse i f ()h = 1 の / * 3 番のメニュー項目 (Exit) が選はれているときは f 。「文の繰り返しから抜ける x/ if (menuno = 3 ) b 「 eak; / * 選はれたメニューを表示する * / e lse move(), の ; p 「 intw("%s is selected. " , rnenusCrnenuno]) ; move(), の ; printw("Hit any key. "); ref resh( ) ; getch(); clea 「 (); な端末をリセットする x/ endw i n( ) ; キーボードからの入力 295

9. Linux/FreeBSDで学ぶC言語

このような場合、「 switch 」文を使うともう少し簡潔に書くことができます ( リス ト 1.25 ) 。たとえば、リスト 1.24 を switch 文に書き換えると、リスト 1.26 のようにな ります。 ・リスト 1 .25 : switch 文の書き方 switch ( く変数 > ) case く値 1 > : く変数の値が値 1 のときの処理 > b reak ; case く値 2 > : く変数の値が値 2 のときの処理〉 b 「 eak ; case くイ n> : く変数の値が値初ときの処理 > b reak ; def au : く変数の値が値 1 ~ 値どれにも該当しないときの処理 > b reak ; ・リスト 1 .26 : リスト 1 .24 を switch 文で書き換えた sw i tch (menuno) case 1 : くメニュー番号 1 番の処理 > b reak ; case 2 : くメニュー番号 2 番の処理 > b 「 eak ; case n : くメニュー番号「番の処理〉 b reak ; def au : くメニューにない番号が選択されたときの処理〉 b reak ; 本 基 の 第

10. Linux/FreeBSDで学ぶC言語

keypad 関数の例として、カーソルキーでメニューを選ぶプログラムを作ったのが リスト 7.8 です。 ・リスト 7.8 : カーソルキーでメニューを選ぶ (keypad. c) # i lude く ncu rses. h> # def i ne MENUMAX 4 ma i n ( ) i nt menuno , i ; cha 「 xmenus [ ] : { ' Menu 1 int ch; な端末の初期化 * / initscr(); keypad ()t dsc 「 , TRUE ) ; noecho ( ) ; cb 「 eak ( ) ; / * 先頭のメニューを選択する * / menuno : 0 ; / * メニューを表示する x/ 1 っ -4 -0 冖 / 8 0 11 ワ 00 -4 【 0 ゥー 8 0 1 ワっ 0 -4 -0 「 / 8 0 1 っ朝っ -4 -5 冖 / 8 11 1 11 1 11 1 11 1 、 1 1 亠ワ】っワ 1 ワ」ワワ】ワ】っ】ワ】ワ】っ 0 00 っ 0 っ 0 っ 0 っ 0 00 Menu 3 " Menu 2 " Ex i t fo 「 (i : 0 ; i く MENUMAX; i + + ) な選択されている項目を反転表示にする x/ if (menuno = i ) at t 「 on ( A-REVERSE ) ; e ー se att rof f ( A-REVERSE ) ; move(i , の ; printw("%s", menusCi]); at t rof f ( A-REVERSE ) ; ref resh() ; / * キーを入力する * / ch : getch(); 294 第 7 章画面とキーボードを制御する