Цикл for (цикл с параметром)
Общий вид:
For I:=N1 toN2 do <простой или составной оператор>;
I - переменная цикла (параметр цикла), N1- начальное значение цикла, N2- конечное значение цикла, I,N1,N2 должны быть одного и того же типа, но не real. I принимает последовательные значения данного типа от N1 до N2. Если N1 и N2 - целые числа, а I - целая переменная, то шаг всегда равен единице. Инструкция for означает «для I, изменяющегося от N1 до N2 делать» и выполняется следующим образом: вначале вычисляется значение N1 и оно присваивается I. После этого циклически повторяется: - проверка условия I <=N2. Если условие не выполнено, оператор for завершает свою работу; - если условие I <=N2 выполнено, то исполняется конструкция «<простой или составной оператор>»; - наращивание переменной I на единицу.
Пример: VAR S: REAL; N:INTEGER; BEGIN S:=0; FOR I:=1 TO 50 DO S:=S+1/I; WRITELN(' S=',S); END.
Цикл по убывающим значениям параметра I от N2 до N1 имеет вид:
For I:=N2 downto N1 do <простой или составной оператор>;
Пример 1: For I:=20 downto 1 do A:=A+1; I изменяется от 20 до 1 с шагом -1.
Массивы Массив – упорядоченный набор однотипных значений – компонент массива. Тип компонент называется базовым типом массива. В Паскале массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент. Переменная с индексом – идентификатор компоненты массива. Формат записи:
<имя массива> [<индекс>],
где <индекс> может быть выражением порядкового типа. Описание массива определяет имя, размер массива и базовый тип. Формат описания в разделе переменных:
Var <имя массива>: array [<тип индекса>] of <базовый тип>
<тип индекса> – любой порядковый тип, кроме longint, чаще всего в качестве <типа индекса> используется интервальный целый тип. <базовый тип > – любой тип Турбо Паскаля.
Линейный одномерный массив - массив, у которого элементы – простые переменные. В одномерных массивах хранятся значения линейных таблиц.
Примеры описания одномерных массивов:
Var B: array [0.. 5] of real; R: array [1.. 34] of char; N: array [‘A’.. ‘Z’] of integer;
Ввод и вывод массива производится поэлементно. Обычно для этого используется цикл с параметром, где в качестве параметра применяется индексная переменная.
Пример 1. Заполнить случайными числами из диапазона [0, 1] вещественный линейный массив из N чисел. Найти максимальное значение и его индекс (первый, если таких значений несколько).
Решение. Поскольку размер массива в программе должен быть однозначно задан, определим N в разделе констант, например, N = 20. При изменении размера массива достаточно будет отредактировать в программе лишь описание константы N. Const N=20; Var X: array [1.. N] of real; k: integer; Max: real; Kmax: integer; Begin For k:=1 to N do X[k]:=random; {заполнение случайными числами} Max:=X[1]; Kmax:= 1; {инициализация вычисляемых переменных} For k:= 2 to N do {поиск максимального значения} If X[k] > Max then begin max:= X[k]; Kmax:= k end; Writeln (‘Первое максимальное значение: X[‘, Kmax, ’]=’, max) End.
В Турбо Паскале можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа, например: Var А, B: array [1..5] of integer; …… A:=B; После этого присваивания все элементы массива А получат те же значения, что и в массиве В.
Так как <базовый тип > – любой тип Турбо Паскаля, то он может быть и другим массивом, например: Var B: array [1.. 5] of array [1..10] of real; Такую запись можно заменить более компактной: Var B: array [1.. 5, 1..10] of real; Число вложений ограничено только объемом памяти. В приведённом примере массив двухмерный. В двумерных массивах хранятся значения двумерных таблиц (матриц), состоящих из строк и столбцов.
Пример описания двумерных массивов: Var a: array [1..5,1..2] of integer;
Пример 2. Дан массив из 5-ти строк и 2-х столбцов, содержащий элементы целого типа.Вычислить произведение отрицательных элементов.
Решение. Var a: array [1..5,1..2] of integer; i,j,P:integer; begin {Ввод элементов массива с клавиатуры} For i:=1 to 5 do For j:=1 to 2 do begin Write(‘Ведите a[‘,i,’,’,j,’]=‘); Readln(a[i,j]); end; {Печать элементов массива в виде таблицы} Writeln(‘ Массив a’); For i:=1 to 5 do begin For j:=1 to 2 do Write(a[i,j]:4); Writeln; end; {Вычисление произведения отрицательных элементов} P:=1; For i:=1 to 5 do For j:=1 to 2 do if a[i,j]<0 then P:=P*a[i,j]; Writeln(‘Произведения отрицательных элементов P=’, P); End.
Подпрограммы
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|