Powered by SmartDoc

ソフトウェア概論A/B (2013/07/12)
Ver. 1.0

2013年7月12日
栗野 俊一
kurino@math.cst.nihon-u.ac.jp
http://edu-gw2.math.cst.nihon-u.ac.jp/~kurino/2013/soft/soft.html
ソフトウェア概論 A/B2013年7月12日 の資料

目次

講義資料

当日の OHP 資料

当日のOHP資料です。

講義で利用するサンプルプログラム

サンプルファイル

Download : sample-001.c ( SJIS 版 )

sample-001.c
/*
 * 2013/07/12 sample-001.c
 */

/*
 *  代入文
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-001.exe sample-001.c
 *		実行
 *			sample-001
 */

#include <stdio.h>

#include "s_print.h"

/*
 *	main
 */

int main( double argc, char *argv[] )
{
	int i = 123;		/* 変数は、宣言と同時に値を指定できる (初期化) */

	s_print_string ( "i の値は、現在 " );
	s_print_int ( i );	/* 変数 i の値は、初期化された値 */
	s_print_string ( " です。\n" );

	s_print_string ( "i の値を、もう一度確認すると " );
	s_print_int ( i );	/* 変数 i の値は、代入されない限り変化しない */
	s_print_string ( " です。\n" );

	i = 1 + 2 + 3;		/* 代入によって変数の値は変更される */

	s_print_string ( "i の値は、 " );
	s_print_int ( i );	/* 変数 i の値は、最後に変更された結果 */
	s_print_string ( " に変化しました。\n" );
	
	return 0;
}
sample-001.c の実行結果
C:\usr\c>sample-001
i の値は、現在 123 です。
i の値を、もう一度確認すると 123 です。
i の値は、 6 に変化しました。
C:\usr\c> 

Download : sample-002.c ( SJIS 版 )

sample-002.c
/*
 * 2013/07/12 sample-002.c
 */

/*
 *  代入文 ( 変数の値の更新 )
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-002.exe sample-002.c
 *		実行
 *			sample-002
 */

#include <stdio.h>

#include "s_print.h"

/*
 *	main
 */

int main( double argc, char *argv[] )
{
	int i = 987;		/* 変数は、宣言と同時に値を指定できる (初期化) */

	s_print_string ( "i の値は、現在 " );
	s_print_int ( i );	/* 変数 i の値は、初期化された値 */
	s_print_string ( " です。\n" );

	i = i + 1;	/* 代入文の右辺(式)には、「代入される変数自身」を含める事ができる。
				 * その時の変数の値は、代入前の変数の値となる。
				 * 代入前 i の値は 「987」 なので、
				 * 右辺(式)の値は 「987 + 1」の「988」となる。
				 */

	s_print_string ( "i の値は、現在 " );
	s_print_int ( i );	/* 変数 i の値は、最後に代入された「988」 */
	s_print_string ( " です。\n" );

	i = i + 1;	/* 今度は、「988 + 1」、すなわち「989」が代入される。
				 * 変数を、変数自身の現在の値を利用した式を代入する事によって、
				 * 「変数の値の更新」をする事ができる。
	  	  		 */

	s_print_string ( "i の値は、現在 " );
	s_print_int ( i );	/* 変数 i の値は、最後に代入された「989」 */
	s_print_string ( " です。\n" );

	i++;		/* 「i 自身を 1 増やす」という「更新」は良く行うので、
				 * C 言語では、省略型が用意されている。
				 * 「i++」は、とりあえず、「i = i + 1」と同じと考えてよい
				 * だから、この結果 i は 「990」になる
				 */

	s_print_string ( "i の値は、最後に " );
	s_print_int ( i );	/* 変数 i の値は、最後に代入された「990」 */
	s_print_string ( " となりました。\n" );

	return 0;
}
sample-002.c の実行結果
C:\usr\c>sample-002
i の値は、現在 987 です。
i の値は、現在 988 です。
i の値は、現在 989 です。
i の値は、最後に 990 となりました。
C:\usr\c> 

Download : sample-003.c ( SJIS 版 )

sample-003.c
/*
 * 2013/07/12 sample-003.c
 */

/*
 * 代入文 (計算結果の蓄積)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-003.exe sample-003.c
 *		実行
 *			sample-003
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 * sum_print
 *	「sum の値は QQQQ です。」と出力する。QQQQ は現在の sum の値
 */

