7


  • Учителю
  • Научная статья в журнале Информатика в школе 'Подпрограммы в ЕГЭ'

Научная статья в журнале Информатика в школе 'Подпрограммы в ЕГЭ'

Автор публикации:
Дата публикации:
Краткое описание:
предварительный просмотр материала

Н. В. Андрафанова

Кубанский государственный университет, г. Краснодар

ПОДПРОГРАММЫ В ЕГЭ

Аннотация

В ЕГЭ 2012 года по информатике и ИКТ было включено новое задание повышенного уровня сложности, направленное на проверку умений выпускников анализировать программу, использующую процедуры и функции. В статье представлен методический материал о подпрограммах-функциях: важном и необходимом инструменте любого языка программирования.

Ключевые слова: подпрограмма, язык программирования, подготовка к ЕГЭ.

В ЕГЭ 2012 года по информатике и ИКТ было включено новое задание В14 повышенного уровня сложности. Проверяемые элементы содержания, указанные в спецификации КИМ ЕГЭ 2012 г.: умение анализировать программу, использующую процедуры и функции.

Требование к уровню подготовки выпускников, достижение которого проверяется на ЕГЭ: читать и отлаживать программы на языке программирования (1.1.4).

В задании В14 демонстрационного варианта ЕГЭ 2012 г. представлен алгоритм на четырех языках: Бейсик, Паскаль, Си, алгоритмический язык. Необходимо определить, какое число будет напечатано в результате выполнения алгоритма.

Для разбора задания выберем один из языков программирования − Паскаль:

Var a,b,t,M,R :integer;

Function F(x:integer):integer;

begin

F:=4*(x-1)*(x-3);

end;

BEGIN

a:=-20; b:=20;

M:=a; R:=F(a);

for t:=a to b do

begin

