Цикл со счетчиком – Счетчик цикла


§ 62. Цикл со счетчиком

Изучив этот пункт, мы:

Познакомимся с циклами, которые предупреждаются заданное количество раз; узнаем, как выполняются команда повторения Для И оператор цикла For; выясним, что такое датчик случайных чисел и Как Его используют; узнаем, как создаются программы-тренажеры.

==== 62.1.Повторение заданное количество раз. Счетчик цикла =====================

В алгоритмах с циклами, которые мы рассматривали ранее, количество повторений цикла до начала его исполнения не была известной. Цикл завершал свою работу по результатам проверки условия цикла. Однако существует много задач, где повторение определенных действий должны проходить заданное количество раз. Например, для вычисления таблицы значений функции на промежутке от A до B с шагом H цикл должно повторяться 1+ (ba) / H раз.

В циклах с заданным количеством повторений используют специальную переменную целого типа

Счетчик цикла. Для счетчика цикла устанавливается перечень его значений. Цикл выполняется столько раз, сколько значений содержится в перечне. Каждое последующее прохождение цикла происходит с очередным значением счетчика. Так, для расчета таблицы кубов всех целых чисел от 1 до 30 цикл должна повториться 30 раз, счетчик цикла приобретать значений: 1, 2, …, 30, и для каждого значения будет исчисляться его куб.

Перечень значений счетчика задается его первоначальным значением, шагом изменения и конечным значением, за черту которого выходить нельзя. Например, если задано начальное значение счетчика 2, пункт 4, конечное 12, то счетчик будет приобретать значений 2, 6, 10.

Цикл со счетчиком можно реализовать с помощью команды повторения Пока (или оператора цикла While):

Счетчик = начальное_значение Счетчик = начальное_значение;
Пока

Счетчик <= кинцеве_значення

While

Счетчик <= кинцеве_значення Do

Пс Begin
<Команды тела цикла> <Операторы тела цикла>
Счетчик = счетчик + шаг Счетчик = счетчик + шаг;
Кс End;

==== 62.2.Команда повторения Для И оператор цикла For ===========================

Для образования цикла со счетчиком в НАМ существует специальная команда, которая называется

Командой повторения со Счетчиком, или Командой Для.

Команда Для образуется с использованием служебных слов Для того, От, До, Шаг:

Для счетчик От начальное_значение К кинцеве_значення Шаг шаг

<Тело цикла>

Если тело цикла состоит из более чем одной команды, то они объединяются в одну сложенную команду, то есть размещаются между служебными словами Пс и Кс.

Счетчик является обязательно переменной целого типа, ее начальное и конечное значение, а также

Шаг задаются целыми значениями или выражениями, приводят к целых значений.

Если значение счетчика цикла Увеличиваются с шагом 1, то слова Шаг 1 можно пропустить.

Аналогом команды Для   в языке Паскаль является Оператор цикла со счетчиком, или Оператор For, который образуется с применением служебных слов For (для), To (до) или Downto (вниз к), Do (делать) и знака присвоение (вместо слова «От»).

Счетчиком, как и в НАМ, может быть только переменная целого типа, начальное и конечное значение которой задаются целыми значениями или выражениями, приводят к целых значений. Шаг изменения значений счетчика может равняться только +1 или -1. Итак, счетчик приобретает в Сих Подряд целых значений от начального до конечного.

Для растущих значений счетчика (шаг 1) в операторе цикла For используется служебное слово To:

For счетчик = начальное_значение To кинцеве_значення Do

<Тело цикла>;

Для ниспадающих значений счетчика (шаг -1) в операторе цикла for используется служебное слово downto:

For счетчик = начальное_значение Downto кинцеве_значення Do

<Тело цикла>;

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

Рассмотрим примеры применения оператора for.

Оператор Значения, выводимые на экран
For n = 1 To 4 Do write (2 * n: 3); 2 4 6 8
For n = 4 Downto 1 Do write (2 * n: 3); 8 6 4 2
M = 2;

