Вы находитесь на странице: 1из 130

А.А.Руденко, А.Г. Руденко, Н.А Руденко, В.Ф.

Лебедева

ПРАКТИКУМ
ПО АЛГОРИТМИЧЕСКОМУ ПРОГРАММИРОВАНИЮ

БЕЙСИК

ProCNC. Info
2008

2
СОДЕРЖАНИЕ

ПРЕДИСЛОВИЕ
РАЗДЕЛ 1. АЛГОРИТМИЧЕСКИЙ ЯЗЫК БЕЙСИК …………………………. 7

ГЛАВА 1. НАЧАЛЬНЫЕ СВЕДЕНИЯ ………………………………………………….7

1.1. Алфавит языка Бейсик………………………………………………………7

1.2. Константы и переменные…………………………………………………….8

1.3. Арифметические выражения и их запись на языке Бейсик………………..9

ГЛАВА 2. СТРУКТУРА ПРОГРАММЫ. ОПЕРАТОРЫ ПРИСВАИВАНИЯ,

ВВОДА И ВЫВОДА. ЛИНЕЙНЫЕ ПРОГРАММЫ……………………………….10

2.1. Оператор присваивания…………………………………………………… 10

2.2. Операторы ввода ………………………………………………….……… 11

2.3. Операторы вывода…………………………………………………………..12

2.4. Линейные программы……………………………………………………….13

ГЛАВА 3. ОПЕРАТОРЫ УПРАВЛЕНИЯ……………………………………………… 15

3.1. Оператор безусловного перехода…………………………….…………… 15….

3.2. Оператор условного перехода……………………………….…………….. 15

ГЛАВА 4. МАССИВЫ. РАБОТА С МАССИВАМИ……………………………………. 25

4.1. Описание массива…………………………………………….……………. 25

4.2. Блоки данных и чтение из блока данных………………………………….26

4.3. Программы с массивами……………………………………………………28

ГЛАВА 5. ОПЕРАТОР ЦИКЛА………………………………………………………………… 30

5.1. Структура счетного оператора цикла FOR………………………………30

3
5.2. Примеры циклических программ…………………………………………32

5.3. Цикл DO…………………………………………………………………….36

5.3.1. Цикл предусловием……………………………………………….. 36

5.3.2. Оператор цикла LOOP WHILE……………………………….. 37

5.3.3. Оператор цикла DO UNTIL, LOOP UNTIL……………………38

ГЛАВА 6. ПОДПРОГРАММЫ…………………………………………………………………… 45

6.1. Функции пользователя ……………………………………………… 45

6.2. Подпрограммы……………………………………………………………. 48

ГЛАВА 7. ЛИТЕРНЫЕ ВЕЛИЧИНЫ. ПРОГРАММЫ С ЛИТЕРНЫМИ

ВЕЛИЧИНАМИ………………………………………………………………………. 56

7.1. Литерные величины……………………………………………………… 56

7.2. Примеры программ с литерными (символьными) величинами……… 59

РАЗДЕЛ 2. СБОРНИК УПРАЖНЕНИЙ “UP “………………………………….. 61

2.1. Инструкция к выполнению заданий…………………………………….. 61

2.2. Упражнения к главе 1 “UP-1”: Константы и переменные,

арифметические выражения в языке Бейсик…………………………… 63

2.3. Упражнения к главе 2 “ UP-2 “:Операторы присваивания,

ввода- вывода. Линейные программы………………………………….…64

2.4. Упражнения к главе 3 “UP-3 “: Операторы передачи управления.

Программы с разветвлениями………………….……………………….. 65

2.5. Упражнения к главе 4 “UP-4 “: Массивы ………….……………………67

2.6. Упражнения к главе 5 “UP-5“: Операторы цикла………….…………….69

2.7. Ответы к упражнениям “UP“…………………………………………….. 71

РАЗДЕЛ 3. СБОРНИК ЛАБОРАТОРНЫХ РАБОТ ПО

АЛГОРИТМИЧЕСКОМУ ЯЗЫКУ БЕЙСИК…………………….. 72

3.1. Требования к оформлению лабораторных работ……………………………72

4
3.2. Лабораторная работа “ L1 “: Записи арифметических

выражений на языке Бейсик………………………………………………….72

3.3. Лабораторная работа “ L2 “: Операторы присваивания, ввода-вывода….75

3.4. Лабораторная работа “ L3 “: Операторы передачи управления

. Программы с разветвлениями…………………………………77

3.5. Лабораторная работа “ L4 “: Массивы. Оператор цикла …………………81

3.6. Лабораторная работа “ L5 “: Подпрограммы…………… ………………...86

РАЗДЕЛ 4. ОТВЕТЫ И КОМПЬЮТЕРНЫЕ ПРОГРАММЫ

К ЛАБОРАТОРНЫМ РАБОТАМ……………………………………. 92

4.1. Лабораторная работа “ L1 “…………………………………………………..92

4.2. Лабораторная работа “ L2 “…………………………………………….…….94

4.3. Лабораторная работа “ L3 “…………………………………………….……102

4.4. Лабораторная работа “ L4 “……………………………………………..… 106

4.5. Лабораторная работа “ L5 “…………………………………………………119

5
ПРЕДИСЛОВИЕ
Общество стало перед необходимостью повсеместного внедрения в производственный
процесс компьютерной техники. Начало всему этому должно быть в школе. В большинстве
школ созданы компьютерные классы, но эти классы недостаточно снабжены методическими
пособиями, сборниками лабораторных работ и упражнений, компьютерными программами.

Авторами предлагается пакет методических пособий и компьютерых программ не только


для компьютерных классов средней школы, но и для любого читателя, пытающегося
самостоятельно научиться программировать. Следует отметить, что аналогичные работы
авторам не встречались.

В качестве алгоритмического языка взят язык Бейсик. Его структура, операторы изложены
в разделе 1, содержащего 7 глав. Здесь работа каждого из рассмотренных операторов
иллюстрируется большим количеством компьютерных программ.

Для закрепления теоретического материала создан пакет упражнений ”UP”(раздел 2).


Читатель, находясь за компьютером, должен ответить на ряд вопросов. Ответы на все вопросы
приведены в конце раздела.

В разделе 3 приведен сборник лабораторных работ. Тексты лабораторных работ


составлены ко всем главам раздела 1. Предполагается, что читатель выбирает из этого раздела
текст задачи, составляет блок-схему и компьютерную программу. Желающие могут перерешать
все задачи лабораторных работ.

Конечная цель лабораторных работ: усвоить теоретический материал, создать


компьютерную программу, отладить ее на компьютере и получить числовой результат.

.В разделе 4 в помощь читателю приводятся распечатки компьютерных программ


лабораторных работ и числовые значения (ответы).

Многолетняя работа авторов в высших учебных заведениях позволяет сделать вывод, что
предлагаемая логика изучения алгоритмических языков является наиболее рациональной.
Надеемся, что читатель, изучив предложенное пособие, сможет в дальнейшем самостоятельно
программировать необходимые ему задачи и пользоваться более фундаментальными
источниками по алгоритмическим языкам.

6
Раздел 1. Алгоритмический язык Бейсик
Глава 1. Начальные сведения

1.1. Алфавит языка Бейсик


Алфавит языка – это совокупность символов, из которых образуются слова и
предложения языка. Алфавит составляют следующие группы символов:

1) прописные и строчные буквы латинского алфавита;


2) буквы русского алфавита;
Русские буквы можно использовать только в текстах, включаемых в программу; в
математических формулах их использовать нельзя даже в тех случаях, когда они по начертанию
не отличаются от соответствующих латинских букв;

3) арабские цифры Ø 1 2 3 4 5 6 7 8 9.

Цифру Ø рекомендуется перечеркивать в тех случаях, когда ее можно спутать с буквой О;


4) знаки действий +, -, *, /, ^, обозначающие соответственно сложение, вычитание,
умножение, деление, возведение в степень;

5) знаки отношений (равенств, неравенств):

> < = >=


больше меньше равно больше либо равно
<= < >
меньше либо равно не равно

6) скобки ( ) только круглые, применяются для указания порядка действия в


математических формулах;

7) разделители и специальные знаки: . , ; : ” и другие, применение которых будет


разъяснено в дальнейшем;

8) имена стандартных функций:

sin – синус; cos – косинус;

tan- тангенс Atn – арктангенс;

7
Log – натуральный логарифм; EXP – число е;

Sqr– квадратный корень; Abs – абсолютная величина числа;

Sgn- функция знака.


Аргументы стандартных функций заключаются в круглые скобки.

Например: sin(x), Log(x), Abs(x).

Аргументы тригонометрических функций sin(x), cos(x) и значение функции Atn(x) выражаются


в радианах.

9) служебные слова, например:

DATA - данные READ - читать PRINT- печатать

IF - если THEN - тогда FOR - для

ELSE – иначе END - конец

1.2. Константы и переменные.

Величины делятся на постоянные (константы) и переменные.

В языке Бейсик используются константы трех типов: целые, вещественные


(действительные) и литерные.

Целые константы записываются в виде последовательности десятичных цифр, перед


которой может быть знак плюс или минус. Константа без знака считается положительной.
Например: 128, - 1325, +781, 12, 50.

Вещественные константы могут быть предоставлены в форме с фиксированной точкой


или в экспоненциальной форме. При записи числа в форме с фиксированной точкой точка
используется для отделения целой части от дробной. Например: 2.375; - 11.71; 0.3175. Целая
часть, равная нулю, может быть опущена. Так число 0.78 можно записать .78
Вещественные константы, записанные в экспоненциальной форме, состоят из мантиссы и
порядка, отделенного от мантиссы буквой «Е»,заменяющей10.

Например: 14000=1.4*104=1.4Е4; 1.3*105=1.3Е5; Наличие мантиссы в записи числа


обязательно, если даже она равна 1. 106=1Е6.

8
Примеры неправильно записанных чисел:
12. – оканчивается точкой;

Е-21 – начинается с символа порядка;


-14.Е21 – мантисса оканчивается точкой;
15.12.14 – содержит две точки;
Е13 – начинается с символа порядка после знака.

Пример правильной записи этих чисел:


12 1Е-21 -14Е21 151214 1Е13

Литерные константы – это набор любых символов алфавита, заключенный в кавычки.


Например: ”слон”, ”класс”, ”ученик”.

Переменная – это величина, которая меняет свои значения в процессе выполнения


программы. Для переменной величины вводится обозначение, которое называется именем и
назначается программистом. Имя переменной (идентификатор) состоит из букв латинского
алфавита или буквы, за которой следует цифра. Например: Х, А, А1, D, super.

1.3. Арифметические выражения и их запись.

Арифметические выражения строятся из констант, переменных, стандартных функций с


помощью знаков действий +, -, *, / ,^ и круглых скобок.

При записи арифметических выражений следует придерживаться таких правил:

1) выражения записываются в строку без каких-либо подстрочных или надстрочных знаков;

2) вычисляют значение выражения слева направо в порядке старшинства операций:


значения функций, возведение в степень, умножение и деление, сложение и вычитание.
При наличии скобок в первую очередь выполняются действия в скобках;

3) число открытых и закрытых скобок должны быть одинаковым;

4) если в операции участвуют величины целого типа, то результат будет целым;

5) если значение аргумента не попадает в область определения функции, то будет выдано


сообщение об ошибке.

9
Примеры

№ Математическая запись Запись на Бейсике

1 A/(B*C) или A/B/C

2
SQR(3*X+SQR(ABS(X)))

3 sin|x| SIN(ABS(X))

4
EXP(-X^2/2)

Глава 2. Структура программы. Операторы присваивания,


ввода и вывода. Линейные программы
Запись алгоритма решения задачи на специальном языке, предназначенная для выполнения
компьютером, называется программой.
Программа представляет собой последовательность действий (команд). В языках
программирования команды принято называть операторами. Каждый оператор записывается в
отдельную строку и снабжается номером. Обычно номера операторов изменяются с шагом
10.Это позволяет при необходимости вставить в программу оператор,не изменяя самой
программы. Завершается программа оператором END.

2.1. Оператор присваивания


Оператор присваивания имеет вид:
Х=А
где Х – имя переменной;
А – арифметическое выражение.
При выполнении этого оператора вычисляется значение арифметического выражения,
стоящего справа, и полученное значения присваивается переменной Х.Знак равенства « =»
означает «присвоить».

10
Пример 2.1. Пусть Х=32+sin .

В программе Х получает значение в результате выполнения операторов присваивания:

10 PI=3.1415
20 X =3^2+SIN(PI/6)
Переменной Х будет присвоено значение 9.5.
В правую часть оператора присваивания могут входить имена переменных, но к моменту
выполнения оператора каждая из этих переменных должна получить числовое значение.
Числовые значения переменные получают либо с помощью оператора присваивания, либо с
помощью ввода.

Пример 2.2 Вычислить периметр Р прямоугольника, если стороны а= 13.5, b= 7.2.

Периметр Р=2а+2b

Периметр может быть вычислен с помощью следующей последовательности операторов


присваивания:

10 А=13.5
20 В=7.2
30 Р=2*А+2*В
В операторе присваивания в левой и правой частях может стоять одно и то же имя
переменной.

Например: Х=Х+5.5
Это означает, что переменная Х принимает новое значение равное прежнему плюс 5.5.
Пусть Х=2. В результате выполнения оператора присваивания Х получает значение 7.5 и в
последующих вычислениях значение Х равно 7.5.

2.2. Операторы ввода

Обмен информацией между человеком и ЭВМ осуществляется с помощью внешних


устройств ввода-вывода и соответствующих операторов.

Для ввода значений переменных с клавиатуры используется оператор input


(ввести),который имеет вид:

INPUT список переменных

11
Список переменных - это имена переменных, которые отделяются друг от друга
запятыми. Например: для присваивания начальных значений переменным A,B,C оператор
ввода можно записать так: 30 INPUT A,B,C

При выполнении оператора INPUT на экране дисплея появляется знак ” ? ” и ЭВМ ожидает
ввода с клавиатуры необходимой информации. Для этого следует набрать числовое значение
каждой переменной оператора INPUT , отделив их друг от друга и нажать клавишу ENTER- ”
ввод ”. Количество и тип вводимых значений должен соответствовать количеству и типу
переменных в списке оператора INPUT.

Пример 2.3. Периметр прямоугольника может быть вычислен с помощью такой


последовательности операторов:

10 INPUT A

20 INPUT B

30 P=2*A+2*B

2.3. Оператор вывода

Для вывода информации на экран дисплея используется оператор

PRINT список выражений

PRINT - печатать.

Выражения – это константы, имена переменных, функции.

Выражения в списке отделяются друг от друга запятой или точкой с запятой. Если
выражения в списке оператора print отделены друг от друга точкой с запятой, то их значения
выводятся через пробел.

30 PRINT 1; 2; 3

На экране будет

1 2 3

12
Если разделителем является запятая, то строка экрана делится на зоны по 14 позиций в
каждой зоне и выводимые результаты располагаются по одному в зоне:

30 PRINT 1.2, 3.75,- 5.2

1 . 2 3 . 7 5

Если выводимая информация не помещается в одной строке экрана дисплея, то ЭВМ


продолжает ее вывод в последующие строки.

Оператор PRINT при отсутствии списка выражений обеспечивает вывод пустой строки.

Если в списке выражений некоторая информация заключена в кавычки,то воспроизводится


на экране:

30 PRINT ”X1=2.5”

X 1 = 2 . 5

или 30 PRINT ”X1= ”; X1

X 1 =

После знака « = » печатается значение переменной X1, которое получилось в расчетах.

2.4. Линейные программы

Пример 2.4. Составить программу вычисления среднего арифметического, среднего


геометрического и среднего гармонического двух чисел a и b.

a+b
Среднее арифметическое S= .
2

Среднее геометрическое G = ab .

Число С называется средним гармоническим чисел a и b, если

13
1 1 1 1 2ab
= ( + ). Отсюда c=
c 2 a b a+b

Программа имеет вид:

10 A=5

20 B=7

30 S=(A+B)/2

40 G=SQR(A*B)

50 C=2*A*B/(A+B)

60 PRINT ”S=”; S; ”G=”; G; ”C=”; C

70 END

Пример 2.5. Вычислить значение S многочлена ax 3 + bx 2 + cx + d при заданных


коэффициентах a, b, c, d и фиксированном x.

((ax + b) x + c) x + d - многочлен записан по схеме Горнера.

Пусть a=2.5, b=3.1, c=-4.2, d=1.8, x=2.

Программа имеет вид:

10 INPUT A
20 INPUT B

30 INPUT C
40 INPUT D
50 INPUT X

