文字で簡単な図形を表現するプログラム
【1】「*を使って7×7の正方形を描く,二重ループ用いたをプログラムを作成しなさい」という課題を考えよう。
この課題を素直に言葉で表して,C言語で表現できる形に整えて,プログラムに至るまでを考えよう。
*を7×7の正方形になるように表示する
↓
7この*を改行しながら,7回表示する。
↓
次の事を7回行う {
7個の*を表示する
改行する
}
↓
次の事を7回行う {
次のことを7回行う {
*を1つ表示する
}
改行する
}
↓
for (i=0; i<7; i++) {
for (j=0; j<7; j++) {
printf("*");
}
printf("\n");
}
↓
変数宣言が必要なので追加
int i,j;
for (i=0; i<7; i++) {
for (j=0; j<7; j++) {
printf("*");
}
printf("\n");
}
↓
Cプログラムとして整える
#include <stdio.h>
int main()
{
int i,j;
for (i=0; i<7; i++) {
for (j=0; j<7; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
出来上がり
【2】 正奇数nを与えて「*」「/」で図形を描くプログラムをつくる時の考え方をみてみよう。
*********
/*******+
//*****++
///***+++
////*++++
考え方
最初から正奇数nでプログラムを作るのは難しいので,
具体的にn=9のときn=7のときを考えて,
nがどんな数でもよいように一般化する。
1.n=9の時だけ使えるプログラムを考えて図形を描いてみよう。
プログラムを書く前に,日本語でこの作業を書いてみると次のようになる
「*」を9個書きなさい。 「/」を1個書きなさい。 「*」を7個書きなさい。 「+」を1個書きなさい。 改行しなさい。 「/」を2個書きなさい。 「*」を5個書きなさい。 「+」を2個書きなさい。 改行しなさい。 「/」を3個書きなさい。 「*」を3個書きなさい。 「+」を3個書きなさい。 改行しなさい。 「/」を4個書きなさい。 「*」を1個書きなさい。 「+」を4個書きなさい。 改行しなさい。 |
となる。これをそのままプログラムにすると次のようになるが,汎用性がまったくないプログラムが出来上がる。
#include <stdio.h> |
個々の作業が何行目なのかわかるようにすると
(1行目)「*」を9個書きなさい。 |
となる。変数化するのに都合よいように,1行目でなく0行目から数え始めると
(0行目)「/」を0個書きなさい。 「*」を9個書きなさい。 「+」を0個書きなさい。 改行しなさい。 |
となり,これをプログラムにすると次のようになる。
#include <stdio.h> |
この図形を描く作業では,4行の表示を行うが,その1行分の作業は次のようになっている。
for (j=0; j<◆; j++) printf("/"); for (j=0; j<■; j++) printf("*"); for (j=0; j<◆; j++) printf("+"); printf("\n"); |
一般法則化するために i 行目について記述すると次のようになる
( i 行目)「/」を i 個書きなさい。 「*」を (9-2*i) 個書きなさい。 「+」を i 個書きなさい。 改行しなさい。 |
これを用いてプログラム化すると
#include <stdio.h> |
2.次にn=7の時だけ使えるプログラムを考えて図形を描いてみよう。
(0行目)「/」を0個書きなさい。 「*」を7個書きなさい。 「+」を0個書きなさい。 改行しなさい。 (1行目)「/」を1個書きなさい。 「*」を5個書きなさい。 「+」を1個書きなさい。 改行しなさい。 (2行目)「/」を2個書きなさい。 「*」を3個書きなさい。 「+」を2個書きなさい。 改行しなさい。 (3行目)「/」を3個書きなさい。 「*」を1個書きなさい。 「+」を3個書きなさい。 改行しなさい。 |
( i 行目)「/」を i 個書きなさい。 「*」を (7-2*i) 個書きなさい。 「+」を i 個書きなさい。 改行しなさい。 |
これをプログラム化すると
#include <stdio.h> |
作業する行数はn=9の時5行,n=7の時4行,n=5の時3行....となるので,行数nlinesは(n+1)/2
となる
(0行目)「/」を0個書きなさい 「*」をn個書きなさい 「+」を0個書きなさい 改行しなさい |
一般的な i 行目の作業は
( i 行目)「/」を i 個書きなさい。 「*」を n-2*i 個書きなさい。 「+」を i 個書きなさい。 改行しなさい |
#include <stdio.h> int main() printf("正奇数を入力してね :
"); |