1 Бурибаев Бахыт Бурибаевич e-mail: baxit@mail.ru.

Презентация:



Advertisements
Похожие презентации
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Advertisements

ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
Операторы цикла. Циклический процесс, или просто цикл, – это повторение одних и тех же действий. Последовательность действий, которые повторяются в цикле,
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
АЛГОРИТМИЗАЦИЯ. Алгоритм Алгоритм – описание конечной последовательности действий, приводящей от исходных данных к нужному результату. Где встречаются.
Программирование Задания В2, В5. Оператор присваивания в языке программирования Задание В2 – базовый уровень, время – 2 мин.
Тема: Управление потоком в PHP Изучить возможности языка PHP при решении задач, требующих использования условного оператора. Рассмотреть примеры управления.
Теперь, когда вы постигли азы программирования, будем учиться писать программы, которые позволяют вести диалог между компьютером и человеком (пользователем).
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
Циклы на языке Pascal повторение. Циклы позволяют многократно выполнять одну или группу команд, причем в тексте программы нет необходимости записывать.
Циклы в C++. Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. В этом уроке мы научимся программировать.
Алгоритмическая структура цикл Алгоритм циклической структуры - это алгоритм, в котором происходит многократное повторение одного и того же участка программы.
«Программирование циклических алгоритмов» Учитель информатики гимназии 12 г. Тюмени Бугаева Елена Викторовна.
Цикл - это специальная конструкция языка, позволяющая запрограммировать многократное выполнение определённого блока команд Итерация - это каждый проход.
Программирование
Организация повторений в Паскале. Найди ошибки: Program new Uses crt; Var a, b, c integer Begin clrscr Readln(a,b); C:=a*a+b*b Wreteln(c); End.
Часть 1 Простейшая программа Программа на языке QBASIC состоит из последовательности инструкций – команд компилятору. Если в строке записано несколько.
1 Бурибаев Бахыт Бурибаевич
АЛГОРИТМИЧЕСКАЯ СТРУКТУРА «ПОВТОРЕНИЕ» («ЦИКЛ») В ЯЗЫКЕ QBASIC Презентацию разработал Мащенко П.С., учитель МБОУ СОШ 2 муниципального образования Щербиновский.
Презентация на тему: «Программирование циклических структур». Составила: учитель информатики Чура Н.А. Составила: учитель информатики Чура Н.А.
Транксрипт:

1 Бурибаев Бахыт Бурибаевич

2 ВОПРОСЫ: 1. Цикл while 2. Цикл for 3. Команды break и continue 4. Программирование циклов с конца 5. Описание переменной цикла 6. Встроенные функции JavaScript 6.1. Константы 6.2. Стандартные функции 6.3. Функции пользователя

3 1. Цикл while В табл. показан общий вид цикла while и пример его использования. Общий вид while (условие) команда; Результат работы примера: Пример var i = 1; var sum = 0; while(i <= 100) { sum += i; i ++; } alert("Сумма = " + sum);

4 Цикл работает так. Сначала проверяется условие. Если оно истинно, выполняется команда (тело цикла). И эти действия повторяются, т.е. снова проверяется ус-ловие,и если оно истинно, выполняется тело цикла,и т.д. Цикл заканчивает работу, когда при оче-редной проверке условие оказывается лож-ным. Так как условие проверяется перед выполнением тела цикла, то команды, входящие в цикл, могут не выполниться ни разу.

5 2. Цикл for В табл. показан общий вид цикла for и выполнение предыдущего пример а с этой командой. Общий вид for(начало;условие ; приращение) команда; Результат работы примера: Пример var i; var sum = 0; for(i=1; i<=100; i ++) sum += i; alert ("Сумма = " + sum);

6 Результат работы приведенного примера тот же, что и предыдущего. Цикл работает так. Команда, помещаемая в начало, выполняется до циклического повторения (в примере это команда i = 1;), а сам цикл образуете следующими действиями: - проверка условия (в примере i <= 100); - выполнение тела цикла (в примере sum+= i); - выполнение команды, записанной в разделе приращение (в примере i ++).