if (F(t)

end;

write(M);

END.

Теоретические сведения, необходимые для выполнения задания.

1.Понятие подпрограммы.

Подпрограмма (от англ. subroutine) − это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы, имеющая собственное имя. Подпрограмма записывается один раз, но может использоваться многократно при упоминании ее имени в тексте программы.

2.Назначение подпрограммы.

Подпрограмма появилась как средство оптимизации программы по объёму занимаемой памяти: каждая подпрограмма описывается в программе один раз, а обращаться к ней можно многократно.

Главное назначение подпрограммы ─ структуризация программы с целью удобства её читаемости и отладки.

3.Виды подпрограмм.

Подпрограммы реализуются в виде функций и процедур.

Функция (Function) ─ это подпрограмма, результат выполнения которой есть единственное (скалярное) значение, присваиваемое имени этой функции.

Процедура (Procedure) ─ это подпрограмма, имеющая любое количество входных и выходных данных.

4.Описание подпрограммы.

Подпрограмма описывается в разделе описаний программы.

Функция

Процедура

Function <��������������������������������

�������������������������

������

����л операторов>;

<���������������

��������

���������������������������������

��здел описаний процедуры>

begin

<����������������������

��������

����������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������ными переменными.

Раздел операторов подпрограммы − это вспомогательный алгоритм с использованием формальных параметров.

5.Обращение к подпрограмме.

Функция

Процедура

Имя (список фактических параметров)

Имя (список фактических параметров)

Обращение к функции включается в качестве операнда в выражение, стоящее в правой части оператора присваивания.

Обращение к процедуре является самостоятельным оператором, который называется оператором вызова процедуры.

Список фактических параметров ─ это перечень конкретных значений или имен, которые подставляются на место формальных параметров подпрограммы при каждом ее вызове и выполнении.

Количество, тип, последовательность фактических параметров в обращении к подпрограмме и формальных параметров в описании подпрограммы должны совпадать.

6.Механизм выполнения подпрограммы при упоминании ее имени в разделе операторов программы.

Функция

Процедура

Отыскивается описание функции с данным именем.

Отыскивается описание процедуры с данным именем.

В теле функции формальные параметры заменяются фактическими параметрами.

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

Выполняются операторы из раздела операторов функции.

Выполняются операторы из раздела операторов процедуры.

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

Выполняется оператор, следующий за оператором вызова процедуры.

Разбор задания В14.

Вспомогательный алгоритм в задании демонстрационного варианта − это подпрограмма-функция:

Function F(x:integer):integer;

begin

F:=4*(x-1)*(x-3);

end;

Ее описание находится в декларативной части программы.

Результатом выполнения функции является целое значение (integer), присваиваемое имени функции − F. Формальный параметр функции x (аргумент функции) является целочисленным параметром.

Из основной программы происходит обращение к функции F в цикле с параметром t, принимающим последовательно целые значения а, а+1, а+2,…, b:

for t:=a to b do

begin

if (F(t)

end;

Следовательно, значение функции F(t) вычисляется в программе многократно:

t

−20

−19

−18

19

20

F

1932

1760

1596

1152

1292

Примерное время выполнения задания − 6 мин. Однако, составление таблицы значений функции займет больше времени, так как придется вычислить 41 значение функции. Следовательно, необходимо проанализировать работу цикла с параметром.

Анализ тела цикла с параметром показывает, что в цикле расположен условный оператор:

if (F(t)

В условии оператора сравниваются два значения функции: текущее F(t) и R, первоначальное значение которого равно F(a). В случае истинности условия F(t)<R переменная R принимает новое значение − значение функции в текущей точке t: M:=t; R:=F(t). Очевидно, что в цикле с параметром t определяется наименьшее значение функции F(t) на отрезке [−20; 20].

Рассмотрим подробнее функцию F(x)=4*(x−1)*(x−3). Раскрыв скобки, получаем: F(x)=4·x2−16·x+12. Таким образом, необходимо найти наименьшее значение квадратичной функции F(x) на отрезке [−20; 20].

Графиком данной квадратичной функции является парабола, ветви которой направлены вверх, и, следовательно, наименьшее значение функция принимает в вершине параболы: , F(2)=4·(2−1)·(2−3)=−4. Результатом выполнения алгоритма является значение аргумента t=2, при котором функция принимает наименьшее значение F(2)=−4.

Ответ: 2.

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

Умение выполнять действия с функциями, в частности находить наибольшее и наименьшее значения функции, относятся к требованиям (умениям), проверяемым заданиями экзаменационной работы по математике. Следовательно, задание носит интегративный характер.

Какие модификации данной задачи можно предложить школьникам для подготовки к ЕГЭ?

1. Определите, какое число будет напечатано в результате выполнения алгоритма:

Var a,b,t,M,R :integer;

Function F(x:integer):integer;

begin

F:=4*(x-1)*(x-3);

end;

BEGIN

a:=5; b:=35;

M:=a; R:=F(a);

for t:=a to b do

begin

if (F(t)

end;

write(R);

END.

Решение. Необходимо найти наименьшее значение функции F(x)=4*(x−1)*(x−3)=
=4·x2−16·x+12 на отрезке [5; 35]. График функции − парабола, ветви которой направлены вверх, абсцисса вершины параболы не принадлежит данному отрезку, поэтому необходимо найти значения функции на концах отрезка и выбрать из них наименьшее. Очевидно, что наименьшее значение функция принимает при t=5, F(5)=4*(5−1)*(5−3)=32.

Ответ: 32.

2. Определите, какое число будет напечатано в результате выполнения алгоритма:

Var a,b,t,M,R :integer;

Function F(x:integer):integer;

begin

F:=4*(x-1)*(x-3);

end;

BEGIN

a:=−20; b:=20;

M:=a; R:=F(a);

for t:=a to b do

begin

if (F(t)>R)then begin M:=t; R:=F(t); end;

end;

write(R);

END.

Решение. Необходимо найти наибольшее значение функции F(x)=4*(x−1)*(x−3)=
=4·x2−16·x+12 на отрезке [−20; 20]. График функции − парабола, ветви которой направлены вверх, абсцисса вершины параболы принадлежит данному отрезку, но в ней функция достигает наименьшего значения. Поэтому необходимо найти значения функции на концах отрезка и выбрать из них наибольшее.

При t=−20, F(−20)=4*(−20−1)*(−20−3)=1932.

При t=20, F(20)=4*(20−1)*(20−3)=1292.

Ответ: 1932.

3. Определите, какое число будет напечатано в результате выполнения алгоритма:

Var a,b,t,M,R :integer;

Function F(x:integer):integer;

begin

F:=4*(x-1)*(x-3);

end;

BEGIN

a:=−20; b:=3;

M:=a; R:=F(a);

for t:=a to b do

begin

if (F(t)>R)then begin M:=t; R:=F(t); end;

end;

write(R);

END.

Решение. Необходимо найти наибольшее значение функции F(x)=4*(x−1)*(x−3)=
=4·x2−16·x+12 на отрезке [−20; 3]. График функции − парабола, ветви которой направлены вверх, абсцисса вершины параболы принадлежит данному отрезку, но в ней функция принимает наименьшее значение. Очевидно, что функция принимает наибольшее значение при t=−20, так как при t=3 значение функции равно 0.

При t=−20, F(−20)=4*(−20−1)*(−20−3)=1932.

Ответ: 1932.

Дополнительные задачи для изучения подпрограмм-функций.

1. Оформить в виде подпрограммы-функции алгоритм вычисления тангенса tgx.

Решение.

Function tg (x:real):real;

Begin

tg:=sin(x)/cos(x)

End;

tg − имя функции и ее результат;

x − формальный параметр (аргумент функции).

2. Оформить в виде подпрограммы-функции алгоритм вычисления приближенного значения гиперболического синуса .

Решение.

F
unction sh (x:real):real;

Begin

sh:=(exp(x)-exp(-x))/2

End;

sh − имя функции и ее результат;

x − формальный параметр (аргумент функции).

3. Составить программу вычисления значения Z по формуле Z=sh(x)·tg(x+1)−tg2(2+sh(x−1)), используя для вычисления приближенного значения тангенса и гиперболического синуса подпрограммы-функции.

Решение.

Var x, z: real;

Function sh (x:real):real;

Begin

sh:=(exp(x)-exp(-x))/2

End;

Function tg (x: real):real;

Begin

tg:=sin(x)/cos(x)

End;

BEGIN

Read (x);

z:=sh(x)*tg(x+1)−sqr(tg(2+sh(x−1)));

write(z)

END.

4.Оформить в виде подпрограммы-функции вычисление sign по формуле:

.

Function sign (x:real):shortint;

Begin

if x=0

then sign:=0

else if x>0

then sign:=1

else sign:=−1

End;

5.Вычислить значение выражения z(x)=(sign(x)+sign(y))·sign(x+y), используя для вычисления sign подпрограмму-функцию.

6.Оформить в виде подпрограммы-функции вычисление приближенного значения , используя равенство .

Function fsin (n:integer; x:real):real;

Var i:integer; P:real;

Begin

P:=1;

For i:=1 to n do

P:=P*(1-sqr(x)/sqr(i*pi));

fsin:=P*x

End;

7. Составить программу вычисления значения функции y=sin x, используя равенство , для любых x и n, вводимых с клавиатуры, и стандартную функцию sin (x). Вычисление y=sin x по формуле оформить в виде подпрограммы-функции. Оценить погрешность вычислений, сравнив результат обращения к подпрограмме-функции с результатом обращения к стандартной функции sin (x). Оба результата и модуль их разности вывести на печать.

8.Оформить в виде подпрограммы-функции вычисление расстояния между двумя точками на плоскости по формуле .

Function Dist (x1,y1,x2,y2:real):real;

Begin

Dist:=sqrt(sqr(x1-x2)+sqr(y1-y2))

End;

9.Три точки на плоскости заданы своими координатами. Определить, лежат ли точки на одной прямой. Для вычисления длин отрезков использовать подпрограмму-функцию определения расстояния между двумя точками на плоскости.

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

11.Оформить в виде подпрограммы-функции алгоритм вычисления факториала натурального числа k. (Факториалом натурального числа k называют произведение первых k натуральных чисел: 1·2·3·…·k).

Function Fact (k:byte):longint;

Var i:byte;

Begin

fact:=1;

For i:=2 to k do

Fact:=Fact*i;

End;

12.Оформить в виде подпрограммы-функции алгоритм вычисления экспоненты с погрешностью ε=10−4, используя для вычисления разложение экспоненты в степенной ряд: .

Function fexp (n:integer; x:real):real;

Var S, t, eps, fi:real;

Begin

S:=0; n:=0; t:=1; eps:=0.0001;

While abs(t)>eps do

Begin

S:=S+t;

n:=n+1;

fi:=x/n;

t:=t*fi

End;

fexp:=S

End;

13.Определить значение функции , используя для вычисления экспоненты:

  • разложение в степенной ряд, оформленное в виде подпрограммы-функции;

  • стандартную функцию exp(x).

Оценить погрешность вычислений, сравнив результат обращения к подпрограмме-функции с результатом обращения к стандартной функции exp (x). Оба результата и модуль их разности вывести на печать.

Литература

1.Андрафанова Н. В. Методика изучения итерационных циклических процессов // Информатика и образование. 2010. №9.

2.Демонстрационный вариант КИМ ЕГЭ 2012 года по информатике и ИКТ. ФИПИ, http://www.fipi.ru.

3.Кодификатор элементов содержания и требований к уровню подготовки выпускников общеобразовательных учреждений для проведения в 2012 году единого государственного экзамена по информатике и ИКТ. ФИПИ, http://www.fipi.ru.

4.Новичков В. С., Панфилова Н. И., Пылькин А. Н. Алгоритмизация и программирование на Турбо Паскале: Учебное пособие. - М.: Горячая линия - Телеком, 2005.

5.Программирование на языке Паскаль: Задачник / Под ред. О. Ф. Усковой. СПб.: Питер, 2005.

6.Спецификация КИМ ЕГЭ 2012 года по информатике и ИКТ. ФИПИ, http://www.fipi.ru.


Андрафанова Наталия Владимировна, кандидат педагогических наук, доцент, доцент кафедры информационных образовательных технологий факультета математики и компьютерных наук Кубанского государственного университета

Адрес: 350040, г. Краснодар, ул. Ставропольская 149, тел. (861) 219-95-81, e-mail: nat_drofa@mail.ru

N. V. Andrafanova

Kuban State University, Krasnodar

Subroutines in the SFE (state final examination)

Abstract

This year a new task of higher level was included into the state final examination in informatics and ICT. This task focuses on proficiency test of graduators to analyze the program using procedures and functions. The article presents education material about subroutines-functions which is the main and necessary tool of any programming language.

Keywords: subroutine, programming language, preparing for the state final examination.

Запись i:=1(1)n в блоке модификации графической записи подпрограммы fsin означает: i изменяется от начального значения 1 до конечного значения n с шагом 1.



 
 
X

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

После этого кнопка ЗАГРУЗКИ станет активной!

Кнопки рекомендации:

загрузить материал