プログラミングⅡ 第3回 http://www.fit.ac.jp/~matsuki/lecture.html 今日の内容 • 前回の課題説明 • 配列 – 配列の宣言 – 配列要素 – 添字(そえじ) – 配列の初期化 – マクロ – 多次元配列 – 文字列と配列 前回の課題 • 10月9日の課題(No.4 – No.5) 前回の課題 • 課題No.4 下の実行例に示すように,整数値を読み込んで ,その整数値以下のである正の偶数を昇順に 表示するプログラムを作成せよ.なお,負の値 が入力された場合は,何も表示しない 整数を入力してください:17 2 4 6 8 10 12 14 16 前回の課題 問題5: 下の実行例に示すように,1から50までの整数 値を各行に5個ずつ表示するプログラムを作成 せよ. 1 6 11 16 21 26 31 36 41 46 2 7 12 17 22 27 32 37 42 47 3 8 13 18 23 28 33 38 43 48 4 9 14 19 24 29 34 39 44 49 5 10 15 20 25 30 35 40 45 50 配列の基本 配列とは • 40人分のテストの点数を記録して,平均値を 求めるプログラムを作る int test1 = 85; int test2 = 60; int test3 = 73; ・・・ 40個もの変数を定義するのは面倒 同じ型の値を複数まとめて記憶する 配列 • 配列(array):同じ型のデータの集合 • 要素(element):配列中のハコ この配列は,3つの要素(ハコ)から成る 配列の宣言方法 配列を使うときも,普通の変数と同様に宣言する必要がある 大括弧 始まり • 宣言方法: 型名 配列名[ 要素数 ]; • 例: int test[5]; double x[10]; 大括弧 終わり //int型で要素数が5 //double型で要素数が10 配列 int test[5]; //int型で要素(ハコ)数が5 配列名 int test[5]; 型名 要素の数 (全部でいくつのハ コを用意するか?) test[0] test[1] test[2] test[3] test[4] test[4]が値を格納できる最後の要素 (test[5]は存在しない) 添字 (そえじ) 配列の利用 • 配列要素に値を代入 int test[5]; test[0] = test[1] = test[2] = test[3] = test[4] = 100; 200; 400; 500; 800; 要素数5のint型の配列を宣言 各要素に値を代入 配列名[添字]で,配列要素を参照することができる 配列の利用 • 配列要素の値を出力 int test[5]; //配列の宣言 test[0] = 85; test[1] = 60; test[2] = 73; test[3] = 90; test[4] = 53; 配列要素に値を代入 繰返し文を使って, 配列要素を出力 for (i=0;i<5;i++) printf(“%d番目の人の成績%d\n”, i+1, test[i]); • 実行結果 1番目の人の成績85 2番目の人の成績60 3番目の人の成績73 4番目の人の成績90 5番目の人の成績53 配列の利用 • キーボードから入力 int test[5]; //配列の宣言 繰返し文を使って,配 列要素をキーボード から入力 printf(“5人の点数を入力してください\n”); for (i=0;i<5;i++) { printf(“%d番目の人の成績は?”); scanf(“%d”,&test[i]); } &test[0] &test[1] &test[2] ・・・ 配列の利用 • 添え字の間違い int test[5]; //配列の宣言 test[10] = 50; 誤り! int test[5] test[0] test[1] test[2] test[3] test[4] ? test[10] 配列の初期化 配列を初期化する 初期化子 • 初期化の方法: 型名 配列名[ 要素数 ] = {値0, 値1, ・・・}; 5つの配列要素を 初期化 • 例: int test[5] = {85, 60, 73, 90, 53}; int test[] = {85, 60, 73, 90, 53}; 5つの配列要素が自動的に用意される 要素数が省略された場合,初期化子の数だけ 自動的に要素(ハコ)が準備される 配列を初期化する • 初期化子が少ない場合 • 例: int test[5] = {85, 60, 73}; 80 60 73 0 0 test[0] test[1] test[2] test[3] test[4] 初期化子が少ない場合には,残りの要素に0が格納される マクロ Ctrl+fを体験 マクロ • ソースコード中の特定の識別子を置き換える(置換) #define NUM 5 main() { } main() { int test[NUM]; int i; int test[5]; int i; for (i=0;i<NUM;i++) test[i] = i*10; for (i=0;i<5;i++) test[i] = i*10; } マクロ • マクロの定義方法 #define マクロ名 置き換える文字列 半角のスペースを入れる • 例: #define NUM 50 ソースコード中の「NUM」と いう文字列をすべて「50」と いう文字で置き換える 多次元配列 多次元配列の例 • 一次元配列: 1教科のテストの点数(番号) • 二次元配列: 複数の科目のテストの点数(番号×科目) • 三次元配列: 学期ごと、科目ごとのテスト点数(番号×科目×学期) 一次配列 二次配列 番号 点数 番号 1 80 2 75 3 ・・・ 点数 英語 数学 物理 1 80 65 54 90 2 75 70 100 ・・・ 3 90 77 88 ・・・ ・・・ ・・・ ・・・ 三次配列 ・・・ 番号 点数 英語 数学 物理 前期 後期 前期 後期 前期 後期 1 80 73 65 89 54 64 2 75 55 70 90 100 88 3 90 69 77 55 88 92 ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ 多次元配列の使い方 • 定義方法 型名 配列名[要素数][要素数]; • 例: int test[2][5]; 二次元配列を宣言 2×5=10個のint型データを記憶することが可能 多次元配列 • 2科目×5人の点数を管理する場合、 #define KAMOKU 2 #define NUM 5 main() { int test[KAMOKU][NUM]; test[0][0] = 80; test[0][1] = 75; test[0][2] = 90; test[0][3] = 50; test[0][4] = 60; test[0][5] = 70; test[1][0] = 65; test[1][1] = 70; test[1][2] = 77; test[1][3] = 85; test[1][4] = 73; } test[0][▲]は英語 test[1][0] test[0][0] test[1][1] test[0][1] test[1][2] test[0][2] test[1][▲]は数学 test[1][3] test[0][3] test[1][4] test[0][4] 多次元配列の使い方 • 初期化の方法 int test[2][5] = { {80, 60, 22, 50, 75}, {90, 55, 68, 72, 58} }; 文字列と配列 文字列と配列 • C言語には「文字列型」という型はない。 • 文字列=文字型(char型)の集まりとして扱う 文字列 = char型の配列 文字列と配列 char str[6]; str[0] = ‘H’; str[1] = ‘e’; str[2] = ‘l’; str[3] = ‘l’; str[4] = ‘o’; str[5] = ‘\0’; //char型の配列宣言 1つずつ文字を代入 (5文字分) 最後に’\0’(NULL文字)をつける 文字列配列の最後は必ずNULL文字を入れる 文字列と配列 • 文字列配列を初期化 • 例(4つの例は、すべて同じ初期化処理): char str[6] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’ }; char str[] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’ }; char str[6] = “Hello”; char str[] = “Hello”; NULL記号は 自動的に付 加される “”で囲んで初期化 する方法 文字列と配列 • 初期化の間違い例: “”で初期化はOK char str[6] = “Hello”; str = “Bye!”; 代入することはできない 文字列配列に直接代入をする方法は、7回目の講義で説明する予定です 文字列と配列 • 文字列の出力方法 #include <stdio.h> main() { char str[6]; str[0] = ‘H’; str[1] = ‘e’; str[2] = ‘l’; str[3] = ‘l’; str[4] = ‘o’; str[5] = ‘\0’; 文字列は%sで表示 printf(“表示文字列は%sです\n”, str); } 文字列と配列 • 文字列の出力方法 #include <stdio.h> main() { char str[6] = “Hello”; 文字列表示の場 合、配列名を渡す printf(“表示文字列は%sです\n”, str); } 文字列は%sで表示 文字列と配列 • 文字列の入力方法 #include <stdio.h> main() { char str[100]; 十分に大きな配列を用 意(99文字までOK) printf(“文字列を入力してください\n”); 文字列を入 scanf(“%s”, str); 力させる場合、 「&」は不要 文字列を入力させる printf(“入力された文字列は%sです”, str); }
© Copyright 2024 ExpyDoc