- •Министерство образования и науки российской федерации
- •Содержание
- •Введение
- •Лабораторная работа № 1 Разработка и отладка линейной программы Задание:
- •Выполнение задания:
- •Лабораторная работа № 2 Разработка и отладка программы с разветвлениями Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 3 Разработка и отладка циклической программы Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 4
- •Разработка и отладка
- •Сложной циклической программы
- •Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 5 Разработка и отладка программы для работы с файлами Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 6 Разработка и отладка программы для работы с графикой Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 7 Разработка и отладка программы для работы с графикой в статике Задание на лабораторное занятие
- •Выполнение задания
- •Лабораторная работа № 8 Разработка и отладка программы для работы с графикой в динамике Задание на лабораторное занятие
- •Выполнение задания
- •Методические рекомендации По разработке программы
- •5. Трансляция и отладка программы.
- •К лабораторной работе №1
- •К лабораторной работе № 2
- •К лабораторной работе № 3
- •К лабораторной работе № 4
- •Исходная последовательность
- •Отсортированная по возрастанию
- •Программа разложения числа на простые сомножители
- •Делителями числа 28 являются 1, 2, 4, 7, 14.
- •Программа вычисления таблицы значений функции 2-х переменных
- •Программа построения таблицы сложных процентов
- •Программа сложения столбцов определителя
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Варианты 25-27
- •Вариант 28
- •Вариант 29
- •Вариант 30
- •Варианты 28-30
- •Вариант 31
- •Вариант 36
- •Варианты 34-36
- •Логика цикла
- •Логика цикла
- •К лабораторной работе № 5
- •К лабораторной работе № 6
- •К лабораторной работе № 7
- •К лабораторной работе № 8
- •Косинусоида. Вариант 1
- •Основы программирования на языке basic
- •192171, Г. Санкт-Петербург, ул. Седова, 55/1
К лабораторной работе № 3
Цель работы: приобретение практических навыков в разработке и отладке циклических программ.
Структура создаваемой программы представляет собой 4 цикла: 1-й и 2-й циклы предназначены для ввода последовательностей значений x(i) и y(j), соответственно, а 3-й и 4-й – для вычисления сумм S1 и S2.
В начале программы следует оператором DIM объявить массивы с целью подготовки места в памяти для записи последовательностей x(i) и y(j)
Например:
10 INPUT "Задайте размер массива n =", n
10 DIM x(20) 20 DIM x(n)
Ввод значений x(i) и y(j) осуществляется с помощью операторов INPUT, поставленных в цикл.
Цикл реализуется посредством FOR…NEXT – управляющего оператора, повторяющего блок операторов указанное число раз.
Например:
10 FOR k = 2 TO 6 STEP 2 10 FOR k = 2 TO 6 STEP 2
20 x(k/2) = k 20 x(k/2) = k
30 S = S + 2 * x(k/2) 30 S = 2 * x(k/2)
40 NEXT k 40 NEXT k
Представленные варианты различаются строкой 30. В первом происходит суммирование, а во втором - нет. Действительно:
1-й вариант 2-й вариант
1-й шаг: x(1) = 2 S = 0 + 2 * 2 = 4 S = 2 * 2 = 4
2-й шаг: x(2) = 4 S = 4 + 2 * 4 = 12 S = 2 * 4 = 8
3-й шаг: x(3) = 6 S =12 + 2 * 6 = 24 S = 2 * 6 = 12
По умолчанию шаг равен 1. При таком шаге строка 10 будет выглядеть:
10 FOR k = 2 TO 6
Отметим, что строки 20 и 30 являются телом цикла или блоком операторов повторяющемся указанное число раз, то есть 3 раза.
Цикл FOR…NEXT выполняется только в том случае, если начало плюс шаг меньше или равно конечному значению счетчика. Если конец меньше начала, то для выполнения цикла шаг должен быть отрицательным. Допускается вкладывать циклы FOR…NEXT.
10 FOR i =1 TO 5 'это внешний цикл
20 FOR j = 1 TO 5 'это вложенный цикл
30 S1 = S1 + a(i , j)
40 NEXT j 'сначала закрывается вложенный цикл
50 NEXT i 'последним закрывается внешний цикл
В отличие от FOR…NEXT, выполняющего цикл заданное число раз, управляющий оператор цикла WHILE…WEND выполняет блок операторов, пока указанное условие истинно. Покажем, как с его помощью можно реализовать вычисление сумм.
20 WHILE i < 7
30 i = i + 1
40 IF i <= 3 THEN 50 ELSE 70
50 PRINT "Введите х"; i: INPUT "х =", x
60 S1 = S1 + (x + 1) ^ 2
70 PRINT "Введите y"; i: INPUT "y =", y
80 S2 = S2 + (3 * y ^ 3 + 2 * y ^ 2 + y)
90 WEND
Границы суммирования для S2 (от 1 до 7) реализуют строка 30 и условие при WHILE (в строке 20), а для S1 (от 1 до 3) – строка 30 и условие при операторе IF…THEN (в строке 40).
В таблицах 0.3.1 и 0.3.2 приведены контрольные примеры для заданий из таблиц 3.1 и 3.2, соответственно.
Таблица 0.3.1.
Вариант |
x1 |
x2 |
x3 |
x4 |
x5 |
S1 |
S1 |
0 |
1 |
0 |
0 |
|
|
-2 |
-2 |
1 |
1 |
0 |
0 |
0 |
|
4,86 |
5 |
2 |
1 |
0 |
|
|
|
2,96 |
3 |
3 |
-1 |
0 |
0 |
|
|
-9,96 |
-10 |
4 |
1,5 |
0 |
0 |
0 |
|
30,06 |
30 |
5 |
1,5 |
0 |
0 |
0 |
0 |
20,1 |
20 |
6 |
1 |
0 |
0 |
0 |
0 |
16,81 |
17 |
7 |
1 |
0 |
0 |
0 |
0 |
6,84 |
7 |
8 |
1,5 |
0 |
0 |
|
|
4,88 |
5 |
9 |
4 |
0 |
0 |
0 |
|
9,086 |
9 |
Таблица 0.3.2.
Вариант |
y1 |
y2 |
y3 |
y4 |
y5 |
y6 |
y7 |
y8 |
S2 |
S2 |
0 |
2 |
2 |
1 |
1 |
0 |
0 |
|
|
0,2 |
0,2 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
|
|
14,17 |
14 |
2 |
-1 |
-1 |
0 |
0 |
0 |
0 |
0 |
|
2,82 |
3 |
3 |
1 |
1 |
1 |
1 |
1 |
-2 |
|
|
9,57 |
10 |
4 |
-1,5 |
0 |
0 |
0 |
0 |
0 |
0 |
|
1,99 |
2 |
5 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
|
14,72 |
15 |
6 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
9,01 |
9 |
7 |
1 |
1 |
1 |
1 |
1 |
6 |
|
|
28,65 |
29 |
8 |
2 |
2 |
2 |
-2 |
-2 |
-2 |
|
|
-28,82 |
-29 |
9 |
2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
122,16 |
122 |
Логика цикла FOR…NEXT | |
при положительном значении шага |
при отрицательном значении шага |
|
Таблица 0.3.3.
Оператор и его описание |
DIM m1(10), m2(1 TO 10, 5) Оператор объявляет одномерный (m1) и двумерный (m2) массивы. |
DIM m(10, 5) DIM m(0 TO 10, 5) DIM m(10, 0 TO 5) DIM m(0 TO 10, 0 TO 5) Операторы объявляют двумерный массив. При OPTION BASE 0 операторы эквивалентны. Ключевое слово TO позволяет указать и нижнюю и верхнюю границы массива. |
REDIM m(5, 3) REDIM m(0 TO 5, 3) REDIM m(5, 0 TO 3) REDIM m(0 TO 5, 0 TO 3) Оператор объявления массивов, изменяет объем памяти, выделенной динамическим массивам. |
OPTION BASE n Оператор объявления нижней границы массивов. n = 0 или 1, по умолчанию равен 0. Не обязателен, может использоваться только раз в модуле для описания всех массивов. |
ERASE m Оператор управления памятью, обнуляет элементы статического массива m или уничтожает динамический массив m. |
FOR i = 2 TO 100 STEP 2 S = S + a( i ): IF S > 100 THEN EXIT FOR NEXT i Оператор цикла, реализующий суммирование элементов массива а, при сумме больше 100 предусмотрен досрочный выход из цикла. |
FOR i = 1 TO 1000: NEXT i Пустой цикл, реализующий временную задержку. |
WHILE S <= 100 i = i +1: S = S + a( i ) WEND Оператор цикла, реализующий суммирование элементов массива а, цикл выполняется пока указанное условие истинно (в данном случае при S 100). |
Примечание: 1. Возможные границы массивов находятся в приделах от – 32768 до 32767. 2. Допускается вкладывать как циклы FOR…NEXT, так и WHILE…WEND. 3. Обычно при использовании циклов FOR…NEXT первому счетчику цикла дается имя i, вложенному в него – j, затем k, l и далее по алфавиту. |
Логика цикла WHILE…WEND |
|