ЯзÑки пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾ÑÐµÐ½Ñ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ Ð±ÑÑÑÑой ÑеализаÑии повÑоÑÑÑÑÐ¸Ñ ÑÑ Ð·Ð°Ð´Ð°Ñ. ÐÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑиÑловÑÑ Ð¾Ð¿ÐµÑаÑий до лÑбой дÑÑгой ÑиÑÑаÑии, когда Ñ Ð²Ð°Ñ ÐµÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ñ Ð¾Ð¿ÐµÑаÑий, коÑоÑÑе нÑжно вÑполниÑÑ. Ð ÑÑой ÑÑаÑÑе Ð¼Ñ ÑаÑÑмоÑÑим ÑÑÑÑкÑÑÑÑ Ñиклов, доÑÑÑпнÑе в JavaScript, коÑоÑÑе можно иÑполÑзоваÑÑ Ð´Ð»Ñ ÑÑÐ¸Ñ Ñелей.
ТÑебованиÑ: ÐазовÑе знаÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑной ÑиÑÑÐµÐ¼Ñ Ð¸ базовое понимание HTML и CSS, JavaScript пеÑвÑе Ñаги. ЦелÑ: ÐонÑÑÑ ÐºÐ°Ðº ÑабоÑаÑÑ ÑÐ¸ÐºÐ»Ñ Ð² JavaScript. Ð¦Ð¸ÐºÐ»Ñ Ð² ÐºÐ¾Ð´ÐµÐ¦Ð¸ÐºÐ»Ñ ÑвлÑÑÑÑÑ Ð²Ð°Ð¶Ð½Ð¾Ð¹ конÑепÑией в пÑогÑаммиÑовании. ÐÑ Ð¸ÑполÑзование оÑновано на повÑоÑении одного и Ñого же, ÑÑо в пÑогÑаммиÑовании назÑваеÑÑÑ Ð¸ÑеÑаÑией.
ÐавайÑе ÑаÑÑмоÑÑим ÑабоÑÑ ÑеÑмеÑа, коÑоÑÑй ÑÐ»ÐµÐ´Ð¸Ñ Ð·Ð° Ñем, ÑÑÐ¾Ð±Ñ Ñ Ð½ÐµÐ³Ð¾ бÑло доÑÑаÑоÑно едÑ, ÑÑÐ¾Ð±Ñ ÐºÐ¾ÑмиÑÑ Ð²ÑÑ ÑÐ²Ð¾Ñ ÑемÑÑ Ð² ÑеÑении недели. Ðго ÑабоÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ пÑедÑÑавиÑÑ Ð² виде Ñикла:
Цикл обÑÑно ÑоÑÑавлÑÐµÑ Ð¾Ð´Ð½Ñ Ð¸Ð»Ð¸ неÑколÑко из ÑледÑÑÑÐ¸Ñ ÑÑнкÑий:
РпÑевдокоде ÑÑо бÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ ÑледÑÑÑим обÑазом:
loop(food = 0; foodNeeded = 10) { if (food = foodNeeded) { exit loop; // У Ð½Ð°Ñ Ð´Ð¾ÑÑаÑоÑно едÑ, поÑа домой } else { food += 2; // ÐÑоÑÑл ÑаÑ, колиÑеÑÑво ÐµÐ´Ñ ÑвелиÑилоÑÑ Ð½Ð° 2 // пеÑÐµÑ Ð¾Ð´ на ÑледÑÑÑÑÑ Ð¸ÑеÑаÑÐ¸Ñ Ñикла. } }
Таким обÑазом, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾Ðµ колиÑеÑÑво ÐµÐ´Ñ ÑÑÑанавливаеÑÑÑ ÑавнÑм 10, а изнаÑалÑно ÑеÑÐ¼ÐµÑ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð½Ð¸ одной поÑÑии, Ñ.е. наÑало Ñавно 0. Ðа каждой иÑеÑаÑии Ñикла пÑовеÑÑем, ÑооÑвеÑÑÑвÑÐµÑ Ð»Ð¸ ÑобÑанное колиÑеÑÑво едÑ, Ñ Ñем колиÑеÑÑвом, коÑоÑое ÐµÐ¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾. ÐÑли ÑÑо Ñак, можно вÑйÑи из Ñикла, еÑли неÑ, ÑеÑÐ¼ÐµÑ ÑобиÑÐ°ÐµÑ ÐµÑÑ 2 поÑÑии и Ñнова пеÑÐµÑ Ð¾Ð´Ð¸Ñ Ðº пÑовеÑке.
ÐаÑем ÑÑо нÑжно?ÐÑак Ð²Ñ ÑазобÑалиÑÑ, как ÑабоÑаÑÑ ÑиклÑ. Ðо, веÑоÑÑно, дÑмаеÑе: "ХоÑоÑо, но как ÑÑо мне Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¸ÑаÑÑ ÐºÐ¾Ð´ на JavaScript". Ðак Ð¼Ñ Ð¿Ð¸Ñали Ñанее, ÑÐ¸ÐºÐ»Ñ Ð¿Ð¾ÑÑоÑнно повÑоÑÑÑÑ Ð¾Ð´Ð½Ð¾ и Ñоже дейÑÑвие, ÑÑо оÑлиÑно Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð¸Ñ Ð´Ð»Ñ Ð±ÑÑÑÑого вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÑоÑÑÑÑÐ¸Ñ ÑÑ Ð·Ð°Ð´Ð°Ñ.
ЧаÑÑо код бÑÐ´ÐµÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ оÑлиÑаÑÑÑÑ Ð½Ð° каждой поÑледÑÑÑей иÑеÑаÑии Ñикла. ÐÑо ознаÑаеÑ, ÑÑо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑполнÑÑÑ Ð·Ð°Ð´Ð°Ñи, коÑоÑÑе Ð¿Ð¾Ñ Ð¾Ð¶Ð¸, но Ñ Ð½Ð¸Ñ ÐµÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе ÑазлиÑиÑ. ÐапÑимеÑ, еÑли вам нÑжно вÑполниÑÑ Ð¼Ð½Ð¾Ð³Ð¾ вÑÑиÑлений, немного оÑлиÑаÑÑÐ¸Ñ ÑÑ Ð½Ð° каждой иÑеÑаÑии.
Ðа ÑледÑÑÑем пÑимеÑе попÑобÑем показаÑÑ, поÑÐµÐ¼Ñ ÑÐ¸ÐºÐ»Ñ Ñак полезнÑ. ÐÑедположим Ð¼Ñ Ñ
оÑели наÑиÑоваÑÑ 100 ÑлÑÑайнÑÑ
кÑÑгов на ÑлеменÑе <canvas>
. ÐажмиÑе ÐºÐ½Ð¾Ð¿ÐºÑ "ÐбновиÑÑ", ÑÑÐ¾Ð±Ñ Ñнова и Ñнова запÑÑкаÑÑ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¸ ÑвидеÑÑ, ÑÑо кÑÑги ÑиÑÑÑÑÑÑ ÑлÑÑайнÑм обÑазом.
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Random canvas circles</title>
<style>
html {
width: 100%;
height: inherit;
background: #ddd;
}
canvas {
display: block;
}
body {
margin: 0;
}
button {
position: absolute;
top: 5px;
left: 5px;
}
</style>
</head>
<body>
<button>ÐбновиÑÑ</button>
<canvas></canvas>
<script>
var btn = document.querySelector("button");
var canvas = document.querySelector("canvas");
var ctx = canvas.getContext("2d");
var WIDTH = document.documentElement.clientWidth;
var HEIGHT = document.documentElement.clientHeight;
canvas.width = WIDTH;
canvas.height = HEIGHT;
function random(number) {
return Math.floor(Math.random() * number);
}
function draw() {
ctx.clearRect(0, 0, WIDTH, HEIGHT);
for (var i = 0; i < 100; i++) {
ctx.beginPath();
ctx.fillStyle = "rgba(255,0,0,0.5)";
ctx.arc(random(WIDTH), random(HEIGHT), random(50), 0, 2 * Math.PI);
ctx.fill();
}
}
btn.addEventListener("click", draw);
</script>
</body>
</html>
Ðам необÑзаÑелÑно понимаÑÑ Ð²Ñе ÑаÑÑи кода, но давайÑе поÑмоÑÑим на меÑÑо, где ÑиÑÑÑÑÑÑ 100 кÑÑгов.
for (var i = 0; i < 100; i++) {
ctx.beginPath();
ctx.fillStyle = "rgba(255,0,0,0.5)";
ctx.arc(random(WIDTH), random(HEIGHT), random(50), 0, 2 * Math.PI);
ctx.fill();
}
random()
, опиÑÐ°Ð½Ð½Ð°Ñ Ð² коде, возвÑаÑÐ°ÐµÑ ÑлÑÑайное ÑиÑло Ð¼ÐµÐ¶Ð´Ñ 0
и x-1
.WIDTH
и HEIGHT
â ÑÑо вÑÑоÑа и ÑиÑина окна бÑаÑзеÑа.ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð½ÑÑÑ Ð¾ÑновнÑÑ Ð¸Ð´ÐµÑ: Ð¼Ñ Ð¸ÑполÑзÑем Ñикл Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка 100 иÑеÑаÑий ÑÑого кода, ÐºÐ°Ð¶Ð´Ð°Ñ Ð¸Ð· коÑоÑÑÑ ÑиÑÑÐµÑ ÐºÑÑг в ÑлÑÑайном меÑÑе в окне. ÐолиÑеÑÑво кода бÑло Ð±Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñм, еÑли Ð±Ñ Ð½Ð°Ð¼ нÑжно бÑло наÑиÑоваÑÑ 10, 100 или 1000 кÑÑгов, поменÑеÑÑÑ Ð»Ð¸ÑÑ Ð¾Ð´Ð½Ð¾ ÑиÑло.
ÐÑли Ð±Ñ Ð¼Ñ Ð½Ðµ иÑполÑзовали ÑиклÑ, нам Ð±Ñ Ð¿ÑиÑлоÑÑ Ð¿Ð¾Ð²ÑоÑиÑÑ ÑледÑÑÑий код, Ð´Ð»Ñ Ð¾ÑÑиÑовки каждого кÑÑга:
ctx.beginPath();
ctx.fillStyle = "rgba(255,0,0,0.5)";
ctx.arc(random(WIDTH), random(HEIGHT), random(50), 0, 2 * Math.PI);
ctx.fill();
ÐÑо множеÑÑво лиÑнего кода оÑÐµÐ½Ñ ÑÑложнило Ð±Ñ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ ÐºÐ¾Ð´Ð° в бÑдÑÑем, Ñ.к. еÑли Ð±Ñ Ð²Ð°Ð¼ Ð·Ð°Ñ Ð¾ÑелоÑÑ ÑÑо-Ñо измениÑÑ, в каждой иÑеÑаÑии Ñикла, пÑиÑлоÑÑ Ð±Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ Ð²Ñе ÑаÑÑи кода по оÑделÑноÑÑи. РеÑÑ ÑÑо ÑÑложнÑÐµÑ Ð¿Ð¾Ð¸Ñк оÑибок, Ñ.к. еÑли вдÑÑг Ð²Ñ ÑовеÑÑиÑе логиÑеÑкÑÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð¿Ñи опиÑании одной из иÑеÑаÑий, пÑидÑÑÑÑ Ð¿Ð¾ÑÑаÑиÑÑ Ð¼Ð½Ð¾Ð³Ð¾ вÑемени на ÐµÑ Ð¿Ð¾Ð¸Ñки.
ÐÑавила запиÑи ÑиклаРаÑÑмоÑÑим некоÑоÑÑе конкÑеÑнÑе конÑÑÑÑкÑии Ñиклов. ÐеÑвÑй ваÑианÑ, коÑоÑÑй Ð²Ñ Ð±ÑдеÑе иÑполÑзоваÑÑ ÑаÑе вÑего, ÑÑо Ñикл for. Ðн Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑий ÑинÑакÑиÑ:
for (initializer; exit-condition; final-expression) { // код Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ }
ТÑÑ Ð¸Ð¼ÐµÐµÐ¼:
ÐлÑÑевое Ñлово for, за коÑоÑÑм ÑледÑÑÑ ÐºÑÑглÑе Ñкобки.
РкÑÑглÑÑ ÑÐºÐ¾Ð±ÐºÐ°Ñ Ñ Ð½Ð°Ñ ÐµÑÑÑ ÑÑи ÑаÑÑи, ÑазделÑннÑе ÑоÑкой Ñ Ð·Ð°Ð¿ÑÑой:
ФигÑÑнÑе Ñкобки, ÑодеÑжаÑие блок кода. ÐÑÐ¾Ñ ÐºÐ¾Ð´ бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑÑÑ Ð½Ð° каждой иÑеÑаÑии Ñикла.
ÐоÑмоÑÑим на пÑимеÑ, ÑÑÐ¾Ð±Ñ ÑазобÑаÑÑÑÑ Ð² ÑÑом более деÑалÑно.
var cats = ["Ðилл", "ÐакÑ", "ÐикÑи", "ÐлиÑа", "ÐаÑмин"];
var info = "ÐоиÑ
коÑек зовÑÑ ";
var para = document.querySelector("p");
for (var i = 0; i < cats.length; i++) {
info += cats[i] + ", ";
}
para.textContent = info;
ÐÑÐ¾Ñ Ð±Ð»Ð¾Ðº кода бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ ÑледÑÑÑий ÑезÑлÑÑаÑ:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>ÐÑÐ¸Ð¼ÐµÑ Ñикла For</title>
<style></style>
</head>
<body>
<p></p>
<script>
var cats = ["Ðилл", "ÐакÑ", "ÐикÑи", "ÐлиÑа", "ÐаÑмин"];
var info = "ÐоиÑ
коÑек зовÑÑ: ";
var para = document.querySelector("p");
for (var i = 0; i < cats.length; i++) {
info += cats[i] + ", ";
}
para.textContent = info;
</script>
</body>
</html>
ÐÑимеÑание: ÐÑ Ð¼Ð¾Ð¶ÐµÑе найÑи ÑÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð½Ð° GitHub или поÑмоÑÑеÑÑ Ð¾Ð½Ð»Ð°Ð¹Ð½.
ÐдеÑÑ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½ Ñикл, иÑполÑзÑемÑй Ð´Ð»Ñ Ð¿ÐµÑебоÑа ÑлеменÑов в маÑÑиве и вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑннÑÑ Ð´ÐµÐ¹ÑÑвий Ñ ÐºÐ°Ð¶Ð´Ñм из Ð½Ð¸Ñ â оÑÐµÐ½Ñ ÑаÑпÑоÑÑÑанÑннÑй Ñаблон в JavaScript ÐодÑобнее:
ÐÑеÑаÑоÑ, i
, наÑинаеÑÑÑ Ñ 0
(var i = 0
).
Цикл запÑÑкаеÑÑÑ, пока знаÑение иÑеÑаÑоÑа не бÑÐ´ÐµÑ Ð±Ð¾Ð»ÑÑе Ð´Ð»Ð¸Ð½Ñ Ð¼Ð°ÑÑива коÑек. ÐÑо важно - ÑÑловие вÑÑ
ода показÑÐ²Ð°ÐµÑ ÐºÐ¾Ð³Ð´Ð° именно Ñикл должен ÑабоÑаÑÑ, а когда нÑжно вÑйÑи из Ñикла. ÐоÑÑÐ¾Ð¼Ñ Ð² ÑлÑÑае, пока i < cats.lenght
по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ true
, Ñикл бÑÐ´ÐµÑ ÑабоÑаÑÑ.
ÐнÑÑÑи Ñела Ñикла Ð¼Ñ ÑоединÑем ÑекÑÑий ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñикла (cats[i]
ÑÑо cats
[незавиÑимо Ð¾Ñ Ñого, Ñем i
ÑвлÑеÑÑÑ Ð² даннÑй моменÑ]) Ñ Ð·Ð°Ð¿ÑÑой и пÑобелом. ÐÑак:
i = 0
, поÑÑÐ¾Ð¼Ñ cats[0] + ', '
ÑоединÑÑÑÑ Ð² ("Ðилл, ").i = 1
, поÑÑÐ¾Ð¼Ñ cats[1] + ', '
ÑоединÑÑÑÑ Ð² ("ÐакÑ, ")i
ÑвелиÑиÑÑÑ Ð½Ð° 1 (i++
) , и пÑоÑеÑÑ Ð±ÑÐ´ÐµÑ Ð½Ð°ÑинаÑÑÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾.Ðогда i
доÑÑÐ¸Ð³Ð½ÐµÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ cats.length
Ñикл оÑÑановиÑÑÑ Ð¸ бÑаÑÐ·ÐµÑ Ð¿ÐµÑейдÑÑ Ðº ÑледÑÑÑÐµÐ¼Ñ ÑÑагменÑÑ ÐºÐ¾Ð´Ð° поÑле Ñикла.
ÐÑимеÑание: ÐÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ð»Ð¸ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð²ÑÑ
ода i < cats.length
, а не i <= cats.length
, поÑÐ¾Ð¼Ñ ÑÑо компÑÑÑеÑÑ ÑÑиÑаÑÑ Ñ 0, а не Ñ 1 â в наÑале i = 0
и ÑвелиÑиваеÑÑÑ Ð´Ð¾ i = 4
(Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾Ñледнего ÑлеменÑа маÑÑива). cats.length
возвÑаÑÐ°ÐµÑ 5, Ñ.к. в маÑÑиве 5 ÑлеменÑов, но нам не нÑжно ÑвелиÑиваÑÑ Ð´Ð¾ i = 5
, Ñ.к. cats[5]
веÑнÑÑ undefined
(в маÑÑиве Ð½ÐµÑ ÑлеменÑа Ñ Ð¸Ð½Ð´ÐµÐºÑом 5). Таким обÑазом Ð¼Ñ Ñ
оÑим пÑидÑи к ÑезÑлÑÑаÑÑ Ð½Ð° 1 менÑÑе, поÑÑÐ¾Ð¼Ñ i < cats.length
, не одно и Ñоже ÑÑо i <= cats.length
.
ÐÑимеÑание: СÑандаÑÑной оÑибкой Ñ ÑÑловием вÑÑ
ода ÑвлÑеÑÑÑ Ð¸ÑполÑзование ÑÑÐ»Ð¾Ð²Ð¸Ñ "ÑавнÑй" (===
) ,а не "менÑÑе или Ñавно" (<=
). ÐÑли нам нÑжно ÑвелиÑиÑÑ ÑÑÑÑÑик до i = 5
, ÑÑловие вÑÑ
ода должно бÑÑÑ i <= cats.length
. ÐÑли Ð¼Ñ ÑÑÑановим i === cats.length
, Ñикл не наÑнÑÑÑÑ, Ñ.к. i
не Ñавно 5
на Ñамой пеÑвой иÑеÑаÑии, поÑÑÐ¾Ð¼Ñ Ñикл оÑÑановиÑÑÑ ÑÑазÑ.
ÐÑÑаÑÑÑÑ Ð¾Ð´Ð½Ð° неболÑÑÐ°Ñ Ð¿Ñоблема: вÑÑ Ð¾Ð´Ð½Ð°Ñ ÑÑÑока ÑÑоÑмиÑована не ÑовÑем коÑÑекÑно:
ÐÐ¾Ð¸Ñ ÐºÐ¾Ñек зовÑÑ Ðилл, ÐакÑ, ÐикÑи, ÐлиÑа, ÐаÑмин,
Ридеале Ð¼Ñ Ñ
оÑим измениÑÑ ÐºÐ¾Ð½ÐºÐ°ÑенаÑÐ¸Ñ Ð½Ð° поÑледней иÑеÑаÑии Ñикла Ñак, ÑÑÐ¾Ð±Ñ Ñ Ð½Ð°Ñ Ð½Ðµ бÑло запÑÑой в конÑе пÑедложениÑ. ÐÐ»Ñ ÑÑого нÑжно добавиÑÑ ÑÑловное вÑÑажение внÑÑÑÑ Ñикла for
Ð´Ð»Ñ Ð¾Ð±ÑабоÑки ÑÑого оÑобого ÑлÑÑаÑ:
for (var i = 0; i < cats.length; i++) {
if (i === cats.length - 1) {
info += "и " + cats[i] + ".";
} else {
info += cats[i] + ", ";
}
}
ÐÑимеÑание: ÐÑ Ð¼Ð¾Ð¶ÐµÑе найÑи ÑÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð½Ð° GitHub или поÑмоÑÑеÑÑ Ð¾Ð½Ð»Ð°Ð¹Ð½.
ÐÑедÑпÑеждение: Ðажно: С Ñиклом for, Ñакже как и Ñ Ð´ÑÑгими Ñиклами, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑбедиÑÑÑÑ ÑÑо иниÑиализаÑÐ¾Ñ (ÑÑÑÑÑик) и оконÑаÑелÑное вÑÑажение поÑÑÑÐ¾ÐµÐ½Ñ Ñак, ÑÑо они доÑÑигнÑÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð²ÑÑ Ð¾Ð´Ð°. ÐÑли ÑÑого не пÑоизойдÑÑ, Ñо Ñикл бÑÐ´ÐµÑ Ð¿ÑодолжаÑÑÑÑ Ð²ÐµÑно. РиÑоге бÑаÑÐ·ÐµÑ Ð¸Ð»Ð¸ заÑÑÐ°Ð²Ð¸Ñ ÐµÐ³Ð¾ оÑÑановиÑÑÑÑ, или вÑдаÑÑ Ð¾ÑибкÑ. ÐÑо назÑваеÑÑÑ Ð±ÐµÑконеÑнÑм Ñиклом.
ÐÑÑ Ð¾Ð´ из Ñикла Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ breakÐÑли Ð²Ñ Ñ
оÑиÑе вÑйÑи из Ñикла до завеÑÑÐµÐ½Ð¸Ñ Ð²ÑеÑ
иÑеÑаÑий, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ break . ÐÑ Ñже вÑÑÑеÑалиÑÑ Ñ Ð½Ð¸Ð¼ в пÑедÑдÑÑей ÑÑаÑÑе, когда ÑаÑÑмаÑÑивали опеÑаÑÐ¾Ñ switch: когда пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÑобÑÑие, ÑооÑвеÑÑÑвÑÑÑее ÑÑловиÑ, пÑопиÑÐ°Ð½Ð½Ð¾Ð¼Ñ ÐºÐ»ÑÑевÑм Ñловом case
внÑÑÑи опеÑаÑоÑа switch
, ÑÑловие break моменÑалÑно вÑÑ
Ð¾Ð´Ð¸Ñ Ð¸Ð· конÑÑÑÑкÑии switch
и запÑÑÐºÐ°ÐµÑ ÑледÑÑÑий поÑле Ð½ÐµÑ ÐºÐ¾Ð´.
Тоже Ñамое и Ñ Ñиклами â ÑÑловие break
моменÑалÑно законÑÐ¸Ñ Ñикл и заÑÑÐ°Ð²Ð¸Ñ Ð±ÑаÑÐ·ÐµÑ Ð·Ð°Ð¿ÑÑÑиÑÑ ÑледÑÑÑий поÑле Ñикла код.
ÐÑедположим, в маÑÑиве даннÑÑ
Ð¼Ñ Ñ
оÑим найÑи имена конÑакÑов и ÑелеÑоннÑе номеÑа, а веÑнÑÑÑ ÑолÑко номеÑ, коÑоÑÑй Ð¼Ñ Ð½Ð°Ñли. ÐаÑнÑм Ñ ÑазмеÑки HTML: поле <input>
позволÑÐµÑ Ð½Ð°Ð¼ ввеÑÑи Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка, ÑÐ»ÐµÐ¼ÐµÐ½Ñ (кнопка) <button>
Ð´Ð»Ñ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¸Ñка, и ÑÐ»ÐµÐ¼ÐµÐ½Ñ <p>
Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑезÑлÑÑаÑа:
<label for="search">ÐоиÑк по имени: </label>
<input id="search" type="text" />
<button>ÐоиÑк</button>
<p></p>
ТепеÑÑ Ð² JavaScript:
var contacts = [
"ÐÑигоÑий:2232322",
"ÐаÑина:3453456",
"ÐаÑилий:7654322",
"ÐаÑалÑÑ:9998769",
"Ðиана:9384975",
];
var para = document.querySelector("p");
var input = document.querySelector("input");
var btn = document.querySelector("button");
btn.addEventListener("click", function () {
var searchName = input.value;
input.value = "";
input.focus();
for (var i = 0; i < contacts.length; i++) {
var splitContact = contacts[i].split(":");
if (splitContact[0] === searchName) {
para.textContent = splitContact[0] + ", Ñел.: " + splitContact[1] + ".";
break;
} else {
para.textContent = "ÐонÑÐ°ÐºÑ Ð½Ðµ найден.";
}
}
});
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Simple contact search example</title>
<style></style>
</head>
<body>
<label for="search">ÐайÑи Ð¸Ð¼Ñ ÐºÐ¾Ð½ÑакÑа: </label>
<input id="search" type="text" />
<button>ÐоиÑк</button>
<p></p>
<script>
var contacts = [
"ÐÑигоÑий:2232322",
"ÐаÑина:3453456",
"ÐаÑилий:7654322",
"ÐаÑалÑÑ:9998769",
"Ðиана:9384975",
];
var para = document.querySelector("p");
var input = document.querySelector("input");
var btn = document.querySelector("button");
btn.addEventListener("click", function () {
var searchName = input.value;
input.value = "";
input.focus();
for (var i = 0; i < contacts.length; i++) {
var splitContact = contacts[i].split(":");
if (splitContact[0] === searchName) {
para.textContent =
splitContact[0] + ", Ñел.: " + splitContact[1] + ".";
break;
} else if (i === contacts.length - 1)
para.textContent = "ÐонÑÐ°ÐºÑ Ð½Ðµ найден.";
}
});
</script>
</body>
</html>
ÐÑежде вÑего Ñ Ð½Ð°Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð½ÐµÐºÐ¾ÑоÑÑе пеÑеменнÑе: Ñ Ð½Ð°Ñ ÐµÑÑÑ Ð¼Ð°ÑÑив Ñ ÐºÐ¾Ð½ÑакÑной инÑоÑмаÑией, каждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÐºÐ¾ÑоÑого ÑÑо ÑÑÑока, ÑодеÑжаÑÐ°Ñ Ð² Ñебе Ð¸Ð¼Ñ Ð¸ Ð½Ð¾Ð¼ÐµÑ ÑелеÑона, коÑоÑÑе ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ñ Ð´Ð²Ð¾ÐµÑоÑием.
Ðалее Ð¼Ñ Ð¿ÑименÑем обÑабоÑÑик ÑобÑÑÐ¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ (btn
), ÑÑÐ¾Ð±Ñ Ð¿Ñи ÐµÑ Ð½Ð°Ð¶Ð°Ñии запÑÑкалÑÑ ÐºÐ¾Ð´ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка и оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑезÑлÑÑаÑов.
ÐÑ ÑоÑ
ÑанÑем знаÑение, введÑнное в ÑекÑÑовое поле, в пеÑеменнÑÑ searchName
, заÑем оÑиÑаем введÑннÑй ÑекÑÑ Ð¸ Ñнова ÑокÑÑиÑÑемÑÑ Ð½Ð° ÑекÑÑовом поле Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ поиÑка.
ТепеÑÑ Ð¿ÐµÑейдÑм к инÑеÑеÑÑÑÑей Ð½Ð°Ñ ÑаÑÑи â к ÑÐ¸ÐºÐ»Ñ for
:
0
, запÑÑкаем Ñикл до ÑеÑ
поÑ, пока ÑÑÑÑÑик вÑÑ ÐµÑÑ Ð¼ÐµÐ½ÑÑе, Ñем contacts.length, а инкÑÐµÐ¼ÐµÐ½Ñ i
ÑвелиÑиваем на 1 поÑле каждой иÑеÑаÑии Ñикла.contacts[i]
) на Ñимволе двоеÑоÑиÑ, и ÑоÑ
ÑанÑем полÑÑеннÑе два знаÑÐµÐ½Ð¸Ñ Ð² маÑÑиве Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ splitContact
.splitContact[0]
(Ð¸Ð¼Ñ ÐºÐ¾Ð½ÑакÑа) введÑÐ½Ð½Ð¾Ð¼Ñ searchName
. ÐÑли ÑÑо Ñак, Ð¼Ñ Ð²Ñводим ÑÑÑÐ¾ÐºÑ Ð² абзаÑ, ÑÑÐ¾Ð±Ñ ÑообÑиÑÑ, каков Ð½Ð¾Ð¼ÐµÑ ÐºÐ¾Ð½ÑакÑа, и иÑполÑзÑем break
Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ñикла.ÐоÑле иÑеÑаÑии (contacts.length-1)
, еÑли Ð¸Ð¼Ñ ÐºÐ¾Ð½ÑакÑа не ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ Ð²Ð²ÐµÐ´ÑннÑм именем в поиÑковом запÑоÑе, Ð´Ð»Ñ ÑекÑÑа абзаÑа ÑÑÑанавливаеÑÑÑ: «ÐонÑÐ°ÐºÑ Ð½Ðµ найден.», и Ñикл пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ Ð¿Ð¾Ð²ÑоÑÑÑÑÑÑ.
ÐÑимеÑание: ÐÑ Ð¼Ð¾Ð¶ÐµÑе поÑмоÑÑеÑÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñй код на GitHub или запÑÑÑиÑÑ ÐµÐ³Ð¾ (also see it running live).
ÐÑопÑÑк иÑеÑаÑий Ñ Ð¿ÑодолжениемÐпеÑаÑÐ¾Ñ continue ÑабоÑÐ°ÐµÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑнÑм обÑазом, как и break
, но вмеÑÑо полного вÑÑ
ода из Ñикла он пеÑеÑ
Ð¾Ð´Ð¸Ñ Ðº ÑледÑÑÑей иÑеÑаÑии Ñикла.
РаÑÑмоÑÑим дÑÑгой пÑимеÑ, в коÑоÑом в каÑеÑÑве вводнÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑинимаеÑÑÑ ÑиÑло, а возвÑаÑаÑÑÑÑ ÑолÑко ÑиÑла, коÑоÑÑе ÑвлÑÑÑÑÑ ÐºÐ²Ð°Ð´ÑаÑами ÑелÑÑ ÑиÑел.
Ðод HTML в оÑновном Ñакой же, как и в пÑедÑдÑÑем пÑимеÑе â пÑоÑÑой ввод ÑекÑÑа и Ð°Ð±Ð·Ð°Ñ Ð´Ð»Ñ Ð²Ñвода. JavaScript в оÑновном Ñакой же, Ñ Ð¾ÑÑ Ñам Ñикл немного дÑÑгой:
var num = input.value;
for (var i = 1; i <= num; i++) {
var sqRoot = Math.sqrt(i);
if (Math.floor(sqRoot) !== sqRoot) {
continue;
}
para.textContent += i + " ";
}
ÐÑвод:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>ÐенеÑаÑÐ¾Ñ ÑелоÑиÑленнÑÑ
квадÑаÑов</title>
<style></style>
</head>
<body>
<label for="number">ÐведиÑе ÑиÑло: </label>
<input id="number" type="text" />
<button>ÐенеÑаÑÐ¸Ñ ÑелоÑиÑленнÑÑ
квадÑаÑов</button>
<p>РезÑлÑÑаÑ:</p>
<script>
var para = document.querySelector("p");
var input = document.querySelector("input");
var btn = document.querySelector("button");
btn.addEventListener("click", function () {
var num = input.value;
input.value = "";
input.focus();
para.textContent = "ÐÑ Ð²Ð²ÐµÐ»Ð¸: " + num + ". РезÑлÑÑаÑ: ";
for (var i = 1; i <= num; i++) {
var sqRoot = Math.sqrt(i);
if (Math.floor(sqRoot) !== sqRoot) {
continue;
}
para.textContent += i + " ";
}
});
</script>
</body>
</html>
num
). Ð¦Ð¸ÐºÐ»Ñ for
пÑиÑваиваеÑÑÑ ÑÑÑÑÑик, наÑинаÑÑийÑÑ Ñ 1 (поÑколÑÐºÑ Ð² данном ÑлÑÑае Ð½Ð°Ñ Ð½Ðµ инÑеÑеÑÑÐµÑ 0), ÑÑловие вÑÑ
ода, коÑоÑое говоÑиÑ, ÑÑо Ñикл оÑÑановиÑÑÑ, когда ÑÑÑÑÑик ÑÑÐ°Ð½ÐµÑ Ð±Ð¾Ð»ÑÑе вÑ
одного num
, а иÑеÑаÑÐ¾Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÐµÑ 1 к ÑÑÑÑÑÐ¸ÐºÑ ÐºÐ°Ð¶Ð´Ñй Ñаз.Math.floor ()
Ð´ÐµÐ»Ð°ÐµÑ Ñ ÑиÑлом, коÑоÑое пеÑедаÑÑ).(! ==)
, знаÑÐ¸Ñ ÐºÐ²Ð°Ð´ÑаÑнÑй коÑÐµÐ½Ñ Ð½Ðµ ÑвлÑеÑÑÑ ÑелÑм ÑиÑлом, поÑÑÐ¾Ð¼Ñ Ð½Ð°Ñ Ð¾Ð½ не инÑеÑеÑÑеÑ. Ð Ñаком ÑлÑÑае Ð¼Ñ Ð¸ÑполÑзÑем опеÑаÑÐ¾Ñ continue
, ÑÑÐ¾Ð±Ñ Ð¿ÐµÑейÑи к ÑледÑÑÑей иÑеÑаÑии Ñикла без запиÑи ÑÑого ÑиÑла.if
полноÑÑÑÑ, поÑÑÐ¾Ð¼Ñ Ð¾Ð¿ÐµÑаÑÐ¾Ñ continue
не вÑполнÑеÑÑÑ; вмеÑÑо ÑÑого обÑединÑеÑÑÑ ÑекÑÑее знаÑение i
Ñ Ð¿Ñобелом в конÑе ÑодеÑжимого абзаÑа.ÐÑимеÑание: ÐÑ Ñакже можеÑе пÑоÑмоÑÑеÑÑ Ð¿Ð¾Ð»Ð½Ñй иÑÑ Ð¾Ð´Ð½Ñй код на GitHub (Ñак же ÑмоÑÑи ÑÑÐ¾Ñ ÐºÐ¾Ð´ вживÑÑ).
ЦиклÑwhile
и do...while
for
â не единÑÑвеннÑй Ñип Ñикла, доÑÑÑпнÑй в JavaScript.
Ðа Ñамом деле ÑÑÑеÑÑвÑÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво дÑÑгиÑ
Ñипов Ñиклов. Ð Ñ
оÑÑ ÑейÑÐ°Ñ Ð½Ðµ обÑзаÑелÑно знаÑÑ Ð¸Ñ
вÑе, ÑÑÐ¾Ð¸Ñ Ð²Ð·Ð³Ð»ÑнÑÑÑ Ð½Ð° ÑÑÑÑкÑÑÑÑ Ð½ÐµÑколÑкиÑ
дÑÑгиÑ
, ÑÑÐ¾Ð±Ñ Ð²Ñ Ð¼Ð¾Ð³Ð»Ð¸ ÑаÑпознаÑÑ Ñе же ÑÑнкÑии, но в ÑабоÑе немного по-дÑÑгомÑ.
РаÑÑмоÑÑим Ñикл while. СинÑакÑÐ¸Ñ ÑÑого Ñикла вÑглÑÐ´Ð¸Ñ Ñак:
initializer while (exit-condition) { // code to run final-expression }
Ðго дейÑÑвие оÑÐµÐ½Ñ Ð¿Ð¾Ñ
оже на Ñикл for
, но пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð½Ð¸ÑиализаÑоÑа ÑÑÑанавливаеÑÑÑ Ð¿ÐµÑед Ñиклом, а заклÑÑиÑелÑное вÑÑажение вклÑÑаеÑÑÑ Ð² Ñикл поÑле запÑÑка кода. Ðапомним, Ñ Ñикла for
ÑÑи два ÑлеменÑа заклÑÑÐµÐ½Ñ Ð² кÑÑглÑÑ
ÑкобкаÑ
. ÐдеÑÑ Ð¶Ðµ поÑле клÑÑевого Ñлова while в кÑÑглÑÑ
ÑкобкаÑ
заклÑÑено ÑÑловие вÑÑ
ода из Ñикла.
ÐдеÑÑ Ð¿ÑиÑÑÑÑÑвÑÑÑ Ñе же ÑÑи ÑлеменÑа и в Ñом же поÑÑдке, ÑÑо и в Ñикле for
. ÐÑо важно, Ñак как вам нÑжно опÑеделиÑÑ Ð¸Ð½Ð¸ÑиализаÑоÑ, пÑежде Ñем полÑÑиÑÑÑ Ð¿ÑовеÑиÑÑ, доÑÑиг ли Ñикл ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð²ÑÑ
ода.
ÐконÑаÑелÑное ÑÑловие вÑполнÑеÑÑÑ Ð¿Ð¾Ñле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð° внÑÑÑи Ñикла (иÑеÑаÑÐ¸Ñ Ð·Ð°Ð²ÐµÑÑена), и оно вÑполнÑеÑÑÑ ÑолÑко в Ñом ÑлÑÑае, еÑли ÑÑловие вÑÑ Ð¾Ð´Ð° еÑÑ Ð½Ðµ доÑÑигнÑÑо.
ÐоÑмоÑÑим еÑÑ Ñаз пÑÐ¸Ð¼ÐµÑ Ñо ÑпиÑком коÑек Ñ ÐºÐ¾Ð´Ð¾Ð¼ пеÑепиÑаннÑм под иÑполÑзование Ñикла while:
var i = 0;
while (i < cats.length) {
if (i === cats.length - 1) {
info += "and " + cats[i] + ".";
} else {
info += cats[i] + ", ";
}
i++;
}
**ÐÑимеÑание:**Ñикл вÑе еÑÑ ÑабоÑÐ°ÐµÑ Ñак же, как и ожидалоÑÑ - поÑмоÑÑиÑе, как он ÑабоÑÐ°ÐµÑ Ð½Ð° GitHub (Ñакже поÑмоÑÑиÑе полнÑй иÑÑ Ð¾Ð´Ð½Ñй код).
Цикл** do...while** пÑедÑÑавлÑÐµÑ Ñобой ваÑиаÑÐ¸Ñ ÑÑÑÑкÑÑÑÑ Ñикла while
:
initializer do { // code to run final-expression } while (exit-condition)
Ð ÑÑом ÑлÑÑае иниÑиализаÑÐ¾Ñ Ñнова ÑказÑваеÑÑÑ Ð¿Ñежде, Ñем Ñикл запÑÑкаеÑÑÑ. ÐлÑÑевое Ñлово do
непоÑÑедÑÑвенно пÑедÑеÑÑвÑÐµÑ ÑигÑÑнÑм Ñкобкам, ÑодеÑжаÑим код Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка и конеÑное вÑÑажение.
РазлиÑие ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑо ÑÑловие вÑÑ
ода идÑÑ Ð¿Ð¾Ñле вÑего оÑÑалÑного, заклÑÑÑнное в Ñкобки поÑле клÑÑевого Ñлова while
. Ð Ñикле do...while
код внÑÑÑи ÑигÑÑнÑÑ
Ñкобок вÑегда запÑÑкаеÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз, пÑежде Ñем вÑполнÑеÑÑÑ Ð¿ÑовеÑка, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ, должна ли она бÑÑÑ Ð²Ñполнена Ñнова (в while
и for
пÑовеÑка идÑÑ Ð¿ÐµÑвой, поÑÑÐ¾Ð¼Ñ ÐºÐ¾Ð´ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ вÑполнен).
ÐеÑепиÑем Ð½Ð°Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ñ ÐºÐ¾Ñками, ÑÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ Ñикл do...while
:
var i = 0;
do {
if (i === cats.length - 1) {
info += "and " + cats[i] + ".";
} else {
info += cats[i] + ", ";
}
i++;
} while (i < cats.length);
**ÐÑимеÑание:**Ð Ñнова ÑÑо ÑабоÑÐ°ÐµÑ Ñак же, как и ожидалоÑÑ - поÑмоÑÑиÑе, как он ÑабоÑÐ°ÐµÑ Ð½Ð° GitHub (Ñакже поÑмоÑÑиÑе полнÑй иÑÑ Ð¾Ð´Ð½Ñй код).
ÐÑедÑпÑеждение: ÐамеÑание: ÐÑименÑÑ ÑÐ¸ÐºÐ»Ñ while
and do...while
, как и вÑе ÑиклÑ, ÑбедиÑеÑÑ, ÑÑо иниÑиализаÑÐ¾Ñ Ð¿Ð¾Ð²ÑоÑÑеÑÑÑ Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð½ в конÑе конÑов доÑÑиг ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð²ÑÑ
ода. ÐÑли ÑÑо не Ñак, Ñикл бÑÐ´ÐµÑ Ð¿ÑодолжаÑÑÑÑ Ð²ÐµÑно, и либо бÑаÑÐ·ÐµÑ Ð·Ð°ÑÑÐ°Ð²Ð¸Ñ ÐµÐ³Ð¾ оÑÑановиÑÑÑÑ, либо пÑоизойдÑÑ Ñбой. ÐÑо назÑваеÑÑÑ ~~докÑÐ¾Ñ Ð¡ÑÑÑндж и ÐоÑмаммÑ~~ беÑконеÑнÑм Ñиклом.
Ð ÑÑом ÑпÑажнении Ð¼Ñ Ñ Ð¾Ñим, ÑÑÐ¾Ð±Ñ Ð²Ñ Ð½Ð°Ð¿Ð¸Ñали пÑоÑÑой оÑÑÑÑÑ Ð²Ñемени запÑÑка до Ð¿Ð¾Ð»Ñ Ð²Ñвода, Ð¾Ñ 10 до "ÐÑÑк!" Ð ÑаÑÑноÑÑи, Ð¼Ñ Ñ Ð¾Ñим, ÑÑÐ¾Ð±Ñ Ð²Ñ:
Цикл Ð¾Ñ 10 до 0. ÐÑ Ð¿ÑедоÑÑавлÑем вам иниÑиализаÑоÑ: var i = 10;
.
ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ иÑеÑаÑии ÑоздайÑе новÑй Ð°Ð±Ð·Ð°Ñ Ð¸ добавÑÑе его к вÑÑ
Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑлеменÑÑ <div>
, коÑоÑÑй Ð¼Ñ Ð²ÑбÑали, иÑполÑзÑÑ var output = document.querySelector ('.output');
. РкомменÑаÑиÑÑ
Ð¼Ñ Ð¿ÑедоÑÑавили вам ÑÑи ÑÑÑоки кода, коÑоÑÑе необÑ
одимо иÑполÑзоваÑÑ Ð³Ð´Ðµ-Ñо внÑÑÑи Ñикла:
var para = document.createElement('p');
â ÑоздаÑÑ Ð½Ð¾Ð²Ñй абзаÑ.output.appendChild(para);
â добавлÑÐµÑ Ð°Ð±Ð·Ð°Ñ Ðº вÑÐ²Ð¾Ð´Ñ <div>
.para.textContent =
â Ð´ÐµÐ»Ð°ÐµÑ ÑекÑÑ Ð²Ð½ÑÑÑи абзаÑа ÑавнÑм знаÑениÑ, коÑоÑое Ð²Ñ ÑаÑположили ÑпÑава, поÑле знака ÑавенÑÑва.РазнÑе номеÑа иÑеÑаÑий ÑÑебÑÑÑ, ÑÑÐ¾Ð±Ñ Ð² абзаÑе Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ иÑеÑаÑии помеÑалÑÑ Ñвой ÑекÑÑ (вам понадобиÑÑÑ ÑÑловнÑй опеÑаÑÐ¾Ñ Ð¸ неÑколÑко para.textContent = lines
):
Ðе забÑдÑÑе вклÑÑиÑÑ Ð¸ÑеÑаÑоÑ! Ðднако в ÑÑом пÑимеÑе Ð¼Ñ Ð²ÐµÐ´Ñм обÑаÑнÑй оÑÑÑÑÑ Ð¿Ð¾Ñле каждой иÑеÑаÑии, а не ввеÑÑ
, поÑÑÐ¾Ð¼Ñ Ð²Ð°Ð¼ не нÑжен i ++
. Ðак вÑполниÑÑ Ð¸ÑеÑаÑÐ¸Ñ Ð²Ð½Ð¸Ð·?
ÐÑли Ð²Ñ Ð´Ð¾Ð¿ÑÑÑили оÑибкÑ, Ð²Ñ Ð²Ñегда можеÑе ÑбÑоÑиÑÑ Ð¿ÑÐ¸Ð¼ÐµÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ «СбÑоÑ» (Reset). ÐÑли Ñ Ð²Ð°Ñ ÑовÑем ниÑего не полÑÑаеÑÑÑ, нажмиÑе «Show solution», ÑÑÐ¾Ð±Ñ ÑвидеÑÑ ÑеÑение.
<h2>Live output</h2>
<div class="output" style="height: 410px;overflow: auto;"></div>
<h2>Editable code</h2>
<p class="a11y-label">
Press Esc to move focus away from the code area (Tab inserts a tab character).
</p>
<textarea id="code" class="playable-code" style="height: 300px;width: 95%">
var output = document.querySelector('.output');
output.innerHTML = '';
// var i = 10;
// var para = document.createElement('p');
// para.textContent = ;
// output.appendChild(para);
</textarea>
<div class="playable-buttons">
<input id="reset" type="button" value="Reset" />
<input id="solution" type="button" value="Show solution" />
</div>
html {
font-family: sans-serif;
}
h2 {
font-size: 16px;
}
.a11y-label {
margin: 0;
text-align: right;
font-size: 0.7rem;
width: 98%;
}
body {
margin: 10px;
background: #f5f9fa;
}
var textarea = document.getElementById("code");
var reset = document.getElementById("reset");
var solution = document.getElementById("solution");
var code = textarea.value;
var userEntry = textarea.value;
function updateCode() {
eval(textarea.value);
}
reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
solution.value = "Show solution";
updateCode();
});
solution.addEventListener("click", function () {
if (solution.value === "Show solution") {
textarea.value = solutionEntry;
solution.value = "Hide solution";
} else {
textarea.value = userEntry;
solution.value = "Show solution";
}
updateCode();
});
var jsSolution =
"var output = document.querySelector('.output');\noutput.innerHTML = '';\n\nvar i = 10;\n\nwhile(i >= 0) {\n var para = document.createElement('p');\n if(i === 10) {\n para.textContent = 'Countdown ' + i;\n } else if(i === 0) {\n para.textContent = 'Blast off!';\n } else {\n para.textContent = i;\n }\n\n output.appendChild(para);\n\n i--;\n}";
var solutionEntry = jsSolution;
textarea.addEventListener("input", updateCode);
window.addEventListener("load", updateCode);
// stop tab key tabbing out of textarea and
// make it write a tab at the caret position instead
textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
insertAtCaret("\t");
}
if (e.keyCode === 27) {
textarea.blur();
}
};
function insertAtCaret(text) {
var scrollPos = textarea.scrollTop;
var caretPos = textarea.selectionStart;
var front = textarea.value.substring(0, caretPos);
var back = textarea.value.substring(
textarea.selectionEnd,
textarea.value.length,
);
textarea.value = front + text + back;
caretPos = caretPos + text.length;
textarea.selectionStart = caretPos;
textarea.selectionEnd = caretPos;
textarea.focus();
textarea.scrollTop = scrollPos;
}
// Update the saved userCode every time the user updates the text area code
textarea.onkeyup = function () {
// We only want to save the state when the user code is being shown,
// not the solution, so that solution is not saved over the user code
if (solution.value === "Show solution") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
}
updateCode();
};
ÐÑакÑиÑеÑкое ÑпÑажнение: Ðаполнение ÑпиÑка гоÑÑей
ÐозÑмиÑе ÑпиÑок имÑн, Ñ ÑанÑÑÐ¸Ñ ÑÑ Ð² маÑÑиве, и помеÑÑиÑе Ð¸Ñ Ð² ÑпиÑок гоÑÑей. ТÑÑ Ð½Ðµ вÑÑ Ñак пÑоÑÑо: Ð¼Ñ Ð½Ðµ Ñ Ð¾Ñим пÑиглаÑаÑÑ Ð¤Ð¸Ð»Ð° и ÐолÑ, поÑÐ¾Ð¼Ñ ÑÑо они наглÑе и вÑÑ ÑожÑÑÑ! У Ð½Ð°Ñ ÐµÑÑÑ Ð´Ð²Ð° ÑпиÑка. Ðдин Ð´Ð»Ñ ÑÐµÑ , кого Ð¼Ñ Ñ Ð¾Ñим пÑиглаÑиÑÑ, вÑоÑой Ð´Ð»Ñ ÑÐµÑ , кого пÑиглаÑаÑÑ Ð½Ðµ нÑжно.
ÐÐ»Ñ ÑÑого нÑжно ÑделаÑÑ ÑледÑÑÑее:
people
. Ðам нÑжно наÑаÑÑ Ñ Ð¸Ð½Ð¸ÑиализаÑоÑа var i = 0;
, но какое нÑжно иÑполÑзоваÑÑ ÑÑловие вÑÑ
ода?textContent
абзаÑа refused
, за коÑоÑÑм ÑледÑÑÑ Ð·Ð°Ð¿ÑÑÐ°Ñ Ð¸ пÑобел.textContent
абзаÑа admitted
, за коÑоÑÑм ÑледÑÑÑ Ð·Ð°Ð¿ÑÑÐ°Ñ Ð¸ пÑобел.ÐÑ Ñже пÑедоÑÑавили вам:
var i = 0;
â Ð²Ð°Ñ Ð¸Ð½Ð¸ÑиализаÑоÑ.refused.textContent +=
â наÑало ÑÑÑоки, коÑоÑÐ°Ñ Ð¾Ð±ÑÐµÐ´Ð¸Ð½Ð¸Ñ ÑÑо-Ñо до конÑа refused.textContent
.admitted.textContent +=
â наÑало ÑÑÑоки, коÑоÑÐ°Ñ Ð¾Ð±ÑÐµÐ´Ð¸Ð½Ð¸Ñ ÑÑо-Ñо до конÑа admitted.textContent
.ÐополниÑелÑнÑй бонÑÑнÑй вопÑÐ¾Ñ - поÑле ÑÑпеÑного вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð²ÑÑеÑпомÑнÑÑÑÑ Ð·Ð°Ð´Ð°Ñ Ñ Ð²Ð°Ñ Ð¾ÑÑанеÑÑÑ Ð´Ð²Ð° ÑпиÑка имÑн, ÑазделÑннÑÑ Ð·Ð°Ð¿ÑÑÑми, но они бÑдÑÑ ÑоÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð½ÐµÐºÐ¾ÑÑекÑно: в конÑе каждого ÑпиÑка бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑаÑ. СможеÑе ли Ð²Ñ ÑоÑÑавиÑÑ ÑÑи ÑпиÑки Ñак, ÑÑÐ¾Ð±Ñ Ð² конÑе каждой ÑÑÑоки вмеÑÑо запÑÑой бÑла ÑоÑка. Ðа помоÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ обÑаÑиÑÑÑÑ Ðº ÑÑаÑÑе «ÐолезнÑе ÑÑÑоковÑе меÑодÑ».
ÐÑли Ð²Ñ Ð´Ð¾Ð¿ÑÑÑили оÑибкÑ, Ð²Ñ Ð²Ñегда можеÑе ÑбÑоÑиÑÑ Ð¿ÑÐ¸Ð¼ÐµÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ «СбÑоÑ» (Reset). ÐÑли Ñ Ð²Ð°Ñ ÑовÑем ниÑего не полÑÑаеÑÑÑ, нажмиÑе «ÐоказаÑÑ ÑеÑение», ÑÑÐ¾Ð±Ñ ÑвидеÑÑ ÑеÑение.
<h2>Live output</h2>
<div class="output" style="height: 100px;overflow: auto;">
<p class="admitted">ÐÑиглаÑиÑÑ:</p>
<p class="refused">Ðе пÑиглаÑаÑÑ(!):</p>
</div>
<h2>Editable code</h2>
<p class="a11y-label">
Press Esc to move focus away from the code area (Tab inserts a tab character).
</p>
<textarea id="code" class="playable-code" style="height: 400px;width: 95%">
var people = ['ÐÑиÑ', 'Ðнна', 'Ðолин', 'ТеÑÑи', 'Фил', 'Ðола', 'СÑм', 'Ðай', 'ÐÑÑÑ'];
var admitted = document.querySelector('.admitted');
var refused = document.querySelector('.refused');
admitted.textContent = 'ÐÑиглаÑиÑÑ: ';
refused.textContent = 'Ðе пÑиглаÑаÑÑ(!): '
// var i = 0;
// refused.textContent += ;
// admitted.textContent += ;
</textarea>
<div class="playable-buttons">
<input id="reset" type="button" value="СбÑоÑ" />
<input id="solution" type="button" value="ÐоказаÑÑ ÑеÑение" />
</div>
html {
font-family: sans-serif;
}
h2 {
font-size: 16px;
}
.a11y-label {
margin: 0;
text-align: right;
font-size: 0.7rem;
width: 98%;
}
body {
margin: 10px;
background: #f5f9fa;
}
var textarea = document.getElementById("code");
var reset = document.getElementById("reset");
var solution = document.getElementById("solution");
var code = textarea.value;
var userEntry = textarea.value;
function updateCode() {
eval(textarea.value);
}
reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
solution.value = "ÐоказаÑÑ ÑеÑение";
updateCode();
});
solution.addEventListener("click", function () {
if (solution.value === "ÐоказаÑÑ ÑеÑение") {
textarea.value = solutionEntry;
solution.value = "СкÑÑÑÑ ÑеÑение";
} else {
textarea.value = userEntry;
solution.value = "ÐоказаÑÑ ÑеÑение";
}
updateCode();
});
var jsSolution =
"var people = ['ÐÑиÑ', 'Ðнна', 'Ðолин', 'ТеÑÑи', 'Фил', 'Ðола', 'СÑм', 'Ðай', 'ÐÑÑÑ'];\n\nvar admitted = document.querySelector('.admitted');\nvar refused = document.querySelector('.refused');\n\nadmitted.textContent = 'ÐÑиглаÑиÑÑ: ';\nrefused.textContent = 'Ðе пÑиглаÑаÑÑ(!): '\nvar i = 0;\n\ndo {\n if(people[i] === 'Фил' || people[i] === 'Ðола') {\n refused.textContent += people[i] + ', ';\n } else {\n admitted.textContent += people[i] + ', ';\n }\n i++;\n} while(i < people.length);\n\nrefused.textContent = refused.textContent.slice(0,refused.textContent.length-2) + '.';\nadmitted.textContent = admitted.textContent.slice(0,admitted.textContent.length-2) + '.';";
var solutionEntry = jsSolution;
textarea.addEventListener("input", updateCode);
window.addEventListener("load", updateCode);
// stop tab key tabbing out of textarea and
// make it write a tab at the caret position instead
textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
insertAtCaret("\t");
}
if (e.keyCode === 27) {
textarea.blur();
}
};
function insertAtCaret(text) {
var scrollPos = textarea.scrollTop;
var caretPos = textarea.selectionStart;
var front = textarea.value.substring(0, caretPos);
var back = textarea.value.substring(
textarea.selectionEnd,
textarea.value.length,
);
textarea.value = front + text + back;
caretPos = caretPos + text.length;
textarea.selectionStart = caretPos;
textarea.selectionEnd = caretPos;
textarea.focus();
textarea.scrollTop = scrollPos;
}
// Update the saved userCode every time the user updates the text area code
textarea.onkeyup = function () {
// We only want to save the state when the user code is being shown,
// not the solution, so that solution is not saved over the user code
if (solution.value === "Show solution") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
}
updateCode();
};
Так какой Ñип Ñикла иÑполÑзоваÑÑ?
РоÑновном, иÑполÑзÑÑÑ for
, while
и do...while
ÑиклÑ, и они во многом взаимозаменÑемÑ. ÐÑе они могÑÑ Ð±ÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¸Ñ
и ÑеÑ
же Ð·Ð°Ð´Ð°Ñ Ð¸ какой из ниÑ
Ð²Ñ Ð±ÑдеÑе иÑполÑзоваÑÑ, во многом завиÑÐ¸Ñ Ð¾Ñ Ð²Ð°ÑиÑ
лиÑнÑÑ
пÑедпоÑÑений. ÐÑполÑзÑйÑе ÑоÑ, коÑоÑÑй вам пÑоÑе вÑего запомниÑÑ Ð¸Ð»Ð¸ наиболее инÑÑиÑивно понÑÑен. ÐавайÑе вÑпомним каждÑй из ниÑ
.
For
:
for (initializer; exit-condition; final-expression) { // code to run }
while
:
initializer while (exit-condition) { // code to run final-expression }
do...while
:
initializer do { // code to run final-expression } while (exit-condition)
ÐÐ»Ñ Ð½Ð°Ñала Ð¼Ñ Ð±Ñ Ð¿Ð¾Ñекомендовали for
, Ñак как его пÑоÑе запомниÑÑ: иниÑиализаÑоÑ, ÑÑловие вÑÑ
ода и конеÑное вÑÑажение аккÑÑаÑно заклÑÑено в Ñкобки, поÑÑÐ¾Ð¼Ñ Ð¸Ñ
легко оÑÑледиÑÑ, ÑÑÐ¾Ð±Ñ Ð¸Ñ
не пÑопÑÑкаÑÑ.
ÐÑимеÑание: СÑÑеÑÑвÑÑÑ Ð¸ дÑÑгие ÑÐ¸Ð¿Ñ Ð¸ ÑÑнкÑии Ñикла, коÑоÑÑе Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð² ÑложнÑÑ Ð¸Ð»Ð¸ ÑпеÑиализиÑованнÑÑ ÑиÑÑаÑиÑÑ Ð¸ вÑÑ Ð¾Ð´ÑÑ Ð·Ð° Ñамки данной ÑÑаÑÑи. ÐÑли Ð²Ñ Ñ Ð¾ÑиÑе подÑобнее изÑÑиÑÑ ÑÐµÐ¼Ñ Ñиклов, пÑоÑиÑайÑе наÑе ÑаÑÑиÑенное ÑÑководÑÑво по Ñиклам и иÑеÑаÑиÑм.
ÐаклÑÑениеÐÑа ÑÑаÑÑÑ ÑаÑкÑÑÐ²Ð°ÐµÑ Ð¾ÑновнÑе конÑепÑии и ÑазлиÑнÑе опÑии, доÑÑÑпнÑе пÑи ÑиклиÑеÑком кодиÑовании в JavaScript. ТепеÑÑ Ð²Ð°Ð¼ должно бÑÑÑ Ð¿Ð¾Ð½ÑÑно, поÑÐµÐ¼Ñ ÑÐ¸ÐºÐ»Ñ ÑвлÑÑÑÑÑ Ñ Ð¾ÑоÑим Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð¾Ð¼ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¿Ð¾Ð²ÑоÑÑÑÑимÑÑ ÐºÐ¾Ð´Ð¾Ð¼. СÑаÑайÑеÑÑ Ð¸ÑполÑзоваÑÑ Ð¸Ñ Ð² ÑÐ²Ð¾Ð¸Ñ ÑобÑÑвеннÑÑ Ð¿ÑимеÑÐ°Ñ !
ÐÑли Ð²Ñ Ñего-Ñо не понÑли, пÑобÑйÑе ÑиÑаÑÑ ÑÑаÑÑÑ Ñнова или ÑвÑжиÑеÑÑ Ñ Ð½Ð°Ð¼Ð¸, Ð¼Ñ Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÐ¼ ÑазобÑаÑÑÑÑ.
ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑиÑRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4