Скачать презентацию Алгоритмизация задач 16 02 2018 1 Этапы Скачать презентацию Алгоритмизация задач 16 02 2018 1 Этапы

Л_8_9Алгоритмизация_2012_белый.ppt

  • Количество слайдов: 47

Алгоритмизация задач 16. 02. 2018 1 Алгоритмизация задач 16. 02. 2018 1

Этапы решения задач на ЭВМ. 1. Постановка задачи определяется цель решения задачи. Задача формулируется Этапы решения задач на ЭВМ. 1. Постановка задачи определяется цель решения задачи. Задача формулируется на уровне профессиональных понятий (д. б. понятна пользователю). Ошибка в постановке задачи, обнаруженная на последующих этапах, приводит к тому, что работа над задачей начинается сначала. Пример. Найти площадь треугольника по заданным сторонам a, b, c 2. Математическая формулировка задачи Разрабатывается мат. модель решаемой задачи: a) осуществляется формализация задачи путем описания ее с помощью формул; b) определяется перечень исходных данных и получаемых результатов, начальные условия, точность вычисления и т. д. Пример. 16. 02. 2018 2

2. Выбор численного метода решения. В ряде случаев одна и та же задача может 2. Выбор численного метода решения. В ряде случаев одна и та же задача может быть решена с помощью различных численных методов. Выбор определяется многими факторами: временем решения, точностью и т. д. 4. Разработка алгоритма решения задачи. 5. Написание программы. 6. Ввод программы и исходных данных. 7. Отладка и тестирование программы. 8. Решение задачи на ЭВМ. 9. Анализ результатов. 16. 02. 2018 3

4. Разработка алгоритма решения задачи. Слово «алгоритм» появилось в результате искаженного перевода с арабского 4. Разработка алгоритма решения задачи. Слово «алгоритм» появилось в результате искаженного перевода с арабского на европейские языки имени узбекского ученого IX века Аль Хорезми Алгоритм – некоторая конечная последовательность правил, определяющая процесс преобразования исходных и промежуточных данных в результат решения задачи. 16. 02. 2018 4

Свойства алгоритма. Алгоритм имеет ряд обязательных свойств, отличающих его от других предписаний и обеспечивающих Свойства алгоритма. Алгоритм имеет ряд обязательных свойств, отличающих его от других предписаний и обеспечивающих его автоматическое выполнение. • Массовость алгоритм позволяет решать не одну задачу, а целый класс задач • Детерминированность однозначно определяет выполняемые действия (при одинаковых исходных данных промежуточные и окончательные результаты разных пользователей будут одинаковыми) • Результативность позволяет получать результат после конечного числа шагов • Дискретность предусматривает разбиение процесса обработки информации на более простые этапы (шаги выполнения), выполнение которых человеком или компьютером не вызывает затруднений 16. 02. 2018 5

Способы задания алгоритмов • Словесный предполагает описание алгоритма без формул и таблиц. Этим способом Способы задания алгоритмов • Словесный предполагает описание алгоритма без формул и таблиц. Этим способом можно описывать алгоритмы с любой степенью детализации. • Формульнословесный более компактный. В нем словесные описания сочетаются с формулами. • Табличный предполагает представление алгоритма в виде таблицы решений и в основном носит вспомогательный характер. • Графический 16. 02. 2018 Схема алгоритмов представляет собой последовательность блоков, предписывающих выполнение определенных действий, и связи между ними 6

Графический способ описания алгоритмов Наименование Процесс Решение Модификация Предопределенный процесс Обозначение Функции Вычислительное действие Графический способ описания алгоритмов Наименование Процесс Решение Модификация Предопределенный процесс Обозначение Функции Вычислительное действие или последовательность вычислительных действий Проверка условия и выбор направления выполнения алгоритма Начало цикла Вычисление по подпрограмме Вводвывод данных на монитор Дисплей 16. 02. 2018 7

Наименование Обозначение Функции Безотносительный ввод-вывод Данные Вывод на принтер Документ Пуск-останов Начало и конец Наименование Обозначение Функции Безотносительный ввод-вывод Данные Вывод на принтер Документ Пуск-останов Начало и конец обработки данных Соединитель Указание связи между прерванными линиями Комментарий 16. 02. 2018 Связь между элементами схемы и пояснениями 8

