Массивы
Для обработки больших объёмов однотипных данных удобно в программах использовать массивы. При объявлении массива, в памяти компьютера выделяется блок размером равным произведению числа элементов массива умноженному на число ячеек памяти заданного типа. Доступ к каждому элементу массива осуществляется физически по адресу в памяти, а в программе по порядковому номеру элемента массива. Массивы на Pascal задаются следующим образом:
var
имя массива : array [начальный индекс .. конечный индекс] of тип данных;
Имя массива задаётся так же, как и имя любой переменной; начальный индекс и конечный индекс - числа (от и до) задающие число элементов массива. Например:
var
my_sym : array [1..100] of char; {задано 100 элементов типа char}
my_digits :array [0..20] of integer; {задан 21 элемент типа integer}
В массивы можно, как записывать, так и считывать данные. Доступ к элементам массива осуществляется по индексу в произвольном порядке. Например:
uses crt;
var
my_sym : array [1..100] of char;
my_digits: array [0..20] of integer;
c : char;
x : integer;
begin
clrscr;
Write('Wwedite symbol: '); readln(c); {Считываем символ с клавиатуры}
my_sym[33]:= c; {Присваиваем 33 элементу символьного массива}
Writeln('33 element= ',my_sym[33]); {Выводим 33 элемент на экран}
Write('Wwedite chislo: '); readln(x); {Считываем число с клавиатуры}
my_digits[2]:= x; {Присваиваем 2-му элементу массива значение Х}
Writeln('2 element= ', my_digits[2]); {Выводим 2 элемент на экран}
readln;
end.
Массивы удобно обрабатывать в циклах, так как счётчик цикла может быть индексом массива.
Кроме линейных массивов, где задан ряд элементов, можно задавать массивы в виде плоских и объёмных матриц (многомерных массивов). Например, зададим плоскую матрицу 3 х 3 элемента:
matrix1 : array [1..3,1..3] of real;
или объёмную матрицу 3 х 3 х 3 элемента:
matrix2 : array [1..3, 1..3, 1..3] of integer;
Доступ к элементам многомерных массивов осуществляется по индексам объявленного массива. Например, для массива matrix1[2,1]:= 3.6435; для массива matrix2[1,3,2]:= 12;.
Записи.
В Turbo Pascal можно создавать собственные типы данных, например записи состоящие из разнотипных элементов. Создание нового типа осуществляется следующим образом:
type <эимя типа> = record
<эимя поля 1>: <этип 1>;
<эимя поля 2>: <этип 2>;
....
<эимя поля n>: <этип n>;
end;
Для использования переменных типа "запись" следует объявить их в разделе переменных, например, краткая анкета сотрудника:
uses crt;
type man = record {Создаём запись типа man}
name: string;
age: integer;
zarplata: real;
end; {type}
var
m : man; {Объявляем переменную m типа man}
begin
clrscr;
{Доступ к полям записи: переменная, точка, имя поля}
write('Wwedite name: '); readln(m.name);
write('Wwedite god: '); readln(m.age);
write('Wwedite zarplata: '); readln(m.zarplata);
writeln('Dannye na: ',m.name, '; God: ', m.age, '; Zarplata: ',m.zarplata);
readln;
end.
Файловые типы.
Файловые типы в Turbo Pascal предназначены для чтения-записи и хранения данных. В Turbo Pascal различают три типа файлов:
- Файлы определённого типа - типизированные файлы (задаются предложением file of тип файла);
- Текстовые файлы Паскаля(определяются типом text);
- Нетипизированные файлы Паскаля(определяются типом file).
Под файлом в Паскале подразумеваются как физические файлы, так и устройства ввода-вывода, например клавиатура, экран (файлы Input / Output). Все файловые операции могут производиться лишь с элементами (компонентами) файлов.
Для работы с файлами следует связать файловую переменную с файлом, например на жёстком диске. Для этого служит оператор Assign(файловая переменная, имя дискового файла); Так как имя дискового файла величина строковая, то имя файла (и путь к нему) следует заключить в апострофы. Например:
Var
Tf: file of integer;
...
Begin
...
Assign(Tf, 'C:\file1.dat');
После окончания работы с файлами на Паскале, они должны быть закрыты:
Close(файловая переменная);
Для записи данных в файл следует вызвать оператор Rewrite(имя файловой переменной);
Непосредственная запись на диск осуществляется оператором Write(имя файловой переменной, записываемые значения); Например, нужно записать в файл 5 чисел типа integer:
uses crt;
var
nf: file of integer; {Объявляем файловую переменную}
n:array [1..5] of integer;
z: integer;
begin
clrscr;
{Заполняем массив значениями}
for z:= 1 to 5 do
begin
write('Wwedi n',z, ':') ;readln(n[z]);
end;
assign(nf, 'C:\data.dat'); {Связываем файловую переменную с физическим файлом}
rewrite(nf); {Включаем режим записи}
for z:= 1 to 5 do write(nf, n[z]); {Записываем значения массива в файл}
close(nf); {Закрываем файл}
readln;
end.
Для чтения данных из файла следует использовать оператор Reset(имя файловой переменной);
Непосредственно чтение из файла осуществляется оператором Read(имя файловой переменной, переменные);
Например, программа чтения чисел из файла, созданного в предыдущей программе будет выглядеть так:
uses crt;
var
nf: file of integer;
n:array [1..5] of integer;
z: integer;
begin
clrscr;
assign(nf, 'C:\data.dat');
reset(nf);
for z:= 1 to 5 do read(nf, n[z]);
for z:= 1 to 5 do writeln(n[z]);
close(nf);
readln;
end.
|