- フローチャート
- if
- switch
- for
- while
- do while
- break, continue
- 配列と応用
フローチャート
- フローチャートとは?
プログラムのロジックを記述するために使用される標準的なグラフィックのセット。
- なぜフローチャートが使われるのですか?
通常、フローチャートはプログラムの流れを分析するもので、フローチャートを使えば、論理的な問題を分析するのが非常に簡単になります。
- マークダウンでフローチャートを描く
図を通して、それぞれの代表の意味の構文を示すために
構文のプロセスを表現するために、円の一般的な使用の開始と終了は、start()、ed()
描画方向:構文グラフTDは、上から下へフローチャートを描き始めることを意味します。
判定: 構文: {} ,判定はその中に記述
プロセス process:: 構文 [] ,プロセスは内部に書き込み
ポインティング: 構文 -->, 判定が真ならどのステップを実行するか、偽ならそのプロセスを指します。
上記のフローチャートはこのスタイルで描かれています:
桃を買ってスイカを売るという典型的な例を挙げると、AはBに桃を2個買ってこい、スイカが売っていたら1個買ってこい、と言います。
Aの考え:フローチャートの表示:Bの考え:フローチャートの表示:上記はフローチャートの描き方ですが、時にはまだかなり重要なことがあります、あなたは個人的に自分の波をテストすることができます。ここで少し理解しましょう。
if
if判定は、JavaScriptのロジックとの最初の接点であり、条件判定を行うためのプロジェクトの背面が不可欠ですが、それは非常に単純です。その構文と書き方を見てみましょう。
例えば
if (条件1) {
} else if (条件2) {
} else if (条件3) {
} else {
}
- 注意点
- ある条件が満たされた場合、それ以降の条件はすべて無視されます。
例
var score = 95;
// A:>=90 B: >=70 <90 C: >=50 <70 D: <50
//コードの簡易版
if (スコア >= 90) {
console.log("A");
} else if (score >= 70) {
//この条件が実行された場合、最初のものはスコアを満たさないことを意味する。<90.同等:スコア >= 70 && score < 90
console.log("B");
} else if (score >= 50) {
console.log("C");
} else {
console.log("D");
}
//単純化されていないバージョン
if (スコア >= 90) {
console.log("A");
} else if (score >= 70 && score < 90) {
console.log("B");
} else if (score >= 50 && score < 70) {
console.log("C");
} else {
console.log("D");
}
- else if 複数の
- elseは1でも0でもかまいません。
- elseは改行してもしなくてもかまいません。
- ブロックに文が1つしかない場合は、中括弧を省略できます。
- ifは一度しか書くことができませんが、複数のifはすべて実行されるため、実行効率に影響します。
例えば
if (score >= 90) {
console.log("A");
}
if (score >= 70 && score < 90) {
console.log("B");
}
if (score >= 50 && score < 70) {
console.log("C");
}
if (score < 50) {
console.log("D");
}
// 複数のifがある場合、それぞれのifが実行される。 もしelse ifであれば、最初のifがtrueになった後、それ以降のifは実行されない。
例
if (!x) {
x = 0;
}
if (x++ >= 1) {
var x; // 条件が満たされているか否かにかかわらず、可変ライフ・エンハンスは発生する。
x++;
} else if (++x >= 2) {
x++;
} else {
x--;
}
console.log(x); // 3
理論的な知識のこの部分の判断がそんなに多ければ、この部分のためのある練習問題を次に見て下さい。光学は、無駄に等しい、練習しないでください。これ以上言及することなく、質問に。
- もし判断練習問題
- ユーザーに数値を入力させ、キャンセルをクリックされた場合はキャンセルを出力し、OKをクリックされた場合は、入力に基づいて入力が正しいかどうかを判断します。
// ユーザー操作を待ち、ユーザー操作の結果を変数resultに保存する。
var result = prompt("年齢を入力する");
if (result === null) {
// なぜ使うのか? === == == 結果が0の場合、nullは0に変換され、これも等しい。エラーが発生する。 ===値も型も同一でなければならない。
console.log("キャンセルをクリックした。");
} else {
// result = +result; //数値に変換する
if (isNaN(+result)
result === '') {
//普通の数字ではない。
console.log("入力エラー");
} else {
console.log(result, typeof result);
}
}
- ユーザーに3桁の数字を入力させ、3桁の数字でない場合はエラー入力を促し、3桁の数字である場合は、その数字が13で割り切れるかどうかを判定します。
var number = +prompt("3桁の数字を入力する");
if (isNaN(number)
number < 100
number > 999) {
console.log("入力エラー");
} else {
if (number % 13 === 0) {
console.log("13で割り切れる")
} else {
console.log("13で割り切れない")
}
}
- ユーザに評点を入力させ、その評点がどの範囲に属するかを判定し、結果を出力します。ユーザが0-100以外の数値を入力した場合、入力が間違っていると出力します。
var score = +prompt("グレードを入力する");
if (isNaN(score)
score < 0
score > 100) {
console.log("入力エラー");
} else {
if (score >= 90) {
console.log("A")
} else if (score >= 70) {
console.log("B")
} else if (score >= 60) {
console.log("C")
} else if (score >= 40) {
console.log("D")
} else {
console.log("E");
}
}
- 世界保健機関(WHO)が推奨する計算方法によると
男性の標準体重は×70﹪で計算されます。
女性の標準体重は×60%で計算されます。
標準体重のプラスマイナス10%を標準体重、10%未満を痩せすぎ、10%以上を太りすぎとします。
ユーザが性別、身長、体重を入力して、ユーザの健康状態を判定できるプログラムを書きなさい。
健康状態には3種類あります:
- あなたの体重は正常です。
- あなたの体は痩せています。
- 太っている方は運動を強化してください。
var height = +prompt("身長を入力する");
var weight = +prompt("体重を入力する");
var gender = prompt("性別を入力する");
if (isNaN(height)
isNaN(weight)
gender !== "男" && gender !== "女") {
console.log("入力エラー");
} else {
var standardWeight; //標準体重
もし(性別 === "男") {
standardWeight = (height - 80) * 0.7;
} else {
standardWeight = (height - 70) * 0.6;
}
if (weight < standardWeight * 0.9) {
console.log("やせ細った体、栄養を強化してほしい");
} else if (weight > standardWeight * 1.1) {
console.log("肥満なので運動してほしい")
} else {
console.log("体重は正常だ。");
}
}
- ある財務管理会社が、以下のサービスルールで財務管理サービスを開始しました:
利用者の資金管理額が50万元以下の場合、年利率は4%で計算されます。
ユーザーの資産管理額が50万元以上の場合、年間リターンは4.5%で計算されます。
利用者の資産運用額が200万元を超える場合、資産運用収入に加え、さらに収入額の10%が加算されます。
利用者が資産運用額と資産運用年数を入力し、満期後のリターンを計算できるプログラムを書いてください。
var money = +prompt("金額を入力する");
var year = +prompt("財務管理の年数を入力する");
if (isNaN(money)
isNaN(year)
money <= 0
year <= 0) {
console.log("入力エラー");
} else {
var rate = 0.04; // 年利 4%
if (money >= 500000) {
rate = 0.045;
}
var earnMoney = money * rate * year; // 収益
もし(お金 >= 2000000) {
earnMoney += earnMoney * 0.1;
}
console.log(`総収入は以下の通りである:${earnMoney}`);
}
- ユーザとコンピュータの間で、ユーザがはさみ、石、布を入力し、コンピュータのパンチと比較して勝敗を判定する推理ゲームを書いてください。
var fist = prompt(" ");
if (fist === " "
fist === " "
fist === "布") {
//
//1. アナログ・コンピューターがパンチを放つ
var rad = Math.random(); // 0~1
var pcFist; //コンピューターによるパンチ結果
もし(ラド < 0.333) {
pcFist = " ";
} else if (rad < 0.6666) {
pcFist = " ";
} else {
pcFist = "布";
}
//2. 勝敗を比較する
console.log(` ${fist}, コンピューターがパンチを放つ:${pcFist}`);
if (fist === " " && pcFist === "布"
fist === "布" && pcFist === " "
fist === " " && pcFist === " ") {
console.log("君の勝ちだ!");
} else if (fist === pcFist) {
console.log(" ");
} else {
console.log("コンピュータの勝利だ!");
}
} else {
console.log("入力エラー")
}
// if (fist !== " " && fist !== " " && fist !== "布") {
// console.log("入力エラー")
// } else {
// //
// }
switch
switchの構文は常にif構文に置き換えることができます。
switch (式) {
case :
;
case :
;
default:
;
}
- 計算式の戻り値は、caseに続くデータと厳密に等しいものから順に比較され、どちらかが等しければ比較は中止され、その中のブロックが実行され、さらにそれに続くすべてのブロックが実行されます。
- case 分岐の内部では、break 文を使用して switch 構造を直ちに停止します。breakの直後のコードは、その直後のcaseを切り替えません。
- defaultは、前のすべてのcaseが一致しない場合に実行するという意味です。省略可能です。
の例です:
var a = 0x14;
switch (a) {
case 0x1:
console.log('1');
break;
case 0x14:
console.log('20');
break;
case 0x1e:
console.log('30');
break;
default:
console.log('default');
break;
}
- ループとは何ですか?何をするのですか?
コードの一部を繰り返し実行すること
JSは、whileループ、do-whileループ、forループの3種類のループをサポートしています。
- while
フローチャートを使って、よりわかりやすく説明しましょう。例:ハローワールドを100個出力します。
console.log("hello world");
var i = 0; //現在の出力数を初期化する
while(i < 100){
console.log("hello world");
i++;
}
デッドループ:条件は常に満たされ、ループを抜けることはできません。
for (var i = 0; i < 100; i++) {
console.log("hello world");
}
console.log("サイクル終了", i);
- do-while
do-whileは少なくとも1回は実行されます。 whileループの条件が満たされない場合は、一度も実行されません。
例
// 100のハローを出力する world
// console.log("hello world");
var i = 0; //電流出力数
do {
console.log("hello world");
i++;
} while (i < 100);
console.log("サイクル終了");
for
for(式を初期化する; ; 変更式){
}
``````js
for(式を初期化する; 条件; 条件変更式){
}
forループの中のi++の位置に注意してください。括弧の中にあってもかまいません。括弧の中は、continueが飛び出した後もi++が実行されることを意味します。 i++が括弧の中にある場合は、continueの有無に関係なく、現在のループが実行された後にi++が最後に実行されます。
例
// 1-100 for (var var)
for (var i = 1; i <= 100; i++) {
// ループ本体では、iの値が1から100まで変化する
console.log(i);
}
100-1 for (var var)
for (var i = 100; i >= 1; i--) {
console.log(i);
}
1-100 のすべての奇数に対して
に対して(var i = 1; i <= 100; i++) {
// iが奇数かどうかを判断する
もし(i % 2 !== 0) {
console.log(i);
}
}
for (var i = 1; i <= 100; i += 2) {
console.log(i);
}
break和continue
ループ制御文
- break;breakの後にループからジャンプ ループコードブロック内のコードはループから直接実行されず、ループの後のコードが実行されます。
- continue; 現在のループを停止し、次のループに進みます。 continueに遭遇すると、現在のループは終了し、ループ・コード・ブロックの後のコードは読み込まれず、直接次のループにジャンプします。
以下のトピックでは、意図的にコメントを入力し、順番にコードを実行した結果を見ることができます。これらが正しく行うことができれば、ループのこの部分を習得することは基本的に問題ありません。
例
反復適用
- 累積
例:1から100までのすべての数値の合計
アイデア:初期値0の変数を用意し、1〜100までループし、ループするたびにその変数に数値を足していきます。
例
// 1-100 足し合わせる
// var sum = 0; //決勝と
// for (var i = 1; i <= 100; i++) {
// sum += i;
// }
// console.log(sum);
// 1-10 を掛ける
// var sum = 1;
// for (var i = 1; i <= 10; i++) {
// sum *= i;
// }
// console.log(sum);
// 1-100 すべての奇数を足す
var sum = 0;
for (var i = 1; i <= 100; i++) {
if (i % 2 !== 0) {
sum += i;
}
}
console.log(sum);
- 求める
例題: 135と145の間に26で割り切れる数はありますか?
アイデア:変数を用意し、falseを記録し、見つからなければ135-145をループさせ、もしその数の条件を満たすことが見つかれば、変数をtrueとして再記録し、見つかればループを抜けます。
例
- 入れ子のループ
2つのループを別々に分析
// 135-145 26を割る数字はあるか?
// var isFind = false; //見つかったか?
// var min = 135,
// max = 145;
// for (var i = min; i <= max; i++) {
// if (i % 26 === 0) {
// isFind = true;
// break;
// }
// }
// if (isFind) {
// console.log(" ");
// } else {
// console.log(" ");
// }
// プリント 135-18526で割り切れるすべての数
// for (var i = 135; i <= 185; i++) {
// if (i % 26 === 0) {
// console.log(i);
// }
// }
// プリント 135-18526が割り切れる最初の数が存在しない場合、それは存在しない。
// var isFind = false;
// for (var i = 135; i <= 185; i++) {
// if (i % 26 === 0) {
// console.log(i);
// isFind = true;
// break;
// }
// }
// if (!isFind) {
// console.log(" ");
// }
// 素数か素数でないかを判断する
// 素数:1より大きく、1とそれ自身によってのみ割り切れる整数。
// 例:2は素数である
// 例:4は素数ではない
// アイデア:1からこの数までループさせ、いくつの数で割り切れるかを記録する。
// var num = 1;
// var isFind = false; //見つからない。
// for (var i = 2; i < num - 1; i++) {
// if (num % i === 0) {
// isFind = true;
// break;
// }
// }
// if (num <= 1
isFind) {
// console.log("素数ではない");
// } else {
// console.log(" ");
// }
// var record = 0; //分割数を記録する
// for (var i = 1; i <= num; i++) {
// if (num % i === 0) {
// record++;
// }
// }
// if (record === 2) {
// console.log(" ")
// } else {
// console.log("素数ではない");
// }
配列は複数のデータを保持するために使われます。
- 配列の作成
- new Array(
長さ、配列内のデータの総数。長さは非負の整数でなければなりません。
new Array(data, data, data ...)
配列を作成し、各項目の値を初期化します。
配列の項目:配列のデータの1つ
- [データ、データ、データ、......]。
配列を作成し、各項目を値で初期化します。
配列のデータは、数値、文字列、オブジェクトなど、どのような型でもかまいません。
- 配列の性質の理解
配列の性質は、オブジェクト
- 長さ属性:配列の長さは、自動的に変更されます、値は最大添え字+1です。
- 数値文字列属性:添え字とも呼ばれるインデックスと呼ばれる、配列内の各データの番号に相当する、添え字0から配置を開始します。
// -100のすべての素数に対して
のすべての素数に対して(var i = 1; i <= 100; i++) {
// iが素数かどうかを判定する
var isFind = false; //見つからない
for (var j = 2; j < i - 1; j++) {
if (i % j === 0) {
isFind = true;
break;
}
}
if (i > 1 && !isFind) {
console.log(i);
}
}
連続添え字の値の範囲:0〜長さ-1、あなたが直接長さに値を割り当てる場合は、配列が切り捨てられることがあります。
var a = [
0x1,
0x2
];
a[0xa] = 0x1;
実際には、長さに値を代入しないでください。
- 添え字
通常、添え字は連続です。
添え字が不連続な配列は、スパース配列と呼ばれます。
配列に対する一般的な操作
- 配列項目の追加
- array[length] = data: データを配列の末尾に追加 array.push(data): データを配列の末尾に追加 array.unshift(data): データを配列の先頭に追加。
- array.unshift(data): データを配列の先頭に追加し、配列の各項目の添え字を後ろにシフトさせます。
- array.split(subscript, 0, added data): 指定された添え字の位置から開始し、0 を削除してから、その位置に追加されたデータを挿入します。
添え字が範囲を超える場合は、範囲の境界に従って処理されます。スパース配列にはなりません。 添え字が -234 の場合、添え字 0 にデータが追加され、後続の添え字は後置され、疎な配列は形成されません。
push、unshift、splice は、複数のデータを追加できます。
- データ削除
- delete array[subscript]: この式は配列の他の属性を変更しないので、疎な配列になります。
- この式は、最後の項目のデータを返します。
- この式は、最初の項目のデータを返します。
- array.split(subscript, remove する項目の数, add するデータ) : 指定した添え字の位置から開始し、指定した数の項目を削除してから、その位置に追加したデータを挿入します。削除されたデータの新しい配列を返します。
- その他の操作
- array.slice(start position subscript, end position subscript) : 開始位置と終了位置の間のデータを取り出して、新しい配列を取得します。
この関数は、配列の開始位置と終了位置の間のデータを取り出し、新しい配列を取得します。
添え字を負の数で記述することもできます。 最後の桁は -1 です。
終端添え字を記述しない場合は、終端まで取ります。
- 配列を空にします。
Array.splice(0, array.length);
Array.length = 0;
- 配列内の項目の添え字を見つけます。
array.indexOf(data)
配列から対応するデータを順に検索し、比較には厳密な等号を使用します。最初に一致する添え字を見つけ、それを返します。見つからなかった場合は -1 を返します;
Array.lastIndexOf(data)
最後に一致する添え字を探す点を除き、indexOf と同様の機能です。
- .fill
配列のすべての項目を指定されたデータで埋めます。
array.fill(data, start subscript): 開始添え字から配列の末尾までを指定されたデータで埋めます。
array.fill(data, start subscript, end subscript): 配列の開始添え字から終了添え字までを指定されたデータで埋めます。
array.jion(separator) : 文字列を返します。元の配列を変更しません。
array1.contact(array2) : array2 のすべての要素を array1 の末尾に接続します。新しい配列を返し、元の配列は変更されません。
in
オブジェクトにプロパティが存在するかどうかを判定します。
オブジェクト内の属性名
for-in foreach
var c = [
0x1,
0x2,
0x3,
0x4,
0x5,
0x6
];
c.length = 0x3;
c.length = 0xa;
オブジェクトのすべてのプロパティ名を取り、ループするたびにそのうちの1つを変数propに代入し、ループの本体を実行します。
- 配列を走査するfor inループと配列を走査するforループの違い
違いは、forループは疎な配列で配列を走査し、forループも添え字が存在しない配列を走査してundefinedを出力します。for inはそうではなく、プロパティ名に基づいて走査します。