- •Список рассматриваемых вопросов
- •1 Полная форма конструкции “если” (“если – то -иначе”) 34
- •2 Конструкция “если - то” 36
- •3 Конструкция “если - иначе” 39
- •Лекция 1 Основные этапы решения задач с использованием математического моделирования.
- •Вопрос 1
- •Основные этапы решения задач с использованием математического моделирования.
- •Вопрос 2 Методический пример решения задачи с использованием математического моделирования. Программирование линейных алгоритмов.
- •Вопрос 3 Анализ текста данной программы
- •Вопрос 4 Некоторые стандартные функции (модуль System программной среды Borland Pascal)
- •Вопрос 5 Операции над данными в языке Паскаль
- •Вопрос 6 Приоритет арифметических операций
- •Лекция 2
- •Вопрос 1 Программирование схемы алгоритма (п. 3.4 вопрос 2 лекции 1)на языке Delphi (консольный режим)
- •Вопрос 2 Создание консольного приложения в среде Delphi версия 7
- •Вопрос 3 Особенности подготовки к разработке консольного приложения Delphi в среде Borland Developer Studio 2005 или 2006 (версия 10)
- •Вопрос 4
- •Вопрос 5 Анализ текста данной программы
- •Лекция 3
- •Вопрос 1
- •Вопрос 2
- •Вопрос 3
- •Вопрос 4
- •Вопрос 4
- •Вопрос 5 Пример использования подпрограмм при программировании в среде Паскаль
- •Составление схемы алгоритма
- •Запись алгоритма на языке программирования Borland Pascal.
- •Вопрос 5 Анализ данного программного обеспечения, включающего использование подпрограммы.
- •Лекция 4 составление и реализация разветвляющихся алгоритмов
- •Вопрос 1
- •Базовые логические структуры
- •Вопрос 2 Операторы языка программирования Delphi (Паскаль)
- •Вопрос 3
- •Вопрос 4
- •Вопрос 5.
- •2 Конструкция “если - то”
- •Вопрос 6
- •3 Конструкция “если - иначе”
- •Вопрос 7 Пример конструкции “если” с использованием составного оператора
- •Вопрос 7 Текст программы на языке Delphi (консольный режим)
- •Вопрос 8 Варианты записи условий (логических выражений)
- •Вопрос 9 Пример решения задачи с использованием конструкции “если”, вложенной в другую конструкцию “если”, отладочной печати и стандартного модуля “Printer”
- •Вопрос 10 Использование отладчика при отладке указанной программы
- •Вопрос 11 Конструкция типа ”выбор” (”вариант”)
- •Реализация конструкции Выбор на языке програмирования.
- •Комментарий к фрагменту программы реализующему конструкцию Выбор:
- •Вопрос 12
- •Лекция 5 составление и реализация циклических алгоритмов
- •Вопрос 1
- •Вопрос 2
- •Вопрос 3 Конструкция повторение с постусловием (repeat …until) («до»)
- •Запись конструкции в виде схемы с использованием блока решение.
- •Описание работы конструкции «до» .
- •Запись конструкции на языке Паскаль и Delphi:
- •Пример решения предыдущей задачи с использованием конструкции повторение с постусловием (repeat…until)
- •Программа решения задачи с использованием конструкции repeat … until.
- •Вопрос 4 Запись конструкции повторение в виде схемы с использованием блока модификация
- •Вопрос 5 Конструкция повторение с параметром (for) («Для»)
- •Особенности конструкции «Для»
- •Запись конструкции «Для» в виде схем
- •2.4 Использование блока «модификация» при шаге -1
- •Запись конструкции «Для» на языке Паскаль (Delphi)
- •Замечания по применению конструкции for
- •Пример решения задачи с использованием конструкции
- •Лекция 6 Разработка и программирование итерационных алгоритмов
- •Задача 1 на использование итерационных алгоритмов
- •Условие задачи
- •Вычислить
- •Анализ особенностей задачи
- •Метод решения задачи
- •Условие задачи
- •Анализ особенностей решения задачи
- •Метод решения задачи
- •Алгоритм решения задачи без использования индексированных переменных
-
Пример решения задачи с использованием конструкции
повторение с параметром
Рассмотрим решение ранее сформулированной задачи при изменении Х с шагом равным 1 и при целочисленных значениях Xn и Xk.
-
Схема алгоритма решения задачи
c
Программа для решения задачи
program forp;
var
a,b,y:real;
x,xn,xk:integer;
begin
write('введите значения переменных a,b,xn,xk: ');
readln(a,b,xn,xk);
writeln('Исходные данные: a=',a:4:2,' b=',b:4:2,' xn=',xn,' xk=',xk);
writeln('Результат табулирования функции y=ax+b: ');
for x:=xn to xk do
begin
y:=a*x+b;
writeln(' x=',x,' y=':20,y:4:2);
end;
readln
end.
Лекция 6 Разработка и программирование итерационных алгоритмов
Рассмотрение будет вестись на примере решения конкретных задач.
Задача 1 на использование итерационных алгоритмов
-
Условие задачи
Даны действительные числа a, b и натуральное число n.
Вычислить
-
Анализ особенностей задачи
В этой задаче удобно считать последнее слагаемое n-ым. С учетом этого, получим заданное выражение в виде:
Будем использовать следующие обозначения: Sо, S1, …, Sn – соответственно слагаемые нулевое, первое, …, n-oe; So, S1, …, Sn – сумма нулевая, первая, …, n-ая.
Для выполнения циклических действий введем переменную i, которая представляет собой одновременно порядковый номер текущих слагаемого и частичной суммы. Для удобства записи данного выражения с включением в него (i-1) и i-го слагаемых, пусть n достаточно велико, по крайней мере, не меньше пяти, тогда выражение можно записать в виде:
Si-1
S2
Si
Si-1
S2
Si
Sn
Из приведенного выражения видно следующее.
Переменная i меняется от нуля до n, с шагом 1.
Для нахождения значения заданного выражения можно использовать циклический алгоритм, в теле цикла которого очередная (текущая) сумма находится в результате сложения предыдущей суммы и текущего слагаемого.
В свою очередь текущее слагаемое находится как произведение предыдущего (i-1)-го слагаемого на сомножитель (b+i)/(a+i).
Решение задачи имеет итерационный характер. Итеративно изменяемыми элементами являются текущие сумма и слагаемое.
При n=1 выражение (полная сумма) вычисляется следующим образом: S1=S0+S1, где S0=b/a; S1=S0(b+1)/(a+1).
-
Метод решения задачи
С учетом проведенного анализа особенностей задачи, будем использовать для ее решения итерационный алгоритм. Составим два варианта эквивалентных формул, позволяющих найти искомый результат. При первом будем использовать индексированные переменные (массивы). При втором – простые переменные и оператор присваивания. Получим формулы:
Si=Si-1(b+i)/(a+i); S:=S(b+i)/(a+i);
Si=Si-1+Si; S:=S+S.
В этом пункте необходимо уточнить пределы изменения i в указанных формулах. Формулы позволяют находить значения текущих слагаемого и суммы по значениям полученным на предыдущем шаге. Но какие-то значения нужно задать в явном виде либо S0 и S0, либо S1 и S1. В первом случае i=0,…,n, с шагом 1. Это позволяет найти решение при n0, т.е. и при n=0. А во втором i=1, …,n, т.е. решение можно найти только для натурального n. Далее рассмотрим второй случай. Тогда в приведенных выше формулах i=2,…,n.
Теперь S1=b(b+1)/[a(a+1)], при i=1, S=b(b+1)/[a(a+1)]
S1=a/b+S1. S=a/b+S.
-
Проверка разработанного метода решения
Она заключается в нахождении и анализе результатов полученных при n=1,2,3 с использованием приведенных в п. 1.3 формул. Здесь и ниже при проверке алгоритма, результаты могут фиксироваться, как в численном виде, так и в общем.
-
Блок-схема алгоритма решения задачи с использованием индексированных переменных
-
Блок-схема алгоритма решения задачи без использования индексированных переменных
-
Протокол испытания алгоритма
Необходимо осуществить пошаговое выполнение алгоритма с фиксацией результатов испытания, которые затем будут использованы при отладке программы. При наличии в алгоритме ошибок и удачном выборе тестовых наборов ошибки будут обнаружены уже на стадии составления алгоритма.
-
Программа для решения задачи без использования индексированных переменных
program Iter;
var a,b,s,sl:real; i,n:integer;
begin
write('введите значения переменных a,b,n: '); readln(a,b,n); writeln('Исходные данные: a=',a:4:2,' b=',b:4:2,' n=',n); sl:=b*(b+1)/(a*(a+1));
s:=b/a+sl;
for i:=2 to n do
begin
sl:=sl*(b+i)/(a+i);
s:=s+sl
end;
writeln('Результат: выражение равно ',s:4:2);
readln
end.
Задача 2 на использование итерационных алгоритмов