Содержание
- 2. 4.1 Процедуры и функции Процедуры и функции – самостоятельные фрагменты программы, соответствующим образом оформленные и вызываемые
- 3. Заголовки процедуры и функции Процедура: Пример: Procedure RRR(a:integer;b:real); Функция: Пример: Function F23(a:integer;b:real):boolean;
- 4. Локальные и глобальные переменные * - при отсутствии перекрытия имен. Основная программа Подпрограмма 1 Глобальные данные
- 5. Передача данных в подпрограмму Подпрограмма может получать данные из основной про-граммы и возвращать ре-зультаты. Способы передачи:
- 6. Неявная передача данных в подпрограмму Недостатки неявной передачи данных: 1) жестко связывает подпрограмму и данные; 2)
- 7. Передача данных через параметры Список параметров описывается в заголовке: Параметры, описанные в заголовке – формальные. При
- 8. Стек Способы передачи параметров Основная программа Подпро- грамма Передача по значению Копии данных - аргументов Работа
- 9. Способы передачи параметров (2) Параметры-значения при описании подпрограммы не помечаются, например: function Beta(x:single; n:byte):integer; . Параметры-переменные
- 10. Определение площади четырехугольника Площадь четырехугольника определяем, как сумму площадей двух треугольников. Площадь треугольника со сторонами a,
- 11. Схемы алгоритмов подпрограмм Формальные параметры Фактические параметры - аргументы Фактическое значение параметра-переменной Формальный параметр-переменная в заголовке
- 12. Функция Program Ex4_1; {$APPTYPE CONSOLE} Uses SysUtils; Var A,B,C,D,E:single; Function Stf(const X,Y,Z: single): single; Var p:single;
- 13. Процедура Program Ex4_2; {$APPTYPE CONSOLE} uses SysUtils; Var A,B,C,D,E:real; S1,S2:single; Procedure Stp(const X,Y,Z:single;var S:single); Var p:single;
- 14. Параметры структурных типов Структурные типы параметров (массивы, строки, множества, записи, указатели, файлы) должны быть предварительно объявлены.
- 15. Программа Program Ex4_3; {$APPTYPE CONSOLE} Uses SysUtils; Type mas=array[1..10] of integer; Var a:mas; i,n:integer; Function sum(b:mas;
- 16. 4.2 Модули Модуль – это автономно компилируемая коллекция программных ресурсов, предназначенных для использования другими модулями и
- 17. Подключение модуля к программе Подключение модуля к программе осуществляется по имени: Uses , , ...; Объявление
- 18. Модуль с функцией вычисления суммы Unit Summa; {должен находиться в файле Summa.pas} Interface type mas=array[1..10] of
- 19. Программа вычисления суммы Program Ex4_4; {$APPTYPE CONSOLE} Uses SysUtils, Summa in 'Summa.pas'; Var a:mas; i,n:integer; Begin
- 20. Правило видимости имен ресурсов модуля Ресурсы модуля перекрываются ресурсами программы и ранее указанных модулей. Для доступа
- 21. 4.3 Создание универсальных подпрограмм 4.3.1 Открытые массивы и строки Открытый массив – конструкция описания типа массива
- 22. Функция с открытым массивом Unit Summa2; Interface Function sum(b:array of integer; n:integer):integer; Implementation Function sum; var
- 23. Тестирующая программа Program Ex4_5; {$APPTYPE CONSOLE} Uses SysUtils, Summa2 in 'Summa2.pas'; Var a:array[1..10] of integer; i,n:integer;
- 24. Открытые строки Для строк, передаваемых в подпрограмму как параметр-переменная, Паскаль осуществляет контроль длины строки. Чтобы избежать
- 25. Тестирующая программа program Ex4_6; {$APPTYPE CONSOLE} uses SysUtils, Stroka in 'Stroka.pas'; Var S:string[26];i:integer; Begin s:='A'; for
- 26. 4.3.2 Нетипизированные параметры Нетипизированные параметры – параметры-переменные, тип которых при объявлении не указан. Для приведения нетипизированного
- 27. Суммирование чисел различных типов Unit Summa4; Interface type ttype=(treal,tinteger); function sum(var x;n:integer;t:ttype):real; Implementation function sum; Var
- 28. Тестирующая программа program Ex4_7; {$APPTYPE CONSOLE} uses SysUtils, Summa4 in 'Summa4.pas'; Var a:array[1..10] of integer; b:array[1..15]
- 29. Универсальные подпрограммы с многомерными массивами B[i,j] ⇔ A[(i-1)*q+j] m n p q q m q m
- 30. Транспонирование матрицы В транспонированной матрице B: b[i,j] = a[j,i] Если i=1, то первый номер столбца j=2
- 31. Универсальная подпрограмма Unit Matrica; Interface procedure Tran(Var x;n,q:integer); Implementation procedure Tran; Var a:array[1..3000] of real absolute
- 32. Тестирующая программа Program Ex4_8; {$APPTYPE CONSOLE} Uses SysUtils, Matrica in 'Matrica.pas'; Var a:array[1..10,1..10] of single; i,j:integer;
- 33. 4.3.3 Параметры процедурного типа Параметры процедурного типа используются для передачи в подпрограмму имен процедур и функций.
- 34. Табулирование функций Табулирование – построение таблицы значений: x y 0.01 5.56 0.02 6.34 0.03 7.56 ...
- 35. Подпрограмма табулирования функции Unit SFun; Interface Type func=function(x:Single):Single; Procedure TabFun(f:func;a,b:Single;n:integer; var Masf,MasX:array of Single); Implementation Procedure
- 36. Тестирующая программа Program Ex4_9; {$APPTYPE CONSOLE} Uses SysUtils, SFun in 'SFun.pas'; Var masF1,masX1:array[1..10] of Single; masF2,masX2:array[1..20]
- 37. Тестирующая программа. Раздел операторов Begin TabFun(F1,0,2,10,masF1,masX1); WriteLn(’Table 1’); for i:=1 to 10 do WriteLn(masX1:4:1,masF1[i]:7:1); WriteLn(’Table 2’);
- 38. 4.4 Рекурсия 4.4.1 Основные понятия Рекурсия – организация вычислений, при которой процедура или функция обращаются к
- 39. Вычисление наибольшего общего делителя Базисное утверждение: если два числа равны, то их наибольший общий делитель равен
- 40. Вычисление наибольшего общего делителя (2) Program Ex4_10a; {$APPTYPE CONSOLE} Uses SysUtils; Var a,b,r:integer; Procedure nod(a,b:integer; var
- 41. Вычисление наибольшего общего делителя (3) 18 12 a b r 18 12 6 12 6 6
- 42. Вычисление наибольшего общего делителя (4) Program Ex4_10b; {$APPTYPE CONSOLE} Uses SysUtils; Var a,b,r:integer; Function nod(a,b:integer):integer; begin
- 43. 4.4.2 Фрейм активации. Структура рекурсивной подпрограммы Каждое обращение к рекурсивной подпрограмме вызывает независимую активацию этой подпрограммы.
- 44. Переворот строки 1) последовательное отсечение начального элемента и добавление его в конец результирующей строки: Function reverse1(const
- 45. Переворот строки (2) 2) последовательная перестановка элементов, например ABCDE ⇒ EBCDA ⇒ EDCBA Procedure reverse2(var ss:string;
- 46. Определение корней уравнения на заданном отрезке. Метод деления пополам 0 a b x f(x)>ε x’ f(x’)>ε
- 47. Определение корней уравнения на заданном отрезке (2) Базисное утверждение: Если абсолютная величина функции в середине отрезка
- 48. Определение корней уравнения на заданном отрезке (3) Program Ex4_11; {$APPTYPE CONSOLE} Uses SysUtils; Var a,b,eps,x:real; Procedure
- 49. Структура рекурсивной подпрограммы «Операторы после вызова», выполняются после возврата управления из рекурсивно вызванной подпрограммы. Пример. Распечатать
- 50. Просмотр массива i=1 i=2 i=3 Дан массив, завершающийся нулем и не содержащий нулей в середине, например:
- 51. Просмотр массива. Программа Program Ex4_12; {$APPTYPE CONSOLE} Uses SysUtils; Type mas=array[1..10] of real; Var x:mas; i:integer;
- 52. Просмотр массива. Программа (2) Begin i:=0; repeat i:=i+1; Read(x[i]) until x[i]=0; print(x,1); ReadLn; End.
- 53. 4.4.3 Древовидная рекурсия. Перестановки А,B,C ⇒ ABC, ACB, BAC, BCA, CAB, CBA. Схема формирования перестановок:
- 54. Перестановки (2) Program Ex4_13; {$APPTYPE CONSOLE} Uses SysUtils; Type mas=array[1..3] of char; Var a:mas='ABC'; Var pole:mas;
- 56. Скачать презентацию