Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции ИВАНОВ Книга Паскаль.doc
Скачиваний:
5
Добавлен:
18.11.2019
Размер:
1.93 Mб
Скачать
  1. Операторы повтора

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

  • while (цикл с предусловием)

  • repeat (цикл с постусловием)

  • for (цикл со счетчиком)

Если число повторений оператора (составного оператора) заранее неизвестно, а задано лишь условие его повторения (или окончания), используются операторы while, repeat. Оператор for используется, если число повторений заранее известно.

Следует знать:

  • самым универсальным из всех операторов цикла считается while, поэтому в случае затруднений с выбором можно отдать предпочтение ему;

  • цикл repeat имеет очень простой и понятный синтаксис, поэтому с него удобно начинать изучение циклов;

  • цикл for обеспечивает удобную запись циклов с заранее известным числом повторений;

  • при неумелом использовании циклов любого типа возможна ситуация, когда компьютер не сможет нормально закончить цикл (в таком случае говорят, что программа "зациклилась"). Для выхода из подобной ситуации используется комбинация клавиш Ctrl+Break. Если это не помогает, есть и крайнее средство Ctrl+Alt+Delete.

Оператор repeat

Оператор repeat называют оператором цикла с постусловием за то, что условие проверяется после выполнения тела цикла.

Формат:

repeat < тело цикла > until < условие окончания цикла >;

где repeat, until – зарезервированные слова (обозначают "повторяй", "пока" соответственно);

<условие> – булевское выражение: простое выражение отношения или сложное логическое выражение;

<тело цикла> – оператор или последовательность операторов.

В начале выполняется тело цикла, затем проверяется условие завершения цикла. Именно поэтому цикл, организованный с помощью оператора repeat, в любом случае выполнится хотя бы один раз. Если результат булевского выражения равен false (ложь), то тело цикла выполняется еще раз, если же результат – true (истина), происходит выход из цикла. Операторы будут выполняться, пока условие будет оставаться ложным (false). На рисунке 3.2 приведена блок-схема оператора повтора repeat.

Рис. 3.2

Например, в приведенном ниже фрагменте программы наращивание переменной S произойдет один раз, так как условие имеет значение true:

S:=27;

repeat S:=S+1 until S>0;

Write(S);

Для успешного завершения цикла repeat в его теле обязательно должны присутствовать операторы, оказывающие влияние на условие выполнения операторов цикла. Пользователь сам должен позаботиться об изменении переменных, определяющих условие выхода, иначе цикл получится бесконечным. Например:

S:=2;

repeat k:=k+S; until S>30;

Write(k);

В данном случае произойдет зацикливание, т.к. условие 2>30 всегда будет иметь значение false и выхода из цикла не произойдет.

Оператор repeat может использоваться для проверки правильности ввода исходных данных. Например, по условию задачи исходное данное должно быть двузначным числом. Программа будет повторять запрос на его ввод до тех пор, пока не получит то, что ей требуется. Рассмотрим соответствующий фрагмент программы:

Var x: integer;

begin

. . .

repeat Write('Введите двузначное число '); Readln(х);

until (x>9) and (x<100);

. . .

end.

Пример: Составить программу, которая определяет количество и сумму цифр для любого натурального числа, не превосходящего maxint (см. табл.4).

Program Maximum ;

Var k, s, x: integer;

n: longint;

begin

Write('Введите натуральное число <= ',maxint,' : ');

Readln(n);

s:=0; {сумма цифр}

k:=0; {количество цифр}

repeat {начало тела цикла}

x:= n mod 10;

s:=s+x;

k:=k+1;

n:=n div 10

until n=0; {условие окончания цикла}

Writeln('Число цифр: ',k,', сумма цифр: ', s);

end.

В начале выполнения программы обнуляются значения счетчика k для определения количества цифр введенного натурального числа n и суммы S. Затем зарезервированным словом repeat объявляется цикл, после чего следуют операторы тела цикла: переменной х присваивается значение последней цифры введенного числа, на это значение увеличивается значение суммы S, увеличивается на единицу значение счетчика цифр k и переменная n получает новое значение (последняя цифра введенного числа отбрасывается).

В конце цикла оператор until n=0 проверяет условие окончания цикла. Если условие - true (истина), то цикл завершится, а управление в программе будет передано на оператор, находящийся за словом until, т.е первый оператор за границей цикла repeat. Это вызов процедуры Write, которая напечатает значение переменной S и k.

