Процедуры и функции 11. Понятие подпрограммы; 2. Стандартные

Описание презентации Процедуры и функции 11. Понятие подпрограммы; 2. Стандартные по слайдам

Процедуры и функции 11. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функцииПроцедуры и функции 11. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функции и процедуры; 4. Область видимости; 5. Параметр-значение, параметр-переменная; 6. Реентерабельность; 7. Рекурсия. 8. Пример

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

31. Понятие подпрограммы  Процедуры и функции Так выглядит структура всей программы в Pascal:31. Понятие подпрограммы Процедуры и функции Так выглядит структура всей программы в Pascal: Program ; { Заголовок программы } Uses ; { Раздел описания модулей } Label ; { Раздел описания меток } Const ; { Раздел описания констант } Type { Раздел описания типов } = ; = ; … Var : ; { Раздел описания переменных } Procedure ; {Раздел описания процедур} Function ; {Раздел описания функций} Begin { Тело программы } End.

Процедуры и функции 41. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функцииПроцедуры и функции 41. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функции и процедуры; 4. Область видимости; 5. Параметр-значение, параметр-переменная; 6. Реентерабельность. 7. Рекурсия 8. Пример

5 2. Стандартные функции и процедуры  Процедуры и функции Стандартные функции и процедуры5 2. Стандартные функции и процедуры Процедуры и функции Стандартные функции и процедуры PASCAL: ₋ процедуры управления программой; ₋ функции преобразования; ₋ арифметические функции; ₋ порядковые процедуры и функции; ₋ строковые процедуры и функции; ₋ процедуры и функции динамического распределения памяти; ₋ прочие процедуры и функции.

62. Стандартные функции и процедуры Процедуры и функции Процедуры управления программой: Procedure Break; Процедура62. Стандартные функции и процедуры Процедуры и функции Процедуры управления программой: Procedure Break; Процедура осуществляет досрочный выход из циклов For, While или Repeat. Процедура должна находиться внутри этих циклов, иначе транслятор сообщит об ошибке. Procedure Contnue; Процедура досрочно начинает следующую итерацию циклов For, While или Repeat. Процедура должна находиться внутри этих циклов, иначе транслятор сообщит об ошибке. Procedure Exit; Осуществляет немедленный выход из текущей подпрограммы. Если текущей подпрограммой является главная программа, она завершает работу. Procedure Halt[(Exitcode: Integer)]; Процедура выполняет аварийное завершение программы. Чтобы нормально завершить.

72. Стандартные функции и процедуры Функции преобразования : functon Chr(a: byte): char;  Преобразует72. Стандартные функции и процедуры Функции преобразования : functon Chr(a: byte): char; Преобразует код в символ в кодировке Windows functon Ord(a: char): byte; Преобразует символ в кодировке Windows functon Ord(a: integer): integer; Возвращает порядковый номер значения a functon Trunc(x: real): integer; Возвращает целую часть числа x functon Round(x: real): integer; Возвращает x, округленное до ближайшего целого

Процедуры и функции 81. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функцииПроцедуры и функции 81. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функции и процедуры; 4. Область видимости; 5. Параметр-значение, параметр-переменная; 6. Реентерабельность; 7. Рекурсия. 8. Пример

93. Пользовательские функции и процедуры  Процедуры и функции Процедурой называется особым образом оформленный93. Пользовательские функции и процедуры Процедуры и функции Процедурой называется особым образом оформленный фрагмент программы, имеющий собственное имя. Упоминание этого имени в тексте программы приводит к активизации процедуры и называется её вызовом. Основная (вызывающая) программа Вызов процедуры Продолжение основной программы Процедура

