SlideServe
Menu
Préférences
© SlideServe · v2026

Подпрограмма-Функция

stella-foley avatar
14 diapositives · 291 Views · Nov 04, 2014

Подпрограмма-Функция. Инструкция обращения к функции : Переменная := Функция (Параметры) ; Переменная — имя переменной, которой надо присвоить значение, вычисляемое функцией ; Функция — имя функции, значение которой надо присвоить переменной ;

Подпрограмма-Функция - slide 1
01 / 14Подпрограмма-Функция
1 / 17

Télécharger la présentation

Подпрограмма-Функция
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation

  1. Подпрограмма-Функция Инструкция обращения к функции : Переменная := Функция (Параметры) ; Переменная — имя переменной, которой надо присвоить значение, вычисляемое функцией; Функция — имя функции, значение которой надо присвоить переменной; Параметры — список формальных параметров, которые применяются для вычисления значения функции. В качестве параметров обычно используют переменные или константы. Внимание : • Тип переменной, которой присваивается значение функции, должен соответствовать типу функции; • Тип и количество параметров для каждой конкретной функции строго определены

  2. // Функция проверяет, является ли символ допустимым во время ввода дробного числа function IsFloat(ch : char; st: string) : Boolean;beginif (ch >= '0') and (ch <= '9') // цифры or (ch = #13) // клавиша <Enter> or (ch = #8) // клавиша <Backspace> thenbeginIsFloat:= True; // символ верный Exit; // выход из функции end; case chof'-': if Length(st) = 0 then IsFloat := True; ',': if (Pos(',‘,st) = 0)and (st[Length(st)]>= '0') and (st[Length(st)] <= '9')then // разделитель можно ввести только после цифры // и если он еще не введен IsFloat := True; else // остальные символы запрещены IsFloat := False; end; end; Примеры функций // Функция проверяет, является ли символ допустимым во время ввода дробного числа целого числа function Islnt(ch : char) : Boolean;beginif (ch >= '0‘)and (ch <= '9') // цифры or (ch = #13) // клавиша <Enter> or (ch = #8) // клавиша <Backspace> then Islnt := True // символ допустим else Islnt := False; // недопустимый символ end;

  3. Использование функции unit fazenda;interface ……………………………….. implementation{$R *.dfm}function IsFloat(ch : char; st: string) : Boolean;beginif (ch >= '0') and (ch <= '9') // цифры or (ch = #13) // клавиша <Enter> or (ch = #8) // клавиша <Backspace> thenbeginIsFloat := True; // символ верный Exit; // выход из функции end; объявление своей функции, следует поместить в текст программы в секцию реализации, перед подпрограммой, которая применяет эту функцию. case chof'-‘: if Length (st) = 0 then IsFloat := True; ', ‘: if (Pos (',', st) = 0)and (st [Length(st)] >= '0') and (st [Length(st)] <= '9')then // разделитель можно ввести только после цифры и если он еще не введен IsFloat := True else // остальные символы запрещены IsFloat := False; end; end;

  4. Пример использования функции // щелчок на кнопке Вычислить procedure TForm1.ButtonlClick(Sender: TObject);varrast : real; // расстояние cena : real; // цена potr : real; // потребление на 100 км summ : real; // суммаmes: string; beginrast := StrToFloat (Edit1.Text);cena := StrToFloat (Edit2.Text);potr := StrToFloat ( Edit3.Text);summ := rast / 100 * potr * cena;if CheckBox1.Checked then summ := summ * 2;mes := 'Поездка на дачу';if CheckBoxl.Checkedthen mes := mes + ' и обратно';mes := mes + 'обойдется в ' + FloatToStrF(summ,ffGeneral,4,2) + ' руб.';Label4.Caption := mes; end; end. // нажатие клавиши в поле Расстояние procedure TForm1.EditlKeyPress(Sender: TObject; varKey: Char); beginif Key = Char(VK_RETURN)then Edit2.SetFocus // переместить курсор в поле Цена else If not IsFloat(Key,Edit2.Text) then Key := Chr(0);end; // нажатие клавиши в поле Цена procedure TForml.Edit2KeyPress(Sender: TObject;varKey: Char);beginif Key = Char(VK_RETURN)then Edit3.SetFocus // переместить курсор в поле Потребление else If not IsFloat(Key,Edit2.Text) then Key := Chr(0);end; // нажатие клавиши в поле Потребление procedure TForml.Edit3KeyPress(Sender: TObject; varKey: Char);beginif Key = Char(VK_RETURN)then Buttonl.SetFocus // // сделать активной кнопку Вычислить else Ifnot IsFloat(Key,Edit2.Text) then Key := Chr(0);end;

  5. Процедура Обычно подпрограмма реализуется как процедура в двух случаях: • когда подпрограмма не возвращает в основную программу никаких данных. Например, вычерчивает график в диалоговом окне; • когда подпрограмма возвращает в вызвавшую ее программу больше чем одно значение. Например, подпрограмма, которая решает квадратное уравнение, должна вернуть в вызвавшую ее программу два дробных числа — корни уравнения

  6. Объявление процедуры procedureИмя(var параметр1: тип1; ... varпараметр К: тип К ) ; var// здесь объявление локальных переменных begin// здесь инструкции процедуры end; где:procedure— зарезервированное слово языка Delphi, обозначающее, что далее следует объявление процедуры;имя— имя процедуры, которое используется для вызова процедуры;параметр K — формальный параметр, переменная, которая используется в инструкциях процедуры. Слово var перед именем параметра не является обязательным. Однако если оно стоит, то это означает, что в инструкции вызова процедуры фактическим параметром обязательно должна быть переменная.

  7. Пример процедуры3 входных параметра и 3 выходных// решает квадратное уравнение procedure SqRoot(a,b,c : real;varxl,x2 : real;varok : boolean); { a,b,c — коэффициенты уравненияx1,x2 — корни уравнения ok = True — решение есть ok = False — решения нет } vard : real; // дискриминант begin d:= Sqr(b) - 4*a*c; if d < 0 thenok := False // уравнение не имеет //решения elsebeginok := True;x1 := (-b + Sqrt(d)) / (2*a) ; x2 := (b + Sqrt(d)) / (2*a); end; end;

  8. Использование процедуры Разработанную процедуру нужно поместить в раздел implementation, перед подпрограммой, которая использует эту процедуру. Инструкция вызова процедуры: Имя (СписокПараметров); где:Имя— имя вызываемой процедуры;СписокПараметров— разделенные запятыми фактические параметры. Фактическим параметром, в зависимости от описания формального параметра в объявлении процедуры, может быть переменная, выражение или константа соответствующего типа. Например, SqRoot (StrToFloat(Edit1.Text), StrToFloat(Edit2.Text), StrToFloat(Edit3.Text), k1,k2,rez); Если в описании процедуры перед именем параметра стоит слово var, то при вызове процедуры на месте соответствующего параметра должна стоять переменная основной программы. Использование константы или выражения считается ошибкой, и компилятор в этом случае выведет сообщение: Typesofactualandformalvarparametersmustbeidentical (ТИП фактического параметра должен соответствовать типу формального параметра).

  9. Пример использования процедуры unit SqRoot_; interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;………………………………….. implementation{$R *.dfm}procedure SqRoot(a,b,c: real; varx1, x2 : real; varok : boolean); vard: real; // дискриминант begind:= Sqr(b) - 4*a*c; ifd< 0 thenok := False // уравнение не имеет решения elsebeginok := True;x1:= (-b + Sqrt(d)) / (2*a); x2 := (b + Sqrt(d)) / (2*a) ; end; end; procedure TForm1.Button1Click(Sender: TObject); vark1,k2: real; // корни уравнения rez: boolean; // True —решение есть, False —решения нет mes: string; // сообщение beginSqRoot(StrToFloat(Edit1.Text), StrToFloat(Edit2.Text) ,StrToFloat(Edit3.Text) , k1,k2,rez); ifrezthenmes := 'Корни уравнения' + #13 + 'x1='+FloatToStrF(k1,ffGeneral,4,2)+#13+ 'x2='+FloatToStrF(k2,ffGeneral,4,2)+#13 elsemes := 'Уравнение не имеет решения'; labels.Caption := mes; end;end.

  10. Повторное использование функций и процедур • Разработав некоторую функцию, программист может использовать ее в другой программе, поместив текст этой функции в раздел implementation. • Однако этот способ неудобен, т. к. приходится набирать текст функции заново или копировать его из текста другой программы. • Более удобный способ - Создание модуля • Delphi позволяет программисту поместить свои функции и процедуры в отдельный модуль, а затем использовать процедуры и функции модуля в своих программах, указав имя модуля в списке модулей, необходимых программе (инструкция uses).

  11. созданию модуля • закрыть окно формы и окно модуля формы (в ответ на вопрос о необходимости сохранения модуля следует выбрать No, т. е. модуль, соответствующий закрытой форме, сохранять не надо). • Затем из меню Fileнужно выбрать команду New | Unit. • В результате открывается окно редактора кода, в котором находится сформированный Delphi шаблон модуля.

  12. Модуль программиста unit my__unit; interface // объявления процедур и функций, доступных программам, использующим этот модуль function IsInt(ch : char) : Boolean; function IsFloat(ch : char; st: string) : Boolean;implementation function Islnt(ch : char) : Boolean; Begin if(ch >= '0') and (ch <= '9')or (ch = #13) or(ch = #8) then Islnt := True // символ допустим else Islnt := False; // недопустимый символ end; function IsFloat(ch : char; st: string) : Boolean; // ch — очередной символ // st — уже введенные символы Begin if(ch >= '0') and (ch <= '9') or(ch = #13) or(ch = #8) thenbeginIsFloat:= True; // символ верный Exit; // выход из функции end; case ch of'-': if Length(st) = 0 then IsFloat:= True; ',':if (Pos(',',st) = 0)and (st[Length(st)] >= '0') and (st[Length(st)] <= '9')then IsFloat:= True; else IsFloat:= False; end; end. Сохраняется модуль выбором из меню File команды Save. Для модулей повторно используемых процедур и функций лучше создать отдельную папку, назвав ее, например, Units.

  13. Использование модуля Затем модуль нужно добавить в проект. Для этого из меню Projectнадо выбрать команду AddtoProjectи в открывшемся диалоговом окне — имя файла модуля. В результате добавления модуля к проекту в окне редактора появится вкладка с текстом добавленного к проекту модуля. После добавления модуля к проекту и включения его имени в список используемых модулей (инструкция uses) можно выполнить компиляцию программы. Для того чтобы в программе могли применяться функции и процедуры модуля, программист должен • добавить этот модуль к проекту • указать имя модуля в списке используемых модулей unit fazenda_; interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, my_unit; // модуль программиста