void sum_print ( int sum ) {

	 s_print_string ( "sum の値は " );
	 s_print_int ( sum );
	 s_print_string ( " です。\n" );

}

/*
 *	main
 *
 *	三つの整数値を入力し、その総和を計算して表示する。
 */

int main( double argc, char *argv[] )
{
	int sum = 0;	/* 「最初」は、(一つも入力されていないので..) 総和は 0 */

	/*
 	 *
	 */

	sum_print ( sum );	/* 0 が入っているので 0 が出力される */

	/*
 	 *
	 */

	s_print_string ( "一つ目の整数値を入力してください : " );
	sum = sum + s_input_int();
		/*
		 * sum の元の値と、新に入力された値の和が sum に入る。
		 * 元々、sum には 0 が入っていたので、結局、最初に入力した整数値になる。
		 */

	sum_print ( sum );	/* 最初に入力した整数値になる */

	/*
 	 *
	 */

	s_print_string ( "二つ目の整数値を入力してください : " );
	sum = sum + s_input_int();
		/*
		 * sum の元の値と、新に入力された値の和が sum に入る。
		 * 元々、sum には、一つ目の整数が入っているので、二つの整数の和になる。
		 */

	sum_print ( sum );	/* 二つの整数の和が表示される */

	/*
 	 *
	 */

	s_print_string ( "三つ目の整数値を入力してください : " );
	sum += s_input_int();	/* 「s += x」は、「 s = s + (x)」の省略型 */
		/*
		 * sum の元の値と、新に入力された値の和が sum に入る。
		 * 元々、sum には、二つの整数の和が入っているので、結果は三つの整数の和
		 */

	sum_print ( sum );	/* 三つの整数の和が表示される */


	return 0;
}
入力例
34
98
111
sample-003.c の実行結果
C:\usr\c>sample-003
sum の値は 0 です。
一つ目の整数値を入力してください : 34
sum の値は 34 です。
二つ目の整数値を入力してください : 98
sum の値は 132 です。
三つ目の整数値を入力してください : 111
sum の値は 243 です。
C:\usr\c> 

Download : sample-004.c ( SJIS 版 )

sample-004.c
/*
 * 2013/07/12 sample-004.c
 */

/*
 * 代入文 (計算結果の蓄積)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-004.exe sample-004.c
 *		実行
 *			sample-004
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 * sum_print
 *	「sum の値は QQQQ です。」と出力する。QQQQ は現在の sum の値
 */

void sum_print ( int sum ) {

	 s_print_string ( "sum の値は " );
	 s_print_int ( sum );
	 s_print_string ( " です。\n" );

}

/*
 * input_nth_numner
 *	「QQQQ 番目の数値を入力してください」と出力し、整数値を入力して返す。
 */

int input_nth_numner ( int i ) {

	/*
	 * プロンプト(入力促進メッセージ)を出力し..
	 */
	 s_print_int ( i );
	 s_print_string ( " 番目の整数値を入力してください : " );

	 return s_input_int();	/* 整数を入力し、その結果を値として返す */

}

/*
 *	main
 *
 *	三つの整数値を入力し、その総和を計算して表示する。
 */

int main( double argc, char *argv[] )
{
	int sum = 0;	/* 「最初」の「総和」は、0 */
	int i = 1;		/* 「最初」の「入力」は、1 番目 */

	/*
 	 *
	 */

	sum_print ( sum );	/* 0 が入っているので 0 が出力される */

	/*
 	 * 一つ目
	 */

	sum += input_nth_numner ( i );
	sum_print ( sum );
	i++;

	/*
 	 * 二つ目
	 */

	sum += input_nth_numner ( i );
	sum_print ( sum );
	i++;

	/*
 	 * 三つ目
	 */

	sum += input_nth_numner ( i );
	sum_print ( sum );
	i++;	/* この最後の i++ は不要だが .. */

	return 0;
}
入力例
34
98
111
sample-004.c の実行結果
C:\usr\c>sample-004
sum の値は 0 です。
1 番目の整数値を入力してください : 34
sum の値は 34 です。
2 番目の整数値を入力してください : 98
sum の値は 132 です。
3 番目の整数値を入力してください : 111
sum の値は 243 です。
C:\usr\c> 

Download : sample-005.c ( SJIS 版 )

sample-005.c
/*
 * 2013/07/12 sample-005.c
 */

/*
 * 代入文 (計算結果の蓄積)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-005.exe sample-005.c
 *		実行
 *			sample-005
 */

