- •1.Этапы подготовки и решения задач на эвм
- •1.Этапы подготовки и решения задач на эвм
- •Характеристика переменных задач.
- •Основные этапы процесса подготовки и решения задач на эвм
- •2 . Алгоритмизация вычислительных процессов
- •2.1 Графический метод описания алгоритмов
- •2.2 Виды вычислительных процессов Основные структуры алгоритмов
- •2.2.1. Вычислительный процесс линейной структуры
- •2.2.2. Вычислительный процесс разветвляющейся структуры
- •2.2.3.Вычислительный процесс циклической структуры.
- •3.Языки программирования.
- •4.Основные понятия языка qbasic
- •4.1.Алфавит
- •4.2.Структура данных
- •4.3.Операторы языка
- •4.4.Операторы ввода-вывода
- •5.Примеры работы с символьными переменными.
- •6.Работа с файлами
- •6.1.Требования к имени файла
- •6.2.Операции над файлами
- •6.3.Открытие файла
- •6.4.Запись в файл
- •6.5.Чтение из файла
- •6.6.Изменения данных в файле
- •6.7.Добавление данных в файл
- •Команда Действие
- •Cn Значение нового цвета. Действует во всех дальнейших командах до нового назначения
- •О u(p)сновные команды перемещения изображены на рисунке.
- •9.Методические указания
- •10. Тестовые задания по теме:
- •11.Краткий справочник по языкуQbasic.
- •12.Сообщения об ошибках и их коды
2.2.2. Вычислительный процесс разветвляющейся структуры
Вычислительный процесс называется разветвляющимся, если возникает необходимость в зависимости от выполнения или не выполнения некоторых условий осуществить то или иное действие, т.е. реализовать одну из ветвей вычислительного процесса .
Разветвляющийся процесс имеет некоторые структурные разновидности:
Разветвление.
Рис. 5
Применяется, когда в зависимости от условия выполняется одно или другое действие. Причем действие 1 или действие 2 может содержать несколько этапов.
Обход.
Частный случаи разветвления, когда одна ветвь не содержит вообще никаких действий.
Рис. 6
Множественный выбор
А=1 А=2 А=3 ...А=N
…
Рис. 7
Обобщенный случай разветвления, когда, в зависимости от значений переменной А, выполняется одно из некоторых действий.
Пример 2.
-
Вычислить Y =
asin x если х >2
в cos x если x 2
да
Рис. 8
Пример программы:
inputa,b,x
if x2 then
y=a*sin(x)
else
y=b*cos(x)
end if
print y
end.
Если при вводе переменной xбудет присвоено значение, большее двух, то будут выполнены блоки 1, 2, 4, 5. В противном случае выполнятся блоки 1, 2, 3, 5.
Пример 3.
Вычислить 1, если x > 0
Y = 0, еслиx = 0
-1, если x < 0
В данном примере заданы три различных условия. Если будет введено значение х > 0 , выполнятся блоки 1, 2, 6, 7 /рис. 9/. В противном случае (при невыполнении условиях > 0) еще нельзя определить, какое значение будет присвоено Y, т.к. необходимо разделить случаи:х > 0 и х = 0. Это делается в блоке 3. Только после проверки условия блока 3 становится ясно, какое значение будет присвоено переменной Y. Еслих = 0 , выполняется блок 5, иначе выполняется блок 4. В данном варианте алгоритма проверку условияx < 0 производить не следует, т.к. после блока 3 линия “нет”определяет это условие.
x < 0
x 0
Рис.9
Пример программы:
input x
if x0 then
y=1
elseif x=0 then
y=0
else
y=-1
end if
print y
end.
Пример 4.
Определить, принадлежит ли точка М/х,y/ заштрихованной области Д.
Y
М/х,y/
x
Рис.10
Математическая постановка.
Радиус круга определяется из формулы . В соответствии с этим задача сводится к проверке условия
.
Точка М/х,y/ принадлежит обл.Д, если.
Точка М/х,y/не принадлежит обл.Дв противном случае.
Блок-схема алгоритма решения задачи представлена на рис. 11
Рис.11
Пример программы:
inputx,y
r=sqrt(x2+y2)
if r and r then
print “т.М принадлежит обл D”
else
print“т.М не принадлежит облD”
endif
end.
Примечание. Как отмечалось выше, алгоритм обычно ориентируют на определенный язык программирования. В данном алгоритме проверка условия проведена в двух блоках / 3 и 4 /, т.к. ориентация в данном случае идет на Бейсик стандартный, в котором не реализуется проверка двойного условия.
В языке QBasic, например, это возможно и тогда вместо блоков 3 и 4 можно было бы в алгоритме использовать один блок проверки условия (рис 12). Такое действие реализовано в приведённом алгоритме.
Рис.12
Пример 5.
, если
Вычислить Y = 0.7 – tg X, если
Не определены в противном случае
В данном примере “У” вычисляется в интервале значений х = [3, 9], при значениях х<3 и x>9 значение “У” не вычисляется. В этом случае в алгоритме должна быть предусмотрена печать сообщения об этом. Это может быть такой текст “при данном значении х значение у не вычисляется “, либо просто может быть выведено на печать значение “х,” по величине которого пользователь программы поймет, что вычисления не производились (рис. 13). Для удобства написания программы на языке стандартного Бейсика удобно так оформлять блок – схемы, чтобы вход очередного логического блока был соединен с линией “нет” предыдущего логического блока. Исходя из этого, начнем проверку с условия “х<3”.
Рис. 13
Пример программы, написанной на языке QBASIC:
begin
input x
if x=3 and x=7 then
y=2*(sin(x)2)
elseif x=7 and x then
y=0.7-tan(x)
else
print “y не определён при x=”;x
goto M
end if
print y,x
m: end.
В приведенной программе блоки 2,3 и блоки 3,4 объединены в условие x>=3 и x<=7 и условиеx>=7x<=9.
Программа может быть составлена и без оператора gotoM.
Пример 6.
Даны два числа А и В. Если АВ, вычислить их квадраты и записать новые значения на место прежних. Вывести на печать значения А и В.
В=В2
Рис. 14
Программа на Qbasicимеет вид:
input a,b
if ab then
a=a2; b=b2
end if
print a,b
end.
Блок-схема задачи приведена на рис. 14
В данном примере использована структура «обход». По линии «нет» никаких действий не производится.
Пример 7.
+ 1/(x – 1) , если 3Х5
Вычислить У =
6.5х + 9, если 5X7 или X<3
2 Sin х , если x>7
Рис.15
Пример программы:
input x
if x3 then
y=6.5+9*x
elseif x5 then
y=sqr(x-1)+1/(x-1)
elseif x7 then
y=6.5+9*x
else
y=2*sin(x)
end if
printy
end
В данном примере в блоках 6 и 8 “Y” вычисляется по одной и той же формуле. С позиций структурного программирования такая структура более просто реализуется на алгоритмическом языке, чем структура, в которой используется один вычислительный блок при вычислении разных условий /x< 3 5 < x7 \. Такой стиль построения алгоритма сохраняет простоту структуры алгоритма, позволяет легко реализовать соответствующую программу, сделать программу легко читаемой.