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

Презентация:



Advertisements
Похожие презентации
1 Программирование на языке Паскаль Функции Кулебякин В.В.
Advertisements

1 Программирование на языке Паскаль Процедуры. 2 Задача: Построить фигуру: Особенность: Три похожие фигуры. общее: размеры, угол поворота отличия: координаты,
1 Программирование на языке Паскаль Тема 13. Функции © К.Ю. Поляков,
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
Подпрограммы. Функции и процедуры. Кулебякин В.В.
© М.Е.Макарова
Программирование на языке Паскаль Тема 13. Процедуры Тема 14. Функции.
1 Программирование на языке Паскаль Процедуры. 2 Процедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий. Применение:
Процедуры в Turbo Pascal Шутилина Л.А.
Шутилина Л.А. Процедуры в Turbo Pascal ( часть 1: процедуры с параметрами)
Научиться использовать структурный подход в программировании – разбиение сложной задачи на более простые. Узнать, как для этого можно использовать подпрограммы-процедуры.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 5.
Подпрограмма – это самостоятельная часть программы, реализующая определенный алгоритм.
Подпрограммы в Паскале.
Процедуры и функции Вербицкая Ольга Владимировна, Заозерная школа 16.
Подпрограммы Лекция 7. Ломаско Павел Сергеевич16 декабря 2013 г.
1 Программирование на языке Паскаль Циклы. 2 Цикл – это многократное выполнение одинаковой последовательности действий. цикл с известным числом шагов.
Что такое структурный подход в программировании? Как он реализуется в ЯП Паскаль? Что такое процедура? Кто дает название процедуре? Где записывается процедура?
Программирование Задания В2, В5. Оператор присваивания в языке программирования Задание В2 – базовый уровень, время – 2 мин.
Транксрипт:

1 Программирование на языке Паскаль Процедуры

2 Подпрограммы Задача: Построить фигуру: Особенность: Три похожие фигуры. общее: размеры, угол поворота отличия: координаты, цвет Можно ли решить известными методами? ? Сколько координат надо задать? ?

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

В программах часто приходится повторять некоторые аналогичные действия многократно. Используя подпрограммы, можно единожды описать действия в подпрограмме, а затем лишь только вызывать ее. Такой принцип дефрагментации программы называется нисходящим программированием и соответствует принципам структурного программирования, в основу которого и положено понятие подпрограммы.

5 Процедуры Процедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий. Применение: выполнение одинаковых действий в разных местах программы разбивка программы (или другой процедуры) на подзадачи для лучшего восприятия Подзадача1Подзадача2Подзадача Задача

6 Процедуры Порядок разработки: выделить одинаковые или похожие действия (три фигуры) найти в них общее (размеры, форма, угол поворота) и отличия (координаты, цвет) отличия записать в виде неизвестных переменных, они будут параметрами процедуры (x, y) (x+100, y) (x, y-60) procedure Tr( x, y, r, g, b: integer); begin MoveTo(x, y); LineTo(x, y-60); LineTo(x+100, y); LineTo(x, y); Brush(1, r, g, b); Fill(x+20, y-20); end; заголовок MoveTo(x, y); LineTo(x, y-60); LineTo(x+100, y); LineTo(x, y); Brush(1, r, g, b); Fill(x+20, y-20); MoveTo(x, y); LineTo(x, y-60); LineTo(x+100, y); LineTo(x, y); Brush(1, r, g, b); Fill(x+20, y-20); тело процедуры координаты цвет параметры

7 Программа program qq; begin Pen(1, 255, 0, 255); Tr(100, 100, 0, 0, 255); Tr(200, 100, 0, 255, 0); Tr(200, 160, 255, 0, 0); end. program qq; begin Pen(1, 255, 0, 255); Tr(100, 100, 0, 0, 255); Tr(200, 100, 0, 255, 0); Tr(200, 160, 255, 0, 0); end. (100,100) фактические параметры вызовы процедуры procedure Tr( x, y, r, g, b: integer); begin... end; формальные параметры процедура

8 Процедуры Особенности: все процедуры расположены выше основной программы в заголовке процедуры перечисляются формальные параметры, они обозначаются именами, поскольку могут меняться при вызове процедуры в скобках указывают фактические параметры (числа или арифметические выражения) в том же порядке procedure Tr( x, y, r, g, b: integer); Tr (200, 100, 0, 255, 0); x x y y r r g g b b

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

10 Процедуры Особенности: для каждого формального параметра после двоеточия указывают его тип если однотипные параметры стоят рядом, их перечисляют через запятую внутри процедуры параметры используются так же, как и переменные procedure A (x: real; y: integer; z: real); procedure A (x, z: real; y, k, l: integer);

11 Процедуры Особенности: в процедуре можно объявлять дополнительные локальные переменные, остальные процедуры не имеют к ним доступа program qq; procedure A(x, y: integer); var a, b: real; begin a := (x + y)/6;... end; begin... end. procedure A(x, y: integer); var a, b: real; begin a := (x + y)/6;... end; локальные переменные var a, b: real;

Procedure (Список параметров); Procedure Ploshad3 (a, b, c: real; var s:real); В основной программе процедура вызывается аналогично: Ploshad3 (AB, BC, AC, S); Параметры-значения Параметры-переменные Параметры-значения используются для задания начальных значений в процедуре, Параметры-переменные для вывода результата. Параметры-значения и параметры-переменные