Основные структуры алгоритмов • Основные структуры алгоритмов – это ограниченный набор блоков и стандартных Основные структуры алгоритмов • Основные структуры алгоритмов – это ограниченный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий. • Структурный подход предполагает использование только нескольких основных структур, комбинация которых дает все многообразие алгоритмов и программ. По управлению вычислительным процессом структуры алгоритмов бывают: 1. Линейные 2. Разветвляющиеся 3. Циклические 4. Со структурой вложенных циклов 5. Комбинированные 16. 02. 2018 9

Понятие переменной Переменная – программный объект, обладающий именем и значением, которое может быть получено Понятие переменной Переменная – программный объект, обладающий именем и значением, которое может быть получено и изменено программой. При составлении алгоритмов следует знать, что для каждой переменной выделяется ячейка, которая обладает свойствами: • к началу выполнения программы содержимое всех ячеек считается неопределенным (в частности, их нельзя считать и пустыми); • значение в ячейку заносится оператором присваивания (: =)и хранится до тех пор, пока в эту ячейку не будет помещено новое значение, при этом предыдущее значение уничтожается; • в ячейке хранится одно значение; • ячейка способна хранить значения только одного и того же типа. Попытка поместить значение другого типа расценивается как ошибка в программе; • значение ячейки может быть использовано многократно, при этом содержимое ячейки не меняется (выдается копия). 16. 02. 2018 10

Чтобы переменную использовать в программе, ее надо предварительно описать, указав 4 характеристики • Имя Чтобы переменную использовать в программе, ее надо предварительно описать, указав 4 характеристики • Имя переменной (идентификатор) -последовательность английских букв, цифр, символов подчеркивания и не начинающаяся с цифры • Тип определяет, какая информация хранится в данной переменной (число, логическая переменная, символ, строка и т. д. ), а также операции, которые можно над ней выполнять. Согласно типу отводится объем памяти для хранения. • Каждая единица информации хранится в ячейке памяти, имеющей адрес. Понятие переменной позволяет отвлечься от конкретного адреса и обращаться к содержимому памяти с помощью имени. • Значение переменной Имя real 12. 34 Адрес 16. 02. 2018 Тип Значение Пример alpha $1000: $2 A 34 11

После описания переменной к ней можно обращаться, но она имеет неопределенное значение. Переменную можно После описания переменной к ней можно обращаться, но она имеет неопределенное значение. Переменную можно применять т. и т. т. , когда ей задано определенное значение либо в результате выполнения оператора присваивания , либо оператора ввода. Оператор присваивания имеет две части – левую (имя переменной) и правую (выражение), соединенные знаком присваивания (: =). Оператор присваивания • вычисляет значение правой части; • записывает вычисленное значение в переменную, указанную слева. alpha: = 12. 34; f: =b*2+c; b 1: =b 1 -5; Оператор ввода • Заполняет ячейки памяти с клавиатуры • делает программу более универсальной (массовой), т. к. дает возможность решать одни и те же задачи для разных значений переменных: Write(‘Введи число alpha : ’); readln(alpha); 16. 02. 2018 12

I. Алгоритмы линейной структуры (следование) Алгоритмы линейной структуры - это алгоритмы, в которых все I. Алгоритмы линейной структуры (следование) Алгоритмы линейной структуры - это алгоритмы, в которых все действия выполняются последовательно друг за другом (в естественном порядке). Пример. Найти S треугольника по заданным begin сторонам a, b, c. Численный метод: формула Геррона a, b, c P: =(a+b+c)/2 S p, S end 16. 02. 2018 uses crt; var a, b, c : real; p, S : real; begin clrscr; write('Введите числa a, b, c: '); readln(a, b, c); p: =(a+b+c)/2; S: =sqrt(p*(p-a)*(p-b)*(p-c)); writeln(‘p=', p: 5: 2, ’S=’, S: 5: 2); end. 13

Элементы программирования 16. 02. 2018 14 Элементы программирования 16. 02. 2018 14

II. Алгоритмы разветвляющейся структуры a)Разветвление – алгоритмы, в которых в зависимости от выполнения некоторого II. Алгоритмы разветвляющейся структуры a)Разветвление – алгоритмы, в которых в зависимости от выполнения некоторого условия вычислительный процесс должен идти по одной или другой ветви. Пример. Вычислить 1/xy b) Обход - это частный случай разветвления, когда одна из ветвей не содержит никакого действия. c) Множественный выбор. Является обобщением разветвления, когда в зависимости от значения переменной (I) выполняется одно из нескольких действий (Д 1, Д 2 , . . . , Дn). 16. 02. 2018 Условие действие 1 действие 2 Условие действие 1 I Д 1 Д 2 …. Дn 15