103. Пользовательские функции и процедуры  Процедуры и функции Функция отличается от процедуры тем,103. Пользовательские функции и процедуры Процедуры и функции Функция отличается от процедуры тем, что результат её работы возвращается в виде значения этой функции, поэтому вызов функции может использоваться наряду с другими операндами в выражениях. Заголовок процедуры имеет вид: PROCEDURE [()]; заголовок функции: FUNCTION [()]: ; Здесь – имя подпрограммы; – список формальных параметров; – тип возвращаемого функцией результата. . procedure SB (a: real; b: integer; c: char); function F (a: real; b: real): real; function F (a, b: real): real;

113. Пользовательские функции и процедуры  Процедуры и функции При описании подпрограммы указывается её113. Пользовательские функции и процедуры Процедуры и функции При описании подпрограммы указывается её заголовок и тело. Тело подпрограммы , подобно программе , состоит из раздела описаний и раздела исполняемых операторов. В разделе описаний подпрограммы могут встретиться описания подпрограмм низшего уровня, т. е. вложенных подпрограмм. Программа Подпрограмма А 1 Подпрограмма А 21 Подпрограмма А 22 Подпрограмма

123. Пользовательские функции и процедуры  Процедуры и функции Пример. Разработать функцию возведение числа123. Пользовательские функции и процедуры Процедуры и функции Пример. Разработать функцию возведение числа в степень. var x, y: real; function power( a, b: real): real; begin if a>0 then power : = exp(b*ln(a)) else power : = 0; end; {function power} begin repeat readln(x, y); writeln( power(x, y) ); until false; end. axx ea ln

133. Пользовательские функции и процедуры  Процедуры и функции Пример. Разработать процедуру, которая выводит133. Пользовательские функции и процедуры Процедуры и функции Пример. Разработать процедуру, которая выводит на экран прямоугольник из заданных символов определенного размера. procedure box (s: char; w, h: integer); var i, j: integer; begin for i : = 1 to h do begin for j : = 1 to w do write (s); writeln end; writeln end; begin box (‘+’, 10, 5); box (‘r’, 20, 3); box (‘|’, 50, 10); box (‘$’, 12, 4); end.

Процедуры и функции 141. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функцииПроцедуры и функции 141. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функции и процедуры; 4. Область видимости; 5. Параметр-значение, параметр-переменная; 6. Реентерабельность; 7. Рекурсия. 8. Пример

154. Область видимости  Процедуры и функции Подпрограмме доступны только те объекты верхнего уровня,154. Область видимости Процедуры и функции Подпрограмме доступны только те объекты верхнего уровня, которые описаны до описания данной подпрограммы. Эти объекты называются глобальными по отношению к подпрограмме. Имена, локализованные в подпрограмме, могут совпадать с ранее объявленными глобальными именами. В этом случае считается, что локальное имя «закрывает» глобальное и делает его недоступным. Одноименные глобальные и локальные переменные – это разные переменные

164. Область видимости Процедуры и функции var k: integer; procedure a;  var x,164. Область видимости Процедуры и функции var k: integer; procedure a; var x, z: real; begin { через x, z обозначены две величины – локальные переменные для a; k – глобальная переменная для a } end; procedure b; var x, y: integer; begin { через x, y обозначены две другие величины – локальные переменные для b; k – глобальная переменная для b } end; begin { k – единственная переменная, которую можно использовать в основной ветке программы } ………………… end.

174. Область видимости  Процедуры и функции var i: integer;  a: real; 174. Область видимости Процедуры и функции var i: integer; a: real; function p(d: real): real; var i: integer; begin i : = 3; p : = i + 10 * d; end; begin a : = 2. 0; i : = 15; p(a); writeln(‘ i = ‘, i, ‘ a = ‘, a); readln end. Две совершенно разные переменные: первая i – глобальная для всей программы, вторая i – локальная для функции p Результат: i = 15 a =

Процедуры и функции 181. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функцииПроцедуры и функции 181. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функции и процедуры; 4. Область видимости; 5. Параметр-значение, параметр-переменная; 6. Реентерабельность; 7. Рекурсия. 8. Пример