60 S=A*X+B (ax + b)
70 S=S*X+C ((ax + b) x + c
90 PRINT ”S=”; S ((ax + b) x + c) x + d
100 END

На экране результат имеет вид: S= 25.8

14
Глава 3. Операторы управления

Операторы выполняются в том порядке, в котором они записаны в программе. При


необходимости изменить порядок выполнения операторов, используют операторы
управления.

3.1. Оператор безусловного перехода

Оператор безусловного перехода имеет вид:

GOTO n
и осуществляет переход к оператору программы с номером n.

Пример 3.1.
10 A=2
20 C=A+1
30 GOTO 50
40 C=A+2
50 PRINT ”C=”; C
60 END

Результат вычислений c = 3.0


Оператор 30 GOTO 50 передаёт управление оператору с номером 50. На экране
монитора появляется информация: с = 3.
Оператор с номером 40 с= A +2 выполняться не будет.

3.2. Оператор условного перехода

Оператор условной передачи управления имеет вид:

IF B (логическое выражение) THEN


Первый блок операторов
ELSE
Второй блок операторов
END IF

15
IF (если), THEN (то), ELSE (иначе) – служебные слова.
Логическое выражение B принимает одно из двух возможных значений:
«истина» (да) или «ложь» (нет).
В простейшем случае – это отношения вида:
A1=A2, A1>A2, A1<A2, A1>=A2, A1<=A2, A1<>A2.
А1 и А2 – арифметические выражения.
Выполнение условного оператора можно изобразить в виде блок – схемы
.

истина

В Р

Q Следующий оператор

На схеме B- логическое условие, P и Q – операторы.


Каждый блок операторов состоит из одного или нескольких операторов. Если логическое
выражение B истинно, то выполняется первый блок операторов, а затем управление передается
оператору END IF (конец структуры IF).
Если же логическое выражение ложно, то выполняется стоящий после служебного слова ELSE
(иначе) второй блок операторов.
Служебное слово ELSE и оператор END IF должны занимать отдельные строки .
Оператор END IF записывается в виде двух слов с пробелом между ними и всегда должен
завершать блок структуры IF.

Пример 3.2. Определить значение переменной С, которое она получит при выполнении
программы.
10 C = 2.5
20 K = -1.5
30 A = (C ^ 2 - K) * 3 - 13
40 IF A < 0 THEN

16
50 C = (A + C) / 2
60 ELSE
70 C = (A - K) / C
80 END IF
90 PRINT "C="; C
100 END
Результат: С=4.

Когда часть ELSE оператора IF опускается, то используется неполная форма условного

оператора

IF B (логическое выражение) THEN


Блок из одного или нескольких операторов
END IF

Блок -схема выполнения этого оператора имеет вид:

истина
В Р Следующий

ложь

В зависимости от условия В оператор Р выполняется или нет.


Р – оператор или номер строки, которой передаётся управление.
Пример 3.3.
10 A=5
20 B=7
30 IF A<B THEN
40 C=B
41 “ PRINT “C=”; C
50 END IF
60 PRINT “A>B”
70 END
В зависимости от значения условия A<B выполняется оператор C=B или управление
передается оператору следующему за оператором END IF. Ответ: C= 7.

17
Пример 3.4.
10 A=10
20 B=20
30 IF B>A THEN 70
40 C=A+B
41 END IF
50 PRINT ”C=’’; C
60 GO TO 80
70 PRINT ”C=”; A-B
80 END
В результате выполнения программы С имеет значение: С= -10.
Используется также простой вариант структуры IF.

IF B THEN P ELSE Q

Здесь В - условие, P и Q – операторы.


В этой структуре весь оператор должен быть записан на одной строке и присутствие
оператора END IF не требуется.
Пример 3.5.
10 B = 2.5
20 K = -1.5
30 A = (B ^ 2 - K) * 3 - 1
40 IF A < 0 THEN B = (A + B) / 2 ELSE B = A
50 PRINT "B="; B
60 END Результат: В= 22.25
Примечание:
Условные операторы могут быть вложены один в другой,т.е либо оператор 1, либо оператор
2, либо оба могут быть условными операторами.
Пример 3.6. Пусть A=2 , B=4 , C=6, D=8. Какй результат выдаст следующая пограмма?
10 A = 2
20 B = 4
30 C = 6
40 D = 8
50 IF A > B THEN
60 IF C < D THEN

18
70 IF C < 0 THEN
80 C=A+B
85 END IF
86 END IF
90 ELSE
100 IF A < B THEN
110 IF C < D THEN
120 C=A-B
130 END IF
135 END IF
136 END IF
140 PRINT "C="; C
150 END
Результат: С= -2.

Условие B может быть составным. Составные условия образуются из отношений и знаков


логических операций:
AND (и) – логическое умножение;
NOT (не) – логическое отрицание;
OR (или) – логическое сложение

№ Математическая запись Запись на Бейсике

1 -6 ≤ Х ≤ 2 Х >= -6 AND Х <= 2


2
Y X^2+Y^2<=1 AND X>0

1 X
0

3
Х< -3 X>4 X < -3 OR X>4
-3 4

19
Пример 3.7.
10 A=10
20 B=20
30 X=5
40 Y=3
50 IF A<B AND X>Y THEN Z=X+Y
60 PRINT ”Z=”; Z
70 END
Результат выполнения программы: Z = 8

Оператор ELSEIF

Существует расширенный вариант стуктуры IF- THEN- ELSE, который обеспечивает передачу
управления по нескольким направлениям путем использования дополнительного оператора
ELSEIF (иначе если).

Пример 3.8.
10 X = -2
20 IF X >= -2 AND X <= 0 THEN
30 Y = ABS(X)
40 ELSEIF X > 0 AND X < 1 THEN
50 Y = SQR(X)
60 ELSEIF X >= 1 AND X <= 2 THEN
70 Y = EXP(X)
80 END IF
90 PRINT "X="; X, "Y="; Y
100 X = X + .5
110 IF X <= 2 THEN GOTO 20
120 END

X=-2 Y=2
X=-1.5 Y=1.5
X=-1 Y=1
X=- .5 Y= .5
X=0 Y= 0
X= .5 Y= 7071068
X=1 Y=2.718282
X=1.5 Y=4.481689
X=2 Y=7.389056

20
Пример 3.9. Определить значение переменной Х, которое она получит при выполнении
программы.

10 X = 2.5
20 Y = -1.5
30 Z = (X ^ 2 - Y) * 3 - 22.5
40 IF Z < 0 THEN
41 X = 7.3 * X
50 ELSE
51 X=X^2
60 END IF
70 IF Z > 10 THEN
71 X = (Z + X) / 2
80 END IF
81 PRINT "X="; X
90 END

Ответ: Х=6.25

21
Пример 3.10. Составить программу нахождения корней квадратного уравнения

ax 2 + bx + c = 0 .

- b + b 2 - 4ac - b - b 2 - 4ac
x1 = ; x2 =
2a 2a

Задачу просчитать для двух случаев: 1) а = 2 , b = 3 , c = -1 . 2) a = 2 , b = 1, c = 7. Составим


блок – схему решения задачи

Начало

Описание
и ввод

d: = -4ac

НЕТ
Вычисление
d<0 X1, X2

ДА

Вывод
«Действительных Вывод
корней нет» a, b, c; X1, X2

Конец
10 PRINT "Решение квадратного уравнения”
20 INPUT A
30 INPUT B
40 INPUT C

22
50 D=B^2-4*A*C
60 IF D < 0 THEN 110
70 x1 = (-B + SQR(D)) / 2 / A
80 x2 = (-B - SQR(D)) / 2 / A
90 PRINT "X1="; x1, "X2="; x2
100 GOTO 120
110 PRINT "Действительных корней нет
120 END
Рeшeниe квадратного уравнения
a=2 b=3 c=-1 x1= 0.2808 x2= -1.7808
Пример 3.11. Составить таблицу значений функции y = +4x-1 на отрезке [a;b] с шагом h.
Принять: a = -2; b =2 ; h = 0,5.
Блок – схема

Начало

Описание a, b, h
X, Y
Ввод a, b, h.

x=a

y= +4x-1

да
Вывод X,Y

х: = x + h x ≤b

Нет

Конец

23
10 PRINT " Табулирование функции "
20 INPUT A
30 INPUT B
40 INPUT H
50 PRINT "X", "Y"
60 X = A
70 Y = X ^ 3 + 4 * X - 1
80 PRINT X, Y
90 X = X + H
100 IF X <= B THEN 70
110 END

Табулирование функции
a=-2
b=2
h=0.5
x y
-2.000 -17.000
-1.500 -10.375
-1.000 -6.000
-0.500 -3.125
0.000 -1.000
0.500 1.125
1.000 4.000
1.500 8.375
2.000 15.000

24
Глава 4. Массивы. Работа с массивами
4.1. Описание массива

Множество величин, обладающих одинаковыми свойствами, объединяются в массив.


Например: массивом могут быть ученики школы; каждый ученик представляет собой элемент
этого массива.

Массивом может быть строка чисел А = [9,14,20,40] или прямоугольная таблица чисел

В=

Массив, состоящий из одной строки, называется одномерным. Массив, представляющий собой


таблицу чисел, называется двумерным.

Массив А – одномерный, массив В – двумерный.

Массив как единое целое обозначается именем. Имена массивов, как и имена переменных,
назначаются программистом по тем же правилам. Отдельные величины, образующие массив,
называются элементами массива или переменными с индексами.

Для обращения к отдельному элементу массива следует указать имя массива и в круглых
скобках написать его номер. Нумерация элементов массива начинается с нуля. Например: для
обращения в массиве А к элементу, значение которого 20, необходимо записать А(2) Если
массив двумерный, то элемент массива имеет два индекса, разделенные запятой. Первый
индекс указывает номер строки, второй - номер столбца.

Например: в массиве В: В (0,0)=1; В(2,0)=7; В (2,1)=8; В (1,1)= -6.

Номер элемента может быть константой, именем переменной или выражением.

Например: А( 2), А( і ), А(і+2), В(i,j), B( i+k,2), B(i*2,k+i).

Элементы одномерного массива расположены в ячейках памяти ЭВМ друг за другом в


порядке возрастания номеров. Например: А(0), А(1), А(2), А(3)…

Элементы двумерного массива располагаются построчно: В(0,0), B (0,1), В (0,2),

B(0,3), B(1,0), B(1,1)…

25
Например: массив В = в ячейках памяти ЭВМ располагается следующим

образом: 3, 5, 7, 2, 0, -1, -1, -3.

Размерность массива указывает верхнюю границу индекса,нижняя граница по умолчанию


равна нулю. Размерность массива А равна 3, массива В в последнем случае - (1, 3).

Для того, чтобы выделить ячейки памяти ЭВМ для массивов в программе их надо описать.

Описание типа массива задаётся следующим образом:

Например: DIM A(3), B(1,3)

DIM – служебное слово ( от DIMENSION - размерность);

А, В - имена массивов, (3), (1,3) – размерности массивов.

Элементы массивов могут входить в состав арифметических выражений.

4.2. Блоки данных и чтение из блоков данных

В рассмотренных ранее программах необходимые данные вводились с клавиатуры. Другой


способ ввода данных заключается в чтении данных из секции памяти компьютера, где эти
данные хранятся.

Блок данных – набор чисел(или строковых данных), предназначенных для ввода в память.
Признаком присутствия блока данных является служебное слово

DATA

Операторы DATA используются для хранения числовых значений в памяти.

Отдельные значения в операторе DATA разделяются друг от друга запятыми.


DATA 40, 70.5, -3.27, 4.15, 8

В одном операторе DATA может быть столько чисел,сколько поместится в одной строке.

Для чтения данных используется оператор,который имеет вид:

READ A, B, C

READ (читать) – служебное слово;

26
A, B, C – имена переменных, которым присваиваются значения из блока данных.

В данном случае А получит значение 40 , В =70.5, С=-3.27.

Число имен в списке оператора READ не должно превышать числа констант в блоке
данных,иначе машина выдаст сообщение об ошибке и остановится. Если число имен в списке
READ меньше числа констант в блоке данных,то некоторые константы останутся пока

неиспользованными. При появлении нового оператора READ чтение еще неиспользованных


данных будет продолжено.

В программе может быть любое количество операторов DATA. Операторы DATA можно
помещать в любом месте программы до оператора END. Когда начинает работать программа,то
одним из действий компьютера является поиск операторов DATA и запись значений из этих
операторов в специальную секцию памяти.

Операторы READ читают DATA по порядку (по номеру строки).Тип переменных, задаваемый
для оператора READ должн совпадать с типом соответствующей константы в операторе DATA.

Если необходимо возобновить чтение данных с начала единого блока в программу включают
оператор

RESTORE

Например: 10 DATA 40 , 70.5, -3.27, 4.15, 8, 3


20 READ A, B, C
40 READ Q
Переменная Q получит значение, которое уже получила переменная А, Q=40.

Примечание. Операторы DATA используются также для хранения строковых значений в


памяти. Строковые значения должны быть заключены в кавычки, если в них предполагаются
пробелы или другие отличные от букв символы (цифры,.точки,различные знаки и т.п.). В
кавычки нужно заключать строку, содержащую запятую.

10 DATA ДОМ , ОГОРОД, "САД 300 КВ . М "

20 DATA "ПЕСИКИ, ГРУШИ, СЛИВЫ"

27
4.3. Программы с массивами

Пример 4.1. Дан массив А(1). Сформировать массив В(1,1) по правилу b (i,j)=аi – 3aj.. i=0,1;
j=0,1. A(0)=3.4; A(1)=4.2.

Программа

10 DIM A(1), B(1, 1)


20 DATA 3.4, 4.2
30 READ A(0), A(1)
40 B(0, 0) = A(0) - 3 * A(0)
50 B(0, 1) = A(0) - 3 * A(1)
60 B(1, 0) = A(1) - 3 * A(0)
70 B(1, 1) = A(1) - 3 * A(1)
80 PRINT B(0, 0), B(0, 1)
90 PRINT B(1, 0), B(1, 1)
100 END
-6.8 -9.199999
-6 -8.4

Пример 4.2. Найти сумму положительных и отрицательных элементов массива А(5) = 2.5,
- 3.4, - 7.1, 0.5, - 4.7, 6.

. Программа
10 DIM A(5)
20 DATA 2.5, -3.4, -7.1, 0.5, -4.7,6
30 SP = 0
40 SO = 0
50 I = 0
60 READ A(I)
70 IF A(I) >= 0 THEN SP = SP + A(I) ELSE SO = SO + A(I)
80 I = I + 1
90 IF I <= 5 THEN 60
100 PRINT "SP="; SP, "SO="; SO
110 END
SP= 9 SO= -15.2

28
Блок – схема

начало

Описание массива,
объявление данных

SP=0 SP – сумма положительных чисел;

SO – сумма отрицательных чисел.


SO=0

I=1

ввод
элемента
массива
да
SP=SP+A(I)
A(i)>=0
нет

I<=6
SO = SO+A (I) I=I+1
да нет

вывод
SP,SO

конец

29
Глава 5. Оператор цикла
5.1. Структура счетного оператора цикла FOR

В некоторых задачах требуется многократное выполнения одной и той же


последовательности операторов. В этом случае применяется оператор цикла.
Конструкция счетного оператора цикла:

FOR X=m1 TO m2 STEP H


--------- блок операторов,
---------- исполняемых многократно
NEXT X

X – простая переменная, называемая параметром цикла;


m1 – начальное значения параметра цикла;
m2 – конечное значения цикла.
H -шаг изменения параметра.
Здесь служебные слова:
FOR (для), TO (до), STEP (шаг ), NEXT (следующий)
m1, m2, H должны получать значения до начала выполнения оператора FOR и не менять
эти значения в процессе выполнения оператора цикла.
Если шаг H=1, то оператор цикла имеет вид:

FOR X=m1 TO m2
Блок операторов
NEXT X

Оператор NEXT X вырабатывает очередное значение параметра Х . Если это значение не


превышает значение m2,то цикл не завершен и снова выполняется тело цикла.
Если Н < 0, то m2 < m1.

30
Выполнение оператора цикла можно представить в виде следующей схемы

X:= m1

тело цикла

X:= X+H

да

X≤m2
нет

следующий
оператор

Пример 5.1. Здесь представлена программа с использованием оператора цикла для


вычисления суммы квадратов чисел от 1 до 4. S=12+22+32+42
Фрагмент программы
.10 S=0 Комментарий
Х=1 S=0+12=1
20 FOR X=1 TO 4 STEP 1 X=2 S=1+22=5
X=3 S=5+32=14
30 S=S+X*X X=4 S=14+42=30
Результат: S=30 X=5 5>4 – происходит выход из
40 NEXT X
цикла и управление передается
50 ……….. следующему оператору. В данном
случае, это оператор под номером 50

31
5.2. Примеры циклических программ

Пример 5.2. Составить программу вычисления суммы обратных квадратов чисел от 1 до 15.
S=1+ + +…+ .

Программа Блок-схема

10 PRINT ”Сумма обратных квадратов” Начало


20 S=0

30 FOR K=1 TO 15 S=Ø


40 S=S + 1 / K ^ 2

50 NEXT K
K=1
60 PRINT ”S=” ; S

70 END

Результат S=S +

Сумма обратных квадратов

S=1.58044 k=k+1

Да
k≤15

Нет

Вывод S

Конец

32
Пример 5.3. Составить таблицу значений функции y = 2 x + sin( x 2 ) на отрезке[a, b] сшагом h.
a= -0.5, b= 2.5, h= 0.5.
10 PRINT "Табулирование функции"
20 PRINT "X", " Y"
30 A = -.5
40 B = 2.5
50 H = .5
60 FOR X = A TO B STEP H
70 Y = 2 ^ X + SIN(X * X)
80 PRINT X, Y
90 NEXT X
100 END
Табулирование функции
X Y
-0.5 0.9545107
0 1
0.5 1.661618
1 2.841471
1.5 3.6065
2 3.243197
2.5 5.623675

Пример 5.4. Найти значение функции y = 5 x 3 + 2 + x при x = -1.2, 0.5, 1.4, 2.7.

Объединим значения х в массив Х, состоящий из четырех элементов.


10 PRINT " Вычисление значений функции"
20 DATA -1.2,0.5,1.4,2.7
30 DIM X(3)
40 FOR I = 0 TO 3
50 READ X(I)
60 NEXT I
70 FOR I = 0 TO 3
80 Y = 5 * X(I) ^ 3 + SQR(2 + X(I))
90 PRINT "X="; X(I), "Y="; Y
100 NEXT I
110 END

33
Вычисление значений функции
X=-1.2 Y=-7.745574
X=0.5 Y= 2.206139
X=1.4 Y=15.56391
X=2.7 Y=100.583

Пример 5.5. Найти корень кубический из числа N с точностью до 0,0001 по формуле


N
2 xk +
x k2
x k +1 = ; x k – предыдущее значение ; xk+1 – последующее значение.
3

Пусть надо найти корень кубический из N=128 точностью h=1*10-4.

10 PRINT " Корень кубический "


20 INPUT N
30 INPUT A
40 X0 = N
50 FOR I = 1 TO 100
60 X = (2 * X0 + N / X0 ^ 2) / 3
70 IF ABS(X - X0) <= A THEN 100
80 X0 = X
90 NEXT I
100 PRINT "N="; N; " X="; X; " A="; A
110 END
Корень кубический
? 128
? 0,0001
N= 128 X= 5.039684 A= .0001

Пример 5.6. Вычислить сумму

å
k
sin kn
S = åk =1
4 n =1
; S1= - сумма; f=1*2*3…=k! – факториал.
k!

10 S = 0
20 S1 = 0
30 F = 1
40 FOR K = 1 TO 4
50 FOR N = 1 TO K

34
60 S1 = S1 + SIN(K * N)
70 F=F*K
80 S = S + S1 / F
90 NEXT N
100 NEXT K
110 PRINT "S="; S
120 END

S=2.09766

Пример 5.7. Три матрицы A, B, C имеют 2 строки и 2 столбца каждая. Вычислить


элементы матрицы С по формуле Сi,j= , где i,j =1,2

A(1,1)= 1.2, 2.1, 4.01, 3.13; B(1,1)= 12.3, 0.81, 3.05, 2.06.

10 DIM A(1, 1), B(1, 1), C(1, 1)


