プログラミング入門 情報科学演習
2018.01.22
Back to index page
- 本日の作業内容
- 小テストの結果について
小テストではプレッシャーのためにいろいろな不備が出てきてしまいますが,期末試験ではこんなことが無いように注意してください.
関係ないプログラム提出: b1770
解答用紙不使用: b1623
コンパイルエラー: b1706 b1713 b1728 b1758 b1762 b1621 b1678
コアダンプ: b1741
以上が採点の対象外です.他には,
解答用紙に氏名の記入なし: b1767 b1772 b1664
番号出力なし: b1733 b1780
ハイフンライン無し: b1767 b1779
インデント不備: b1703 b1711 b1715 b1731 b1736 b1773 b1461 b1656 b1664 program1
のような減点対象の答案もありました.注意しましょう.
- 宿題の結果について
- 前回の復習
文字列配列の要素数と添字
整数型の配列のときと異なる要素の考え方について理解の足らない人が多く見られました.もう一度よく確認してください.
- 文字列の考え方
文字列(複数の文字の組合せ)はそれ自体が配列です.ですので,整数型で定義していた変数ならば,
のように定義していたのですが,数値としての100は値が一つなのに対して,文字列としての100であれば3つの文字の列として扱われるので,それだけで配列となり,以下のように定義しないといけなくなります.
- NULL文字
文字列は複数の値を持つということで,どこが文字列の終わりなのかを示す記号であるNULL文字が必ず必要となります.そのため,要素の個数は文字数+1となります.
char a[4] = {'1', '0', '0', '\0'};
|
のような定義方法であれば,要素が4つというのがよくわかりますが,これは面倒なので,以下のような定義が便利なのですが,その際にはヌル文字まで含めた要素の個数に注意してください.
- 添字
上のような要素として1,0,0の3つを持つ文字列配列の要素を for 文を使用して順に表示する場合,以下のような添字なので対応に注意が必要です.
添字 |
0 |
1 |
2 |
3 |
値 |
'1' |
'0' |
'0' |
'\0' |
上記のような添字との対応なので,for 文で順に表示する際には,変数 i は0から2までと要素のサイズよりも2つ小さい i = 2 までになります.
for(i=0; i<=2; i++)
printf("%c", a[i]);
|
配列のサイズよりも1つだけ小さい i まで反復処理を行なう例が前回も多く見られました.その間違いに気づくためにも,処理を less に渡すことを忘れないでください.
$ ./a.out | less
- %s の意味
教科書のp.21で %s はすでに紹介されていたのですが,文字列を扱うようになると頻繁に使用するようになります.前回のテキストでも説明しておきましたが,文字1つずつは %c ですが,文字列単位で出力するときには %s が便利です.
char a[3] = "ab";
char b[3][3] = {"ab", "bc", "ca"};
printf("%s\n", a);
printf("%s\n", b[0]);
for(i=0; i<=2; i++)
printf("%s\n", b[i]);
|
のように使用できます.文字列単位で扱えるということは,文字順を示す添字が不要なので,配列の添字が省略できることに注意してください.
- 実習
実習の演習問題は当日ご案内します.
- 宿題
授業の終わりに宿題の案内をします.ただし,問題を見ることができるのは23日以降です.レポート提出システムから閲覧してください.
目次ページに戻る