- •Содержание
- •Пояснительная записка
- •Раздел 1. Основы программирования
- •Тема 1.1 Понятие алгоритма
- •Понятие алгоритма. Свойства алгоритма
- •Алгоритмический язык
- •Понятие алгоритма. Свойства алгоритма
- •Хорезми
- •2. Алгоритмический язык
- •Тема 1.2 Методы описания алгоритма
- •Виды описания алгоритма
- •Тема 1.3 Типы алгоритмов
- •1.Типы алгоритмов
- •Алгоритм линейной структуры
- •3. Разветвляющийся алгоритм
- •4. Циклический алгоритм
- •5.Виды циклов
- •Цикл с предусловием (цикл пока)
- •2. Цикл с постусловием (цикл до)
- •3. Арифметический цикл (цикл для) – цикл с параметром.
- •Тема 1.4. Алгоритмический ряд.
- •Операторы цикла с условием
- •Операторы ограничения и прерывания цикла
- •Раздел 2. Решение задач на пэвм.
- •Тема 2.1. Основные этапы подготовки задачи к решению на пэвм.
- •Этапы решения задач
- •Тема 2.2 Программа на языке высокого уровня.
- •Тема 2.3. Методика Джексона
- •1. Методика Джексона
- •Шаг объект-действие
- •Раздел 3.Разработка программы на языке Турбо Паскаль
- •Тема 3.1 Основные элементы
- •История и классификация языков программирования
- •Элементы языка Турбо Паскаль
- •Тема 3.2. Типы данных
- •1. Типы данных Типы данных
- •Тема3.3 Программа на языке Турбо Паскаль
- •Структура программы на языке Паскаль
- •4. Вывод данных в тр
- •5. Ввод данных в тр
- •Тема 3.4 Массивы и их обработка
- •Строковый тип данных
- •Процедуры и функции для работы со строками
- •1. Определение массива
- •2 Описание массивов
- •3 Действия над массивами
- •4.Двумерный массив
- •6.Строковый тип данных
- •'Текстовая строка'
- •7. Процедуры и функции для работы со строками
- •Тема 3.5 Встроенные процедуры и функции
- •1. Арифметические процедуры и функции:
- •2. Функции преобразования типов:
- •3. Процедуры и функции для работы со строками:
- •Тема 3.6. Процедуры и функции пользователя
- •Отличия функции от процедур
- •3. Описание процедуры
- •4. Описание функций
- •5. Локальные и глобальные переменные.
- •6. Параметры в процедурах.
- •Тема 3.7. Записи
- •1. Структура записи в тр
- •2. Отличия записи от массива.
- •Тема 3.8 Файлы и их обработка
- •1. Понятие файла
- •2. Чтение и запись информации из файл или в файл
- •3.Доступ к файлам
- •4.Имена файлов
- •5. Связь файла с файловой переменной.
- •6. Открытие и переименование файла.
- •7. Типизированные фалы.
- •8. Нетипизированные файлы.
- •9.Текстовые файлы
- •Раздел 4. Объектно – ориентированная модель программирования
- •Тема 4.1. Основные характеристики ооп. Преимущества.
- •1. Основные характеристики ооп. Преимущества
- •Тема 4.2. Инкапсуляция.
- •Тема 4.3. Наследование.
- •Тема 4.4.Виртуальные методы и полиморфизм.
- •Перечень источников литературы для самостоятельного изучения учебной дисциплины «Основы алгоритмизации и программирования»
4. Циклический алгоритм
В жизни, однако, часто встречаются инструкции, в которых требуется один и тот же набор действий выполнять много раз подряд: "Иди, пока не придешь", "Закручивай гайку, пока не завернешь до отказа" и так далее. Используя только ветвление, такие алгоритмы записать не удастся. Для этого нужна новая форма организации действий – цикл. Если какие-либо операторы необходимо выполнить несколько раз, то их не переписывают каждый раз заново, а организуют цикл.
Циклический алгоритм – это алгоритм, в котором некоторая последовательность действий повторяется несколько раз.
Алгоритм заточки карандашей 2. Алгоритм просмотра телевизора
5.Виды циклов
Цикл с предусловием (цикл пока)
Телом цикла называются команды, многократно повторяющиеся в процессе его выполнения. Перед выполнением цикла происходит присваивание начальных значений переменным, меняющимся в ходе его выполнения. Собственно выполнение цикла Пока начинается с проверки условия его окончания. Поэтому такую разновидность цикла называют еще циклом с предусловием. Переход к выполнению тела цикла, включающего в себя рабочий блок и изменение значений аргументов, осуществляется только в том случае, если условие выполняется. В противном случае происходит выход из цикла. В частности, может оказаться, что тело цикла не будет выполнено ни разу (если с самого начала условие не выполняется). С другой стороны, для того чтобы цикл не повторялся бесконечно, необходимо в теле цикла осуществлять действия, приводящие к ситуации, когда условие перестанет быть истинным. Этой цели и служит блок изменения значений аргументов.
2. Цикл с постусловием (цикл до)
Цикла с заранее неизвестным числом повторений. Здесь условие выполнения цикла проверяется в конце выполнения тела цикла, то есть в любом случае тело цикла будет выполнено хотя бы один раз. Цикл До называют циклом с постусловием потому что выполняется тело цикла а потом проверяется условие.
3. Арифметический цикл (цикл для) – цикл с параметром.
В том случае, когда количество повторений заранее известно, используется цикл Для. Здесь само условие выполнения цикла содержит информацию о том, сколько раз надо повторить его выполнение, например, в виде диапазона изменения цикловой переменной. Цикл для называют арифметическим циклом
Цикл с предусловием (цикл ПОКА) |
Цикл с постусловием (цикл ДО) |
Цикл с параметром (цикл ДЛЯ) |
|
|
|
пока условие, повторять нц серия кц |
повторять серия до условие
|
для параметр от начзнач до конзнач шаг значение нц серия кц |
Выполнение тела цикла повторяется, пока условие цикла истинно. Когда условие становится ложным, цикл заканчивает выполнение. Служебные слова нц и кц обозначают начало цикла и конец цикла соответственно.
|
Здесь используется условие окончания цикла. Когда оно становится истинным, цикл заканчивает работу.
|
Цикл выполняется последовательно от начального значения до конечного с указанным шагом. |
Пример 1. Дана последовательность, общий член которой определяется формулой
Вычислить при n 2 сумму тех ее членов, которые больше заданного числа .
Решение: При решении задачи находится очередной член последовательно и, если он больше , добавляется к сумме.
2
|
алг предусловие вещ , 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> |
0 |
1/4=0.25 |
2 |
+ |
1/4 |
2/9=0.22 |
3 |
+ |
1/4+2/9=0.25+0.22=0.47 |
3/16=0.19 |
4 |
+ |
0.47+0.19=0.66 |
4/25=0.16 |
5 |
+ |
0.66+0.16=0.82 |
5/36=0.14 |
6 |
- |
Вывод: тело цикла повториться три раза при =0,15 и на выходе S=0,82
Цикл с предусловием — это основная, но не единственная форма организации циклических алгоритмов. Другим вариантом является цикл с постусловием. Рассмотрим алгоритм решения квадратного уравнения. К нему можно подойти с такой позиции: если а = 0, то это уже не квадратное уравнение и его можно не рассматривать. В таком случае будем считать, что пользователь ошибся при вводе данных, и следует предложить ему повторить ввод. Иначе говоря, в алгоритме будет предусмотрен контроль достоверности исходных данных с предоставлением пользователю возможности исправить ошибку. Наличие такого контроля — еще один признак хорошего качества программы.
алг
квадратное
уравнение
вещ
а,b,с,d,xl,х2
нач
повторять
ввод
а,b,с
до
а
О
d:=b2-4ac
если
d
0
то
вывод
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. Если числа равны, то взять их общее значение в качестве ответа; в противном случае продолжить выполнение алгоритма.
Определить большее из чисел.
Заменить большее число разностью большего и меньшего значений.
Вернуться к выполнению пункта 1.
Блок-схема и алгоритм на АЯ будут следующими:
алг
Евклид
цел
M,N
нач
ввод
M,N
пока
M
N,
повторять
нв
если M>N
то
M:=M-N
иначе
N:=N-M
кв
кон
Алгоритм имеет структуру цикла с вложенным ветвлением. Проделайте самостоятельно трассировку этого алгоритма для случая М = 18, N = 12. В результате получится НОД = 6, что, очевидно, верно.
Самостоятельная работа:
Вывести на экран квадраты всех четных чисел от 3 до N.
Вкладчик внес в банк S руб под N% годовых. Определить сколько денег он получит через M лет.
Перечень источников:
Кинг Д. Создание эффективного программного обеспечения. –М.: мир, 1991 – 284с.
2. Немнюгин С.А. Turbo Pascal: учебник – СПб «Питер», 2007.- 455с.
3. Попов В.Б. Turbo Pascal для школьников. – М.: Финансы и статистика, 2009. – 525с.