Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

Информатика, программирование->Лекция
К типизированным файлам относятся файлы строго определенного типа. Чаще всего это файлы, состоящие из записей. Они применяются для создания различных ...полностью>>
Информатика, программирование->Лекция
Лекция. Введение. Общие сведения о системе общих типов (CTS). Типы значений и ссылочные типы. Встроенные типы. Определение типа: атрибуты; модификатор...полностью>>
Информатика, программирование->Лекция
Библиотека классов платформы .NET Framework Framework Class Library, FCL содержит определения типов, например, классов, структур, перечислимых типов, ...полностью>>
Информатика, программирование->Домашняя работа
Классы File, FileInfo, Directory, DirectoryInfo, Path содержат методы для работы с файлами и каталогами (папками). Классы File и Directory содержат ст...полностью>>

Главная > Лабораторная работа >Информатика, программирование

Сохрани ссылку в одной из сетей:

Введение

В практике программирования довольно часто встречается ситуация, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких других местах программы. Чтобы избавить программиста от столь нерационального занятия, в 50-х годах ХХ века была предложена концепция подпрограмм, получившая широкое распространение практически во всех языках программирования.

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

  • организовать работу нескольких программистов над одной программой с последующим объединением отдельно отлаженных и относительно независимых блоков в единое целое;

  • проводить отладку отдельных блоков и только после этого программы в целом;

  • значительно экономить память, так как многократно используемый блок заносится в память только один раз;

  • упростить внесение изменений в программу, так как исправление ошибки в одном блоке не вызывает корректировку других блоков.

I. ЦЕЛЬ И СОДЕРЖАНИЕ РАБОТЫ

Цель лабораторной работы:

  • привитие практических навыков в написании и использовании пользовательских подпрограмм на языке Delphi.

Содержание работы:

1. Процедуры и функции, определенные пользователем.

2. Рекурсивные подпрограммы.

Требования к отчету:

Отчет по работе должен содержать:

  • название лабораторного занятия, цель работы, порядок выполнения каждого пункта задания, выводы по каждому пункту задания;

  • указанные в заданиях файлы, сохраненные в личной папке на жестком диске.

II. МЕТОДИКА ВЫПОЛНЕНИЯ РАБОТЫ

1. Процедуры и функции, определенные пользователем

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

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

Использование имени процедуры в программе называется оператором процедуры или вызовом процедуры. Имя процедуры нельзя использовать в выражениях в качестве операндов.

Функция аналогична процедуре, но имеется два отличия:

  1. функция передает в точку вызова скалярное значение (результат своей работы);

  2. имя функции можно включать в выражения как операнд.

Функция, если она встречается в выражении, называется указателем функции или обращением к функции.

Все процедуры и функции языка Delphi подразделяются на две группы: встроенные и определенные пользователем.

Встроенные (стандартные) процедуры и функции являются частью языка и могут вызываться по имени без предварительного определения в разделе описаний блока.

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

Процедуры и функции пользователя организовываются самим программистом в соответствии с синтаксисом языка и представляют собой локальный блок. Предварительное описание процедур и функций пользователя обязательно.

Пользовательские процедуры и функции состоят из операторов, локальных данных и могут включать внутренние процедуры и функции.

Процедуры и их использование

Процедура пользователя представляет собой именованную группу операторов, реализующую определенную часть общей задачи и вызываемую для выполнения по имени из любой позиции раздела операторов.

Подпрограмма реализуется в виде процедуры в двух случаях:

  • когда подпрограмма не возвращает в основную (вызывающую) программу никаких данных (например, вычерчивает график в диалоговом окне);

  • когда подпрограмма возвращает в вызвавшую ее программу больше чем одно значение (например, подпрограмма, решающая квадратное уравнение, должна вернуть в вызвавшую ее программу два дробных числа — корни уравнения).

Если программист вводит собственную процедуру, то она должна быть полностью описана в разделе описаний программы.

Описание процедуры включает заголовок и тело процедуры. Заголовок состоит из ключевого слова Procedure, идентификатора (имени) процедуры и необязательного заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра.

В общем виде структура описания процедуры может иметь вид:

procedure Имя_процедуры(var Пар_1: Тип_1; ... var Пар_К: Тип_К);

// Заголовок процедуры

var

// Разделы описания локальных меток,

// констант, типов, переменных, внутренних процедур и функций

begin

// Раздел операторов (Тело_процедуры)

end;

где Имя_процедуры – идентификатор, уникальный в пределах программы, который используется для вызова процедуры;

var Пар_1: Тип_1; ... var Пар_К: Тип_К – список формальных параметров (слово var перед именем параметра не является обязательным; однако если оно стоит, то это означает, что в инструкции вызова процедуры фактическим параметром обязательно должна быть переменная). Параметры процедуры используются для передачи данных в процедуру, а также для возврата данных из процедуры в вызвавшую ее программу.;

Тело_процедуры – локальный блок, включающий операторы, которые реализуют заданный алгоритм. По структуре аналогичен программному блоку.

Например, заголовок процедуры имеет вид:

Procedure Sort(Var A: integer; Var B: real);

Procedure Kvadr(Alf,Bet: cardinal; Gam: boolean);

Procedure SunWed; // Алгоритм, реализованный процедурой,

// не требует формальных параметров

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

// Оператор вызова процедуры

Имя_процедуры(Список_фактических_параметров);

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

Если в описании процедуры перед именем параметра стоит слово var, то при вызове процедуры на месте соответствующего параметра должна стоять переменная основной программы. Использование константы или выражения считается ошибкой, и компилятор в этом случае выведет сообщение: Types of actual and formal var parameters must be identical (тип фактического параметра должен соответствовать типу формального параметра).

Для указанных выше примеров операторы вызова процедуры будут иметь вид:

Sort(A1,B1); // Параметры - значения переменных

Kvadr(14,25,True); // Параметры - непосредственно значения

SunMassiv; // Фактические параметры отсутствуют

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

Количество и тип формальных параметров должны быть равны количеству и типу фактических параметров.

Задание № 1. Процедура решения квадратного уравнения

  1. Разработайте консольное приложение, в котором используется процедура решения квадратного уравнения (ах2 + bх+ с = 0). У процедуры должно быть шесть параметров:

    • первые три предназначены для передачи в процедуру исходных данных — коэффициентов уравнения (a, b, c);

    • параметры x1 и х2 используются для возврата результата — корней уравнения;

    • параметр ok служит для передачи информации о том, что решение существует (True) или не существует (False).

  2. Листинг программы должен иметь примерно следующий вид:

program Kvadrat_Ur;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

a1,b1,c1: real;

k1,k2: real;

Rez: boolean;

// Описание процедуры решения квадратного уравнения

procedure SqRoot(a,b,c:real; var x1,x2:real; var ok:boolean);

// a,b,c - коэффициенты уравнения;

// x1,x2 - корни уравнения;

// ok = True - решение есть, ok = False - решения нет

var

d: real; // Дискриминант

begin

d:=Sqr(b)-4*a*c;

if d<0 then ok:=False // Уравнение не имеет решения

else

begin

ok:=True;

// Действительные корни уравнения

x1:=(-b+Sqrt(d))/(2*a);

x2:=(-b-Sqrt(d))/(2*a);

end;

end;

begin

writeln('Vvedite znachenia koefficientov a, b, c');

readln(a1,b1,c1);

Sqroot(a1,b1,c1,k1,k2,Rez); // Оператор обращения к процедуре

if Rez then

writeln('x1=',k1:10:5,' x2=',k2:10:5)

else writeln('Reshenia net');

readln

end.

  1. Откомпилируйте и выполните программу. При наличии ошибок, исправьте их.

  2. Проверьте решение задачи на двух наборах аргументов: (a=3, b=8, c=2) и (a=7, b=5, c=1). При отсутствии ошибок вы должны получить результаты, показанные на рис. 1.1.

  1. Сохраните проект программы в папке \Мои документы\ЛЗ-03\Задание1 под именем Kvadrat_Ur.



Похожие страницы:

  1. ... в визуальной интегрированной системе разработки программ Delphi

    Реферат >> Информатика, программирование
    ... привела к идее использования в подпрограммах локальных данных. И ... компонентов на форме, заданию некоторых их свойств и написанию, ... привлекательного и дружественного пользовательского интерфейса. Главной ... ), содержащий код на языке Delphi, с которого начинается ...
  2. Разработка приложений в визуальной среде Delphi на языке программирования Object Pascal

    Курсовая работа >> Информатика
    ... визуальной среде Delphi на языке программирования Object Pascal ... всё необходимое для написания, отладки, запуска ... , на ходу проектируя и видоизменяя их пользовательский интерфейс ... - подпрограмм, дополняющих основную программу. Использование подпрограмм не ...
  3. Язык программирования Delphi (Object Pascal)

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

    Реферат >> Информатика, программирование
    ... подпрограмм, которые обеспечивают отображение на ... на русском или украинском языке. Программа, написанная на языке Delphi, ... Поэтому описание пользовательских идентификаторов, ... языке для совместимости со старыми версиями. Не рекомендуется к использованию ...
  5. Основы программирования на языке Си

    Реферат >> Информатика
    ... на языке Си++ и (4) Программирование для Microsoft Windows с использованием ... и Inprise Delphi), выбор их ... зуемых в подпрограмме, в начале этой подпрограммы. В ... (Определения констант и пользовательских типов) // ПРОТОТИП ... языку Си++, написанное авто- ром языка. ...

Хочу больше похожих работ...