20 DATA 1.2, 2.1, 4.01, 3.13
21 FOR I = 0 TO 1
22 FOR J = 0 TO 1
23 READ A(I, J)
24 NEXT J
25 NEXT I
26 DATA 12.3, 0.81, 3.05, 2.06
30 FOR I = 0 TO 1
31 FOR J = 0 TO 1
32 READ B(I, J)
33 NEXT J
34 NEXT I
40 FOR I = 0 TO 1
50 FOR J = 0 TO 1
60 C(I, J) = 0
70 FOR K = 0 TO 1
80 C(I, J ) = C(I, J) + A(I, K) * B(K, J)
90 NEXT K
100 PRINT "I="; I, "J="; J, "C(I,J)="; C(I, J)
110 NEXT J
120 NEXT I
130 END

35
i =1 j =1 c(i,j )= 21.165
i =1 j =2 c( i,j )= 5.298
i =2 j =1 c( i,j )= 58.870
i =2 j =2 c( i,j )= 9.696

5.3. Цикл DO

5.3.1. Цикл с предусловием

Оператор цикла While.

DO WHILE (условие)
------------ блок
------------ операторов
LOOP

While – пока, DO – выполнить, LOOP - цикл


<условие> - выражение логического типа;
< блок операторов> - один или несколько связанных операторов,которые должны многократно
исполняться. Всякий раз,когда достигается оператор LOOP , управление снова передается
оператоу DO. В этот момент производится проверка условия оператором WHILE .
Если выражение <условие> имеет значение TRUE (истина ДА), то выполняются
последующие операторы, после чего вычисление выражения <условие> и его проверка
повторяются. Если <условие> имеет значения FALSE (ложь НЕТ), оператор WHILE
прекращает свою работу и управление передается из цикла оператору,следующему за
оператором LOOP.
Пример 5.8. Найти сумму чисел от 1 до 10 с помощью цикла DO WHILE
10 S = 0
20 I = 0
30 DO WHILE I < 10
40 I=I+1
50 S=S+I
55 LOOP
60 PRINT "S="; S
70 END
Результат: S=55.

36
Оператор цикла DO WHILE проверяет логическое выражение в начале цикла до того, как
цикл выполняется в первый раз и затем повторяется. Оператор LOOP WHILE проверяет
логическое выражение в конце цикла перед его повторным исполненим.

5.3.2 . Оператор цикла LOOP WHILE

DO
------------ блок
------------ операторов
LOOP WHILE (условие)

Составим программу предыдущего примера.


10 S = 0
20 I = 0
30 DO
40 I=I+1
50 S=S+I
55 LOOP WHILE I < 10
60 PRINT "S="; S
70 END
Результат: S=55.
Примечание. Циклы с оператором DO используются, если неизвестно количество
циклов. В цикле с предусловием цикл работает до тех пор, пока выполняется условие. В
рассматриваемом примере условие i<10. Пока это условие выполняется, цикл работает. Если
условие не выполняется, то машина переходит к выполнению следующих операторов
программы.
Пример 5.9. Вычислить число π, пользуясь формулой Грегори

Вычисление необходимо прекратить, как только абсолютная величина очередного члена


ряда станет меньше чем 0.5*10-3.
Комментарий:
Snak – знак
k – количество операций в цикле, что характеризует количество членов разложения ряда.

37
10 C=.0005
20 SNAK = -1
30 S = 1
40 S1 = 1
50 k = 1
60 DO
70 S1 = SNAK / (2 * k + 1)
80 S = S + S1
85 SNAK = -SNAK
90 k=k+1
100 LOOP WHILE ABS(S1) > C
110 S=4*S
120 PRINT "PI ="; S, "K="; k
130 END
PI=3.142591 K=1001
Член ряда, котрий стал меньше c=0.5*10 находится на 1001 месте ряда p /4.
-3

5.3.3. Операторы цикла DO UNTIL , LOOP UNTIL

DO UNTIL DO
(условие) ----------- блок
----------- блок ------------ операторов
------------ операторов
LOOP LOOP UNTIL (условие)

UNTIL - пока …не

Операторы DO UNTIL или LOOP UNTIL обеспечивают повторение цикла, пока логическое
выражение не станет истинным.
Примечание. Операторы DO WHILE и DO UNTIL проверяют логическое выражение в

начале цикла до того, как цикл выполняется в первый раз и затем повторяется. Операторы LOOP
WHILE и LOOP UNTIL проверяют логическое выражение в конце цикла перед его повторным

исполнением.
Пример 5.10. Найти сумму чисел от 1 до 50 с использованием цикла DO UNTIL.
10 K=0
20 S=0
30 DO UNTIL K = 50

38
40 K=K+1
50 S=S+K
60 LOOP
70 PRINT "S="; S
80 END Результат : S=1275

Пример 5.11. Вычислить сумму четных степеней переменной х


2k
S= , когда очередное значение степени x2k не станет больше 104.
Принять х=2.

10 X = 2
20 S = 1
30 K = 0
40 DO
50 K=K+1
60 S = S + X ^ (2 * K)
70 LOOP UNTIL X ^ (2 * K) > 10000
80 PRINT "K="; K, "S="; S
90 END
Результат: K=7 S=21845

Пример 5.12. Найти корень кубический из числа N с точностью до 0,0001 по формуле


N
2 xk +
x k2
x k +1 = xk – предыдущее значение, xk+1 – последующее значение .
3
Пусть надо найти корень кубический из N=128 точностью A=1*10-4.
k– количество циклов
10 PRINT " Корень кубический "
20 INPUT N
30 INPUT A
40 X = N
50 K = 0
55 DO
56 X0 = X
60 X = (2 * X0 + N / X0 ^ 2) / 3
65 K = K + 16
70 LOOP UNTIL ABS(X - X0) <= A
80 PRINT "N="; N; " X="; X; " A="; A, "K="; K
90 END

39
Корень кубический
N= 128 X=5.039684 A=0.0001 K=192

Пример 5.13. Смотрите пример 4.1 главы 4. Дан массив А(1). Сформировать массив
В(1,1) по правилу b (i,j ) = аi – 3aj.. i = 0,1; j = 0,1. A (0) = 3.4; A (1) = 4.2.
10 DIM A(1), B(1, 1)
20 DATA 3.4,4.2
30 FOR I = 0 TO 1
40 READ A(I)
50 NEXT I
55 PRINT " MAССИВ B "
60 FOR I=0 TO 1
70 FOR J = 0 TO 1
80 B(I, J) = A(I) - 3 * A(J)
90 PRINT "I="; I, "J="; J, " B="; B(I, J)
100 NEXT J
110 NEXT I
120 END

МАССИВ B
I=0 J=0 B(0,0)= -6.80
I=0 J=1 B(0,1)= -9.19999
I=1 J=0 B(1,0)=-6
I=1 J=1 B(1,1)=-8.4

Пример 5.14. Написать программу выбора максимального по площади треугольника из


совокупности шести треугольников, для которых известны две стороны ai , bi и угол,

заключенный между ними j i ( i= 1, 2, 3,…6).


5 CLS
10 N = 5
15 PI = 3.1415926#
20 DIM A(N), B(N), FIGR(N), FI(N), S(N)
30 DATA 2, 4,12,6, 8 ,3
40 DATA 4, 3, 6, 5, 5 ,4
50 DATA 30, 45, 25, 120, 60, 75
60 FOR I = 0 TO N
70 READ A(I)
80 NEXT I

40
90 FOR I = 0 TO N
100 READ B(I)
110 NEXT I
120 FOR I = 0 TO N
130 READ FIGR(I)
140 NEXT I
150 FOR I = 0 TO N
160 FI(I) = FIGR(I) * PI / 180
170 S(I) = (A(I) * B(I) * SIN(FI(I))) / 2
180 PRINT "I="; I, " S="; S(I)
190 NEXT I
200 FOR I = 0 TO N - 1
210 IF S(I + 1) > S(I) THEN
220 S(I) = S(I + 1)
230 PRINT S(I)
240 ELSE
250 S(I + 1) = S(I)
260 PRINT S(I + 1)
270 END IF
280 Smax = S(I + 1)
290 NEXT I
300 PRINT " Smax="; Smax
310 END

I=0 S= 2 4.24264
I=1 S= 4.242664 15.21426
I=2 S= 15.21426 15.21426
I=3 S= 12.99038 17.32051
I=4 S= 17.32051 17.32051
I=5 S= 5.795555
Smax = 17.32051

i - 0.1
Пример 5.15. Последовательность x1 , x 2 ,... образована по закону xi =
i + tg 2i
3

( i= 1,2…). Известно действительное число E>0. Записать члени последовательности


x1 , x 2 ,... остановившись после первого члена , для которого виполняется xi < E.
Принято: E= EPS =0.01.
5 CLS
10 EPS = .01
20 X = 1
30 I = 1
40 DO WHILE X > EPS

41
50 X = (I - .1) / (I ^ 3 + ABS(TAN(2 * I)))

60 PRINT X
70 I = I + 1
80 LOOP
90 END
0.283 , 0.207 , 0.106, 0.055 , 0.039 , 0.027 , 0.020 , 0.015 , 0.012 , 0.010

Пример 5.16. Задано натуральное число n. Найти первую цифру числа n.


Для примера взято число 82953210
5 CLS
10 N = 7
20 DIM A(N), B(8)
30 DATA 8,2,9,5,3,2,1,0
40 DATA 1,2,3,4,5,6,7,8,9
50 FOR I = 0 TO N
60 READ A(I)
70 NEXT I
80 FOR I = 0 TO 8
90 READ B(I)
100 NEXT I
105 I = 0
110 IF B(I) = A(0) THEN GOTO 140
120 I = I + 1
130 IF I <= 9 THEN GOTO 110
140 PRINT "A(0)="; B(I)

150 END
A(0)= 8;

n
(-1) k (k + 1)
Пример 5.17. Задано натуральное число n. Вычислить выражение å
k =0 k!
.
n
(-1) k (k + 1) 3 4 (-1) k (k + 1)
å
k =0 k!
= 1 - 2 + - + .... +
2! 3! k!
+ ...

Обозначим сумму первых n членов через S. Общий член ряда обозначим через U.
(-1) k k (-1) k (k + 1)
U k -1 = ; Uk =
(k - 1)! k!
Чтобы получить каждый последующий член ряда надо предыдущий умножить на один и тот же

42
Uk (-1) k (k + 1)(k - 1)! k +1
множитель = k -1
=- 2 .
U k -1 k!(-1) k k

CLS

N=5

S=1

U=1

FOR K = 1 TO N

U = U * (-(K + 1) / K / K)

S=S+U

NEXT K

PRINT "S="; S

END

S= - 8.33344E-03

Пример 5.18. Заданы целые числа a1 , a 2 ....a n . Вычислить сумму тех чисел

последовательности, которые удовлетворяют условию ai < i 2 .

Заданные числа составляют массив A(N) . N может принимать любое значение.


В этой программе N=6.

] Program Pr518;
Uses Crt;
const N=6;
Label
lb1;
var A:array[1..N] of integer;
var S,i:integer;
Begin
Clrscr;
for i:=1 to N do
begin

43
write('A[i]=');
read(A[i]);
end;
i:=1; S:=0;
lb1:
if abs(A[i])<i*i then
S:=S+A[i];
i:=i+1;
if i<= N then goto lb1;
writeln;
writeln(' S=',S);
End.
A[i]=2, A[i]=5, A[i]=3, A[i]=-4 , A[i]=8, A[i]=-5.
Результат: S= 12

44
Глава 6. Подпрограммы

В различных местах одной и той же программы многократно может выполняться одна и та


же процедура вычисления некоторой функции. Переписывать каждый раз такую группу
операторов заново не экономично. Гораздо выгоднее выделить операторы данной процедуры из
основной программы и при необходимости передать ей управление из основной программы.
После выполнения выделенных операторов управление должно быть передано в то место
основной программы, где содержится оператор перехода к данной процедуре.На языке
программирования БЕЙСИК эти средства реализуются с помощью функций пользователя и
подпрограммы.

6.1. Функции пользователя

В тех ситуациях, когда в программе необходимо многократно вычислять одно и тоже


выражение при различных значениях параметров, целесообразно создавать функции. Для
описания создаваемых функций используется оператор DEF.

DEF FNm ( аргументы)= выражение

Оператор DEF является сокращением английского слова define (определять);


FNm – имя функции, состоящее из обязательных FN и произвольной буквы латинского
алфавита, обозначенной m. Например, FNZ
10 DEF FNZ(X)=TAN(X)+2*SIN(X)
определяет функцию вещественного типа с именем FNZ и аргументом Х для вычисления
значения выражения tgx +2 sinx .
Функции могут быть вещественными, целочисленными или символьными. Функция
считается целочисленной или символьной, если ее имя заканчивается символами %, $.
Например, функция с именем FNZ % - целочисленная, а функция FNZ $ - символьная.
Аргументы функции в операторе DEF, представляющие собой имена переменных,
называются формальными параметрами и отделяются друг от друга запятой. Допускается
количество аргументов не более пяти. Имя функции и значение выражения должны быть одного
типа.

45
Вычисление значения функции, определенной в операторе DEF, происходит лишь в момент
обращения к ней. Обращение производится по имени функции, за которым в круглых скобках
указываются фактические аргументы. Фактические аргументы могут быть выражением. При
обращении к функции вычисляются значения всех фактических аргументов. Затем они
присваиваются формальным параметрам в описании функции и вычисляется значение
выражения , указанного в операторе DEF. Полученный результат является значением

вычисленной функции.
Пример 6.1.
DEF FNZ(X)=X*X+5
A=2
B=3
PRINT FNZ(A), FNZ(B+1) ,FNZ(B-A), FNZ(FNZ(A))
END
После выполнения программы на экране монитора появится информация:
9 21 6 86
При обращении к функции количество, порядок следования и тип фактических и
формальных аргументов должны соответствовать друг другу.
Результатом выполнения оператора DEF есть одно число.
Пример 6.2. Найти периметр треугольника по координатам его вершин:
A (2.5 ; 3.0) , B (-1.2 ; -4.0), C (5.0 ; -2.5).
Периметр треугольника Р = АВ + ВС + СА, т.е. отыскание длины отрезка осуществляется
три раза. Можно оформить это действие в виде функции пользователя. Расстояние между двумя
точками находится по формуле:

А (ХА,YA) XA= 2.5 , YA=3.0


B (XB, YB) XB = -1.2 , YB= -4.
C (XC, YC) XC= 5.0 , YC= -2.5

5 CLS
10 PRINT "Вычисление периметра треугольника"
20 DEF FND (X1, X2, Y1, Y2) = SQR((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)
30 L1 = FND(2.5, -1.2, 3, -4)
40 L2 = FND(-1.2, 5, -4, -2.5)
50 L3 = FND(2.5, 5, 3, -2.5)
60 P = L1 + L2 + L3

46
70 PRINT "P="; P
80 END
Вычисление периметра треугольника
P=20.3381

Комментарий.

1) FND – имя функции

2) X1, X2, Y1, Y2 – формальные параметры в имени функции FND

3) L1, L2, L3– длины сторон треугольника, которые насчитываются в процессе работы
оператора DEF.

4) В программе трижды происходит обращение к функции FND и формальные параметры


X1, X2, Y1, Y2 заменяются фактическими параметрами.

5) Если подпрограмма имеет вид функции, то обращение к функции происходит аналогично


обращению к стандартным функциям типа sin, cos, sqr и т.д. В том месте, где это необходимо,
записывается имя функции, вслед за которым в круглых скобках перечисляются фактические
параметры, нужные для её вычисления.

6) Значения функции DEF присваиваются длинам сторон L1, L2, L3.

Пример 6.3. Вычислить значения следующих функций:

6,9 + y 2,1z + z 4
a == ; b= ,
y 2 + 1 + 2 y + 3y 2 z 2 + 1 + 2 z + 3z 2

используя функцию пользователя для вычисления выражения, общий вид которого

k = p2 + 1+ 2 p + 3p2

10 Y = 4
20 Z = 2
30 DEF FNK (P) = P * P + SQR(1 + 2 * P + 3 * P * P)
40 A = (6.9 + Y) / FNK(Y)
50 B = (2.1 * Z + Z ^ 4) / FNK(Z)
60 PRINT "A="; A, "B="; B
70 END Результат: A= .4628482 B=2.486733

47
6.2. Подпрограммы
При всей своей полезности функции пользователя имеют ограничения - они определяются
только с помощью одного выражения и позволяют одновременно получить всего лишь один
результат. В большинстве случаев вспомогательные алгоритмы включают несколько команд
или составляются для получения более чем одного результата. В этом случае используются
подпрограммы.

Подпрограмма есть часть программы, решающая вспомогательную задачу. К ней можно


обратится из любого места основной программы с автоматическим возвратом в основную
программу.

Для обращения к подпрограмме используются следующий оператор

n GOSUB m

где GOSUB – служебное слово (GOTO – идти к и SUBROUTINE - подпрограмма );


n – метка оператора GOSUB; m – номер подпрограммы, с которого начинается подпрограмма.
Завершает выполнение подпрограммы оператор

K RETURN

RETURN ( возврат ) – служебное слово; K - его метка.

Оператор RETURN осуществляет возврат к следующему за GO SUB оператору.


Подпрограмма может находится в любом месте программы и вызываться сколько угодно
раз. Обычно подпрограмму распологают в конце программы перед оператором END.
Как отмечалось ранее, подпрограмма является частью основной программы и имеет те же
переменные, что и основная программа. Результатом выполнения подпрограммы может быть
несколько значений ( например, таблица значений, массив)

48
Пример 6.4. Составить программу вычисления числа сочетаний
n!
c nm =
( n - m)! m!
с использованием подпрограммы вычисления факториала .
Пусть N=10, M=3.
10 PRINT "Вычисление числа сочетаний"
20 INPUT N
30 INPUT M
40 L = N
50 GOSUB 150 Вычисление N!
60 C = F
70 L = M
80 GOSUB 150 Вычисление M!
90 C = C / F
100 L = N - M
110 GOSUB 150 Вычисление (N-M)!
120 C = C / F
130 PRINT "C="; C
140 GOTO 200
----- --------------------------
150 F = 1 Подпрограмма вычисления
160 FOR K = 1 TO L
170 F = F * K факториала. L - принимает
180 NEXT K
190 RETURN значение в основной программе
-------------------------------
200 END
Вычисление числа сочетаний. С = 120

Пример 6.5. Найти радиусы описанной и вписанной в треугольник окружностей.


Стороны треугольника a, b, c .
1) a =5, b =3.2, c = 6.4 ; 2) a = 4.5, b = 1.7, c = 5.1; 3) a =15, b =8, c =20.
Радиус описанной окружности определяется по формуле:
R= ;
Радиус вписанной окружности определяется по формуле:
r= ;

49
где S – площадь треугольника.
Площадь треугольника можно вычислить по формуле Герона:
S= ;

где p = - полупериметр треугольника.

10 CLS
20 DATA 5,3.2,6.4
30 DATA 4.5,1.7,5.1
40 DATA 15,8,20
50 DEF FNS (A, B, C, P) = SQR(P * (P - A) * (P - B) * (P - C))
60 DEF FNP (A, B, C) = (A + B + C) / 2
70 READ A, B, C Комментарий:
80 GOSUB 140 Вычисление площади S и
90 READ A, B, C периметра P оформлено в виде
100 GOSUB 140 функций пользователя FNS и FNP.
110 READ A, B, C.
120 GOSUB 140
130 GOTO 190
140 P = FNP(A, B, C) -------------------------------------------------------------------------
150 R1 = (A * B * C) / (4 * FNS(A, B, C, P)) Вычисление радиусов R и r
160 R2 = FNS(A, B, C, P) / P оформлено в виде подпрограммы
170 PRINT "R1="; R1, "R2="; R2
180 RETURN --------------------------------------------------------------------------------------------
190 END
Ответы: R1=3.252381 R2= 1.078241
R1= 2.596084 R2= .6649736
R1= 11.2788 R2= 2.474286

Пример 6.6. Решить квадратное уравнение:


+ bx + c = 0
при заданных значениях коэффициентов:
1 ) а = 1, b = -2, c = 1; 2) а = 1, b = -2, c = 1; 3) а = 2, b = 4, c=7

- b ± b 2 - 4ac
x1, 2 = Введем обозначение D = b 2 - 4ac
2a

50
5 CLS
10 PRINT "Решение квадратного уравнения "
20 DATA 1,-2,1
30 DATA 2,4,7
40 DATA 1,-7,12
50 READ A, B, C
60 GOSUB 120
70 READ A, B, C
80 GOSUB 120
90 READ A, B, C
100 GOSUB 120
110GOTO 210
120 D = B ^ 2 - 4 * A * C ---------------------------------------------------------------------
130 IF D < 0 THEN 185
140 X1 = (-B + SQR(D)) / 2 / A Подпрограмма решения
150 X2 = (-B - SQR(D)) / 2 / A квадратного уравнения.
160 PRINT "a="; A, "b="; B, "c="; C Коэффициенты A , B, C принимают
170 PRINT "X1="; X1, "X2="; X2 значения в основной программе.
175 PRINT
180 GOTO 200

185 PRINT "a="; A, "b="; B, "c="; C

190 PRINT " Действительных корней нет"


195 PRINT
200 RETURN ---------------------------------------------------------------------------------------------
210 END
Решение квадратного уравнения
a= 1 b=-2 c= 1
X1= 1 X2= 1

a= 2 b= 4 c= 7
Действительных корней нет

a= 1 b=-7 c= 12
X1= 4 X2= 3

51
Пример 6.7. Составить подпрограмму для вычисления координат центра тяжести системы
n материальных точек с массами m1 , m 2 ,...mn и координатами
( x1 , y1 ) , ( x 2 , y 2 ) , … ( x n , y n )
n n

åm x
i =1
i i åm y
i =1
i i
по формулам xc = n
yc = n

åm
i -1
i åm
i =1
i

Введены три массива: в массив M входят данные о массе точек; массив MX содержит
n
абсциссы точек, а массив MY – их ординаты. MS = å mi - масса всей системы.
i =1

n n
MX= å mi xi ; MY=
i =1
åm y
i =1
i i

5 CLS
10 PRINT "Вычисление координат центра тяжести системы "
20 N = 3
30 DIM M(N - 1), MX(N - 1), MY(N - 1)
40 DATA 8, 10, 12
50 FOR I = 0 TO 2
60 READ M(I)
70 NEXT I
80 DATA 0, 2, 6
90 FOR I = 0 TO 2
100 READ X(I)
110 NEXT I
120 DATA 0, 6, 4
130 FOR I = 0 TO 2
140 READ Y(I)
150 NEXT I
160 MS = 0
170 MX = 0
180 MY = 0
190 GOSUB 240
200 XC = MX / MS
210 YC = MY / MS
220 PRINT "XC="; XC, "YC="; YC
230 GOTO 300
240 FOR I = 0 TO N – 1 STEP 1--------------------------------------

52
250 MS = MS + M(I)
260 MX = MX + M(I) * X(I)
270 MY = MY + M(I) * Y(I)
280 NEXT I
290 RETURN -------------------------------------------------------------------
300 END
Вычисление координат центра тяжести системы
XC = 3.066667 YC= 3.6

Пример 6.8. Вычислить углы треугольника ABC по координатам его вершин A, B, C.


Угол A треугольника выражается через его стороны a ,b, c по формуле

( p - b)( p - c)
A = 2 arctan
p( p - a )
где p = (a + b + c) / 2 - полупериметр.
При решении этой задачи возникает две проблемы:
1. Стороны треугольника нам неизвестны, а известны координаты точек A, B, C.
Координаты точек, для примера, приведены ниже.
2. Неизвестно, являются точки A, B, C вершинами треугольника.
Расстояние между двумя точками находится по формуле:

А (Х1,Y1) X1=0 , Y1=0


B (X2, Y2) X2 =6 , Y2=6.5
C (X3, Y3) X3=8 , Y3=2

Для треугольника выполняется условие l3 < (l1 + l 2) ) и l3 > abs (l1 - l 2 )


5 CLS
6 PRINT " Вычисление углов треугольника"
7 PRINT
10 DIM X(3), Y(3), L(2)
15 PI = 3.1415926#
20 DATA 0, 6, 8, 0
30 FOR I = 0 TO 3 STEP 1
40 READ X(I)
50 NEXT I
60 DATA 0, 6.5, 2, 0

53
70 FOR I = 0 TO 3 STEP 1
80 READ Y(I)
90 NEXT I
100 GOSUB 160
110 ALFA = 2 * ATN(SQR((P - B) * (P - C) / P / (P - A)))
120 BETA = 2 * ATN(SQR((P - C) * (P - A) / P / (P - B)))
130 GAMA = PI - (ALFA + BETA)
140 PRINT " ALFA="; ALFA, "BETA="; BETA, "GAMA="; GAMA
141 ALFGR = 180 * ALFA / PI
142 BETGR = 180 * BETA / PI
143 GAMGR = 180 * GAMA / PI
144 PRINT
145 PRINT "ALFGR="; ALFGR, "BETGR="; BETGR, "GAMGR="; GAMGR
150 GOTO 270
160 FOR I = 0 TO 2 --------------------------------------------------------------------------------------------
170 L(I) = SQR((X(I + 1) - X(I)) ^ 2 + (Y(I + 1) - Y(I)) ^ 2)
180 NEXT I Подпрограмма вычисления
190 A = L(1) сторон треугольника
191 B = L(2)
192 C = L(0)
193 PRINT "A="; A, "B="; B, "C="; C
194 PRINT
200 IF C < (A + B) AND C > ABS(A - B) THEN Условие существования
210 P = (A + B + C) / 2 треугольника
220 ELSE
230 PRINT "Треугольник не существует"
240 GOTO 270
250 END IF
260 RETURN ---------------------------------------------------------------------------------------------------------
270 END

Вычисление углов треугольника


A= 4.924429 B= 8.246211 C= 8.845903
ALFA= .5803983 BETA= 1.163644 GAMA= 1.397551
ALFGR=33.25437 BETGR= 66.67188 GAMGR= 80.07375

54
Пример 6.9. Найти площадь пятиугольника ABCDE, если известны его стороны и две
диагонали. Сторонам пятиугольника и диагоналям нададим значения AB= 1, BC= 1.5, CD= 2,
DE= 3, EA= 2, AC= 2, AD= 2.5.
5 CLS
10 PRINT " Вычисление площади пятиугольника "
20 DATA 1,1.5,2
30 DATA 2,2,2.5
40 DATA 2.5,3,2
50 READ A, B, C
60 GOSUB 135
70 S1 = S
75 PRINT "S1="; S
76 PRINT
80 READ A, B, C
90 GOSUB 135
95 S2 = S
96 PRINT "S2="; S2
97 PRINT
100 READ A, B, C
110 GOSUB 135
115 S3 = S
116 PRINT "S3="; S3
117 PRINT
120 SP = S1 + S2 + S3
125 PRINT "SP="; SP
130 GOTO 160
135 P = (A + B + C) / 2
140 S = SQR(P * (P - A) * (P - B) * (P - C))
145 PRINT "a="; A, "b="; B, "c="; C
150 RETURN
160 END
a=1 b= 1.5 c= 2 s1= .726844
a= 2 b= 2 c= 2.5 s2= 1.951562
a= 2.5 b= 3 c= 2 s3= 5.158138

55
ГЛАВА 7 . ЛИТЕРНЫЕ ВЕЛИЧИНЫ.
ПРОГРАММЫ С ЛИТЕРНЫМИ ВЕЛИЧИНАМИ
7.1. Литерные величины
Литерные константы представляют собой набор символов, заключенный в кавычки.
Например, “ урок “, “S “, “ ; “, “ 2005 год “, “------“, “ “- пустая константа.
Литерная константа может содержать не более 255 символов.
Для литерной переменной имя выбирается так же, как и для вещественной, но это имя
снабжается символом $.
Например: A$, B1$.
Литерными могут быть массивы. B$(3)= “ Зима”, “Весна”, “Лето”, “ Осень”.
Литерные (строковые) выражения в БЕЙСИКЕ образуются из литерных констант, литерных
переменных и функций помощью знака операции соединения текстов. Операция соединения
текстов обозначается символом +.
A$ + B$ - означает, что происходит соединение значений литерных переменных.

Например: A$= ”ЗИ”, B$ = “ МА”. Если С$ = A$+ B$, то C$ = ”ЗИМА”.


К стандартным литерным функциям относится числовая функция
LEN (A)

где А- литерное выражение.


Значением этой функции есть длина литерного выражения А. Длиной текста называется
количество символов в нем.
Например: значение LEN (”БАРСИК”) равно 6.
Операция выделения из текста его части осуществляется функцией
MID$ (A,N,M)

где MID$ - имя функции;


А - литерное выражение или имя литерной переменной ;
N - номер первого из выделяемых символов;
M - количество выделяемых символов.
Например: MID$( “ БАРСИК”, 1, 4). Значением єтоой функции будет “БАРС”
Выделенная из текста часть или подстрока может быть присвоена новой литерной
переменной.

56
Например: Q$=MID$( “ ДОКЛАД”, 3, 4).
Литерная переменная Q$ получит значение “КЛАД”.
Если функция MID$ стоит в правой части оператора присваивания, то выделенная этой

функцией подстрока присваивается новой переменной.


Если функция MID$ стоит в левой части оператора присваивания, то выделенная подстрока
заменяется значением той переменной, которая находится в правой части оператора.
Пример 7.1. 10 A$= “ДОКЛАД”
20 B$=”ПУСК”
30 MID$( A$, 3, 4)= B$
40 PRINT A$
50 END
После выполнения этих операторов получим на экране ДОПУСК.
Стандартные функции и операция и соединения текстов позволяют обрабатывать текстовую
информацию.

Пример 7.2.
10 A$ = "КОРАБЛЬ"
20 B$ = MID$(A$, 1, 6) + "Ь"
30 PRINT B$
40 END
С помощью функции MID$ из слова КОРАБЛИК выделяется “КОРАБЛ”. Операция +
присоединяет к нему “Ь” и получаем КОРАБЛЬ.
Стандартная функция
STRING$ ( A1, A2)

предназначена для создания символьной переменной любой длины, содержащей одинаковые


символы.

А1 – целое выражение, принимающее значение от 0 до 255 и определяющее длину содаваемо

строки;
А2 - целое выражение, принимающее значение от 0 до 255, соответствующее коду символа,

которым заполняется строка; или символьное выражение, первым символом которого


заполняется новая символьная строка.
Таблица кодов символов приводится в инструкции, прилагаемой к ПК.

57
Например: результат действия функции STRING$ (41, 61) и STRING$ (41,” =” ) будет один и тот
же: будет сформирована строка длиной 41 символ, состоящий из = .
Значение вновь создаваемой строки может быть присвоено новой переменной или является
элементом вывода.

B$= STRING (5, ”+ ”)

В результате действия этого оператора переменная B$ получит значение +++++.

Пример 7.3.
5 CLS
10 T$ = STRING$(8, 46)
15 A$ = STRING$(5, 95)
20 B$ = STRING$(10, 43)
21 D$ = STRING$(5, "=")
25 PRINT T$ , D$
30 PRINT A$, B$
Будет напечатано следующее:
........ =====
- - - - - ++++++++++
Пример 7. 4
. 10 A$ = "ГЛАВА 2"
20 N = 16
30 PRINT A$; STRING$(20 - LEN(A$), "."); N
40 END
После выполнения этих операторов выводится информация
ГЛАВА 2………….16.

Функция
TAB (N)

входит в команду PRINT и выводит пробелы до указанной позиции N.


Например: PRINT TAB ( 5 ); “S=”; S

Литерные (символьные) переменные допускают сравнение. Такое сравнение осуществляется


с помощью операций отношений. При этом следует иметь в виду, что все символы БЕЙСИКа
упорядочены: цифры по возрастанию, буквы – в алфавитном порядке.
Например: 1) если A$=BCD; B$= BCD, то A$=B$;

58
2) если A$=BDC; B$=BCD, то A$>B$, т.к. сравнение осуществляется
посимвольно.

7.2. Примеры программ с литерными (символьными ) величинами.

Пример 7.5. Из слова ГАСТРОНОМ образовать слово АГРОНОМ .


5 CLS
10 PRINT "Образование слов"
20 A$ = "ГАСТРОНОМ"
30 PRINT A$
40 B$ = MID$(A$, 2, 1) + MID$(A$, 1, 1) + MID$(A$, 5, 5)
50 PRINT B$
60 END
Образование слов
ГАСТРОНОМ
АГРОНОМ

Пример 7.6. Сосчитать количество букв ” О ” в предложении


“ХОРОШ ПИРОЖОК, ВНУТРИ ТВОРОЖОК”.
Задача состоит в том, чтобы, сравнив каждый символ данного предложения с символом
”О”, найти количество символов, равных “О”.
Обозначения: A$= “ ХОРОШ ПИРОЖОК, ВНУТРИ ТВОРОЖОК”
B$= “О”
N - количество букв О в предложении.
5 CLS
10 PRINT " Считаем букву О"
20 A$ = " ХОРОШ ПИРОЖОК, ВНУТРИ ТВОРОЖОК "
30 PRINT A$;
40 B$ = "Ћ"
50 N = 0
60 FOR I = 1 TO LEN(A$)
70 IF MID$(A$, I, 1) = B$ THEN N = N + 1
80 NEXT I
85 PRINT
90 PRINT " В предложении “;N;" букв О”
100 END
Считаем букву О

59
ХОРОШ ПИРОЖОК, ВНУТРИ ТВОРОЖОК
В предложении 7 букв О
Пример 7.7. Имеется список, состоящий из 10 фамилий, номеров и городов, где
проживают их владельцы. Требуется создать программу, которая по вводимой фамилии
печатала бы номер телефона и место жительства. Если же введенной фамилии нет в списке, то
необходимо выдать информацию об этом.
Сведения о наличии телефона
АНТОНОВ 183-19-48 ВОЛГОГРД
БАРСОВ 52-16-35 ВОРОНЕЖ
ГУРОВ 13-53-14 РИГА
ЕРМАКОВА 254-14-53 МОСКВА
ЗИМИН 386-43-71 МОСКВА
ИЛЬИН 232-46-17 КИЕВ
КРУТОВА 278-61-34 ХАРЬКОВ
МОРОЗОВ 23-17-29 НИКОЛАЕВ
НИКИФОРОВ 57-83-21 ВОРОНЕЖ
ПЕТРОВ 162-32-75 ЛЬВОВ
Заданный список можно рассматривать как массив литерных (символьных) переменных.
Длина каждого значения 31 позиция.
Обозначения: S$(9) - список; F$ - фамилия; F1$ - проверяемая фамилия.

5 CLS
10 PRINT ” Сведения о наличии телефона ”
20 DATA ” АНТОНОВ 183-19-48 ВОЛГОГРД”
30 DATA ” БАРСОВ 52-16-35 ВОРОНЕЖ”
40 DATA “ ГУРОВ 13-53-14 РИГА”
50 DATA ” ЕРМАКОВА 254-14-53 МОСКВА”

60 DATA ” ЗИМИН 386-43-71 МОСКВА”

70 DATA ” ИЛЬИН 232-46-17 КИЕВ”

80 DATA ” КРУТОВА 278-61-34 ХАРЬКОВ ”

90 DATA ” МОРОЗОВ 23-17-29 НИКОЛАЕВ”

100 DATA ” НИКИФОРОВ 57-83-21 ВОРОНЕЖ”

110 DATA ”ПЕТРОВ 162-32-75 ЛЬВОВ”


120 DIM S$ (9)
130 FOR I= 0 TO 9

60
140 READ S$ (I)
150 NEXT I
160 INPUT F1$
170 FOR I= 0 TO 9
180 F$ = MID$ ( S$ ( I ), 1, 10 )
190 IF F1$ =F$ THEN GOTO 230
200 NEXT I
210 PRINT ” В списке нет фамилии ”; F1$
220 GOTO 250
230 PRINT F1$ ; ’’город ’’; MID$ ( S$ ( I ), 21 , 10)
240 PRINT ” ДОМАШНИЙ ТЕЛЕФОН ” ; MID$ ( S$ ( I ), 11, 11 )
250 END
ИЛЬИН город КИЕВ
ДОМАШНИЙ ТЕЛЕФОН 232-46-17

РАЗДЕЛ 2. Сборник упражнений ”UP”

2.1. Инструкция к выполнению заданий


Упражнения предназначены для закрепления теоретического материала. По тематике они
строго соответствуют главам раздела 1. Так, после главы 1 следует выполнять упражнения с
шифром ”UP1”, после главы 2- с шифром ”UP2” и т.д

. Упражнения содержат несколько видов заданий.

Пример 1.

1. 1.2Е3 4. 0.7Е-1 7. 12.78

2. 128 5. +0.3 8. –1100

3. -3 6 +17 9 1Е3

Указать, какие из приведенных чисел являются константами целого типа?


Читатель должен, просматривая числа в порядке возрастания их номеров от 1 до 9,
записать номера тех констант, которые он считает целого типа. В данном случае такими
будут 2 3 6 8. Эти цифры образуют число 2368. Это число и есть ответом на поставленный
вопрос.

