Егэ по информатике задание 6 презентация

Ege 6-1 (базовый уровень, время – 4 мин)

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

Пример I:

Автомат получает на вход четырёхзначное число. По этому числу строится новое число по следующим правилам.

1. Складываются первая и вторая, а также третья и четвёртая цифры исходного числа.

2. Полученные два числа записываются друг за другом в порядке убывания (без разделителей).

Пример. Исходное число: 3165 . Суммы: 3 + 1 = 4 ; 6 + 5 = 11 . Результат: 114 . Укажите наименьшее число , в результате обработки которого, автомат выдаст число 1311 .

Решение:

  • единственный способ разбить запись 1311 на два числа – это 13 и 11 (числа 131 и 311 не могут образоваться в результате сложения значений двух десятичных цифр)
  • сумма первой и второй цифр должна быть наименьшей (тогда и число будет меньше!), она равна 11 ; тогда сумма значений двух последних цифр равна 13
  • для того, чтобы всё число было минимально, числа, составленные из первых двух и последних двух цифр должны быть минимальными соответственно для сумм 11 и 13

Ответ: 2949

ПримерII.

В некоторой информационной системе информация кодируется двоичными шестиразрядными словами . При передаче данных возможны их искажения, поэтому в конец каждого слова добавляется седьмой ( контрольный ) разряд таким образом, чтобы сумма разрядов нового слова, считая контрольный, была чётной . Например , к слову 110011 справа будет добавлен 0 , а к слову 1011001 .

После приёма слова производится его обработка. При этом проверяется сумма его разрядов, включая контрольный. Если она нечётна , это означает, что при передаче этого слова произошёл сбой , и оно автоматически заменяется на зарезервированное слово 0000000 . Если она чётна , это означает, что сбоя не было или сбоев было больше одного. В этом случае принятое слово не изменяется.

Исходное сообщение

1100101 1001011 0011000 было принято в виде 1100111 1001110 0011000.

Как будет выглядеть принятое сообщение после обработки?

Решение:

1) 1100111 1001011 0011000

2) 1100111 1001110 0000000

3) 0000000 0000000 0011000

4) 0000000 1001110 0011000

  • по условию в правильно принятом блоке число единиц должно быть чётное
  • в принятом сообщении 1100111 1001110 0011000 нечётное число единиц (5) только в первом блоке, поэтому он будет заменён на нули

Ответ: 4

Пример III.

Учитель предлагает детям три цифры. Ученики должны сначала найти сумму первой и второй цифр, потом – сумму второй и третьей цифр. Затем полученные числа записываются друг за другом в порядке невозрастания (правое число меньше или равно левому).

Пример. Исходные цифры: 6, 3, 9. Суммы: 6 + 3 = 9; 3 + 9 = 12. Результат: 129.

Укажите, какая из следующих последовательностей символов может быть получена в результате.

1) 1915 2) 1815 3) 188 4) 1518

Решение:

  • число записано в десятичной системе счисления, поэтому все цифры меньше или равны 9, так что при сложении двух таких чисел может получиться сумма от 0 до 18
  • в первом варианте ответа 4 цифры, это два двузначных числа, записанные подряд; заметим, что первое число – 19, такая сумма не могла получиться, поэтому это неправильный ответ
  • в ответе 4 тоже две суммы, 15 и 18, но они стоят в порядке возрастания, поэтому это тоже неверный ответ
  • в ответах 2 и 3 два числа стоят в порядке убывания (18 и 15 в ответе 2, 18 и 8 в ответе 3), это соответствует условию
  • чтобы выбрать между ответами 2 и 3, нужно вспомнить, что вторая цифра по условию входит в обе суммы
  • заметим, что если сумма равна 18, то обе цифры (в том числе вторая) равны 9, поэтому другая сумма не может получиться меньше 9; это означает, что ответ 3 (188) неверный

Ответ: 2.

Пример IV:

Автомат получает на вход два двузначных шестнадцатеричных числа. В этих

числах все цифры не превосходят цифру 6 (если в числе есть цифра больше 6, автомат отказывается работать). По этим числам строится новое шестнадцатеричное число по следующим правилам:

  • Вычисляются два шестнадцатеричных числа – сумма старших разрядов полученных чисел и сумма младших разрядов этих чисел.
  • Полученные два шестнадцатеричных числа записываются друг за другом в порядке возрастания (без разделителей).

Пример. Исходные числа: 66, 43. Поразрядные суммы: A, 9. Результат: 9A.

Определите, какое из следующих чисел может быть результатом работы автомата . 1) 9F 2) 911 3) 42 4) 7A

Решение:

  • по условию обе цифры числа , поэтому при сложении 2-х таких чисел может получиться сумма от 0 до 12 = 16
  • Из п.1 следует, что цифры F в записи числа быть не может, вариант 1 не подходит
  • каждая из двух сумм находится в интервале 0..12 , поэтому записывается одной 16 -теричной цифрой, так что результат всегда состоит ровно из 2-х цифр
  • из п. 2 следует, что вариант 2 , состоящий из трех цифр, не подходит
  • по условию цифры записаны в порядке возрастания, поэтому вариант 3 не подходит

Ответ: 4.

Пример V:

Автомат получает на вход два трехзначных числа. По этим числам строится новое число по следующим правилам. Вычисляются три числа – сумма старших разрядов заданных трехзначных чисел, сумма средних разрядов этих чисел , сумма младших разрядов. Полученные три числа записываются друг за другом в порядке убывания (без разделителей).

Пример.

Исходные трехзначные числа: 835 , 196 .

Поразрядные суммы: 9, 12, 11. Результат: 12119

Определите, какое из следующих чисел может быть результатом работы автомата.

1) 151303 2) 161410 3) 191615 4) 121613

Решение:

  • число строится из трех чисел, каждое из которых может быть однозначным (от 0 до 9) или двузначным (от 10 до 9 + 9 = 18)
  • если в числе 6 цифр, значит соединены три двузначных числа; в 1-м числе одно из них записывается как « 03 », что недопустимо (в этом случае правильное число было бы записано как 15133)
  • в третьем числе тоже 6 цифр: три двузначных числа, первое из которых равно 19, чего не может быть (никакие два однозначных числа не могут дать такую сумму)
  • в четвертом числе тоже 6 цифр: три числа 12, 16 и 13 расположены НЕ в порядке убывания , поэтому этот вариант неверен

Ответ: 2 .

Пример VI: Предлагается некоторая операция над двумя произвольными трехзначными десятичными числами: Записывается результат сложения старших разрядов этих чисел.  К нему дописывается результат сложения средних разрядов по такому правилу: если он меньше первой суммы , то полученное число приписывается к первому слева , иначе – справа. Итоговое число получают приписыванием справа к числу, полученному после второго шага, сумму значений младших разрядов исходных чисел. Какое из перечисленных чисел могло быть построено по этому правилу? 1) 141819  2) 171418  3) 141802  4) 171814 Решение: заметим, что сумма двух однозначных чисел – это число от 0 до 18 включительно все предложенные числа шестизначные , поэтому все суммы, из которых составлены числа, должны быть двузначными 1) 141819   2) 171418  3) 141802   4) 171814 Ответ: 4

Пример VI:

Предлагается некоторая операция над двумя произвольными трехзначными десятичными числами:

  • Записывается результат сложения старших разрядов этих чисел.
  • К нему дописывается результат сложения средних разрядов по такому правилу: если он меньше первой суммы , то полученное число приписывается к первому слева , иначесправа.
  • Итоговое число получают приписыванием справа к числу, полученному после второго шага, сумму значений младших разрядов исходных чисел.

Какое из перечисленных чисел могло быть построено по этому правилу?

1) 141819 2) 171418 3) 141802 4) 171814

Решение:

  • заметим, что сумма двух однозначных чисел – это число от 0 до 18 включительно
  • все предложенные числа шестизначные , поэтому все суммы, из которых составлены числа, должны быть двузначными

1) 141819 2) 171418 3) 141802 4) 171814

Ответ: 4

Пример VII : Цепочка из трех бусин, помеченных латинскими буквами, формируется по следующему правилу . В конце цепочки стоит одна из бусин A, B, C. На первом месте – одна из бусин B, D, C, которой нет на третьем месте. В середине – одна из бусин А, C, E, B, не стоящая на первом месте. Какая из перечисленных цепочек создана по этому правилу? 1) CBB   2) EAC    3) BCD    4) BCB Решение ( краткий вариант ): По первому условию : « В конце цепочки стоит одна из бусин A, B, C». Ему не удовлетворяет цепочка BCD, ее можно вычеркнуть:  1) CBB  2) EAC  3)BCD   4) BCB  По второму : « На первом месте – одна из бусин B, D, C, которой нет на третьем месте ». Ему не удовлетворяют цепочки EAC (на первом месте – E) и BCB (на первом и третьем местах стоит буква B), поэтому остается только вариант CBB:  1) CBB  2) EAC   4) BCB  Проверяем третье условие: « В середине – одна из бусин А, C, E, B, не стоящая на первом месте ». Оставшаяся цепочка CBB ему удовлетворяет. Ответ: 1

Пример VII :

Цепочка из трех бусин, помеченных латинскими буквами, формируется по следующему правилу . В конце цепочки стоит одна из бусин A, B, C. На первом месте – одна из бусин B, D, C, которой нет на третьем месте. В середине – одна из бусин А, C, E, B, не стоящая на первом месте.

Какая из перечисленных цепочек создана по этому правилу?

1) CBB 2) EAC 3) BCD 4) BCB

Решение ( краткий вариант ):

  • По первому условию : « В конце цепочки стоит одна из бусин A, B, C». Ему не удовлетворяет цепочка BCD, ее можно вычеркнуть:

1) CBB 2) EAC 3)BCD 4) BCB

  • По второму : « На первом месте – одна из бусин B, D, C, которой нет на третьем месте ». Ему не удовлетворяют цепочки EAC (на первом месте – E) и BCB (на первом и третьем местах стоит буква B), поэтому остается только вариант CBB:

1) CBB 2) EAC 4) BCB

  • Проверяем третье условие: « В середине – одна из бусин А, C, E, B, не стоящая на первом месте ». Оставшаяся цепочка CBB ему удовлетворяет.

Ответ: 1

Пример VIII: Автомат получает на вход четырехзначное число. По этому числу строится новое число по следующим правилам.  1. Складываются первая и вторая, а также третья и четвертая цифры  исходного числа.  2. Полученные два числа записываются друг за другом в порядке возрастания  (без разделителей). Пример. Исходное число: 6531 . Суммы: 6+5 = 11 , 3+1 = 4 . Результат: 411 . Укажите наибольшее число, в результате обработки которого автомат выдаст число 1113 . Решение: 1) Числа (по умолчанию) десятичные. Значит, суммы цифр могут быть в диапазоне от 1 (1+0) до 18 (9+9). 2) Автомат выдал число 1113 . Значит, оно состоит из двух значений сумм,  записанных по возрастанию: 11 и 13 .

Пример VIII:

Автомат получает на вход четырехзначное число. По этому числу строится новое число по следующим правилам.

1. Складываются первая и вторая, а также третья и четвертая цифры исходного числа.

2. Полученные два числа записываются друг за другом в порядке возрастания (без разделителей).

Пример. Исходное число: 6531 . Суммы: 6+5 = 11 , 3+1 = 4 . Результат: 411 .

Укажите наибольшее число, в результате обработки которого автомат выдаст число 1113 .

Решение:

1) Числа (по умолчанию) десятичные. Значит, суммы цифр могут быть в диапазоне от 1 (1+0) до 18 (9+9).

2) Автомат выдал число 1113 . Значит, оно состоит из двух значений сумм, записанных по возрастанию: 11 и 13 .

3) Число 11 может быть суммой цифр: 2+9 , 3+8 , 4+7 или 5+6 . 4). Число 13 может быть суммой цифр: 4+9 , 5+8 , 6+7 . 5). Значит, пары цифр в исходном числе могут быть такими:  одна пара – 29 , 92 , 38 , 83 , 47 , 74 , 56 , 65 и  другая пара – 49 , 94 , 58 , 85 , 67 , 76   (соответствующие цифры могут меняться местами в суммах). 6) Наибольшим является число, в которое входят наибольшие цифры,  причем они по возможности располагаются слева направо по убыванию  (чем старше разряд, тем больше «вес» цифры). Тогда из доступных наборов пар цифр выберем две наибольшие (по одной из каждого набора): 92 и 94   и запишем их по убыванию: 9492 . Ответ: 9492 .

