Powered by SmartDoc

ソフトウェア概論B (2011/05/06)
Ver. 1.0

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

目次

講義資料

当日の OHP 資料

当日のOHP資料です。

追加ファイル

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

sample-001

Download : sample-001.c ( SJIS 版 )

sample-001.c
/*
 * 2011/05/06 sample-001.c
 */

/*
 * 長いプログラムを複数に分割する
 * 	変更前
 */

#include <stdio.h>

int main ( void ) {

  /* 16 回同じ亊をする */

  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );

  return 0;
}
sample-001.c の実行結果
C:\usr\c\> sample-001
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
C:\usr\c\> 

sample-002

Download : sample-002.c ( SJIS 版 )

sample-002.c
/*
 * 2011/05/06 sample-002.c
 */

/*
 * 長いプログラムを複数に分割する
 * 	変更後
 */

#include <stdio.h>

void fourTimes() {
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
}

int main ( void ) {

  /* 16 回 = 4 × 4 回同じ亊をする */

  fourTimes();
  fourTimes();
  fourTimes();
  fourTimes();

  return 0;
}
sample-002.c の実行結果
C:\usr\c\> sample-002
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
C:\usr\c\> 

sample-003

Download : sample-003.c ( SJIS 版 )

sample-003.c
/*
 * 2011/05/06 sample-003.c
 */

/*
 * 長いプログラムを複数に分割する
 * 	変更後
 */

#include <stdio.h>

void fourTimes() {
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
  printf ( "Hello, World\n" );
}

void fourFourTimes() {
  fourTimes();
  fourTimes();
  fourTimes();
  fourTimes();
}

int main ( void ) {

  /* 64 回 = 4 × 4 × 4 回同じ亊をする */

  fourFourTimes();
  fourFourTimes();
  fourFourTimes();
  fourFourTimes();

  return 0;
}
sample-003.c の実行結果
C:\usr\c\> sample-003
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
C:\usr\c\> 

本日の課題

[課題1]「Hello,自分の名前」を1000回以上出力するC言語のプログラム

課題プログラム内の「/*名前:ここ*/」の部分を書き換えてプログラムを完成させます。なお「名前」の部分が同じ所には同じものが入ります。

課題 20110506-01

Download : 20110506-01.c ( SJIS 版 )

20110506-01.c
/*
 * 20110506-1-QQQQ.c
 *	「Hello, 自分の名前」を 1000 回以上出力するプログラム
 */

#include <stdio.h>

/*
 * sub
 */

void print1() {
  printf ( /* q:ここ */ );
}

void print2() {
  print1();
  print1();
}


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


void print1024() {
  print512();
  print512();
}

/*
 * main
 */

int main ( void ) {

  print1024();

  return 0;
}
20110506-01.c の実行結果
C:\usr\c\> 20110506-01
Hello 栗野
Hello 栗野
...
Hello 栗野
C:\usr\c\> 

[課題2]童謡を演奏するC言語のプログラム

課題 20110506-02

Download : 20110506-02.c ( SJIS 版 )

20110506-02.c
/*
 * 20110506-2-QQQQ.c
 *	童謡(かえるのうた)を演奏するプログラム
 */

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

/*
 * kaeru
 */

void kaeru() {

  /* カエルの歌 : http://homepage2.nifty.com/rit-k/Work1.htm
ドレミファミレド  ミファソラソファミ
ド ド ド ド   ドドレレミミファファミ レ ド
  */

  s_midi_length ( S_MIDI_LEN_4 );
  s_midi_play ( S_MIDI_C4 );	/* ド */
  s_midi_play ( S_MIDI_D4 );	/* レ */
  s_midi_play ( S_MIDI_E4 );	/* ミ */
  s_midi_play ( S_MIDI_F4 );	/* ファ */
  s_midi_play ( S_MIDI_E4 );	/* ミ */
  s_midi_play ( S_MIDI_D4 );	/* レ */
  s_midi_play ( S_MIDI_C4 );	/* ド */

  s_midi_play ( S_MIDI___ );	/* 休 */


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


  s_midi_length ( S_MIDI_LEN_4 );
  s_midi_play ( S_MIDI_E4 );	/* ミ */
  s_midi_play ( S_MIDI_D4 );	/* レ */
  s_midi_play ( S_MIDI_C4 );	/* ド */


}

/*
 * main
 */

int main ( void ) {

  kaeru();

  return 0;
}
20110506-02.c の実行結果
C:\usr\c\> 20110506-02
C:\usr\c\> 

[課題3]童謡の歌詞を出力するC言語のプログラム

課題 20110506-03

Download : 20110506-03.c ( SJIS 版 )

20110506-03.c
/*
 * 20110506-3-QQQQ.c
 *	歌詞を出力する
 */

#include <stdio.h>

/*
 * 「一番星みつけた」
 *	(C) 生沼勝作詞(注)・信時潔作曲/文部省唱歌(一年)
 *	http://www.mahoroba.ne.jp/~gonbe007/hog/shouka/ichibanboshi.html
 */

void uta ( char *ichi, char *basyo, char *ki ) {

	printf ( ichi );
        printf ( "番星みつけた。\n" );


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


	printf ( ki );
	printf ( "の木のうえに。\n" );
}

void itibanboshi() {

	uta ( "一", "森", "杉" );
	printf ( "\n" );

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

}

/*
 * main
 */

int main ( void ) {

  itibanboshi();

  return 0;
}
20110506-03.c の実行結果
C:\usr\c\> 20110506-03
一番星みつけた。
あれあの森の
杉の木のうえに。

二番星みつけた。
あれあのどての
柳の木のうえに。

三番星みつけた。
あれあの山の
松の木のうえに。
C:\usr\c\> 

Links