Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Функции. Если результатом подпрограммы является только одно значение, то имеет смысл оформить такую подпрограмму в виде функции.






Если результатом подпрограммы является только одно значение, то имеет смысл оформить такую подпрограмму в виде функции.

Первая строка любой функции:

function < имя > (< список формальных параметров>): < тип>;

где < список формальных параметров> - список имен переменных с указанием их типа, передающих информацию в функцию;

< имя> - возвращает результат в основную программу;

< тип> - тип возвращаемого результата.

Обращение из основной программы к функции возможно в структуре какого-либо оператора, например оператора присваивания:

< переменная>: = < имя> (список фактических параметров);

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

 

2.6.5. Примеры типовых задач на тему «Подпрограммы»

1. Задан одномерный массив вещественных чисел. Найти максимальный элемент массива и определить его номер.

Составим программу с использованием двух процедур:

· процедура ввода элементов массива;

· процедура поиска максимального элемента и определение его номера.

Для передачи массива в процедуру введем пользовательский тип mas.

Программа Пояснения
program PP; type mas=array[1..100] of integer; var a: mas; max: real; n, max, kmax: integer; procedure input_mas(n: integer; var a: mas); var i: integer; begin for i: =1 to n do readln(a[ i ]); end; procedure max_m(n: integer; a: mas; var max, kmax: integer); var i: integer; begin max: =a[1]; kmax: =1; for i: =1 to n do if a[i]> max then begin max: =a[i]; kmax: =i; end; end; begin writeln(‘ Введите n< =100’); readln(n); writeln (‘ Введите элементы массива ‘); input_mas(n, a); max_m(n, a, max, kmax); writeln(‘max=’, max, ‘kmax=’, kmax); readln; end. Имя программы – РР {Описательная часть программы} Пользовательский тип данных   Глобальные переменные   Текст первой процедуры   {Описательная часть процедуры} {Исполнительная часть процедуры} Ввод элементов массива   Текст второй процедуры   {Описательная часть процедуры} {Исполнительная часть процедуры} Поиск максимального элемента     {Исполнительная часть программы} Вывод сообщения на экран Ввод размера массива Вывод сообщения на экран   Обращение к первой процедуре Обращение ко второй процедуре Вывод результатов на экран  

 

2. Составить программу вычисления n! с использованием функции, в которую вынесем подсчет факториала.

n! = 1* 2 * 3 * …* n

Введем обозначения:

n, k – размер и индекс массива, глобальные переменные.

p, i – значение факториала и индекс массива в функции, локальные переменные.

fun - имя функции, возвращает результат в основную программу.

 

Программа Пояснения
program factorial; var n, k: integer; function fun(k: integer): integer; var p, i: integer; begin p: =1; for i: =1 to k do p: =p*i; fun: =p; end; begin writeln('введите n'); readln(n); for k: = 1 to n do writeln(fun(k)); readln; end. Имя программы – factorial {Описательная часть программы} Глобальные переменные Текст функции {Описательная часть функции} {Исполнительная часть функции}   {Описательная часть процедуры} {Исполнительная часть процедуры}     {Исполнительная часть программы} Вывод сообщения на экран Ввод размера массива   Обращение к функции  

 

Имя функции в теле функции в операторах присваивания может стоять только слева от знака присваивания «: =», поэтому использована дополнительная переменная p для подсчета произведения.

 

3. Задан двумерный массив целых чисел. Определить количество четных чисел в массиве.

Составим программу с использованием двух процедур и функции:

· процедура ввода элементов массива input_mas;

· процедура вывода двумерного массива в виде матрицы print_mas;

· функция подсчета количества четных чисел kol_mas.

 

 

Программа Пояснения
program pp_1; type mas=array[1..10, 1..10] of integer; var a: mas; n, m, i, j: integer; procedure input_mas(n, m: integer; var a: mas); begin for i: =1 to n do for j: =1 to n do readln(a[i, j]); end; function kol_mas(n, m: integer; a: mas): integer; var k: integer; begin kol: =0; for i: =1 to n do for j: =1 to n do if not odd(a[ i, j ]) then k: =k+1; kol: =k; end; procedure print_mas(n, m: integer; a: mas); begin for i: =1 to n do begin for j: =1 to n do write(a[i, j], ‘ ‘); writeln; end; end; begin writeln(‘Введите n< =10, m< =10’); readln (n, m); writeln(‘Введите элементы массива по строкам’); input_mas(n, m, a); writeln(‘Исходная матрица’); print_mas(n, m, a); writeln(‘Количество нечетных чисел =’, kol_mas(n, m, a)); readln; end. Имя программы – pp_1 {Описательная часть программы} Глобальные переменные     Процедура ввода матрицы   {Исполнительная часть процедуры}   Функция подсчета количества четных чисел {Описательная часть функции}   {Исполнительная часть функции}     Процедура вывода матрицы   {Исполнительная часть процедуры}     {Исполнительная часть программы} Вывод сообщения на экран Ввод размера массива Вывод сообщения на экран   Обращение к процедуре ввода массива   Обращение к процедуре вывода мас-ва Обращение к функции подсчета количества четных чисел в массиве  

 

Выражение not odd(a[ i, j ]) – «истинно», если элемент массива четное число.

 

Вопросы для самоконтроля

1. В каких случаях прибегают к построению подпрограмм?

2. В каком месте программы располагаются функции или процедуры?

3. Что такое процедура?

4. Какова структура процедуры?

5. Как передается информация в процедуру?

6. Каким образом возвращаются результаты работы процедуры в основную программу?

7. Какое соответствие должно быть между формальными и фактическими параметрами?

8. Какие переменные называются глобальными? Время существования глобальных переменных?

9. Какие переменные называются локальными? Время существования локальных переменных?

10. Когда используют директиву forward?

11. В каких случаях целесообразно прибегать к построению функций?

12. Как передается информация в функцию?

13. Каким образом возвращается результат работы функции в основную программу?






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.