#include <stdio.h>

#include "s_print.h"

/*
 * sum_print
 *	「sum の値は QQQQ です。」と出力する。QQQQ は現在の sum の値
 */

void sum_print ( int sum ) {

	 s_print_string ( "sum の値は " );
	 s_print_int ( sum );
	 s_print_string ( " です。\n" );

}

/*
 *	main
 *
 *	1 から 5 までの数の和を出力する
 */

int main( double argc, char *argv[] )
{

	/*
 	 *
	 */

	 s_print_string ( "1 から 5 までの和は " );
	 s_print_int ( 1 + 2 + 3 + 4 + 5 );
	 s_print_string ( " です。\n" );

	/*
 	 *
	 */

	return 0;
}
sample-005.c の実行結果
C:\usr\c>sample-005
1 から 5 までの和は 15 です。
C:\usr\c> 

Download : sample-006.c ( SJIS 版 )

sample-006.c
/*
 * 2013/07/12 sample-006.c
 */

/*
 * 代入文 (計算結果の蓄積)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-006.exe sample-006.c
 *		実行
 *			sample-006
 */

#include <stdio.h>
#include "s_print.h"

/*
 *	main
 *
 *	1 から 5 までの数の和を出力する
 */

int main( double argc, char *argv[] )
{
	int sum = 1 + 2 + 3 + 4 + 5;	/* 変数を利用する */

	/*
 	 *
	 */

	 s_print_string ( "1 から 5 までの和は " );
	 s_print_int ( sum );
	 s_print_string ( " です。\n" );

	/*
 	 *
	 */

	return 0;
}
sample-006.c の実行結果
C:\usr\c>sample-006
1 から 5 までの和は 15 です。
C:\usr\c> 

Download : sample-007.c ( SJIS 版 )

sample-007.c
/*
 * 2013/07/12 sample-007.c
 */

/*
 * 代入文 (計算結果の蓄積)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-007.exe sample-007.c
 *		実行
 *			sample-007
 */

#include <stdio.h>
#include "s_print.h"

/*
 *	main
 *
 *	1 から 5 までの数の和を出力する
 */

int main( double argc, char *argv[] )
{
	int sum = 0;	/* 最初に 0 にし.. */

	/*
 	 *
	 */

	 sum += 1;		/* まず、 1 を加え.. */
	 sum += 2;		/* 次に、 2 を加え.. */
	 sum += 3;		/* 更に、 3 を加え.. */
	 sum += 4;		/* 又々、 4 を加え.. */
	 sum += 5;		/* 終に、 5 を加え.. */

	/*
 	 *
	 */

	 s_print_string ( "1 から 5 までの和は " );
	 s_print_int ( sum );
	 s_print_string ( " です。\n" );

	/*
 	 *
	 */

	return 0;
}
sample-007.c の実行結果
C:\usr\c>sample-007
1 から 5 までの和は 15 です。
C:\usr\c> 

Download : sample-008.c ( SJIS 版 )

sample-008.c
/*
 * 2013/07/12 sample-008.c
 */

/*
 * 代入文 (計算結果の蓄積)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-008.exe sample-008.c
 *		実行
 *			sample-008
 */

#include <stdio.h>
#include "s_print.h"

/*
 *	main
 *
 *	1 から 5 までの数の和を出力する
 */

int main( double argc, char *argv[] )
{
	int sum = 0;	/* 最初に 0 にし.. */
	int i = 1;		/* 最初に加えるのは 1 なので.. */
	int n = 5;		/* 最後は 5 なので.. */

	/*
 	 *
	 */

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

		/*
		 * ここから先は i が 6 になっているので、実行されない
		 */
		
	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	/*
 	 *
	 */

	 s_print_string ( "1 から " );
	 s_print_int ( n );
	 s_print_string ( " までの和は " );
	 s_print_int ( sum );
	 s_print_string ( " です。\n" );

	/*
 	 *
	 */

	return 0;
}
sample-008.c の実行結果
C:\usr\c>sample-008
1 から 5 までの和は 15 です。
C:\usr\c> 

Download : sample-009.c ( SJIS 版 )

sample-009.c
/*
 * 2013/07/12 sample-009.c
 */

/*
 * 代入文 (計算結果の蓄積)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-009.exe sample-009.c
 *		実行
 *			sample-009
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 *	main
 *
 *	1 から、n ( 一桁の自然数 ) までの数の和を出力する
 */

int main( double argc, char *argv[] )
{
	int sum = 0;	/* 最初に 0 にし.. */
	int i = 1;		/* 最初に加えるのは 1 なので.. */
	int n;

	/*
 	 *
	 */

	 s_print_string ( " 一桁の自然数を入力してください : " );
	 n = s_input_int();		/* n の値を入力 */

	/*
 	 *
	 */

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	 if ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	/*
 	 *
	 */

	 s_print_string ( "1 から " );
	 s_print_int ( n );
	 s_print_string ( " までの和は " );
	 s_print_int ( sum );
	 s_print_string ( " です。\n" );

	/*
 	 *
	 */

	return 0;
}
入力例
7
sample-009.c の実行結果
C:\usr\c>sample-009
 一桁の自然数を入力してください : 7
1 から 7 までの和は 28 です。
C:\usr\c> 

Download : sample-010.c ( SJIS 版 )

sample-010.c
/*
 * 2013/07/12 sample-010.c
 */

/*
 * 代入文 (計算結果の蓄積)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-010.exe sample-010.c
 *		実行
 *			sample-010
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 *	main
 *
 *	1 から、n ( 任意の自然数 ) までの数の和を出力する
 */

int main( double argc, char *argv[] )
{
	int sum = 0;	/* 最初に 0 にし.. */
	int i = 1;		/* 最初に加えるのは 1 なので.. */
	int n;

	/*
 	 *
	 */

	 s_print_string ( "自然数を入力してください : " );
	 n = s_input_int();		/* n の値を入力 */

	/*
 	 *
	 */

	 while ( i <= n ) {	/* i が n 以下の時は.. */
		 sum += i;		/* i の現在の値を加えたら */
		 i++;			/* i の値を更新し.. */
	 }

	/*
 	 *
	 */

	 s_print_string ( "1 から " );
	 s_print_int ( n );
	 s_print_string ( " までの和は " );
	 s_print_int ( sum );
	 s_print_string ( " です。\n" );

	/*
 	 *
	 */

	return 0;
}
入力例
7
sample-010.c の実行結果
C:\usr\c>sample-010
自然数を入力してください : 7
1 から 7 までの和は 28 です。
C:\usr\c> 

Download : sample-011.c ( SJIS 版 )

sample-011.c
/*
 * 2013/07/12 sample-011.c
 */

/*
 * while 文
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-011.exe sample-011.c
 *		実行
 *			sample-011
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 * input_nth_numner
 *	「QQQQ 番目の数値を入力してください」と出力し、整数値を入力して返す。
 */

int input_nth_numner ( int i ) {

	/*
	 * プロンプト(入力促進メッセージ)を出力し..
	 */
	 s_print_int ( i );
	 s_print_string ( " 番目の整数値を入力してください : " );

	 return s_input_int();	/* 整数を入力し、その結果を値として返す */

}

/*
 *	main
 *
 *	n ( 任意の自然数 ) の整数の和を計算する
 */

int main( double argc, char *argv[] )
{
	int sum = 0;	/* 最初に 0 にし.. */
	int i = 1;		/* 最初に加えるのは 1 なので.. */
	int n;

	/*
 	 *
	 */

	 s_print_string ( "自然数を入力してください : " );
	 n = s_input_int();		/* n の値を入力 */

	/*
 	 *
	 */

	 while ( i <= n ) {	/* i が n 以下の時は.. */
	 	 sum += input_nth_numner ( i );
		 i++;
	 }

	/*
 	 *
	 */

	 s_print_int ( n );
	 s_print_string ( " 個の整数の和は " );
	 s_print_int ( sum );
	 s_print_string ( " です。\n" );

	/*
 	 *
	 */

	return 0;
}
入力例
5
123
456
78
901
23
sample-011.c の実行結果
C:\usr\c>sample-011
自然数を入力してください : 5
1 番目の整数値を入力してください : 123
2 番目の整数値を入力してください : 456
3 番目の整数値を入力してください : 78
4 番目の整数値を入力してください : 901
5 番目の整数値を入力してください : 23
5 個の整数の和は 1581 です。
C:\usr\c> 

Download : sample-012.c ( SJIS 版 )

sample-012.c
/*
 * 2013/07/12 sample-012.c
 */

/*
 * while 文 ( n 回の繰返し )
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-012.exe sample-012.c
 *		実行
 *			sample-012
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 *	main
 *
 *	0 から n - 1 までの数を出力する。
 */

