- •Лабораторная работа № 3
- •3.1.1.Глобальные данные
- •3.1.2 Способы передачи параметров
- •3.1.3 Функции
- •3.1.4. Процедуры
- •3.1.5. Передача массивов в качестве параметров
- •3.1.6. Рекурсивные подпрограммы
- •3.2 Модули
- •Implementation {реализация }
- •3.3. Массивы
- •Interface {интерфейс модуля}
- •3.4. Компоненты StringGrid и Memo
- •Ход работы
- •Контрольные вопросы.
Interface {интерфейс модуля}
uses {подключение других модулей}
const type var
procedure
function
Implementation {реализация }
uses
const
type
var
procedure
function
begin {инициализация }
<операторы> {исполняются один раз перед выполнением }
{операторов программы, включающей модуль }
end.
Пример использования модуля:
Рассмотрим программу, которая включает модуль Math, содержащий функцию power(a,b) возведения числа a в произвольную степень b и функцию log(c) вычисления десятичного логарифма числа С.
Исходный текст модуля сохраняем в файле Math.pas: unit Math; interface
function power( base, exponent: real): real; function log ( argument : real): real; implementation
function power( base, exponent: real): real; begin
power:= exp( exponent * ln(base)); end;
function log ( argument : real): real; const base=10; begin
log:= ln(argument) / ln(base); end; end.
После его успешной компиляции создается файл Math.tpu (расширение tpu - Turbo Pascal Unit). Разместим этот файл в том же каталоге, что и текст программы ex_Math.
program ex_Math;
uses Math; {подключение модуля Math} var a, b, c: real; begin readln(a, b, c);
writeln('A в степени B = ', power(a, b)); writeln('Логарифм C по основанию 10 = ', log(C)); end.
3.3. Массивы
Массив - это структура данных, состоящая из фиксированного числа элементов, имеющих один и тот же тип и расположенных в памяти последовательно.
Операция выбора элемента массива называется индексацией; синтаксически она записывается как имя массива, за которым в квадратных скобках следует значение индекса (номера) выбираемого элемента.
Массив - это структура данных с произвольным доступом, то есть время доступа к значению элемента массива не зависит от номера элемента.
Формат описания массива:
array[<размерность>] of <тип элементов>;
Пример1:
type
ArrayType1 = (one, two, three);
ArrayType2 = 1..5;
var
mas_int : array[- 5..5] of integer; mas_real : array[1..7, 1..4] of real; mas_byte1 : array[ArrayType1] of byte; mas_byte2 : array[ArrayType2] of byte;
begin
mas_int[- 4] := 10; mas_real[2, 5] := 10.5; mas_byte1[one]:= 75; mas_byte2[2]:= mas_byte1[one];
end;
Действия над массивами
Над массивами, как едиными целыми, допустимы только операции сравнения =, <> и операция присваивания. Массивы, участвующие в этих операциях, должны иметь одинаковые размерности и типы компонент.
Пример2:
const N=2; M=3;
type massiv= array[1..N, 1..M] of real; {2-мерный массив, N строк и M столбцов}
var
b : massiv;
с :array[1..10] of integer;
j : byte; begin
{ввод значений массива } for i:=1 to 10 do readln(c[i]);
{ элементы вещественного типа
{ описание 2-мерных массивов a и b }
{ описание одномерного массива с из }
{ 10 элементов целого типа}
{индексы элементов массивов}
{инициализация массива a значением переменной i}
for i:=1 to N do
for j:=1 to M do
a[i, j]:=i;
{присвоение элементам b соответствующих значений элементов a }
b:=a; { возможно только для массивов одинакового типа! }
{вывод значений массива b по строкам}
for i:=1 to N do
begin
for j:=1 to M do
begin { вывод i-й строки массива b }
write(b[i, j]); end;
writeln; { переход на новую строку }
end; end.
