Slider

Задача №21. Работа с циклами и подпрограммами.

Автор материалов - Лада Борисовна Есакова.

Подпрограмма – это поименованная часть программы, которая может быть многократно вызвана из разных частей программы для выполнения некоторых часто используемых действий.

Подпрограммы бывают двух видов: процедуры и функции.

Процедура имеет ту же структуру, что и основная программа. Отличительной чертой функции является то, что она обязательно возвращает одно значение, которое является значением самой этой функции. При этом может принимать на вход любое количество аргументов.

В Паскале функция располагается выше основной программы и оформляется следующим образом (вместо многоточия могут быть любые операторы):

function F(x: integer):integer;

begin

  ...

F:= <результат функции>

end;

В заголовке функции записывают имя функции, в скобках – список параметров, далее через двоеточие – тип возвращаемого значения; в приведенном примере функция F принимает один целый параметр x, и возвращает целое число.

Результат функции записывается в переменную, имя которой совпадает с именем функции. Объявлять эту переменную не нужно

Поиск наименьшего значения функции:

Подпрограмма поиска наименьшего значение функции F(x) на интервале [a,b], выглядит следующим образом:

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) на интервале [a,b], выглядит следующим образом:

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

for t:=a to b do

             if F(t) > R then begin

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

            end;

Поиск наибольшего значения функции

Пример 1.

Опре­де­ли­те, какое число будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния сле­ду­ю­ще­го ал­го­рит­ма (для Ва­ше­го удоб­ства ал­го­ритм пред­став­лен на четырёх язы­ках):

 Бей­сик

Пас­каль

DIM A, B, T, M, R AS INTEGER

A = -7: B = 25

M = A: R = F(A)

FOR T = A TO B

IF F(T) > R THEN

M = T

R = F(T)

ENDIF

NEXT T

PRINT R

 

FUNCTION F(x)

F = 281 - 2 * (17 + x) * (17 + x);

END FUNCTION

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

Function F(x:integer):integer;

begin

F : = 281 - 2 * (17 + x) * (17 + x);

end;

begin

a : = -7; b : = 25;

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.

Си

Ал­го­рит­ми­че­ский язык

#include<stdio.h>

int F(int x)

{

return 281 - 2 * (17 + x) * (17 + x);

}

void main()

{

int a, b, t, M, R;

a = -7; b = 25;

M = a; R = F(a);

for (t = a; t <= b; t++){

if (F(t) > R) {

M = t; R = F(t);

}

}

printf("%d", R);

}

алг

нач

цел a, b, t, R, M

a : = -7; b : = 25

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

нц для t от a до b

если F(t) > R

то

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

все

кц

вывод R

кон

алг цел F(цел x)

нач

знач : = 281 - 2 * (17 + x) * (17 + x)

кон

Решение:

Ал­го­ритм пред­на­зна­чен для по­ис­ка наи­боль­ше­го зна­че­ния функ­ции F(x) на от­рез­ке от a до b.

F : = 281 - 2 * (17 + x) * (17 + x);

F(x) - квадратичная функция с отрицательным старшим коэффициентом. Ее график - парабола с ветвями вниз и вершиной в точке -17 (рисунок выполнен без соблюдения пропорций).

От -17 до бесконечности функция убывает, значит на отрезке [-7; 25] наибольшее зна­че­ние до­сти­га­ет­ся в левой границе ин­тер­ва­ла и равно F(−7) = 81.

 

Ответ: 81

 

Поиск наименьшего значения функции

Пример 2.

Опре­де­ли­те, какое число будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния сле­ду­ю­ще­го ал­го­рит­ма (для Ва­ше­го удоб­ства ал­го­ритм пред­став­лен на четырёх язы­ках).

 

Бей­сик

Пас­каль

DIM A, B, T, M, R AS INTEGER

A = -20: B = 20

M = A: R = F(A)

FOR T = A TO B

IF F(T) < R THEN

M = T

R = F(T)

ENDIF

NEXT T

PRINT M

FUNCTION F(x)

F = 3*(x-8)*(x-8)

END FUNCTION

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

Function F(x:integer):integer;

begin

F := 3*(x-8)*(x-8)

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(M);

end.

Си

Ал­го­рит­ми­че­ский язык

#include<stdio.h>

int F(int x)

{

return 3*(x-8)*(x-8);

}