Условный оператор имеет две формы: полную и короткую. Полная форма (ветвление) if<логич. выражение>then<команда 1>else<команда Условный оператор имеет две формы: полную и короткую. Полная форма (ветвление) if<логич. выражение>then<команда 1>else<команда 2>; • Действие команды. Если логическое выражение истинно, то выполняется команда 1, в противном случае – команда 2. Команды 1 и 2 могут быть простыми или составными. Короткая форма (обход) if<логич. выражение>then<команда 1>; • Действие команды. Если логическое выражение истинно, то выполняется команда 1, иначе выполняется команда, которая находится после данной конструкции.

Пример. (Разветвление) Даны два действительных числа x, y. Вычислить t=1/(xy). begin x, y xy=0 Пример. (Разветвление) Даны два действительных числа x, y. Вычислить t=1/(xy). begin x, y xy=0 t: =1/(xy) x, y uses crt; var x, y : real; t : real; begin clrscr; + write('Введите числa x, y: '); readln(x, y); if x*y =0 then writeln(' Деление на 0 ') else begin ‘Деление на 0’ t: =1/(x*y); writeln(‘t=', t: 5: 2); end. 16. 02. 2018 17

Пропустить. Пример. (Разветвление) Даны два действительные числа. Большее число заменить их uses crt; суммой, Пропустить. Пример. (Разветвление) Даны два действительные числа. Большее число заменить их uses crt; суммой, а меньшее их удвоенным произведением. begin x, y a: =x b: =y + - x>y x: =a+b y: =2 ab y: =a+b x: =2 ab x, y end. 16. 02. 2018 var x, y : real; a, b : real; begin clrscr; write('Введите числa x, y: '); readln(x, y); a: =x; b: =y; if x>y then begin x: =a+b; y: =2*a*b end else begin y: =a+b; x: =2*a*b end; writeln('x=', x: 5: 2, ’y=’, y: 5: 2); end. 18

Пример. (Обход). Даны два действительные числа. Найти наименьшее из них. begin x, y z: Пример. (Обход). Даны два действительные числа. Найти наименьшее из них. begin x, y z: =x + z>y z: =y z end. 16. 02. 2018 uses crt; var x, y : real; z: real; begin clrscr; write('Введите числa x, y: '); readln(x, y); z: =x; if z>y then z: =y; writeln(‘z=', z: 5: 2); end.

Множественный Если значение выражения выбор. совпадает с некоторым В Паскале множественному выбору соответствует команда Множественный Если значение выражения выбор. совпадает с некоторым В Паскале множественному выбору соответствует команда выбора case: значением из i-го списка, то case <выражение> of выполняется команда с <список значений 1> : <команда 1>; номером i, а другие команды. . . этой конструкции <список значений i> : <команда i>; игнорируются. . . <список значений n> : <команда n> else <команда n+1> end; Список значений перечисляется через запятую. Короткая форма команды case не содержит else - часть. Если значение <выражения> <выражение> –переменная одного из типов не совпадает ни с одним значением из любого списка, целого, то выполняется команда n+1; символьного, в случае перечислимого, короткой формы – следующая логического типа; команда после <списки значений> - константы, case. которых совпадает с типом тип <выражения>. 16. 02. 2018 20

Пример. Дано целое i (1≤i≤ 99), где i означает число лет. Напечатать фразу: «Мне Пример. Дано целое i (1≤i≤ 99), где i означает число лет. Напечатать фразу: «Мне i лет (год, года)» begin i - i<=14 и i>=11 + z=i mod 10 . 9 , 5. 0 z ‘Мне’, i, ‘лет’ 16. 02. 2018 ‘Мне’, i, ‘лет’ 2, 4 1 ‘Мне’, i, ‘год’ end. ‘Мне’, i, ‘года’ uses crt; var i, z : byte; begin clrscr; write('Введите число i: '); readln(i); if (i<=14) and(i>11) then writeln('Мне ', i, ' лет' ) else begin z: = i mod 10; case z of 0, 5. . 9: writeln('Мне ', i, ' лет' ); 1 : writeln('Мне ', i, ' год'); 2. . 4 : writeln('Мне ', i, ' года'); end; end. 21

III. Алгоритмы циклической структуры Алгоритм циклической структуры – это алгоритм, содержащий многократно выполняемые группы III. Алгоритмы циклической структуры Алгоритм циклической структуры – это алгоритм, содержащий многократно выполняемые группы действий, называемые циклами. Каждый этап выполнения цикла имеет номер и называется шагом или итерацией Группа повторяющихся действий на каждом шаге цикла называется телом цикла. С алгоритмической точки зрения различают виды циклов: – арифметические с заданным числом шагов ( «строгий цикл» ); – итерационные с неизвестным числом повторений число шагов может меняться в зависимости от значений параметров, из которых формируется условие повторения цикла. 16. 02. 2018 22

Стандартные циклические структуры Арифметические a) for-цикл - цикл с параметром ; Начальные значения Заголовок Стандартные циклические структуры Арифметические a) for-цикл - цикл с параметром ; Начальные значения Заголовок цикла Тело цикла . . . Итерационные b)while-цикл - цикл с предусловием; c) repeat-цикл с постусловием Начальные значения Условие повторения цикла + Тело цикла - Условие выхода из цикла + 16. 02. 2018 . . . 23

