1 x 20,
Шаг изменения аргумента: x =1.
Вариант программы может быть следующим:
Program_tab;
Var
y, a, b, c: real; x: integer;
Begin a:=0.1;
b:=3.7; c:=1.2e-1;
For_x:=1_to_20_do Begin
y:=a*sqr(x)+b*x+c;
Writeln (‗x=‘, x, ‗y=‘,
y);
End;
End.
Аналогично осуществляется цикличная процедура табулирования для разрывных функций. В этом случае после слова do в операторных скобках должен стоять оператор if-then-else…, а после оператора if, перед end, должен стоять writeln.
Рассмотрим другой пример на применение оператора цикла:
Задача 2.
Составить программу для вычисления в цикле следующего выражения:
|
5 |
S |
ai bi a1b1 a2b2 .. |
|
i 1 |
где a1 |
1 |
|
b1 |
1 |
|
||||
a2 |
2 |
|
b2 |
2 |
. |
|
|
. |
|
. |
|
|
. |
|
. |
|
|
. |
|
a5 |
5 |
|
b5 |
5 |
Таким образом, здесь заданы два массива a и b размерностью, равной 5. Их необходимо математически обработать с помощью программы:
Program_sum; |
|
|
|
|
|
||||||||
Var |
|
|
|
|
|
||||||||
i:integer; |
|
|
|
|
|
||||||||
а, b: array 1..5 _of_integer; |
|
|
|
|
|
||||||||
Begin |
|
|
|
|
|
||||||||
|
|
|
For_i:=1_to_5_do |
|
1-ый цикл |
||||||||
|
|
|
Read (a i , b i ); |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
||||||
|
|
|
S:=0; |
|
|
|
|
|
|||||
цикл |
|
|
For i:=1_to_5_do |
|
|
2-ой |
|||||||
|
|
|
|
||||||||||
|
|
|
); |
|
|
|
|
||||||
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
S:=s+ a i b i |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
Write (´s=´, s); |
|
|
|
|
|
|||||
End. |
|
|
|
|
|
||||||||
Следует отметить, что в предыдущей программе в качестве параметра цикла выступала простая переменная x. В данной программе в качестве параметра цикла выступает индекс i массивов a и b.
Задача 3.
Составить программу для ввода и вывода на печать (на экран дисплея) элементов двумерной матрицы А(5,5):
|
|
1 |
2 |
3 |
4 |
5 |
|
|
0 |
0 |
0 |
0 |
0 |
A |
|
1 |
1 |
1 |
1 |
1 |
|
|
3 |
3 |
3 |
3 |
3 |
|
|
1 |
2 |
3 |
4 |
5 |
Примем |
aij |
|
|
a[i,j] |
|
|
Вариант программы: Program_matr;
Var
i, j: integer;
a: array [1..5, 1..5]_of_integer;
Begin
for_i:=1_to_5_do for_j:=1_to_5_do_read (a[i,j]); for_i:=1_to_5_do
begin for_j:=1_to_5_do write (a[i,j]:3); writeln;
end;
End.
В этой программе имеют место два вложенных друг в друга цикла.
Первый вложенный цикл осуществляет построчный ввод элементов матрицы А. Так как матрица двумерная, то и циклы должны быть двух вложений. При этом внешний цикл (верхний for) действует медленнее, чем внутренний (нижний for), т.е. при одном каком-то i, j изменяется от 1 до 5, тогда
осуществляется переход на внешний цикл, где i меняется на 1.
Во втором вложенном цикле осуществляется построчно вывод элементов матриц.
Здесь вложенные скобки begin-end ставятся потому, что во внутреннем цикле имеются два оператора.
Пустой оператор writeln предназначен для того, чтобы осуществить переход печати строки с первой позиции экрана, т.е. для того, чтобы вторая строка была под первой. Внутренний цикл осуществляет печать в строку, writeln осуществляет переход курсора в начало строки.
Следует отметить, что writeln реализуется только при переходе на внешний цикл.
Последнюю программу возьмем за основу и приведѐм ряд программ для обработки элементов двумерного массива согласно приведѐнным алгоритмам (заданиям).
Задача 4.
Пусть задан двумерный массив, размерностью 5 5. Требуется составить программу для вывода на экран монитора элементов главной диагонали матрицы при введенных 25 элементах.
Program_matr; Var
i, j: integer
a: array [1, 5, 1…5]_of_integer;
Begin
for_i: 1_to_5_do
for_j: 1_10_5_do_read a[i, j];
for_i:=1_to_5_do
Begin
for_j:=1 to 5 do
if i:=j then_write (a[i, j]:3)_else_write (´_´);
Writeln;
End;
End.
Здесь признаком того, что элемент находящегося
aij
на главной диагонали матрицы является равенство i=j.
Задача 5.
Составить программу для нахождения элемента вышеприведенной матрицы, находящегося на пересечении второй строки и третьего столбца (результат вывести на экран дисплея).
Program_matr; Var i, j: integer;
a: array [1..5, 1…5]_of_integer;
Begin
for_i:=1_to_5_do; for_j:=1_to_5_do_read a[i, j]; for_i:=1_to_5_do;
Begin
for_j:=1_to_5_do;
if i=2 then if j=3 then_write (a[i,j]); writeln;
end;
End.
Здесь вместо двойного оператора if можно воспользоваться таким оператором:
if (i=2) and (j=3) then write(a[I,j]);