For n = m-1 To sqr (m) Do write (2 * n: 3);

2 4 6 8

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

==== 62.3.Программа «Таблица значений функции» ==================================

Разработаем программу для вывода на экран таблицы значений кубов целых чисел от 1 до

20. Обозначим числа через x, а их кубы через y. Цикл должно выполняться 20 раз — для каждого значения x. Итак, переменную x используем как счетчик цикла.

Будем выводить значение x и y в таблицу с заголовком «Таблица значений кубов чисел», которая содержит два столбца, помеченные как x и y. Запишем программу.

Program table_of_function;

Uses Crt;

Var x, y: Integer; Begin

Clrscr;

Writeln ( ‘Таблица значений кубов цифр ‘); {Заголовок таблицы}

Writeln ( »);

Writeln ( ‘x’: 7, «y»: 14) {Выведем заголовки столбцов Таблицы}

Writeln ( ‘—————————————-‘);

For x = 1 To 20 Do begin

Y = x * Sqr (x) {Находим куб Числа}

Writeln (x 7, y: 14) {Выводим на экран значение x и Y}

End; Readln;

End.

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

Для вычисления таблицы значений функции y (x) с шагом h, где h ≠ 1, для x от x0 до xk

Цикл можно организовать следующим образом:

N = 1 + Trunc (xk-x0) / h; x = x0;

For i: = 1 To n Do begin

Y = …; Writeln (x, y) x = x + h;

End;

==== 62.4.Датчик случайных чисел. Функция random и ее использование ===============

В Паскале можно использовать встроенный Датчик случайных чисел — программу, которая генерирует один за другим числа случайным образом. На самом деле последовательность чисел соответствует определенной закономерности, но она задана таким образом, что почти не отличается от случайной.

Чтобы воспользоваться датчиком случайных чисел, его нужно запустить оператором Randomize (от англ. Random случайный, выбранный наугад).В таком случае дальше в программе можно получать случайные числа с помощью Функции random (n), где n является целым положительным числом. Эта функция возвращает целое число, случайным образом выбранное из диапазона чисел от 0 в n-1.

Например, в результате выполнения оператора y = Random (5); переменная y может получить одно из значений: 0, 1, 2, 3, 4.Какое именно — будет выбрано случайным образом.

Для того чтобы переменная y приобрела случайного значения из диапазона от n1 до n2 включительно, нужно воспользоваться оператором:

Y = n1 + Random (n2-n1 + 1);

Так, если мы хотим выводить на экран разноцветные символы, то аргумента n

Оператора Textcolor (n) можно придавать значения, выбранные из диапазона от 1 до 15:

N = 1 + Random (15);

Приведенная ниже программа демонстрирует работу датчика случайных чисел. Программа подсчитывает и выводит на экран количество единиц (n1), двоек (n2) и троек (n3), полученных с помощью многократного использования функции Random.

Program one_two_three;

Uses Crt;

Var i, x, n1, n2, n3: Integer;

Begin Clrscr;

Randomize; {Запускаем датчик случайных Чисел}

N1: = 0; n2 = 0; n3 = 0;

{До начала работы датчика n1 = n2 = n3 = 0}

For i: = 1 To 30000 Do {Опробуем 30000 случайных Чисел}

Begin

X = 1+ Random (3); {Достаем число 1, 2 Или 3} If x = 1 Then n1 = n1 + 1; {Если это 1, то увеличиваем количество единиц} If x = 2 Then n2 = n2 + 1; {Если это 2, то увеличиваем количество двоек} If x = 3 Then n3 = n3 + 1; {Если это 3, то увеличиваем количество троек} Gotoxy (1, 5); {Выходим в первую позицию 5-й строки} Writeln ( ‘Количество единиц: «, n1: 8); {Выводим данные}

Writeln ( ‘Количество двоек: «, n2: 8); {в одно и то Именно}

Writeln ( ‘Количество троек: «, n3: 8); {место на Экране}

Delay (100); {Задерживаем выполнения программы на 100 Миллисекунд}