Цикл с параметром (for-цикл). В Паскале есть два вида команды for. Графическая схема <параметр>, Цикл с параметром (for-цикл). В Паскале есть два вида команды for. Графическая схема <параметр>, <выражение 1> , <выражение 2> могут иметь целый, символьный, логический или перечислимый тип; Начальные значения Заголовок цикла Тело цикла . . . for <параметр>: =<выраж. 1> to <выраж. 2> do for <параметр>: =<выраж. 1> downto <выраж. 2> do <команда 1> где <параметр> - переменная цикла; <выражение 1> - стартовое значение параметра; <выражение 2> - конечное значение параметра; <команда 1> - тело цикла. Если тело цикла содержит несколько операторов, то используется составная команда. 16. 02. 2018 24

for <параметр> : =<выраж. 1> to <выраж. 2> do <команда 1>; Действие команды: 1) for <параметр> : =<выраж. 1> to <выраж. 2> do <команда 1>; Действие команды: 1) выполняется оператор присваивания: 1. <параметр> : =<выражение 1> 2) выполняется проверка условия <параметр> ≤ <выражение 2> а) если условие имеет значение true, то v v v выполняется тело цикла готовится очередная итерация: параметр автоматически увеличивается на 1 повторяется пункт 2; б) если условие имеет значение false, то цикл завершается, управление передается следующему оператору. Замечания. 1) Не корректно изменять <параметр> в теле цикла. 2) После цикла переменная цикла считается неопределенной. 3) Циклы вида игнорируются. for i : =5 to 4 do <команда 1>; 16. 02. 2018 25

for <параметр> : =<выраж. 1> downto <выраж. 2> do <команда 1>; Действие команды: 1) for <параметр> : =<выраж. 1> downto <выраж. 2> do <команда 1>; Действие команды: 1) выполняется оператор присваивания: 2) выполняется проверка условия <параметр> : =<выражение 1> ≥ <выражение 2> а) если условие имеет значение true, то v v v выполняется тело цикла готовится очередная итерация: параметр автоматически уменьшается на 1 повторяется пункт 2; б) если условие имеет значение false, то цикл завершается, управление передается следующему оператору. Замечания. 1) Не корректно изменять <параметр> в теле цикла. 2) После цикла переменная цикла считается неопределенной. 3) Циклы вида 16. 02. 2018 for i : =4 downto 5 do <команда 1>; игнорируются. 26

while <логическое выражение> do <команда 1> ; Действие команды: 1) условие продолжения цикла: <логическое while <логическое выражение> do <команда 1> ; Действие команды: 1) условие продолжения цикла: <логическое выражение > = true; условие выхода из цикла : <логическое выражение> = false, 2) если перед первой итерацией <логическое выражение> = false, то цикл не выполняется; 3) <команда 1> может быть записана как составная команда; 4) вечный цикл : while true do; repeat <команды> until <логическое выражение>; 1) цикл стартует сразу и выполняется по крайней мере один раз; 2) repeat открывает, until закрывает цикл. Между ними может находится более одного оператора; 3) условие продолжения цикла: <логическое выражение > = false; условие выхода из цикла : <логическое выражение > = true; 4) вечный цикл : repeat until false; 16. 02. 2018 27

Важные замечания. 1) <логическое выражение> должно содержать корректные выражения и значения. Они определяются в Важные замечания. 1) <логическое выражение> должно содержать корректные выражения и значения. Они определяются в программе до проверки условия; 2) цикл должен иметь шанс когда-нибудь завершиться содержимое тела цикла должно влиять на <логическое выражение> 3) для безопасности рекомендуется писать тело цикла так, чтобы оператор, влияющий на изменение <логического выражения>, был последним в цикле. 4) тело цикла может содержать другие циклы (структура вложенных циклов); 16. 02. 2018 28

Стандартные алгоритмы циклической структуры 16. 02. 2018 29 Стандартные алгоритмы циклической структуры 16. 02. 2018 29

Вычислить Y=n! =1*2*…*n. Блок схема begin n Y: =1 i: =1, n Y: =Y*i Вычислить Y=n! =1*2*…*n. Блок схема begin n Y: =1 i: =1, n Y: =Y*i i<= n + Y: =Y*i i: =i+1 - i>n + Y Y Y end. 16. 02. 2018 end. 30

Пример. Вычислить Y=n! =1*2*…*n. Программа uses crt; var n, i, : byte; y : Пример. Вычислить Y=n! =1*2*…*n. Программа uses crt; var n, i, : byte; y : longint; begin clrscr; write('Введите n: ’); readln(n); y: =1; for i: =1 to n do y: =y*i; writeln(‘n!=‘, y); end. 16. 02. 2018 uses crt; var n, i, : byte; y : longint; begin clrscr; write('Введите n: ’); readln(n); y: =1; i: =1; while i<= n do begin y: =y*i; i: =i+1 end; writeln(‘n!=‘, y); end. uses crt; var n, i, : byte; y : longint; begin clrscr; write('Введите n: ’); readln(n); y: =1; i: =1; repeat y: =y*i; i: =i+1 until i>n; writeln(‘n!=‘, y); end. 31

Пример. Дано целое n. Найти минимальное из uses crt; a 1, a 2, …, Пример. Дано целое n. Найти минимальное из uses crt; a 1, a 2, …, an. чисел begin n, a y: =a i: =2, n a + y>a y: =a var n, i : byte; a, y : real; begin clrscr; write('Введите n – число элементов: ); readln(n); write('Введите a– 1 -й элемент: '); readln(a); y: =a; for i: =2 to n do begin write('Введите a–‘, i, ’-й элемент: '); readln(a); if y>a then y: =a; end; writeln('y=', y: 5: 2 ); end. y end. 16. 02. 2018 32

 • В процессе решения задачи некоторая переменная Р может изменять свои значения, но • В процессе решения задачи некоторая переменная Р может изменять свои значения, но в любой момент в памяти хранится только одно - последнее значение. • Изменение значения происходит по правилу, которое формулирует программист из условия задачи: P: =f(P) (новое значение получено преобразованием старого). Например, • Y: =Y+1; • F: =F*X; • X: =N*X+1/N 16. 02. 2018 33

Пример. Накопление суммы. Вычислить • • • Если необходимо накопить сумму значений некоторой функции Пример. Накопление суммы. Вычислить • • • Если необходимо накопить сумму значений некоторой функции при различных значениях аргумента, организуют цикл, в котором необходимо: Ø вычислять значение функции; Ø накапливать сумму путем прибавления полученного значения к сумме предыдущих слагаемых. Поскольку запоминать все значения функции и промежуточные суммы нет необходимости, целесообразно для накопления суммы использовать формулу S: =S+y, (где у - очередное слагаемое). Операция присваивания означает, что вычисляемое значение выражения S+y присваивается переменной S, как новое ее значение. Если перед циклом задать начальное значение S=0, то Ø после первого выполнения цикла S будет равно первому слагаемому, Ø после второго - сумме первого и второго и т. д. , Ø после окончания цикла S будет равно сумме всех вычисленных слагаемых. 16. 02. 2018 34

Пример. begin a, b S: =0 i: =a, b x S: =S+x/i S end. Пример. begin a, b S: =0 i: =a, b x S: =S+x/i S end. 16. 02. 2018 uses crt; var x : real; S : real; a, b, i : byte; begin clrscr; write('Введите границы суммирования a, b: ’); readln(a, b); S: =0; for i: =a to b do begin write('Введите x–‘, i, ’-й элемент: '); readln(x); S: =S+x/i end; writeln(‘S=', S: 5: 2 ); end. 35

Пример. Задача табулирования функции. Вычислить значения функции Z=sin(x)/x begin uses crt; при a<=х<=b с Пример. Задача табулирования функции. Вычислить значения функции Z=sin(x)/x begin uses crt; при a<=х<=b с шагом : real; h. var a, b, h x, z x: =a x<= + b z: =sinx/x x, z x: =x+h end. 16. 02. 2018 : real; begin clrscr; write('Введите границы отрезка a, b: ’); readln(a, b); writeln('Введите шаг изменения х : h'); readln(h); x: =a; while x<=b do begin z: =sin(x); writeln('При х=', x, 'функция z =', z); x: =x+h end; end. 36

Пример. Схема Горнера. Вычислить значение многочлена Выполним преобразования у=а 1 x n + a Пример. Схема Горнера. Вычислить значение многочлена Выполним преобразования у=а 1 x n + a 2 x nn-1 a +. . . + x + + a a n a x a n+1 = в y=а 1 x + 2 x n-1 n n+1 заданной точке х 1 x+a 2)x+. . . + a n) x + a n+1 = (. . . (a y=3 x 3 -5 x 2 +4 x -7 = (3 x 2 -5 x+4) x -7= ((3 x-5)x+4) x -7 ØОбозначим выражениево внутренних скобках через y выражение в следующих скобках можно вычислить по формуле y: =y*x+a ØНачальное значение У =0 y=(((0*x+3)х-5)x+4) x -7 ØЗначение многочлена получается после выполнения цикла n+1 раз ØЕсли многочлен не содержит элементов с некоторыми степенями, то соответствующие коэффициенты равны 0. ØАлгоритм м. б. применен для перевода чисел из произвольной системы счисления в десятичную. 16. 02. 2018 37

Пример. Схема Горнера begin n, x Y: =0 i: =1, n+1 a Y: =Y*x+a Пример. Схема Горнера begin n, x Y: =0 i: =1, n+1 a Y: =Y*x+a Y end. 16. 02. 2018 uses crt; var x, a : real; y : real; n, i : byte; begin clrscr; write('Введите степень многочлена n: ’); readln(n); writeln('Введите точку х='); readln(x); y: =0; for i: =1 to n+1 do begin write('Введите коэффициент а[', i , '] : '); readln(a); y: =y*x+a; end; writeln('Значение многочлена в точке x = ', x, ' равно ', y: 4: 2); end. 38

Пример. Вычисление суммы бесконечного ряда. Не используя стандартные функции (за исключением abs), вычислить с Пример. Вычисление суммы бесконечного ряда. Не используя стандартные функции (за исключением abs), вычислить с точностью eps>0 y=ex=1+x/1!+x 2/2!+. . . +xn/n!+. . . Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше eps, - все последующие слагаемые можно уже не учитывать. 16. 02. 2018 39

1. begin 2. x, - abs(x)<= 1 + k: =0; d: =1 S: =1 1. begin 2. x, - abs(x)<= 1 + k: =0; d: =1 S: =1 3. - «Ряд расходится» d> + k: =k+1 d: =d*x/k S: =S+d d 4. Организуется цикл с неизвестным числом повторений. Выход из цикла осуществляется по достижению требуемой точности. При вычислении любого члена ряда с номером k используется прием накопления произведения d=d*x/k Для вычисления результата используется прием накопления суммы S=S+d k, S 16. 02. 2018 40 End.

uses crt; var x, e : real; d , s : real; k : uses crt; var x, e : real; d , s : real; k : byte; begin clrscr; writeln('Введите точность вычислений: E'); readln(e); writeln('Введите х '); readln(x); if abs(x)<=1 then begin k: =0; d: =1; s: =1; while d>e do begin k: =k+1; d: =d*x/k; s: =s+d; end; writeln('Для значения k=', k , ' Сумма = ', S: 2: 7); end else writeln('Для значения x=', x: 2: 7 , ' ряд расходится') end. 16. 02. 2018 41

Домашнее задание Нахождение наибольшего (наименьшего) значения вычисляемой функции. 16. 02. 2018 42 Домашнее задание Нахождение наибольшего (наименьшего) значения вычисляемой функции. 16. 02. 2018 42

for <параметр> : =<выражение 1> to <выражение 2> do <команда 1>; Действие команды: Графическая for <параметр> : =<выражение 1> to <выражение 2> do <команда 1>; Действие команды: Графическая схема Начальные значения Заголовок цикла Тело цикла Следующий оператор 16. 02. 2018 1) параметру цикла присваивается значение <выражения 1> <параметр> : =<выражение 1> 2) выполняется проверка <параметр> ≤ <выражение 2> а) если условие имеет значение true, то v выполняется очередной шаг цикла; v параметр автоматически увеличивается на 1 v повторяется пункт 2; б) если условие имеет значение false, то v цикл завершается v управление передается следующему оператору. Замечания. 1) Цикл for i : =5 to 4 do <команда 1>; игнорируется. 2) Не корректно изменять <параметр> в теле цикла. 3) После цикла переменная цикла считается неопределенной. 43

