Материал: Алгоритмический язык Turbo Pascal 7.0. Юршин Е.Д., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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]);

Источник: https://studfile.net/preview/16565609/