
- •Введение
- •1. Начальные сведения
- •1.1. Назначение и применение эвм
- •1.2. Этапы решения задач на эвм
- •2. Описание языка basic
- •2.1. Общая характеристика алгоритмического языка basic
- •2.2. Символы языка basic
- •2.3. Простейшие конструкции языка basic
- •Примеры записи чисел на basiCе
- •Стандартные функции
- •2.4. Арифметические выражения
- •2.5. Структура программы на языке basic
- •2.5.1. Программы линейной структуры на языке basic
- •Определение нестандартных функций оператором def fn.
- •2.5.2. Программы ветвящейся структуры
- •Печать X, y
- •2.5.3. Программы циклической структуры на языке basic.
- •Печать X, y
- •Печать X,y,z
- •2.5.4. Программирование с использованием массивов.
- •Печать p-s
- •Печать t
- •Печать s(I)
- •3.Программирование с использованием подпрограмм.
- •4. Обработка графической информации
- •4.1. Графические операторы бейсика
- •4.1.1. Установка режима экрана
- •4.1.2. Оператор задания цвета
- •4.1.3. Очистка экрана
- •4.1.4. Построение точки
- •4.1.5. Построение линий и прямоугольников
- •4.1.6. Построение окружности
- •4.1.7. Заливка
- •4.1.8. Построение дуг
- •4.2. Круговая диаграмма
- •Logate строка, столбец, курсор,
- •4.3. Построение эллипса
- •4.4.Построение ломаных
- •4.5. Команды перемещения
- •4.6. Задание цвета изображений
- •4.7. Поворот изображений
- •4.8. Масштабирование изображений
- •4.9. Построение графика функции.
- •5. Программа.
- •Литература
Печать t
Конец
Рис. 2.6. Блок - схема программы на обработку массивов
Пример 8. Найти сумму элементов каждой строки массива C(4,5).
Программа для примера 8 (см. рис. 2.7.):
DIM C(4,5), S(4)
DATA 2, 4, 6, 8, 10
DATA -1, -3.4, -6, 7, 9
DATA -2, -4, 6, -8, -10
DATA 1, 3, 5.1, 12, 15
FOR I = 1 TO 4
FOR J = 1 TO 5
READ C(I,J)
NEXT J, I
FOR I = 1 TO 4
S(I)=0
FOR J = 1 TO 5
S(I) = S(I)+C(I,J)
NEXT J
PRINT S(I);
NEXT I : PRINT
END
Использование файлов последовательного доступа.
Операторы OPEN, CLOSE, INPUT # и PRINT #.
Оператор OPEN позволяет открывать файлы для чтения и записи. Общий вид:
OPEN "File.name" FOR { режим } AS { номер }
File.name - имя открываемого файла
режим - способ доступа к файлу
номер - целое число 1-255, которое потом используется, чтобы определить нужный файл для записи/чтения.
Начало
Ввод
С(i,j)
n
i = 1
j=j+1
да
j≤5
нет
Печать s(I)
i=i+1
да
i≤4
нет
Конец
Рис. 2.7. Блок - схема циклического вычислительного процесса с применением двумерного массива
Режимы:
APPEND - последовательная запись в файл, начиная с конца файла, т.е. дополнение;
OUTPUT - перезапись в файл;
INPUT - чтение файла;
BINARY - режим ввода/вывода.
Если вы открыли файл для дополнения, то это делается следующим образом:
OPEN "FILE.TXT" APPEND AS #1
a$="your text here"
w=344,9
PRINT #1, a$
PRINT #1, w
CLOSE #1
В результате программа допишет в файл FILE.TXT две строки, в первой - значение переменной a$, во второй - значение переменной w. Рекомендуется в конце программы ставить CLOSE, тогда она автоматически закрывает все файлы. Если не закрыть файл, то у вас не будет к нему доступа, в нем ничего не изменится и т.д., команда CLOSE закрывает все файлы и проблем не возникнет.
Для чтения из файла используется оператор INPUT #:
OPEN "FILE.TXT" FOR INPUT AS #1
INPUT #1, D$
INPUT #1, R
CLOSE #1
PRINT D$
PRINT R
CLOSE
Еще одно хорошее свойство - команда FREEFILE - указывает следующий свободный номер для файлов, когда у вас открыто несколько файлов и вы думаете какой еще придумать номер - не мучайтесь, пишите:
n=FREEFILE
open "name" for append as #n
...
close #n
Пример
9. Найти все
массива C(5,5).,
большие по модулю 2.
Сформируем файл “data” содержащий элементы массива с помощью оператора PRINT #:
DIM C(5,5)
open “data” for output as #1
FOR I = 1 TO 4
FOR J = 1 TO 5
INPUT X
PRINT #1,X
NEXT J, I
close #1
Для решения нашей задачи элементы массива считываем с файла “data” с помощью оператора INPUT #.
Результаты запишем в файл “rez”.
open “data” for input as #2
open “rez” for output as #3
FOR I = 1 TO 5
FOR J = 1 TO 5
INPUT #2, C(I,J)
IF ABS(C(I,J))>2 THEN PRINT #3 C(I,J)
NEXT J, I
CLOSE
END
3.Программирование с использованием подпрограмм.
Обособленную группу операторов, которую можно выполнять многократно, обращаясь к ней из различных мест программы, называют подпрограммой. Чтобы подпрограмма при обращении к ней выполнялась каждый раз с новыми данными, ее нужно составить в общем виде, а исходные данные для работы передавать в переменные подпрограммы перед обращением к ней.
Подпрограмма-функция.
Это подпрограмма имеет следующую структуру:
FUNCTION имя [(список параметров) STATIC]
[Операторы подпрограммы]
имя = выражение
END FUNCTION
Для обращения к функции используют указатель функции содержащую имя функции и в скобках конкретные значения ее аргументов.
Пример
10. Вычислить
,
где
.
Сумму вычислить с точностью 0,0001.Для этого необходимо суммировать до тех пор, пока очередной член суммы не станет меньше заданной точности.
Используем подпрограмму функцию.
DECLARE FUNCTION R(X)
U=R(1/2)+R(1/3)+R(1/4)
PRINT “U=”;U
END
FUNCTION R(X)
S=0: K=1
WHILE ABS(X^K/K^2)>1E-4
S=S+X^K/K^2
K=K+1
WEND
R=S
END FUNCTION
Пример 11.Вычислить скалярное произведение векторов:
Используем
подпрограмму, вычисляющую скалярное
произведение векторов
:
.
REM “Основная программа”
DECLARE FUNCTION SP(X(),Y(),N)
INPUT K,M
DIM A(1 TO K),B(1 TO K),C(1 TO M),D(1 TO M)
FOR I=1 TO K
INPUT A(I),B(I)
NEXT
FOR I=1 TO M
INPUT C(I),D(I)
NEXT
S1=SP(A(),B(),K)
S2=SP(C(),D(),M)
PRINT S1,S2
END
REM “Подпрограмма”
FUNCTION SP(X(),Y(),N)
S=0
FOR I=1 TO N
S=S+X(I)*Y(I)
NEXT
SP=S
END FUNCTION
Подпрограмма общего вида.
Это подпрограмма имеет следующую структуру:
SUB имя [(список параметров)] [STATIC]
Операторы подпрограммы
END SUB
Для обращения к подпрограмме общего вида служит оператор
[CALL] имя подпрограммы [(список аргументов)]
Используем подпрограмму общего вида для решения примера 10.
REM “Основная программа”
DECLARE SUB P(X,R)
CALL P(1/2,R1)
CALL P(1/2,R2)
CALL P(1/2,R3)
U=R1+R2+R3
PRINT “U=”;U
END
REM “Подпрограмма”
SUB P(X,R)
S=0: K=1
WHILE ABS(X^K/K^2)>1E-4
S=S+X^K/K^2
K=K+1
WEND
END SUB
Для решения примера 11.
REM “Основная программа”
DECLARE SUB SP(X(),Y(),N,S)
INPUT K,M
DIM A(1 TO K),B(1 TO K),C(1 TO M),D(1 TO M)
FOR I=1 TO K
INPUT A(I),B(I)
NEXT
FOR I=1 TO M
INPUT C(I),D(I)
NEXT
CALL SP(A(),B(),K, S1)
CALL SP(C(),D(),M, S2)
PRINT S1,S2
END
REM “Подпрограмма”
SUB SP(X(),Y(),N,S)
S=0
FOR I=1 TO N
S=S+X(I)*Y(I)
NEXT
END SUB