int main( double argc, char *argv[] )
{
	int i;
	int n;

	/*
 	 *
	 */

	 s_print_string ( "自然数を入力してください : " );
	 n = s_input_int();		/* n の値を入力 */

	/*
 	 *
	 */

	 i = 0;
	 while ( i < n ) {			/* i が n 未満の時は.. */
	 	s_print_int ( i );		/* i を出力し.. */
	 	s_print_char ( ' ' );	/* 間を空ける */
		i++;
	 }
	 s_print_newline();			/* 最後に改行 */

	/*
 	 *
	 */

	return 0;
}
入力例
5
sample-012.c の実行結果
C:\usr\c>sample-012
自然数を入力してください : 5
0 1 2 3 4 
C:\usr\c> 

Download : sample-013.c ( SJIS 版 )

sample-013.c
/*
 * 2013/07/12 sample-013.c
 */

/*
 * while 文 ( n 回の繰返し )
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-013.exe sample-013.c
 *		実行
 *			sample-013
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 *	main
 *
 *	n 個の '*' を出力する
 */

int main( double argc, char *argv[] )
{
	int i;
	int n;

	/*
 	 *
	 */

	 s_print_string ( "自然数を入力してください : " );
	 n = s_input_int();		/* n の値を入力 */

	/*
 	 *
	 */

	 i = 0;
	 while ( i < n ) {			/* i が n 未満の時は.. */
	 	s_print_char ( '*' );	/* '*' を書く */
		i++;
	 }
	 s_print_newline();			/* 最後に改行 */

	/*
 	 *
	 */

	return 0;
}
入力例
5
sample-013.c の実行結果
C:\usr\c>sample-013
自然数を入力してください : 5
*****
C:\usr\c> 

Download : sample-014.c ( SJIS 版 )

sample-014.c
/*
 * 2013/07/12 sample-014.c
 */

/*
 * while 文 ( n 回の繰返し )
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-014.exe sample-014.c
 *		実行
 *			sample-014
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 *	main
 *
 *	サイズ n - 1 個の三角形を出力する
 */

int main( double argc, char *argv[] )
{
	int i;
	int n;

	/*
 	 *
	 */

	 s_print_string ( "自然数を入力してください : " );
	 n = s_input_int();		/* n の値を入力 */

	/*
 	 *
	 */

	 i = 0;
	 while ( i < n ) {				/* i が n 未満の時は.. */
 		int j = 0;

		while ( j < i ) {			/* j が i 未満の時は.. */
			s_print_char ( '*' );
			j++;
		}
		s_print_newline();			/* 最後に改行 */

		i++;
	 }

	/*
 	 *
	 */

	return 0;
}
入力例
5
sample-014.c の実行結果
C:\usr\c>sample-014
自然数を入力してください : 5

*
**
***
****
C:\usr\c> 

Download : sample-015.c ( SJIS 版 )

sample-015.c
/*
 * 2013/07/12 sample-015.c
 */

/*
 * while 文 と再帰
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-015.exe sample-015.c
 *		実行
 *			sample-015
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 *	while_func ( int i, int n )
 *
 *	n - 1 個の '*' を出力する
 */

void while_func ( int i, int n ) {

/*
		 while ( i < n ) {
		 	s_print_char ( '*' );
			i++;
		 }
*/

		if ( i < n ) {				/* while → if */
		 	s_print_char ( '*' );	/* 同じ */
			i++;					/* 同じ */
			while_func ( i, n );	/* 再帰 */
		}

		/* 空っぽの else は省略可能 */
		/* else {} */
}

/*
 *	while_func_2 ( int i )
 *
 *	n 個の '*' を出力する
 */


/*
 *	main
 *
 *	n 個の '*' を出力する
 */

int main( double argc, char *argv[] )
{
	int i;
	int n;

	/*
 	 *
	 */

	 s_print_string ( "自然数を入力してください : " );
	 n = s_input_int();		/* n の値を入力 */

	/*
 	 *
	 */

	 /*
		 i = 0;
		 while ( i < n ) {
		 	s_print_char ( '*' );
			i++;
		 }
	*/

	/* while 文と同等な関数を再帰で作成する */
	while_func ( 0, n );	/* 引数の 0 は、代入文 「i = 0」に相当 */
	s_print_newline();		/* 最後に改行 */


	/*
 	 *
	 */

	return 0;
}
入力例
5
sample-015.c の実行結果
C:\usr\c>sample-015
自然数を入力してください : 5
*****
C:\usr\c> 

