ざざ虫ロゴ


ひまわり入門

日本語プログラミング言語

ひまわり


▲ひまわり目次へ戻る


 配列を作くる

○ 配列

例 配列を使って平均値を求める
5人の身長、160.0、170.0、146.7、180.5、180.0を、配列に代入し、平均値を求めて表示する。
ひまわり
身長=「160.0 170.0 146.7 180.5 180.0」 身長の、配列平均値。 「平均身長={それ}」と、表示。
C言語
'平均値を求める #include <stdio.h> main() { float height={160.0, 170.0, 146.7, 180.5, 180.0}; float total; int i; for (i = 0; i < 5; i++) { total += height[i]; } printf("average = %f\n", total / 5); }
ひまわり関連
配列変数:1次元配列        2次元配列
    (変数名)#(番号)  (変数名)#(列番号)#(行番号)
注)番号は0から始まる
表示:(配列)を、表示
反復:配列の全ての要素を繰り返すことができる
「配列名」を、反復(
   …

注)ひまわりの配列は文字列配列
ひまわりの1次元配列に関する命令
要素数     :(配列)の、要素数
ソート     :(配列)を、ソート
数値ソート   :(配列)を、数値ソート
逆にする    :(配列)を、逆にする
配列シャッフル :(配列)を、配列シャッフル
行挿入     :(配列)の、(番号)行目へ、(データ)を、行挿入
行削除     :(配列)の、(番号)行目へ、(データ)を、行削除
配列合計値   :(配列)の、配列合計値
配列平均値   :(配列)の、配列平均値
配列分散値   :(配列)の、配列分散値
標準偏差値   :(配列)の、標準偏差値
標準最大値   :(配列)の、配列最大値
標準最小値   :(配列)の、配列最小値
ひまわりの2次元配列に関する命令
表行数、表列数 :(配列)の、表行数。 (配列)の、表列数。
表最大値    :(配列)の、(列)列目の、表最大値
表最小値    :(配列)の、(列)列目の、表最小値
表平均値    :(配列)の、(列)列目の、表平均値
表合計     :(配列)の、(列)列目の、表合計
表ソート    :(配列)の、(列)列目を、表ソート
表数値ソート  :(配列)の、(列)列目を、表数値ソート
表反転     :(配列)の、(列)列目を、表反転
表列挿入    :(配列)の、(列)列目へ、表列挿入
表列削除    :(配列)の、(列)列目を、表列削除
表列コピー   :(配列)の、(列)列目を、表列コピー
表列コ貼付け  :(配列)の、(列)列目に、表列貼付け
表行列交換   :(配列)の、表行列交換 ← 表の作業は列に対して行われるため、行列入替の必要発生
タブ区切りに変換  :(配列)を、タブ区切りに変換
カンマ区切りに変換 :(配列)を、カンマ区切りに変換


 構造体(C言語的呼び方)を作る

○ 構造体(C言語)

例 構造体を使って住所録を作成、表示する
住所録は
    "名前","フリガナ","住所"
    "鈴木太郎","スズキタロウ", "東京都目黒区"
    "佐藤一郎","サトウイチロウ","川崎市"
    "足立次郎","アダチジロウ","名古屋市中区"
    "石田三郎","イシダサブロウ","大分県大分市"
ひまわり
住所録は、「名前, フリガナ, 住所 鈴木太郎,スズキタロウ, 東京都目黒区 佐藤一郎,サトウイチロウ, 川崎市 足立次郎,アダチジロウ, 名古屋市中区 石田三郎,イシダサブロウ,大分県大分市 」 住所グリッドを、作る。 その、アイテムは、住所録。
C言語
#include <stdio.h> main() { struct data { char namae[20]; char furigana[20]; char jusho[20]; }; struct data jushoroku[5] = { {"名前","フリガナ","住所"}, {"鈴木太郎","スズキタロウ", "東京都目黒区"}, {"佐藤一郎","サトウイチロウ","川崎市"}, {"足立次郎","アダチジロウ","名古屋市中区"}, {"石田三郎","イシダサブロウ","大分県大分市"} }; int i; for (i = 0; i < 5; i++) { printf("%20s %20s %20s\n", jushoroku[i].namae, jushoroku[i].furigana, jushoroku[i].jusho); } }
ひまわり関連
ひまわりの配列は文字列変数であり、2次元配列はC言語の構造体として機能する。

配列変数の内容を表示、種々の処理を行う。
・配列変数をリストで表示。
○○リストを、作る。
その、アイテムは、○○。
・2次元配列変数をグリッドで表示。
○○グリッドを、作る。
その、アイテムは、○○。
・ボタンを作って種々の処理を行う。
○○ボタンを、作る。
その、イベントは(
  処理
  ‥‥

注)2次元配列ソートにおいて、0行目がフィールド名である場合は、以下の設定を行う。
  表フィールド名は、オン。


 練習問題 5
成績評価プログラムの作成
生徒の名前、(たとえば国語の)成績を入力し、最大値、最小値、平均値を求める。
なお、生徒数は4人、名前は鈴木太郎、佐藤一郎、足立次郎、石田三郎とする。
回答
成績表は、「名前,点数 鈴木太郎,88 佐藤一郎,39 足立次郎,93 石田三郎,64」 成績表グリッドを、作る。 その、アイテムは、成績表。 平均・最高・最低ボタンを、作る。 その、イベントは(  表フィールド名は、オン。  成績表の、1列目の、表平均値。  小数点1位で、四捨五入。  平均点は、それ。  成績表の、1列目の、表最大値。  最高点は、それ。  成績表の、1列目の、表最小値。  最低点は、それ。  「成績の平均点は{平均点}点\n   最高点は{最高点}点\n   最低点は{最低点}点です。」と、言う。 )


 課題 5
 成績表を表示し、フリガナによるソート、点数による(正順・逆順)ソート、 平均・最高・最低表示などの処理を行うプログラムを考えなさい。各種の処理は ボタンを押すことより、行うようにすること。
 なお、成績表は左の枠内のデータを使う。

