![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Примеры
Решение задачи: Первый способ: 1. Алгоритм решения задачи представить в виде блок-схемы (рис.13). 1-ый блок: начало; 2-ой блок: ввод исходных данных, здесь: xn -начальное и xk -конечное значение переменной, по условию задачи это в диапазоне [0, 7]; dx – шаг изменения значения x; 3-ий блок: x присваивается начальное значение, т.е. xn =x, а он равен 0 (см. 2-блок); 4, 5 и 6-ые блоки - для действительных значений x согласно условиям задачи опремеляется значение функции s; 7-ой блок: вывод вычисленного значения функции s; 8-ой блок: по условию задачи функция s должна быть для вычислена для каждого значения x, увеличивающегося на dx на каждом шаге итерации, поэтому значение переменной x увеливиается на шаг dx; 9-тый блок: пока значение x меньше конечного значения xk вычисление функции циклическиповторяется: если текущее значение x меньше xk – (не достиг конца диапазона) операторы тела цикла повторяются, если превысит значение xk, то цикл завершится. 10-тый блок: конец задачи. 2. Установить на форме необходимые компоненты (рисунок-12), назначить свойства. Как видно из рисунка необходимы пять компонентов Label, пять Edit, одно Memo, три Button. Результаты задачи удобно выводить в поля компоненты Memo, т.к. значение функции s вычисляется и выводится для каждого x в диапазоне [0; 7]. В поля компонентов Edit вводятся исходные данные. 3. На рисунке 13 приведена блок-схема, характеризующая цикл с постуловием или do …while.
данные: переменные a, b, dx и s вещественного типа. С целью использования для ввода данных поля компненты Edit необходимо использовать функции преобразования типов. 5. Переменной x присваивается начальное значение: x=xn; 6. Цикл – оператор цикла с постусловием do…while (условие): do if (x< 2.8) {i=1; s=(a+b)/(exp(x)+cos(x)); } else if (x> =2.8 & & x< =6)
else {i=3; s=exp(x)+sin(x); } … while (x< =xk); Для вывода каждого вычисленного значения х используем компоненту Memo1: Memo1-> Lines-> Add(" при x=" + FloatToStrF(x, ffFixed, 4, 2)+": " + " s= " + FloatToStrF(s, ffFixed, 6, 4)); 7. Как сказано выше, текущее значение переменной х меняется с шагом dx, т.е. x=x+dx; Проверяем вычисленное значение x на окончание цикла: while (x< =xk); 8. Как описано в алгоритме, если условие не выполнено, то цикл завершается. 9. Необходимо описать события OnClick командной кнопки Button2. В проекте эта кнопка используется для обновления данных. Перед обновлением данных поля компоненты Edit необходимо с помощью метода Clear очистить это поле: ... Edit1-> Clear(); Следующая функция дает возможность с помощью события OnClick командной кнопки Button3 закрыть форму. void __fastcall TForm1:: Button3Click (Sender: TObject); { Form1-> Close(); }
Второй способ: В соответствии с постановкой задачи рассмотрим другой оператор цикла: Оператор цикла с предусловием whіle (условие) { операторы тела цикла } (цикл-пока). Этот оператор используется, когда заранее неизвестно сколько раз должны повторяться операторы тела цикла. Формат записи оператора whіle (< логическое выражение А>) {< тело цикла>; } Выполнение оператора начинается с вычисления логического выражения А, т.е. x< =xk. Если логическое выражение А истина, то выполняются операторы тела цикла, если значение ложь, то управление передается следующему за циклом оператору. Примеры применения цикла с предусловием можно увидеть из следующего отрывка программы: пока выполняется условие x< =xk (да) операторы тела цикла выполняются, если условие на выполнено (нет), то осуществляется выход из цикла (рис.15). Отрывок текста программы: dx=StrToFloat(Edit5-> Text); x=xn; / / x присваивается начальное значение while (x< =xk) { // проверка условия окончания цикла (логическое выражение) if (x< 2.8) { i=1; s=(a+b)/(exp(x)+cos(x)); } if (x> =2.8 & & x< =6) { i=2; s=(a+b)/(x+1); } if (x> =6){ i=3; s=exp(x)+sin(x); } Memo1-> Lines-> Add(“при x=”+FloatToStr(x)+”: “+ “s= “+ FloatToStr(s)); x=x+dx; // увеличениетекущего значения x на шаг dx }
for (выражение1; выражение2; выражение3) {операторы; } Этот оператор используется когда известно число повторений операторов тела цикла. Формат записи: for (< параметр=начальное значение>; < условие продолжения цикла >; < шаг изменения параметра >) {тело цикла; } На рис. 16 приведено схематическое изображение цикла с параметром, где параметр-счетчик i от начального значения 1 до конечного n изменяется с шагом k. Студентам предлагается самостоятельно решить задачу с применением цикла с параметром.
Листинг программы: void __fastcall TForm1:: Button1Click(TObject *Sender) {
|