13 Параметры-переменные Задача: составить процедуру, которая меняет местами значения двух переменных. Особенности: надо, чтобы изменения, сделанные в процедуре, стали известны вызывающей программе program qq; var x, y: integer; begin x := 1; y := 2; Exchange ( x, y ); writeln ( x =, x, y =, y ); end. program qq; var x, y: integer; begin x := 1; y := 2; Exchange ( x, y ); writeln ( x =, x, y =, y ); end. procedure Exchange ( a, b: integer ); var c: integer; begin c := a; a := b; b := c; end; эта процедура работает с копиями параметров x = 1 y = 2

14 Параметры-переменные Применение: таким образом процедура (и функция) может возвращать несколько значений, Запрещенные варианты вызова Exchange ( 2, 3 ); { числа } Exchange ( x+z, y+2 ); { выражения } procedure Exchange ( a, b: integer ); var c: integer; begin c := a; a := b; b := c; end; procedure Exchange ( a, b: integer ); var c: integer; begin c := a; a := b; b := c; end; var параметры могут изменяться

program Prog3; uses CRT; var AB, BC, CD, DA, AC, S1, S2: real; Procedure Ploshad3(var a, b, c, s :real); var p:real; begin p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); end; begin Clrscr; Writeln('Задайте стороны 4-угольника ABCD и его диагональ AC'); readln (AB, BC, CD, DA, AC); Ploshad3(AB, BC, AC, S1); Ploshad3(DA, AC, CD, S2); Writeln ('Площадь ABCD= ', S1+S2:8:2); readln; end. Формальные параметры Фактические параметры

Параметрами команды вызова процедуры и параметрами описания процедуры должны быть согласованы по: Procedure Ploshad3(a, b, c :real; var s:real); Ploshad3(AB, BC, AC, S1); Правила согласования параметров количеству типу порядку следования

17 Программирование на языке Паскаль Функции

18 Функции Функция – это вспомогательный алгоритм (подпрограмма), результатом работы которого является некоторое значение. Примеры: вычисление,, расчет значений по сложным формулам ответ на вопрос (простое число или нет?) Зачем? для выполнения одинаковых расчетов в различных местах программы для создания общедоступных библиотек функций В чем отличие от процедур? ?

19 Функции Задача: составить функцию, которая вычисляет наибольшее из двух значений, и привести пример ее использования Функция: формальные параметры function Max (a, b: integer): integer; begin if a > b then Max := a else Max := b; end; это результат функции

20 Функции Особенности: заголовок начинается словом function формальные параметры описываются так же, как и для процедур можно использовать параметры-переменные в конце заголовка через двоеточие указывается тип результата функции располагаются ВЫШЕ основной программы Max (a, b: integer): integer; function function Max (a, b: integer): ; integer function qq( a, b: integer; x: real ): real; a, b: integer; x: real function Max ( a, b: integer): integer; var

21 Функции Особенности: можно объявлять и использовать локальные переменные значение, которое является результатом, записывается в переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО: function Max (a, b: integer): integer; begin... end; function Max (a, b: integer): integer; begin... end; Max := a; function qq (a, b: integer): float; begin... end; function qq (a, b: integer): float; begin... end; var x, y: real; В Delphi: ! Result := a;

22 Программа program qq; var a, b, max: integer; begin writeln('Введите два числа'); read(a, b); max := Max ( a, b ); writeln('Наибольшее число ', max ); end. program qq; var a, b, max: integer; begin writeln('Введите два числа'); read(a, b); max := Max ( a, b ); writeln('Наибольшее число ', max ); end. function Max (a, b: integer): integer; begin... end; c c c Имена переменных, функций и процедур не должны совпадать! ! фактические параметры вызов функции

23 Задания «4»: Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования. Пример: Введите число: 100 сумма = 5050 «5»: Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна, на 3-ю – 4 зерна, …) Пример: Введите номер клетки: 28 На 28-ой клетке зерен.

24 Задания (вариант 2) «4»: Составить функцию, которая определяет наибольший общий делитель двух натуральных и привести пример ее использования. Пример: Введите два числа: НОД(14,21)=7 «5»: Составить функцию, которая вычисляет функцию синус как сумму ряда (с точностью 0.001) Пример: Введите угол в градусах: 45 sin(45) = x в радианах!

25 Логические функции Задача: составить функцию, которая определяет, верно ли, что заданное число – простое. Особенности: ответ – логическое значение ( True или False ) результат функции можно использовать как логическую величину в условиях ( if, while ) Алгоритм: считаем число делителей в интервале от 2 до N-1, если оно не равно нулю – число составное. count := 0; for i := 2 to N-1 do if N mod i = 0 then count := count + 1; if count = 0 then { число N простое} else { число N составное } count := 0; for i := 2 to N-1 do if N mod i = 0 then count := count + 1; if count = 0 then { число N простое} else { число N составное } for i := 2 to N-1 do if N mod i = 0 then count := count + 1; Как улучшить? ?

26 Логические функции program qq; var N: integer; begin writeln('Введите целое число'); read(N); if Prime(N) then writeln(N, ' – простое число') else writeln(N, ' – составное число'); end. program qq; var N: integer; begin writeln('Введите целое число'); read(N); if Prime(N) then writeln(N, ' – простое число') else writeln(N, ' – составное число'); end. function Prime (N: integer): boolean; var count, i: integer; begin i := 2; count := 0; while i*i

27 Задания «4»: Составить функцию, которая определяет, верно ли, что сумма его цифр – четное число. Пример: Введите число: 136 Сумма цифр четная. «5»: Составить функцию, которая определяет, верно ли, что в заданном числе все цифры стоят по возрастанию. Пример: Введите число: 258 Верно. Введите число: 528 Неверно. Введите число: 245 Сумма цифр нечетная.