Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Структурная схема вычисления значения функции в виде блок-схемыСтр 1 из 2Следующая ⇒
ТЕМА: РЕАЛИЗАЦИЯ В ИНТЕГРИРОВАННОЙ СРЕДЕ ПРОГРАММИРОВАНИЯ TURBO PASCAL АЛГОРИТМОВ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ. Цель работы: приобретение навыков работы в интегрированной среде программирования TURBO PASCAL; получить навыки программирования алгоритмов разветвляющейся структуры и реализации их на ЭВМ.
В линейной программе все операторы выполняются последовательно, один за другим. Таким способом можно записывать только очень простые алгоритмы. Для того чтобы в зависимости от конкретных значений исходных данных обеспечить выполнение разных последовательностей операторов, применяются операторы ветвления if и case. Оператор if обеспечивает передачу управления на одну из двух ветвей вычислений, а оператор case – на одну из произвольного числа ветвей.
ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ ЗАДАНИЕ № 1. Составить алгоритм и написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика. Параметр R вводится с клавиатуры. (Теоретический материал по данной теме изложен в лекциях № 6, 15).
ЗАДАНИЕ № 2. Составить алгоритм и написать программу, которая определяет, попадет ли точка с заданными координатами в область, закрашенную на рисунке серым цветом. Результат работы программы вывести в виде текстового сообщения. (Теоретический материал по данной теме изложен в лекциях № 6, 15).
После выполнения данного практикума студент должен знать: v Если в одном условном операторе требуется проверить выполнение нескольких условий, они записываются после ключевого слова if и объединяются с помощью логических операций and, or, xor и not. Получившееся выражение вычисляется в соответствии с приоритетами операций. v Если в какой-либо ветви вычислений условного оператора if требуется выполнить более одного оператора, то они объединяются в блок с помощью ключевых слов begin и end. v Проверка вещественных величин на равенство опасна. v В операторе варианта выражение, стоящее после ключевого слова case, и константы, помечающие ветви, должны быть одного и того же порядкового типа. v Рекомендуется всегда описывать в операторе case ветвь else. v Оператор case предпочтительнее оператора if в тех случаях, когда количество направлений вычисления в программе больше двух, а выражение, по значению которого производится переход на ту или иную ветвь, имеет порядковый тип. Часто это справедливо даже для двух ветвей, поскольку повышает наглядность программы. Приложение № 1.
ВЫЧИСЛЕНИЕ ЗНАЧЕНИЯ ФУНКЦИИ Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика на интервале [-3, 3]:
Начинать решение даже простейшей задачи необходимо с четкого описания ее исходных данных и результатов. В данном случае это очевидно: исходными данными является вещественное значение аргумента x, который определен на интервале [-3, 3], а результатом – вещественное значение функции y. Поэтому для представления этих величин в программе следует выбирать тип real. Перед написанием программы следует составить алгоритм ее решения – сначала в общем виде, а затем постепенно детализируя каждый шаг. Такой способ, называемый нисходящей разработкой, позволяет создавать простые по структуре программы. Сначала запишем функцию в виде формул (сделаем математическую постановку задачи): Далее приведем описание алгоритма в неформальной словесной форме: 1. Ввести значение аргумента x. 2. Проверить, принадлежит ли оно области определения функции. 3. Если не принадлежит, вывести диагностическое сообщение и завершить программу. 4. Определить, какому интервалу из области определения функции принадлежит введенное значение, и вычислить значение функции y по соответствующей формуле. 5. Вывести значение y. Опишем четвертый пункт алгоритма более подробно: o Если аргумент x принадлежит интервалу [-3; -2), то . o Если аргумент x принадлежит интервалу [-2; 0), то . o Если аргумент x принадлежит интервалу [0; 1), то . o Если аргумент x принадлежит интервалу [1; 3], то .
Рис. 1. Структурная схема вычисления значения функции в виде блок-схемы
По такому алгоритму можно практически «один в один» написать программу: {***************************************************} {Программа: FUNC. } {Цель: вычисление значения функции. } {Программист: Иванов И.И. } {Дата выполнения: 10 апреля 2006 г. } {***************************************************} ProgramFUNC; Var X, Y : real; Begin Writeln(‘Введите значение аргумента’); Read(X); Wriyeln(‘X=’, X); If (x<-3) or (x>3) then begin Writeln(‘Значение должно принадлежать интервалу [-3; 3]’); exit end; If x<-2 then y:=-2*x-5; If (x>=-2) and (x<0) then y:=-sqrt(1-sqr(x+1))-1; If (x>=0) and (x<1) then y:=x-1; If x>=1 then y:=sqrt(1-sqr(x-2)); Writeln(‘Для x= ’, x:6:2, ‘значение функции y= ’, y:6:2) End.{FUNC}
Следует обратить внимание на запись условий, содержащих два сравнения. Начинающие часто записывают такие условия, просто воспроизводя математическую формулу, т.е. как a<x<b. Ошибка состоит в том, что операции отношения являются бинарными, т.е. должны иметь два операнда. И если надо проверить два условия (a<x и x<b), то и операций должно быть две. Поскольку необходимо, чтобы эти условия выполнялись одновременно, они объединены с помощью операции логического умножения И (and), т.е. выражение принимает вид (a<x) and (x<b). Заключать каждое условие в круглые скобки необходимо потому, что логические операции имеют более высокий приоритет, чем операции отношения. При отсутствии скобок сначала будет предпринята попытка выполнить операцию x and x2, что вряд ли соответствует замыслу. Первый и последний условные операторы записаны без двойных условий, потому что проверка того, что аргумент находится в диапазоне [-3; 3], выполнена раньше. Стандартная процедура exit обеспечивает выход из программной единицы, в которой она записана. Тестовые примеры для этой программы должны включать, по крайней мере, по одному значению аргумента из каждого интервала, а для проверки граничных условий – еще и все точки перегиба. При работе приведенной выше программы всегда выполняется один за другим все четыре условных оператора, при этом истинным оказывается только одно условное выражение и, соответственно, присваивание значения переменной y выполняется один раз. Запишем условные операторы так, чтобы уменьшить количество проверок:
If x<-2 then y:=-2*x-5 else if x<0 then y:=-sqrt(1-sqr(x+1))-1 else if x<1 then y:=x-1 else y:=sqrt(1-sqr(x-2)); Этот вариант вычисления значения функции иллюстрирует следующая блок-схема:
Рис. 2. Второй вариант вычисления значения функции. Во втором варианте проверка на принадлежность аргумента очередному интервалу выполняется только в том случае, если x не входит в предыдущий интервал. Программа получилась более компактной, более эффективной, но, возможно, менее наглядной. В отличие от предыдущей версии, порядок следования условных операторов имеет здесь большое значение. Какой же вариант лучше? Для решения данной задачи разница между ними несущественна, но цель состоит в том, чтобы на простых примерах продемонстрировать общие принципы, следование которым позволит впоследствии создавать надежные и красивые программы. Наиболее наглядным является первый вариант программы, поскольку по нему проще проследить логику ее работы.
В современной иерархии критериев качества программы на первом месте стоят надежность, простота поддержки и модификации, а эффективность и компактность отходят на второй план. Поэтому если нет специальных требований к быстродействию, следует выбирать наиболее наглядный вариант.
Приложение № 2. ВЫСТРЕЛ ПО МИШЕНИ |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-05-31; просмотров: 1657. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |