АЛГОРИТМЫ ТОИ-ИМ 3 базовые управляющие алгоритмические структуры Решение Цикл Последовательность Непосредственное выполнение одно- го действия за другим.

Презентация:



Advertisements
Похожие презентации
Циклический алгоритм –это алгоритм команды которого выполняются несколько раз подряд. В языке Паскаль имеется три различных оператора цикла: 1. Оператор.
Advertisements

Циклические алгоритмы. Цикл - это такая алгоритмическая структура, в которой осуществляется многократное повторение одной ( или нескольких ) команд.
Алгоритмическая структура «цикл». В алгоритмическую структуру «цикл» входит серия команд, выполняемая многократно. Такая последовательность команд называется.
В алгоритмической структуре «цикл» серия команд (тело цикла) выполняется многократно. Циклы бывают 2 типов: 1.Цикл со счетчиком. Используется когда заранее.
Операторы цикла Виды операторов цикла W hile(с предусловием -пока) R epeat (с постусловием -до) F or (c параметром -для ) Операторы цикла служат для.
Тема: Циклы и циклы с параметром. ЦИКЛ С пред усл-ем С пост усл-емС параметром У-е S S Х= а, в, к S.
Автор Титова Л.И.. Да Нет Тело цикла Условие Тело цикла Нет Да Тело цикла Изменение параметра цикла ВОПРОС 2: Назовите разновидность цикла представленного.
АЛГОРИТМИЧЕСКАЯ СТРУКТУРА «ПОВТОРЕНИЕ» («ЦИКЛ») В ЯЗЫКЕ QBASIC Презентацию разработал Мащенко П.С., учитель МБОУ СОШ 2 муниципального образования Щербиновский.
Цикл - это специальная конструкция языка, позволяющая запрограммировать многократное выполнение определённого блока команд Итерация - это каждый проход.
Циклические алгоритмы Виды циклов и циклические команды на Паскале.
Операторы цикла в Pascal. Многократно повторяющийся участок вычислительного процесса называется циклом. Если заранее известно количество необходимых повторений,
Программирование циклических алгоритмов. Цикл - многократное повторение последовательности действий по некоторому условию.
ЦИКЛЫ ОПРЕДЕЛЕНИЕ, ВИДЫ, ПРИМЕРЫ. ОПРЕДЕЛЕНИЕ Группа этапов, повторяющаяся в процессе решения задачи несколько раз, называется циклом или циклическим.
Виды алгоритмических структур: –блок-схема. –линейный алгоритм. –алгоритмическая структура «ветвление». –алгоритмическая структура «выбор». –алгоритмическая.
Операторы языка Паскаль. Операторы повтора (цикла)
Презентацию составила учитель первой категории МБОУ СОШ 14 имени К.С.Федоровского г.Юрги Кемеровской области Яковлева Ирина Владимировна.
Повторение действий в turbo pascal. Циклы.
Циклические вычислительные процессы. Процессы, в которых ряд действий повторяются многократно по одним и тем же математическим зависимостям, называются.
Организация циклических процессов начало К:=1 S:=1 N:=5 K<=N S:=S*K K:=K+1 S конец данет При решении многих задач вычислительный процесс имеет циклический.
Цикл – это многократно выполняемая последовательность операторов (команд). Существует два основных цикла: цикл с предусловием и цикл с постусловием. В.
Транксрипт:

АЛГОРИТМЫ ТОИ-ИМ 3 базовые управляющие алгоритмические структуры Решение Цикл Последовательность Непосредственное выполнение одно- го действия за другим Действие A Действие B Действие C Проверка выполнения условия и выбор одного из альтернативных действий Организация повторяющихся действий в соответствии с заданным условием 1. Бинарный выбор - ветвление 2. Множественный выбор Условие Да Нет Условие Да 1 Действие 1 Да 2 ДаN Нет Действие 2 Действие N Действие Условие

Элементы ЯПВУ Операторы цикла Цикл while (с предусловием) Цикл: repeat-until – Pascal do-while – C (с постусловием) Цикл for (с параметром) Тело цикла выполняется n раз Тело цикла может не выполниться ни разу Тело цикла обязательно выполниться хотя бы один раз ТОИ-ИМ 2 Вход Тело цикла (оператор) Выход И - Pascal Л - C Л - Pascal И - C Условие Вход Тело цикла (оператор) Выход Ложно Истинно i = 1 (1) n Вход Тело цикла (оператор) Выход Л И Условие

Элементы ЯПВУ Цикл с параметром ТОИ-ИМ 3 Эта конструкция цикла используется в тех случаях, когда заранее известно точное количество повторов (итераций) цикла, требующееся для выполнения действия. В псевдокоде для описания цикла с параметром используется следующая конструкция: ДЛЯloop_index = initial_value ДО final_value Тело цикла ДЛЯ ВСЁ - loop_index – это переменная цикла – счётчик номера итерации (повтора) цикла, - initial_value – начальное значение переменной цикла, номер первой итерации, - final_value – конечное значение переменной цикла, номер последней итерации. Количество итераций цикла равно разности final_value и initial_value. Итерации цикла повторяются, пока параметр цикла loop_index находится в диапазоне от initial_value до final_value, можно считать, что при этом условие продолжения цикла – Истинно (И), когда параметр цикла за пределами диапазона, условие – Ложно (Л).

Элементы ЯПВУ Цикл с параметром ТОИ-ИМ 4 Работа цикла ДЛЯ: Переменная loop_index устанавливается в заданное начальное значение initial_value, При каждом прохождении (итерации) цикла переменная цикла автоматически увеличивается (уменьшается) на 1, В начале новой итерации переменная loop_index проверяется на соответствие верхнему (нижнему) пределу (final_value), При достижении переменной loop_index заданного верхнего (нижнего) предела (final_value) цикл завершается и алгоритм переходит к выполнению следующего за ДЛЯ ВСЁ действия. В виде блок-схемы эта конструкция выглядит так: В ЯП Pascal и С эта конструкция реализуется с помощью оператора for Тело цикла ДЛЯ ВСЁ И Л ДЛЯ loop_index = initial_value ДО final_value

Элементы ЯПВУ C Оператор цикла for Pascal For := To [или DownTo] Do ; где For, To [DownTo], Do – ключевые слова для, до, выполнить, - параметр цикла – переменная порядкового типа, - а, в – начальное и конечное значения (выражения) параметра цикла если To: a<b и шаг = +1; если DownTo: a>b и шаг = -1, - оператор – одиночный или состав- ной оператор. Процедура Break; - досрочный выход из цикла, Процедура Continue; - завершить текущую и начать новую итерацию. Пример: For i := 1 To n Do for ( ; ; ) ; где for – ключевое слово для, - инициализация – присваивание начального значения параметру (-ам) цикла, - условие – выражение, цикл выполняется пока оно истинно, - приращение – изменение параметра цикла при каждой итерации, - оператор – одиночный или состав- ной оператор. Принудительное завершении всего цикла или текущей итерации – операторы: break, continue, return, goto. Пример: for (i = 1; i <= n; i++) ТОИ-ИМ 5

Примеры цикла for Блок-схема алгоритма: Вычислить сумму целых положительных чисел от 1 до N Элементы ЯПВУ ТОИ-ИМ 6 Начало Вычисление суммы натурального ряда от 1 до N Конец Запросить " Введите N = " Получить N S = S + ind ИЛ S = 0 Вывести "Сумма = ", S ДЛЯ ВСЁ Ввод числа N Начальное значение суммы S Цикл суммирования Вывод результата ДЛЯ ind=1 ДО n

Примеры цикла for Program Sum; var i, n, s : Integer; begin Write('Введите N = '); ReadLn (n); (* Ввод числа *) s := 0; (*Начальное значение суммы*) For i := 1 To n Do (*Цикл суммирования *) s := s + i; (* Вывод результата *) WriteLn ('Сумма = ', s); End. Вычислить сумму целых положительных чисел от 1 до N #include int main () { int i, n, s=0; printf ("Введите n = "); scanf ("%d",&n); /* Ввод числа */ /* Цикл подсчета суммы */ for (i = 1; i <= n; i++) s = s + i; /* Вывод результата */ printf("Сумма = %d\n", s); return 0; } Задание на дом на цикл for: 1. Дано натуральное число, найти сумму его делителей. Вывести все делители и их сумму на печать. 2. Напечатать таблицу значений функции Y=X 2 +1 во введенном диапазоне 3. Вывести на экран таблицу степеней двойки от нулевой до 20-й. Нарисовать рамки таблицы и отформатировать её содержание (прижать числа к правой границе столбцов). Нарисовать блок-схему алгоритма и написать программы на Pascal и С Элементы ЯПВУ CPascal ТОИ-ИМ 7

Элементы ЯПВУ Цикл с предусловием ТОИ-ИМ 8 Эта конструкция используется для выполнения цикла, условие завершения которого описывается в заголовке (в начале) цикла. В псевдокоде для описания цикла с предусловием используется следующая конструкция: ПОКА условие P истинно Тело цикла ПОКА ВСЁ - условие P – логическое условие продолжения цикла (терминальное условие). Конструкция ПОКА – это цикл с предусловием, т.е. условие проверяется до выполнения действий тела цикла. Замечания: а) поскольку условие проверяется в начале цикла, то чтобы задать корректное условие необходимо выполнить определённую логическую обработку данных до проверки условия, б) стандартный способ прервать цикл ПОКА – сделать условие ложным; это означает, что в теле цикла должны выполняться какие-то операции изменяющие условие цикла, иначе цикл может стать бесконечным. Принудительное завершении всего цикла или текущей итерации – операторы безусловного перехода : break, continue, return, goto.

Элементы ЯПВУ Цикл с предусловием ТОИ-ИМ 9 Работа цикла ПОКА: 1. Проверяется логическое условие Р, 2. Если условие Р истинно, один раз выполняются действия (операции) заданные в теле цикла, затем выполняется переход к началу цикла и повторно проверяется условие, 3. Если условие Р по-прежнему истинно, снова повторяется тело цикла, 4. Если условие Р ложно, управление передаётся к действию, следующему за ключевыми словами ПОКА ВСЁ, и тело цикла больше не выполняется. В виде блок-схемы эта конструкция выглядит так: В ЯП Pascal и С эта конструкция реализуется с помощью оператора while Тело цикла ПОКА ВСЁ Л И ПОКА условие P истинно ?

Элементы ЯПВУ Цикл с предусловием ТОИ-ИМ 10 Использование счётчика итераций как условия цикла ПОКА При необходимости выполнить тело цикла определённое количество раз организуется счётчик итераций (повторов) цикла – переменная, значение которой увеличивается на единицу после каждого выполнения тела цикла. Это переменная используется в логическом выражении условия цикла Р. Перед началом цикла задаётся начальное значение переменной-счётчика, а в теле цикла это значение увеличивается на единицу (до оператора ПОКА ВСЁ) при каждой итерации цикла. Использование в качестве условия цикла ПОКА заключительной записи (сигнальной метки) или признака конца файла. Если необходимо обработать в цикле неизвестное заранее количество элементов (например, список, количество записей в котором неизвестно), то счётчик итераций цикла использовать не получиться. Часто в конце данных находиться заключительная запись или сигнальная метка – это особая запись или значение, размещённое в конце данных, она означает конец данных и должна содержать значение, которое чётко отличается от других обрабатываемых данных. Возможен также случай, когда идёт обработка данных размещённых в файле на внешнем устройстве (магнитном диске, флешке и др.). При это сигнальная метка не требуется, так как в каждом файле при его создании или изменении последним символом добавляется маркёр конца файла – EOF – End of File. В качестве условия цикла тогда можно использовать одно из равнозначных выражений: ПОКА ещё данные ПОКА ещё записи ПОКА есть записи ПОКА не EOF С такими условиями цикла все действия между операторами ПОКА и ПОКА ВСЁ будут повторяться, пока не будет сделана попытка прочесть данные после символа EOF. Когда это произойдёт, программа получит сигнал, обозначающий что данных в файле больше нет и условие ПОКА – ложно.

Элементы ЯПВУ C Оператор цикла while Pascal While Do ; где - While и Do – ключевые слова пока и выполнить, - условие – выражение логического типа, - оператор – одиночный или составной оператор. while ( ) ; где - while – ключевое слово пока, - условие – выражение, - оператор – одиночный или составной оператор. ТОИ-ИМ 11

Примеры цикла while Блок-схема алгоритма: Вычислить 25! Элементы ЯПВУ ТОИ-ИМ 12 Начало Конец Запросить " Введите k = " Получить k p = p * n ИЛ p = 1, n = 1 Вывести "Факториал = ", p ПОКА ВСЁ Ввод числа k Установить начальные значения p и n Цикл вычисления факториала Вывод результата Вычисление факто- риала заданного числа k n = n + 1 ПОКА n <= k

Элементы ЯПВУ C Оператор цикла while Pascal Примеры Вычислить значение 25! Program Factorial; Var n, k : Integer; p : Real ; (* n – переменная цикла, k – число факториала, p - значение факториала *) Begin Write('Введите число факториала k'); ReadLn (k); (* Ввод числа факториала *) p := 1; n := 1; (* Начальные значения *) While (n <= k) Do Begin (* Вычисление факториала *) p := p * n; (* Приращение переменной цикла *) n := n + 1; End; WriteLn('Значение факториала p = ', p:10); End. #include int main () { int n, k; float p; /* n – переменная цикла, k – число факториала, p - значение факториала */ printf ("Введите число k = "); scanf ("%d",&k); /* Ввод числа */ p = 1; n = 1; /* Начальные значения */ while (n <= k) { /* Вычисление факториала в цикле */ p = p * n; /* Приращение переменной цикла */ n++; } printf ("Значение факториала p = %G\n ",p); return 0; } ТОИ-ИМ 13