195. Параметр-значение, параметр-переменная  Процедуры и функции Любой из формальных параметров подпрограммы может быть195. Параметр-значение, параметр-переменная Процедуры и функции Любой из формальных параметров подпрограммы может быть либо параметром-значением , либо параметром-переменной. В предыдущем примере параметры a и b определены как параметры-значения. Чтобы определить параметры как параметры-переменные, перед ними необходимо поставить зарезервированное слово var, например functon power( var a: real, b: real): real; При вызове подпрограммы, в качестве параметра-переменной должна указываться переменная соответствующего типа, в качестве параметра-значения может быть указано любое выражение соответствующего типа. power(x, 3*sin(x)); или power(x, 3. 17);

205. Параметр-значение, параметр-переменная  Процедуры и функции var  a, b: integer;  procedure205. Параметр-значение, параметр-переменная Процедуры и функции var a, b: integer; procedure inc 2( var c: integer; b: integer ); begin c : = c + c; b : = b+b; writeln(‘удвоенные : ’, c: 5, b: 5); end; begin a : = 5; b : = 7; writeln(‘исходные : ’, a: 5, b: 5); inc 2(a, b); writeln(‘результат : ’, a: 5, b: 5); end. Результат выполнения программы: исходные : 5 7 удвоенные : 10 14 результат :

Процедуры и функции 211. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функцииПроцедуры и функции 211. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функции и процедуры; 4. Область видимости; 5. Параметр-значение, параметр-переменная; 6. Реентерабельность; 7. Рекурсия. 8. Пример

22 6. Реентерабельность Процедуры и функции Реентерабельная , или повторно входимая функция  -22 6. Реентерабельность Процедуры и функции Реентерабельная , или повторно входимая функция — это функция, которая может быть использована более чем одной задачей без риска потери данных. Реентерабельная функция может быть в любое время прервана и продолжена позже без потерь данных. Реентерабельные функции либо используют локальные переменные, либо защищают свои данные, размещённые в глобальных переменных. Функция fn не является реентерабельной: var temp : integer; function fn (x, y : integer): integer; begin temp : = x; x : = y; y : = temp; fn : = x + y; end;

Процедуры и функции 231. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функцииПроцедуры и функции 231. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функции и процедуры; 4. Область видимости; 5. Параметр-значение, параметр-переменная; 6. Реентерабельность; 7. Рекурсия. 8. Пример

247. Рекурсия  Процедуры и функции Рек рсияуу — в определении, описании, изображении какого-либо247. Рекурсия Процедуры и функции Рек рсияуу — в определении, описании, изображении какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя

257. Рекурсия  Процедуры и функции Рекурсия – это такой способ организации вычислительного процесса,257. Рекурсия Процедуры и функции Рекурсия – это такой способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих её операторов обращается сама к себе Пример. Рекурсия. Вычисление факториала var n: integer; function fact(n: integer): integer; begin if n=0 then fact : = 1 else fact : = n * fact(n-1); end; begin readln(n); writeln(‘n!=’, fact(n)); end.

26 7. Рекурсия  Процедуры и функции const Eps = 0. 01;  //26 7. Рекурсия Процедуры и функции const Eps = 0. 01; // точность вычисления корня var a, b: real; // границы отрезка function y(x: real): real; // задание функции, корни которой отделяются begin y : = x + 5; end; Пример: Реализовать метод половинного деления на основе рекурсии

27 7. Рекурсия  Процедуры и функции // продолжение function Find. Root(a, b: real):27 7. Рекурсия Процедуры и функции // продолжение function Find. Root(a, b: real): real; var m: real; Result: real; begin m : = (a+b) / 2; if abs(m-a)>Eps then if y(a)*y(m)>0 then Result: = Find. Root(m, b) else Result: = Find. Root(a, m) else Result : = m; Find. Root : = Result; end; {function Find. Root} begin writeln(‘Введите левую и правую границы области поиска, a и b’); readln(a, b); if y(a)*y(b)>0 then writeln(‘Нет корней или более одного корня’) else writeln(Корень уравнения: ‘, Find. Root(a, b)); end.

