Добавляйте авторские материалы и получите призы от Инфоурок
Еженедельный призовой фонд 100 000 Р
Устанавливая рекомендуемое программное обеспечение вы соглашаетесь
с лицензионным соглашением Яндекс.Браузера и настольного ПО Яндекса .
Задание №20 «Анализ программы с циклами и условными операторами»
Пример 1. Получив на вход число x , этот алгоритм печатает число M . Известно, что x>100 . Укажите наименьшее такое (т.е. >100) число x , при вводе которого алгоритм печатает 26 .
var x, L, M: integer;
if L mod 2 = 0 then M := 52;
В последней строке выводится на экран переменная M;
в циклической части программы записан алгоритм Эвклида для вычисления наибольшего общего делителя ( НОД ) чисел, записанный в переменные M и L; введённое значение x записывается в переменную L и участвует в поиске НОД.
В переменную M до начала цикла записывается 65 , но если было введено чётное ( L mod 2 = 0 ) значение x (оно же L ), значение M заменяется на 52 ( if L mod 2 = 0 then M := 52); сначала предположим, что замены не было, и в M осталось значение 65
Поскольку по условию алгоритм печатает 26 , тогда получается, что НОД(x,65)=26 ;
Этого не может быть, потому что 65 не делится на 26 – вывод, что введено чётное значение x , и произошла замена M на 52;
Тогда нужно найти чётное число x> 100 , такое, что НОД(x,52)=26;
первое число, большее 100, которое делится на 26 – это 104 , но оно не подходит, потому что делится ещё и на 52 , так что НОД(x,52)=52.
Поэтому берём следующее число, которое делится на 26 : 104 + 26 = 130
Пример 2. Получив на вход число х , этот алгоритм печатает число М. Известно, что х > 40. Укажите наименьшее такое (т. е. большее 40) число х, при вводе которого алгоритм печатает 5.
В этом уроке мы рассмотрим ручной способ прокрутки программы, математический с помощью формул арифметической прогрессии, а так же рассмотрим почти все подводные камни, которые чаще всего встречаются в модификациях этой задачи.
В переменной s собирается сумма арифметической прогрессии из элементов k. Нужно определить что будет выведено в результате выполнения этой программы. Подробные объяснения, с разбором всех примеров смотрите в видеоуроке
Для того что бы решать задачи из этой группы нужно уметь выполнять ручной прогон программы, причем хорошо знать как работает цикл с предусловием, и когда именно он заканчивает свое выполнение. И это в самом лучшем варианте. Иногда встречаются задачи, в которых ручной прогон программы не возможен из-за большого количества действий. Поэтому здесь нам так же понадобятся знания из математики по теме «Арифметическая прогрессия».
Анализ программ с циклами
При решении задач данного вида нужно знать основные конструкции языка программирования:
- объявление переменных
- оператор присваивания
- оператор вывода
- циклы
Теория
Для анализа программы необходимо уметь:
- выполнять ручную прокрутку программы
- выделять переменную цикла, от изменения которой зависит количество шагов цикла
- уметь определять количество шагов цикла
- уметь определять переменную, которая выводится на экран
- формулу для вычисления n-ого элемента арифметической прогрессии
- формулу для вычисления суммы первых членов арифметической прогрессии
где ai – i-ый элемент последовательности, d – шаг (разность) последовательности
Задача
Запишите число, которое будет напечатано в результате выполнения программы. Для краткости текст программы приведен только на языке программирования Паскаль.
- var s, n: integer;
- begin
- s := 56;
- n := 0;
- while n Подробности Опубликовано: 29 Апрель 2015 Просмотров: 4550