№ | Слайд | Текст |
1 |
 |
Функции |
2 |
 |
ФункцииФункция – это вспомогательный алгоритм (подпрограмма), результатом работы которого является некоторое значение. В Паскале помимо процедур можно использовать функции. Их еще называют функции пользователя ( в отличие от стандартных функций, таких как sin, random и др.) Обращение к функции приводит к вычислению ее значения – объекта типа real, integer или char. Примеры: вычисление , , расчет значений по сложным формулам Зачем? для выполнения одинаковых расчетов в различных местах программы для создания общедоступных библиотек функций |
3 |
 |
ФункцииЗадача: составить функцию, которая вычисляет наибольшее из двух значений, и привести пример ее использования Функция: function Max (a, b: integer): integer; begin if a > b then Max := a else Max := b; End; Формальные параметры Это результат функции |
4 |
 |
ФункцииОсобенности: заголовок начинается словом function формальные параметры описываются так же, как и для процедур можно использовать параметры-переменные в конце заголовка через двоеточие указывается тип результата функции располагаются ВЫШЕ основной программы |
5 |
 |
ФункцииОсобенности: можно объявлять и использовать локальные переменные значение, которое является результатом, записывается в переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО: |
6 |
 |
Программаprogram qq; var a, b, max: integer; begin writeln('Введите два числа'); read(a, b); max := Max ( a, b ); writeln('Наибольшее число ', max ); end. c function Max (a, b: integer): integer; begin ... end; c c Фактические параметры Вызов функции |
7 |
 |
ЗадачаНаписать программу для вычисления значения функции f(0.8,a)+f(a,b)-f(2a-1,ab), где a, b действительные числа и |
8 |
 |
ЗадачаProgram F_X_Y; uses CRT; var a,b,z: real; function f (x,y:real):real; begin f:= (sqr(x)+sqr(y))/(sqr(x)+2*x*y+sqr(y)+6); end; begin clrscr; writeln ('Zadayte a,b'); readln(a,b); z:=f(0.8,a)+f(a,b)-f(2*a-1,a*b); writeln(z:8:2); readln; end. |
9 |
 |
Логические функцииЗадача: составить функцию, которая определяет, верно ли, что заданное число – простое. Особенности: ответ – логическое значение (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 составное } for i := 2 to N-1 do if N mod i = 0 then count := count + 1; |
10 |
 |
Логические функцииРезультат – логическое значение function Prime (N: integer): boolean; var count, i: integer; begin i := 2; count := 0; while i*i <= N do begin if N mod i = 0 then count := count + 1; i := i + 1; end; Prime := (count = 0); end; Условие – это логическое значение Вызов функции program qq; var N: integer; begin writeln('Введите целое число'); read(N); if Prime(N) then writeln(N, ' – простое число') else writeln(N, ' – составное число'); end. |
11 |
 |
Сравнение процедур и функцийПроцедуры Функции 1 Может иметь несколько результатов или выполнять некоторое действие Имеет только один результат, тип которого указывается отдельно при объявлении функции. 2 Результатами могут быть значения любого типа массивы, строки, числа и т.д. Результат может быть только значением типа real, integer или char. 3 Команда вызова процедуры – отдельная команда, которая употребляется самостоятельно Обращение к функции может использоваться только как компонент выражения соответствующего типа. 4 В теле функции должен быть хотя бы один оператор присваивания, в левой части которого указано имя функции. |
12 |
 |
Задания«1»: Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования. «2»: Составить программу, которая в двумерном массиве определяет максимальный элемент в каждом столбце и записывает его в одномерный массив. Для определения максимального элемента в столбце использовать функцию, а для ввода и вывода массивов –процедуру. «3»: Составить функцию, которая определяет наибольший общий делитель двух натуральных и привести пример ее использования. Пример: Введите два числа: 14 21 НОД(14,21)=7 «4»: Написать программу, которая определяет, является ли билет «Счастливым», т.е. сумма правых трех цифр числа должна быть равна сумме левых трех цифр. (использовать функцию, считающую сумму 3 цифр в числе). |
13 |
 |
ЗаписиЗапись Паскаля – структурированный комбинированный тип данных, состоящий из фиксированного числа компонент (полей) разного типа. Описание: type < имя _ типа >= record <имя_поля1>: тип; <имя_поля2>: тип; …………………. <имя_поля K >: тип end ; Записи являются очень удобным инструментом для создания баз данных. |
14 |
 |
Описание анкеты студента в Паскале будет выглядеть так: Type anketa=record fio: string[45]; pol: char; dat_r: string[8]; adres: string[50]; curs: 1..5; grupp: string[3]; end; Например, анкетные данные о студенте вуза могут быть представлены в виде информационной структуры . Такая запись Паскаля, так же как и соответствующее ей дерево, называется двухуровневой. Имя типа Имя поля Имя поля |
15 |
![program primer1; type anketa=record fio: string[45]; dat_r: string[8];](/up/thumbs/104272/015.jpg) |
program primer1; type anketa=record fio: string[45]; dat_r: string[8];adres: string[50]; curs: 1..5; grupp: string[3] end; var student: anketa; Задача. Пусть нам необходимо заполнить сведения о студенте (Ф.И.О., дата рождения, адрес, курс и группа), а затем вывести эти сведения на экран. Begin writeln (‘введите сведения о студенте’); writeln (‘введите фамилию, имя и отчество’); readln (student.Fio); writeln (‘введите дату рождения’); readln (student.Dat_r); writeln (‘введите адрес’); readln (student.Adres); writeln (‘введите курс’); readln (student.Curs); writeln (‘введите группу’); readln (student.Grupp); writeln (‘ввод закончен’); writeln ; writeln (‘фамилия студента: ’, student . fio ); writeln(‘ дата рождения : ’, student.Dat_r); writeln(‘ адрес : ’, student.Adres); writeln(‘ курс : ’, student.Curs); writeln(‘ группа : ’, student.Grupp); end. Ввод каждого поля осуществляется отдельно Вывод записи осуществляется по полям |
16 |
 |
Пусть нам необходимо иметь сведения о многих студентахА затем из общего списка вывести фамилии студентов 2-го курса. Следовательно, необходимо организовать массив записей Паскаля. program primer 2 ; type anketa=record {Описание } var student: array [1..10] of anketa; I: integer; Begin for I:=1 to 10 do begin with student[i] do begin writeln (‘введите сведения о’, I , ‘-м студенте’); writeln (‘введите фамилию, имя и отчество’); readln (fio); writeln (‘введите дату рождения’); readln (dat_r); writeln (‘введите адрес’); readln(adres); writeln (‘введите курс’); readln(curs); writeln (‘введите группу’); readln (grupp); end; writeln (‘ввод закончен’); writeln ; for I:=1 to 10 do if student[i].Curs=2 then writeln(‘ фамилия студента : ’, student[i].Fio); end. Оператор позволяет не упоминать имя записи, а записывать только имена компонентов записи. |
17 |
 |
ЗадачаНа вход программе подаются сведения о сдаче экзаменов учениками 9-ых классов в некоторой школе. В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит 100, каждая из N строк имеет следующий формат: ФАМИЛИЯ ИМЯ ОЦЕНКИ (через пробел), где ФАМИЛИЯ - строка < 20 символов, ИМЯ – строка < 15 символов, ОЦЕНКИ – через пробел три цифры. Требуется написать программу, которая будет на экран фамилии и имена трёх лучших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трёх лучших, то следует вывести их фамилии и имена. |
«Функции» |