Что лучше, процедура или функция?

Скачать презентацию Что лучше, процедура или  функция? Скачать презентацию Что лучше, процедура или функция?

04_Способы передачи параметров в подпрограммы.ppt

  • Количество слайдов: 45

>Что лучше, процедура или  функция?    ? Что лучше, процедура или функция? ?

>Что лучше, процедура или  функция?     ?  На вкус Что лучше, процедура или функция? ? На вкус и цвет товарища нет.

>Способы передачи параметров в подпрограммы Способы передачи параметров в подпрограммы

>Схема передачи параметров Схема передачи параметров

> Два способа передачи  параметров Существует два способа передачи  параметров в подпрограммы Два способа передачи параметров Существует два способа передачи параметров в подпрограммы : • передача по значению • передача по наименованию (по ссылке) Способ передачи указывается при объявлении параметра в списке формальных параметров.

>Если способ передачи не  указан (по умолчанию),  параметры передаются  по значению Если способ передачи не указан (по умолчанию), параметры передаются по значению

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

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

>  Недостатки передачи  параметров по значению При передаче параметров, требующих много памяти, Недостатки передачи параметров по значению При передаче параметров, требующих много памяти, например, большие массивы чисел или длинные строки, их копии занимают много места в памяти и требуется время для пересылки данных из одного места памяти в другое

> Передача параметров по  наименованию Такой способ передачи будет использован в том случае, Передача параметров по наименованию Такой способ передачи будет использован в том случае, если перед именем параметра в списке формальных параметров стоит спецификатор var

>Передача параметров по наименованию  В подпрограмму передаются адреса фактических параметров.  Это означает, Передача параметров по наименованию В подпрограмму передаются адреса фактических параметров. Это означает, что подпрограмма будет работать непосредственно с фактическими параметрами, а не с их копиями

> Преимущества передачи параметров по наименованию • Передаче параметров по  наименованию экономит память Преимущества передачи параметров по наименованию • Передаче параметров по наименованию экономит память и сокращает время обращения к подпрограммам • Можно возвращать результаты работы подпрограммы через фактические параметры • Можно вернуть даже несколько параметров

>  Недостатки передачи параметров по наименованию • В качестве фактических параметров  можно Недостатки передачи параметров по наименованию • В качестве фактических параметров можно использовать только переменные • Любое изменение формального параметра приводит к изменению и фактического параметра (побочный эффект)

>  Спецификатор const Для исключения побочного эффекта   нужно в объявлении формальных Спецификатор const Для исключения побочного эффекта нужно в объявлении формальных параметров вместо спецификатора var использовать спецификатор const

>Польза от побочного эффекта • Можно возвращать результаты работы  подпрограммы через фактические Польза от побочного эффекта • Можно возвращать результаты работы подпрограммы через фактические параметры • Можно вернуть даже несколько результатов

> Пример передачи параметров  по наименованию //Реализация процедуры Procedure relation (a, b : Пример передачи параметров по наименованию //Реализация процедуры Procedure relation (a, b : real; var r : real); Var sum, razn : real; Begin sum : = a + b ; razn : = a – b ; r : = sum / razn; End;

> Пример передачи параметров  по наименованию //Вызов процедуры Procedure TForm 1. btn. Click(Sender: Пример передачи параметров по наименованию //Вызов процедуры Procedure TForm 1. btn. Click(Sender: TObject); var x, z : real; begin x: =Str. To. Float(Edit 2. text); relation(x, 2. 5, z); Edit 3. text: =Float. To. Str(z); end;

>Расположение подпрограмм • Подпрограммы могут располагаться в  самых разных местах.  • Место Расположение подпрограмм • Подпрограммы могут располагаться в самых разных местах. • Место расположения программы не влияет на ее работу • От места расположения программы зависит ее доступность (видимость)

> Публичные подпрограммы • Это подпрограммы, заголовки которых  вынесены в раздел interface модуля. Публичные подпрограммы • Это подпрограммы, заголовки которых вынесены в раздел interface модуля. • Публичные подпрограммы могут вызываться из других модулей, но для этого в секции uses должно быть указано имя модуля, содержащего подпрограмму. • Подпрограммы обработки событий формы тоже можно считать публичными, так как доступ к ним возможен через имя формы, определенное в разделе var интерфейсной части модуля

> Приватные (вспомогательные)   подпрограммы • Это подпрограммы, заголовки которых не  вынесены Приватные (вспомогательные) подпрограммы • Это подпрограммы, заголовки которых не вынесены в интерфейсную часть модуля. • Располагаются в разделе implementation и должны быть описаны ранее, чем обращение к ним. • Могут располагаться и в описательной части других подпрограмм (локальные подпрограммы). Они видимы только в пределах подпрограммы - «хозяина» .

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

> Область действия имен Если имя объявлено в интерфейсной   части модуля, Область действия имен Если имя объявлено в интерфейсной части модуля, то оно доступно не только в данном модуле, но и во всех других модулях, которые в инструкции uses имеют ссылку на данный модуль

> Область действия имен  Если имя объявлено в разделе  implementation модуля, то Область действия имен Если имя объявлено в разделе implementation модуля, то оно доступно только процедурам и функциям данного модуля

> Область действия имен Если имя объявлено в разделе описаний некоторой процедуры, то это Область действия имен Если имя объявлено в разделе описаний некоторой процедуры, то это имя доступно только в пределах данной процедуры. Достоинство локальных объявлений в том, что в различных процедурах могут использоваться одинаковые имена, и эти имена не будут конфликтовать.

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

>Область действия имен Область действия имен

> Логический тип данных   и разветвления в программах Логический тип данных и разветвления в программах

> Логический тип данных   Тип Boolean используется для данных,  которые могут Логический тип данных Тип Boolean используется для данных, которые могут принимать только два значения: истина и ложь. В языке Object Pascal этим значениям соответствуют константы True и False.

>  Логический тип данных Данные такого типа обычно появляются как результат операций сравнения. Логический тип данных Данные такого типа обычно появляются как результат операций сравнения. Например, 2<3 = True, sin(x)>0 может быть и True и False, в зависимости от значения переменной х.

> Операции сравнения Название  операции  Запись на языке сравнения   Pascal Операции сравнения Название операции Запись на языке сравнения Pascal Меньше < Меньше или равно <= Больше > Больше или равно >= Равно = Не равно <>

> Бинарные операции над логическими данными     Логические операции Первый Бинарные операции над логическими данными Логические операции Первый Второй and or xor операнд (несовпа- (и) (или) дение) True False True False True False True False False

> Унарная операция для  логических данных Для данных типа Boolean определена одна Унарная операция для логических данных Для данных типа Boolean определена одна унарная операция – «нет» . В языке Object Pascal имя этой операции - not. Эта операция меняет значение логической переменной на противоположное. Например, not(2>3) = True not(sin(pi/2) >0) = False.

>  Логические выражения  • Выражения, в которых используются операнды логического типа и Логические выражения • Выражения, в которых используются операнды логического типа и операции над ними, называются логическими. • Результатом вычисления такого выражения может быть True или False. • Частями логического выражения могут быть арифметические выражения, участвующие в операциях сравнения

> Старшинство операций Операции   Приоритет not    Первый  Старшинство операций Операции Приоритет not Первый (самый высокий) *, /, div, mod, and, Второй shl, shr +, –, or, xor Третий =, <>, <, >, <=, >=, in Четвертый (самый низкий)

>Разветвления в программах Разветвляющаяся программа –   это программа,   которая реализует Разветвления в программах Разветвляющаяся программа – это программа, которая реализует разветвляющийся алгоритм

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

>Схемы алгоритмов Схемы алгоритмов

>Условные обозначения для схем алгоритмов   Начало и конец алгоритма  Обработка информации, Условные обозначения для схем алгоритмов Начало и конец алгоритма Обработка информации, например, расчет по формуле Проверка условия и принятие решения. После этого блока возможны различные пути продолжения выполнения алгоритма Предопределенный процесс, например, обращение к процедуре. Вывод или ввод информации

>Программирование  разветвлений Программирование разветвлений

>Инструкция (оператор) if…then…else Инструкция (оператор) if…then…else

>    Пример Procedure Kv. Ur();  Var a, b, c : Пример Procedure Kv. Ur(); Var a, b, c : real; Begin get. Koef. Kv. Ur(a, b, c); If a<>0 Then kv. Ur(a, b, c) Else lin. Ur(b, c); End;

> Составной оператор  Если после слов then или else следует выполнить несколько операторов, Составной оператор Если после слов then или else следует выполнить несколько операторов, то их следует объединить в один составной оператор, используя операторные скобки begin и end. Begin … End;

>Сокращенный оператор if Сокращенный оператор if

>Вложенные операторы if Вложенные операторы if

>Цепочка операторов if Цепочка операторов if