61
Пример 2. Вычислить значение выражения

20- sqr (36)*sin (pi/6)

pi соответствует известному числу . При выполнении данного упражнения читатель, зная


порядок выполнения операций, рассуждает так:

Sqr (36 )=6; sin (pi/6)=0.5; 6*0.5=3; 20-3=17 .

Ответ 17.

Пример 3. Какое значение получит переменная Y в результате выполнения программы?

10 A=2
20 B=-3
30 C=-2
40 X=B/A
50 X=X+0.5
60 Y=A*X*X+B*X+C
70 END

В этом случае читатель должен представить,что он машина, и выполнить все указанные


действия так, как их выполняет машина, и получить результат.

A=2
B=-3
C=-2
-3/2=-1.5
X= -1.5+0.5=-1
X=-1
2*(-1)*(-1)+(-3)*(-1)-2=2+3-2=3
Y=3
После выполнения программы переменная Y получит значение 3. Ответ 3
Пример 4. Определить вид функции, вычисление значения которой реализуется
следующей программой: 10 X=2
20 Z=X+1
30 IF Z<4 THEN Y=Z^2+1 ELSE Y=Z+5
40 PRINT Y
50 END
Из представленных ответов выбрать номер правильного ответа.
1. Y=Z+5 2. Y=Z^2+1
Так как Z=2+1=3, 3<4, то вычисляется значение функции Y=Z^2+1, ее номер 2.

62
2.2. Упражнения к главе 1 ”UP-1”: Константы и переменные, арифметические
выражения в языке БЕЙСИК
“UP-1.1”. Какие из приведенных чисел являются константами целого типа?
1 2.1E3 4 0.7E-1 7 22.78
2 128 5 +0.9 8 -2100
3 -350 6 +71 9 1E5
“UP-1.2”. Какие из приведенных чисел являются вещественными константами в форме с
фиксированной точкой?
1 12.35 4 -1E5. 7 5
2 -0.75 5 0.71 8 -5.1
3 12E5 6 1315 9 -11.4

“UP-1.3”. Какие из приведенных чисел являются вещественными константами в


экспоненциальной форме?
1 11 4 -0,5E-2 7 2.7E05
2 1.3 5 1050 8 -1.38
3 -1.2E5 6 37.75 9 +3.21E-03
“UP-1.4” .Какие из приведенных выражений могут служить именами переменных ?
1 5B 4 SIN 7 1AB
2 E6 5 G 8 +LN
3 Л1 6 10 9 L5

“UP-1.5 ”. Какие из приведенных выражений правильно записаны на языке БЕЙСИК?


1 (A+B+C)/2
2 A^ 2C
3 SIN(X+2)*2
4 2COS(A+2) - A
5 X.Y+Z-5.1
6 (X+Y*3.2-A)B
7 X+Y/(Z*Z)
8 X^2+Y^2=R^2
9 SQR(A*2+B*B)
“UP-1.6 ”. Вычислить значение выражений:
1 2^3^2
2 (2+2)^3+17
3 SIN(PI/6)+COS(PI/3)
4 TAN(PI/4) - EXP(0)
5 100/SQR(25)/2^2

63
2.3. Упражнения к главе 2 “UP-2 “:
Операторы присваивания, ввода –вывода. Линейные программы.

“UP-2.1 “. Среди приведенных выражений указать операторы присваивания


1 X:=X+5 5 X+2=Y

2 Y:=7 6 K+5=X+Y

3 PRINT A 7 PRINT A+B

4 Z=Z^2+5.3*X 8 X=X*X+A*X+B

“UP-2.2 “
1 PRINT ”A=”; A; ”B=”; B 5 PRINT A; ”B=”; B, C

2 PRINT A; B; C; D 6 PRINT ”СУММА”, ”S”, ”A” , ”X”

3 PRINT ”A+ B”; ”A- B” 7 PRINT A; B, X; Y

4 PRINT ”A=”; A, B 8 PRINT ”S”, ”P”,”Q”, ”R”

1. Какие из операторов вывода, приведенные в таблице, выводят только значения


переменных?

2. Какие, из приведенных операторов вывода, выводят только имена переменных?

3. Какие, из приведенных операторов вывода, выводят только имена переменных и их


значения?

4. Сколько строк займет выводимая информация в операторе №4?

5. Сколько строк займет выводимая информация в операторе №2?

6. Сколько строк займет выводимая информация в операторе №6?

“UP-2.3“. Какое значение получит переменная Y после выполнения следующей


программы? Х= 5
A= 2
В= -1
У= A*X+B
“UP-2.4”. Какое значение получит переменная Y после выполнения следующей
программы?

64
А=12
В=14
А=10
В=В+5
У=А+В
END

“UP-2.5”. Какое значение получит переменная X после выполнения следующей


программы?
A= 3;
B= 4;
A=(A+B)/2+A*2;
X=SQR (A+B*B-0.5);
END

“UP-2.6”. Какое значение получит переменная S после выполнения программы ?


A=5
B=6
S =A*B
A= -1
B= 3
S= S+A*B
END

2.4. Упражнения к главе 3 “UP-3”:


Операторы передачи управления. Программы с разветвлениями
“UP-3.1”
1 GOTO 30
2 IF A.>B THEN PRINT A
3 IF A=B THEN B=X+Y ELSE B=X/2+Y/3
4 P=3.5*X+Y/2 - X*Y
5 IF X<Y AND B>0 THEN 50
6 PRINT X,Y,Z
7 X=A+B-C
8 GOTO 5
9 IF A=B THEN IF B=C THEN A=X ELSE PRINT A

65
а) Какие из приведенных конструкций представляют оператор безусловного перехода?
б) Какие из приведенных конструкций представляют оператор условной передачи
управления?
“UP-3.2”. Какое значение получит переменная X в результате выполнения программы?
10 A=4
20 B=2
30 A=(A+B)/2+A
40 X=A*B^2
50 PRINT X
60 END

“UP-3.3”. Какое значение получит переменная X в результате выполнения программы?


10 A=-3
20 B=-2
30 A=(B-A)*2-3
40 GOTO 70
50 X=(A+B)*3
60 GOTO 90
70 B =B-A
80 GOTO 50
90 END

“UP-3.4”. Определить значение Y в результате выполнения программы, если X=2.

10 INPUT X
20 IF X>5 THEN Y=SQR(X) ELSE Y=X^2
30 PRINT Y
40 END

“UP-3.5”. Определить вид функции, вычисление которой реализуется данной программой.


10 INPUT X
20 IF X<-1 THEN 50
30 Y=EXP (1+X)
40 GOTO 60
50 Y=3-2*X*X

66
60 PRINT Y
70 END

e1+ X x < -1 3 - 2x 2 x<-1 e1+ X x >-1


1. Y = { 2. Y= { 3. Y= {
1+ X
3 - 2x 2
x >= -1 e x>=-1 3 - 2x 2 x < = -1

В ответе указать номер функции.


Примечание. Программа не предусматривает вычисления конкретного значения функции,
необходимо лишь провести анализ этой программы при любом вводимом Х.

“UP-3.6”.Значение какой функции вычисляется в данной программе, если


Х=6?
10 INPUT X
20 IF X<0 THEN 60

30 IF X<=5 THEN 80
40 Y = LOG(X-4)
50 GOTO 90

60 Y =COS(X)
70 GOTO 90
80 Y=1-0.2*X

90 PRINT Y
100 END

В ответе указать номер правильного ответа.


1. Y= LOG (X- 4) 2. Y = COS (X) 3. Y =1- 0.2*X

2.5. Упражнения к главе 4 “UP-4”: Массивы

“UP-4.1”.
1. 3.5+A*B+C(1)*A-C(2)

2. 4.8+A1*B-C2/3

3. D11+SIN(X/2+4)-A3

4. B(2,3)*C-TAN(Y)/(A(1)+B(1,2))

67
5. I*J+K*N-A(I,J)+B(K,N)

6. AI+BK*C/(X+Y)^2

7. F*(M(1)+M(2))/(1-M(1)^2*V^2)

8. A(I+J,K+2)*B(I+J)-(K+3)^2

9. A(I*2,I+J)+B(I+3,I+K)

Среди данных выражений указать выражения:


1) содержащие элементы массива;
2) содержащие элементы одномерного массива;
3) содержащие элементы двумерного массива;
4) содержащие элементы массива, индексы которых являются выражениями.

“UP-4.2”. Указать номера элементов массива, которые получат значения в результате


выполнения программы:
10 DIM A(15)
20 I =2
30 J =I*I+1

40 A (J) =3.5
50 K =J+2
60 A(K) =10.3

70 A (I+K) =7
80 END

“UP-4.3”. Указать наибольшее значение элемента массива A(4), сформированного в


результате выполнения следующей программы:
10 DIM A(4)
20 I=0

30 A(I)=I*I - 3*I+1
40 I=I+1
50 IF I<=4 THEN 30

60 END

“UP-4.4”. Даны три массива A(3,4), B(7), C(2,6). Какие из переменных, указанных ниже,

имеют смысл в соответствии с данными массивами?

1 A(1,1) 6 C(2)

68
2 B(8) 7 B(3,1)
3 C(3,7) 8 A(2,1)
4 B(6) 9 C(2,5)
5 A(3,5)

“UP-4.5”. Указать значение величины D после выполнения следующей программы:


10 DIM A(1,1)
20 DATA 3, 4, 2, -1
30 READ A(0,0), A(0,1), A(1,0), A(1,1)
40 D=A(0,0)*A(1,1) –A(1,0)*A(0,1)
50 PRINT D
60 END

2.6. Упражнения к главе 5 “UP-5”: Операторы цикла

“UP-5.1”. 10 Y=5
20 FOR A=1 TO 12 STEP
30 Y=Y+A;
40 NEXT A
50 PRINT
60 END

1. В данной программе указать номер оператора цикла.


2. Указать номер оператора, который повторяется многократно.
3. Указать номер оператора, который формирует следующее значение параметра
цикла.
4. Указать имя параметра цикла.
5. Сколько раз выполняется оператор 30?
6. Чему равно значение параметра цикла, при котором оператор 30 выполняется
последний раз
“UP-5.2”. 10 DATA 2.1, -3.7, 0.4, 5.6, - 7.8
20 DIM B(2)
30 READ A, X
40 FOR I= 0 TO 2
50 READ B(I)

69
60 NEXT I
70 END
1. Какое значение получит переменная X в результате выполнения программы?
2. Сколько элементов содержит массив B?
3. Какое значение получит B(1)?
4. С каким шагом изменяется параметр цикла?
5. Указать сумму номеров невыполняемых операторов.

“UP-5.3”. Какое значение получит переменная S в результате выполнения программы?


10 S=0
20 FOR K=1 TO 9 STEP 2
30 S= S+K
40 NEXT K

50 PRINT X
60 END

”UP-5.4”. Какое значение получит переменная S в результате выполнения программы?


10 DIM A(2, 2)

20 DATA 3, 5, 7, 4, 6, -1, -2, 5, -4


30 FOR I=0 TO 2
40 FOR J=0 TO 2

50 READ A(I, J)
60 NEXT J
70 NEXT I

80 S=0
90 FOR I=0 TO 2
100 J=1
110 S=S+A(I, J)
120 NEXT I
130 PRINT S
140 END

70
2.7. Ответы к упражнениям ”UP ”

UP-1.1 2368
UP-1.2 12589
UP-13 3479
UP-1.4 259
UP-1.5 1379
UP-1.6 1) 64 , 2) 81 , 3) 1 , 4) 0 , 5) 5

UP-2.1 1248
UP-2.2 1) 256 , 2) 147, 3) 3.

UP-2.3 9

UP-2.4 29

UP-2.5 5

UP-2.6 27

UP_3.1 a) 18 , b) 2359

UP-3.2 28

UP-3.3 -6

UP-3.4 4

UP_3.5 1

UP_4.1 1) 145789 2) 147

3) 4589 4) 89

UP-4.2 579

UP-4.3 5

UP-4.5 -11

UP-5.1 1). 2 , 2) 5 , 3) A , 4) 4 , 5) 10.

UP-5.2 25

UP-5.3 5

71
Раздел 3. Сборник лабораторных работ по алгоритмическому
языку Бейсик
3.1. Требования к оформлению лабораторных работ

Раздел 3 содержит тексты лабораторных работ. Лабораторные работы по тематике


соответствуют главам раздела 1. Исключение составляет лабораторная работа ”LAB-4”,
объединившая главы ”Массивы” и ”Операторы цикла”.

В основном лабораторные работы содержат 15 вариантов. Количество заданий в каждом


варианте зависит от их сложности.

Предполагается,что после изучения теоретического материала и проработки


соответствующих упражнений, читатель приступит к выполнению лабораторных работ. Для
этого читателю необходимо проанализировать задачу, составить блок-схему и написать
компьютерную программу на языке БЕЙСИК. После этого составленную программу необходимо
ввести в компьютер, отладить (т.е выловить ошибки, которые обнаружатся) и получить
числовой результат на экране.

К каждой лабораторной работе приводится образец выполнения работы, даются


контрольные вопросы, которые позволят читателю проверить усвоение теоретического
материала.
В помощь читателю в разделе 4 приводятся решения (программы) всех задач лабораторных
работ с числовыми ответами. Следует отметить, что в разделе 4 приводится один из возможных
вариантов компьютерной программы решения математической задачи.

3.2. Лабораторная работа “L1“: Записи арифметических выражений


на языке БЕЙСИК
Цель работы: овладение навыками записи арифметических выражений

на языке БЕЙСИК.

Контрольные вопросы.
1. Из каких букв и цифр состоит язык БЕЙСИК?
2. Какими символами изображаются знаки действия?
3. Перечислить стандартные функции языка БЕЙСИК .
3. Какова форма представления чисел?

72
4. Что может послужить именем переменной?
5. Какова структура арифметического выражения?

7. Каков порядок выполнения операций при вычислении арифметических выражений?


Работа содержит два задания.

Задания 1, 2. Записать на языке БЕЙСИК заданные арифметические выражения.

Вариант Шифр Арифметическое выражение


L1.1.1
1
L1.1.2 0,25( x-1,75 ln (9,8+ ))

L1.2.1

2 ln
L1.2.2

L1.3.1
3
L1.3.2
4 L1.4.1

L1.4.2

L1.5.1 sin +

5 L1.5.2 1 + x + ln

L1.6.1

6 L1.6.2 y – 2 arctgx – sin ln

L1.7.1

7
L1.7.2 xtg +2ln

8 L1.8.1

L1.8.2

73
L1.9.1
9
L1.9.2 y–

L1.10.1

10
L1.10.2

11 L1.11.1

L1.11.2 x sin x/(

L1.12.1

12
L1.12.2 (a + b 2 ) /(c 3 sin x ) + cos x

13 L1.13.1

L1.13.2

L1.14.1

14
L1.14.2 x ln

L1.15.1

15 L1.15.2

74
3.3 . Лабораторная работа “L2“: Оператора присваивания, ввода – вывода

Цель: овладение навыками записи операторов присваивания, ввода-вывода при


составлении линейных программ.

Контрольные вопросы.

1. Какова структура оператора присваивания?


2. Как выполняется оператор присваивания?
3. Каково назначение оператора присваивания?
4. Что происходит с прежним значением переменной, когда этой переменной
присваивается новое значение?
5. Какова структура оператора ввода?
6. Как осуществляется выполнение оператора вывода?
7. Как выводится на экран дисплея комментарий к тексту?
8. Как выполняется оператор вывода?
Работа состоит из двух заданий.

Задание 1. Вычислить значение функции при заданных значениях аргументов и


параметров.
Задание 2. Вычислить значение Z = Z1+Z2, где Z1 = F1(X1); Z2 = F2(X2).

Вар. Шифр Функции Исходные данные

1 L2.1.1

L2.1.2 x 2 = 5,72

.
x = 2; a = 248;
2 L2.2.1 b =87,2

L2.2.2 5,87
L2.3.1 x = 5; a = 23,5;
3 b =0,129; c = 350

L2.3.2 6,31

75
x = 2,57;
4 L2.4.1 y = 13,76

L2.4.2 2,79
a = 1,25; b = -1,75;
L2.5.1 x = 4,78
5
L2.5.2 6,31

x = 2,15;
6 L2.6.1 y = 9,78.

L2.6.2 1,76

L2.7.1 a = 1,9;
7 b =0,04; c = 6

L2.7.2 2,56
m = 1,2;
8 L2.8.1 n = -3,76

L2.8.2 2,57
a = 0,7;
9 L2.9.1 b = -3,1

L2.9.2 3,93
a = 3,2;
10 L2.10.1 b =2; c = 0,75

L2.10.2 2,74
x = 3,35; y = -0,27;
11 L2.11.1 a = 2,1

L2.11.2 1,74
x = -1,7; y = 3,2;
12 L2.12.1

L2.12.2 2,64

76
x = -0,025; y = 2,12;
L2.13.1 a = 3,861
13
L2.13.2 1,25
x = 0,34; y = 0,95;
L2.14.1 a = -0,5
14
L2.14.2 3,11
a = 9;
15 L2.15.1 b =3,5; c = -1,2

L2.15.2 1,12

3.4. Лабораторная работа “L3“: Операторы передачи управления


. Программы с разветвлениями

Цель работы: овладение навыками программирования разветвляющихся алгоритмов с


помощью операторов передачи управления.
Контрольные вопросы.

1. С помощью какого оператора осуществляется безусловная передача управления в


программе?

2. Какова структура полного оператора условной передачи управления?

3. Как выполняются условный оператор передачи управления?

4. Какой вид имеет неполный оператор условной передачи управления?

5. Какой вид имеет условие в операторе условной передачи управления?

Задание. Вычислить значение функции Y при заданном значении t.

Варианты заданий приведены в таблице.

77
Образец выполнения лабораторной работы “L3“

Вычислить значение функции:

,
Блок-схема
начало

Т = 1,27
да

нет

Вывод

Вариант 1 конец

5 CLS
10 PRINT "L3.ob1"
20 T = 1.27
30 X = (T * T + 1.2 * T + 3.7) ^ (1 / 3)
40 IF X > 1.7 THEN Y = SQR(ABS(COS(X) + SIN(X))) ELSE
Y = 1.57 * X / (X ^ 2 + 1)
50 PRINT "x="; X, "y="; Y
60 END

L3.ob1
x= 1.897957 y= .6474656

78
Вариант 2
5 CLS
10 PRINT "L3.OB2"
20 T = 1.77
30 X = (T ^ 2 + 1.2 * T + 3.7) ^ (1 / 3)
40 IF X <= 1.7 THEN 50 ELSE 70
50 Y = 1.57 * X / (X ^ 2 + 1)
60 GOTO 80
70 Y = SQR(ABS(COS(X) + SIN(X)))
80 PRINT "X="; X, "Y="; Y
90 END

L3.OB2
X= 2.076758 Y= .6245477

При заданном значении t вычисляется значение Х и в зависимости от полученного


значения Х вычисляется Y по одному из аналитических выражений.

Вар. Шифр Функция x t

1 L31 1,5

2 L32 0,3

3 L33 -1,1

4 L34 0,7

79
5 L35 0,9

6 L36 -3

t
7 L37 (t + 1) 2 -0,64

8 L38 0,93

9 L39 -3,59

Y=
10 L310 0,85

11 L311 5,74

12 L312 Y= -1,75

13 L313 Y= -3,75

80
14 L314 = 3,75

15 L315 Y= 1,27

3.5. Лабораторная работа” L4”: Массивы. Оператор цикла

Цель работы: овладения навыками описания и формирования массива, программирование


циклических алгоритмов с помощью оператора цикла.

Контрольные вопросы

1. Что называется массивом?

2. Как в программе описывается массив?

3. Как можно ввести массив в память машины?

4. Какова структура оператора цикла?

5. В чем состоит выполнение оператора цикла?

6. Можно ли досрочно выйти из цикла?

7. Можно ли войти в цикл, минуя его начало?

Работа состоит из двух заданий.


Задание 1. Вычислить значение функции при заданных значениях переменной Х.
a = 1,2; b= 2,4; c= 5,4.

81
Шифр Функции Независимая переменная
Вар.

1 L411 y= 0,2; 1,3; 1,8; 2,8; 3,6

2 L421 y= x 5,8; 5,5; 6,1; 6,5; 7,6

3,8; 0,15; 15,1;


3 L431 y=
17,8; 39,2
8,1; 12,3; 15,2;
4 L441 y=
31,5; 39,08

Независимая
Вар. Шифр Функции
переменная

5 L451 y= -3,1; 2,52; 5,81; 7,5; 9,4

6 L461 y= 1,8; 1,16; 1,15; 1,35; 1,6

7 L471 y= 1,0; 1,8; 2,2; 2,5; 7,5

8 L481 y= a ,2; 3,0; 25; 8; 70

9 L491 y= xtg + 2 0,5; 0,6; 0,9; 1,1; 1,5

2,15; 2,3; 2,35;


10 L4101 y= 2arctgx – sin
2,37; 2,5

11 L4111 y= 1+x+ -16; -9; 0,5; 2,4; 3,4

12 L4121 y= -2,75; -1,05; 1,65; 3,25

13 L4131 y= 0; -3,25; 1,23; 5,2; 4,6

14 L4141 y= -1,5; 0; 1,2; 3,5; 5

Образец выполнения работы

Задание 1. Вычислить значения функции y=0,25(x-1,75

82
при x = -1,0; 0,75; 2,1; 4,75; 5,12.

Все значения х удобно оформить в виде массива. Назовем его Х. Размерность этого массива
N=4. Для ввода этого массива в память машины используем оператор цикла, где параметром
цикла будет номер элемента массива 1 ≤ i ≤ 4.

5 CLS

10 PRINT "L4.ob1"

20 DIM X (4)

30 DATA -1, 0.75, 2.1, 4.75, 5.12

40 FOR I = 0 TO 4

50 READ X (I)

60 NEXT I

70 FOR K = 0 TO 4

80 Y = .25 * (X (K) - 1.75 * LOG (9.8 + X (K) ^ 2))

90 PRINT "X="; X (K), "Y="; Y

100 NEXT K

110 END

L4.ob1
X=-1 Y=-1.291051
X= .75 Y=-.8354596
X= 2.1 Y=-.6361014
X= 4.75 Y=-.3336877
X= 5.12 Y=-.2879645

Задание 2. Составить блок-схему и программу решения задачи

Вар. Шифр Условие задачи


Найти сумму нечетных двухзначных чисел.
1 L412
На печать выдать сумму и их количество.

83
Найти сумму первых десяти членов последовательности
2 L422 .
Используя формулу q, найти первые 10 членов
3 L432
Геометрической прогрессии и их сумму,если q=-2.
Используя формулу q, найти первые 10
4 L442 членов арифметической прогрессии и их сумму, если
; d =1,5.
Вычислить значения многочлена
P(x) + ,
5 L452 записав его по схеме Горнера
при х=2,5;

Вычислить значение функции y=


6 L462
для х є [-3; 1] с шагом Н=0,5.
Найти количество отрицательных элементов массива
7 L472
и их сумму. 3; -2,7; 5; 11; -1,8; -0,9; 2,3; -15; 14; -8,7.
Заданы два массива А(5) и В(5).
А(5)= 3; -2,7; 8; -4,1; 5,3; 6,8
8 L482 В(5)= -2; 8; 4,7; -11; 8,9; -15.
Найти сумму S= .
Найти сумму первых пяти членов последовательности
9 L492
при х=3,2.
Заданы два массива А(5) и В(5). Сформировать
новый массив С(5) по правилу
10 L4102
A(5)=7; 8,1; 9,3; -2,7; -0,5; 1,4
B(5)=3; 1,2; 7; 9,3; 1,5; 5,2;
Из массива А(10) выдать на печать отрицательные
11 L4112 элементы, стоящие на нечетных местах.
А(10)=-3; -7; 9; 10; -11; -7,5; 8,1; 3,4; - 2; -4; 3,5
Величина х принимает значения 1; 1,2; 1,4; 1,6; 1,8; 2.
12 L4122
Найти соответствующие значения .

Вычислить значение функции на [-4;2]


13 L4132
с Н=0,5 и количество положительных значений
среди вычисленных.
Найти сумму отрицательных значений функции
14 L4142 , принимаемых ею на [-3;3]
с шагом Н=0,5.
Из массива заданных чисел найти среднее арифметическое
15 L4152 положительных чисел.
Заданные числа: 2; 7; -13; -8; 19; 5; -3; 15; -6; 21

84
Образец выполнения работы

Задание 2. Из массива заданных чисел найти среднее арифметическое положительных


чисел.
Заданные числа: 2; 7; -13; -8; 19; 5; -3; 15; -6; 21
Оформим заданные числа в виде массива Х(9) и введем в память машины, используя
оператор цикла с параметром i.

S – сумма положительных элементов массива; SA=

SA – искомое среднее арифметическое положительных чисел;


К – количество положительных чисел
5 CLS
10 PRINT "L4ob2"
20 DATA 2, 7, - 13, -8, 19, 5, -3, 15, -6, 21
30 DIM X(9)
40 FOR I = 0 TO 9
50 READ X(I)
60 NEXT I
70 S = 0
80 K =0
90 FOR I = 0 TO 9
100 IF X(I) <= 0 THEN 130
110 S= S+ X(I)
120 K= K + 1
130 NEXT I
140 SA= S / K
150 PRINT "K="; K
160 PRINT "SA="; SA
170 END
L4ob2
K= 6
SA= 11.5

3.6. Лабораторная работа ”L5”: Подпрограммы

85
Цель работы: формирования навыков и умений по составлению программ с
использованием функций пользователя и подпрограмм.
Контрольные вопросы:

1. Что такое функция пользователя?

2. Как описывается в программе функция пользователя?

3. Является ли это описание выполняемым оператором?

4. Что такое программа в программе?

5. Какова структура подпрограммы?

6. Как осуществляется обращение к функции пользователя и к подпрограмме?

7. Как осуществляется выход из подпрограммы?

8. В чем отличие в полученных результатах после обращения к функции пользователя и к


подпрограмме?

9. Что называется формальными и фактическими параметрами? С какими параметрами


производятся вычисления?

10. Где должны располагаться подпрограммы в тексте программы?

Работа состоит из одной задачи. Читателю предлагается составить подпрограмму, а затем,


используя эту подпрограмму, решить поставленную задачу.
Эта лабораторная работа подводит итог того, что читатель усвоил при изучении операторов
и правил программирования.

Образец выполнения задания


Задача: Составить подпрограмму нахождения координат центра тяжести треугольника,
заданного своими вершинами. Используя эту подпрограмму, найти координаты центра тяжести
заданных треугольников.

86
1. А(-12;-3); В(12;-10); С(-6;14);
2. А(-6;-5); В(18;-12); С(0;12);

3. А(8;12); В(27;5); C(9;29).


Центр тяжести треугольника АВС лежит на пересечении его медиан. Точка М пересечения
медиан делит медиану в отношении 2: 1, считая от вершины. Отношение .

Координаты точки D находим по формулам:

Зная координаты точек В и D по


формулам

; ;

находим координаты точки М. Это и есть


искомые координаты центра тяжести
треугольника.

D (-9; 5,5)

Введем обозначения

A1 A2 B1 B2 C1 C2 D1 D2 M1 M2

5 CLS
8 PRINT "L5ob"

10 PRINT " Вычисление координат "

87
20 PRINT " центра тяжести треугольника"
30 DATA -12, -3, 12, -10, -6, 14
40 DATA -6, -5, 18, -12, 0, 12
50 DATA 3, 12, 27, 5, 9, 29
60 FOR I = 0 TO 2
70 READ A1, A2, B1, B2, C1, C2
80 GOSUB 120
90 PRINT "XM="; , M1, "YM="; M2
100 NEXT I
110 GOTO 180
120 D1 = (A1 + C1) / 2
130 D2 = (A2 + C2) / 2
140 L = 2
150 M1 = (B1 + L * D1) / (1 + L)
160 M2 = (B2 + L * D2) / (1 + L)
170 RETURN
180 END
L5ob
Вычисление координат
центра тяжести треугольника
XM= -2 YM= .3333333
XM= 4 YM=-1.666667
XM= 13 YM= 15.33333

Вар. Шифр Условие задачи

88
Составить подпрограмму вычисления периметра треугольника по
координатам его вершин. Используя эту подпрограмму, найти
периметры треугольников по заданным координатам вершин:
1 L51
1. А(3;2), В(-2;5), C(9;4)
2. А(2;1), В(5;5), С(-4;6)
3. А(0;-3), В(9;0), С(6;-6)
Составить подпрограмму вычисления площади треугольника по
формуле Герона. Используя эту подпрограмму, найти площади
треугольников по заданным его вершинам:
2 L52
1. А(3;2), В(-2;5), C(9;4)
2. А(2;1), В(5;5), С(-4;6)
3. A(0;-3), B(9;0), C(6;-6)
Составить программу вычисления периметра трапеции по
координатам её вершин. Используя эту подпрограмму, найти
периметры заданных трапеций:
3 L53
1. А(-3;2), B(2;7), C(2,3), D(4;5)
2. A(-5;-4), B(8;-4), C(6;1), D(-2;1)
3. A(5;3), B(5;7), C(9;5), D(9;4)
Составить подпрограмму вычисления площади трапеции по
основаниям и высоте. Используя эту подпрограмму, найти площади
заданных трапеций:
4 L54
1. a=6,5 b=3,4 h=2,5
2. a=13,4 b=8,3 h=5,7
3. a=15,5 b=8,4 h=6,5
Составить подпрограмму вычисления площади ромба по
координатам его вершин. Используя подпрограмму, найти площади
ромбов:
5 L55
1. А(2;8), В(8;4), С(14;8), D(8;12)
2. A(5;6), B(11;2), C(17;6), D(11;10)
3. A(0;11), B(6;7), C(12;11), D(6;15)
Составить подпрограмму вычисления угла между сторонами ромба.
Используя эту подпрограмму, найти углы между сторонами
заданных ромбов:
6 L56
1. А(2;8), В(8;4), С(14;8), D(8;12)
2. A(5;6), B(11;2), C(17;6), D(11;10)
3. A(0;11), B(6;7), C(12;11), D(6;15)
Составить подпрограмму вычисления площади параллелограмма по
координатам его вершин (используя формулу Герона). Используя
эту подпрограмму, найти площади заданных параллелограммов:
7 L57
1. А(0;4), В(2;9), С(8;3), D(6;-2)
2. A(2;7), B(4;12), C(10;6), D(8;1)
3. A(-1;2), B(1;7), C(7;1), D(5;-4)

89
Составить подпрограмму вычисления угла между диагоналями
параллелограмма по координатам его вершин. Используя эту
подпрограмму, найти углы между диагоналями заданных
параллелограммов:
8 L58
1. А(0;4), В(2;9), С(8;3), D(6;-2)
2. A(2;7), B(4;12), C(10;6), D(8;1)
3. A(-1;2), B(1;7), C(7;1), D(5;-4)

Составить подпрограмму проверки условия перпендикулярности


двух векторов, заданных координатами начала и конца. Используя
эту подпрограмму, проверить перпендикулярность данных пар
9 L59 векторов:
1. A(2;8), B(14;8) и C(8;4), D(8;12)
2. A(2;8), B(8;4) и С(14;8), D(8;12)
3. А(0;1), B(12;11) и C(6;7), D(6;15)
Составить подпрограмму вычисления суммы членов
арифметической прогрессии. Используя эту подпрограмму,
10 L510
вычислить сумму заданной арифметической прогрессии:
2, 5, 8, 11, … при n=5; 7; 10
Составить подпрограмму вычисления пройденного пути за время от
до , если скорость изменяется по закону .
Используя эту подпрограмму, найти пройденный путь при
11 L511 следующих данных:
1. V=2+3t; ; .

2. V=10-2t; ; .
3. V=3,5+1,5t; ;
Составить подпрограмму вычисления суммы членов
геометрической прогрессии 10, 5, 2,5. Используя эту подпрограмму,
12 L512
вычислить сумму n членов прогрессии, если n= 2; 5; 10.

Задана прямоугольная таблица чисел из 4 строк и 3 столбцов.


Составить подпрограмму вычисления суммы элементов строки.
Используя эту подпрограмму, вычислить сумму элементов каждой
строки заданной таблицы чисел:

-3 5 6
13 L513 0 1 2
-5 4 -7
1 2 -11

90
Задана прямоугольная таблица чисел из 5 строк и 3 столбцов.
Составить подпрограмму для вычисления суммы элементов
столбца. Используя эту подпрограмму, вычислить сумму элементов
каждого столбца:
14 L514 2 3 1
-1 2 5
0 -5 -3
3 4 7
1 2 -4

91
РАЗДЕЛ 4. ОТВЕТЫ И КОМПЬЮТЕРНЫЕ ПРОГРАММЫ
К ЛАБОРАТОРНЫМ РАБОТАМ

4.1. Лабораторная работа ” L1 ”

L111 (x+y)^3+2*sin(x)

L112 0.25*(x-1.75*L0G(9.8+x*x))

------------------------------------------------------------------------

L121 ( (sin(x))^2 - (cos(x))/(x+y)

L122 LOG(abs(a*a-x*x))

--------------------------------------------------------------------------

L131 (abs(cos(x)+abs(sin(y))/(x*x)

L132 (abs(x)+2*cos(x))/(0.5+x*x+x^4)

---------------------------------------------------------------------------

L141 sqr(abs(2*x+y))+ (2*y-x)^(1/3)

L142 (sin(x)+cos(x))/(x*x+1)

-------------------------------------------------------------------------

L151 sin((x+y)/2)+sqr(abs(x+1.2))

L152 1+x+LOG(abs(x))

92
--------------------------------------------------------------------------

L161 1/(cos(x+y))+ (3.5*x)^(1/3)

L162 y= 2*atan(x)- sin(x/2)*LOG(abs(x/4))

----------------------------------------------------------------------------

L171 ((1+x/(1+x)))/(3*y)

L172 x*tan(x/2)+ 2*LOG(abs(cos(x/2)))

------------------------------------------------------------------------------

L181 (sqr(a+b))/(sin(a)+cos(b))

L182 a*x*x+b*x+c

----------------------------------------------------------------------------

L191 (x+y)/(x-y)^2+ 2^X

L192 y-x^3*LOG(x)-1

-----------------------------------------------------------------------------

L1101 (2^X- sin(x))/(1+x*x)

10

L1102 (1/a^4 – 1/x^4)*atan(x/a)

------------------------------------------------------------------------------

L1111 (a*x+b*y)/(a*b)

11

L1112 (x*sin(x))/(x*x+5)+ x^3 -2

93
------------------------------------------------------------------------------

L1121 (X^Y) / (sqr(x*y))+2.3

12

L1122 (a+b*b)/ (c*(sin(x))^(1/3))+cos(x)

-----------------------------------------------------------------------------

L1131 x*y^2 /2+3*x*abs(y)

13

L1132 (x^2+a)^(1/3) -(x-a)^(1/3)-sqr(a+x)

------------------------------------------------------------------------------

L1141 sin(x)*cos(y)/(x+y)

14

L1142 x*LOG(abs(sin(pi*s/x))

------------------------------------------------------------------------------

L1151 (LOG(x*x+y*y))/sin(y)

15

L1152 (13.5*x^7+ 9.5)/(5*(x*x- x+1))- 4*X^4

------------------------------------------------------------------------------
4.2. Лабораторная работа ”L2”
5 CLS
10 PRINT "L2.1.1"
20 X1 = .62
30 X2 = .98
40 Y = (.5 * X1 - .13 * X2) / (.15 * X1 * X1 + .37 * X2 + .75)
50 PRINT "Y="; Y
60 END
L2.1.1 Y= .1560337

94
5 CLS
10 PRINT " L212 "
20 X1 = 1.75
30 X2 = 5.72
40 Z1 = X1 * COS(X1) ^ 2
50 Z2 = SQR(2 - SIN(X2) ^ 2)
60 Z = Z1 + Z2
L212
Z= 1.365169

5 CLS
10 PRINT "L221"
20 X = 2
30 A = 248
40 B = 87.2
50 Y = (A + B / 3 + X * A) / (X * A + B)
60 PRINT "Y="; Y
70 END
L221
Y= 1.32556

5 CLS
10 PRINT " L222"
20 X1 = 2.59
30 X2 = 5.87
40 Z1 = 2 * SIN(2 * X1)
50 Z2 = SQR(X2 * X2 + 5)
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L222
Z= 4.496177
5 CLS
10 PRINT " L231"
20 X = 5
30 A = 23.5
40 B = .189
50 C = 350

95
60 Y = ((A * X * X + B) * C) / (B + A)
70 PRINT "Y="; Y
80 END
L231
5 CLS
10 PRINT "L232"
20 X1 = .37 Y= 8682.981

30 X2 = 6.31
40 Z1 = EXP(-X1 ^ 2 + 1)
50 Z2 = LOG(ABS(SIN(X2)))
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L232
Z=-1.248429
5 CLS
10 PRINT "L241"
20 X = 2.57
30 Y = 13.76
40 Z = (X ^ 2 * Y + .15 * Y ^ 2) / (1.37 * X - Y / .37)
50 PRINT "Z="; Z
60 END
L241 Z=-3.54292

5 CLS
10 PRINT "L242"
20 X1 = -6.23
30 X2 = 2.79
40 Z1 = SQR(1 + COS(X1) ^ 2)
50 Z2 = SIN(LOG(ABS(X2)))
60 Z = Z1 + Z2
70 PRINT " Z="; Z
L242
Z= 2.268468
5 CLS
10 PRINT "L251"
20 A = 1.25
30 B = -1.75
40 X = 4.78

96
50 Y = (A * X ^ 2 + B * X) / (X ^ 3 + .78 * X)
60 PRINT "Y="; Y
70 END
L251
Y= .1788102
5 CLS
10 PRINT "L252"
20 X1 = .85
30 X2 = 2.36
40 Z1 = LOG(ABS(SIN(X1)))
50 Z2 = EXP(X2 - 2)
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L252
Z= 1.147353
5 CLS
10 PRINT "L261"
20 X = 2.15
30 Y = 9.78
40 Z = (X ^ 2 + X * Y - 4.75) / (X ^ 3 * Y - .136 * Y)
50 PRINT "Z="; Z
60 END
L261
Z= .2180046

5 CLS
10 PRINT "L262"
20 X1 = .21
30 X2 = 1.76
40 Z1 = EXP(SQR(X1 ^ 2 + 3))
50 Z2 = COS(X2 ^ 2)
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L262
Z= 4.725351
5 CLS
10 PRINT "L271"

97
20 A = 1.9
30 B = .04
40 C = 6
50 X = ((A + B) ^ 4 * C ^ 2) / (A ^ 2 - B ^ 2)
60 PRINT "X="; X
70 END
L271
X= 141.3171
5 CLS
10 PRINT "L272"
20 X1 = .74
30 X2 = 2.56
40 Z1 = (X1 ^ 2 + 1) ^ (1 / 3)
50 Z2 = LOG(ABS(COS(X2)))
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L272
Z= .9770782
5 CLS
10 PRINT "L281"
20 M = 1.2
30 N = -3.76
40 Y = ((M - N) ^ 2 + 4 * M * N) / (M ^ 2 - N ^ 2)
50 PRINT "Y="; Y
60 END
L281
Y=-.516129
5 CLS
10 PRINT "L282"
20 X1 = .52
30 X2 = 2.57
40 Z1 = EXP(COS(X1))
50 Z2 = LOG(2 * X2) ^ 2
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L282
Z= 5.061654

98
5 CLS
10 PRINT "L291"
20 A = .7
30 B = -3.1
40 X = (25 * B + A - (4 * A ^ 2 - .7 * B ^ 2) / A) * B
50 PRINT "X="; X
60 END
L291
X= 216.969
5 CLS
10 PRINT "L292"
20 X1 = 1.59
30 X2 = 3.93
40 Z1 = (X1 ^ 2 + X1) ^ (1 / 3)
50 Z2 = EXP(SIN(X2)) + 2
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L292
Z= 4.0948
5 CLS
10 PRINT "L2101"
20 A = 3.2
30 B = 2
40 C = .75
50 Y = (1 / A + 1 / B - 2 * C / A / B) * (A + B + 2 * C)
60 PRINT "Y="; Y
70 END
L2101
Y= 3.873437
5 CLS
10 PRINT "L2102"
20 X1 = 1.95
30 X2 = 2.74
40 Z1 = SIN(2 * X1) ^ 2
50 Z2 = (LOG(X2) ^ 2 + 3) ^ (1 / 3)
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END

99
L2102
Z= 2.062534
5 CLS
10 PRINT "L2111"
20 X = 3.35
30 Y = -.27
40 A = 2.1
50 Z = (X * Y - 2 * X + Y) / (Y - X ^ 2 - Y ^ 2 * A)
60 PRINT "Z="; Z
70 END
L2111
Z= .6761788
5 CLS
10 PRINT "L2112"
20 X1 = -.12
30 X2 = 1.74
40 Z1 = EXP(X1 ^ 2 - 2)
50 Z2 = SQR((SIN(X2)) ^ 2 + 2)
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L2112
Z= 1.861143
5 CLS
10 PRINT "L2121"
20 X = -1.7
30 Y = 3.2
40 Z = (X ^ 2 * Y ^ 2 - .75 * X * Y) / (X ^ 2 + Y ^ 2)
50 PRINT "Z="; Z
60 END
L2121
Z= 2.564631
5 CLS
10 PRINT "L2122"
20 X1 = -1.61
30 X2 = 2.84
40 Z1 = LOG(X1 + 3)
50 Z2 = (SIN(X2) ^ 2 + 5) ^ (1 / 3)
60 Z = Z1 + Z2

100
70 PRINT "Z="; Z
80 END
L2122
Z= 2.04928
5 CLS
10 PRINT "L2131"
20 X = -.025
30 Y = 2.12
40 A = 3.861
50 Z = (.82 * A * X - X ^ 2 * Y ^ 3) / (A ^ 2 + X ^ 2 + Y ^ 2)
60 PRINT "Z="; Z
70 END
L2131
Z=-4.386355E-03
5 CLS
10 PRINT "L2132"
20 X1 = 2.59
30 X2 = 1.25
40 Z1 = (COS(X1 ^ 2 - 1)) ^ 3
50 Z2 = 2 * EXP(X2 + 2)
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L2132
Z= 52.17158
5 CLS
10 PRINT "L2141"
20 X = .39
30 Y = .95
40 A = -.5
50 Z = (.8 * X ^ 3 + Y ^ 3 - A * X) / (A * X * Y + A ^ 2)
60 PRINT "Z="; Z
70 END
L2141
Z= 16.98579
5 CLS
10 PRINT "L2142"
20 X1 = .81
30 X2 = 3.11

101
40 Z1 = SIN(X1) ^ 2 + 9
50 Z2 = SQR(X2 ^ 2 + COS(X2))
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L2142
Z= 12.46952
5 CLS
10 PRINT "L2151"
20 A = 9
30 B = 3.5
40 C = 8.72
50 X = -1.2
60 Y = (A * X + B * X + C ^ 2) / (X ^ 2 + B ^ 2)
70 PRINT "Y="; Y
80 END
L2151
Y= 4.458612
5 CLS
10 PRINT "L2152"
20 X1 = .51
30 X2 = 1.12
40 Z1 = COS(X1) + EXP(2 * X1)
50 Z2 = ABS(SIN(2 * X2)) ^ (1 / 3)
60 Z = Z1 + Z2
70 PRINT "Z="; Z
80 END
L2152
Z= 4.5681

4.3. Лабораторная работа ”L3”


Ответы и компьютерные программы
5 CLS
10 PRINT "L31"
20 T = 1.5
30 X = 1.2 * T * T + T + 3
40 IF X <= 3.7 THEN Y = LOG(X + 3) ELSE Y = SQR(SIN(X) ^ 2 + 5)
50 PRINT "X="; X; " Y="; Y
60 END

102
L31
X= 7.2 Y= 2.372743

5 CLS
10 PRINT "L32"
20 T = .3
30 X = T ^ 3 - 2.4 * T
40 IF X <= .5 THEN Y = EXP(X * X - 2) ELSE Y = SQR(COS(X) ^ 2 + 1.7)
50 PRINT "X="; X, " Y="; Y
60 END
L32
X=-.6930001 Y= .2187664

5 CLS
10 PRINT "L33"
15 T = -1.1
20 X = SQR(ABS(T + 3))
30 IF X <= 1.4 THEN Y = X + X ^ 2 * COS(X) ELSE Y = X ^ 2 + X * SIN(X)
40 PRINT "X="; X, " Y="; Y
50 END
L33
X= 1.378405 Y= 1.741698

5 CLS
10 PRINT "L34"
20 T = .7
30 X = T ^ 2 + 1.3 * T + 1
40 IF X <= 2.3 THEN Y = SIN(X) ^ 2 ELSE Y = (LOG(X) ^ 2 + 3) ^ (1 / 3)
50 PRINT "X="; X, " Y="; Y
60 END
L34
X= 2.4 Y= 1.555884

5 CLS
10 PRINT "L35"
20 T = .9
30 X = T / (T ^ 2 + T + 1)
40 IF X > 1.5 THEN Y = EXP(SIN(X)) ELSE Y = (X * X + 2) ^ (1 / 3)
50 PRINT "X="; X, " Y="; Y

103
60 END
L35
X= .3321033 Y= 1.282668

5 CLS
10 PRINT "L36"
20 T = -3
30 X = (T ^ 2 + 1) / (.7 * T + 1)
40 IF X > 2.1 THEN Y = LOG(ABS(2 * X)) ^ 2 ELSE Y = EXP(COS(X) + 3)
50 PRINT "X="; X, " Y="; Y
60 END
L36
X=-9.090909 Y= 7.808543

5 CLS
10 PRINT "L37"
20 T = -.64
30 X = T / (T + 1) ^ 2
40 IF X > 0 THEN Y = COS(X ^ 2) ELSE Y = (X ^ 2 + 2.5) ^ (1 / 3)
50 PRINT "X="; X, " Y="; Y
60 END
L37
X=-4.938271 Y= 2.995791

5 CLS
10 PRINT "L38"
20 T = .93
30 X = T ^ 3 / (1 + T)
40 IF X > 3.5 THEN Y = SQR(2 - SIN(X) ^ 2) ELSE Y = X * COS(X) ^ 2
50 PRINT "X="; X, " Y="; Y
60 END
L38
X= .4167653 Y= .3484713

5 CLS
10 PRINT "L39"
20 T = -3.59
30 X = 2 + ABS(T + 1.5) ^ (1 / 3)
40 IF X > 4 THEN Y = SQR(X ^ 2 + 5) ELSE Y = 2 * SIN(2 * X)
50 PRINT "X="; X, " Y="; Y

104
60 END
L39
X= 3.278543 Y= .5409784

5 CLS
10 PRINT "L310"
20 T = .85
30 X = T * T / (T ^ 3 + 1)
40 IF X > 2 THEN Y = EXP(X - 2) ELSE Y = LOG(ABS(SIN(X)))
50 PRINT "X="; X, " Y="; Y
60 END
L310
X= .4476109 Y=-.8374493

5 CLS
10 PRINT "L311"
20 T = 5.74
30 X = (2 * T + 4) / (T ^ 2 + 1)
40 IF X <= -1 THEN Y = EXP(SQR(X ^ 2 + 3)) ELSE Y = ABS(X - 3.5) ^ (1 / 3)
50 PRINT "X="; X, " Y="; Y
60 END
L311
X= .4559969 Y= 1.449267

5 CLS
10 PRINT "L312"
20 T = 3.75
30 X = -T + SQR(T * T + 1)
40 IF X > 1 THEN Y = 1 / (1 + X * X) ELSE Y = (X ^ 2 + 5.75) / SIN(X)
50 PRINT "X="; X, " Y="; Y
60 END
L312
X= .1310437 Y= 44.13576

5 CLS
10 PRINT "L313"
20 T = -1.75
30 X = T * T + 3 * T + 1
40 IF X <= 0 THEN Y = SIN(SQR(ABS(X))) ELSE Y = EXP(X) / (X * X + 3 * X)

105
50 PRINT "X="; X, " Y="; Y
60 END
L313
X=-1.1875 Y= .8864996

5 CLS
10 PRINT "L314"
20 T = 3.75
30 X = T ^ 3 - SQR(T * T + 1)
40 IF X <= 2.3 THEN Y = SQR(1 + X + X * X) ELSE Y = COS(X) / ABS(X - 1.3)
50 PRINT "X="; X, " Y="; Y
60 END
L314
X= 48.85333 Y= 3.322201E-03

4.4. Лабораторная робота L4


Ответы и компьютерные программы

5 CLS
10 PRINT "L411"
20 DATA 0.2, 1, 1.8, 2, 3
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT I
70 FOR K = 0 TO 4
80 Y = (13.5 * X(K) ^ 7 + 9) / 5 / (X(K) ^ 2 - X(K) - 1) - 4 * X(K) ^ 4
90 PRINT "X="; X(K), " Y="; Y
100 NEXT K
110 END
L411
X= .2 Y=-1.558154
X= 1 Y=-8.5
X= 1.8 Y= 337.781
X= 2 Y= 283.4
X= 3 Y= 857.34

5 CLS
10 PRINT "L421"

106
20 DATA 5.8, 5.5, 6.1, 6.5, 7.6
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT I
70 FOR K = 0 TO 4
80 Y = X(K) * LOG(ABS(SIN(15 / X(K))))
90 PRINT "X="; X(K), " Y="; Y
100 NEXT K
110 END
L421
X= 5.8 Y=-3.712234
X= 5.5 Y=-5.004409
X= 6.1 Y=-2.810732
X= 6.5 Y=-1.952284
X= 7.6 Y=-.6342574

5 CLS
10 PRINT "L32"
20 T = .3
30 X = T ^ 3 - 2.4 * T
40 IF X <= .5 THEN Y = EXP(X * X - 2) ELSE Y = SQR(COS(X) ^ 2 + 1.7)
50 PRINT "X="; X, " Y="; Y
60 END
L431
X= 3.8 Y= .8746406
X= .15 Y=-.2490185
X= 15.1 Y= 3.637524
X= 17.8 Y= 4.206316
X= 39.2 Y= 8.1426

5 CLS
10 PRINT "L441"
20 DATA 8.1, 2.3, 15.2, 31.5, 33.08
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT I
70 FOR K = 0 TO 4

107
80 Y = (1.2 + 2.4 ^ 2) / 5.4 / (SIN(X(K))) ^ (1 / 3) + COS(X(K))
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K
110 END
L441
X= 8.1 Y= 1.058547
X= 2.3 Y= .755048
X= 15.2 Y= .7651588
X= 31.5 Y= 3.939758
X= 33.08 Y= 1.197618

5 CLS
10 PRINT "L451"
20 DATA - 3.1, 2.52, 5.81, 7, 9
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = X(K) * SIN(X(K)) / (X(K) ^ 2 + 5) + X(K) ^ 3 - 2
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K
110 END
L451
X=-3.1 Y=-31.78218
X= 2.52 Y= 14.1323
X= 5.81 Y= 194.0546
X= 7 Y= 341.0852
X= 9 Y= 727.0432

5 CLS
10 PRINT "L461"
20 DATA 1, 1.1, 1.15, 1.3, 1.6
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = (1 / 1.2 ^ 4 - 1 / X(K) ^ 4) * ATN(X(K) / 1.2)

108
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K
110 END
L461
X= 1 Y=-.3596987
X= 1.1 Y=-.1489536
X= 1.15 Y=-6.838938E-02
X= 1.3 Y= .109053
X= 1.6 Y= .3056969

5 CLS
10 PRINT "L471"
20 DATA 1, 1.8, 2.2, 2.5, 7
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = X(K) ^ 3 * LOG(X(K)) - 1
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K
110 END
L471
X= 1 Y=-1
X= 1.8 Y= 2.427971
X= 2.2 Y= 7.395495
X= 2.5 Y= 13.31704
X= 7 Y= 666.4472

5 CLS
10 PRINT "L481"
20 DATA 1.1, 3, 25, 70, 72
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = (1.2 * X(K) ^ 2 + 2.7 * X(K) + 5.4)
90 PRINT "X="; X(K), "Y="; Y

109
100 NEXT K
110 END
L481
X= 1.1 Y= 9.822001
X= 3 Y= 24.3
X= 25 Y= 822.9
X= 70 Y= 6074.4
X= 72 Y= 6420.6

5 CLS
10 PRINT "L491"
20 DATA 0.5, 0.6, 0.9, 1.1, 1.5
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = X(K) * TAN(X(K) / 2) + 2 * LOG(ABS(COS(X(K) / 2)))
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K
110 END
L491
X= .5 Y= 6.450886E-02
X= .6 Y= 9.421845E-02
X= .9 Y= .2250218
X= 1.1 Y= .3553091
X= 1.5 Y= .7725949

5 CLS
10 PRINT "L4101"
20 DATA 2.15, 2.3, 2.35, 2.37, 2.5
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = 2 * ATN(X(K)) - SIN(X(K) / 2) * LOG(X(K) / 4)
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K

110
110 END
L4101
X= 2.15 Y= 2.816959
X= 2.3 Y= 2.826448
X= 2.35 Y= 2.82771
X= 2.37 Y= 2.827973
X= 2.5 Y= 2.826606

5 CLS
10 PRINT "L4111"
20 DATA -16, -9, 0.5, 2.4, 3.4
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = 1 + X(K) + LOG(ABS(X(K)))
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K
110 END
L4111
X=-16 Y=-12.22741
X=-9 Y=-5.802775
X= .5 Y= .8068528
X= 2.4 Y= 4.275469
X= 3.4 Y= 5.623775

5 CLS
10 PRINT "L4121"
20 DATA -2.75, -1.05, 1.65, 3.25, 4.5
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = LOG(ABS(1.2 ^ 2 - X(K) ^ 2))
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K
110 END

111
L4121
X=-2.75 Y= 1.81197
X=-1.05 Y=-1.086189
X= 1.65 Y= .2488111
X= 3.25 Y= 2.210744
X= 4.5 Y= 2.934389

5 CLS
10 PRINT "L4131"
20 DATA 0, -3.25, 1.23, 5.2, 4.0
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = (ABS(X(K)) + 2 * COS(X(K))) / (.5 + X(K) ^ 2 + X(K) ^ 4)
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K
110 END
L4131
X= 0 Y= 4
X=-3.25 Y= .0102891
X= 1.23 Y= .4413246
X= 5.2 Y= 8.088863E-03
X= 4 Y= 9.881515E-03

5 CLS
10 PRINT "L4141"
20 DATA -1.5, 0, 1.2, 3, 5
30 DIM X(4)
40 FOR I = 0 TO 4
50 READ X(I)
60 NEXT
70 FOR K = 0 TO 4
80 Y = (SIN(X(K)) + COS(X(K))) / (X(K) ^ 2 + 1)
90 PRINT "X="; X(K), "Y="; Y
100 NEXT K
110 END
L4141

112
X=-1.5 Y=-.2851563
X= 0 Y= 1
X= 1.2 Y= .5304905
X= 3 Y=-8.488725E-02
X= 5 Y=-2.597162E-02

Задание 2. Программы решения задач


5 CLS
10 PRINT "L412"
20 K = 0
30 S = 0
40 FOR X = 11 TO 99 STEP 2
50 K = K + 1
60 S = S + X
61 PRINT " S="; S
70 NEXT X
80 PRINT "Сумма нечетных двузначных чисел "; S

90 PRINT "Количество нечетных двузначных чисел "; K


100 END
L412
Сумма нечетных двузначных чисел 2475
Количество нечетных двузначных чисел 45

5 CLS
10 PRINT "L422"
20 S = 0
30 FOR N = 0 TO 10
40 U = N / (1 + N ^ 2)
50 S=S+U
60 NEXT N
70 PRINT "S="; S
80 END
L422
S= 2.261607

5 CLS
10 PRINT "L432"
20 A = 5.2

113
30 Q = -2
40 S = 0
50 FOR I = 0 TO 9
60 S=S+A
70 A=A*Q
80 NEXT I
90 PRINT "S="; S
100 END
L432
S=-1773.2

CLS
PRINT "L442"
DATA 4.6, 1.5
DIM A(9)
READ A(0), D
PRINT A(0)
FOR I = 1 TO 9
A(I) = A(I - 1) + D
PRINT A(I)
NEXT I
END
L442
4.6
6.1
7.6
9.1
10.6
12.1
13.6
15.1
16.6
18.1

CLS
PRINT "L452"
DATA 2, -1.7, 2.7, 0.8, -3, 1.5, 2.5
DIM A(5)
FOR I = 0 TO 5

114
READ A(I)
NEXT I
READ X
P = A(0)
FOR K = 1 TO 5
P = P * X + A(K)
NEXT K
PRINT P
END
L452
170.0938

CLS
PRINT "L462"
PRINT "X", "Y"
FOR X = -3 TO 1 STEP .5
Y=4*X^3-2*X^2+5
PRINT X, Y
NEXT X
END
L462
X Y
-3 -121
-2.5 -70
-2 -35
-1.5 -13
-1 -1
-.5 4
0 5
.5 5
1 7

CLS
PRINT "L472"
DATA 3, -2.7, 5, 11, -1.8, -0.9, 2.3, -15, 14, -8.7

115
DIM A(9)
FOR K = 0 TO 9
READ A(K)
NEXT K
S=0
N=0
FOR K = 0 TO 9
IF A(K) < 0 THEN 10 ELSE 11
10
N=N+1
S = S + A(K)
11
NEXT K
PRINT "N="; N, " S = "; S
END
L472
N= 5 S = -29.1

CLS
PRINT "L482"
DIM A(5), B(5)
DATA 3, -2.7, 8, -4.1, 5.3, 6.8
DATA -2, 8, 4.7, -11, 8.9, -15
FOR I = 0 TO 5
READ A(I)
NEXT I
FOR I = 0 TO 5
READ B(I)
NEXT I
S=0
FOR I = 0 TO 5
S = S + A(I) * B(I)
NEXT I
PRINT "S="; S
END
L482
S= .2699938

CLS

116
PRINT "L492"
X = 3.2
S=0
FOR N = 1 TO 5
U = X ^ (2 * N) / N ^ 2
S=S+U
NEXT N
PRINT "S="; S
END
L492
S= 5346.554

CLS
PRINT "L4102"
DIM A(5), B(5), C(5)
DATA 7, 8.1, 9.3, -2.7, -0.5, 1.4
DATA 3, 1.2, 7, 9.3, 1.5, 5.2
FOR I = 0 TO 5
READ A(I)
NEXT I
FOR I = 0 TO 5
READ B(I)
NEXT I
FOR I = 0 TO 5
C(I) = A(I) + B(I) ^ 2
PRINT C(I)
NEXT I
END
L4102
16
9.540001
58.3
83.79
1.75
28.44

CLS
PRINT "L4112"
DIM A(10)

117
DATA -3, -7, 9, 10,- 11, -7.5, 8.1, 3.4,- 2, -4, 3.5
FOR I = 0 TO 10
READ A(I)
NEXT I
FOR I = 1 TO 10 STEP 2
IF A(I) < 0 THEN PRINT " I ="; I, A(I - 1)
NEXT I
END
L4112
I=1 -3
I=5 -11
I=9 -2

CLS
PRINT "L4122"
PRINT "X", "Y"
FOR X = 1 TO 2 STEP .2
Y = 3.285 * X ^ 3 / (5 - X ^ (1 / 3))
PRINT X, Y
NEXT X
END
L4122
X Y
1 .82125
1.2 1.441704
1.4 2.322422
1.6 3.512789
1.8 5.063519

CLS
PRINT "L4132"
PRINT "X", "Y"
N=0
FOR X = 4 TO 2 STEP -.5
Y = SQR(ABS(X)) * SIN(X) / (X + EXP(X))
IF Y > 0 THEN N = N + 1
PRINT X, Y
NEXT X
PRINT "N", N

118
END
L4132
X Y
4 -2.583025E-02
3.5 -1.792291E-02
3 1.058789E-02
2.5 6.444869E-02
2 .1369617
N 3

CLS
PRINT "L4142"
S=0
FOR X = -3 TO 3 STEP .5
Y = X * COS(2 * X + 3)
IF Y < 0 THEN S = S + Y
NEXT X
PRINT "S="; S
END
L4142
S=-6.544869

4.5. Лабораторная работа ”L5”


Ответы и компьютерные программы
1 CLS
5 PRINT "L5.1"
10 DEF FND (X1, Y1, X2, Y2) = SQR((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2)
20 DATA 3, 2, -2, 5, 9, 4
30 DATA 2, 1, 5, 5, -4, 6
40 DATA 0, -3, 9, 0, 6, -6
50 READ X1, Y1, X2, Y2, X3, Y3
60 GOSUB 120
70 READ X1, Y1, X2, Y2, X3, Y3
80 GOSUB 120
90 READ X1, Y1, X2, Y2, X3, Y3
100 GOSUB 120
110 GOTO 180

119
120 P = 0
130 P = P + FND(X1, Y1, X2, Y2)
140 P = P + FND(X1, Y1, X3, Y3)
150 P = P + FND(X2, Y2, X3, Y3)
160 PRINT "P="; P
170 RETURN
180 END
L5.1
P= 23.20087
P= 21.86563
P= 22.90324

1 CLS
5 PRINT "L5.2"
10 DEF FND (X1, Y1, X2, Y2) = SQR((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2)
20 DATA 3, 2, -2, 5, 9, 4
30 DATA 2, 1, 5, 5, -4, 6
40 DATA 0, -3, 9, 0, 6, -6
50 READ X1, Y1, X2, Y2, X3, Y3
60 GOSUB 120
70 READ X1, Y1, X2, Y2, X3, Y3
80 GOSUB 120
90 READ X1, Y1, X2, Y2, X3, Y3
100 GOSUB 120
110 GOTO 190
120 A = FND(X1, Y1, X2, Y2)
130 B = FND(X1, Y1, X3, Y3)
140 C = FND(X2, Y2, X3, Y3)
150 P = (A + B + C) / 2
160 S = SQR(P * (P - A) * (P - B) * (P - C))
170 PRINT "S="; S
180 RETURN
190 END
L5.2
S= 13.99999
S= 19.5
S= 22.5

1 CLS

120
5 PRINT "L5.3"
10 DEF FND (X1, Y1, X2, Y2) = SQR((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2)
20 DATA -3, 2, 2, 7, 2, 3, 4, 5
30 DATA -5, -4, 8, -4, 6, 1, -2, 1
40 DATA 5, 3, 5, 7, 9, 5, 9, 4
50 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
60 GOSUB 120
70 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
80 GOSUB 120
90 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
100 GOSUB 120
110 GOTO 190
120 P = 0
130 P = P + FND(X1, Y1, X2, Y2)
140 P = P + FND(X2, Y2, X3, Y3)
150 P = P + FND(X3, Y3, X4, Y4)
160 P = P + FND(X1, Y1, X4, Y4)
170 PRINT "P="; P
180 RETURN
190 END
L5.3
P= 21.51527
P= 32.21612
P= 13.59524

1 CLS
5 PRINT "L5.4"
10 DATA 6.5, 3.4, 2.5
20 DATA 13.4, 8.3, 5.7
30 DATA 15.5, 8.4, 6.5
40 READ A, B, H
50 GOSUB 110
60 READ A, B, H
70 GOSUB 110
80 READ A, B, H
90 GOSUB 110
100 GOTO 140
110 S = (A + B) / 2 * H
120 PRINT "S="; S

121
130 RETURN
140 END
L5.4
S= 12.375
S= 61.845
S= 77.675

1 CLS
5 PRINT "L5.5"
10 DEF FND (X1, Y1, X2, Y2) = SQR((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2)
20 DATA 2, 8, 8, 4, 14, 8, 8, 12
30 DATA 5, 6, 11, 2, 17, 6, 11, 10
40 DATA 0, 11, 6, 7, 12, 11, 6, 15
50 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
60 GOSUB 120
70 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
80 GOSUB 120
90 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
100 GOSUB 120
110 GOTO 170
120 A = FND(X2, Y2, X4, Y4)
130 B = FND(X1, Y1, X3, Y3)
140 S = A * B / 2
150 PRINT "S="; S
160 RETURN
170 END
L5.5
S= 48
S= 48
S= 48

1 CLS
5 PRINT "L5.6"
10 DEF FND (X1, Y1, X2, Y2) = SQR((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2)
20 DATA 2, 8, 8, 4, 14, 8, 8, 12
30 DATA 5, 6, 11, 2, 17, 6, 11, 10
40 DATA 0, 11, 6, 7, 12, 11, 6, 15
50 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4

122
60 GOSUB 120
70 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
80 GOSUB 120
90 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
100 GOSUB 120
110 GOTO 180
120 Lromb = FND(X1, Y1, X2, Y2)
130 Lac = FND(X1, Y1, X3, Y3)
140 Lbd = FND(X2, Y2, X4, Y4)
150 S = Lac * Lbd / 2
152 SNalfa = S / Lromb ^ 2
154 PRINT "Lromb="; Lromb, "Lac="; Lac, "Lbd="; Lbd
160 PRINT "S="; S, "sin(alfa)="; SNalfa
170 RETURN
180 END
L5.6
Lromb= 7.211102 Lac= 12 Lbd= 8
S= 48 sin(alfa)= .9230769
Lromb= 7.211102 Lac= 12 Lbd= 8
S= 48 sin(alfa)= .9230769
Lromb= 7.211102 Lac= 12 Lbd= 8
S= 48 sin(alfa)= .9230769

1 CLS
5 PRINT "L5.7"
10 DEF FND (X1, Y1, X2, Y2) = SQR((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2)
20 DATA 0, 4, 2, 9, 8, 3, 6, -2
30 DATA 2, 7, 4, 12, 10, 6, 8, 1
40 DATA -1, 2, 1, 7, 7, 1, 5, -4
50 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
60 GOSUB 120
70 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
80 GOSUB 120
90 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
100 GOSUB 120
110 GOTO 190
120 A = FND(X1, Y1, X2, Y2)
130 B = FND(X1, Y1, X3, Y3)
140 C = FND(X2, Y2, X3, Y3)

123
150 P = (A + B + C) / 2
160 S = 2 * SQR(P * (P - A) * (P - B) * (P - C))
170 PRINT "S="; S
180 RETURN
190 END
L5.7
S= 41.99999
S= 41.99999
S= 41.99999

1 CLS
5 PRINT "L5.8"
10 DEF FNV (X, Y) = SQR(X * X + Y * Y)
20 DATA 0, 4, 2, 9, 8, 3, 6, -2
30 DATA 2, 7, 4, 12, 10, 6, 8, 1
40 DATA -1, 2, 1, 7, 7, 1, 5, -4
50 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
60 GOSUB 120
70 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
80 GOSUB 120
90 READ X1, Y1, X2, Y2, X3, Y3, X4, Y4
100 GOSUB 120
110 GOTO 210
120 Z1 = X3 - X1
130 T1 = Y3 - Y1
140 V1 = FNV(Z1, T1)
150 Z2 = X4 - X2
160 T2 = Y4 - Y2
170 V2 = FNV(Z2, T2)
180 C = (Z1 * Z2 + T1 * T2) / V1 / V2
190 PRINT " Косинус угла ="; C
200 RETURN
210 END
L5.8
Косинус угла= .4556711
Косинус угла= .4556711
Косинус угла= .4556711

124
Лабораторнвя работа L59

Пусть вектор AB задан координатами точек A и B . A( A1, A2) , B( B1, B 2).

Вектор CD задан координатами точек C ( C 1, C 2 ) и D ( D1, D 2).

Координаты вектора AB X 1 и Y 1 соответственно равны:

X 1 = B1 - A1; Y 1 = B 2 - A2.

Координаты вектора CD X 2 и Y 2 соответственно равны:

X 2 = D1 - C1 ; Y 2 = D 2 - C 2.

Условие перпендикулярности двух векторов – это равенство нулю их

скалярного произведения:

X 1 * X 2 + Y 1 * Y 2 = 0.

Координаты точек A , B,C D вводятся в основной программе. В основной

программе осуществляется вывод информации. Подпрограмма вычисляет

координаты векторов и их скалярное произведение.

5 CLS
10 PRINT "L5.9"
20 DATA 2, 8, 14, 8, 8, 4, 8, 12
30 DATA 2, 8, 8, 4, 14, 8, 8, 12
40 DATA 0, 1, 12, 11, 6, 7, 6, 15
50 FOR I = 0 TO 2
60 READ A1, A2, B1, B2, C1, C2, D1, D2
70 GOSUB 90
80 GOTO 150
90 X1 = B1 - A1
100 Y1 = B2 - A2
110 X2 = D1 - C1
120 Y2 = D2 - C2
130 S = X1 * X2 + Y1 * Y2
140 RETURN
150 IF S = 0 THEN PRINT I + 1; " Векторы перпендикулярны "

160 IF S <> 0 THEN PRINT I + 1; " Векторы не перпендикулярны "

125
170 NEXT I
180 END
L5.9
1 Векторы перпендикулярны
2 Векторы не перпендикулярны
3 Векторы не перпендикулярны

Лабораторная работа L 510.

Арифметическая прогрессия a1 , a 2 , a 3 .... a n


Формула суммы членов арифметической прогрессии:

(a1 + a n )n (2a1 + d (n - 1)]n


S= или S = ,
2 2
где n - количество членов арифметической прогрессии,

a n = a1 + d (n - 1) -последний член прогрессии,

d -разность прогрессии. d = a 2 - a1 .
В примере арифметическая прогрессия: 2, 5, 8,…
5 CLS
10 PRINT "L5.10"
20 DATA 2, 5, 5, 7, 10
30 READ A1, A2
40 PRINT " Арифметическая прогрессия"
50 PRINT "2, 5, 8, 11..."
60 FOR I = 0 TO 2
70 READ N
80 GOSUB 120
90 PRINT " N="; N, "S="; S
100 NEXT I
110 GOTO 150
120 D = A2 - A1
130 S = (2 * A1 + D * (N - 1)) * N / 2
140 RETURN
150 END
L5.10

126
Арифметическая прогрессия
2, 5, 8, 11...
N= 5 S= 40
N= 7 S= 77
N= 10 S= 155

Лабораторная работа L 511


Пройденный точкой путь за время от t1 до t 2 вычисляется по формуле
t2
at 2
S = ò (V0 + at )dt = (V0 t + ),
t1
2

В момент времени t1 пройденный путь S1 , в момент времени t 2 -пройденный путь S 2 .

. Пройденный путь за время t 2 - t1 будет S = S 2 - S1 .

at 2
Выражение V0 t + можно оформить как процедуру, значения которой вычисляются
2
при t1 и t 2 .
1 CLS
5 PRINT "L5.11"
10 DATA 2, 3, 2, 5
20 DATA 10, -2, 1, 3
30 DATA 3.5, 1.5, 0, 10
40 DEF FNS (Vo, A, t) = Vo * t + A * t * t / 2
50 FOR i = 0 TO 2
60 READ Vo, A, t1, t2
70 S = FNS(Vo, A, t2) - FNS(Vo, A, t1)
80 PRINT "V="; Vo; "+"; A; "t"; " t1="; t1, " t2="; t2, " S="; S
90 NEXT I
100 END
L5.11
t1= 2 t2= 5 S= 37.5 V= 2 + 3 t
t1= 1 t2= 3 S= 12 V= 10 +-2 t
t1= 0 t2= 10 S= 110 V= 3.5 + 1.5 t

127
Лабораторная работа L512
Сумма членов геометрической прогрессии определяется по формуле:

a1 - a n q a1 - a1q n a1 (1 - q n )
S= = = ,
1- q 1- q 1- q

если прогрессия убывающая. Если n меняется, то S = f (n) . Вычисление суммы членов


прогрессии можно оформить как функцию пользователя (процедуру) и обращаться к ней при
каждом новом значении n ( в цикле ).

5 CLS
10 PRINT "L5.12"
20 PRINT " Геометрическая прогрессия"
30 PRINT "10, 5, 2.5, 1.25..."
40 DATA 2, 5, 10
50 DEF FNF (N) = A1 * (1 - q ^ N) / (1 - q)
60 A1 = 10
70 A2 = 5
80 q = A2 / A1
90 FOR I = 0 TO 2
100 READ N
110 S = FNF(N)
120 PRINT "N="; N, "S="; S
130 NEXT I
140 END
L5.12
Геометрическая прогрессия
10, 5, 2.5, 1.25...
N= 2 S= 15
N= 5 S= 19.375
N= 10 S= 19.98047

5 CLS
10 PRINT "L5.13"
20 DIM A(3)
30 DATA -3, 5, 6, 0, 1, 2, -5, 4, -7,1, 2, -11
40 PRINT " Массив А"

128
50 FOR K = 0 TO 3
60 GOSUB 110
70 A(K) = S
80 PRINT A(K)
90 NEXT K
100 GOTO 170
110 S = 0
120 FOR I = 0 TO 2
130 READ B
140 S = S + B
150 NEXT I
160 RETURN
170 END
L5.13
Массив А
8
3
-8
-8

5 CLS
10 PRINT "L5.14"
20 DIM B(2)
30 DATA 2, -1, 0, 3, 1, 3, 2, -5, 4, 2
40 DATA 1, 5, -3, 7, -4
50 PRINT " Массив B"
60 FOR K = 0 TO 2
70 GOSUB 120
80 B(K) = S
90 PRINT B(K)
100 NEXT K
110 GOTO 180
120 S = 0
130 FOR I = 0 TO 4
140 READ A
150 S = S + A
160 NEXT I
170 RETURN
180 END

129
L5.14
Массив B
5
6
6

130
131

Оценить