Массив – мн-во однотипных элементов. Каждый элемент имеет целочисленный порядковый номер, называемый индексом. Индексы записываются в квадратных скобках через запятую. Одномерные – каждый элемент массива получает два индекса. Многомерные – каждый элемент получает более 2-х индексов. Простой массив является одномерным. Он представляет собой линейную структуру. Способы описания: 1.простое (массив описывается в разделе описания переменных var <имя массива>: array [<нижняя граница индекса .. верхняя граница индекса>] of <тип массива> Напр-р: описание массива температур var T: array [1..12] of real. 2.определение типа (последовательное): а)описание типа массива; б)описание переменной массива. Type vector = array [1..31] of real; Var t:vector; Type index = 1..31;vector = array[index] of real; Var t:vector;r:index; Обработка массивов. 1.Ввод-вывод: Паскаль работает с массивами поэлементно. Const lim = 50; nmax = 100; Type raw = array [-lim..lim] of real; Var x,y: raw; Ввод одномерных массивов: write (‘введите кол-во элементов’); readln (n); write (‘введите элементы’); for i:=1 to n do read (x[i]); for i:=1 to n do begin write (x[i]:8:3); if i mod 5 = 0 then writeln; end; 2.Вычисление суммы элементов: s:=0;
for i:=1 to n do s:=s+a[i];
s:= s/n;
3.Номер первого отрицат: i:=1;
while a[i]>=0 do i:=i+1;
writeln (i);
После выполнения этого цикла мы получаем новое первое отрицательное. В массиве отрицат. элементов нет. 4.Наибольший (наименьший): max:=a[1];
For i:=2 to n do
If a[i]>max then max:=a[i]; 5.Перестановка двух элементов: t:=a[k]; a[k]:=a[l]; a[l]:=t; 6.Циклическая перестановка элементов: было 1 2 3 4 5 6 стало 2 3 4 5 6 1 – циклическая перестановка на 1 позицию влево. t:=a[1];
For i:=2 to n do a[i-1]:=a[i]; a[n]:=t; 7.Вычисление полинома заданной степени: Pn(x) = a0xn + a1xn-1 +…+ an-1x + an ((a0x + a1)x + a2)+…+an-1)x + an
p:=a[0] for i:=1 to n do p:=p*x + a[i]; 8.Сортировка выбором:
For i := 1 to n-1 do
begin
min:=a[i]; imin:=i;
for k := i+1 to n do
if min > a[k] then
begin
min:=a[k];
imin:=k;
end;
tmp:=a[i];
a[i]:=a[imin];
a[imin]:=tmp
end;
tmp – вспомогательная переменная, используемая для обмена значениями между крайним левым элементом массива и элементом с наименьшим значением.
15.Ввод и вывод массивов через файлы. Пример – вывод в файл двух матриц рядом.
Для того, чтобы программа могла работать с файлом данных, в ней надо объявить специальную, файловую переменную – переменную типа text. Её описание имеет вид: var имя переменной : text;
Переменная типа text – текстовый файл. Он представляет собой последовательность символов, разбитую на строки произвольной длины. Перед обращением к файлу необходимо его открыть. Для этого предусмотрены следующие 2 процедуры: reset – открывает существующий файл для чтения; rewrite – открывает файл для записи. Чтение данных из файла производится с помощью операторов read, readln, а запись в файл – посредством операторов write, writeln. Если файл, предназначенный для записи к моменту открытия уже существовал, то вся информация в нём будет стерта. Организацию связи с конкретным устройством выполняет оператор назначения вида assign. Оператор assign должен предшествовать операторам открытия файлов. К моменту обращения к reset вводной файл должен существовать на внешнем носителе. Оператор rewrite создаёт новый файл, если файл с указанным именем не был создан ранее. После завершения работы файл следует закрыть, и делает это оператор close.
Подпрограмма – функция. Пример: возведение вещественного числа в целочисленную степень.
Под функцией понимается поименованная совокупность операторов, обеспечивающая вычисление единственного результата.
Фактические параметры должны быть согласованы с формальными:
1. По количеству
2. По порядку следования
3. По типу
Пример программы (для вещественных оснований, и целочисленных не отрицательных показателей)
program Z;
var
m,st:real;
n:integer;
function pow(a:real;x:integer):real;
var
t:real;
i:integer;
begin
t:=a;
for i:=1 to x-1 do
t:=t*a;
pow:=t;
end;
begin
writeln('введите основание:');
readln(m);
writeln('введите показатель:');
readln(n);
st:=pow(m,n);
writeln('результат:',st);
end.
Подпрограмма-процедура. Пример – решение треугольной СЛАУ.
Нисходящее программирование
Вызов подпрограммы
Подпрограмма - это отдельная функционально независимая часть программы.
1) описание подпрограммы
2) обращение к подпрограмме
Глобальными называются переменные, объявленные в основной программе и доступные как программе, так и всем ее подпрограммам.
Локальными называются переменные, объявленные внутри подпрограммы и доступные только ей самой.
Обмен информацией между основной программой и подпрограммой может осуществляться только с помощью глобальных переменных и с помощью параметров подпрограммы.
Подпрограмма может использовать любые глобальные переменные кроме тех, которые имеют те же имена, что и ее локальные переменные. Если в подпрограмме описана локальная переменная, имя которой совпадает с именем некоторой глобальной переменной (коллизия переменных) , то данная глобальная переменная становится недоступной в этой подпрограмме, и при указании идентификатора переменной произойдет обращение к локальной переменой подпрограммы, а не одноименной глобальной переменной. Память для локальных (т.е. описанных в подпрограмме) переменных выделяется на время исполнения данной подпрограммы в специальной области, называемой стеком. При завершении работы подпрограммы память освобождается, поэтому все внутренние результаты работы подпрограммы не сохраняются от одного обращения к другому.
Procedure <имя процедуры>(список формальных параметров : их тип);
Var (локальные переменные)
begin
<раздел операторов>
end; {procedure}
Процедура вызывается по имени:
<имя процедуры> (фактические параметры);
- в отличие от функции, не надо присваивать результат (power:=res;)
Например:
Procedure express (a, b, c : real; var x, y:real);