Pascal: Занятие №3. Часть 3: Паскаль цикл for

На занятии изучается работа в Паскаль с циклом for — цикл с параметром или счетчиком. Рассматриваются примеры работы операторов Continue и Break в Паскале

Цикл со счетчиком в Паскаль (цикл for)

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

Блок-схема, соответствующая циклу For:
паскаль цикл for блок-схема

Ну или если на простом примере:

Пример: вывести пять раз слово «Привет!»

цикл for

Паскаль цикл For: синтаксис:

Прямое направление цикла (от меньшего значения к большему):

{при движении от меньшего значения к большему, например, от 1 до 10}
for счетчик:=значение to конечное_значение do 
  тело_цикла;

Обратное направление (от большего к меньшему):

{при движении от большего значения к меньшему, например, от 10 до 1}
for счетчик:=значение downto конечное_значение do 
  тело_цикла;

Решение на Паскале:
цикл for Паскаль

Оператор в теле конструкции может быть одиночным или составным оператором.

составной оператор в цикле for

Счетчик цикла или параметр цикла — это обычная переменная, которая может быть только порядкового (целочисленного, символьного, логического) или перечислимого типа.

При прямом направлении цикла счетчик в каждой итерации увеличивается на единицу, при обратном направлении — уменьшается на единицу.

Важно знать: счетчик (параметр цикла) нельзя изменять внутри тела цикла! Кроме того, нельзя менять его начальное и конечное значения.

Рассмотрим на решенном примере, как используется в Паскаль цикл for:

Пример: Печатать «ноль» указанное количество раз
1
2
3
4
5
6
7
var i,n:integer;
begin
write ('количество раз');
readln(n);
for i:=1 to n do
  write(0);
end.

Более детально цикл со счетчиком в Паскале рассмотрен в видеоуроке:

Пример: Вывести на экран квадраты и кубы целых чисел от 1 до 8 (от a до b). Реализовать двумя способами: 1. переменная цикла должна увеличиваться и 2. переменная цикла должна уменьшаться.

Решение в виде блок-схемы:
цикл с счетчиком

Решение на Паскале:

Вариант 1 Вариант 2
3 4
Задача 6. Найти среднее арифметическое чисел в Паскале, числа вводятся с клавиатуры, их количество произвольно. Использовать цикл for
Задача 7. Составить блок-схему по программе нахождения среднего арифметического в pascal.

Пример: Вывести на экран квадраты и кубы нечётных целых чисел от 1 до 9.

Решение:

Вариант 1
неэффективное решение
Вариант 2
эффективное решение
1 эффективное решение
Вариант 3
эффективное решение

1_11

Pascal: выход из цикла

Break и Continue

Для выхода из цикла предусмотрена процедура break в Паскале. Break досрочно прекращает выполнение циклов while, repeat и for.

Процедура Continue досрочно выходит из текущей итерации цикла, но, не завершая его, а переходя к следующей итерации.

Рассмотрим использование процедур выхода из цикла Continue и Break в Паскале (будем использовать цикл while):

Пример: Программа вывода на экран степеней двойки с использованием процедур break и continue
1
2
3
4
5
6
7
8
9
10
11
var a:integer;
begin
a:=1;
while a<1000 do
begin
      a:=a*2;
      if a=64 then continue;
      if a=256 then break;
      write(a:4); {4 позиции на вывод каждого числа}
end;
end.

В результате программы на экране будут напечатаны: 2 4 8 16 32 128.
Число 64 пропущено, так как при условии a=64 происходит выход из текущей итерации (continue) и число не выводится на экран, а при a=256 выполнение цикла прерывается окончательно (break), так и не распечатав число 256.

Задача 8. Решить рассмотренную задачу с процедурами break и continue для циклов repeat и for

Табулирование функции на отрезке с заданным шагом

* Следует учесть, что эта тема не обязательна для школьного курса информатики, в основном предполагается ознакомление студентами.

Табулирование функции одной переменной

Пример: На отрезке [a,b] с шагом h протабулировать функцию f(x)=x2+Ln|x| и вывести на печать значения этой функции.

Алгоритм:
Для решения задачи в области определения функции вводится сетка – совокупность точек:

{x0, x1, x2, …, xi}, 
где x0 = а, 
x1= x0+h,
…, 
xi = xi-1+h, xn = b.

Тогда задача сводится к вычислению функции f в точках xi, то есть нужно вычислить:

f(x0), f(x1), …, f(xi), f(xn)


✍ Решение:
 

    var
      x, a, b, f, h: real;
     
    begin
      writeln('отрезок от ... и до ...');
      readln(a, b);
      writeln('шаг');
      readln(h);
      x := a;
      while x <= b do
      begin
        f := sqr(x) + ln(abs(x));
        writeln('x= ', x, ' f= ', f);
        x := x + h;
      end
    end.

Пример: Вычислить 7 значений функций

    0.15x + a
y= -----------
    a2 + x2

где начальное значение а=0.14х, шаг Δа=0.22

Результаты для x = 2:

a =0.28 y = 0.142212632404865
a =0.5 y = 0.188235294117647
a =0.72 y = 0.225743626062323
a =0.94 y = 0.253911049225981
a =1.16 y = 0.273121819814427
a =1.38 y = 0.284533568186437
a =1.6 y = 0.289634146341463


✍ Решение:
 

    var
      x, a, y, h: real;
      i:integer;
     
    begin
      writeln('ведите x');
      readln(x);
      h:=0.22;
      a := 0.14*x;
      for i:=1 to 7 do
      begin
        y := (0.15*x + a)/(sqr(a)+sqr(x));
        writeln('a =', a, ' y = ', y);
        a := a + h;
      end
    end.
Табулирование функции двух переменных

Пример: На интервале xn≤x≤xk с шагом Δх, для каждого у из интервала уn≤y≤yk с шагом Δу вычислить значение функции f=x2+ln|y|.
Например:

если 
xn = 2; xk = 3
уn = -1; yk = 1
шаг Δх = 1, шаг Δy = 0.5

то f1 = 22+ln|-1| = 4
f2 = 22+ln|-0.5|= 3.30685281944005
...

Результат:

x= 2 y= -1 f= 4
x= 2 y= -0.5 f= 3.30685281944005
x= 2 y= 0 f= -∞
x= 2 y= 0.5 f= 3.30685281944005
x= 2 y= 1 f= 4
x= 3 y= -1 f= 9
x= 3 y= -0.5 f= 8.30685281944005
x= 3 y= 0 f= -∞
x= 3 y= 0.5 f= 8.30685281944005
x= 3 y= 1 f= 9


✍ Решение:
 

    var
      xn, xk, yn, yk, f, hx, hy,x,y: real;
    begin
      writeln('отрезок для x от ... и до ...');
      readln(xn, xk);
      writeln('отрезок для y от ... и до ...');
      readln(yn, yk);
      writeln('шаг для x');
      readln(hx);
      writeln('шаг для y');
      readln(hy);
      x := xn;
      y := yn;
      while x <= xk do
      begin
        while y <= yk do
        begin
          f := sqr(x) + ln(abs(y));
          writeln('x= ', x, ' y= ', y, ' f= ', f);
          y := y + hy;
        end;
        x := x + hx;
        y:=yn;
      end
    end.

Задание:
Вычислить значение функции:

z(x, у) = sin x + cos y

при всех х, изменяющихся на интервале [-1, 1] с шагом Δх = 0.2, и у, изменяющихся на интервале [0, 1] с шагом Δу = 0.1.
Результат:

 x=-1.00 y=0.00 z=0.16
 x=-1.00 y=0.10 z=0.15
 x=-1.00 y=0.20 z=0.14
 x=-1.00 y=0.30 z=0.11
 x=-1.00 y=0.40 z=0.08
 x=-1.00 y=0.50 z=0.04
 x=-1.00 y=0.60 z=-0.02
 x=-1.00 y=0.70 z=-0.08
 x=-1.00 y=0.80 z=-0.14
 x=-1.00 y=0.90 z=-0.22
 x=-1.00 y=1.00 z=-0.30

 x=-0.80 y=0.00 z=0.28
...

Дополните код в местах, где стоят троеточия:

var
  x, y, z: real; // описание переменных
 
begin
  writeln('x y z(x,y)'); 
  x := -1.0; 
  y := ...; // начальное значение
  while (x <= 1) do
  begin
    while (...) do  //запуск внутреннего цикла
    begin
      z := sin(x) + cos(y); 
      write(' x=', x:3:2, ' y=', y:3:2, ' z=', z:3:2 ); 
      y := y + ...; 
      writeln();
    end;
    writeln();
    x := ...; // изменение параметра х на шаг
    y:= 0; 
  end
end.

Exit и Halt

Процедура Pascal Exit служит для завершения работы того программного блока, в котором она используется (условный оператор, цикл, процедура…). Если Exit вызывается внутри процедуры или функции, то завершается работа данной процедуры/функции. Если процедура Exit находится в основном блоке программы, то это приводит к ее завершению.

Процедура halt в pascal завершает работу программы.

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

проверь себя

Поделитесь уроком с коллегами и друзьями:
5 комментариев

    викор

    непойму тогда зачем a2:=a1*a

      admin

      это в какой задаче?

    Георгий

    Пример: Вывести на экран квадраты и кубы нечётных целых чисел от 1 до 9.i :=i+2;? мы же не можем менять параметр в теле цикла?

      Евгений

      Цикл же по переменной k

      admin

      да, там счетчик цикла — k, не i

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*


Вставить формулу как
Блок
Строка
Дополнительные настройки
Цвет формулы
Цвет текста
#333333
Используйте LaTeX для набора формулы
Предпросмотр
\({}\)
Формула не набрана
Вставить