C講義資料(PDF版)

プログラミングワークショップIV
12回 C言語の振り返り(6)
C言語コース
C言語の振り返り(6) 関数(2)
z
演習内容
z
課題の確認
入力、出力のない関数
プログラム単位としての関数
変数のスコープ(有効範囲)
z
課題
z
z
z
練習問題(3)
z
2次方程式 ax 2 + bx + c = 0 の解がいくつある
かを判断する判別式 D = b 2 − 4ac
を計算する関
数detを作成し、その関数を利用するプログラム
(mainプログラム)を作成せよ。
ただし、2次方程式の係数(a,b,c)はすべて整数とす
る。
z
ちなみにD>0の場合は解が2個、D=0の場合は1個、
D<0の場合は実数解無しとなる
課題 2次方程式の判別式
#include <stdio.h>
printf("a:"); scanf("%d", &a);
// 入力:整数2個、 結果:整数
printf("b:"); scanf("%d", &b);
int det (int a, int b, int c)
printf("c:"); scanf("%d", &c);
{
int z = b*b ‒ 4*a*c ;
d = det (1, 2, 0); // 関数呼び出し
return (z);
}
printf("判別式の値は %dです¥n", d);
int main (void)
return 0;
{
}
int a, b, c, d;
特別な関数。 入力、出力がない
z
入力、出力が無い関数も定義できる。
z
入力、出力のデータを void 型 を指定
#include <stdio.h>
void func (void)
{
printf("こんにちは!");
}
int main (void)
{
func ( ) ; //関数呼び出し
return (0);
}
前回の振り返り
z
関数の定義
z
関数の宣言
z
z
関数の処理
z
z
z
関数名、入力の個数(データ型)、出力のデータ型
関数の機能をプログラムで記述
結果は return 文
関数の呼び出し
z
z
z
関数名を正しく
入力の個数、データ型、順番を正しく
結果を正しく格納
プログラムの一部としての関数
例) 1から10までの整数の総和を求めるプログラム
#include <stdio.h>
int main (void)
{
int sum, i;
1から10までの総和
を計算する部分
sum = 0;
for ( i=1; i <= 10; i++) {
sum = sum + i;
}
printf ("総和は%dです¥n", sum);
return (0);
}
a∼bまでの総和を求める
関数名 summation
関数化
入力
結果
a (整数) 開始値
b (整数) 終了値
整数
プログラムの関数化
#include <stdio.h>
int summation (int a, int b)
{
int sum, i;
sum = 0;
for( i = a; i <= b; i++) {
sum = sum + i;
}
return (sum);
}
int main (void)
{
int sum;
sum = summation(1,10);
printf("総和は%dです¥n", sum);
return 0;
}
練習問題1
次のプログラムは2つの整数のうち大きい方を表示するプログラム
である。大きい方を選び出す処理を関数化せよ
#include <stdio.h>
int main (void)
{
int n1, n2, max;
printf("n1:"); scanf("%d", &n1);
printf("n2:"); scanf("%d", &n2);
if ( n1 <= n2 ) { max = n2;}
else
{ max = n1;}
printf("大きい方は%dです¥n",max);
return (0);
}
関数名 maxof
入力 a (整数)
b (整数)
結果 整数
変数のスコープ(有効範囲)
変数の定義はブロックの先頭でおこなう
定義した変数はブロック内でのみ有効
#include <stdio.h>
int summation(int a, int b)
{
int i, sum = 0;
for (i =a; i <=b; i++) {
sum + = i;
}
a = 0; b = 0;
return (sum);
}
変数
a,b,i,sum
int main ( void )
{
int a, b, sum;
a = 1; b = 10
sum = summation(a,b);
printf("%dから%dの積和は%dです¥n",
a, b, sum);
return (0)
}
変数
a,b,sum
たとえ変数名が同じでも異なる変数
課題
次の関数の入力と出力の定義を書け。またその関数
とそれを利用するプログラムを作成せよ
z
1.
2.
3.
4.
底辺w,高さhの三角形の面積を求める関数 triangle
3つの整数から最大値を求める関数 max3of
整数xのy乗を求める関数 power
閏年かどうか調べる関数 uruu
閏年ならば1を、そうでないならば0を結果とする
閏年の条件
4で割り切れる年
100で割り切れない年
400で割り切れる年