フリーランスプログラマーになるには 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文で囲っても同じことができますね。
いいなと思ったら応援しよう!
サポートしていただけると何か、こう、認められたようで大変嬉しいです。