End; Readln;

End.

Мы воспользовались оператором Delay для задержки выполнения программы на 100 миллисекунд, чтобы можно было наблюдать за изменением значений, выводимых на экран.

==== 62.5.Программа «Блуждающая звездочка» =======================================

Разработаем программу вывода на экран блуждающей звезды. Звездочка появляется в произвольном месте экрана, гаснет, появляется в другом и т. Д. Цвет звездочки и позиция, где она возникает, задаются датчиком случайных чисел. Для того чтобы «гасить» звездочку, будем повторно выводить ее в то самое место экрана цветом фона.

Приведем текст программы.

Program roving_star;

Uses Crt;

Var i, x, y: Integer; Begin

Textbackground (0);

Clrscr; {Очищаем Экран}

Randomize; {Запускаем датчик случайных Чисел}

For i: = 1 To 100 Do {Выводим 100 изображений Звездочки}

Begin

Textcolor (1 + Random (15)); {Выбираем цвет Звездочки}

X = 1+ Random (80); {Определяем случайным Образом}

Y = 1+ Random (25); {позицию Звездочки}

Gotoxy (x, y) {Ставим курсор в заданную Позицию}

Write ( ‘*’); {Выводим Звездочку}

Delay (1000); {Любуемся звездочкой 1 С}

Textcolor (0); {Задаем цвет Фона}

Gotoxy (x, y) {Ставим курсор в позицию Звездочки}

Writeln ( ‘*’); {Тушим Звездочку}

End; Writeln ( ‘Спокойной ночи!’); Readln;

Textcolor (7); Textbackground (0); {Возвращаем начальные Цвета}

Clrscr; End.

Оператор Delay (n) создает паузу в выполнении программы на заданное целое число миллисекунд. Ведь компьютер так быстро выполняет все действия, без введения задержки мы увидим на экране только конечный результат.

Обратите внимание: в нашей программе счетчик цикла в теле цикла никак не используется, он просто считает количество запусков цикла.

==== 62.6.Программа-тренажер «Таблица умножения» ==============================

Функция Random (n) позволяет создавать программы-тренажеры, которые предлагают пользователю один за другим задачи определенного типа, проверяют правильность предоставленных им ответов и выводят на экран сообщение о результатах работы пользователя.

Разработаем программу-тренажер на примере таблицы умножения. Обозначим через x и y числа, нужно перемножить, через z — результат умножения, введенный пользователем, через pv — количество правильных ответов пользователя. Количество заданий обозначим через k. Все перечисленные переменные являются переменными целого типа.

Program multiplication_table;

Uses Crt;

Const k = 20;

Var i, x, y, z, pv: Integer; Begin

Clrscr;

Randomize; {Запускаем датчик случайных Чисел}

Writeln ( ‘Вы помните таблицу умножения?’);

Pv = 0; {Перед началом работы предоставляем переменной pv нулевого Значение}

For i: = 1 To k Do begin

X = 2+ Random (8); {Определяем Множители}

Y = 2+ Random (8);

Write (x, ‘х’, y, ‘=’); {Выводим на экран Пример}

Readln (z) {Считываем ответ Пользователя}

If z = x * y {и проверяем ее Правильность}

Then pv = pv + 1; {Считаем правильные Ответы}

End;

Write ( ‘Общий счет «, pv,»: «, k-pv) {Выводим на Экран}

If pv > k-pv {результат работы пользователя с Программой-тренажером}

Then writeln ( ‘в вашу пользу.’);

If pv <k-pv

Then writeln ( ‘в мою пользу.’);

Readln; End.

Аналогичным способом можно разработать тренажер на решение уравнений определенного типа.

ВЫВОДЫ

Контрольные вопросы и упражнения

1. Циклом со счетчиком называют такой цикл, который повторяется: а) заранее известное количество раз;

Б) заранее неизвестную, но конечное число раз;

В) заранее известное количество раз согласно перечню значений некоторой целой переменной.

