Задача 1.Даны три положительных числа. Составить алгоритм, определяющий, могут ли они быть длинами сторон треугольника.
Задача 2.Дано действительное число а.Вычислить f(a), если
Задача 3.Из двух целых чисел выбрать наибольшее число.
Задача 4.Составить программу начисления зарплаты согласно следующему правилу: если стаж сотрудника менее 5 лет, то зарплата 130 руб., при стаже работы от 5 до 15 лет - 180 руб., при стаже свыше 15 лет зарплата повышается с каждым годом на 10 руб.
В жизни, однако, часто встречаются инструкции, в которых требуется один и тот же набор действий выполнять много раз подряд: "Иди, пока не придешь", "Закручивай гайку, пока не завернешь до отказа" и так далее. Используя только ветвление, такие алгоритмы записать не удастся. Для этого нужна новая форма организации действий – цикл. Если какие-либо операторы необходимо выполнить несколько раз, то их не переписывают каждый раз заново, а организуют цикл.
Циклический алгоритм – это алгоритм, в котором некоторая последовательность действий повторяется несколько раз.
Телом цикла называются команды, многократно повторяющиеся в процессе его выполнения. Перед выполнением цикла происходит присваивание начальных значений переменным, меняющимся в ходе его выполнения. Собственно выполнение циклаПоканачинается с проверки условия его окончания. Поэтому такую разновидность цикла называют еще циклом с предусловием. Переход к выполнению тела цикла, включающего в себя рабочий блок и изменение значений аргументов, осуществляется только в том случае, если условие выполняется. В противном случае происходит выход из цикла. В частности, может оказаться, что тело цикла не будет выполнено ни разу (если с самого начала условие не выполняется). С другой стороны, для того чтобы цикл не повторялся бесконечно, необходимо в теле цикла осуществлять действия, приводящие к ситуации, когда условие перестанет быть истинным. Этой цели и служит блок изменения значений аргументов.
Цикла с заранее неизвестным числом повторений. Здесь условие выполнения цикла проверяется в конце выполнения тела цикла, то есть в любом случае тело цикла будет выполнено хотя бы один раз. Цикл Доназывают циклом с постусловием потому что выполняется тело цикла а потом проверяется условие.
3. Арифметический цикл (цикл ДЛЯ) – цикл с параметром.
В том случае, когда количество повторений заранее известно, используется цикл Для. Здесь само условие выполнения цикла содержит информацию о том, сколько раз надо повторить его выполнение, например, в виде диапазона изменения цикловой переменной. Цикл для называют арифметическим циклом
Цикл с предусловием (цикл ПОКА)
Цикл с постусловием (цикл ДО)
Цикл с параметром (цикл ДЛЯ)
покаусловие, повторять
нц
серия
кц
повторять
серия
до условие
для параметр
от начзнач до конзнач
шагзначение
нц
серия
кц
Выполнение тела цикла повторяется, пока условие цикла истинно. Когда условие становится ложным, цикл заканчивает выполнение. Служебные слова нци кцобозначают начало цикла и конец цикла соответственно.
Здесь используется условие окончания цикла. Когда оно становится истинным, цикл заканчивает работу.
Цикл выполняется последовательно от начального значения до конечного с указанным шагом.
Пример 1. Дана последовательность, общий член которой определяется формулой
Вычислить при n2 сумму тех ее членов, которые больше заданного числа .
Решение: При решении задачи находится очередной член последовательно и, если он больше, добавляется к сумме.
алг предусловие
вещ, S, A, n
нач
Ввод
S:= 0
A:= 1/4
n:= 2
пока A>, повторять
нцS:= S + A
A:= (n-1)/(n*n)
n:= n + 1
кц
Вывод S
Кон
Этот алгоритм имеет циклическую структуру. В алгоритме использована структурная команда цикл-пока, или цикл с предусловием.
Для проверки правильности алгоритма строят трассировочную таблицу, в которой для конкретных значений исходных данных по шагам прослеживается изменение переменных, входящих в алгоритм.
Пусть =0,15, тогда
S
A
n
A>
1/4=0.25
+
1/4
2/9=0.22
+
1/4+2/9=0.25+0.22=0.47
3/16=0.19
+
0.47+0.19=0.66
4/25=0.16
+
0.66+0.16=0.82
5/36=0.14
-
Вывод: тело цикла повториться три раза при =0,15 и на выходе S=0,82
Цикл с предусловием — это основная, но не единственная форма организации циклических алгоритмов. Другим вариантом является цикл с постусловием. Рассмотрим алгоритм решения квадратного уравнения. К нему можно подойти с такой позиции: если а = 0, то это уже не квадратное уравнение и его можно не рассматривать. В таком случае будем считать, что пользователь ошибся при вводе данных, и следует предложить ему повторить ввод. Иначе говоря, в алгоритме будет предусмотрен контроль достоверности исходных данных с предоставлением пользователю возможности исправить ошибку. Наличие такого контроля — еще один признак хорошего качества программы.
алгквадратное уравнение
веща,b,с,d,xl,х2
нач
повторять
ввод а,b,с
до аО
d:=b2-4ac
еслиd0
то
вывод xl,х2
иначе
вывод «Нет
вещественных корней»
кв
кон
В рассмотренных выше примерах количество повторений заранее неизвестно. В тех же случая, когда количество шагов известно из условия задачи, проще и предпочтительней использовать цикл с параметром.
Пример 3. Найти произведение первых k натуральных чисел, кратных трём.
При составлении алгоритма учтем, что первое натуральное число, кратное 3, есть тройка, а все последующие больше предыдущего на 3.
алг пример 3
цел k, p, t, i
начввод k
p:=1 {здесь накапливаем произведение}
t:=0 {здесь будут числа, кратные 3}
i:=1
для i>k
нц t:=t+3
p:=p*t
i:=i+1
кц
вывод p
Кон
Пример 4. Даны два натуральных числа М и N. Требуется вычислить их наибольший общий делитель — НОД(М, N).
Эта задача решается с помощью метода, известного под названием алгоритма Евклида. Его идея основана на том свойстве, что если М >N, то НОД(М, N) - НОД(М-N, N). Другой факт, лежащий в основе алгоритма, тривиален — НОД(М, М) = М. Для «ручного» выполнения этот алгоритм можно описать в форме следующей инструкции:
1. Если числа равны, то взять их общее значение в качестве ответа; в противном случае продолжить выполнение алгоритма.
2. Определить большее из чисел.
3. Заменить большее число разностью большего и меньшего значений.
Алгоритм имеет структуру цикла с вложенным ветвлением. Проделайте самостоятельно трассировку этого алгоритма для случая М = 18, N = 12. В результате получится НОД = 6, что, очевидно, верно.
Самостоятельная работа:
1. Вывести на экран квадраты всех четных чисел от 3 до N.
2. Вкладчик внес в банк S руб под N% годовых. Определить сколько денег он получит через M лет.
Перечень источников:
1. Кинг Д. Создание эффективного программного обеспечения. –М.: мир, 1991 – 284с.