Пример: Протабулировать функцию y=sin(x) на отрезке [-π; π] с шагом h= π/5. Результаты вычислений вывести на экран в виде таблицы. Найти максимальное и минимальное значения функции на этом отрезке.

Program TabZnach;

Var x, y, h, max, min: real;

begin

h:=Pi/5;

х:=-Pi; {начальное значение аргумента функции}

max:=sin(x); {предполагается максимум в первой точке}

min:=sin(x); {предполагается минимум в первой точке}

Writeln(' x у');

repeat

x:=x+h;

y:=sin(x);

Writeln(x:7:2,y:7:2);

if y>max then max:=y; {определяется максимум функции}

if y<min then min:=y {определяется минимум функции}

until x> Pi; {проверяется условие выхода из цикла}

Writeln;

Write (‘max=‘, max:5:2, ‘min=‘, min:5:2);

end.

Перед началом цикла необходимо вычислить значение функции в первой точке (т.е. в точке х=-Pi) и принять его за максимальное и минимальное значения.

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

После завершения цикла на экране будут выведены максимальное и минимальное значения функции.

Рассмотрим пример, когда число повторений заранее неизвестно.

Пример: По заданному натуральному числу а вычислить минимальное такое n, при котором n!≥a. Число а задается вводом.

Эта задача была рассмотрена в Главе 1, приведем для нее программу.

Program Factorial;

Var F, n, a: integer;

begin

Write('Введите число ');

Readln(a);

F:=1;

n:=1;

repeat

F:=F*n;

n:=n+1

until F>=a;

Writeln(n-1);

end.

Оператор while

Оператор while часто называют оператором цикла с предусловием за то, что проверка условия выполнения тела цикла производится в самом начале оператора.

Формат:

while <условие выполнения цикла> do <оператор>;

где while, do – зарезервированные слова (обозначают "пока выполняется условие" и "делать" соответственно);

<условие> – выражение логического типа: простое или сложное выражение отношения, которое может принимать одно из двух значений: true или false;

<оператор> – тело цикла.

Если требуется выполнить после do несколько операторов, они обрамляются операторными скобками begin и end, образуя тем самым, составной оператор.

Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат значения выражения равен true (истина), то тело цикла выполняется и снова вычисляется выражение условия. Так продолжается до тех пор, пока значение условия выполнения цикла не станет равно false (ложь). Если результат равен false, происходит выход из цикла и переход к первому оператору после while. На рисунке 3.3 приведена блок-схема оператора повтора while.

Рис. 3.3

Так как while — это цикл с предусловием, то операторы тела цикла вообще могут быть не выполнены ни разу, если проверяемое условие ложно с самого начала. Например:

S:=27;

while S<0 do S:=S+1;

Write(S);

В данном случае наращивание S не произойдет, так как условие с самого начала имеет значение false.

Для успешного завершения цикла while (также как и в repeat) в его теле обязательно должны присутствовать операторы, оказывающие влияние на условие выполнения операторов цикла.

Обратите внимание - в операторе цикла while точка с запятой никогда не ставится после зарезервированного слова do (наличие точки с запятой означает присутствие в теле цикла пустого оператора, т.е. в цикле никаких действий не выполнится).

Для управления циклами while и repeat удобно использовать функции succ или pred и процедуры inc или dec.

Например, рассмотрим следующую программу, которая выводит целые числа от 0 до 10 в прямой и обратной последовательности:

Program Primer;

Var i: integer;

begin

i:=0;

while i<10 do begin i:=succ(i); { или inc(i); или i:=i+1;}

Write (i,' '); end;

Writeln;

i:=10;

while i>0 do begin Write(i,' ');

i:=pred(i); {или dec(i); или i:=i-1;}

end;

end.

Результат выполнения программы:

1 2 3 4 5 6 7 8 9 10

10 9 8 7 6 5 4 3 2 1

Пример: Заданы 10 произвольных чисел. Вычислить сумму этих чисел.

Program Sum;

Var ch, b, S: integer;

begin

S:=0; {сумма чисел}

ch:=0; {счетчик чисел}

while ch<10 do {условие выполнения цикла}

begin

ch:=ch+1;

Write(‘Введите‘,ch,‘–е целое число‘);

Readln(b); {ввод с клавиатуры очередного числа}

S:=S+b;

end;

Write (‘ Сумма введенных чисел равна‘, S);

end.

В начале выполнения программы обнуляются значения счетчика введенных чисел ch и их суммы S. Оператор while проверяет условие ch<10. Если условие - верно, то выполняется составной оператор в теле цикла, в котором вводится значение очередного числа, и на это значение увеличивается значение суммы.

Как только значение переменной ch станет равно 10, и условие ch<10 будет false, выполнение цикла завершится, а управление в программе будет передано на оператор, находящийся за словом end, т.е. первый оператор за границей while. Это вызов процедуры Write, которая выведет сообщение «Сумма введенных чисел равна» и напечатает значение переменной S.

Пример: Табулирование функции. Составить таблицу значений аргумента х и функции y=Sin(x) на отрезке [0; 3,1] с шагом h=0,1. Вычислить сумму значений функции больших, чем 0,1 и меньших, чем 0,6.

Program Tab;

uses crt;

Var x,Y, S: real;

begin

ClrScr;

S:=0; {сумма значений функции}

х:=0; {начальное значение аргумента функции}

Writeln('x':5,' ':4,'у':4);

Writeln('_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _' ) ;

while x<=3.1 do

begin

Y:=sin(x);

Writeln(x:4:1,' ':4,y:4:1);

if (Y>0.1) and (Y<0.6) then S:=S+Y;

x:=x+0.1;

end;

Writeln;

Write (‘ Сумма значений функции равна‘, S:3:1);

end.

Оператор while проверяет условие х<=3,1 и пока это условие – true выводится таблица значений аргумента х и функции Y. В цикле для нахождения суммы значений функции на заданном интервале используется условный оператор if … then. После окончания цикла выводится значение переменной S.

Рассмотрим пример, когда число повторений заранее неизвестно.

Пример: Вычислить сумму элементов бесконечно убывающей знакопеременной последовательности, где , удовлетворяющих условию , n=1,2,… Вывести на экран результаты вычислений.

Начало

Ввод x

Summa = 0

a = 1

n = 1

Z = -1

1

1

Program Sum;

uses crt;

const e=0.001;

Var Summa, x, a: real;

n, z: integer;

begin

ClrScr;

Write(‘Введите число х’);

Readln(x);

Summa:=0; {сумма элементов последовательности}

a:=1;

n:=1; {счетчик элементов последовательности}

z:=-1; {знак элемента последовательности}

while abs(a)>e do

begin

a:=a*(2*x)/n; {элемент последовательности}

Summa:=Summa+a*z;

n:=n+1;

z:=-z; {вычисляем (-1)n+1}

end;

Writeln;

Write (‘ Сумма =‘, Summa:3:1);

end.

Цикл while завершится, когда абсолютное значение элемента последовательности превысит заданное значение e.

Приведем сравнительную характеристику двух операторов повтора.

while

repeat

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

  • Переменная, которая участвует в условии выхода из цикла, обязательно должна изменяться в теле цикла

  • Выйти из цикла можно, минуя вычисление выражения условия, с помощью оператора goto

  • Оператор цикла может быть вложенным

  • Операторы цикла while будут выполняться, пока условие будет оставаться истинным (true)

  • Операторы цикла repeat будут выполняться, пока условие будет оставаться ложным (false)

  • После слова while записывается условие продолжения цикла

  • После слова until записывается условие завершения цикла

  • Тело цикла может не выполнится ни разу

  • Тело цикла выполнится хотя бы один раз

  • Необходимо использовать операторные скобки, если тело цикла содержит более одного оператора

  • Использование операторных скобок не требуется

Оператор For

Оператор повтора for часто называют оператором цикла с параметром, так как число повторений задается переменной, называемой параметром цикла, или управляющей переменной, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу – поэтому ее и называют счетчиком.

Оператор повтора for применяется в случаях, когда число повторений заранее известно.

Оператор повтора for состоит из заголовка (строка, содержащая for…do ) и тела цикла. Существует два вида оператора.

Вариант 1 (с увеличением счетчика)

Формат:

for < параметр цикла >:=А to B do < оператор >;

где for, do – зарезервированные слова (обозначают "для", "выполняй" соответственно);

А и В – выражения, определяющие соответственно начальное и конечное значение параметров цикла;

< оператор > - тело цикла.

Если требуется выполнить после do несколько операторов, они обрамляются операторными скобками begin и end, образуя тем самым составной оператор.

Оператор со счетчиком работает следующим образом:

  • при первом обращении к оператору for вначале вычисляются выражения А, В и осуществляется присваивание <параметр цикла>:= А;

  • затем проверяется условие <параметр цикла> <= B;

  • если условие выполнено, оператор for продолжает работу (выполняется оператор в теле цикла);

  • если условие не выполнено, оператор for завершает работу и управление передается на оператор, следующий за циклом;

  • значение управляющей переменной изменяется на +1.

Оператор повтора for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного. На рисунке 3.4 приведена блок-схема оператора повтора for.

i = A, B, h

Тело цикла

Рис. 3.4

Операторы тела цикла выполняются столько раз, сколько определяет выражение (КонечноеЗначение — НачальноеЗначение) + 1. Это соответствует всем значениям счетчика от начального до конечного включительно.

Например,

for i:=10 to 14 do Write(i: 3);

выведет на экран последовательность цифр в виде:

10 11 12 13 14

Если начальное значение больше, чем конечное значение, то операторы тела цикла не выполняются ни разу.

Вариант 2 (с уменьшением счетчика)

Формат:

for < параметр цикла >:= А downto B do < оператор >;

Операторы тела цикла выполняются столько раз, сколько определяет выражение (НачальноеЗначение — КонечноеЗначение) + 1.

Например,

for i:=14 downto 10 do Write(i: 3);

выведет на экран последовательность цифр в виде:

14 13 12 11 10

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

Если переменная - счетчик имеет символьный тип char, то оператор:

for ch:= 'a' to 'e' do Write (ch: 2);

выведет на экран последовательность букв в следующем виде:

a b с d e

Таким образом, заголовок оператора повтора for определяет:

  • диапазон изменения управляющей переменной и одновременно число повторений оператора, содержащегося в теле цикла;

  • направление изменения параметра цикла (возрастание на единицу – to или убывание на единицу – downto).

Например,

for k:=1 to 25 do Read(a[k]); {чтение элементов массива от 1 до 25}

for k:=25 downto 1 do Write(a[k]); {вывод элементов массива от 25 до 1}

Следует знать:

    • начальное и конечное значения параметра цикла могут быть константами, переменными, выражениями и должны принадлежать к одному и тому же типу данных;

    • начальное и конечное значения параметра цикла нельзя изменять во время выполнения цикла.

Например, рассмотрим фрагмент программы, в котором предпринята попытка "обмануть" оператор for и получить изменение параметра i на 2 на каждом шаге цикла (единица прибавляется автоматически и еще одна единица прибавляется в теле цикла).

for i:= 1 to 10 do

begin write {i: 4); i := i + 1; end;

В данном случае на экране будут выведены числа 13579.

Однако настоятельно не рекомендуем пользоваться таким приемом. Стоит только немного видоизменить заголовок цикла предыдущего примера и взять в качестве конечного значения 9, а не 10, как ваша программа не сможет нормально выйти из цикла — "зациклится", т. к. в момент проверки компьютером условия выхода из цикла i никогда не будет равно 9 (сначала 8, а потом сразу 10).

Приведем характеристику оператора повтора for

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

  • в теле цикла запрещается явное изменение значения переменной-счетчика (например, оператором присваивания)

  • переменная-счетчик должна быть порядкового типа: чаще — integer, реже — char, boolean или одного из пользовательских типов. Использование вещественного типа недопустимо

  • Выйти из цикла можно, минуя вычисление выражения условия, с помощью оператора goto

  • Оператор цикла может быть вложенным

  • количество повторений цикла определяется начальным и конечным значениями переменной-счетчика. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла: от начального до конечного

  • Необходимо использовать операторные скобки, если тело цикла содержит более одного оператора

Пример: Вычислить сумму гармонического ряда

Program SumR;

uses crt;

Var S: real;

k, n: integer;

begin

ClrScr;

Readln(n);

S:=0;

for k:=1 to n do S:=S+1/k;

Writeln;

Write (‘S=‘, S:4:2);

end.

В теле цикла лишь один оператор, поэтому операторные скобки begin и end не нужны.

Суммирование можно начать с n-го члена. Тогда первое слагаемое 1/n, а n будет уменьшаться на единицу: n = n-1.

Program SumR;

uses crt;

Var S: real;

k, n: integer;

begin

