• Пожаловаться

DarkGoodWIN: JavaScript. Учебник начального уровня

Здесь есть возможность читать онлайн «DarkGoodWIN: JavaScript. Учебник начального уровня» весь текст электронной книги совершенно бесплатно (целиком полную версию). В некоторых случаях присутствует краткое содержание. год выпуска: 2011, категория: Интернет / Программирование / sci_textbook / на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале. Библиотека «Либ Кат» — LibCat.ru создана для любителей полистать хорошую книжку и предлагает широкий выбор жанров:

любовные романы фантастика и фэнтези приключения детективы и триллеры эротика документальные научные юмористические анекдоты о бизнесе проза детские сказки о религиии новинки православные старинные про компьютеры программирование на английском домоводство поэзия

Выбрав категорию по душе Вы сможете найти действительно стоящие книги и насладиться погружением в мир воображения, прочувствовать переживания героев или узнать для себя что-то новое, совершить внутреннее открытие. Подробная информация для ознакомления по текущему запросу представлена ниже:

DarkGoodWIN JavaScript. Учебник начального уровня

JavaScript. Учебник начального уровня: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «JavaScript. Учебник начального уровня»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Несколько слов об особенностях JavaScript, другими словами - что я знал об этом языке до начала его изучения. Первое и главное: JS код легко интегрируется в HTML разметку и является де факто стандартом для интернет браузеров. Из этого следует, что если вы совершенно не знаете HTML - JS, вероятнее всего, будет для вас бесполезна. В данном опусе я постараюсь разжевать всё максимально детально, но надо иметь в виду, что HTML и JS идут бок о бок, дополняя, а не заменяя друг друга. Для тех, кто сталкивался раньше с Delphi программированием или чем-то подобным можно, в первом приближении, привести такую аналогию: HTML - это форма, а JS - сам код программы. Другая важная особенность языка - высокая интерактивность. Процитирую фразу, которую мне многократно доводилось слышать: "JavaScript - это событийно ориентированный язык программирования". Что это значит? Это означает, что вы можете написать кусок кода, который выполнится когда пользователь нажмёт на кнопку, можете написать кусок кода, который выполнится когда вы только подведёте к ней курсор мышки. Для Java Script и то и другое - события и она умеет на них реагировать. Отличительная особенность языка и кода на нём - то, что результат можно увидеть имея лишь один из современных браузеров. То есть вам не нужно ставить и настраивать какие-то компиляторы, среды программирования и так далее. Для запуска любого из приведённых ниже примеров - достаточно набрать текст в любом редакторе (блокноте, например), изменить расширение на html и открыть при помощи браузера. Всё.

DarkGoodWIN: другие книги автора


Кто написал JavaScript. Учебник начального уровня? Узнайте фамилию, как зовут автора книги и список всех его произведений по сериям.

JavaScript. Учебник начального уровня — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «JavaScript. Учебник начального уровня», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

if(mines[i * rowCount + j] == 1)

cell.innerHTML = '*'

else

cell.innerHTML = '.';

Тут мы снова сталкнёмся с новой конструкцией. Оператор if или условный оператор. Что это такое? Давайте опять попробуем перевести фразу на русский: «если (mines[i * rowCount + j] == 1), то выполнить cell.innerHTML = '*', а иначе выполнить cell.innerHTML = '.'". Другими словами, если выполняется условие после if (в JavaScript обязательно заключено в круглые скобки), выполняется блок (в нашем случае одна строка, так как нет фигурных скобок обрамляющих блок) сразу после оператора if, если же условие не выполняется (не обязательно, блока else может и не быть), выполняется блок сразу после оператора else. Если за блоком, идущем сразу после блока if нет оператора else, последующий код выполняется всегда, независимо от выполнения или невыполнения условия.

Что же значит выполнение условия, давайте внимательней разберём выражение «mines[i * rowCount + j] == 1». «mines[i * rowCount + j]» — это, как вы вероятно уже догадались переменная, которая соответствует текущей ячейке (строка i, столбец j) в нашем массиве бомб. Как вы помните, эта переменная равна 1, если бомба в соответствующей ячейке есть. Именно равенство переменной единице мы и проверяем. Оператор точного сравнения переменных в JavaScript — "==".