for <параметр> : =<выражение 1> > downto <выражение 2> do <команда 1>; Графическая схема for <параметр> : =<выражение 1> > downto <выражение 2> do <команда 1>; Графическая схема Начальные значения Заголов ок цикла Тело цикла . . . 16. 02. 2018 Действие команды: 1) параметру цикла присваивается значение <выражения 1> <параметр> : =<выражение 1> 2) выполняется проверка <параметр> ≥ <выражение 2> а) если условие имеет значение true, то § выполняется очередная итерация цикла (т. е. операторы, составляющие тело цикла); § значение параметра автоматически уменьшается на 1 и повторяется пункт 2; б) когда значение <параметра> станет меньше, чем <выражение 2>, то цикл завершается, и управление передается следующему за циклом оператору. Замечания. 1) Цикл for i : =4 down to 5 do <команда 1>; игнорируется. 2) Не корректно изменять <параметр> в теле цикла. 3) После цикла переменная цикла считается неопределенной. 44

while <логическое выражение> do <команда 1> ; Действие команды: 1) <логическое выражение> должно содержать while <логическое выражение> do <команда 1> ; Действие команды: 1) <логическое выражение> должно содержать корректные выражения и значения, которые определяются в программе до первого выполнения тела цикла; 2) пока значение логического выражения истинно, выполняется <команда 1> (истинное логическое выражение определяет условие продолжения цикла); 3) если <логическое выражение> перед первой итерацией принимает значение ложь, то цикл вообще не выполняется; 4) если после do должно быть выполнено несколько операторов, то используется составная команда; 5) тело цикла может содержать другие циклы (имеет структуру вложенных циклов); 6) цикл должен иметь шанс когда-нибудь завершиться, т. е. содержимое его тела должно влиять на <логическое выражение> 7) вечный цикл : while true do; 8) для безопасности рекомендуется писать тело цикла так, чтобы оператор, влияющий на изменение <логического выражения>, был последним в цикле. 16. 02. 2018 45