3) Число 11 может быть суммой цифр: 2+9 , 3+8 , 4+7 или 5+6 .

4). Число 13 может быть суммой цифр: 4+9 , 5+8 , 6+7 .

5). Значит, пары цифр в исходном числе могут быть такими: одна пара – 29 , 92 , 38 , 83 , 47 , 74 , 56 , 65 и другая пара – 49 , 94 , 58 , 85 , 67 , 76 (соответствующие цифры могут меняться местами в суммах).

6) Наибольшим является число, в которое входят наибольшие цифры, причем они по возможности располагаются слева направо по убыванию (чем старше разряд, тем больше «вес» цифры). Тогда из доступных наборов пар цифр выберем две наибольшие (по одной из каждого набора): 92 и 94 и запишем их по убыванию: 9492 .

Ответ: 9492 .

Демо – 2016 ege 6_1 На вход алгоритма подаётся натуральное число N . Алгоритм строит по нему новое число R  следующим образом. 1. Строится двоичная запись числа N . 2. К этой записи дописываются справа ещё два разряда по следующему правилу: а) складываются все цифры двоичной записи , и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001; б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2 . Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N ) является двоичной записью искомого числа R . Укажите такое наименьшее число N , для которого результат работы алгоритма больше 125 . В ответе это число запишите в десятичной системе счисления.

Демо – 2016 ege 6_1

На вход алгоритма подаётся натуральное число N . Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N .

2. К этой записи дописываются справа ещё два разряда по следующему правилу:

а) складываются все цифры двоичной записи , и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;

б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2 .

Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N ) является двоичной записью искомого числа R .

Укажите такое наименьшее число N , для которого результат работы алгоритма больше 125 . В ответе это число запишите в десятичной системе счисления.

1. Необходимо указать минимальное число R, которое превышает 125. Поэтому первым действием переведём 126 в двоичную систему счисления. Получим 11111 10 2 2. Обратим внимание, что у нас по очереди добавляются две цифры справа (в конец числа), поэтому просто уберём две цифры с конца, получим: 11111 2 3. Переведём его в десятичную систему и получим N = 2 4 +2 3 +2 2 +2 1 +2 0 =16+8+4+2+1=31 10  Ответ: 31

1. Необходимо указать минимальное число R, которое превышает 125. Поэтому первым действием переведём 126 в двоичную систему счисления.

Получим 11111 10 2

2. Обратим внимание, что у нас по очереди добавляются две цифры справа (в конец числа), поэтому просто уберём две цифры с конца, получим: 11111 2

3. Переведём его в десятичную систему и получим N = 2 4 +2 3 +2 2 +2 1 +2 0 =16+8+4+2+1=31 10

Ответ: 31

Задание 6. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.  1) Строится двоичная запись числа N.  2) К этой записи дописываются справа ещё два разряда по следующему правилу:  а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;  б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2.  Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите минимальное число R , которое превышает 43 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе.

Задание 6. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К этой записи дописываются справа ещё два разряда по следующему правилу: а) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001; б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2. Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.

Укажите минимальное число R , которое превышает 43 и может являться результатом работы алгоритма.

В ответе это число запишите в десятичной системе.

фактически к числу дважды дописывается бит чётности, причем уже после шага «а» у нас всегда получится чётное число единиц, поэтому шаг «б» всегда добавит ноль если в конце двоичной записи числа стоит 0, значит, оно чётное минимальное чётное число, которое превышает 43, это 44, но число, полученное из 44 отбрасыванием последнего нуля в двоичной записи (то есть, делением на 2!), 22 = 10110 2 , содержит нечётное число единиц, что не допускается по условию – после шага «а» число единиц двоичной записи должно быть чётным следующее чётное число, 46, при делении на 2 даёт число 23 = 10111 2, которое содержит чётное число единиц, поэтому оно могло быть получено после шага «а» алгоритма. Ответ: 46.

  • фактически к числу дважды дописывается бит чётности, причем уже после шага «а» у нас всегда получится чётное число единиц, поэтому шаг «б» всегда добавит ноль
  • если в конце двоичной записи числа стоит 0, значит, оно чётное
  • минимальное чётное число, которое превышает 43, это 44, но число, полученное из 44 отбрасыванием последнего нуля в двоичной записи (то есть, делением на 2!), 22 = 10110 2 , содержит нечётное число единиц, что не допускается по условию – после шага «а» число единиц двоичной записи должно быть чётным
  • следующее чётное число, 46, при делении на 2 даёт число 23 = 10111 2, которое содержит чётное число единиц, поэтому оно могло быть получено после шага «а» алгоритма.

Ответ: 46.

Тема:  « Поиск и сортировка информации в базах данных»  Задание А6 ЕГЭ по информатике  Выполнила : учитель информатики МБОУ СОШ №8 г.Новошахтинска Веренцова М.Е .

Тема: « Поиск и сортировка информации в базах данных» Задание А6 ЕГЭ по информатике

Выполнила :

учитель информатики

МБОУ СОШ №8 г.Новошахтинска

Веренцова М.Е .

База данных (БД) -

База данных (БД) —

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

Виды БД: Фактографические: Содержат краткие сведения об описываемых объектах, представленные в строго определенном формате (библиотека, состав учреждения). Документальные  : Содержат обширную информацию самого разного типа: текст, графику, звук, мультимедиа .

Виды БД:

  • Фактографические: Содержат краткие сведения об описываемых объектах, представленные в строго определенном формате (библиотека, состав учреждения).
  • Документальные :

Содержат обширную информацию самого разного типа: текст, графику, звук, мультимедиа .

Определения База данных (БД) – это хранилище данных о некоторой предметной области, организованное в виде специальной структуры.  Важно : данные о некоторой области (не обо всем) упорядоченные данные о некоторой области (не обо всем) упорядоченные Система управления базой данных (СУБД) – это программное обеспечение для работы с БД.  Функции : поиск информации в БД выполнение несложных расчетов вывод отчетов на печать редактирование БД поиск информации в БД выполнение несложных расчетов вывод отчетов на печать редактирование БД Информационная система – это БД + СУБД.

Определения

База данных (БД) – это хранилище данных о некоторой предметной области, организованное в виде специальной структуры.

Важно :

  • данные о некоторой области (не обо всем) упорядоченные
  • данные о некоторой области (не обо всем)
  • упорядоченные

Система управления базой данных (СУБД) – это программное обеспечение для работы с БД.

Функции :

  • поиск информации в БД выполнение несложных расчетов вывод отчетов на печать редактирование БД
  • поиск информации в БД
  • выполнение несложных расчетов
  • вывод отчетов на печать
  • редактирование БД

Информационная система – это БД + СУБД.

= (больше или равно), = (равно), (не равно) • последовательность выполнения логических операций в сложных запросах: сначала выполняются отношения, затем – «И», потом – «ИЛИ» • для изменения порядка выполнения операции используют скобки» width=»640″

Что нужно знать:

• при составлении условия отбора можно использовать знаки отношений , = (больше или равно), = (равно), (не равно)

• последовательность выполнения логических операций в сложных запросах: сначала выполняются отношения, затем – «И», потом – «ИЛИ»

• для изменения порядка выполнения операции используют скобки

1. Ниже представлены две таблицы из базы данных. Каждая строка таблицы 2 содержит информацию о ребёнке и об одном из его родителей. Информация представлена значением поля ID в соответствующей строке таблицы 1. Определите на основании приведённых данных фамилию и инициалы внучки Петровой С.М. 1.Басис В.В. 2.Ильченко Т.В. 3.Павлыш Н.П. 4.Петрова М.Н.

1. Ниже представлены две таблицы из базы данных. Каждая строка таблицы 2 содержит информацию о ребёнке и об одном из его родителей. Информация представлена значением поля ID в соответствующей строке таблицы 1. Определите на основании приведённых данных фамилию и инициалы внучки Петровой С.М.

1.Басис В.В.

2.Ильченко Т.В.

3.Павлыш Н.П.

4.Петрова М.Н.

Решение: Сначала нам нужно найти детей Петровой С.М., а затем найти дочек у этих детей. Определим ID Петровой С.М. по таблице 1: ID Петровой С.М.=82. Находим в таблице 2 строки, где ID_Родителя=82 (найдем детей Петровой С.М.): ID детей: 76, 96:

Решение:

Сначала нам нужно найти детей Петровой С.М., а затем найти дочек у этих детей.

Определим ID Петровой С.М. по таблице 1:

ID Петровой С.М.=82.

Находим в таблице 2 строки, где ID_Родителя=82 (найдем детей Петровой С.М.):

ID детей: 76, 96:

В таблице 1 найдем записи, где ID=76 и 96. Определим пол: Получили, что у Петровой С.М. две дочки: Ильченко Т.В. (ID=76) и Басис В.В. (ID=96) Теперь ищем их детей. Находим в таблице2 строки, где ID_Родителя=76 и 96: В поле

В таблице 1 найдем записи, где ID=76 и 96. Определим пол:

Получили, что у Петровой С.М. две дочки: Ильченко Т.В. (ID=76) и Басис В.В. (ID=96) Теперь ищем их детей.

Находим в таблице2 строки, где ID_Родителя=76 и 96:

В поле «ID_Родителя» нет значения 96, следовательно, У Басис В.В. детей нет.

Определим детей Ильченко Т.В. Их ID равно: 49, 123:

В таблице 1 найдем записи, где ID=49 и 123. Определим пол:

ID=49-м.п., это сын Ильченко Т.В., внук Петровой С.М. ID=123-ж.п., это дочь Ильченко Т.В., внучка Петровой С.М. Ее ФИО - Павлыш Н.П. ФИО выделено в таблице выше. Схематично решение обозначено на рисунке ниже:

ID=49-м.п., это сын Ильченко Т.В., внук Петровой С.М.

ID=123-ж.п., это дочь Ильченко Т.В., внучка Петровой С.М. Ее ФИО — Павлыш Н.П. ФИО выделено в таблице выше.

Схематично решение обозначено на рисунке ниже:

1989) »? 1) 5 2) 6 3) 3 4) 4 Фамилия Соколова Имя Антипов Елена Пол Ярослав ж Дмитриева Год рождения Рост(см) м Коровин 1990 Елена 165 1989 Зубарев Дмитрий Вес (кг) ж 170 Полянко 51 1990 м Роман Яна 53 м 1990 161 1991 178 ж 48 1989 172 60 170 58 49 Ответ: 4)4″ width=»640″

Задачи для тренировки:

Задача №1. Ниже в табличной форме представлен фрагмент базы данных по учащимся 10-х классов:

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

« (Имя = ‘Елена’) ИЛИ (Год рождения 1989) »?

1) 5 2) 6 3) 3 4) 4

Фамилия

Соколова

Имя

Антипов

Елена

Пол

Ярослав

ж

Дмитриева

Год рождения

Рост(см)

м

Коровин

1990

Елена

165

1989

Зубарев

Дмитрий

Вес (кг)

ж

170

Полянко

51

1990

м

Роман

Яна

53

м

1990

161

1991

178

ж

48

1989

172

60

170

58

49

Ответ: 4)4

Задача №2. Из правил соревнования по тяжелой атлетике : Тяжелая атлетика – это прямое соревнование, когда каждый атлет имеет три попытки в рывке и три попытки в толчке. Самый тяжелый вес поднятой штанги в каждом упражнении суммируется в общем зачете. Если спортсмен потерпел неудачу во всех трех попытках в рывке, он может продолжить соревнование в толчке, но уже не сможет занять какое-либо место по сумме 2-х упражнений. Если два спортсмена заканчивают состязание с одинаковым итоговым результатом, высшее место присуждается спортсмену с меньшим весом. Если же вес спортсменов одинаков, преимущество отдается тому, кто первым поднял победный вес. Таблица результатов соревнований по тяжелой атлетике:  Кто победил в рывке в этом соревновании? 1) Викторов М.П. 2) Гордезиани Б.Ш.  3) Михальчук М.С.  4) Шапсугов М.Х. Фамилия И.О. Айвазян Г.С. Вес спортсмена Викторов М.П. 77,1 Взято в рывке Гордезиани Б.Ш. Рывок с попытки 79,1 147,5 Взято в толчке 3 147,5 Михальчук М.С. 78,2 200,0 1 Пай С.В. 150,0 78,2 Толчок с попытки Шапсугов М.Х. 202,5 79,5 2 150,0 2 1 79,1 147,5 3 200,0 1 150,0 202,5 1 3 202,5 2 202,5 1 3 Ответ: 2) Гордезиани Б.Ш.