Элементы ЯПВУ Цикл с постусловием ТОИ-ИМ 14 Эта конструкция используется для выполнения цикла, условие завершения которого проверяется в конце цикла. Таким образом, действия тела цикла выполняются до проверки условия продолжения итераций цикла. В псевдокоде для описания цикла с предусловием используется следующая конструкция: ПОВТОРЯТЬ Тело цикла ПОКА условие P истинно [ как вариант – ложно] - условие P – логическое условие. В разных языках программирования (ЯП) логика условия цикла может различаться: в одних ЯП цикл завершается когда условие ложно (С/С++), в других когда – истинно (Pascal). Конструкция ПОВТОРЯТЬ-ПОКА обеспечивает выполнение алгоритма запрограммированного в теле цикл до проверки условия, таким образом, действия тела цикла будут обязательно выполнены хотя бы один раз. Принудительное завершении всего цикла или текущей итерации – операторы безусловного перехода : break, continue, return, goto.

Элементы ЯПВУ Цикл с постусловием ТОИ-ИМ 15 Работа цикла ПОВТОРЯТЬ-ПОКА: 1. Один раз выполняются действия (операции) заданные в теле цикла, 2. Проверяется логическое условие Р, 3. Если условие Р истинно [ложно], выполняется переход к началу цикла и снова выполняется тело цикла, 4. Снова проверяется условие Р, если оно по-прежнему истинно [ложно], то снова повторяется тело цикла, 5. Если условие Р становиться ложно [истинно], то управление передаётся к действию, следующему за проверкой условиях ПОКА, и тело цикла больше не выполняется. В виде блок-схемы эта конструкция выглядит так: В ЯП Pascal эта конструкция реализуется с помощью оператора repeat-until; в языке С – do-while Л [И]Л [И] И [Л]И [Л] ПОВТОРЯТЬ Тело цикла ПОКА условие P истинно ?

Элементы ЯПВУ C Операторы Pascal Цикл repeat-until Цикл do-while Repeat Until ; где - Repeat и Until – ключевые слова повторять и пока, - операторы цикла – произвольная последовательность операторов, - условие – выражение логического типа. В этой конструкции при несколь- ких операциях в теле цикла – операторные скобки не требуются, но разрешены. do while ( ); где - do и while – ключевые слова выполнять и пока, - оператор – одиночный или составной оператор, - условие – выражение. ТОИ-ИМ 16 Обратить внимание!!! В цикле repeat-until (Pascal) логика повторения итераций цикла противоположна логике повторения остальных циклов Pascal и С: если условие Ложно – цикл повторяется, если Истинно – происходить выход из цикла.

Примеры цикла r epeat-until и do-while Блок-схема: Определить, является ли введенное с клавиатуры целое число простым Элементы ЯПВУ ТОИ-ИМ 17 ТО Начало Конец Запросить " Введите n = " Получить n r = n % d ЕСЛИ r <> 0 d = 2 Вывести " простое." ПОВТОРЯТЬ Вывод результата Ввод числа n d = d + 1 И Л ЕСЛИ ВСЁ 1 1 ТО ЕСЛИ d = n Вывести "Число n – " ЕСЛИ ВСЁ Вывести " не " ИНАЧЕ Является ли введенное с клавиатуры целое число простым Начинаем с делителя равного 2 Остаток от деления на d Цикл про- должается пока остаток не равен 0 Если раздели- лось не наце- ло, то переход к следующему кандидату в делители Цикл поиска делителей числа n Есть ли де- лители кро- ме 1 и d=n? ИНАЧЕ ПОКА r <> 0

Элементы ЯПВУ C Операторы Pascal Цикл repeat-until Цикл do-while Примеры Определить, является ли введенное с клавиатуры целое число простым Program Simple number; Var n, d, r : Integer; (* n – проверяемое число, d – текущий де- литель, r – текущий остаток от деления *) Begin Write('Введите целое число n = '); ReadLn (n); d := 2; (* Сначала делим на 2 *) Repeat (* Остаток от деления на d *) r := n mod d; (* n не разделилось нацело на d *) If r <> 0 Then d := d + 1; Until r = 0; If d = n Then WriteLn (n, ' – простое число') Else WriteLn (n, ' – не простое число'); End. #include int main () { int n, d, r; /* n – проверяемое число, d – текущий делитель, r – текущий остаток от деления */ printf ("Введите целое число n = "); scanf ("%d",&n); d = 2; /* Сначала делим на 2 */ do { r = n % d; /* Остаток от деления на d */ if (r != 0) d = d + 1; /* не нацело */ } while ( r != 0); if (d == n) { printf(" - %d",n); printf("простое число\n"); } else { printf("%d",n); printf("не простое число\n"); } return 0; } ТОИ-ИМ 18