2. переменная s имеет значение 1. Определите значение переменной s после выполнения циклов:

1) For n = 2 To 5 Do s = s + n;

2) For n = 1 Downto -1 Do s = s + n;

3) For n = 1 To 4 Do s = s * n;

4) For n = 3 Downto 1 Do s = n-2 * s;

3. Определите, с которого диапазона целых чисел будет выбрано значение переменной k оператором:

K = 2 + Random (10);

А) от 2 до 12;

Б) от 3 до 12;

В) от 2 до 11;

Г) от 3 до 11;

Д) от -8 до 12.

4. В тело цикла:

Y: = 1;

Для и От 1 До n

·

Вставьте команду, необходимую для вычисления следующих функций: 1) Y = 1 + X 2 X + … + Nx;

2) Y = (x + 1) • (x 2) • … • (x + N)

3) Y = (… (x 1) • X 2) • X + …) • X + N;

4) Y = (… (1 + X) • 2 + X) • 3 + … + X)N.

Выберите ответ из предложенных: а) y = y * (x + i)

Б) y = x * y + i; в) y = i * x + y; г) y = x + i * y;

5. С кубических блоков построено четырехугольную пирамиду. Ее основой является квадрат с M 2 блоков, а на вершине находится 1 блок. Составьте программу подсчета количества блоков N, потраченных на строительство пирамиды, по известному значению M.

6. Составьте программу «Гадалка», которая предлагает пользователю загадать желание и для проверки, сбудется оно или нет, ввести целое положительное число N <1000.Программа подсчитывает, каких чисел больше — четных или нечетных — получено от датчика случайных чисел в результате 2 N +1 обращение к него, и выводит на экран соответствующее сообщение «сбудется» или «не сбудется».Настройте датчик так, чтобы он генерировал целые числа от 10 до 99.

7. Воспользуйтесь датчиком случайных чисел так, чтобы получать с его помощью только -1 или +1.Составьте игровую программу, которая предлагает пользователю угадать, каким будет очередной номер: 1 или 1.Если пользователь угадал, ему начисляется очко, иначе — компьютеру. Текущий счет игры выводится на экран. Игра ведется до заданного количества N попыток. Исследуйте, как меняется счет игры с ростом N.

8. Число 481 имеет замечательное свойство: если число 12 удвоить, приписать дело ноль, к результату прибавить и то же число 12 и полученную сумму умножить на 481, то в записи шестизначного результата трижды повторится число 12: 121212.Составьте программу проверки, сохраняет число 481 такое свойство для других двузначных чисел, кроме 12.Объясните полученные результаты. Сделайте вывод о найденной свойство числа 481. Попробуйте доказать ее аналитически.

9. Из зоопарка сбежал крокодил. В полночь он оказался на перекрестке дорог. Там он наугад выбрал дальнейшее направление движения — на север, юг, восток или запад. Через час он преодолел квартал и на перекрестке сделал так же. Таким образом крокодил бродил до семи утра. Составьте программу, которая моделирует движение беглеца и выводит на экран совет, где его следует Искать.

10. Нетрудно убедиться, что 9 • 1 + 2 = 11; 9 • 12 + 3 = 111; 9 • 123 + 4 = 1111.Составьте программу проверки, имеет место такое свойство числа 9 и для больших чисел. Докажите аналитически правильность полученного результата.

11. Составьте программу-тренажер для проверки правильности решения уравнений вида:

1) A + Bx = C. Указание: значение A, B, X определите с помощью датчика случайных чисел, значения C вычислите как A + Bx;

2) X 2 + Bx + C = 0.Указание: значение X 1, X 2 определите с помощью датчика случайных чисел, значение B, C — с помощью теоремы Виета.

12 Составьте программу создания подвижного объекта на экране. Например, условной фигурки, которая выполняет зарядку, или снимает и надевает шляпу, или перемещается по экрану тому подобное.

[Всего голосов: 3    Средний: 5/5]

Читать  Управление динамической памятью в Турбо Паскаль