参考プログラム:7_3_06.hmw
        7_3_07.hmw
成績表
名前,フリガナ,点数
鬼太郎,オニタロウ,88
のび太,ノビタ,39
花環,ハナワ,93
花子,ハナコ,64
丸子,マルコ,57
知子,トモコ,50
回答
成績表は、「名前,フリガナ,点数 鬼太郎,オニタロウ,88 のび太,ノビタ,39 花環,ハナワ,93 花子,ハナコ,64 丸子,マルコ,57 知子,トモコ,50」 成績表グリッドを、作る。 その、アイテムは、成績表。 平均・最高・最低ボタンを、作る。 その、イベントは(   表フィールド名は、オン。   成績表の、2列目の、表平均値。   小数点1位で、四捨五入。   平均点は、それ。   成績表の、2列目の、表最大値。   最高点は、それ。   成績表の、2列目の、表最小値。   最低点は、それ。   「成績の平均点は{平均点}点\n    最高点は{最高点}点\n    最低点は{最低点}点です。」と、言う。 ) 点数ソートボタンを、作る。 その、イベントは(   表フィールド名は、オン。   成績表の、2列目を、表数値ソート。   それの、表反転。   成績表グリッドの、アイテムは、それ。 )


 ファイルの入出力をする

○ ファイル入出力

例 ファイルのコピーを作る
入力ファイル名、出力ファイル名を入力し、ファイルのコピーを作る。
なお、ファイルはテキストファイルとし、入・出力ファイルのオープンが出来なかった場合は、 「〇〇がオープンできません」というエラーメッセージを出して、処理を中断する。
ひまわり
'ファイルのコピーを作る ' メニューの作成 ファイルメニューを、作る。 開くメニューを、メニュー追加。 その、イベントは(  「.txt」の、読込ファイル選択して、    ファイル名に、入れる。  もし、ファイル名が、「」ならば、戻る。  テストハンドルで、ファイル名の、    ハンドルを開く。  i=0  条件=1  「条件=1」で、ループ(   テストハンドルを、ハンドルを一行読む。   テキスト#iは、それ。   テキスト#iを、表示。   iに、1を、足す。   テストハンドルの、ハンドル最後か。   もし、それが、はいならば、条件=0  )  テストハンドルの、ハンドルを閉じる。 )。 保存メニューを、メニュー追加。 その、イベントは(  「.txt」の、書込ファイル選択して、    ファイル名に、入れる。  もし、ファイル名が、「」ならば、戻る。  テストハンドルで、ファイル名の、    ハンドルを開く。  i=0  テキストを、反復(   それは、テキスト#i。   テストハンドルを、ハンドルへ一行書く。   iに、1を、足す。  )  テストハンドルの、ハンドルを閉じる。 )。
C言語
'ファイルのコピーを作る #include <stdio.h> #include <stdlib.h> main() { FILE *fin, *fout; char buf[256]; char filename1[20], filename2[20]; printf("入力ファイル名="); gets(filename1); printf("出力ファイル名="); gets(filename2); fin=fopen(filename1,"r"); if (fin == NULL) { printf("%sがオープンできません。\n); exit(1); } fout=fopen(filename2,"w"); if (fout == NULL) { printf("%sがオープンできません。\n); exit(1); } while (fgets(buf,256,fin) != NULL) { fputs(buf, fout); } fclose(fin); fclose(fout); }
ひまわり関連
読込ファイル選択:○○形式のファイルを、選択ダイアログを出し、ファイル名を「それ」に返す。
書込ファイル選択:○○形式のファイルを、選択ダイアログを出し、ファイル名を「それ」に返す。
ハンドルを使った読み書き
 普通、ファイルの読み書きで、ファイルを開くと、ファイルの内容が全て読み込まれてします。その為巨大ファイルには不向きで、その様な大きなファイルを扱うときはハンドルを使って読み書きする。
ハンドルを開く:ファイルを(読み書き兼用モードで)開き、変数○○にファイル名△△の、ハンドルを返す。
ハンドルを一行読む:変数○○に、ハンドル××のファイルから、一行読み込む。
ハンドルへ一行書く:変数○○を、ハンドル××のファイルへ、一行書き込む。
ハンドルを閉じる:ハンドル××のファイルを閉じる。


 練習問題 6
成績評価プログラムからファイル出力
練習問題 5 のプログラムを改良し、入力データをファイル出力させる。
回答
成績表は、「名前,点数 鈴木太郎,88 佐藤一郎,39 足立次郎,93 石田三郎,64」 成績表グリッドを、作る。 その、アイテムは、成績表。 'メニューの作成 ファイルメニューを、作る。 保存メニューを、メニュー追加。 その、イベントは(   「.csv」の、書込ファイル選択して、ファイル名に、入れる。   もし、ファイル名が、「」ならば、戻る。   それは、成績表。   それを、ファイル名へ、保存。 ) 平均・最高・最低ボタンを、作る。 その、イベントは(   表フィールド名は、オン。   成績表の、1列目の、表平均値。   小数点1位で、四捨五入。   平均点は、それ。   成績表の、1列目の、表最大値。   最高点は、それ。   成績表の、1列目の、表最小値。   最低点は、それ。   「成績の平均点は{平均点}点\n    最高点は{最高点}点\n    最低点は{最低点}点です。」と、言う。 )


▲ひまわり目次へ戻る


このホームページはLightiningHTMLで作成しました。


Copyrights(c) 2000 ザザ虫. All rights reserved.