No Image

Анализ программ с циклами

СОДЕРЖАНИЕ
375 просмотров
10 марта 2020

Добавляйте авторские материалы и получите призы от Инфоурок

Еженедельный призовой фонд 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.

Читайте также:  Методом половинного деления в последовательности чисел 061

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

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

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

Анализ программ с циклами

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

  • объявление переменных
  • оператор присваивания
  • оператор вывода
  • циклы

Теория

Для анализа программы необходимо уметь:

  • выполнять ручную прокрутку программы
  • выделять переменную цикла, от изменения которой зависит количество шагов цикла
  • уметь определять количество шагов цикла
  • уметь определять переменную, которая выводится на экран
  • формулу для вычисления n-ого элемента арифметической прогрессии

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


где aii-ый элемент последовательности, d – шаг (разность) последовательности

Задача

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

  1. var s, n: integer;
  2. begin
  3. s := 56;
  4. n := 0;
  5. while n Подробности Опубликовано: 29 Апрель 2015 Просмотров: 4550
Комментировать
375 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector