Главная » Просмотр файлов » Информатика и программирование - Основы информатики

Информатика и программирование - Основы информатики (926517), страница 22

Файл №926517 Информатика и программирование - Основы информатики (Информатика и программирование - Основы информатики) 22 страницаИнформатика и программирование - Основы информатики (926517) страница 222018-01-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 22)

Для записи цикла с параметром в языках программирования существует специальный оператор – оператор цикла с параметром.

Пример 9.48. Составим алгоритм табулирования сложной функции, приведенный на Рис. 9 .30, используя структуру цикла с параметром. Алгоритм представлен на Рис. 9 .39. Тело цикла в этом алгоритме представляет собой композицию двух вложенных структур ветвления и структуры следования.

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

Рис. 9.39. Алгоритм табулирования сложной функции

Пример 9.49. Вычислить степень Y = an действительного числа a с натуральным показателем n. Воспользоваться для вычислений следующей формулой: an = a  a  … a – n раз.

Компактно произведение может быть записано в виде

Для вычисления Y организуем цикл с параметром i, в котором будем накапливать искомое произведение по следующему правилу: до начала цикла положим Y = 1, а в цикле будем домножать n раз накопленное ранее произведение на a, т. е. Y := Y·a. Алгоритм представлен на Рис. 9 .40. □

Пример 9.50. Вычислим сумму квадратов всех целых чисел из заданного интервала [m, n]. В компактной форме записи:

Для вычисления указанной суммы организуем цикл с параметром, в котором будем n раз вычислять значение очередного слагаемого y := i2 и накапливать искомую сумму S := S + y. До начала цикла положим S := 0. Алгоритм приведен на Рис. 9 .41. □

Рис. 9.40. Алгоритм вычисления
конечного произведения

Рис. 9.41. Алгоритм вычисления
конечной суммы

П ример 9.51. Определим, какое количество точек (x, y) из заданного множества x = x0 + ihx; y = y0 + ihy; i = 0, 1, ..., 20, находится в каждой из заштрихованных областей D1 и D2, включая их границы (Рис. 9 .42).

Пример иллюстрирует цикл с несколькими переменными цикла. Число анализируемых точек определяется количеством значений переменной i. Организуем цикл с параметром i, в котором будем изменять значения переменных x, y и для каждой очередной пары (x, y) проверять условия её принадлежности к одной из заданных областей.

Рис. 9.42. Области определения

Условие попадания точки (x, y) в область D1 – окружность радиусом 2 с центром в точке (5, 4): (x  5)2 + (y  4)2  4.

Условие попадания точки (x, y) в область D2 – окружность радиусом 3 с центром в точке (5, 4): (x + 5)2 + (y + 4)2  9.

Для проверки условий и подсчета количества KolD1, KolD2 точек, попавших в каждую из областей, используем структуры сокращенного ветвления. Перед циклом надо задать переменным их начальные значения (Рис. 9 .43). □

9.6.4.Итерационные циклы

Среди циклов с неизвестным числом повторений большое место занимают циклы, в которых в процессе повторения тела цикла образуется последовательность значений a1, a2, ..., an, ..., сходящаяся к некоторому пределу a:

Каждое новое значение an в такой последовательности является более точным приближением к искомому результату a. Циклы, реализующие такую последовательность приближений/итераций, называют итерационными.

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

|an – an–1|  ,

где  – допустимая погрешность вычислений. При этом результат отождествляют со значением an, т. е. считают, что an = a.

Рис. 9.43. Алгоритм подсчета числа точек,
принадлежащих заданным областям

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

yn = yn1  (x/yn1  yn1)/2; y1 = x/2.

Условием окончания данного итерационного цикла будет условие |yn – yn–1|  . Для его проверки необходимо иметь два приближения: текущее yn и предыдущее yn1. Алгоритм можно упростить, если ввести вспомогательную переменную d = yn  yn1 = (x/yn1  yn1)/2 и использовать ее в условии окончания цикла: | d |  . Для проверки такого условия достаточно иметь лишь одно приближение, которое обозначим через y.

Алгоритм вычисления квадратного корня представлен на Рис. 9 .44. Для организации итерационного процесса использована структура цикла с постусловием. □

Рис. 9.44. Алгоритм вычисления квадратного корня

9.6.5.Вложенные циклы

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

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

Пример 9.53. Составим алгоритм табулирования сложной функции двух переменных:

для x = x0(hx) xn и y = y0(hy) yn.

Вычисление значений функции z для всех различных пар (x, y) необходимо организовать следующим образом. Вначале при фиксированном значении одного из аргументов, например, при x = x0, вычислить значения z для всех заданных y: y0, y0 + hy, y0 + 2hy, ..., yn. Затем, изменив значение x на x0 + hx, вновь перейти к полному циклу изменения переменной y. Данные действия повторить для всех x: x0, x0 + hx, x0 + 2hx, ..., xn.

Для записи алгоритма необходима структура вложенных циклов, например, с параметром: внешнего – с параметром x и внутреннего – с параметром y. В данной задаче внешний и внутренний циклы можно поменять местами, при этом изменится только порядок изменения аргументов.

Общее количество значений z равно Nz = NxּNy, где

Nx = [(xn – x0)/hx] + 1, Ny = [(yn – y0)/hy] + 1.

Алгоритм табулирования функции, выполненный по технологии нисходящего проектирования, представлен на Рис. 9 .45.

Рис. 9.45. Алгоритм табулирования функции двух переменных

На первом этапе составлена укрупненная схема решения задачи с выделением операции ввода исходных данных и структуры вложенных циклов. На втором этапе раскрывается тело внутреннего цикла как композиция структур ветвления. □

Пример 9.54. Найти совершенное число в интервале [2, n]. Совершенное число равно сумме всех своих делителей, включая единицу. Например, 28 – совершенное число, так как 28 = 1 + 2 + 4 + 7 + 14.

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

Для реализации такого алгоритма необходима структура вложенных циклов: внешнего, для просмотра заданного интервала, и внутреннего, для вычисления суммы (Рис. 9 .46, а). Построенный алгоритм не является структурированным. Рассмотрим один из способов приведения циклического алгоритма к структурному виду. Внешний цикл имеет два условия окончания: исчерпание всех целых чисел из заданного интервала и выполнение равенства k = S. В зависимости от того, какое условие привело к окончанию цикла, необходимо предпринять различные действия. Объединим оба условия окончания цикла в одно: k > n или k = S. Для принятия окончательного решения после завершения цикла проверим, какое же условие привело к его окончанию (Рис. 9 .46, б).

Рис. 9.46. Алгоритм поиска совершенного числа

Можно структурировать алгоритм иначе: в цикле с параметром k ввести дополнительную переменную Pr, установив до цикла Pr = 0. Как только совершенное число будет найдено, присвоить Pr значение этого числа. Окончательное решение в этом случае принимается уже на основании анализа признака Pr.

Структура внутреннего цикла для вычисления суммы S раскрывается на втором этапе детализации алгоритма. Поскольку все числа делятся на единицу, то сначала устанавливается S = 1. В цикле с параметром i, изменяющимся от 2 до [k/2], суммируются все делители числа k. В интервале от [k/2]+1 до k–1 не может быть делителей числа k. □

9.6.6.Вспомогательные алгоритмы

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

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

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

Характеристики

Тип файла
Документ
Размер
5,26 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее