
- •Лабораторная работа №2 циклические программы
- •1Цель работы:
- •2Порядок проведения работы
- •3Теоретическая часть
- •3.1Цикл с постусловием
- •3.2Цикл с предусловием
- •3.3Цикл с параметром
- •4Пример
- •Одномерные массивы
- •5Доступ к элементам массива.
- •6Изменение значения некоторых элементов
- •8Нахождение номеров элементов с заданным свойством
- •11Нахождение количества элементов с заданным свойством
- •12Удаление элементов из одномерного массива.
- •13Вставка элементов в одномерный массив. Вставка одного элемента
- •14Вставка нескольких элементов
- •Двумерные массивы
- •Создание двумерного массива
- •Вывод массива в виде таблицы
- •16Практическая часть
3.3Цикл с параметром
Этот вид оператора цикла также называют циклом со счетчиком. В нем важную роль играет переменная-параметр, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу — поэтому ее и называют счетчиком.
Инструкцию for можно реализовать двумя способами:
Вариант 1 (с увеличением счетчика):
for Счетчик := НачальноеЗначение to КонечноеЗначение do
begin
{ Инструкции }
end;
Ключевые слова for, do обозначают "для", "выполняй" соответственно. Строка, содержащая for...do, называется заголовком цикла, оператор, стоящий после do образует его тело. Очень часто тело цикла — составной оператор. Если тело цикла представлено одиночным оператором, то begin и end не пишутся.
На блок-схеме алгоритма цикл с параметром удобно обозначать следующим образом (рис. 9). Такое обозначение, правда, не совсем соответствует ГОСТу.
Рис. 9 Условное обозначение на схемах алгоритмов цикла с параметром
Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(КонечноеЗначение — НачальноеЗначение) + 1].
Это соответствует всем значениям счетчика от начального до конечного включительно.
Например, выполнение цикла — фрагмента программы:
for i:=10 to 14 do write(i: 3);
выведет на экран последовательность цифр в виде:
10 11 12 13 14
Вариант 2 (с уменьшением счетчика):
for Счетчик := НачальноеЗначеиие downto КонечноеЗначение do
begin
{ Инструкции }
end;
Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(НачальноеЗначение — КонечноеЗначение) + 1].
Например, выполнение цикла — фрагмента программы:
for i:=14 downto 10 do write(i: 3);
выведет на экран последовательность цифр в виде:
14 13 12 11 10
Оператор (инструкция) for используется для организации циклов с фиксированным, заранее известным или определяемым во время выполнения программы числом повторений. Переменная-счетчик должна быть порядкового типа: чаще — целочисленная, реже — символьного, логического или перечисляемого типов.
Параметр цикла for может изменяться (увеличиваться или уменьшаться) каждый раз при выполнении тела цикла только на единицу. Если нужен другой шаг изменения параметра, предпочтительнее циклы repeat и while.
Например, рассмотрим фрагмент программы, в котором предпринята попытка "обмануть" оператор for и получить изменение параметра i на 2 на каждом шаге цикла (единица прибавляется автоматически и еще одна единица прибавляется в теле цикла).
for i:= 1 to 10 do
begin
write(i:4); i := i + 1;
end;
В данном случае на экране будут выведены числа 1 3 5 7 9.
Однако настоятельно не рекомендуем пользоваться таким приемом. Стоит только немного видоизменить заголовок цикла предыдущего примера и взять в качестве конечного значения 9, а не 10: for i := 1 to 9 do, как ваша программа не сможет нормально выйти из цикла — "зациклится", так как в момент проверки условия выхода из цикла i никогда не будет равно 9 (сначала 8, а потом сразу 10).
4Пример
Составить блок-схему алгоритма и
программу для вычисления и вывода на
экран таблицы значений функции
,
где аргумент Х изменяется от начального
значения (например, 1) до конечного
(например, 2) с заданным шагом (например,
0,05). Параметры А и В задаются оператором
ввода.
Здесь переменная xmin используется для обозначения начального значения аргумента Х, xmax - для обозначения конечного значения аргумента Х, dx - для обозначения шага, А и В - для обозначения параметров, необходимых для вычислений, X и Y - для обозначения текущего значения аргумента и текущего значения функции. Эта задача может быть решена тремя способами.
Вариант 1: Цикла с постусловием (REPEAT-UNTIL) (Рис. 10)
Рис.10. Блок-схема для цикла с постусловием .
Текст программы
program prim_1;
{программа вычислений и вывода на экран таблицы значений функции с использованием оператора REPEAT-UNTIL}
var a,b:real;
xmin,xmax,dx:real;
x,y:real;
begin
write('A=');readln(a);
write('B=');readln(b);
write('начальное значение=');readln(xmin);
write('конечное значение=');readln(xmax);
write('шаг=');readln(dx);
writeln('|___|___|');
writeln('| X | Y |');
writeln('|___|___|');
x:=xmin;
repeat
y:=A*sin(B*x)/x;
writeln('|',x:6:2,'|',y:7:2,'|');
x:=x+dx;
until x > xmax+dx/2;
writeln('|___|___|');
end.
Вариант 2: Цикла с предусловием (WHILE-DO) (Рис.11)
Текст программы
program prim_2;
{программа вычислений и вывода на экран таблицы значений функции с использованием оператора WHILE-DO}
var a,b:real;
xmin,xmax,dx:real;
x,y:real;
begin
write('A=');readln(a);
write('B=');readln(b);
write('начальное значение=');readln(xmin);
write('конечное значение=');readln(xmax);
write('шаг=');readln(dx);
writeln('|___|___|');
writeln('| X | Y |');
writeln('|___|___|');
x:=xmin;
while x < xmax+dx/2 do
begin
y:=A*sin(B*x)/x;
writeln('|',x:6:2,'|',y:7:2,'|');
x:=x+dx;
end;
writeln('|___|___|');
end.
Рис.11 Блок-схема для цикла с предусловием.
Вариант 3: Цикла с параметром (FOR-DO) (Рис.12)
Рис.12. Блок-схема для цикла с параметром.
program prim_4;
{программа вычислений и вывода на экран таблицы значений функции с использованием оператора FOR-DO}
var a,b:real;
xmin,xmax,dx:real;
x,y:real;
i,n:integer;
begin
write('A=');readln(a);
write('B=');readln(b);
write('начальное значение=');readln(xmin);
write('конечное значение=');readln(xmax);
write('шаг=');readln(dx);
writeln('|___|___|');
writeln('| X | Y |');
writeln('|___|___|');
n:=trunc((xmax-xmin)/dx)+1;
x:=xmin;
for i:=1 to n do
begin
y:=A*sin(B*x)/x;
writeln('|',x:6:2,'|',y:7:2,'|');
x:=x+dx;
end;
writeln('|___|___|');
end.