a[2]

プログラミングⅠ(1組)
第10回
http://www.fit.ac.jp/~matsuki/lecture.html
オフィス・アワーのお知らせ
• オフィス・アワーを以下の要領で開講
– 日時:毎週月曜日、5時限目(16:20~)
– 場所:A棟 4階 41番教室
– 内容:プログラミング関連科目
タイピングソフト
• 喰人王を使用して結果を記録する
• ステージ:第一の店(中華)
• Excelのシートにスコアを毎回記録していく
– 残り時間 ⇒ FeedBackページで報告
– 総タイプ数
– ミスタイプ数
– 正確さ ⇒ FeedBackページで報告
– 喰いっぷり ⇒ FeedBackページで報告
• このシートは,途中で提出してもらいます
今日の内容
• 関数の復習
• 配列
– 宣言
– 初期化
– 参照
– プログラム例
– 関数への関数の受け渡し
関数の定義
• 関数とは?
– プログラマが与えた値(材料)を,
– 指示通りに処理し,
– 結果を吐き出す
引数
処理の材料
addnum()関数:
2つの整数値の
和を得る
2
a
3
b
addnum()
戻り値(返り値)
処理の結果
5
プログラム例
• 次の関数を作れ
– 関数名:power
– 戻り値の型:double
– 引数:double型x,int型nの2つ
– 機能:xのn乗を計算し,その結果を戻り値とする
プロトタイプ宣言
double power(double x, int n);
または
double power(double , int);
#include <stdio.h>
double power(double, int);
プロトタイプ宣言
main()
{
printf(“%f\n”, power(1.414213, 4) );
}
double power(double x, int n)
{
double result = 1;
int k;
for (k=0; k<n; k++) {
n回繰り返す
result = result * x;
(n回,変数xを掛け合わせる)
}
return result;
}
配列
• 40人分の100メートル走のタイムを記録して,
平均値を求めるプログラムを作る
double a, b, c, d, e, ・・・ ;
40個もの変数を定義するのは面倒
配列
• 配列(array):同じ型のデータの集合
大括弧
大括弧
• 宣言方法:
データ型 配列名[ 配列の大きさ ];
配列
• 宣言方法:
int a[5];
double x[10];
//int型で要素数が5
//double型で要素数が10
配列名
int
a[5];
データ型
要素数
(全部でいくつの器
を用意するか?)
a[0]
a[1]
a[2]
a[3]
a[4]
添字
(そえじ)
配列
• 配列は,配列の大きさ(要素数)を指定する必
要がある.
• 添字の範囲は,0から(要素数ー1)まで
要素数
int
a[5];
添字は,0から4までの5つ
a[0]
a[1]
a[2]
a[3]
a[4]
配列の初期化
• 宣言と同時に,初期化することが可能
• 初期値を,中括弧の中に列挙する
int a[4] = { 1, 2, 100, 50};
double data[] = {4, 3.14, 7, 8, 9, 12.3};
要素数を省略すると,初期値
の個数が,要素数となる
配列の初期化
• 初期値の個数が要素数より少ない場合は,
空いている要素には自動的に「0」が入る
int a[4] = { 1, 2};
1
2
0
0
a[0]
a[1]
a[2]
a[3]
配列の参照
• 配列名[添字]で,配列要素を参照することが
できる
int a[5] = { 1, 2}; //宣言初期化
a[2] = 100;
a[3] = a[0] + a[1] + a[2];
scanf(“%d”,&a[4]);
printf(“%d\n”, a[2]);
printf(“%d\n”, a[3]);
a[2]に100を代入
a[3]にa[0],a[1],
a[2]の和を代入
a[4]にキーボードか
ら値を入力させる
プログラム例
#include <stdio.h>
main()
data[4]
data[0]
{
int data[5] = {10, 20, 40, 80, 160};
kは0から4まで
int k;
for (k = 0; k < 5; k++) {
printf(“data[%d] = %d\n”,k, data[k]);
}
}
配列の関数への受け渡し
• 呼び出し側
– 配列名を引数の位置に書く
int data[5] = {10, 20, 30, 40, 50};
func(data);
• 関数側
– 引数位置には,配列の型,配列名,大括弧を記述
func(int x[])
xという配列名で配列
{
dataを受け取っている
printf(“data[0] は %d”, x[0]);
}
配列の関数への受け渡し
• 配列の要素すべてを表示する関数display()
– 関数名:display
– 戻り値の型:void型
– 引数:int型配列data,int型size
– 機能:引数data配列の要素をすべて画面に表示
プロトタイプ宣言
void display(int data[], int size);
または
void display(int [] , int);
#include <stdio.h>
void display(int data[], int size);
プロトタイプ宣言
main()
{
int point[5] = {75, 100, 85, 56, 68};
display(point, 5);
}
void display(int data[], int size)
{
int k;
for (k=0; k<size; k++) {
printf(“%2d ”,data[k]);
}
printf(“\n”);
}