フリーランス7見出し

フリーランスプログラマーになるには 11プログラミングをしてみる - 繰り返し2

このノートはフリーランスプログラマーとはどういったものなのか、どうしたらなれるのか、またどのように生計をたてるのか等を、私の経験をもとに実情を解説するシリーズの一つです。

今回は前回に続き繰り返し処理をJavaScriptでプログラミングしながら解説します。

ATOMにprogram4.jsを作成し、コーディングすると楽だと思います。予約文字とかに色つきますし。ATOMでのファイル作成手順は上記の初回を参照してください。

練習問題1
for文を使って以下の画像のように表示してください。

ヒント
星が減っていく前半、星が増えていく後半に分けて考えると良いかと思います。

答え

let maxNumber = 9;
let middle = maxNumber / 2;
for(let i = 0; i < maxNumber; i ++){
 let stars = '';
 // 星が減っていく部分です。
 for(let d = 0; d < middle - i; d++){
   stars += '*';
 }
 // 半分を超えたとき、starsにはまだ何も設定されていないので一つ足しておきます。
 if(stars === ''){
   stars = '*';
 }
 // 星が増えていく部分です。
 for(let d = middle; d < i; d++){
   stars += '*';
 }
 console.log(stars);
}

解説
簡単にできるかな、と取り組んでみたら中々うまくできずに泥臭いコーディングになってしまいました。もう少しうまいことできそうですが、ポイントは外側のfor文の変数の値が増えていくにつれて、最初は星が減っていくのに半分以降は増えるところかと。ここの計算を上手いことできるとすっきりとしたコーディングになりそうです。

JavaScriptの標準関数であるMath.abs関数(絶対値を取得できる関数。つまり2なら2を、-2なら2を取得できる)を使用するともう少しすっきり記述できます。

let maxNumber = 9;
let middle = maxNumber / 2;
for(let i = 0; i < maxNumber; i ++){
 let stars = '';
 for(let d = 0; d < Math.abs(middle - i); d++){
   stars += '*';
 }
 if(i > middle){
   stars += '*';	// 半分以降は追加で星を足す
 }
 console.log(stars);
}


練習問題2
for文を使って以下の画像のように表示してください。

ヒント
練習問題1と同様に星が増えていく前半、星が減っていく後半に分けて考えると良いかと思います。

答え

let maxNumber = 9;
let middle = maxNumber / 2;
for(let i = 0; i < maxNumber; i ++){
 let stars = '';
 // 星が増えていく部分です。
 for(let d = 0; i < middle && d < i+1; d++){
   stars += '*';
 }
 // 星が減っていく部分です。
 for(let d = 0; middle <= i && d < maxNumber - i; d++){
   stars += '*';
 }  
 console.log(stars);
}

解説
ネストしたfor文の条件に「i < middle」と「middle <= i」を設定して半分未満、半分以上を制御しています。ネストしたfor文をif文で囲っても同じことができますね。

いいなと思ったら応援しよう!

oyakokurashi
サポートしていただけると何か、こう、認められたようで大変嬉しいです。