Задача №2. Из правил соревнования по тяжелой атлетике : Тяжелая атлетика – это прямое соревнование, когда каждый атлет имеет три попытки в рывке и три попытки в толчке. Самый тяжелый вес поднятой штанги в каждом упражнении суммируется в общем зачете. Если спортсмен потерпел неудачу во всех трех попытках в рывке, он может продолжить соревнование в толчке, но уже не сможет занять какое-либо место по сумме 2-х упражнений. Если два спортсмена заканчивают состязание с одинаковым итоговым результатом, высшее место присуждается спортсмену с меньшим весом. Если же вес спортсменов одинаков, преимущество отдается тому, кто первым поднял победный вес. Таблица результатов соревнований по тяжелой атлетике:

Кто победил в рывке в этом соревновании?

1) Викторов М.П. 2) Гордезиани Б.Ш. 3) Михальчук М.С. 4) Шапсугов М.Х.

Фамилия И.О.

Айвазян Г.С.

Вес спортсмена

Викторов М.П.

77,1

Взято в рывке

Гордезиани Б.Ш.

Рывок с попытки

79,1

147,5

Взято в толчке

3

147,5

Михальчук М.С.

78,2

200,0

1

Пай С.В.

150,0

78,2

Толчок с попытки

Шапсугов М.Х.

202,5

79,5

2

150,0

2

1

79,1

147,5

3

200,0

1

150,0

202,5

1

3

202,5

2

202,5

1

3

Ответ: 2) Гордезиани Б.Ш.

Задача №3. Ниже приведены фрагменты таблиц базы данных участников конкурса исполнительского мастерства: Представители скольких стран исполняют Моцарта? 1) 5 2) 2 3) 3  4) 4 Участник Инструмент Альбрехт Бергер флейта Автор произведения скрипка Каладзе Моцарт Клеменс скрипка Паганини фортепиано Паганини Силин Бах Феер скрипка флейта Холево Моцарт Бах скрипка Численко фортепиано Моцарт Яшвили Моцарт флейта Моцарт Страна Участник Германия Силин США Клеменс Россия Холево Грузия Яшвили Германия Бергер Украина Численко Германия Феер Россия Каладзе Германия Альбрехт

Задача №3.

Ниже приведены фрагменты таблиц базы данных участников конкурса исполнительского мастерства:

Представители скольких стран исполняют Моцарта?

1) 5 2) 2 3) 3 4) 4

Участник

Инструмент

Альбрехт

Бергер

флейта

Автор произведения

скрипка

Каладзе

Моцарт

Клеменс

скрипка

Паганини

фортепиано

Паганини

Силин

Бах

Феер

скрипка

флейта

Холево

Моцарт

Бах

скрипка

Численко

фортепиано

Моцарт

Яшвили

Моцарт

флейта

Моцарт

Страна

Участник

Германия

Силин

США

Клеменс

Россия

Холево

Грузия

Яшвили

Германия

Бергер

Украина

Численко

Германия

Феер

Россия

Каладзе

Германия

Альбрехт

Задача №4. База данных службы доставки состоит из двух связанных таблиц: Каков общий вес товаров, которые курьер должен доставить на ул. Цветочная? 1) 1500 грамм 2) 1900 грамм 3) 3750 грамм  4) 1300 грамм Ответ: 2) 1900 грамм

Задача №4. База данных службы доставки состоит из двух связанных таблиц:

Каков общий вес товаров, которые курьер должен доставить на ул. Цветочная?

1) 1500 грамм 2) 1900 грамм 3) 3750 грамм 4) 1300 грамм

Ответ: 2) 1900 грамм

Список источников:  1. Материалы  сайта  http://kpolyakov.spb.ru/   2. Материалы сайта http://infoegehelp.ru

Список источников: 1. Материалы сайта http://kpolyakov.spb.ru/ 2. Материалы сайта http://infoegehelp.ru

Спасибо за внимание!

Спасибо за внимание!

Презентация на тему «Решение задач ЕГЭ типа В6» 11 класс

  • Скачать презентацию (0.14 Мб)


  • 0 загрузок

  • 0.0 оценка

Ваша оценка презентации

Оцените презентацию по шкале от 1 до 5 баллов

  • 1
  • 2
  • 3
  • 4
  • 5

Комментарии

Добавить свой комментарий

Аннотация к презентации

Посмотреть и скачать презентацию по теме «Решение задач ЕГЭ типа В6» по информатике, включающую в себя 12 слайдов. Скачать файл презентации 0.14 Мб. Для учеников 11 класса. Большой выбор учебных powerpoint презентаций по информатике

  • Формат

    pptx (powerpoint)

  • Количество слайдов

    12

  • Аудитория

  • Слова

  • Конспект

    Отсутствует

Содержание

  • Презентация: Решение задач ЕГЭ типа В6

    Слайд 1

    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©
    Рекурсивные алгоритмы.
    В6

    Разбор задач ЕГЭ

  • Слайд 2

    Задача 1.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Последовательность чисел Фибоначчи задается рекуррентным соотношением:
    F(1) = 1
    F(2) = 1
    F(n) = F(n–2) + F(n–1), при n >2, где n – натуральное число.
    Чему равно девятое число в последовательности Фибоначчи?
    В ответе запишите только натуральное число.
    Решение.
    F(3) = F(1) + F(2) = 2,
    F(4) = F(2) + F(3) = 3,
    F(5) = F(3) + F(4) = 5,
    F(6) = F(4) + F(5) = 8,
    F(7) = F(5) + F(6) = 13,
    F(8) = F(6) + F(7) = 21,
    F(9) = F(7) + F(8) = 34.
    Ответ 34

  • Слайд 3

    Задача 1.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Решение.

    Условие k

  • Слайд 4

    Задача 2.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Дан рекурсивный алгоритм:
    procedure F(n: integer);
    begin
    writeln(‘*’);
    ifn > 0 then
    Begin
    F(n-2);
    F(ndiv 2)
    end;
    end;
    Сколько символов «звездочка» будет напечатано на экране при выполнении вызова F(7)?

  • Слайд 5

    Задача 2.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Решение1.
    сначала определим рекуррентную формулу; обозначим через G(n) количество звездочек, которые выводит программа при вызове F(n)
    из программы видим, что
    G(n) = 1 при всех n 0
    вспомним, что ndiv 2 – это частное от деления n на 2
    по этим формулам заполняем таблицу, начиная с нуля:
    G(0) = 1
    G(1) = 1 + G(-1) + G(0) = 1 + 1 + 1 = 3
    G(2) = 1 + G(0) + G(1) = 1 + 1 + 3 = 5
    G(3) = 1 + G(1) + G(1) = 1 + 3 + 3 = 7
    G(4) = 1 + G(2) + G(2) = 1 + 5 + 5 = 11
    G(5) = 1 + G(3) + G(2) = 1 + 7 + 5 = 13
    G(6) = 1 + G(4) + G(3) = 1 + 11 + 7 = 19
    G(7) = 1 + G(5) + G(3) = 1 + 13 + 7 = 21

    Ответ 21

  • Слайд 6

    Задача 2.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Решение2(«с конца»).
    пп. 1-3 – как в варианте 1
    по формулам G(7) = 1+ G(5) + G(3), поэтому нужно найти G(5) и G(3)
    G(5) = 1 + G(3) + G(2), нужны G(3) и G(2)
    G(3) = 1 + G(1) + G(1), нужно G(1)
    G(2) = 1 + G(0) + G(1) = 2 + G(1), нужно G(1)
    G(1) = 1 + G(-1) + G(0) = 1 + 1 + 1 = 3
    теперь идем «обратным ходом»:
    G(2) = 2 + G(1) = 5
    G(3) = 1 + G(1) + G(1) = 1 + 3 + 3 = 7
    G(5) = 1 + G(3) + G(2) = 1 + 7 + 5 = 13
    G(7) = 1 + G(5) + G(3) = 1 + 13 + 7 = 21

    Ответ 21

  • Слайд 7

    G(0) выведет одну звёздочку «*»,
    G(-1)выведет одну звёздочку «*», отметим все звездочки (зелёным) и посчитаем их количество, получим ответ: 21.

    Задача 2.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Решение3(построение графа).

    Ответ 21

  • Слайд 8

    Вопросы.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Дан рекурсивный алгоритм:
    procedure F(n: integer);
    begin
    writeln(‘*’);
    if n > 0 then begin
    writeln(‘*’);
    F(n-2);
    F(n div 2);
    end;
    end;
    Сколько символов «звездочка» будет напечатано на экране при выполнении вызова F(7)?

    Ответ 31

  • Слайд 9

    Вопросы.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Дан рекурсивный алгоритм:
    procedure f(n:integer);
    begin
    writeln(n);
    if n>0 then
    begin
    f(n-2);
    f(n-3);
    end;
    end;
    Найти сумму всех чисел которые выведет программа при вызове F(7)?

    Ответ 17

  • Слайд 10

    Вопросы.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Алгоритм вычисления значения функции F(n) и G(n), где n – натуральное число, задан следующими соотношениями:
    F(1) = 1
    F(n) = 2 * G(n–1) + 5 * n, при n >1
    G(1) = 1
    G(n) = F(n–1) + 2 * n, при n >1
    Чему равно значение функции F(4) + G(4)?
    В ответе запишите только натуральное число.

    Ответ 89

  • Слайд 11

    Вопросы.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    Последовательность чисел трибоначчи задается рекуррентным соотношением:
    F(1) = 0
    F(2) = 1
    F(3) = 1
    F(n) = F(n–3) + F(n–2) + F(n–1), при n >3, где n – натуральное число.
    Чему равно одиннадцатое число в последовательности трибоначчи?
    В ответе запишите только натуральное число.

    Ответ 149

  • Слайд 12

    Вопросы.
    ИНФОРМАТИКА
    2014г. Кирсанов Илья Андреевич ©

    F(1) = 1,
    F(2) = 3,
    F(3) = 6,
    F(4) = 10,
    ….
    F(40) =?
    Что это за функция? Как можно её представить в виде рекуррентного соотношения?

    Ответ 820
    Ответ Это сумма n членов арифметической прогрессии. F(n)=n+F(n-1)

Посмотреть все слайды

Сообщить об ошибке

Похожие презентации

Презентация: Решение заданий ГИА по информатике

Презентация: Задачи по информатике

Презентация: Рекурсивное программирование

Презентация: «Чётные и нечётные функции»

Презентация: Функции

Презентация: Решение задач ЕГЭ типа В1

Презентация: Сложные задания 2014 ЕГЭ по информатике

Презентация: Решение задач ЕГЭ типа В5

Презентация: Рекурсивные функции

Спасибо, что оценили презентацию.

Мы будем благодарны если вы поможете сделать сайт лучше и оставите отзыв или предложение по улучшению.

Добавить отзыв о сайте

Слайд 1
Разбор задач ЕГЭ по информатике
по теме «Алгоритмы»
(задачи №6,

11, 14)

Учитель информатики МБОУ СОШ № 7
Рожкова С.В.