void main()

{

int a, b, t, M, R;

a = -20; b = 20;

M = a; R = F(a);

for (t=a; t<=b; t++){

if (F(t) < R) {

M = t; R = F(t);

}

}

printf("%d", M);

}

алг

нач

цел a, b, t, R, M

a := -20; b := 20

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

нц для t от a до b

если F(t)< R

то

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

все

кц

вывод M

кон

алг цел F(цел x)

нач

знач := 3*(x-8)*(x-8)

кон

 

Решение:

Ал­го­ритм ищет значение аргумента t, при ко­то­ром функ­ция F(t) имеет наименьшее зна­че­ние на от­рез­ке от a до b. Если наименьшее значение будет достигнуто в нескольких точках, то выведется первая (левая), т.к. стоит строгий знак <.

F := 3*(x-8)*(x-8)

Функ­ция F(x) - квад­рат­ичная функция с по­ло­жи­тель­ным стар­шим ко­эф­фи­ци­ен­том. Ее график – парабола с вершиной в точке x = 8 и ветвями, направленными вверх (рисунок выполнен без соблюдения пропорций).

Наименьшее на интервале значение функции F(x) достигается в вершине х = 8.

Ответ: 8

 

Поиск значений, при которых программа выдает тот же результат

Пример 3.

На­пи­ши­те в от­ве­те наи­мень­шее зна­че­ние вход­ной пе­ре­мен­ной k, при ко­то­ром про­грам­ма выдаёт тот же ответ, что и при вход­ном зна­че­нии k = 10. Для Ва­ше­го удоб­ства про­грам­ма при­ве­де­на на пяти язы­ках про­грам­ми­ро­ва­ния.

 

Бей­сик

Python

DIM K, I AS LONG

INPUT K

I = 1

WHILE F(I) < G(K)

I = I + 1

WEND

PRINT I

 

FUNCTION F(N)

F = N * N * N

END FUNCTION

 

FUNCTION G(N)

G = 2*N + 3

END FUNCTION

def f(n):

return n*n*n

 

def g(n):

return 2*n+3

 

k = int(input())

i = 1

while f(i) < g(k):

i+=1

print (i)

Пас­каль

Ал­го­рит­ми­че­ский язык

var

k, i : longint;

 

function f(n: longint): longint;

begin

f := n * n * n;

end;

 

function g(n: longint): longint;

begin

g := 2*n + 3;

end;

 

begin

readln(k);

i := 1;

while f(i) < g(k) do

i := i+1;

writeln(i)

end.

алг

нач

цел i, k

ввод k

i := 1

нц пока f(i) < g(k)

i := i + 1

кц

вывод i

кон

 

алг цел f(цел n)

нач

знач := n * n * n

кон

 

алг цел g(цел n)

нач

знач := 2*n + 3

кон

Си

#include

long f(long n) {

return n * n * n;

}

 

long g(long n) {

return 2*n + 3;

}

 

int main()

{

long k, i;

scanf("%ld", &k);

i = 1;

while(f(i) < g(k))

i++;

printf("%ld", i);

return 0;

}

Решение:

Про­грам­ма срав­ни­ва­ет значения функций f(i) = i3 и g(k) = 2*k +3, увеличивает i на единицу, если i<  2*k +3 и вы­во­дит пер­вое зна­че­ние пе­ре­мен­ной i при ко­то­ром

i≥  2*k +3.

При k = 10, про­грам­ма вы­ве­дет число 3.

2≤  2*k +3 < 33

Отсюда наименьшее k = 3.

 

Ответ: 3

Интенсивная подготовка

Бесплатные пробные ЕГЭ

Расписание курсов

Звоните нам: 8 (800) 775-06-82 (бесплатный звонок по России)
                       +7 (495) 984-09-27 (бесплатный звонок по Москве)

Или нажмите на кнопку «Узнать больше», чтобы заполнить контактную форму. Мы обязательно Вам перезвоним.

НОВЫЙ НАБОР 2020 ЕГЭ И ОГЭ

Типы подготовки:
Сказать спасибо
РЕКОМЕНДУЕМ:
ege-tv

Полный онлайн-курс подготовки к ЕГЭ по математике. Структурировано. Четко. Без воды. Сдай ЕГЭ на 100 баллов!

Смотреть

