Анализ программы с подпрограммами В14 Повышенный уровень, время – 6 мин
Найдите минимум функции f(x)=4*(x-1)*(x-3) на отрезке [-20;20] Точка минимума совпадает с вершиной параболы
Что нужно знать: функция – это вспомогательный алгоритм, который возвращает некоторое значение–результат в Паскале функция располагается выше основной программы и оформляется следующим образом (вместо многоточия могут быть любые операторы): function F(x: integer):integer; begin... F:= end; в заголовке функции записывают имя функции, в скобках – список параметров, далее через двоеточие – тип возвращаемого значения; в приведенном примере функция F принимает один целый параметр, к которому внутри функции нужно обращаться по имени x, и возвращает целое число
Что нужно знать: если параметров несколько, для каждого из них указывают тип: function F(x: integer; y: integer):integer; если несколько соседних параметров имеют одинаковый тип, можно их объединить в список: function F(x, y: integer):integer;
Что нужно знать: следующая программа ищет НАИМЕНЬШЕЕ ЗНАЧЕНИЕ функции F(x) на интервале [a,b], просматривая значения от a до b с шагом 1: M:=a; R:=F(a); for t:=a to b do if F(t) < R then begin R:=F(t); M:=t; end; цикл для поиска НАИБОЛЬШЕГО ЗНАЧЕНИЯ выглядит точно так же, только знак Докажем
Построим трассировочную таблицу для фрагмента программы (F=x*x): а:=-2; b:=2 M:=a; R:=F(a); for t:=a to b do if F(t) < R then begin R:=F(t); M:=t; end; MRtF(t)F(t) < R ? -24 4нет 1да 100да 0011нет 24 Ответ
Что нужно знать: если функция представляет собой квадратный трехчлен вида, то абсцисса, соответствующая точке минимума, вычисляется по формуле если квадратный трехчлен задан в виде то абсцисса, соответствующая точке минимума, вычисляется по формуле
Определите, какое число будет напечатано в результате выполнения следующего алгоритма: 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)
Определите, какое число будет напечатано в результате выполнения следующего алгоритма: Var a,b,t,M,R :integer; Function F(x:integer):integer; begin F:=x*x + 4*x + 8; end; BEGIN a:=-10; b:=10; 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. Функция Ищем максимум Выводим ординату
Решение: Var a,b,t,M,R :integer; Function F(x:integer):integer; begin F:=x*x + 4*x + 8; end; BEGIN a:=-10; b:=10; 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. График – парабола, ветви вверх Функция максимума не имеет Ответ: 148 Проверить значения функции на концах отрезка и выбрать из них наибольшее при t=-10 получаем F(t)=68 (F(a)) при t=10 получаем F(t)=148 (F(b))
Program A14; Var d,a,b,t,M,R :real; Function F(x : real):real; begin F:=(x+4)*(2-x); end; BEGIN a:=-2; b:=4; d:=0.1; t:=a; M:=a; R:=F(a); while tR) then begin M:=t; R:=F(t); end; t:=t+d; end; write(M); END. График – парабола, ветви вниз Цикл от a до b с шагом d Задание из тренировочного варианта МИОО Корни -4, 2
Список источников Информатика и ИКТ: ЕГЭ 2012: Контрольные тренировочные материалы с ответами и комментариями/ С.М. Авдошин, Р.З.Ахметсафина, О.В. Максименкова. – М.: Спб.: Просвещение, Демоварианты ЕГЭ по информатике , 2013 ФИПИ Тренировочные работы ЕГЭ по информатике, МИОО, 2012 Ege.yandex.ru