Г. Георгиевск
31.03.2017г.
Разбор задач ЕГЭ по информатике по теме «Алгоритмы» (задачи №6, 11,


Слайд 2
Разбор 6 задания
Задание базового уровня сложности.
Примерное время выполнения задания

4 минуты.
Проверяемые элементы содержания: формальное исполнение алгоритма, записанного на естественном языке или умение создавать линейный алгоритм для формального исполнителя с ограниченным набором команд.
Элементы содержания, проверяемые на ЕГЭ: Формализация понятия алгоритма. Построение алгоритмов и практические вычисления.

Разбор 6 задания Задание базового уровня сложности.Примерное время выполнения задания 4


Слайд 3
Пример
Автомат получает на вход трёхзначное число. По этому числу

строится новое число по следующим правилам.
1. Складываются первая и вторая, а также вторая и третья цифры исходного числа.
2. Полученные два числа записываются друг за другом в порядке убывания (без разделителей).
Пример. Исходное число: 348. Суммы: 3 + 4 = 7; 4 + 8 = 12. Результат: 127.
Укажите наименьшее число, в результате обработки которого автомат выдаст число 1711.
Ответ: ________

Пример Автомат получает на вход трёхзначное число. По этому числу строится


Слайд 4
Решение
Очевидно, что результат 1711 получился из двух чисел 17 и

11.
Теперь находим наименьшее трехзначное число.
Так как ищем наименьшее число, то и начинать будем с наименьшей суммы (11), чтобы получить наименьшую первую цифру.
11 – 9 = 2. Таким образом, число 11 получается как сумма 2 и 9: 2 + 9 = 11.
Число 17 получается как сумма 9 и 8: 9 + 8 = 17.
Теперь составляем искомое наименьшее трехзначное число и получаем 298.
Проверяем 2 + 9 = 11 и 9 + 8 = 17
Ответ: 298

РешениеОчевидно, что результат 1711 получился из двух чисел 17 и 11.Теперь


Слайд 5
Разбор 11 задания
Это задание базового уровня сложности. Примерное время

выполнения задания 5 минут.
Проверяемые элементы содержания: умение исполнить рекурсивный алгоритм.
Элементы содержания, проверяемые на ЕГЭ: индуктивное определение объектов.

Разбор 11 задания Это задание базового уровня сложности. Примерное время выполнения


Слайд 6
Пример
Ниже на пяти языках программирования записан рекурсивный алгоритм F.

Чему равна сумма

напечатанных на экране чисел при выполнении вызова F(10)?
Ответ: ________

ПримерНиже на пяти языках программирования записан рекурсивный алгоритм F.Чему равна сумма напечатанных


Слайд 7
Решение

procedure F(n: integer);
begin
if n > 2 then begin
writeln(n);
F(n – 3);
F(n

– 4)
end
end;
После каждого вызова на экран выводится значение параметра функции, если выполняется условие n>2.

Решение procedure F(n: integer); begin if n > 2 then begin


Слайд 8
Запишем все вызовы в виде дерева

Запишем все вызовы в виде дерева


Слайд 9
Складываем все значения параметров, которые больше 2
Получаем ответ: 10+7+4+3+6+3=33
Ответ: 33

Складываем все значения параметров, которые больше 2Получаем ответ: 10+7+4+3+6+3=33Ответ: 33


Слайд 10
Разбор 14 задания
Это задание повышенного уровня сложности. Примерное время

выполнения задания 6 минут.
Проверяемые элементы содержания: умение исполнить алгоритм для конкретного исполнителя с фиксированным набором команд.
Элементы содержания, проверяемые на ЕГЭ: Вычислимость. Эквивалентность алгоритмических моделей.

Разбор 14 задания Это задание повышенного уровня сложности. Примерное время выполнения


Слайд 11
Пример
Исполнитель Редактор получает на вход строку цифр и преобразовывает её.

Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды
заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

ПримерИсполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор


Слайд 12
Цикл
ПОКА условие
последовательность команд

КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Цикл  ПОКА условие    последовательность команд  КОНЕЦ


Слайд 13
Какая строка получится в результате применения приведённой ниже программы к

строке, состоящей из 69 идущих подряд цифр 8? В ответе запишите полученную строку.
НАЧАЛО
ПОКА нашлось (3333) ИЛИ нашлось (8888)
ЕСЛИ нашлось (3333)
ТО заменить (3333, 88)
ИНАЧЕ заменить (8888, 33)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Ответ: ________

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


Слайд 14
Решение
Программа будет работать до тех пор, пока в строке есть

цепочка цифр 3333 или цепочка цифр 8888.
Если в строке встречается 3333, то заменяем на 88.
Если в строке нет цепочки 3333, но встречается цепочка 8888, то заменяем ее на 33.
Наша строка состоит из 69 идущих подряд цифр 8.
1) меняем первые 8888 на 33 и получаем 33 и (65 цифр 8)
2) меняем следующие 8888 на 33 и получаем 3333 и (61 цифру 8)
3) теперь у нас появилась цепочка 3333, поэтому мы должны заменить ее на 88 получаем строку состоящую из 63 цифр 8

РешениеПрограмма будет работать до тех пор, пока в строке есть цепочка


Слайд 15
Анализируем что произошло!
А получилось следующее, за 3 шага мы заменили

8 восьмерок на 2 (или удалили 6 восьмерок из нашей строки).
Становится понятно, что за каждые 3 шага мы будем удалять по 6 восьмерок.
63-6=57 57-6=51
51-6=45 45-6=39
39-6=33 33-6=27
27-6=21 21-6=15
15-6=9 9-6=3
останется строка состоящая из 3 идущих подряд 8 (888)
Ответ: 888

Анализируем что произошло!А получилось следующее, за 3 шага мы заменили 8


Слайд 16
Спасибо
за внимание!

Спасибо за внимание!


1. Определите, при каком наименьшем (наибольшее) введённом значении переменной s программа выведет число 128.

  s = int(input())
 n = 1
 while s > 43:
   s = s — 8
   n = n * 2
 print(n)

Решение:

s0 = 43
while True:
 n =
1
 
s = s0
 
while s > 43:
   s = s —
8
   
n = n * 2
 
if n == 128: print(s0)
 s0 + =
1

вывод

92

93

94

95

96

97

98

99

Ответ:  92 наименьшее, 99 – наибольшее

2. При каком наибольшем введенном числе d после выполнения программы будет напечатано 55?

  d = int(input())
 n = 0
 s = 0
 while s <= 365:
   s = s + d
   n = n + 5
 print(n)

Решение:

d0 = 366
while True:
 d = d0
 n =
0
 
s = 0
 
while s <= 365:
   s = s + d
   n = n +
5
 
if n == 55: print(d)
 d0 — =
1

Вывод:

36

35

34

Ответ:  36

3. Определите, при каком наименьшем введённом значении переменной s программа выведет число 67.

  s = int(input())
 n = 105
 while n > s:
   s = s + 3
   n = n — 2
 print(n)

Решение:

s0 = 105
while True:
s = s0
n =
105
while n > s:
   s = s +
3
   
n = n — 2
if n == 67: print(s0)
s0 — =
1

вывод:

14    13    12   11   10

Ответ: 10

4. Определите, при каком наибольшем введённом значении переменной s программа выведет число 31.

  s = int(input())
 n = 10
 while s > 0:
   s = s — 15
   n = n + 3
 print(n)

Решение:

s0 = 0
while True:
  s = s0
  n =
10
 
while s > 0:
     s = s —
15
     
n = n + 3
 
if n == 31: print(s0)
s0+=
1

Вывод:

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

Ответ 105

  1. При каком наибольшем введенном числе d после выполнения программы будет напечатано 150?

d = int(input())

n = 3

s = 38

while s <= 1200:

  s = s + d

  n = n + 7

print(n)

Решение:

d0 = 1201
while True:
 d = d0
 n =
3
 
s = 38
 
while s <= 1200:
   s = s + d0
   n = n +
7
 
if n == 150: print(d)
d0-=
1

вывод:

58

57

56

Ответ: 58

  1. Определите, при каком наибольшем введённом значении переменной s программа выведет число, не более 100.

s = int(input())

n = 80

while s + n < 160:

   s = s + 15

   n = n — 10

print(s)

Решение:

s0 = 0
while True:
 n =
80
 
s = s0
 
while s+n < 160:
   s = s +
15
   
n = n — 10
 
if s <= 100: print(s0)
 s0+=
1

вывод

80

81

82

.

.

.

98

99

100

Ответ: 100

Нас уже 108726 человек!

Презентация "Подготовка к ЕГЭ (задание А6) по информатике"

Скриншоты:

  • Теги:
  • экзамены

Мария Владимировна, извините за мои вопросы, но … Как Вы используете эту презентацию? На интерактивной доске во время урока? Так на первых 27 слайдах ребятам прочитать ничего не удастся, К тому же, крайне небрежная «нарезка». Если нет, то зачем формат презентации? Как ученик может проверить ответы на задачи?

Или, возможно, это пример «Как нельзя создавать презентации для урока»?

Присоединяюсь к вопросам Наталии Болеславовны и добавляю свои комментарии:

Если это домашние задания, то нарушены все нормы СанПиНа по объему заданий и продолжительности выполнения.

Да стоит добавить, забыла указать.

Уже несколько лет как изменена нумерация заданий в ЕГЭ.

Кроме этого, отсутствуют задания с вариантами ответов (тип А)

Королева Елена Анатольевна,если вы откроете сайт решу ЕГЭ, то увидите, что там также есть задания и с вариантами ответа. Почему их нельзя использовать в качестве повторения?

Королева Елена Анатольевна,тему разбирать можно не весь урок, а задания в презентации распределить на несколько уроков

Мария Владимировна, ничего не имею против сайта «решу ЕГЭ», но его автор — учитель информатики (Дмитрий Гущин), возможно бывший, т.к. два года назад «шумела» история с его увольнением. Ссылаться и ориентироваться на информацию с сайтов «вторичных» источников — не стоит. Мы можем ориентироваться при подготовке учащихся к государственной аттестации только на «первоисточники» — последние спецификации, кодификаторы и демоверсии, которые нам предоставляет ФИПИ,

Пользователи также скачали:

Рекомендации по выполнению:
Циклы:

«Задания этой линии можно решать двумя способами:
1) составить на черновике таблицу переменных, произвести пооператорное выполнение программы с записью изменяющихся значений в таблицу(трассировка);
2) определить количество итераций цикла и на основе этого вычислить результат.
Второй способ более быстрый, но он требует умения анализировать текст простой программы без её выполнения»

Типичные ошибки и рекомендации по их предотвращению:

«Экзаменуемый не учитывает последнюю итерацию цикла или, напротив, добавляет лишнюю. Это может быть связано с непониманием того, как обрабатывается условие цикла, или с ошибочной обработкой строгого неравенства как нестрогого или наоборот»

Массивы

«Рекомендуемый способ выполнения этого задания – трассировка»

Типичные ошибки и рекомендации по их предотвращению:

«Часто бывает, что при выполнении программы внутри итерации цикла изменяется значение не только текущего i-го элемента, но и следующего i+1-го, поэтому в следующей итерации текущий элемент будет иметь не то значение, что перед выполнением программы. Это нужно внимательно отслеживать, чтобы избежать ошибок. Кроме того, в определённых типах заданий может более сложно изменяться индекс текущего элемента, тут тоже требуется аккуратность и внимательность»

ФГБНУ «Федеральный институт педагогических измерений»

