Powered by SmartDoc

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

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

目次

講義資料

当日の OHP 資料

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

本日の課題

課題プログラム内の「/*名前:ここ*/」の部分を書き換え「/*この部分を完成させなさい*/」の部分にプログラムを追加して、プログラムを完成させます。

課題 20200710-01 : 異る国の挨拶をする ( switch 構文 版 )

Download : 20200710-01.c

20200710-01.c
/*
 * 課題 CNAME-01
 *
 * CDATE FILENAME
 *
 *	キーボードから一文字入力し、その文字によって異る国の挨拶をする
 */

#include <stdio.h>

/*
 * hello ( char contry )
 *	char contry : 国を表す一文字
 *		j : 日本
 *		e : 英語
 *		c : 中国
 *		f : フランス語
 *		g : ドイツ語
 */

void hello ( char cmd ) {

	switch ( cmd ) {
	case 'j':					/* 'j' の時は、日本語にする */
		printf ( "こんにちは\n" );
		break;
    case 'e':					/* 'e' の時は、英語にする */

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

		break;
	case 'c':					/* 'c' の時は、中国語にする */
		printf ( "ニイハオ\n" );

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

	case 'f':					/* 'f' の時は、フランス語にする */
		printf ( "Bonjour\n" );
		break;

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

		printf ( "Guten tag\n" );
		break;
	default:					/* どれでもなければ.. */
		printf ( "???\n" );
		break;					
	}
}

/*
 *	main
 */

int main( void )
{

	printf ( "国を表す文字を入力してください\n" );
	printf ( "\tj\t日本\n" );
	printf ( "\te\t英語\n" );
	printf ( "\tc\t中国\n" );
	printf ( "\tf\tフランス\n" );
	printf ( "\tg\tドイツ\n" );

	hello ( getchar() );	/* getchar() で文字を入力し、それに対応する結果を出す */

	 return 0;
}
入力例
f
20200710-01.c の実行結果
$ ./20200710-01-QQQQ.exe
国を表す文字を入力してください
	j	日本
	e	英語
	c	中国
	f	フランス
	g	ドイツ
Bonjour
$ 

課題 20200710-02 : if 構文の入れ子 ( 文字種を判定する関数 )

Download : 20200710-02.c

20200710-02.c
/*
 * 20200710-02-QQQQ.c
 *	入力された文字の字種を答える関数
 */

#include <stdio.h>

/*
 * print_chractor_type ( char ch )
 *	引数で指定された文字の種類 ( 大英文字、小英文字、数字、その他 )
 *  を判定し、その種類を表示する
 */

void print_chractor_type ( char ch ) {

	/* まず、英大文字かどうかを判定 */

	if ( 'A' <= ch ) {			/* 'A' 以上で.. */
		if ( ch <= 'Z' ) {		/* 'Z' 以下なので.. */
			putchar ( ch );
			printf ( " は、英大文字です。\n" );

			return;	/* ここで関数を終了 ( 返り値はない ) */

		} /* else {} */ /* else 節は省略 */
	} /* else {} */ /* else 節は省略 */

	/* まず、次は英小大かどうかを判定 */

	if ( 'a' <= ch ) {

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

	}

	/* 最後に、数字かどうかを判定 */

	if ( '0' <= ch ) {
		if ( ch <= '9' ) {
			putchar ( ch );
			printf ( " は、数字です。\n" );

			return;
		}
	}

	/* ここまで何かの条件が成立すれば return で終了している筈 */
	/* ここにきたという事は、どの条件も成立していないので、「その他」と判定して良い */

	putchar ( ch );
	printf ( " は、その他です。\n" );

	return;	/* この return は不要だが、省略しない方が良い */
}


/*
 * main
 */

int main ( void ) {

	printf ( "キーボードから一文字入力すれば、文字の種類を表示します : " );

	print_chractor_type ( getchar() );

	return 0;
}
入力例
v
20200710-02.c の実行結果
$ ./20200710-02-QQQQ.exe
キーボードから一文字入力すれば、文字の種類を表示します : v は、英子文字です。
$