Пример №5. напечатать числа в виде следующей таблицы

3 3 3 3 3

3 3 3 3 3

3 3 3 3 3

3 3 3 3 3

Данная таблица состоит из четырех строчек, в каждой из которых число 3 напечатано 5 раз. Строчку из пяти чисел можно напечатать с помощью одного цикла for: for i:=1 to 5 do

write(3, ‘ ‘);

Чтобы повторить вывод строчки 4 раза, вставляем этот цикл внутрь другого: for k:=1 to 4 do

{4 раза делаем то, что написано между begin’ом и end’ом}

begin

for i:=1 to 5 do

write(3, ‘ ‘); {Выводим одну строку}

writeln; {Переводим курсор на следующую строку}

end;

Типичная ошибка, когда в качестве счетчиков вложенных циклов (i и k в приведенном примере) используется одна и та же переменная. То есть нельзя в каждом из циклов использовать одну переменную i. Помнить об этом особенно важно, поскольку данная ошибка не обнаруживается на этапе компиляции. Ваша программа запустится, но делать будет вовсе не то, что вы от нее ждете.

В приведенном примере (если допустить ошибку, заменив переменную k на i) внешний цикл выполнится всего 1 раз вместо 4-х. Возможна также ситуация, когда такая ошибка приведет к зацикливанию: внешний цикл будет выполняться бесконечно долго – программа зависнет.

Рассмотрим еще один пример.

Пример №6. Напечатайте числа в виде следующей таблицы:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

Снова используем внешний цикл для вывода строк, а внутренний для отдельных чисел в одной строке. Используем также отдельную переменную-счетчик n, в которой будет храниться выводимое число. n:=1;

for i:=1 to 4 do

begin

for k:=1 to 4 do

begin

write(n, ‘ ‘);

n:=n+1;

end;

writeln;

end;

Дополнительная переменная-счетчик (n) здесь введена для большей прозрачности алгоритма. Заметив, что всегда выполняется n = (i-1)*4+k, можно обойтись без нее.

Разумеется, ту же задачу можно решить без вложенных циклов (вообще говоря, обойтись без них можно всегда). Например, заметив, что числа, стоящие в конце каждой строки делятся на 4, делаем так: for n:=1 to 16 do

begin

write(n, ‘ ‘);

if n mod 4 = 0 then

writeln;

end;

Однако решения, основанные на вложенных циклах, как правило, интуитивно понятнее, их проще придумывать. Это связано с такой фундаментальной идеей программирования как разделение задачи на подзадачи. Выделяется отдельная часть решения задачи (вывод одной строки в приведенных примерах), затем с помощью внешнего цикла она выполняется много раз.

Типичные ошибки при написании вложенных циклов:

1. Наиболее частая ошибка – использование одной и той же переменной-счетчика для внешнего и внутреннего циклов. Выше она уже упоминалась.

2. При решении некоторых задач необходимо, чтобы одна переменная-счетчик на каждом шаге увеличивалась, а другая при этом уменьшалась. Следуя непостижимыми (для человека наделенного формально-логическим складом ума) путями интуитивного мышления многие студенты для решения этой задачи приходят к конструкции вида: for i:=1 to n do

for k:=n downto 1 do …

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

Напомним, что в качестве пределов изменения переменной-счетчика цикла можно использовать произвольное выражение, дающее результат целого типа: for i:= todo …

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

Индивидуальные задания

Задание №1 (Все 3 варианта решения задачи оформить с помощью блок-схем)

Составить три программы ( используя три вида операторов циклаWhile, Repeat и For.), каждая из которых выводит на экран ваши Фамилию и Имя n+5 раз ( n – ваш номер в журнале).

Задание №2 _Вычисление суммы членов некоторого ряда(блок-схему разрабатывать не надо)

Вычисление значение суммы ряда: ( задачу решить с использованием оператора цикла For). (N-количество членов ряда (вводится с клавиатуры.)

Задание 2.1_Вычисление значение суммы ряда, если общий член ряда не задан в явном виде.

Задание 2.2_Вычисление значение суммы ряда, если общий член ряда задан в явном виде. N-количество членов ряда (вводится с клавиатуры.)

Ряд

Задание №3 (Все 2 варианта решения задачи оформить с помощью блок-схем)

Составить программу вычисления значений функции F ( X ) на отрезке [A , B] в точках X i = A + iH, где H – шаг , A-начало отрезка, B-конец отрезка .

Указания

Результаты решения задачи представить в виде таблицы. Предусмотреть рассмотрение случаев, когда значение функции нельзя вычислить( функция не определена). Задачу решить 2-мя способами: с использованием операторов цикла While, Repeat. (смотри образец решения задачи в практической части работы).

К каждому варианту разработать блок-схему.

Функция F ( X ) A B H
-2
0.2 2.2 0.1
-1
lg(3x+0.5) -1 0.5
( )/x -2
sin (x)-5/x — ? 2 ?
cos (1/x)/(7*x) — ? ?
2.4 0,1
-1
0.5
-10
-5 0.5
ln(x -5x+5) -10
-10
-4 0,2

Задание №4- Заставка к фильму «Матрица с дополнительными условиями»

Составить программу имитации заставки к фильму “Матрица”, которая выводит на экран заглавные буквы латинского алфавита зеленого цвета со случайными координатами.

Дополнительное задание: внести изменения в программу таким образом чтобы:

  1. цветпадающих букв на экране был случайным,
  2. вместобукв падали цифры,
  3. падающиебуквы не оставляли след .

Задание №5 Задача на использование вложенных циклов (решаем одну любую из предложенных задач)

  1. вычислить значение суммы . (в качестве подсказки смотри решение примера №4)
  2. (в качестве подсказки смотрирешение примера №5)

Вычислить значение выражения:

(Эту задачу нужно решать с конца, т.е., использовать цикл с уменьшающимся счетчиком – находим сначала корень из 10.)

Рандомно подобранные статьи с сайта:

Все о таблицах в программе Word


Похожие статьи:

admin