7 Как и в команде while, тело цикла может не выполниться ни разу, если условие ложно с сам-ого начала. Не выполнится при этом и команда из разделов приращение. А вот команда из раз-дела начало выполняется всегда, независимо от условия, и выполняется ровно один раз. В заголовке цикла for любая из трех конструк-ций начало, условие, приращение может быть опущена, при этом соответствующую точку с запятой опускать нельзя. Когда опущено условие, считается, что оно имеет значение true. Таким образом, цикл превращается в бесконечный: for (;;) команда Этот цикл не остановится, если только не будет содержать внутри себя команду break.

8 3. Команды break и continue Эти команды используют в теле цикла для изменения последовательного хода выполнения команд. Команда continue заставляет браузер пропустить выполнение всех команд после нее и до конца тела цикла. Но цикл продолжается. Команда break еще радикальнее она заставляет браузер немедленно прекратить выполнение цикла.

9 Пример 1 (continue). Найти сумму 5 четных чисел, случайным образом взятых из диапазона [1,20]. var len = 5; // Количество чисел. var a = 1; // Левая граница интервала. var b = 20; // Правая граница интервала. var sum = 0; // Сумматор. var counter = 0; // Счетчик чисел. var number; // Случайное число. var str = " "; // Строка для вывода. while (counter < len) { number = Math.floor(a + (b-a+1)*Math.random()); if (number % 2) continue; sum += number; str += number; if (counter < len-1) str += " + "; else str += " = "; counter++; } str += sum; alert(str);

10 При запуске этого пример а на экран выводится сл. рисунок. Стандартная функция Math.random() генерирует случайное число из отрезка [0,1]. Стандартная функция Math.floor(num) возвращает ближайшее целое число, меньшее или равное аргументу.

11 Пример 2 (break). Целые числа случайным образом генерируются из диапазона [1,20]. Требуется сумми-ровать эти числа до тех пор, пока очередное случайное число не станет равным 10. var a = 1; // Левая граница интервала. var b = 20; // Правая граница интервала. var special = 10; // Критическое значение // случайного числа. var sum = 0; // Сумматор. var number; // Случайное число. var str = ""; // Строка для вывода. for ( ; ; ) // Бесконечный цикл. { number = Math.floor(a + (b-a+1)*Math.random( )); sum += number; str += number ; if (number == special) break; str += " + "; } str += " = " + sum; alert(str);

12 Результат работы примера может быть таким, как на верхнем рис. или таким, как на нижнем рис.

13 Пример 3. Дана функция Требуется найти значения у при изменениях аргумента х от 0 до 3 с шагом 0,5. Печатать значения х и у до тех пор, пока очередное значение х не станет равным 3. var x 0 = 0; // Начальное значение х var x k = 3; // Конечное значение х var dx = 0.5; // шаг изменения х var x=x0; // Присвоение х начального значения var y; // Объявление переменной у while (x =< xk) { y = x*x - Math.sqrt(x) +1.5; alert(" x= " + x + " y= " + y); x+=dx ; }

14 Если вывести все в одном окне,то нужно использовать вместо alert команду печати document.write

15 Результат работы этого примера с командой печати:

16 Пример 4. Дана функция Требуется ввести значения х и найти значения у var x = prompt("Введите значение х:", "1"); y = (x <= 0) ? x*x+x+1:x-Math.sqrt(x+1); alert ("x="+x+" y=" + y); Теперь попробуем изменить х от 0 до 3 с шагом 0,5 и определить значения у

17 var x0 = 0; // Начальное значение х var xk = 3; // Конечное значение х var dx = 0.5; // шаг изменения х var x = x0; // Присвоение х // начального значения var y; // Объявление у while (x =< xk) { y = x*x - Math.sqrt(x) +1.5; alert(" x= " + x + " y= " + y); x+=dx ; }

18 4. Программирование циклов с конца В сл. примере подсчитать сумму элементов массива set мож-но таким образом (нумерация элементе массива начинается с нуля; set.length – свойство массива – его длина): var sum = 0; for(var i=0; i < set.length; i++) sum += set[i]; А можно и так: var sum = 0; for(var i = set.length; -- i >= 0; ) sum += set[i]; Второй способ предпочтительнее.Сравнение с нулем обычно более эффективно, чем сравнение с другим чис-лом.Иными словами «-- i >= 0» работает быстрее, чем «i < set.length». Общее правило: в цикле со счетчиком значение счетчика должно по возможности уменьшаться до нуля.

