プログラミング演習I 2004年7月14日(第11回) 理学部数学科・木村巌 前回までの復習 繰り返し while文 それらのバリエーション 処理の流れの変更:break, continue 浮動小数点数 今日学ぶこと 配列の基本事項 配列の応用 教科書7章 配列 同じ型のデータをたくさん扱う場合に便利 同じ型のデータの保管箱が連続して並んでい るイメージ 配列の宣言 配列に格納するデータの型、配列の名前(識 別子)、格納するデータの個数(要素数)を指 定する.構文は以下の通り: 型名 配列名[要素数]; 例 int test[5]; /* int型のデータを5つ保存できる配列testを宣言 */ /* test[0], test[1], test[2], test[3], test[4] の5つ */ /* 添え字の範囲に注意!! */ 配列の使い方 int test[5]; test[0] = 80; test[1] = 60; test[2] = 22; test[3] = 50; test[4] = 75; のように、配列名[添字] = 式; の形式 配列要素の値を出力 Sample1.c (p.185) を入力して、コンパイル・実 行してみよう. 同じくSample2.c (p.187)を入力して、コンパイ ル・実行してみよう. int型の配列のそれぞれの要素は、これまで のint型の変数同様に扱える(printf(), scanf()で は%dで入出力できる) 配列の添え字の範囲について 例えば、 int test[5]; test[10] = 10; というコードを書いても、コンパイラは特にエ ラーとはしない しかし、実行するとエラーになる 配列の範囲の正しさについては、プログラマ が責任を持つこと 配列の初期化 構文: 型名 配列名[要素数] = {値0, 値1, ……}; により、配列の宣言と初期化を同時に行うこ とが出来る int test[5] = {80, 60, 22, 50, 75}; あるいは int test[] = {80, 60, 22, 50, 75}; 初期化子に応じて、自動的に要素数を設定して くれる 初期化子が足りない場合 int test[5] = {80, 60, 22}; このような場合、test[3], test[4] は 0 に初期化さ れる Sample3.cを入力し、コンパイル・実行してみよ う マクロ プリプロセッサの機能で、 #define マクロ名 マクロの実体 という記述を行うと、プリプロセスの段階で、 マクロ名を機械的にマクロの実体に置き換え る Sample4.cを参照.ソースコード内のNUMがす べて、5に置き換えられる プログラムのあちこちに、同じ値が現れるとき に使うと便利で、誤りを防ぐことが出来る 配列の応用 int型の配列に格納された値を、大きい順に並 べ替える……ソート(sort) Sample5.cを入力し、コンパイル・実行してみよ う 配列の応用2 多次元配列(配列の配列) 例えば2次元配列なら、 型名 配列名[要素数][要素数]; Sample6.cを入力、コンパイル・実行してみよう その他の応用: ベクトルと行列 多倍長桁数の計算などなど 文字列とchar型の配列との関係 Cには「文字列型」はな く、「char型の配列」でそ れを代用しているの だった より正確には、最後の 要素がnull文字 ‘\0’であ るようなchar型の配列、 である char str[6]; str[0] = ‘H’; str[1] = ‘e’; str[2] = ‘l’; str[3] = ‘l’; str[4] = ‘o’; str[5] = ‘\0’; /* null文字必須 */ 文字列とchar型の配列との関係(2) 従って、文字列に含まれる文字数 + 1個の要 素を持つchar型の配列が必要になる. 一般的には、 char str[6] = “Hello”; char str[] = “Hello”; のように書く.null文字は暗黙のうちに付加さ れる char str[6]; str = “Hello”; /* このような記述は出来ない */ 文字列の入出力 printf()で出力する際は、変換しようとして、%s を用いる:p.206の例を参照のこと 文字列を端末から読み込むのにも、scanf()を 使うことが出来る(しかし推奨されない) 文字列操作に関しては、後期に詳しく説明す るので、略(配列とポインタ、文字列操作のた めの標準ライブラリ関数など.10章参照) 今日学んだこと 配列の基本事項 配列の応用 マクロ 文字列とchar型の配列との関係 レポート課題 教科書p.212, 練習問題の1で、最高得点の みならず、平均点を出力するように改造した ものを作成せよ 締め切り:2004年7月20日一杯(日本時間で) 提出先:メールで木村([email protected])まで. 感想などあると木村が喜びます
© Copyright 2024 ExpyDoc