В 6 задании ЕГЭ используются алгоритмические структуры с циклами. Рассмотрим их на примере языка Паскаль.

  • Цикл for со счетчиком
  • Работа с одномерными массивами
  • Работа с двумерными массивами (матрицами)
    • Понятие главной диагонали матрицы: элементы матрицы главной диагонали имеют совпадающие номера строки и столбца:
    • главная диагональ матрицы
      т.е. формула элементов главной диагонали:

      i = j

      где i и j — счетчики циклов (А[i,j])

    • если у элементов матрицы номер строки меньше номера столбца (i  <  j), то они расположены выше главной диагонали:
    • элементы выше главной диагонали

    • если у элементов матрицы номер строки больше номера столбца (i  >  j), то они расположены ниже главной диагонали:
    • элементы ниже главной диагонали

    • побочная диагональ матрицы имеет формулу:
    • n = i + j — 1

      или

      j = n — i + 1

      где n — общее количество элементов квадратной матрицы, i и j — счетчики циклов строк и столбцов.

    Решение заданий 6 ЕГЭ по информатике для 2021

    Задание демонстрационного варианта 2022 года ФИПИ
    Плейлист видеоразборов задания на YouTube:


    6_1 new: Определите, при каком наименьшем введённом значении переменной s программа выведет число 256:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var k,n,p,l,s,x:integer;
    var s, n: integer;
    begin
      readln (s);
      n := 1;
      while s <=45 do begin
        s := s + 4;
        n := n * 2
      end;
      writeln(n)
    end.
    Бейсик:

    Python:

    s = int(input())
    n = 1
    while s <= 45:
      s = s + 4
      n = n * 2
    print( n )
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s,  n = 1;
    cin >> s;
    while( s <= 45 ) {
      s = s + 4;
      n = n * 2;
      }
    cout << n;
    }

    Типовые задания для тренировки

      
    📹 Видеорешение подобного 6 задания на Python:

    📹 здесь
    📹 Видеорешение на RuTube здесь
    ✍ Решение:

      ✎ Способ 1 (программный):
      Pascalabc.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      begin
        var s1 := 1;
        while true do // внешний цикл, бесконечный
        begin
          var s := s1;
          // --- код из условия задания --- //
          var n := 1;
          while s <= 45 do // внутренний цикл из задания
          begin
            s := s + 4;
            n := n * 2;
          end;
          // --- конец кода из условия задания --- //
          if n = 256 then // если найдено, то выводим соответствующее s
          begin 
              print(s1); 
              break;  // выход из бесконечного цикла 
          end;
          s1 := s1 + 1; // 
        end;
      end.

      Пояснение:

    • Поскольку в цикле s увеличивается, а по условию задания следует найти наименьшее значение s, то можно начать с s=1, постоянно увеличивая значение s на единицу во внешнем цикле.
    • Важно для внешнего цикла использовать другую переменную, т.к. во внутреннем цикле переменная s меняется, а нам следует каждый шаг внешнего цикла сохранить предыдущее значение s, увеличив его всего на 1. Используем переменную S1 для этих целей.
    • Бейсик:

      Python:

      s1 = 1
      while True:  # внешний цикл, бесконечный
          s = s1
          # --- код из условия задания --- 
          n = 1
          while s <= 45:
              s = s + 4
              n = n * 2
          # --- конец кода из условия задания --- 
          if n == 256:
              print(s1)
              break
          s1 += 1
      С++:

    Ответ: 14

    6_2 new: Определите, при каком наибольшем введённом значении переменной s программа выведет число 96:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var s, n: integer;
    begin
      readln (s);
      n := 3;
      while s <= 51 do begin
        s := s + 7;
        n := n * 2
      end;
      writeln(n)
    end.
    Бейсик:

    Python:

    s = int(input())
    n = 3
    while s <= 51:
      s = s + 7
      n = n * 2
    print( n )
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s,  n = 3;
    cin >> s;
    while( s <= 51 ) {
      s = s + 7;
      n = n * 2;
      }
    cout << n;
    }

    Типовые задания для тренировки

    📹 Видеорешение:

    📹 здесь
    📹 Видеорешение на RuTube здесь

    ✍ Решение:

      ✎ Способ 1 (программный):
      Pascalabc.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      begin
        var s1 := 50;
        while true do // внешний цикл, бесконечный
        begin
          var s := s1;
          // --- код из условия задания --- //
          var n := 3;
          while s <= 51 do // внутренний цикл из задания
          begin
            s := s + 7;
            n := n * 2;
          end;
          // --- конец кода из условия задания --- //
          if n = 96 then // если найдено, то выводим соответствующее s
          begin 
              print(s1); 
              break;  // выход из бесконечного цикла 
          end;
          s1 := s1 - 1; // 
        end;
      end.

      Пояснение:

    • Поскольку в цикле s увеличивается, и цикл работает пока s<=50, а по условию следует найти наибольшее значение s, то можно начать с s = 50, постоянно уменьшая значение s на единицу во внешнем цикле.
    • Важно для внешнего цикла использовать другую переменную, т.к. во внутреннем цикле переменная s меняется, а нам следует каждый шаг внешнего цикла сохранить предыдущее значение s, уменьшив его всего на 1. Используем переменную S1 для этих целей.
    • Бейсик:

      Python:

      s1 = 50
      while True:  # внешний цикл, бесконечный
          s = s1
          # --- код из условия задания --- 
          n = 3
          while s <= 51:
              s = s + 7
              n = n * 2
          # --- конец кода из условия задания --- 
          if n == 96:
              print(s1)
              break
          s1 -= 1
      С++:

    Ответ: 23

    6_3 new::

    Сколько существует различных значений d, оканчивающихся на 8, при вводе которых эта приведенная программа выведет число 50?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var S, N, d: integer;
    begin
      readln(d);
      S := 15;
      N := 10;
      while S <= 2400 do begin
        S := S + d;
        N := N + 5;
      end;
      writeln(N);
    end.
    Бейсик:

    Python:

    d = int(input())
    S = 15
    N = 10
    while S <= 2400:
      S = S + d
      N = N + 5
    print(N)
    С++:

    Типовые задания для тренировки

    ✍ Решение:

      ✎ Способ 1 (программный):
      Pascalabc.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      
      begin
        var counter:=0;
        var d1:=1;
        while true do
        begin
          var d := d1;
          // из условия задачи 
          var s := 15;
          var n := 10;
          while s <= 2400 do
          begin
            s := s + d;
            n:=n + 5;
          end;
          // проверка условий: увеличение счетчика
          if (d mod 10 = 8) and (n = 50) then
          begin
            counter+=1;;
          end;
          d1 += 1;
          // выход из бесконечного цикла
          if d1 = 2400 then break;
        end;
      print (counter)
      end.
    • Вывод:
    • 4
      Бейсик:

      Python:

      counter = 0
      d1 = 1
      while True:
          s = 15
          n = 10    
          d = d1
          # --- код из условия задания --- 
          while s <= 2400:
              s = s + d
              n = n + 5
          if d%10==8 and n==50:
              counter+=1
          d1=d1+1
          if d1 == 2400:
              break
      print (counter)
      С++:

    Ответ: 4

    6_4 new:

    Определите наименьшее и наибольшее введённое значение переменной s, при котором программа выведет число 210. В ответ запишите оба числа в порядке убывания без пробелов и других разделителей

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var s, n: integer;
    begin
      readln(s);
      n := 600;
      while n > s do begin
        s := s + 3;
        n := n - 6
      end;
      writeln(n)
    end.
    Бейсик:

    Python:

    s = int(input())
    n = 600
    while n > s:
      s = s + 3
      n = n - 6
    print(n)
    С++:

    ✍ Решение:

      ✎ Способ 1 (программный):

      PascalAbc.NET:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      begin
        var s_ := -100;
        while true do
        begin
          var n := 600;
          var s := s_;
          while n > s do
          begin
            s := s + 3;
            n := n - 6
          end;
          if n = 210 then
            print(s_); 
          s_ += 1;
        if s > 1000 then
          break;
        end;
      end.
    • Вывод:
    • 15 16 17 18 19 20 21 22 23
    • Записываем в порядке убывания:
    • 2315

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      
      s_ = -100
      while True:  # внешний цикл, бесконечный
          s = s_
          n = 600
          # --- код из условия задания --- 
          while n > s:
              s = s + 3
              n = n - 6
          # --- конец кода из условия задания --- 
          if  n == 210:
              print(s_)
          s_ += 1
          if s > 1000:
              break

    Ответ: 2315

    6_5 new:

    Определите, при каком наибольшем положительном введённом значении переменной s программа выведет трёхзначное число.

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var s, n: integer;
    begin
      readln (s);
      n := 200;
      while s div n >= 2 do
      begin
        s := s + 5;
        n := n + 5
      end;
      writeln(s)
    end.
    Бейсик:

    Python:

    s = int(input())
    n = 200
    while s // n >= 2:
       s = s + 5
       n = n + 5
    print(s)
    С++:

    ✍ Решение:

      ✎ Способ 1 (программный):

      PascalAbc.NET:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      begin
        var s_ := 1000;
        while true do
        begin
          var n := 200;
          var s := s_;
          while s div n >= 2 do
          begin
            s := s + 5;
            n := n + 5
          end;
          if (s > 99) and (s<1000) then
          begin
            print(s_); break; 
          end;
          s_ -= 1;
        end;
      end.

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      s_ = 1000
      while True:  # внешний цикл, бесконечный
          s = s_
          n = 200
          # --- код из условия задания --- 
          while s // n >=2:
              s = s + 5
              n = n + 5
          # --- конец кода из условия задания --- 
          if  99 < s < 1000:
              print(s_)
              break
          s_ -= 1

    Ответ: 699


    6_6 new:

    Получив на вход некоторое натуральное число X, этот алгоритм печатает одно число. Сколько существует чисел Х, для которых алгоритм напечатает число на отрезке [2;500]?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var x, s, n: integer;
    begin
      readln(x);
      s := 6 * (x div 15);
      n := 1;
      while s < 300 do begin
        s := s + 18;
        n := n * 2
      end;
      writeln(n)
    end.
    Бейсик:

    Python:

    x = int(input())
    s = 6 * (x // 15)
    n = 1
    while s < 300:
      s = s + 18
      n = n * 2
    print(n)
    С++:

    ✍ Решение:

      ✎ Способ 1 (программный):

      PascalAbc.NET:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      
      begin
        var x := 1;
        var count := 0;
        while true do
        begin
          var s := 6 * (x div 15);
          var n := 1;
          while s < 300 do 
          begin
            s := s + 18;
            n := n * 2
          end;
          if (n >= 2) and (n <= 500) then
            count += 1;
          x += 1;
          if x > 1000 then
            break;
        end;
        print(count)
      end.

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      
      x = 1
      count = 0
      while True:  # внешний цикл, бесконечный
          s = 6 * (x // 15)
          n = 1
          while s <300:
              s = s + 18
              n = n * 2
          # --- конец кода из условия задания --- 
          if  1 < n < 501:
              count+=1
          x += 1
          if x > 1000:
              break
      print (count)

    Ответ: 360


    Решения подобных заданий прошлых лет

    Алгоритмы с циклами:

    Определить, какое число пропущено

    6_14:

    Сопоставьте формулу:

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

    Определите, где и какое число в формуле пропущено?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    var k,n,p,l,s,x:integer;
    begin
      writeln('введите n='); readln(n);
      writeln('введите x='); readln(x);
      s:=0;
      p:=1;
      l:=x;
      For k:=1 to n do 
        begin
          p:=p * k;
          s:=s + 3*l/p;
          l:=l*x;
        end;
      writeln('S=',S:5:2);
    end.
    Бейсик:

    INPUT "введите n=", n
    INPUT "введите x=", x
    s=0: p=1
    l=x
    FOR k:=1 to n  
          p = p * k: s = s + 3*l/p
          l = l*x
    NEXT k
    PRINT "S=",S
    END
    Python:

    n = int(input('введите n='))
    x = int(input('введите x='))
    s=0
    p=1
    l=x
    For k in range (1,n+1): 
          p*= k
          s+=3*l/p
          l*=x
    print('S=',S)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int k,n,p,s,x;
    printf("введите n="); scanf("%d",&n);
    printf("введите x="); scanf("%d",&x);
    l=x;
    for (k=1,s=0,p=1;k<=n;k++) {
      p*=k;
      s+=3*l/p;
      l*=x;
    }
    printf("s=%d",s);
    }

    ✍ Решение:

    • Рассмотрим формулу:

    • Фактически она обозначает: сумма xk/ k! для всех k, начиная от 1 до n.

    • Рассмотрим алгоритм программы:
    • Основные действия происходят в цикле, в котором k изменяется от 1 до n (n вводится в начале программы):
    • For k:=1 to n do
    • В следующей строке кода происходит вычисление факториала числа k (в первой итерации цикла 1!, во второй итерации 2! и т.д.):
    • p:=p * k;
    • Следующее выражение служит для подсчета x в степени k (переменной l в начале программы присваивается значение введенного x):
    • l:=l*x;
    • Основная же формула сумматора заключена в строке:
    • s:=s + 3*l/p;
    • Видим, что в исходной заданной формуле в числителе отсутствует число 3.
    • Т.е. исходная формула должна была выглядеть так:

    Ответ: 3


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

    6_3:

    Определите, что будет напечатано в результате работы следующего фрагмента программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var k,s:integer;
    begin
      s:=512;
      k:=0;
      while s < 2048 do
        begin
          s:=s + 64;
          k:=k + 1;
         end;
      write(k);
    end.
    Бейсик:

    DIM S, K AS INTEGER
    S = 512
    K = 0
    WHILE S < 2048
      S = S + 64
      K = K + 1
    WEND
    PRINT K
    Python:

    s = 512
    k = 0
    while s < 2048:
      s = s + 64
      k = k + 1
    print(k)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 512, k = 0;
    while (s < 2048) {
      s = s + 64;
      k = k + 1;
    }
    cout << k << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    ✍ Решение:

    Рассмотрим алгоритм программы:

    • В цикле k увеличивается на единицу (k — счетчик). Соответственно, k будет равно количеству итераций (повторов) цикла. После завершения работы цикла значение k выводится на экран, т.е. это и есть результат работы программы.
    • В цикле s увеличивается на 64. Для простоты расчетов возьмем начальное s не 512, а 0. Тогда условие цикла поменяется на s < 1536 (2048 — 512 = 1536):
    s:=0;
    k:=0;
    while s < 1536 do
       begin
       ...
    
    • Цикл будет выполняться пока s<1536, а s увеличивается на 64, отсюда следует что итераций цикла (шагов) будет:
    1536 / 64 = 24
    • Соответственно, k = 24.

    Результат: 24

    Для более детального разбора предлагаем посмотреть видео решения (теоретическое) данного 6 задания ЕГЭ по информатике:

    📹 здесь
    📹 Видеорешение на RuTube здесь (теоретическое решение)


    6_2:

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

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var s, i: integer;
    begin
    i := 1;
    s := 105;
    while s > 5 do
    begin
      s := s - 2;
      i := i + 1
    end;
    writeln(i)
    end.
    Бейсик:

    DIM S, I AS INTEGER
    I = 1
    S = 105
    WHILE S > 5
      S = S - 2
      I = I + 1
    WEND
    PRINT I
    Python:

    i = 1
    s = 105
    while s > 5:
      s = s - 2
      i = i + 1
    print(i)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 105, i = 1;
    while (s > 5) {
      s = s - 2;
      i = i + 1;
    }
    cout << i << endl;
    return 0;
    }

    ✍ Решение:

    • Рассмотрим алгоритм. Цикл зависит от переменной s, которая уменьшается каждую итерацию цикла на 2.
    • В цикле также присутствует счетчик — переменная i, которая увеличится на единицу ровно столько раз, сколько итераций (проходов) цикла. Т.е. в результате выполнения программы распечатается значение, равное количеству итераций цикла.
    • Поскольку условие цикла зависит от s, нам необходимо посчитать, сколько раз сможет s уменьшиться на 2 в цикле. Для удобства подсчета изменим условие цикла на while s > 0; так как мы s уменьшили на 5, соответственно, изменим и 4-ю строку на s:=100 (105-5):
    ...
    s := 100;
    while s > 0 do
    begin
    ...
    
    • Для того чтобы посчитать, сколько раз выполнится цикл, необходимо 100 разделить на 2, т.к. s каждый шаг цикла уменьшается на 2:
      100 / 2 = 50 -> количество итераций цикла
      
    • В 3-й строке видим, что начальным значением i является 1, т.е. в первую итерацию цикла i = 2. Значит, нам необходимо к результату (50) прибавить 1.
    • 50 + 1 = 51
    • Это значение и будет выведено на экран.

    Результат: 51


    6_1: 6 (8) задание. Демоверсия ЕГЭ 2018 информатика:

    Запишите число, которое будет напечатано в результате выполнения следующей программы.
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var s, n: integer;
    begin
    s := 260;
    n := 0;
    while s > 0 do
    begin
      s := s - 15;
      n := n + 2
    end;
    writeln(n)
    end.
    Бейсик:

    DIM S, N AS INTEGER
    S = 260
    N = 0
    WHILE S > 0
      S = S - 15
      N = N + 2
    WEND
    PRINT N
    Python:

    s = 260
    n = 0
    while s > 0:
      s = s - 15
      n = n + 2
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 260, n = 0;
    while (s > 0) {
      s = s - 15;
      n = n + 2;
    }
    cout << n << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    ✍ Решение:

      Рассмотрим алгоритм:

    • Цикл зависит от значения переменной s, которая изначально равна 260. В цикле переменная s постоянно меняет свое значение, уменьшаясь на 15.
    • Цикл завершит свою работу когда s <= 0. Значит, необходимо посчитать сколько чисел 15 «войдет» в число 260, иными словами:
    260 / 15 ~ 17,333...
    • Эта цифра должна соответствовать количеству шагов (итераций) цикла. Так как условие цикла строгое — s > 0, то увеличим полученное число на единицу:
    17 + 1 = 18 итераций цикла
    
    Проверим:
    17 * 15 = 255  (< 260)
    18 * 15 = 270 (> 260)
    
    • Проверим на более простом примере. Допустим, изначально s=32. Два прохождения цикла даст нам s = 32/15 = 2,133... Число 2 больше 0, соответственно, цикл будет работать еще третий раз.
    • В результате работы программа распечатывает значение переменной n (искомый результат). В цикле переменная n, изначально равная 0, увеличивается на 2. Так как цикл включает 18 итераций, то имеем:
    n = 18 * 2 = 36

    Результат: 36

    Подробное решение данного 6 (8) задания из демоверсии ЕГЭ 2018 года смотрите на видео:

    📹 здесь
    📹 Видеорешение на RuTube здесь (теоретическое решение)


    6_4:

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

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var k,s: integer;
    begin
      k:=1024;
      s:=50;
      while s > 30 do
      begin
        s:= s - 4;
        k:= k div 2;
      end;
      write(k)
    end.
    Бейсик:

    DIM S, K AS INTEGER
    S = 50
    K = 1024
    WHILE S > 30
      S = S - 4
      K = K  2
    WEND
    PRINT K
    Python:

    s = 50
    k = 1024
    while s > 30:
      s = s - 4
      k = k // 2
    print(k)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 50, k = 1024;
    while (s > 30) {
      s = s - 4;
      k = k / 2;
    }
    cout << k << endl;
    return 0;
    }

    ✍ Решение:

    Результат: 32

    Подробное решение смотрите на видео:

    📹 здесь
    📹 Видеорешение на RuTube здесь (теоретическое решение)


    6_5:

    Определите значение переменной c после выполнения следующего фрагмента программы. Ответ запишите в виде целого числа.

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    
    a:=-5;
    c:=1024;
    while a<>0 do
    begin
      c:=c div 2;
      a:=a + 1
    end;
    Бейсик:

    A = -5
    C = 1024
    WHILE A <> 0
      C = C  2
      A = A + 1
    WEND
    Python:

    a = -5
    c = 1024
    while a != 0:
      c = c // 2
      a = a + 1
    С++:

    int a = -5, c = 1024;
    while (a != 0) {
      c = c / 2;
      a = a + 1;
    }

    ✍ Решение:

    Результат: 32

    Смотрите видеоразбор задания:

    📹 здесь
    📹 Видеорешение на RuTube здесь (теоретическое решение)


    6_12:

    Определите, что будет напечатано в результате работы следующего фрагмента программы.

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var n, s: integer;
    begin
    n := 1;
    s := 0;
    while s <= 365 do begin
      s := s + 36;
      n := n * 2
    end;
    write(n)
    end.
    Бейсик:

    N = 1
    S = 0
    WHILE S <= 365
      S = S + 36
      N = N * 2
    WEND
    PRINT N
    Python:

    n = 1
    s = 0
    while s <= 365:
      s = s + 36
      n = n * 2
    print(n)
    С++:

    using namespace std;
    int main() {
    int n = 1, s = 0;
    while (s <= 365) {
      s = s + 36;
      n = n * 2;
    }
    cout << n << endl;
    return 0;
    }

    ✍ Решение:

    • с каждым шагом цикла значение s увеличивается на 36, пока не станет больше 365; а значение n увеличивается в 2 раза, так что n=2k, где k – это число итераций цикла;
    • поскольку s увеличивается на 36, конечное значение s должно быть равно 0+36*k , достигается при k=11 (и s=36*11=396);
    • тогда n = 2k = 211 = 2048.
    • Результат: 2048


    Сумма или разность двух линейных функций (while s — n или while s + n)

    6_7:

    Запишите число, которое будет напечатано в результате выполнения следующей программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var s, n: integer;
    begin
    s := 522;
    n := 400;
    while s - n > 0 do
      begin
      s := s - 20;
      n := n - 15
      end;
    write(s)
    end.
    Бейсик:

    DIM S, N AS INTEGER
    S = 522
    N = 400
    WHILE S - N > 0
      S = S - 20
      N = N - 15
    WEND
    PRINT S
    Python:

    s = 522
    n = 400
    while s - n > 0:
      s = s - 20
      n = n - 15
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 522, n = 400;
    while (s - n > 0) {
      s = s - 20;
      n = n - 15;
    }
    cout << s << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    ✍ Решение:

    • В алгоритме присутствует цикл. Для того, чтобы разобраться в алгоритме, выполним трассировку начальных итераций цикла:
    • № шага условие цикла s n
      1 522-400=122
      122 > 0
      522-20=502 400-15=385
      2 502-385=117
      117 > 0
      502-20=482 385-15=370
      3 482-370=112
      112 > 0
    • Видим, что в условии разница между значениями составляет 5:
    • 122 - 117 = 5
      117 - 112 = 5
      ...
      
    • Таким образом, чтобы определить количество итераций (шагов) цикла, необходимо значение условия цикла, полученное в первой итерации, разделить на 5:
    • 122 / 5 = 24,4
      
      24 * 5 = 120 (120 + 2 = 122)
      

      Это значит, что на 24-й итерации цикла переменные s и n получили такие значения, после которых условие еще осталось истинным: 2 > 0. На 25-м шаге выполняется это условие:

      № шага условие цикла s n
      25 2 > 0 s-20=… n-15=…
    • В конце выполнения 25-й итерации, получаем условие для 26-й итерации:
    • 25 * 5 = 125 (125 - 3 = 122)
      
      № шага условие цикла s n
      25 2 > 0 s-20=… n-15=…
      26 3 < 0 не выполняется не выполняется
    • Значит, всего в цикле присутствует 25 итераций, в каждой из которых s уменьшается на 20. Посчитаем, на сколько уменьшится значение s в общем:
    • 25 * 20 = 500 (за 25 итераций)
      
      522 - 500 = 22 (вычитаем из исходных данных)
      

    Результат: 22

    Предлагаем посмотреть видео решения задания:

    📹 здесь
    📹 Видеорешение на RuTube здесь (теоретическое решение)


    6_13:

    Запишите число, которое будет выведено в результате работы программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var s, n: integer;
    begin
      s := 10;
      n := 55;
      while n > s do begin
        s := s + 1;
        n := n - 1
      end;
      writeln(n)
    end.
    Бейсик:

    DIM S, N AS INTEGER
    S = 10
    N = 55
    WHILE N > S
      S = S + 1
      N = N - 1
    WEND
    PRINT N
    Python:

    s = 10
    n = 55
    while n > s:
      s = s + 1
      n = n - 1
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 10, n = 55;
    while (n > s) {
      s = s + 1;
      n = n - 1;
    }
    cout << n << endl;
    return 0;
    }

    ✍ Решение:

    • Для условия цикла — перенесем влево:
    • n - s > 0
    • Согласно начальным значениям, имеем:
    • 55 - 10 = 45
    • Запишем, как будет изменяться условие цикла в каждой итерации (в каждом шаге):
    • n - 1 > s + 1 =>
      n - s - 2 > 0
      
    • Т.е. условие цикла будет истинным пока возможно вычитать 2. Сколько раз можно вычесть два из 45?
    • для 22 итераций:
      2 * 22 = 44
      в условии цикла имеем 45 > 44, т.е. условие еще истинно
      для 23 итераций:
      2 * 23 = 46
      в условии цикла имеем 45 > 46 - условие ложно, т.е. цикл прекращает работу
    • Соответственно, получили 23 итерации цикла.
    • Изначально n = 55. С каждой итерацией выполнялось n-1. Посчитаем n:
    • n = 55 - 23 = 32

    Результат: 32

    Поиск наименьшего/наибольшего целого введенного числа d

    ЕГЭ 6.8:

    При каком наименьшем целом введенном числе d после выполнения программы будет напечатано число 192?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    var k,s,d: integer;
    begin
      readln (d);
      s:=0;
      k:=0;
      while k < 200 do
      begin
        s:=s + 64;
        k:=k + d;
      end;
      write(s);
    end.
    Бейсик:

    DIM S, K, D AS INTEGER
    INPUT D
    S = 0
    K = 0
    WHILE K < 200
      S = S + 64
      K = K + D
    WEND
    PRINT S
    Python:

    d = int (input ())
    s = 0
    k = 0
    while k < 200:
      s = s + 64
      k = k + d
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 0, k = 0;
    int d;
    cin >> d;
    while (k < 200) {
      s = s + 64;
      k = k + d;
    }
    cout << s << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    ✍ Решение:

    Рассмотрим алгоритм программы:

    • Цикл зависит от переменной k, которая каждую итерацию цикла увеличивается на значение d (вводимое). Цикл закончит «работу», когда k сравняется с 200 или превысит его (k >= 200).
    • Результатом программы является вывод значения переменной s. В цикле s увеличивается на 64.
    • Так как по заданию необходимо, чтобы вывелось число 192, то число повторов цикла определим так:
    64 * x = 192
    число повторов: x = 192 / 64 = 3  
    
    • Так как в цикле k увеличивается на значение d, а повторов цикла 3 (при этом цикл завершается при k>=200), составим уравнение:
    3 * d = 200 
    d = 200/3 ~ 66,66
    
    • Поскольку число получилось нецелое, то проверим и 66 и 67. Если мы возьмем 66, то:
    66 + 66 + 66  = 198  (< 200)

    т.е. цикл после трех прохождений еще продолжит работу, что нам не подходит.

    • Для 67:
    67 + 67 + 67 = 201 (>200)
    • Данное число 67 нас устраивает, оно наименьшее из возможных, что и требуется по заданию.

    Результат: 67

    Разбор задания смотрите на видео:

    📹 здесь


    6_9:

      

    Запишите через запятую наименьшее и наибольшее значение числа d, которое нужно ввести, чтобы после выполнения программы было напечатано 153?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var n, s, d: integer;
    begin
      readln(d);
      n := 33;
      s := 4;
      while s <= 1725 do begin
        s := s + d;
        n := n + 8
      end;
      write(n)
    end.
    Бейсик:

    DIM S, N, D AS INTEGER
    INPUT D
    N = 33
    S = 4
    WHILE S <= 1725
      S = S + D
      N = N + 8
    WEND
    PRINT N
    Python:

    d = int (input ())
    n = 33
    s = 4
    while s <= 1725:
      s = s + d
      n = n + 8
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 4, n = 33;
    int d;
    cin >> d;
    while (s <= 1725) {
      s = s + d;
      n = n + 8;
    }
    cout << n << endl;
    return 0;
    }

    ✍ Решение:

    Разберем листинг программы:

    • Цикл программы зависит от значения переменной s, которая в цикле постоянно увеличивается на значение d (d вводится пользователем в начале программы).
    • Кроме того, в цикле переменная n увеличивается на 8. Значение переменной n выводится на экран в конце программы, т.е. по заданию n к концу программы должно n = 153.
    • Необходимо определить количество итераций цикла (прохождений). Так как начальное значение n = 33, а в конце оно должно стать 153, в цикле увеличиваясь на 8, то сколько раз 8 «поместится» в 120 (153 — 33)? :
    120 / 8 = 15 раз (количество итераций цикла)
    • Как мы определили, цикл зависит от s, которая в начале программы s = 4. Для простоты работы примем, что s = 0, тогда изменим и условие цикла: вместо s <= 1725 сделаем s <= 1721 (1725-1721)
    ...
     s := 0;
     while s <= 1721 do begin
    ...
    
    • Найдем d. Так как цикл выполняется 15 раз, то необходимо найти такое целое число, которое при умножении на 15 возвращало бы число большее 1721:
    1721 / 15 = 114,733 - не целое, не подходит
    1722 / 15 = 114,8 - не целое, не подходит
    ...
    берем кратное 5:
    1725 / 15 = 115 - целое, подходит!
    
    • 115 — это наименьшее d при котором n станет равным 153 (за 15 шагов цикла).
    • Найдем наибольшее d. Для этого надо найти такое число, которое соответствует неравенствам:
    14 * d <= 1721 при этом: 15 * d > 1721
    
    • Найдем:
    14 * 122 = 1708 (<=1721) 15 * 122 = 1830 (>1721)
    
    • Наибольшее d=122

    Результат: 115, 122

    Смотрите видео данного 6 задания ЕГЭ:

    📹 здесь


    Усложненные задания с двумя линейными функциями

    6_6:

    Запишите число, которое будет напечатано в результате выполнения следующей программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var s, n: integer;
    begin
      s := 0;
      n := 0;
      while 2*s*s < 123 do begin
        s := s + 1;
        n := n + 2
      end;
      writeln(n)
    end.
    Бейсик:

    DIM S, N AS INTEGER
    S = 0
    N = 0
    WHILE 2*S*S < 123
      S = S + 1
      N = N + 2
    WEND
    PRINT N
    Python:

    s = 0
    n = 0
    while 2*s*s < 123:
      s = s + 1
      n = n + 2
    print(n)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 0, n = 0;
    while (2*s*s < 123) {
      s = s + 1;
      n = n + 2;
    }
    cout << n << endl;
    return 0;
    }

      
    Подобные задания для тренировки

    ✍ Решение:

    Разберем листинг программы:

    • В цикле переменная s постоянно увеличивается на единицу (работает как счетчик), а переменная n в цикле увеличивается на 2.
    • В результате работы программы на экран выводится значение n.
    • Цикл зависит от s, причем работа цикла завершится когда 2 * s2 >= 123.
    • Необходимо определить количество прохождений цикла (итераций цикла): для этого определим такое наименьшее возможное s, чтобы 2 * s2 >= 123:
    1 шаг: s = 2*12=2
    2 шаг: s = 2*22=8
    3 шаг: s = 2*32=18
    ...
    7 шаг: s = 2*72=98 (меньше 123, т.е. цикл еще работает)
    8 шаг: s = 2*82=128 (больше 123, цикл не работает! )
    

    Либо просто нужно было бы найти такое наименьшее возможное четное число >= 123, которое при делении на 2 возвращало бы вычисляемый корень числа:

    s=124/2 = √62 - не подходит!
    s=126/2 = √63 - не подходит!
    s=128/2 = √64 = 8 - подходит!
    
    • Таким образом, программа выполнит 8 итераций цикла.
    • Определим n, которая увеличивается каждый шаг цикла на 2, значит:
    n = 2 * 8 = 16

    Результат: 16

    Видео данного задания ЕГЭ доступно здесь:

    📹 здесь


    Арифметическая и геометрическая прогрессия

    6_10:

    Определите, что будет напечатано в результате работы следующего фрагмента программы:

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    var k, s: integer;
    begin
      s:=3;
      k:=1;
      while k < 25 do begin
        s:=s + k;
        k:=k + 2;
      end;
      write(s);
    end.
    Бейсик:

    DIM S, K AS INTEGER
    S = 3
    K = 1
    WHILE K < 25
      S = S + K
      K = K + 2
    WEND
    PRINT S
    Python:

    s = 3
    k = 1
    while k < 25:
      s = s + k
      k = k + 2
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int s = 3, k = 1;
    while (k < 25) {
      s = s + k;
      k = k + 2;
    }
    cout << s << endl;
    return 0;
    }

    ✍ Решение:

    Разберем листинг программы:

    • Результатом программы является вывод значения s.
    • В цикле s меняется, увеличиваясь на k, при начальном значении s = 3.
    • Цикл зависит от k. Выполнение цикла завершится при k >= 25. Начальное значение k = 1.
    • В цикле k постоянно увеличивается на 2 -> значит, можно найти количество итераций цикла.
    • Количество итераций цикла равно:
    n = 25 / 2 ~ 12 
    

    (т.к. k изначально равнялось 1, то в последнее, 12-е прохождение цикла, k = 25; условие цикла ложно)

    • В s накапливается сумма арифметической прогрессии, последовательность элементов которой удобней начать с 0 (а не с 3, как в программе). Поэтому представим, что в начале программы s = 0. Но при этом не забудем, что в конце необходимо будет к результату прибавить 3!
    s:=0;
    k:=1;
    while k < 25 do begin
     ...
    
    • Тогда арифметическая прогрессия будет выглядеть:
    1 + 3 + 5 + 7 ... 
    количество членов прогрессии - 12, т.к. 12 итераций цикла
    
    • Существует формула вычисления суммы арифметической прогрессии:

    s = ((2 * a1 + d * (n — 1)) / 2) * n

    где a1 — первый член прогрессии,
    d — разность,
    n — количество членов прогрессии (в нашем случае — кол-во итераций цикла)

    • Подставим значения в формулу:
    (2 * 1 + 2 * 11) / 2 * 12 = 144
    
    • Не забудем, что мы к результату должны прибавить 3:
    144+3 = 147
    
    • Это и есть значение s, которое выводится в результате работы программы.

    Результат: 147

    Решение данного задания ЕГЭ по информатике видео:

    📹 здесь


    6_11: Государственный выпускной экзамен ГВЭ 2019 (информатика ГВЭ ФИПИ, № 15):

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

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    var n, s: integer;
    begin
    n := 1;
    s := 0;
    while n <= 1000 do
      begin
      s := s + n;
      n := n * 2
      end;
    write(s)
    end.
    Бейсик:

    DIM N, S AS INTEGER
    N = 1
    S = 0
    WHILE N <= 1000
      S = S + N
      N = N * 2
    WEND
    PRINT S
    Python:

    n = 1
    s = 0
    while n <= 1000:
      s = s + n
      n = n * 2
    print(s)
    С++:

    #include <iostream>
    using namespace std;
    int main() {
    int n = 1, s = 0;
    while (n <= 1000) {
      s = s + n;
      n = n * 2;
    }
    cout << s << endl;
    return 0;
    }

    ✍ Решение:

      Рассмотрим алгоритм:

    • Условие цикла зависит от переменной n, которая изменяется в цикле согласно получению степеней двойки:
    • 1  2  4  8  16  32  64  128  256  512  1024
      
    • Когда переменная n принимает значение 1024 (11-й шаг цикла), условие цикла становится ложным и цикл перестает работать. На экран выводится значение s.
    • Переменная s — это сумма элементов геометрической прогрессии, т.к. в ней аккумулируются значения n (числовой ряд, представляющий собой геометрическую прогрессию).
    • Вспомним формулы суммы геометрической прогрессии:
    • 1.

      [ S_{n} = frac {b_1-b_{n}*q}{1-q} ]

      2.

      [ S_{n} = b_{1} * frac {1-q^n}{1-q} ]

    • В нашем случае знаменатель q = 2, первый элемент прогрессии b1 = 1. Обратим внимание, что на последнем шаге к сумме добавляется значение 512, т.е. n = 10, а bn = 512. Только после этого n еще раз увеличивается в 2 раза и становится = 1024.
    • Вычислим s по формуле, подставив необходимые значения:
    • [ S_{n} = frac {1-512*2}{1-2} =1023 ]

    • Проверим по второй формуле:
    • [ S_{n} = 1 * frac {1-2^{10}}{1-2}=1023 ]

    • Так как в результате на экран выводится s, то ответ 1023.

    Результат: 1023


    Алгоритмы с массивами:

    Наибольшее или наименьшее значение переменной s (сумматор)

    6_15: Досрочный экзамен 2020 г., вариант 1:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 11. Значения элементов массива A[i] приведены в таблице.

    i 0 1 2 3 4 5 6 7 8 9 10 11
    A[i] 14 13 15 8 4 12 30 21 22 16 5 9

    Определите значение переменной s после выполнения следующего фрагмента этой программы

    Язык программирования Паскаль:

    s := 0;
    n := 1;
    for i := 0 to 11 do
     if A[i] > A[n] then
      s := s + A[i] + i
     else
      A[n] := A[i];
    Бейсик:

    s = 0
    n = 1
    FOR i = 0 TO 11
     IF A(i) > A(n) THEN
       s = s + A(i) + i
     ELSE
       A(n) = A(i)
     END IF
    NEXT i
    Python:

    s = 0
    n = 1
    for i in range(0, 12):
     if A[i] > A[n]:
       s += A[i] + i
     else:
       A[n] = A[i]
    С++:

    s = 0;
    n = 1;
    for (int i = 0; i < 12; i++)
    {
     if (A[i] > A[n])
       s += A[i] + i;
     else
       A[n] = A[i];
    }

    ✍ Решение:

    Видео подробного решения:
    📹 здесь

    6_16:

    В программе описан одномерный целочисленный массив А с индексами от 0 до 10.

    Язык программирования Паскаль:

    s:=0;
    n:=10;
    for i:=0 to n-1 do begin
      s:= s + A[i] + A[i+1]
    end;

    В начале выполнения этого фрагмента в массиве находились двухзначные четные натуральные числа.

      
    Какое наибольшее значение может иметь переменная s после выполнения данной программы?

    ✍ Решение:

    Рассмотрим алгоритм фрагмента программы:

    • Цикл выполняется 10 раз: от 0 до 9 (т.к. n-1).
    • В цикле повторяется операция, суммирующая два подряд идущих элемента массива, — текущего и следующего:
    • A[i] + A[i+1]
    • Данная сумма накапливается в переменной s, значение которой требуется узнать в задаче.
    • Поскольку по заданию необходимо найти наибольшее значение переменной s, и по заданию элементы массива — двухзначные четные натуральные числа, то представим, что все элементы равны самому большому двухзначному четному числу — 98. Это будет оптимальным вариантом.
    • В первый проход цикла получим:
    • s = 0 + 98 + 98 = 196
    • Полученная сумма будет каждый проход цикла увеличиваться на то же самое число (196):
    • s = 196 + 98 + 98
    • Так как проходов (итераций) цикла 10, то получим:
    • 196 * 10 = 1960

    Результат: 1960

    Детальный разбор задания 6 ЕГЭ по информатике предлагаем посмотреть в видеоуроке:

    📹 здесь

    6_17:

    В программе описан одномерный целочисленный массив А с индексами от 0 до 10.

    Язык программирования Паскаль:

    s:=1;
    n:=10;
    for i:=1 to 5 do begin
      s:= s * A[i] * A[n-i+1]
    end;

    В начале выполнения этого фрагмента в массиве находились однозначные четные натуральные числа.

      
    Какое наименьшее значение может иметь переменная s после выполнения данной программы?

    ✍ Решение:

    Рассмотрим алгоритм фрагмента программы:

    • Цикл выполняется 5 раз: от 1 до 5.
    • В цикле повторяется операция произведения двух элементов массива:
    • A[i] * A[n-i+1]
    • Определим, какие элементы перемножаются, подставив для n и i конкретные значения:
    • 1 шаг: A[1]*A[10]
      2 шаг: A[2]*A[9]
      3 шаг: A[3]*A[8]
      4 шаг: A[4]*A[7]
      5 шаг: A[5]*A[6]
      
    • Результат каждой операции умножения накапливается в переменной s, значение которой и требуется найти.
    • Поскольку в s накапливается произведение элементов массива, а по заданию элементы — однозначные четные натуральные числа, то представим, что в массиве все элементы равны самому малому однозначному четному числу — 2. Это будет оптимальным вариантом, т.к. по заданию, необходимо определить наименьшее значение.
    • В первый проход цикла получим:
    • s = 1 * 2 * 2 = 4
    • Полученное произведение будет каждый проход цикла перемножаться на предыдущее значение (4 — в первом шаге, 16 — во втором шаге и т.п.):
    • s = 4 * 2 * 2 = 16
      ...
      
    • Так как проходов цикла 5, то получим:
    • 45 = 1024

    Результат: 1024

    Если что-то осталось непонятным, предлагаем посмотреть разбор задания 6 ЕГЭ по информатике в видеоуроке:

    📹 здесь


    Перестановка в массиве. Определить значение переменной

    6_18: 6 (19) задание. Демоверсия ЕГЭ 2018 информатика:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 3, 0, 4, 6, 5, 1, 8, 2, 9, 7 соответственно, т.е. A[0] = 3, A[1] = 0 и т.д.

    Определите значение переменной c после выполнения следующего фрагмента этой программы:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    c := 0;
    for i := 1 to 9 do
     if A[i-1] > A[i] then
     begin
       c := c + 1;
       t := A[i];
       A[i] := A[i-1];
       A[i-1] := t;
     end;

    ✍ Решение:

    Результат: 5

    Подробное решение 19 задания демоверсии ЕГЭ 2018 года смотрите на видео:

    📹 здесь


    6_19:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 1, 3, 4, 7, 2, 9, 1, 2, 3, 0 соответственно, т.е. A[0] = 1, A[1] = 3 и т.д.

    Определите значение переменной c после выполнения следующего фрагмента этой программы:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    c := 0;
    for i := 1 to 9 do
     if A[i] > A[0] then
     begin
       c := c + 1;
       t := A[i];
       A[i] := A[0];
       A[0] := 2*t;
     end;

    ✍ Решение:

    • Рассмотрим изменение всех переменных и элементов массива для каждой итерации (прохода) цикла:
    • 1 2 3 4 5 6 7 8 9
      i 1 2 3 4 5 6 7 8 9
      if 3>4
      true
      4>6
      false
      7>6
      true
      2>14
      false
      9>14
      false
      1>14
      false
      2>14
      false
      3>14
      false
      0>14
      false
      c 1 2
      t 3 7
      A[i] 1 6
      A[0] 6 14

    Результат: 2

    📹 Видео здесь


    6_20:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 0, 7, 1, 3, 2, 1, 8, 9, 6, 3 соответственно, т.е. A[0] = 0, A[1] = 7 и т.д.

    Определите значение переменной j после выполнения следующего фрагмента этой программы:

    1
    2
    3
    4
    5
    6
    7
    8
    
    j:=9;
    while A[j] + A[j-1] > 4 do
     begin
      t:=A[j];
      A[j]:=A[j-1];
      A[j-1]:=t;
      j:=j-1;
     end;

    ✍ Решение:
     

    • В задании используется цикл while — с предусловием. Такой цикл выполняется пока условие истинно.
    • В условии цикла сумма каждого элемента массива с предыдущим, начиная с девятого (j=9), сравнивается с числом 4: если сумма элементов больше 4 то цикл выполняется.
    • Для первой итерации цикла имеем:
      while A[9] + A[8] > 4 do
      ...
      
    • Как только встретится сумма элементов, которая меньше либо равна четырем, цикл прекратит свою работу.
    • В цикле происходит обмен значений двух элементов массива, сумма которых рассматривается в условии цикла (через переменную t). Кроме того, происходит уменьшение счетчика цикла, чтобы осуществился переход к следующему элементу массива (j:=j-1).
    • Таким образом, надо узнать сумму элементов, начиная с элементов A[9]+A[8], затем A[8]+A[7] и т.д.:
    • A[9]+A[8] = 3+6 > 4 - да, значит обмен: A[9]=6 A[8]=3, j=8
      A[8]+A[7] = 3+9 > 4 - да, значит обмен: A[8]=9 A[7]=3, j=7
      A[7]+A[6] = 3+8 > 4 - да, значит обмен: A[7]=8 A[6]=3, j=6
      A[6]+A[5] = 3+1 > 4 - нет, цикл прекращает свою работу
      
    • Последнее значение счетчика j было равно 6.

    Результат: 6


    6_21: Разбор досрочного ЕГЭ по информатике 2019:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 11. Значения элементов равны 20, 19, 33, 21, 42, 13, 12, 24, 4, 22, 6, 10, т.е. A[0]=20, A[1]=19 и т.д.

    Определите значение переменной s после выполнения следующего фрагмента этой программы:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
      n := 1;
      s := 1;
      for i := 1 to 11 do
        if A[i] < A[n] then begin
          s := s * i;
          t := A[i];
          A[i] := A[n];
          A[n] := t;
        end;

    ✍ Решение:
     

    Смотрите подробный разбор на видео:
    📹 здесь


    6_22:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 21, 16, 7, 12, 18, 3, 8, 13, 11, 17, т.е. A[0]=21, A[1]=16 и т.д.

    Определите значение переменной s после выполнения следующего фрагмента этой программы:
    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    s := 0;
    n := 4;
    for i:=0 to 9 do
      if A[i] <= A[n] then begin
        s := s + A[i];
        t := A[i];
        A[i] := A[n];
        A[n] := t;
        n := i mod 3;
      end;
    writeln(s);
    Бейсик:

    s=0: n=4
    FOR k=1 to 10  
        IF A(i) <= A(n) THEN
          s = s + A(i)
          t = A(i)
          A(i) = A(n)
          A(n) = t
          n = i MOD 3
        END IF
    NEXT k
    PRINT S
    END
    Python:

    s = 0
    n = 4
    for i in range(10):
      if A[i] <= A[n]:
        s = s + A[i]
        t = A[i]
        A[i] = A[n]
        A[n] = t
        n = i % 3
    print(s)
    С++:

    s = 0;
    n = 4;
    for (i=0; i<=9; i++)
      if (A[i]<=A[n])
        {
        s+=A[i];
        t=A[i];
        A[i]=A[n];
        A[n]=t;
        n=i%3;
        }
    cout << s;

      
    Типовые задания для тренировки

    ✍ Решение:

    • Рассмотрим алгоритм. Построим трассировочную таблицу, каждая строка которой — очередная итерация цикла.
    • i <= ? 0 1 2 3 4 5 6 7 8 9 s n
      21 16 7 12 18 3 8 13 11 17 0 4
      0 21<=18
      нет
      21 18
      1 16<=18
      да
      16
      18
      18
      16
      16 1 mod 3 = 1
      2 7<=18
      да
      18
      7
      7
      18
      16+7=23 2 mod 3 = 2
      3 12<=18
      да
      18
      12
      12
      18
      23+12=35 3 mod 3 = 0
      4 16<=21
      да
      21
      16
      16
      21
      35+16=51 4 mod 3 = 1
      5 3<=7
      да
      7
      3
      3
      7
      51+3=54 5 mod 3 = 2
      6 8<=12
      да
      12
      8
      8
      12
      54+8=62 6 mod 3 = 0
      7 13<=16
      да
      16
      13
      13
      16
      62+13=75 7 mod 3 = 1
      8 нет 3 11
      9 нет 13 17
    • При последнем изменении s стало равным 75.

    Ответ: 75

    📹 здесь


    6_23:

    В результате выполнения программы напечатано число 6.

      
    Какое наибольшее значение может иметь переменная S после выполнения программы?

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    var k, m, S, N: integer; 
        Dat: array[1..100] of integer; 
    begin 
      N:= 5; 
      m := 0; S := 0; 
      for k := 1 to N do      
        readln(Dat[k]); 
      for k := 1 to N do begin
        S := S + 2 * Dat[k];
        if  Dat[k]>m then
          begin
            m := Dat[k]
          end
      end; 
      writeln(m) 
    end.
    Бейсик:

    N=5
    m=0
    S=0
    FOR k=1 to N
       INPUT Dat(k) 
    NEXT k 
    FOR k=1 to N
        S = S + 2 * Dat(k)
        IF Dat(k) > m THEN
          m = Dat(k)
        END IF
    NEXT k
    PRINT m
    END
    Python:

    Dat = [0]*100
    N = 5
    m = S = 0
    for k in range(0, N):
        Dat[k] = int(input())
    for k in range(0, N):
        S += 2 * Dat[k]
        if Dat[k] > m:
            m = Dat[k]
    print(m)
    С++:

    #include <iostream> 
    using namespace std; 
     
    int main() {     
    int Dat[100];
    int N = 5;
    int k, m = 0, S = 0;
    for(k=0; k<N; k++)
       cin >> Dat[k];
    for(k=0; k<N; k++) {
       S += 2 * Dat[k];
       if (Dat[k]>m)
           m = Dat[k];
       }
    cout << m;
    return 0;
    }

    ✍ Решение:

      Рассмотрим алгоритм.

    • В конце программы видим, что на экран выводится значение переменной m. То есть после выполнения всего алгоритма m станет равным 5. Запомним это.
    • Изначально переменная N равна значению 5:
    • В первом цикле формируются значения для пяти элементов массива:
    •   for k := 1 to N do      
          readln(Dat[k]);
    • Во втором цикле видим условие, в котором каждый из пяти элементов массива будет сравниваться с m. Если элемент больше m, то в m сохранится значение этого элемента:
    •    if  Dat[k]>m then
            begin
              m := Dat[k]
            end
    • Исходя из первого нашего пункта имеем, что наибольшее значение из пяти элементов массива — это значение 6. Так как в результате m = 6.
    • В цикле помимо условия находится сумматор, который суммирует 2 * Dat[k]. В задании необходимо определить наибольшее значение S, значит, выгодно, чтобы элементы массивов имели максимальное возможное значение.
    • Предположим, что все пять элементов массива равны 6. Тогда m после прохождения цикла останется равной 6. То есть результат будет верным.
    • Посчитаем S в цикле:
    • S := 0 + 2 * 6 + 2 * 6 + 2 * 6 + 2 * 6 + 2 * 6 = 12 * 5 = 60

    Ответ: 60

    Смотрите видеоразбор задания:
    📹 здесь


    Понравилась статья? Поделить с друзьями:

    Новое и интересное на сайте:

  • Егэ по информатике задание 2 мощнейший метод
  • Егэ по информатике задание 19 поляков
  • Егэ по информатике задание 13 графы
  • Егэ по информатике задание 12 редактор
  • Егэ по информатике егэ 2021 досрочная волна

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии