2次方程式の実数解を求めるプログラムなど。[Javascript]

 少し前にプログラミング学習サイト「progate」の無料レッスン部分を一通り済ませたことで、プログラミングの初歩部分(変数の扱い、条件分岐、繰り返しぐらいまで)をある程度把握できました。

 最近は、プログラミングに慣れることも兼ねて、progeteで扱ったプログラミング言語の1つであるJavascriptで簡単なソースコード(プログラム文)をいくつか書いては、正常に動くかどうか試すようなことをしています。

 試しに書いてみたJavascriptのソースコードは、次のようなものがあります。

10までの合計を求める。

 繰り返し処理を使って、連続する整数を1+2+…と順番に加算し、10までの合計を求めるプログラムです。do while文(最初の1回は必ず実行する繰り返し処理)を使ってます。

//10までの合計を求める。
 let n = 1;
 let sum = 0;
 console.log("整数nまでの合計\n");
 do{
      sum += n;
      console.log(n + "までの合計は" + sum + "です。\n");
      n++;
 } while(n <= 10);

 変数nの値を変数sumに加算して代入することで、1から連続している整数nまでの合計を求めます。そして、求めた整数nまでの合計をconsole.logによってコンソールに出力していきます。
 出力が済んだら、nの値を+1してから、繰り返し判定を行います。nが10以下であればループの最初に戻って繰り返し処理を続け、nが10を超えていたらループを抜けて処理を終了します。

 このプログラムで処理を行ったところ、次のように コンソール に出力されました。

do~while文で、連続した整数nまでの合計を求めるプログラム。

 各整数までの合計が正しく出力されています。

2次方程式の実数解を求める。

 中学~高校の数学で習った2次方程式 ax^2+bx+c=0 の解を求めるプログラムです。条件分岐(if~else if~else文)を使います。今回は実数解のみを対象にしており、判別式が0未満の場合は「実数解なし」の処理結果になります。

 今回は2次方程式 x^2-5x+4=0 (a=1,b=-5,c=4)の実数解を求めてみます。

//2次方程式の実数解
 let a = 1;
 let b = -5;
 let c = 4;
 let d = Math.pow(b , 2) - (4 * a * c);
 let x1;
 let x2;
 console.log("2次方程式 ax^2+bx+c=0 について、\n" + "a=" + a +",b=" + b + ",c=" + c +"の場合、\n");
 if(d > 0){
    x1 = ((-1) * b + Math.sqrt(d)) / (2 * a);
    x2 = ((-1) * b - Math.sqrt(d)) / (2 * a);
    console.log("実数解は、" + x1 + "と" + x2 + "です。\n");
 } else if(d == 0) {
    x1 = (-1) * b / (2 * a);
    console.log("実数解は、" + x1 + "です。\n");
 } else {
    console.log("実数解はありません!\n");
 }

 ここで、Math.pow(x , n)は、xのn乗を求めるJavascript関数、 Math.sqrt(x)は、xの平方根を求めるJavascript関数です。

 判別式(b^2-4ac)の変数dが、d>0、d=0、d<0のどれかによって条件が分岐します。

d>0であれば、2つの実数解を計算して出力します。
d=0であれば、1つの実数解(重解)を出力します。
d<0であれば、「実数解はありません!」と出力します。

 今回は判別式(変数d)が、d>0なので、2つの実数解を求める処理を行います。そして、「実数解は、4と1です。」が コンソールに出力されます。

2次方程式の実数解を求めるプログラム。

九九の表を出力するプログラム。

 繰り返し処理(for文)を2重に使うことで、九九の表を出力します。

//九九の表
console.log("九九の表");
   for(let i = 1; i <= 9; i++){
    for(let j = 1; j <= 9; j++){
     let str = ('00' + (i * j)).slice(-2);
     process.stdout.write(str + " ");  
    }
    console.log("");
}

 繰り返し処理によってそれぞれの段について1~9まで数字を掛けていきます。それぞれの段が9まで終わったら改行します。

 掛け算の結果の桁がバラバラだと表が崩れてしまうので、2桁に揃えて出力するようにしています。
 掛け算の結果(i * j)の前に’00’(揃えたい桁数分の0)を付けることで文字列に変換し、.sline(-2)メソッドで下2桁を取り出します。
 sline(x)メソッドは、x>0だと先頭から数値分の文字を取り出し、x<0だと、末尾から(-を取った)数値分だけ文字を取り出す処理を行います。

 掛け算の結果を2桁に揃えたことで、次のような形が崩れずに整った九九の表が出力されました。

 少しでも早いうちにJavascriptを使いこなせるようになりたいです。そのためには、ひたすら演習などで様々なプログラム文を書いて慣れていくしかなさそうです。

にほんブログ村 ゲームブログへ

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする