プログラミング入門2 第14回 情報工学科 篠埜 功 今日の内容 • 前回出題した総合演習課題の続き – 今日の16:10までに総合演習課題を終了してく ださい。これまでの各回の課題も今日の16:10 までとします。 • 中間試験について • 期末試験について 中間試験について • 大多数の学生は6割以上できていましたが、 6割以下が12名います。(36点満点、22点以 下だった人は期末までに十分に準備してくだ さい。) • 注意事項2点(次ページ以下) – 関数定義のネストについて – グローバル変数について 関数定義のネストについて • 関数定義の中に関数定義を書いた人が1名いま した。これは、ISO規格では許されていません。た だし、GNUの言語拡張では許されています。演 習室のCコンパイラはGNUのコンパイラであり、 関数定義内に関数定義を記述可能です。 • 関数定義のネストは他の多くの言語では許され ており、自然ですが、ISO規格では許されていな いということを知っておいてください。(規格に取 り入れてもよさそうに思いますが、今は入ってい ません。) • 減点対象とはしません。 関数定義のネストの例 #include <stdio.h> int main (void) { 赤字部分が、関数定義 int sum (int n){ 内に記述した関数定義 int i, sum=0; for (i=1; i<=n; i++) このプログラムは演習室の環 sum=sum+i; 境ではコンパイルが通るが、 return sum; ISO規格では許されていない。 } printf ("sum(10)=%d\n", $ gcc –pedantic test.c sum(10)); のように-pedanticをオプショ return 0; ンに指定することによって、 } 警告が出るようになる。 グローバル変数について • 関数定義の外に変数宣言を書いた人がいました。 関数定義の外で宣言すると、グローバル変数と なり、関数呼び出しとは関係なく、プログラム実 行の最初から最後まで存在します。関数定義の 内部に書いた変数は、その関数の呼び出し毎に 別の変数として扱われます。 • グローバル変数を使って挙動のおかしいプログ ラムを書いた場合は減点対象とします。 • グローバル変数は講義では説明していません。 • 期末試験ではグローバル変数は使わないように してください。 例 #include <stdio.h> int s=0; int sum (int n) { int i; for (i=1; i<=n; i++) s=s+i; return s; } int main (void) { printf ("sum=%d\n", sum(10)); printf ("sum=%d\n", sum(10)); return 0; } このプログラムではsをグロー バル変数として宣言している。 main関数内で2回sumを呼び 出している。1回目はsの値が 55になり、返り値が55となる が、2回目はsの値が55の状 態から計算が始まり、返り値 が110となる。 細かい注意事項 scanf関数でint型の数をキーボードから受 け取る場合、 scanf (“%d”, &x); のように記述してください(\nを入れないよ うにしてください)。 変数宣言のし忘れ、中括弧の閉じ忘れ、 ダブルクォートの閉じ忘れ等にも注意して ください。 期末試験について • 各回(第1回から第12回まで)の2問の課題のプ ログラムが書けるようにしておいてください。 • 中間試験で出題した問題が解けるようにしてお いてください。 • 細かい書き間違い(セミコロンの付け忘れ等)に 注意してください。減点対象とします。 • なるべく読みやすく書いてください。一部の人は (字の判別に苦労するほど)読みにくく、採点に 非常に時間がかかります。(減点対象ではありま せんが)
© Copyright 2024 ExpyDoc