Давайте немного потренируемся составлять такие условия. (i > 2) — значение переменной i больше, чем 2. (i != 3) — значение переменной i не равно 3. (i == j) — значение переменной i равно значению переменной j.

Ну и чтобы формально закончить рассмотрение этого кусочка кода. Получается, что если у нас есть бомба в ячейке — мы делаем текст ячейки равным строке '*', если же бомбы нет — строке '.'.

Теперь перейдём к рассмотрению следующей большой функции в нашем скрипте - fillMines.

functionfillMines(rowCount, colCount, minesCount)

{

varres = newArray(rowCount * colCount);

varmines = minesCount;

while(mines > 0)

{

varn = intRand(rowCount * colCount‑1);

if(res[n] != 1)

{

res[n] = 1;

mines--;

}

}

returnres;

}

Что же происходит тут. Именно эта функция создаёт нам наш массив с бомбами.

Первой же строчкой создаётся пустой массив, длиной rowCount * colCount. В нём ещё ничего нет, далее мы должны будем его заполнить. Кроме того, мы заводим некую вспомогательную переменную mines, которой присваиваем начальное значение minesCount. Вероятно я её не совсем удачно назвал, будем считать, что она называется как–то вроде «количество бомб, которые ещё нужно распределить». Это куда лучше описывает её назначение.

Далее мы сталкиваемся с новым типом цикла. Это цикл while. Как работает этот цикл? Он выполняет свой блок кода (тело) до тех пор, пока выполняется условие в скобках сразу после слова while. То есть в нашем случае цикл будет выполняться пока ещё есть неразмещённые бомбы. Вообще говоря это довольно опасный цикл, так как его легко сделать бесконечным (в том числе и ошибочно). Например в моём случае функция не проверяет (хотя стоило бы), что бомб меньше чем ячеек в таблице, а ведь если это условие не выполняется, мы никогда не сможем разместить все бомбы так, чтобы в каждой ячейке было не больше одной, а значит никогда не выйдем из этого цикла и наша программа зависнет.

Само тело цикла довольно простое, переменной n мы присваиваем результат функции intRand c параметром числа ячеек таблицы — 1 (максимальный индекс в нашем массиве бомб). Эта функция, как она работает будет ниже, возвращает случайное целое число от 0 до значения переданного в качестве параметра включительно.

Далее мы проверяем, есть–ли уже бомба в элементе с индексом n в массиве res. И если её нет, мы её туда добавляем (res[n] = 1) и уменьшаем на единицу количество бомб, которые надо добавить (mines--). Как только все бомбы будут распределены (mines станет равно 0), наш цикл закончится и мы вернём результат (return res). Из незнакомого тут может быть оператор декремента " — ". Он увеличивает значение переменной на единицу, то есть запись mines-- эквивалентна записи mines = mines‑1. И оператор return. Этот оператор возвращает переменную или выражение после себя в качестве результата текущей функции и выходит из неё. То есть если вы вызовете оператор return в середине функции, оставшаяся её часть выполняться уже не будет.

Вообще говоря, предложенный алгоритм имеет ряд изъянов. Как я уже говорил, возможно зацикливание (зависание), кроме того, неизвестно сколько времени потребуется для того, чтобы случайным образом выбрать ячейки для мин. Чисто теоретически, может 1000 раз подряд выпасть число 39, таким образом мы будем выполнять цикл более тысячи раз, а может сразу выпасть 10 разных чисел и мы будем выполнять цикл всего 10 раз. И хотя вероятность описанной мной ситуации ничтожно мала, она всё–таки существует и тем больше, чем большее количество мин нам нужно расставить. Грубо говоря, мой алгоритм, наверняка будет не плохо работать при количестве мин значительно меньшем, чем количество ячеек, но его не стоит применять, когда их почти столько же.

Читать дальше
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «JavaScript. Учебник начального уровня»

Представляем Вашему вниманию похожие книги на «JavaScript. Учебник начального уровня» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё не прочитанные произведения.


Отзывы о книге «JavaScript. Учебник начального уровня»

Обсуждение, отзывы о книге «JavaScript. Учебник начального уровня» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.