Командой повторения или циклом назыв-ся такая форма орган-ии действий, при j одна и та же послед-ть действий повторяется до тех пор, пока сохраняется значение некоторого лог-ого выр-ия. При изменении значения лог-ого выр-ия на противоположное повторения прекращаются (цикл завершается). Различают циклы с известным числом повторений (цикл с параметром) и итерационные (с пред- и постусловием). В цикле с известным числом повторений параметр изменяется в заданном диапазоне.
Структура цикла, организованного с помощью этого оператора, имеет вид:
For I := A To B Do Begin <операторы> End;
или For I := A DownTo B Do Begin <операторы> End; Здесь I — параметр, изменяющийся в цикле; A, B — выражения порядкового типа, обозначающие начальное, конечное значение параметра цикла. Шаг изменения номера параметра цикла равен 1, если в заголовке цикла стоит To (т.е. реально следующее значение параметра цикла вычисляется с помощью функции succ); и -1 — при DownTo (вычисление производится с помощью функции pred).
Связь с другими циклами: ввести пример задачи и применять разные циклы.
Пример: {Программа вычисления суммы степ-й sin x}Program Summa; Var S, X, Pr : Real; N, I : Integer; Begin Write('Вв. n-слаг-ых и x: '); ReadLn(N, X); Pr := 1; {в этой переменной хранятся последовательные степени sin x} S := 0; For I := 1 To N Do Begin Pr := Pr * Sin(X); {Очередная степень Sin(x)} S := S + Pr End; WriteLn('Сумма равна ', S : 7 : 4) End.
Параметр цикла его НЗ и КЗ м/б только порядкового типа (целые, переч-ые, диапазонные, символьные, лог-ие). Параметр цикла может меняться на 1 и на -1 если to - на 1, если downto - на -1. Если используется to, то ПЦ:=succ(ПЦ); если downto, то ПЦ:=pred(ПЦ).
В теле цикла ПЦ, НЗ и КЗ менять запрещено.
Структ-ый тип данных. Линейные массивы. Примеры.
Массив — это пронум-ая послед-ть величин одинакового типа, обозн-ая одним именем. Эл-ты массива располагаются в послед-ых ячейках памяти, обозн-ся именем массива и индексом. Каждое из значений, состав-их массив, наз-ся его компонентой (или эл-том массива).
Массив данных в программе рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент. Прямой допуск обозначает, что в любой момент времени доступен любой эл-т массива, чтобы обратиться к нему, нужно указать номер этого эл-та, назыв-ый индексом. Индекс в обозначении компонент массивов может быть константой, переменной или выражением порядкового типа. Если за каждым эл-том массива закреплен только один его порядковый номер, то такой массив называется линейным.
Хар-ка: 1) вообще кол-во индексов эл-тов массива определяет размерность массива. По этом признаку массивы делятся на одномерные (линейные), двумерные, трёхмерные, векторные и т.д. 2) размер. Обозначает кол-во эл-тов в массиве. Размер: а) общий - задает max возможное кол-во эл-тов; б) текущий - текущее кол-во эл-тов. Текущий не м/б больше общего. 3) тип эл-тов. Эл-ты массива м/б любого типа (простого или структурного, за исключ-ием файла). 4) тип индексов. Индексы м/б любого порядкового типа (целые, лог-ие, симв-ые, переч-ые, диапаз-ые). Для размещения массива в памяти ЭВМ отводится поле памяти, размер которого определяется типом, длиной и количеством компонент массива. В языке Pascal эта информация задается в разделе описаний.
Массив описывается так: имя массива: Array [начальное значение индекса..конечное значение индекса] Of базовый тип; чтобы обратиться k эл-там массива, необходимо указать имя массива и индекс эл-та.
Пример: Program Vvod; Var N, I : Integer; A : Array [1..20] Of Integer;Begin Write('Вв. кол-во эл-тов массива '); ReadLn(N); for i := 1 to n do Begin Write('Вв. A[', I, '] '); ReadLn(A[I])End.
Структурированный тип данных. Двумерные массивы. Примеры.
Массив — это пронум-ая послед-ть величин одинакового типа, обозн-ая одним именем. Эл-ты массива располагаются в послед-ых ячейках памяти, обозн-ся именем массива и индексом. Каждое из значений, состав-их массив, наз-ся его компонентой (или эл-том массива).
Массив данных в программе рассматривается как переменная структурированного типа. Двумер-ые массивы (матрицы) - это массивы размерности 2. Эл-т определяется 2-мя инд-ми. Var иден-тор переноса = Array [тип индекса 1..тип индекса 2] Of базовый тип;Подсчет памяти: кол-во эл-тов x на байт, занимаемое одним эл-том данном типе.
Дана целочисленная квадратная матрица. Пример: Найти в каждой строке наибольший эл-т и поменять его местами с эл-том главной диагонали.
Program Obmen; Var N, I, J, Max,Ind, Vsp : Integer;A : Array [1..15, 1..15] Of Integer; Begin WRITE('Вв. ко-во эл-тов в массиве: '); READLN(N); for i := 1 to n do for j := 1 to n do begin write('a[', i, ',', j, '] '); readln(a[i, j]) end; for i := 1 to n do begin max := a[i, 1]; ind := 1; for j := 2 to n do if a[i, j] > max then begin max := a[i, j]; ind := j end; vsp := a[i, i]; a[i, i] := a[i, ind]; a[i, ind] := vsp end; for i := 1 to n do begin writeln; for j := 1 to n do write(a[i, j] : 3); end; writeln end.