repeat <команды> until <логическое выражение>; Действие команды: 1) <логическое выражение> должно содержать корректные выражения repeat <команды> until <логическое выражение>; Действие команды: 1) <логическое выражение> должно содержать корректные выражения и значения, которые определяются в программе до проверки условия; 2) пока значение логического выражения ложно, выполняются <команды>, составляющие тело цикла. (Истинное логическое выражение определяет условие выхода из цикла); 3) цикл repeat выполняется по крайней мере один раз; 4) repeat открывает, until закрывает цикл. Между ними может находится более одного оператора; 5) тело цикла может содержать другие циклы (имеет структуру вложенных циклов); 6) цикл должен иметь шанс когда-нибудь завершиться, т. е. содержимое его тела должно влиять на <логическое выражение> 7) вечный цикл : repeat until false; 8) для безопасности рекомендуется писать тело цикла так, чтобы оператор, влияющий на изменение <логического выражения>, был последним в цикле. 16. 02. 2018 46

Вычислить Y=n! =1*2*…*n begin n Y: =1 i: =1, n Y: =Y*i i<= n Вычислить Y=n! =1*2*…*n begin n Y: =1 i: =1, n Y: =Y*i i<= n + Y: =Y*i i: =i+1 - i>n + Y Y Y end. 16. 02. 2018 end. 47