How many square feet of sheets do you have?
123.21 You can cover a square with sides of 11.1 feet with your sheets. Функции, определяемые пользователем В любой программе на Delphi должен присутствовать основной блок программы begin.. end. определяемый пользователем. Теперь предположим, что в программу необходимо добавить еще одну, определяемую пользователем функцию. Как и в случае с библиотечными функциями, для вызова определяемой пользователем функции в программе используется ее имя. И так же, как для библиотечных функций, в программе следует поместить определение функции до ее вызова; обычно определение помещается непосредственно перед основным блоком программы begin.. end... Этот способ иллюстрируется в листинге 1.5. Программа 1_5 // определение собственной функции program Project1;
{$APPTYPE CONSOLE}
Uses SysUtils; Var count: Integer;
procedure simon(n: Integer); //определение функции simon() Begin Writeln(' Alex fired a machine gun ', n, ' times.'); end;
Begin simon(3); //вызов функции simon() Write('Pick an integer: '); Readln(count); simon(count); //повторный вызов этой функции Readln; end. Основной блок программы вызывает функцию simon() дважды. Первый раз аргументом является число 3, а второй раз — переменная count. Между этими вызовами пользователь вводит целое число, которое сохраняется в переменной count. Ниже приведен пример выходных данных программы: Simon says touch your toes 3 times. Pick an integer: 512 Simon says touch your toes 512 times. Формат определения функции/процедуры Сначала идет заголовок функции, затем следует тело функции/процедуры ограниченное зарезервированными слоами begin и end. В общем случае формат определения функции следующий: function имя_функции(список_аргументов): тип_возвращаемого_значения; Begin Операторы end; В общем случае формат определения процедуры следующий:
procedure имя_процедуры(список_аргументов); Begin Операторы end; Заголовок функции/процедуры Заголовок функции/процедуры определяет интерфейс между функцией и остальной частью программы, а тело функции содержит инструкции для компьютера, т.е. определяет то, что собственно делает функция. Заголовок процедуры simon() имеет следующий вид: procedure simon(n: Integer); Начальное ключевое слово procedure означает, что процедура simon() не имеет возвращаемого значения. Следовательно, в результате вызова процедуры simon() не будет получено число, которое можно было бы присвоить какой-нибудь переменной в основном блоке программы. Итак, первый вызов этой процедуры выглядит следующим образом: simon(3); // правильно для функций без возвращаемого значения Поскольку в процедуре simon() отсутствует возвращаемое значение, ее нельзя использовать таким образом: simple:= simon(3); //недопустимо для процедуры без возвращаемого значения Выражение n: Integer в круглых скобках означает, что процедура simon() имеет один аргумент типа Integer. Здесь n — это новая переменная, которой присваивается значение, передаваемое в функцию во время ее вызова. Таким образом, при вызове следующей функции simon(3); переменной n, определенной в заголовке этой процедуры, присваивается значение 3. Переменная n в операторе WriteLn означает, что используется ее значение, передаваемое в процедуру при вызове. Вот почему в выходных данных процедуры simon(3) отображается число 3. В примере выходных данных при втором вызове процедуры simon(count) отображается число 512, поскольку это значение было присвоено переменной count. Иными словами, заголовок процедуры simon() информирует программу о том, что эта процедура принимает один аргумент типа Integer и у нее отсутствует возвращаемое значение. Определяемая пользователем функция Теперь сделаем еще один шаг вперед и напишем функцию, в которой используется оператор Result (оператор возврата). С помощью такой функции можно решить проблему преобразования сантиметров в миллиметры.
Программа 1_6 program Project1; //преобразование см в мм
{$APPTYPE CONSOLE}
Uses SysUtils;
Var cm, mm: Integer;
function cm_to_mm(cantim: Integer): Integer; Begin Result:= cantim * 10; end;
Begin Write('Enter length in cm: '); Readln(cm); mm:= cm_to_mm(cm); Writeln(cm, ' cm = ', mm, ' mm'); Readln; end. В результате выполнения программы мы получим следующие результаты: Enter length in cm: 14 14 cm = 140 mm С помощью оператора ReadLn основной блок программы вводит значение для целочисленной переменной cm. Это значение передается функции cm_to_mm() в качестве аргумента. Функция cm_to_mm() присваивает данное значение переменной cantim и, используя ключевое слово result, возвращает в основной блок значение 14 * cantim. Такая запись оператора Result иллюстрирует тот факт, что за ключевым словом Result вовсе не обязательно должно следовать простое число. Используя в данном операторе сложное выражение, мы избегаем необходимости создавать новую переменную и присваивать ей возвращаемое значение перед передачей вызывающей функции. Программа вычисляет значение этого выражения (в данном примере 140) и возвращает результирующее значение.
Вопросы для повторения 1. Какой оператор следует использовать, чтобы вывести фразу 'Hello, world' и перейти на начало новой строки? 2. Какой оператор следует использовать, чтобы создать целочисленную переменную с именем cheeses? 3. Какой оператор следует использовать, чтобы присвоить переменной cheeses значение 32? 4. Какой оператор следует использовать для ввода значения с клавиатуры и присвоения его переменной cheeses? 5. Какой оператор следует использовать для вывода предложения 'We have X varieties of cheeses', где буква X будет заменяться текущим значением переменной cheeses? 6. Какую информацию о функции дает следующий заголовок функции? function froop(t: Real): Integer; Упражнения по программированию 1. Напишите программу, которая отображает на экране ваше имя и адрес? 2. Напишите программу, которая запрашивает расстояние в километрах и переводит его в метры. 3. Напишите программу, которая состоит из двух определяемых пользователем процедур, которые выводят на экран следующие данные:
Three blind mice Three blind mice See how they run See how they run Одна процедура, вызываемая дважды, должна отображать две первые строки, а другая, также вызываемая дважды, должна отображать остальные выходные данные. 4. Напишите программу, в которой основной блок программы вызывает определяемую пользователем функцию, принимающую в качестве аргумента значение температуры в градусах по Цельсию и возвращающую эквивалентное значением в градусах по Фаренгейту. По запросу программы температуру в градусах Цельсия вводит пользователь. Затем программа отображает результат. Данные, выводимые на экран, имеют следующий вид: Please enter a Celsius value: 20
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|