Download : sample-016.c ( SJIS 版 )

sample-016.c
/*
 * 2013/07/12 sample-016.c
 */

/*
 * while 文 と再帰
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o sample-016.exe sample-016.c
 *		実行
 *			sample-016
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 *	while_func ( int i, int n )
 *
 *	n - 1 個の '*' を出力する
 */

void while_func ( int j, int i ) {

/*
		 while ( j < i ) {
		 	s_print_char ( '*' );
			j++;
		 }
*/

		if ( j < i ) {				/* while → if */
		 	s_print_char ( '*' );	/* 同じ */
			j++;					/* 同じ */
			while_func ( j, i );	/* 再帰 */
		}

		/* 空っぽの else は省略可能 */
		/* else {} */
}

/*
 *	while_func_2 ( int i, int n )
 */

void while_func_2 ( int i, int n ) {

/*
		 while ( i < n ) {
			i++;
			while_func ( 0, i );
			s_print_newline();
		 }
*/

	if ( i < n ) {				/* while → if */
		while_func ( 0, i );
		s_print_newline();
		i++;					/* 同じ */
		while_func_2 ( i, n );	/* 再帰 */
	}

	/* 空っぽの else は省略可能 */
	/* else {} */
}


/*
 *	main
 *
 *	サイズ n - 1 個の三角形を出力する
 */

int main( double argc, char *argv[] )
{
	int i;
	int n;

	/*
 	 *
	 */

	 s_print_string ( "自然数を入力してください : " );
	 n = s_input_int();		/* n の値を入力 */

	/*
 	 *
	 */

	 while_func_2 ( 0, n );

	/*
 	 *
	 */

	return 0;
}
入力例
5
sample-016.c の実行結果
C:\usr\c>sample-016
自然数を入力してください : 5

*
**
***
****
C:\usr\c> 

講議中に作成したプログラム

本日の課題

課題 20130712-01 : 非負の整数を幾つか入力し、その和を求めて、表示する

Download : 20130712-01.c ( SJIS 版 )

20130712-01.c
/*
 * 課題 20130628-01
 *
 * 2013/06/28 20130628-01-QQQQ.c
 *
 *	キーボードから三つの整数を入力し、小さい順に出力する
 */

#include <stdio.h>

#include "s_input.h"
#include "s_print.h"

/*
 * 2013/06/28 20130628-01-QQQQ.c
 */

/*
 * 代入文 (計算結果の蓄積)
 *
 * 利用方法
 *		コンパイル
 *			cc -Ic:\usr\c\include -o BASENAME.exe 20130628-01-QQQQ.c
 *		実行
 *			BASENAME
 */

#include <stdio.h>

#include "s_print.h"
#include "s_input.h"

/*
 * input_nth_numner
 *	「QQQQ 番目の数値を入力してください」と出力し、整数値を入力して返す。
 */

int input_number ( void ) {

	/*
	 * プロンプト(入力促進メッセージ)を出力し..
	 */

	 s_print_string ( "正の数を入力してください(0 以下の数で終了) : " );

	 return s_input_int();	/* 整数を入力し、その結果を値として返す */

}

/*
 *	main
 *
 *	複数の正の数和を計算する(負の数を入力すると終わり)
 */

int main( double argc, char *argv[] )
{
	int sum = 0;	/* 最初に 0 にし.. */
	int num;

	/*
 	 *
	 */

	 num = input_number();	/* 取り敢えず、入力しないとなんとも.. */

	 while ( num > 0 ) {		/* 入力された数が正ならば.. */

	/*
	**	 この部分を完成させなさい
	*/

		 num = input_number();	/* 次の入力を行う */
	 }

	/*
 	 *
	 */

	 s_print_string ( "和は " );

	/*
	**	 この部分を完成させなさい
	*/

	 s_print_string ( " です。\n" );

	/*
 	 *
	 */

	return 0;
}
入力例
12
34
987
2
13
-1
20130712-01.c の実行結果
C:\usr\c\> 20130712-01-QQQQ
正の数を入力してください(0 以下の数で終了) : 12
正の数を入力してください(0 以下の数で終了) : 34
正の数を入力してください(0 以下の数で終了) : 987
正の数を入力してください(0 以下の数で終了) : 2
正の数を入力してください(0 以下の数で終了) : 13
正の数を入力してください(0 以下の数で終了) : -1
和は 1048 です。
C:\usr\c\>