Для нормального функционирования и Вашего удобства, сайт использует файлы cookies. Это совершенно обычная практика.Продолжая использовать портал, Вы соглашаетесь с нашей Политикой конфиденциальности.

Позвоните мне

Все поля обязательны для заполнения

Отправить

Премиум

Вся часть 2 на ЕГЭ по математике, от задачи 13 до задачи 19. То, о чем не рассказывают даже ваши репетиторы. Все приемы решения задач части 2. Оформление задач на экзамене. Десятки реальных задач ЕГЭ, от простых до самых сложных.

Видеокурс «Премиум» состоит из 7 курсов  для освоения части 2 ЕГЭ по математике (задачи 13-19). Длительность каждого курса - от 3,5 до 4,5 часов.

  1. Уравнения (задача 13)
  2. Стереометрия (задача 14)
  3. Неравенства (задача 15)
  4. Геометрия (задача 16)
  5. Финансовая математика (задача 17)
  6. Параметры (задача 18)
  7. Нестандартная задача на числа и их свойства (задача 19).

Здесь то, чего нет в учебниках. Чего вам не расскажут в школе. Приемы, методы и секреты решения задач части 2.

Каждая тема разобрана с нуля. Десятки специально подобранных задач, каждая из которых помогает понять «подводные камни» и хитрости решения.  Автор видеокурса Премиум - репетитор-профессионал Анна Малкова.

Получи пятерку

Видеокурс «Получи пятерку» включает все темы, необходимые для успешной сдачи ЕГЭ по математике на 60-65 баллов. Полностью все задачи 1-13 Профильного ЕГЭ по математике. Подходит также для сдачи Базового ЕГЭ по математике. Если вы хотите сдать ЕГЭ на 90-100 баллов, вам надо решать часть 1 за 30 минут и без ошибок!

Курс подготовки к ЕГЭ для 10-11 класса, а также для преподавателей. Все необходимое, чтобы решить часть 1 ЕГЭ по математике (первые 12 задач) и задачу 13 (тригонометрия). А это более 70 баллов на ЕГЭ, и без них не обойтись ни стобалльнику, ни гуманитарию.

Вся необходимая теория. Быстрые способы решения, ловушки и секреты ЕГЭ. Разобраны все актуальные задания части 1 из Банка заданий ФИПИ. Курс полностью соответствует требованиям ЕГЭ-2018.

Курс содержит 5 больших тем, по 2,5 часа каждая. Каждая тема дается с нуля, просто и понятно.

Сотни заданий ЕГЭ. Текстовые задачи и теория вероятностей. Простые и легко запоминаемые алгоритмы решения задач. Геометрия. Теория, справочный материал, разбор всех типов заданий ЕГЭ. Стереометрия. Хитрые приемы решения, полезные шпаргалки, развитие пространственного воображения. Тригонометрия с нуля - до задачи 13. Понимание вместо зубрежки. Наглядное объяснение сложных понятий. Алгебра. Корни, степени и логарифмы, функция и производная. База для решения сложных задач 2 части ЕГЭ.

Сразу после оплаты вы получите ссылки на скачивание видеокурсов и уникальные ключи к ним.

Задачи комплекта «Математические тренинги - 2019» непростые. В каждой – интересные хитрости, «подводные камни», полезные секреты.

Варианты составлены так, чтобы охватить все возможные сложные задачи, как первой, так и второй части ЕГЭ по математике.

Как пользоваться?

  1. Не надо сразу просматривать задачи (и решения) всех вариантов. Такое читерство вам только помешает. Берите по одному! Задачи решайте по однойи старайтесь довести до ответа.
  2. Если почти ничего не получилось – начинать надо не с решения вариантов, а с изучения математики. Вам помогут книга для подготовки к ЕГЭи Годовой Онлайн-курс.
  3. Если вы правильно решили из первого варианта Маттренингов 5-7 задач – значит, знаний не хватает. Смотри пункт 1: Книгаи Годовой Онлайн-курс!
  4. Обязательно разберите правильные решения. Посмотрите видеоразбор – в нем тоже много полезного.
  5. Можно решать самостоятельно или вместе с друзьями. Или всем классом. А потом смотреть видеоразбор варианта.

Стоимость комплекта «Математические тренинги – 2019» - всего 1100 рублей. За 5 вариантов с решениями и видеоразбором каждого.