19 В сл. примере найдено 10!= 1*2*...*10 var proizvedenie = 1; for(var i=10; i; --i) proizvedenie *= i; alert("10!=1 * 2 *...* 10 = "+proizvedenie); Результат этой программы: Заметим, что следующий вариант: var sum = 0; for(var i = set.length; (i --) >= 0; ) sum += set[i]; является ошибочным,в нем уменьшение i на единицу происходит после проверки условия, а не до, как в правильном варианте.

20 В JavaScript можно написать так: for(var i = 100; i; i --)... – или так: var i; for(i = 100; i; i --)... Для браузера эти записи эквивалентны. Вспомним, что в конструкции цикла: for(начало; условие; приращение) команда; команда начало выполняется один раз перед первым оборотом цикла. Поэтому ясно, что переменная i не определяется 100 раз описателем var. 5. Описание переменной цикла

21 Рекомендации такие: –счетчик цикла i можно описывать там же, где описываются другие переменные в начале функции или скрипта; –счетчик обязательно нужно описывать в общем месте, если он используется в нескольких циклах; –если в функции цикл единственный, то можно записывать for (var i = …,…; …) это красиво, и подчеркивает вспомогательный характер переменной i, недостойной более «солидных» описаний.

22 Если какая-то переменная digit, используется как рабочая внутри цикла и не имеет смысла вне его, то разумнее объявить ее локальной внутри этого цикла, чем объявлять ее в начале функции с комментарием «рабочая переменная цикла такого-то». Однако, в команде while для JavaScript сл. запись: while (...) { var digit = } эквивалентна такой: var digit;... while (...) {... Digit =...}

23 6. ФУНКЦИИ в JavaScript Все стандартные математические функции и часто используемые константы представлены в качестве методов математического объекта – Math и их свойств. Объект Math является встроенным объектом JavaScript. Вы ссылаетесь на константу PI как Math.PI. Константы определены в JavaScript с точностью до 15-знака после запятой. Аналогично, вы ссылаетесь на функции Math как на методы. Например, функция синуса - Math.sin(argument), где argument является аргументом функции.

Стандартные константы 1. Основание натурального логарифма - Е. Пример: Alert(Math.E) 2. Натуральный логарифм числа 10 – LN10. Пример: Alert(Math.LN10) 3. Натуральный логарифм числа 2 – LN2. Пример: Alert(Math.LN2)

25 4. Число ПИ – PI Пример: Alert(Math.PI) 5. Квадратный корень из 1/2 – SQRT1_2 Пример: Alert(Math.SQRT1_2) 6. Квадратный корень из 2 – SQRT2 Пример: Alert(Math.SQRT2)

Стандартные функции 1. Aбсолютное значение аргумента – abs(arg) Пример: var x = -25; var y y = Math.abs(x); alert(y); 2. Тригонометрические функции: sin (arg), cos(arg), tan(arg) Пример: var x = Math.PI/4; var y y = Math.sin(x); alert(y); 3. Обратные тригонометрические функции: a sin (arg), acos(arg), atan(arg) var x = 0.5; var y y = Math.asin(x); alert(y);

27 4. Экспонента и натуральный логарифм: exp(arg), log(arg) var x = 1; var y y = Math.exp(x); alert(y); 5. Ближайшее целое число, большее или равное аргументу: ceil(arg) var x = -2.69; var y y = Math.ceil(x); alert(y); 6. Ближайшее целое число, меньшее или равное аргументу: floor(arg) var x = -2.69; var y y = Math.floor(x); alert(y);

28 7. Округляет аргумент до ближайшего целого: round(x) var x = -2.69; var y = Math.round(x); alert(y); 8. Экспонента и натуральный логарифм: exp(arg), log(arg) var x = 1; var y y = Math.exp(x); alert(y); 9. Корень квадратный из аргумента: sqrt(arg) var x = 3; var y y = Math.sqrt(x); alert(y);