ClrScr;

Readln(n);

S:=0;

for k:=n downto 1 do

S:=S+1/k;

Writeln;

Write (‘S=‘, S:4:2);

end.

Пример: Табулирование функции. Составить таблицу значений аргумента х и функции y=Sin(x) на отрезке [0; 3,1] с шагом h=0,1.

Для решения данной задачи можно использовать оператор for, предварительно подсчитав количество повторений цикла по формуле приведенной в Главе 1.

для нашего случая количество повторений

Program Tablica;

uses crt;

Var x, y: real;

k: integer;

begin

ClrScr;

x:=0;

for k:=1 to 32 do

begin

y:=Sin(x);

Writeln(x:3:1,’ ‘:5,y:4:2);

x:=x+0.1;

end;

end.

Пример: Определить средний рост студентов в группе.

Исходной информацией для решения этой задачи является число студентов в группе и рост каждого студента. Число студентов в группе обозначим n. В переменной S будем накапливать сумму. Подсчет номера студента будем осуществлять в переменной i.

Ввод роста каждого студента и накопление суммы всех значений ростов студентов производится в цикле n раз. После завершения цикла определяем средний рост по формуле S=S/n.

Program SredRost;

uses crt;

Var S, r: real;

i, n: integer;

begin

ClrScr;

Readln(n);

S:=0;

for i:=1 to n do

begin

Read(r);

S:=S+r;

end;

S:=S/n;

Write(‘S=‘, S:4:2);

end.

Пример: Определить количество студентов в группе, имеющих рост выше среднего.

Исходные данные: количество студентов k и рост каждого студента r. Первая половина алгоритма разработана в предыдущей задаче – определен средний рост. Далее рост каждого сравнивается со средним.

Если вводимое значение роста студента превышает среднее значение, то в счетчик числа таких студентов необходимо добавить единицу k=k+1.

В блок-схеме имеется один недостаток: рост студентов в группе вводится дважды. При решении задачи на ПК, придется вводить одну и ту же информацию дважды. Этот недостаток можно устранить с использованием одномерного массива (см. Глава 4).

Program SredRost;

uses crt;

Var S, r: real;

i, n, k: integer;

begin

ClrScr;

Readln(n);

S:=0;

for i:=1 to n do

begin

Read(r);

S:=S+r;

end;

S:=S/n;

k:=0;

for i:=1 to n do

begin

Read(r);

If r>S then k:=k+1;

end;

Write(‘k=‘, k);

end.

Контрольные вопросы

  1. Какие процедуры служат в Паскале для выполнения операций ввода-вывода?

  2. В чем заключается отличие процедуры Readln от процедуры Read.

  3. Для чего в процедурах вывода Write и Writeln определяется ширина поля вывода? Какие обозначения используются в форматах вывода?

  4. Составьте программу, которая выводит на экран компьютера заставку, аналогичную следующей:

*

****************************************

*

*

*

*

Программа

*

*

вычисления суммы чисел

*

*

Автор: Петров В.И.

*

*

*

*

****************************************

*

  1. Напишите программу, которая вводит значения четырех переменных A, B, C, D типа integer и выводит их сумму. Ввод пары значений A и B произвести на одной строке, C и D – на другой. Результат вывести на отдельную строку, и курсор оставить на той же строке.

  2. Напишите программу ввода значений A, B, C в одной строке и выведите результат выражения в той же строке.

  3. Напишите программу вычисления площади прямоугольного треугольника, значения катетов которого A и B вводятся с клавиатуры. Результат вывести в следующем виде: “Для значений катетов 4 и 6 площадь прямоугольного треугольного треугольника равна 12”.

  4. Напишите программу получения следующей формы:

*****************************************

* A * B * A+B * A-B * A/B *

*****************************************

6 2 8 4 3.0

*****************************************

  1. Что будет напечатано в результате работы программы:

Program Vivod;

var X, Y, С : real;

begin

Readln (X, Y);

С:=sqrt(sqr(X)-4*Y);

Writeln(‘ x1=‘, (-X+C)/2,

‘ x2=‘, (-X-C)/2)

end.

если в качестве исходных данных ввели 10 и -20 ?

  1. Что будет напечатано в результате работы программы :

Program Vivod;

var X, Y : integer;

begin

Read (X, Y, X);

С:=sqrt(sqr(X)-4*Y);

Writeln(X, Y:2, X:5)

