СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Разработка алгоритмов циклов типа ПОКА

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Разработка алгоритмов циклов типа ПОКА»

Тема: "Разработка алгоритмов циклов типа ПОКА".

Цель работы: 

Получение практических навыков по разработке алгоритмов циклов типа ПОКА.


Количество часов на выполнение работы

Продолжительность выполнения данной практической работы составляет 1 академический час.


Оборудование

Аппаратное обеспечение: персональный компьютер следующей конфигурации:

  • процессор не ниже Intel i3;

  • жесткий диском со свободным объемом не менее 1 Гб;

Программное обеспечение:

  • операционная система Windows 7 / 8 / 8.1 / 10.

  • установленная среда программирования PascalABC.


Краткие теоретические сведения

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

Цикл While используется для повторения оператора (группы операторов) произвольное число раз, которое может быть заранее и не известно, причем проверка условия выполнения тела цикла происходит перед выполнением тела цикла.

Синтаксис оператора:

while условие do оператор;

или

while условие do

begin

оператор1;

оператор2;

....

end;

Суть выполнения оператора заключается в проверке логического условия, если оно оказывается истинным, выполняются операторы тела цикла до тех пор, пока логическое условие не станет ложным. Если условие было ложным перед выполнением цикла, то операторы цикла никогда не выполняются. Если условие остается истинным всегда, то цикл никогда не закончится. Говорят, что программа зацикливается.

Цикл repeatuntil похож на цикл while. Его синтаксис:

repeat

оператор1;

оператор2;

....

until условие;

Обратите внимание, что, несмотря на несколько операторов в теле цикла, begin и end отсутствуют. Сам оператор представляет собой скобки. Цикл начинается с выполнения операторов, затем проверяется условие, если оно ложно, то цикл повторяется, а если истинно, то завершается. Если условие истинно и перед выполнением цикла, то цикл выполняется один раз. Если условие остается ложным всегда, то программа зацикливается.

Построим таблицу квадратов чисел от 1 до 10 с помощью цикла while и repeatuntil:

Program SquareW;

var i : integer;

begin

i:=1

while ido

begin

writeln(i:4,sqr(i):4);

i:=i+1;

end;

end.

Program SquareR;

var i : integer;

begin

i:=1

repeat

writeln(i:4,sqr(i):4);

i:=i+1;

until i10;

end.

Рассмотрим следующий пример. Необходимо построить вложенные друг в друга концентрические окружности. Радиус самой большой окружности – 400 пикселей, а радиус каждой вложенной – в два раза меньше предыдущей, т.е. 200, 100, 50, … Радиус последней – 1 пиксель. Для решения этой задачи разумно использовать цикл while или repeat until, поскольку действительно сразу сложно понять сколько будет окружностей (хотя, конечно, можно сосчитать).

Program Circles;

Uses GraphABC;

var r : integer;

begin

SetWindowSize(800,800);

r:=400;

repeat

circle(400,400,r);

r:=r div 2;

until r

end.


Program Circles;

Uses GraphABC;

var r : integer;

begin

SetWindowSize(800,800);

r:=400;

while (r=1) do

begin

circle(400,400,r);

r:=r div 2;

end;

end.

Рассмотрим еще один пример. Программа должна рисовать случайные расположенные окружности случайного цвета и случайного размера (но не больше 10 пикселей) до тех пор, пока пользователь не нажмет на какую либо клавишу.

Program Circles;

Uses GraphABC, CRT;

var r : integer;

begin

SetWindowSize(500,500);

repeat

SetBrushColor(random($FFFFFF));

circle(random(500),random(500),random(10));

delay(10);

until keypressed;

end.


Здесь используются несколько новых для нас приемов. Во-первых, функция keypressed, определенная в модуле CRT. Она возвращает значение true, если пользователь нажал любую клавишу. Оператор выбора цвета окружности SetBrushColor в качестве параметра использует значение random($FFFFFF). Аргумент функции random представляет максимально возможное числовое значение цвета, записанное в шестнадцатеричной системе исчисления, таким образом окружности будут заливаться случайным цветом от 0 (соответствует черному цвету) до $FFFFFF (соответствует белому цвету). К таким обозначениям цветов мы вернемся во время изучения языка HTML. Функция delay(n) выполняет задержку выполнения программы на n миллисекунд. Мы ее используем для того, чтобы окружности не выводились слишком быстро.


Задания по практической работе

  1. Даны положительные числа A и B (A B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A.

  2. Даны положительные числа A и B (A B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A.

  3. Даны целые положительные числа N и K. Используя только операции сложения и вычитания, найти частное от деления нацело N на K, а также остаток от этого деления.

  4. Дано целое число N (0). Если оно является степенью числа 3, то вывести TRUE, если не является — вывести FALSE.

  5. Дано целое число N (0), являющееся некоторой степенью числа 2: N = 2K. Найти целое число K — показатель этой степени.

  6. Дано целое число N (0). Найти двойной факториал N: N!! = N·(N−2)·(N−4)·... (последний сомножитель равен 2, если N — четное, и 1, если N — нечетное). Чтобы избежать целочисленного переполнения, вычислять это произведение с помощью вещественной переменной и вывести его как вещественное число.

  7. Дано целое число N (0). Найти наименьшее целое положительное число K, квадрат которого превосходит N: K2 N. Функцию извлечения квадратного корня не использовать.

  8. Дано целое число N (0). Найти наибольшее целое число K, квадрат которого не превосходит N: K2 ≤ N. Функцию извлечения квадратного корня не использовать.

  9. Дано целое число N (1). Найти наименьшее целое число K, при котором выполняется неравенство 3K N.

  10. Дано целое число N (1). Найти наибольшее целое число K, при котором выполняется неравенство 3K