Максимальное или минимальное значение из двух числовых аргументов: max(arg1, arg2), min(arg1, arg2) var x = 3; var y = Math.min(x,10); alert(y); 11. Число в степени : pow(arg1, arg2) Вычисляет arg1 в степени arg2 var x = 2; var y = Math.pow(x,10); alert(y); 12. Выдает случайное число из диапазона [0,1]: random() alert(Math.random());

Функции пользователя В программировании часто бывает нужно повторять несколько раз одну и ту же группу команд. Если повторение происходит «на месте» используют цикл (while, for). Если код нужно повторять в разных местах программы его оформляют в виде функции пользователя. Описание и вызов функции. В самом деле, если уж нужно вычислить длину (количество цифр) целого положительного числа, то логичнее проделать это один раз, а затем спокойно писать, как в математике F(num), не задумываясь над «анатомией» функции f и не повторяя ее кода заново. Пусть, например, пользователь последовательно вводит три числа, а программа вычисляет общее количество цифр.

31 Пример: // Количество цифр в целом положительном числе num. // Вход: num (целое положительное число). // Выход: количество цифр в num. function F(num) { var len = num ? 0 : 1; while(num) { num = (num - num % 10) / 10; len ++; } return len; } var sum = 0; var num1, num2, num3; num1 = prompt("Введите первое число", ""); sum += F(numl) ; num2 = prompt("Введите второе число", ""); sum += F(num2) ; num3 = prompt("Введите третье число", ""); sum += F(num3) ; alert("Общее число введенных цифр: " + sum);

32 Браузер выполняет этот скрипт так. Запись: function F(num) {... } принимается во внимание, но команды в ней не выполняются. Браузер делает пометку: «было описание функции с именем F». Так происходит потому, что ключевое слово function и следующий за ним блок {...} являются не командой, а декларацией (описанием). Команды, следующие за описанием функции, выполняются как обычно. При этом каждый раз, когда в коде попадается обращение к F, браузер воз­вращается к описанию функции и выполняет ее команды, подставляя вме­сто формального аргумента num фактические переменные num1, num 2, num3.

33 На самом деле буквальной подстановки не происходит. Браузер перед вычислением функции F выполняет команду присваивания: num = num1; При обращении F(numl); num = num2; При обращении F(num2); num = num3; При обращении F(num3). В общем случае описание функции на языке JavaScript выглядит так: function Имя Функции(список формальных аргументов через запятые) {... тело функции... return значение; }

34 Команда return, возвращающая значение функции, может быть не одна, а может и вовсе отсутствовать. В последнем случае функция не возвращает никакого значения, и ее вызов нельзя использовать в выражениях. В частности, вызов функции, не возвращающей значения, не может быть использован в команде присваивания. Команда вызова функции имеет вид: Имя Функции(список фактических аргументов через запятые) Фактическим аргументом функции может быть константа, переменная, выражение или число.

35 Имя F нельзя считать хорошим для описанной выше функции. В примере это имя использовано для «смягчения» перехода от математики к программированию. Ведь в математике функции обозначаются, как правило, одной буквой. Для програм- мирования однобуквенное имя редкое исключение. По одной букве трудно догадаться о назначении функции. В нашем случае имя DlinaChisla или LenOfNumber вместо F было бы гораздо лучше.

36 Длина имен функций и переменных в JavaScript не ограничивается, но имя должно быть одним словом (без пробелов). Имя строится из латинских букв, арабских цифр, знаков подчеркивания и некоторых других (не реко­ мендуемых) специальных знаков. Русские буквы использовать нельзя. Первым символом имени должна быть латинская буква или знак подчеркивания. Регистр букв имеет значение. Например, имена « LenOfNumber » и « Lenofnumber » считаются разными.

37 Проектирование «сверху вниз» Ранее говорилось, что функция используется тогда, когда нужно повторять один и тот же код в разных местах программы. Понятно, что функция удобна и тогда, когда предполагается использовать ее в разных программах. В программировании популярны наборы библиотечных функций. Ввод и вывод данных, математические вычисления, создание окон, обработка щелчков мыши и перемещений все это требуется практически в любой прикладной программе. Ясно, что есть смысл хорошо запрограммировать эти функции один раз. Так и делают. Некоторые наиболее популярные функции становятся даже элементами систем программирования (как функции alert и prompt они закодированы в самом браузере).

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