end.

если последовательно ввели три числа 10, -2, 8721?

  1. Что такое оператор? Чем отличаются простые и структурные операторы?

  2. Какие из этих операторов присваивания неверные:

Program Pr;

var X : integer;

Y: byte;

Z, Z1 : real;

C: char;

D, D1: boolean;

begin

Read (X, Y);

Z:=sqr(X)-4*Y;

C:=65;

D:=X+Y;

Y:=Z-X;

Z1:= X mod Z;

D1:=X<Z;

end.

  1. Где ошибка в следующей программе?

Program Lab;

var X , Y, Z : real;

begin

Read (X, Y);

Z:=sqr(X)-4*Y;

If X > Z then goto M2;

Z:=Z-X;

M2:

end.

  1. В чем особенности пустого оператора? Нужен ли он в данной программе?

Program P_O;

var X , Y : real;

i: integer;

begin

Read (X);

For i:=1 to 5 do ;

Y:=Y+X;

end.

  1. Что представляет собой составной оператор? Где ошибка в данной программе?

Program S_O;

var X , Y , Z: real;

begin

Read (X, Y);

if Y<>0 then Z:=X/Y; Write (Z) else Write(‘Деление на ноль ‘)

end.

  1. Где ошибки (их четыре) в следующей программе?

Program Usl_Op;

const

X , Y , Z: real

begin

Read (X, Y);

if X<Y then Z:=X-Y; else X>Y then Z:=X+Y;

Write(Z)

end.

  1. Найдите значение переменной Z при заданных исходных данных

  1. X=12, Y=7

  2. X=-2, Y=3

Program Viсhisl;

var X , Y , Z: integer;

begin

Read (X, Y);

if X<Y then if X>0 then Z:=Y-X else Z:=X+Y else Z:=X-Y;

Write(Z)

end.

  1. Каковы отличия оператора выбора case от оператора условия if ? Какие правила должны выполняться при использовании оператора выбора case?

  2. Где ошибки (их три) в следующей программе?

Program Grib;

var X : real;

begin

Readln (X);

case X of

1, 21, 31 : Write(‘ Мы нашли ‘, X, ‘ гриб‘ );

2..4, 22..24 : Write(‘ Мы нашли ‘, X, ‘ гриба‘ );

5.. 20, 25..30 : Write(‘ Мы нашли ‘, X, ‘ грибов‘ );

else Write(‘ Мы нашли много грибов‘ );

end.

  1. Каково назначение операторов повтора?

  2. В чем отличия операторов повтора while и repeat?

  3. В каких случаях предпочтительнее использовать для организации циклов оператор повтора for? Что записывается в заголовке этого оператора?

  4. Каким образом в оператор повтора for описывается направление изменения значения параметра цикла?

  5. Какие ограничения налагаются на использование управляющей переменной (параметра цикла) в цикле for?

  6. Данную программу перепишите с помощью операторов повтора repeat и for:

Program Vichislenie;

var X, Y : real;

begin

X:=2;

while X<=11 do

begin Y:=sin(X)/cos(X);

Writeln(X:5:2, Y:7:2);

X:=X+0.5

end

end.

  1. Напечатать таблицу значений функций sinx и cosx на отрезке [0, 1] с шагом 0,1 в следующем виде:

x

sin x

cos x

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

0.0000

0.0000

1.0000

0.1000

0.0998

0.9950

1.0000

0.8415

0.5403

    1. Найдите значение переменной Z при заданных исходных данных

  1. Y=7

  2. Y=23

Program Povtor;

var i, Y , Z: byte;

begin

i:=2; read(Y);

repeat Z:=Y+i;

Y:=Y+1

until Y>15; Write(Z)

end.

  1. Где ошибки (их четыре) в следующей программе?

Program Parametr;

var i , Y : real;

begin

For i:=1.1 to 5 do

begin Y:=Y+i;

i:=i+0.1 ;

Writeln(Y:4:1)

end.

  1. Напишите программу печати таблицы перевода расстояний из дюймов в сантиметры (1 дюйм = 2,5 см) для значений длин от 1 до 20 дюймов.

  1. Найдите значение переменной Z при заданных исходных данных

  1. Y=7

  2. Y=28

Program Cikl;

var i, Y , Z: byte;

begin

read(Y);

for i:=25 downto Y do Z:=Y+i;

Write(Z)

end.