Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы программирования для студентов технологического профиля. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
111
передается в модуль и в нем вычисляется площадь круга для заданного радиуса, а затем результат передается в основной
модуль, в котором с помощью оператора PRINT выводится на экран.
Модуль function состоит из следующих строк:
Строки 14, в которой записано имя модуля и параметр от
которого зависит выражение. Строки 15, в которой задана
константа π. Строки 16, в которой имени модуля присваивается
значение вычисленного выражения. Строки 17, в которой
записывается оператор End Function.
Запуск программы на выполнение можно осуществить из
любого модуля. Быстрое переключение между модулями можно
осуществить с помощью клавиш Shift+F2.
3.7 Разветвляющиеся программы
Оператор IF...THEN ...ELSE
(IF...THEN ... ELSE - если...тогда... иначе)
Формат оператора (блочная форма):
IF условное выражение_1 THEN
[группа операторов_1 ]
ELSEIF условное выражение_2 THEN [группа операторов_2 ] ELSEIF условное выражение_3 THEN [группа операторов_3 ]
..... ...... ...... .... …… …… …
ELSE
[ группа операторов_ N ]
. END IF
Назначение оператора: выполнение определенной группы
операторов в зависимости от значения условного выражения.
Если значение условного выражения_1 Истина, выполняется группа операторов_1 и затем передача управления происходит к
оператору, расположенному за ключевыми словами ЕND IF.
Если значение условного выражения_1 Ложь, то проверяется условное выражение_2. Если значение условного выражения_2 Истина, выполняется группа операторов_2 и затем передача
управления происходит к оператору, расположенному за
112
ключевыми словами ЕND IF. Если значение условного
′ Программа для вычисления выражения
1
′ Программист -студент гр. 2212-41 Иванов П.А.
2
′ Дата разработки программы - 28.01.13
3
′ Имя файла программы Log_1.bas
4
CLS : INPUT "Введите значение аргумента", x
5
IF x<=0 ТHEN
6
y = x^2
7
ELSE
8
y = SQR(x)
9
ЕND IF
10
? "Значение функции y равно" y
11
END
12
выражения_2 Ложь, то проверяется условное выражение_3 и т.д.
Если все проверяемые условные выражения имеют значения Ложь, то выполняется группа операторов_N,
расположенная за словом ELSE.
Следует помнить, что ключевое слово ELSEIF в блочной
форме оператора пишется слитно. Число ELSEIF зависит только от требований программы.
Предполагается, что все условные выражения являются
п р о ст ы м и , т.е. содержат только один знак отношения. Программа 3.7.1 (см. условие Задачи 2.5.1.).
Программная реализация на QBasic:
Обсуждение программы.
После запуска программы компьютер пропускает строки 1­4, оператор CLS (строка 5) очищает экран вывода информации.
Оператор INPUT (строка 5) выводит на экран вывода информации сообщение: «Введите значение аргумента» (без вопросительного знака, т.к. после подсказки стоит запятая) и
приостанавливает работу компьютера. Пользователь должен
ввести значение аргумента х и нажать на кл. ENTER. Введенное число присваивается переменной х и хранится в оперативной памяти ЭВМ. В строке 6 значение х сравнивается с нулем. Если
113
число х отрицательное или равно нулю, то выполняется строка 7
NOT
-(НЕ) операция логического отрицания (инверсии)
аргумента. Изменяет значение аргумента на
противоположное.
AND
-(И) операция логического умножения двух аргументов. Результат операции True, если оба аргумента истинны и False во всех остальных случаях;
OR
-(ИЛИ) операция логического сложения двух
аргументов. Результат операции False, если оба аргумента ложны и True во всех остальных случаях.
A
B
NOT A
NOT B
A AND B
A OR B
T
1
T
1
F
0
F
0
T
1
T
1
T
1
F
0
F
0
T
1
F
0
T
1
F
0
T
1
T
1
F
0
F
0
T
1
F
0
F
0
T
1
T
1
F
0
F
0
и управление передается в строку 11. Если число х
положительное, то выполняется строка 9 и затем управление
передается в строку 11. В строке 11 оператором PRINT выводится подсказка и значение вычисленной функции. Оператор END в 12 строке прекращает работу программы.
Для решения задач со сложными условиями необходимо
познакомится с логическими функциями NOT, AND, OR., (табл. 3.7.1).
Таблица 3.7.1.– Основные логические операции
В табл.3.7.2. приведены значения условных выражений А
и В и результаты, полученные с использованием логических операций.
Таблица 3.7.2. Результаты выполнения логических операций
(Т
- True; F0 - False)
1
Программа 3.7.2. Составить замкнутую программу для вычисления тангенса любого угла, заданного из интервала [0;900], исключив вычисления для угла 900.
Программная реализация на Qbasic:
114
′ Программа для вычисления тангенса
1
′ Программист-студент гр. 6123-41 Петрова Р.А.
2
′ Дата разработки программы - 21.10.13
3
′ Имя файла программы Log_3.bas
4
CLS
5
pi=4*atn(1)
6
m1: INPUT ″Введите значение угла в градусах″; u
7
IF not(u = 90) THEN
8
y = tan(u*pi/180) : ?″Значение тангенса равно″ y
9
ElSE
10
? ″Неверный ввод данных″
11
END If
12
GОТО m1
13
Обсуждение программы:
Строки 1-4 - шапка программы. В строкe 5 записан оператор CLS для очистки экрана вывода от ненужной информации. В
строке 6 записан оператор присваивания, который вычисляет значение константы π. В строке 7 оператор Input
приостанавливает вычисления и позволяет ввести угол в
градусах. Значение угла присваивается переменной u. В строке 8 записана первая строчка оператора IF и использована логическая функция Not. В строке 9 вычисляется значение
тангенса заданного угла, который предварительно пересчитывается в радианную форму. Полученное значение
оператором Print выводится на экран вывода информации. В строке 10 и 12 записаны ключевые слова оператора If. В строке 11 оператором Print выводится сообщение «Неверный ввод данных». В строке 13 записан оператор безусловного перехода, который передает управление на строку с меткой m1, т.е. в строку 7.
Работа программы:
После запуска программы вводится значение угла (в градусах), например 45. В строке 8 условие 45=90 имеет значение Ложь (F0), но результат функции Not будет Истина. Поскольку результат проверяемого условия Истина, оператор if
115
передаст управление на строку 9, в которой будет вычислен
x
x
e
x
b
a
x
x
e
ba
Z
sin
1
cos
, если x < 2.3
, если 2.3 ≤ x ≤ 5
, если x > 5
тангенс 45 градусов и результат вычисления (число 1) запишется в ячейку y. Оператор Print выводит результат, а оператор if передаст управление на строку 13, в которой оператор Gotо передаст управление на метку m1, т.е. в строку 7.
Если ввести недопустимое значение угла (900), то при
проверке условия 90=90 значение условия будет Истина. Это
значение меняется на Ложь, поскольку использована функция Not. В результате управление будет передано на строку 11, в которой оператор Print выведет сообщение «Неверный ввод данных» и управление будет передано на строку 13, а затем на строку 7.
Поскольку программа замкнутая, прерывание
программы возможно только при нажатии на клавиши Ctr-Break. Программа 3.7.3. Вычислить значение cложной функции Z:
где a = 2,7 b = -0,27 x = 3,76
Вычисляемые выражения сложной функции записать в модули function. Данные ввести оператором чтения данных
Read.
Реализация программы на QBasic:
′ Программа для вычисления функции ′ Программист-студент гр. 6131-11 Сапунов М.Ю. ′ Дата разработки программы - 21.10.13 ′ Имя файла программы Log_4.bas
CLS READ a, b, x
116
IF x < 2.3 THEN y=f1(a, b, x) ElSEIF x= > 2.3 AND x <= 5 Y=f2(a, b, x) ElSE Y= f3(a, b, x) END IF ? ″y = ″y END DATA 2.7, -0.27, 3.76
Для создания первого модуля function используем меню бейсика:
FUNCTION f1(a, b)
f1= (a+b)/(exp(x)+cos(x)
END FUNCTION Аналогично создается второй модуль:
FUNCTION f2(a, b)
f2= a+b/(x+1)
END FUNCTION и также запишем третий модуль:
FUNCTION f3(a, b)
F3= exp(x)+sin(x)
END FUNCTION
Если после составления программы записать ее на диск, то в результате модули будут обнаружены и описаны самим бейсиком и в начале основного модуля появятся операторы:
Declare function f1(a,b)
Declare function f2(a,b)
Declare function f3(a,b)
После запуска программы константы, записанные в
оператор DATA, будут прочитаны оператором Read и использованы для решения задачи.
Программа 3.7.4. Вычислить значение переменной Y. Вычисляемые выражения записать в виде функций пользователя. Данные ввести оператором чтения данных Read.
117
 
 
ax
e
xa
Y
ax
cos
sin
, если x < 2 и a<3
, если 2≤x<5 или 3≤a<10 , в остальных случаях
где a = 2,7 b = -0,27 x = 3,76
′ Программа для вычисления функции
1
′ Программист-студент гр. 6131-11 Яранцева Я.О.
2
′ Дата разработки программы – 21.10.1 Я.О.
3
′ Имя файла программы Log_5.bas
4
CLS
5
′ Функции пользователя:
6
FNf1(a,b,x)=a*sin(x)
7
FNf2(a,b,x)=exp(a*x)
8
FNf3(a,b,x)=cos(a*x)
9
′ Основная программа:
10
INPUT ″Введите значения a, b, x ″, a, b, x
11
IF x <2 AND a<3 THEN
12
y=FNf1(a, b, x)
13
ElSEIF (x >=2 AND x< 5) OR (a >=3 AND a< 10) THEN
14
y= FNf2(a, b, x)
15
ElSE
16
y= FNf3(a, b, x)
17
END IF
18
? ″y = ″y
19
END
20
1-4
-шапка программы;
5
- очистка экрана вывода информации;
6
- подсказка;
7
-определение функции пользователя с именем FNf1;
8
-определение функции пользователя с именем FNf2;
9
-определение функции пользователя с именем FNf3;
10
- подсказка;
Реализация программы на QBasic:
Обсуждение программы:
118
продолжение таблицы
11
-оператор input приостанавливает работу программы.
На экране появляется подсказка: Введите значения a, b, x. Вопросительный знак не выводится. Пользователь
должен ввести три числа в том же порядке как это
указано в подсказке и нажать на клавишу Enter. Только после этого работа программы продолжается.
12-18
-оператор If:
12
-записана первая строка блочного оператора If.
Проверяется первое сложное условие с использованием логической функции AND. Проверяемое сложное условие имеет значение True только в том случае, если оба простых условия выполняются, т.е x <2 и a<3. В
этом случае выполняется оператор, расположенный в строке 13. Если проверяемое условие имеет значение
False, то управление передается в строку 14, в которой проверяется второе условие.
13
-в правой части оператора присваивания записано имя
первой функции пользователя, поэтому происходит передача управления в строку 7, куда передаются
фактические значения параметров a, b, x. В строке 7
осуществляется вычисление первого заданного
выражения, полученный результат передается в строку 13 и присваивается переменной y.
14
-записано второе сложное условное выражение, в
котором использованы логические функции AND и OR. Проверяемое сложное условие имеет значение True только в том случае, если оба или одно из сложных условий, записанных в круглые скобки, имеет значение True. В этом случае выполняется строка 15. Если значение условного выражения False, то происходит передача управления в строку 17.
15
- данный оператор работает так же, как и аналогичный оператор в строке 13.
16
- записано ключевое слово ElSE оператора if.
119
окончание таблицы
17
-данный оператор работает так же, как и аналогичный оператор в строке 13.
18
-конец оператора If
19
-вывод полученного значения y с подсказкой ″ y =″
20
-конец программы.
3.8 Циклические программы
В циклических программах заданная группа операторов
выполняется какое-то (обычно известное) число раз. В таких программах часто используют арифметический цикл FOR…
NEXT.
Оператор FOR...NEXT
(FOR ... NEXT - для ... следующий)
Формат оператора:
FOR переменная_цикла = НЗП TO КЗП [ STEP ШАГ ]
[группа операторов]
NEXT [ переменная_цикла ] [ , переменная_цикла ]..
переменная_цикла (параметр цикла) используется в качестве
счетчика цикла; НЗП, КЗП, ШАГ - константы или числовые выражения, задающие соответственно начальное, конечное значения и шаг (величину изменения) переменной цикла. В операторе цикла часть структуры оператора, записанную в квадратных скобках, можно не указывать и тогда значение параметра ШАГ будет равно единице.
Оператор реализует циклическое выполнение группы операторов, расположенных между операторами FOR и NEXT.
Оператор NEXT изменяет переменную цикла на величину шага. Если значение переменной цикла не превышает или равно конечному значению (КЗП), то управление передается
оператору непосредственно следующему за оператором FOR.
Если значение переменной цикла превышает КЗП, то
управление передается оператору, следующему за оператором
NEXT.
120
Рассмотрим простейшую программу с использованием
оператора цикла:
CLS : FOR i=0 TO 10 STEP 5 : PRINT ″A ″ : NEXT i
- выводится 3 раза буква А.
В операторе NEXT переменную цикла можно не
указывать, но для понимания программы еe лучше написать,
хотя это немного замедляет процесс вычислений.
Использование ц е л ы х переменных в операторе FOR ускоряет
процесс вычислений. Если имеются вложенные циклы, то в
операторе NEXT сначала записывается параметр внутреннего цикла, а затем внешнего.
Для составления циклических программ полезно знать
еще несколько операторов:
Оператор PRINT USING
(PRINT USING - напечатать, используя)
Формат оператора: PRINT USING шаблон; список [{;/,}]
шаблон - строковая константа, содержащая специальные
символы, которые определяют формат выводимых на экран
символьных значений или чисел; список – список выводимых
переменных, констант, выражений, значения которых
вычисляются.
Назначение оператора:- вывод данных на экран монитора в соответствии с заданным шаблоном.
Для вывода чисел используются специальные символы, образующие шаблон. При этом шаблон задает поле вывода фиксированной длины. Длина поля определяется общим
количеством специальных символов в шаблоне.
Шаблон задается одним из символов:
- # (знак номера). Задает одну цифровую позицию числа в
шаблоне. Если выводимое число имеет меньше цифр, чем указано в шаблоне, то оно выравнивается по правому краю шаблона и оставшиеся позиции слева заполняются пробелами, например:
PRINT USING "### "; 123 : PRINT USING "### "; 12
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]