ПРАКТИЧЕСКОЕ ЗАНЯТИЕ РАЗРАБОТКА ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ
ПРОЦЕДУР И ФУНКЦИЙ
Научится применять процедуры и функции при решении задач, исполь- зующих часто повторяющиеся операторы; уметь правильно описывать проце- дуры и функции и обращаться к ним.
Любая подпрограмма начинается с заголовка, который является обязатель- ным. Для процедуры он состоит из служебного слова Procedure с последую- щим именем процедуры и, если необходимо, списком формальных параметров в круглых скобках.
Для вызова процедуры из основной программы или другой подпрограммы необходимо записать оператор, состоящий из имени процедуры и списка фак- тических параметров, которые должны совпадать по количеству и типам с формальными параметрами процедуры, например:
Пример 1. Использование глобальных переменных
Uses crt;
var a,b,c:integer;
procedure summa;
begin c:=a+b; end;
write('a='); readln(a);
write('b='); readln(b); summa; writeln('cyммa=',c);
Пример 2. Использование формальных параметров
Uses crt;
var a,b,c:integer;
procedure summa(x,y:integer; var z:integer);
z:=x+y; end; BEGIN
write('a='); readln(a);
write('b='); readln(b); summa(a,b,c); writeln('cyммa=',c);
Для объявления функции используется служебное слово Function с после- дующим именем функции и, если необходимо, списком формальных парамет- ров в круглых скобках, затем через двоеточие записывается тип функции - тип возвращаемого параметра. Функция может возвращать параметры целого, ве- щественного, символьного, логического, строкового типа.
За заголовком подпрограммы могут идти такие же разделы, что и в основ- ной программе, заканчивается подпрограмма точкой с запятой. Необходимо отметить, что в теле функции хотя бы один раз имени функции должно быть присвоено значение. Результатом выполнения функции будет последнее при-
сваиваемое значение. Если такого оператора присваивания нет или он не вы- полняется, то возвращаемое функцией значение будет неопределенным.
Для вызова функции из основной программы или другой подпрограммы следует в выражении, где необходимо использовать значение функции, указать имя функции со списком фактических параметров, которые должны совпадать по количеству и типам с формальными параметрами функции, например:
Пример 3. Функция вычисления факториала числа
var x:byte;
function factor(n:byte):LongInt; var i:byte; f:LongInt;
f:=1;
for i:=2 to n do f:=f*i; factor:=f;
BEGIN
Write(‘x=’); Readln(x); Writeln(‘Факториал числа=’,factor(x)); Readln;
3. ИСПОЛНИТЕЛЬНЫЙ БЛОК
1. Заданы два одномерных массива разного размера. Организовать три проце- дуры: ввод элементов массива, вывод элементов массива и процедуру уве- личения каждого элемента массива в 3 раза.
1) Описать в разделе Const две константы, например, n=6 и m=9;
2) Описать в разделе Type один тип данных (mas) – одномерный массив из
m элементов (m>n);
3) Описать в разделе Var две переменные А и В типа mas; другие перемен- ные опишите по своему усмотрению;
4) Объявить процедуру Vvod, в качестве формальных параметров указать параметр-переменную С1 типа mas и параметр-значение z1 целого типа (z1 – количество элементов в массиве); самостоятельно реализовать тело процедуры, обеспечивающее ввод массива с помощью генератора слу- чайных чисел;
5) Объявить процедуру Vivod, в качестве формальных параметров указать параметр-значение C2 типа mas и параметр-значение z2 целого типа (z2 – количество элементов в массиве); самостоятельно реализовать тело про- цедуры, обеспечивающее вывод массива на экран;
6) Объявить процедуру Change с фактическими параметрами аналогичными процедуре Vvod; самостоятельно реализовать тело процедуры;
7) Составить основную программу, содержащую вызов все трех процедур, сначала для массива А (с количеством элементов n), затем для массива В (с количеством элементов m).
Задание 1. Наберите текст программы из информационного блока, запус-
тите ее на исполнение три раза и заполните таблицу:
|
х= |
4 |
5 |
6 |
|
Факториал числа= |
|
|
|
Задание 2. Добавьте в текст предыдущей программы функцию, вычис- ляющую заданную степень числа х, т.е. хk
- опишите функцию Stepen с двумя формальными параметрами n (число, которое необходимо возвести в степень) и z (степень числа); функция должна иметь тип такой же как n;
- чтобы возвести число n в степень z необходимо z раз умножить n са- мо на себя, т.е. оператор f:=f*n должен выполняться в цикле (For i:=1 to z do);
- чтобы функция Stepen при вызове ее из основной программы воз- вращала именно степень числа, в теле функции ее имени должно быть присвоено значение f;
- в основной программе с клавиатуры необходимо запросить х и k, вы- звать функцию с этими параметрами и вывести ее занчение на экран.
1) Чем отличается структура подпрограммы от структуры программы?
2) Что такое формальный параметр подпрограммы? Укажите, какие формаль- ные параметры, для каких процедур вы использовали в задании 1.
3) Что такое фактический параметр подпрограммы? Укажите, какие фактиче- ские параметры вы использовали в задании 1.
4) В чем состоит отличие при использовании в описании подпрограммы пара-
метра-переменной и параметра-значения?
5) Какие данные в задании 1 относятся к глобальным данным, а какие к ло- кальным данным?
1. Написать процедуру удаления из строки всех пробелов.
2. Написать процедуру, выводящую на экран фразу «Добрый день!» заданное количество раз.
3. Написать процедуру, обнуляющую элементы главной диагонали двумерного массива.
4. Написать процедуру, добавляющую в конец строки столько восклицательных знаков «!», сколько символов в строке.
5. Написать процедуру, удаляющую из строки первое слово.
6. Написать процедуру, удаляющую из строки последнее слово.
7. Написать процедуру, выводящую на экран элементы одномерного массива через запятую и в обратном порядке.
8. Написать процедуру, выводящую на экран элементы побочной диагонали.
9. Написать функцию для определения максимального элемента одно-
мерного массива.
10. Написать функцию для определения минимального элемента двумер-
ного массива.
11. Написать функцию для определения суммы положительных элементов одномерного массива.
12. Написать функцию для определения количества элементов одномерно-
го массива, кратных k.
13. Написать функцию для определения произведения четных элементов одномерного массива.
14. Написать функцию для определения суммы элементов главной диаго-
нали матрицы.
15. Написать функцию для определения количества гласных букв в строке.
16. Написать функцию, которая определяет сколько процентов от общего числа символов составляют согласные буквы.
17. Написать функцию, которая определяет сколько процентов от общего числа элементов одномерного массива составляют нулевые элементы.
18. Написать функцию, которая заменяет в строке все «:» на «;»
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.