39

40 Задача. Написать программу, которая формирует HTML-код клетчатого поля, в котором чередуются темные и светлые клетки Решение методом «сверху вниз» Построим изображение поля при помощи HTML- таблицы. Код таблицы будем формировать как значение строковой переменной. Сначала опишем функцию, которая должна решать поставленную задачу целиком. // Функция field(row, column, bcolor, wcolor) // возвращает HTML-код таблицы, изображающей // клетчатое поле.

41 // Аргументы: //row - число строк. //column - число столбцов. //bcolor - цвет темной клетки. //wcolor - цвет светлой клетки. function field(row, column, bcolor, wcolor) { // Формируем код начала таблицы. var str = "<TABLE border = 1 cellspacing = 0 cellpadding = 10 >"; // Добавляем коды табличных строк. str += lines(row, column, bcolor, wcolor); // Добавляем код конца таблицы. str += " "; < return str; }

42 Этап 2. Подумаем о том, как должен быть устроен формирователь табличных строк. // Формирователь табличных строк. // Функция lines(row, column, bcolor, wcolor) // возвращает HTML-код всех табличных строк. // АРГУМЕНТЫ: // row - число строк. column - число столбцов. // bcolor - цвет темной клетки. // wcolor - цвет светлой клетки. function lines (row, column, bcolor, wcolor) { var str ="";// Накопитель кода. var numpair = Math.floor(row / 2); // Число пар строк. // Строим коды строк таблицы парами. for(var i = 0; i < numpair; i ++) { // Формируем код нечетной табличной строки. str += lineOddfcolumn, bcolor, wcolor); // Формируем код четной табличной строки. str += lineEven(column, bcolor, wcolor); // Строим дополнительно "нечетную" строку, если число строк нечетно. if{row%2) str += lineOdd(column, bcolor, wcolor); return str; }

43 Этап 3. Теперь можно заняться проектированием функций lineOdd и lineEven, которые строят соответственно нечетную и четную табличные строки. Функция lineOdd должна начинать строку с темной клетки, а функция lineEven co светлой. // Функция lineOdd(column, bcolor, wcolor) // возвращает HTML-код нечетной строки таблицы. // Аргументы: //column - число ячеек в строке. //bcolor - цвет темной клетки. //wcolor - цвет светлой клетки. function lineOdd(column, bcolor, wcolor) { // Формируем код начала табличной строки. var str = " "; var numpair = Math.floor(column /2); // Число пар клеток. // Формируем коды клеток парами. for(var i = 0; i < numpair; i ++) { // Строим код нечетной табличной клетки. str += cell (bcolor); // Строим код четной табличной клетки. str += cell(wcolor); } // Строим дополнительную клетку, если число клеток нечетно. if(column%2) str += cell (bcolor);

44 // Формируем код конца табличной строки. str += " "; return str; } // Функция lineEven(column, bcolor, wcolor) // возвращает HTML-код четной строки таблицы. // Аргументы: //column - число ячеек в строке. //bcolor - цвет темной клетки. //wcolor - цвет светлой клетки. function lineEven(column, bcolor, wcolor) { // Формируем код начала табличной строки. var str = " "; var numpair = Math.floor(column /2); // Число пар клеток. // Формируем коды клеток таблицы парами. for(var i = 0; i < numpair; i ++) { // Строим код нечетной табличной клетки. str += cell(wcolor); // Строим код четной табличной клетки. str += cell(bcolor); } // Строим дополнительную клетку, если число клеток нечетно. if (column % 2) str += cell(wcolor); // Формируем код конца табличной строки. str += " "; return str; }

45 Этап 4. Остается только описать функцию cell, которая строит HTML-код отдельной табличной клетки. // Функция cell(color) // возвращает HTML-код табличной клетки. // Аргументы: //color - цвет клетки function cell(color) { return " "; }

46 построение таблицы field построение строк lines построение строк lineOdd, lineEven построение клетки cell Построенная программа описывается иерархической схемой, которая соответствует этапам нисходящей разработки