28 7. Рекурсия  Процедуры и функции Рекурсия – красивая реализация, но лучшей ей28 7. Рекурсия Процедуры и функции Рекурсия – красивая реализация, но лучшей ей не пользоваться

Процедуры и функции 291. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функцииПроцедуры и функции 291. Понятие подпрограммы; 2. Стандартные функции и процедуры; 3. Пользовательские функции и процедуры; 4. Область видимости; 5. Параметр-значение, параметр-переменная; 6. Реентерабельность; 7. Рекурсия. 8. Пример

308. Пример  Процедуры и функции Разработать продпрогрммы  - вставка элемента в динамический308. Пример Процедуры и функции Разработать продпрогрммы — вставка элемента в динамический массив — удаление элемента из массива — вывода на экран элементов массива. Порядок: 1) Вывод на экран содержимого массива 2) Чтение действия: вставка элемента, удаление элемента или выход 3) Если не выход, то выполнение действия и возврат к п 1.

318. Пример  Процедуры и функции  318. Пример Процедуры и функции

328. Пример  Процедуры и функции Добавьте проверку на адекватность операция вставки и удаления328. Пример Процедуры и функции Добавьте проверку на адекватность операция вставки и удаления

338. Пример  Процедуры и функции var stop :  boolean ; ch, val,338. Пример Процедуры и функции var stop : boolean ; ch, val, pos : integer ; m : array of integer ; //—————————- procedure print (m : array of integer ); var i, N : integer ; begin N : = Length(m); if N= 0 then writeln( ‘Массив пуст’ ) else for i : = 0 to N- 1 do write( ‘m[‘ , i, ‘]=’ , m[i], ‘; ‘ ); writeln; end ; //print

348. Пример  Процедуры и функции procedure delete ( var m :  array348. Пример Процедуры и функции procedure delete ( var m : array of integer ; pos : integer ); var i, N : integer ; begin N : = length(m); for i : = pos to N- 2 do m[i] : = m[i+ 1 ]; Set. Length(m, N- 1 ); end ; //delete //—————————- procedure insert ( var m : array of integer ; pos, val : integer ); var i, N : integer ; begin N : = length(m); Set. Length(m, N+ 1 ); N : = N + 1 ; for i : = N- 1 downto pos+ 1 do m[i] : = m[i- 1 ]; m[pos] : = val; end ; //insert //—————————-

358. Пример  Процедуры и функции begin repeat  print(m); writeln( 'Выберите действие(1 -358. Пример Процедуры и функции begin repeat print(m); writeln( ‘Выберите действие(1 — вставка, 2 — удаление, 3 — выход)’ ); read(ch); case ch of 1 : begin writeln( ‘Введите номер элемента для вставки и значение’ ); readln(pos, val); insert(m, pos, val); end ; 2 : begin writeln( ‘Введите номер элемента для удаления’ ); readln(pos); delete(m, pos); end ; 3 : stop : = true ; end ; until stop; end.

368. Пример  Процедуры и функции Всегда программа будет работать верно? Массив пуст Выберите368. Пример Процедуры и функции Всегда программа будет работать верно? Массив пуст Выберите действие(1 — вставка, 2 — удаление, 3 — выход) 1 Введите номер элемента для вставки и значение 0 1 m[0]=1; Выберите действие(1 — вставка, 2 — удаление, 3 — выход) 1 Введите номер элемента для вставки и значение 0 2 m[0]=2; m[1]=1; Выберите действие(1 — вставка, 2 — удаление, 3 — выход) 1 Введите номер элемента для вставки и значение 0 3 m[0]=3; m[1]=2; m[2]=1; Выберите действие(1 — вставка, 2 — удаление, 3 — выход) 1 Введите номер элемента для вставки и значение 1 4 m[0]=3; m[1]=4; m[2]=2; m[3]=1; Выберите действие(1 — вставка, 2 — удаление, 3 — выход)