Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Полный курс по Turbo Pascal.doc
Скачиваний:
203
Добавлен:
02.05.2014
Размер:
477.18 Кб
Скачать

Глава 3. Процедуры и функции Функции

Подпрограмма-функция обрабатывает данные, переданные ей из главной программы, и затем возвращает полученный результат (в отличие от процедуры). Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово Function, имя, список формальных параметров (заключенный в скобки) и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре сходный с программой. Общий вид описания функции:

Function<имя> (<параметры>): <тип результата>;

Const…;ù

… ý блок описания

Var ….; û

begin

<операторы>

end;

В разделе операторов должен находиться, хотя бы один оператор, присваивающий имени функции значение. Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам и иметь тот же тип.

Пример 1. Найти значение следующего выражения:F(t) –F(c), гдеF(x)=Öx+2x2+3x

Program m;

Uses crt;

Var t, c, r : real;

Function F(x: real) : real;

Begin

F:= sqrt(x)+ 2*sqr(x) + 3*x;

End;

Begin

Clrscr;

Write(‘Введите числа’);

Readln (t, c);

r:= F(t) – F(c);

write(‘результат =’, r:8:3); {8 символов на все число, 3 – на дробную часть, см п.1.4.2}

end.

Пример 2. Найти наибольшее из четырех чисел, используя подпрограмму нахождения наибольшего из двух чисел.

Program max;

Uses crt;

Var a, b, c, d, m, p, q:real;

Function Bid(x, y: real) : real;

Begin

If x>y then bid:=x

else bid:=y;

End;

Begin

Clrscr;

Write(‘Введите числа’);

Readln (a, b, c, d);

p:=bid(a, b);

q:= bid(c, d);

m:=bid(p, q);

write(‘наибольший элемент’, m:8:3);

end.

Глава 4. Массивы Одномерные массивы

Все простые типы данных, рассматриваемые ранее, имеют два характерных свойства: неделимость и упорядоченность их значений. Составные, или структурированные, типы данных задают множество сложных значений с одним общим именем. Существует несколько методов структурирования, каждый из которых отличается способом обращения к отдельным компонентам. В данном учебном пособии будут рассмотрены только два структурированных типа данных: регулярный тип (массивы) и строковый тип (часть 5).

С понятием «массив» приходится встречаться при решении научно-технических, экономических задач обработки большого количества однотипных значений.

Таким образом, массив – это упорядоченная последовательность данных, состоящая из фиксированного числа элементов, имеющих один и тот же тип, и обозначаемая одним именем.

Название регулярный тип массивы получили за то, что в них объединены однородные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элементы в массиве.

Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое. Элементы, образующие массив, упорядочены так, что каждому элементу соответствует совокупность номеров (индексов), определяющих его место в общей последовательности. Индексы представляют собой выражения простого типа. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индекса нужного элемента: <имя массива>[<индекс>].

Описание массива определяет его имя, размер массива и тип данных. Общий вид описания массива:

Type <имя нового типа данных>=array[<тип индекса>] of <тип компонентов>;

Далее, в перечне переменных указывается имя массива, и через двоеточие указывается имя нового типа данных. Массив может быть описан и без представления типа в разделе описания типов данных:

Var <имя массива>: array [<тип индекса>] of <тип компонентов>;

Чаще всего в качестве типа индекса используется интервальный целый тип.

Одномерные массивы

Линейный (одномерный) массив – массив, у которого в описании задан только один индекс, если два индекса – то это двумерный массив и т.д. Одномерные массивы часто называют векторами, т.е. они представляют собой конечную последовательность пронумерованных элементов.

Присваивание начальных значений (заполнение массива) заключается в присваивании каждому элементу массива некоторого значения, заданного типа. Наиболее эффективно эта операция осуществляется при помощи оператора for. Ввод данных может осуществляться : с клавиатуры, при помощи различных формул, в том числе и датчика случайных чисел.

Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, им можно присваивать любые значения, соответствующие их типу и т.д.

Алгоритм решения задач с использованием массивов:

        Описание массива

        Заполнение массива

        Вывод (распечатка) массива

        Выполнение условий задачи

        Вывод результата

Пример 1. Задан одномерный массив В(10), заполненный произвольным образом. Подсчитать количество элементов массива, больших заданного числаk.

Program massiv;

Uses crt;

Var b:array [1..10] of integer;

I, k, s : integer;

Begin

Clrscr; S:=0;

For i:=1 to 10 do

Begin

Write(‘Введите’,i, ‘-й элемент массива ’);

Readln (B[i]);

Write(b[i], ‘ ‘);

End;

Write(‘Введите числоk’);

Readln(k);

For i:=1 to 10 do

If b[i]>k then s:=s+1;

Write(‘Количество элементов’, s);

End.

Пример 2. Определить самую высокую температуру и самый теплый день в мае.

Program massiv;

Uses crt;

Var t:array [1..31] of integer;

I, max, n : integer;

Begin

Clrscr;

For i:=1 to 31 do

Begin

t[i]:=random(20);

Write(b[i], ‘ ‘);

End;

Max:=t[1]; n:=1;

For i:=2 to 31 do

Begin

If t[i] > max then max:=t[i]; n:=i ;

End;

Write(‘максимальная температура’, max, ‘в’, n, ‘день’);

End.