Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мет.указ. бейсик .doc
Скачиваний:
5
Добавлен:
10.02.2016
Размер:
2.06 Mб
Скачать

Министерство образования и науки Украины

Одесский национальный политехнический университет

Методические указания к контрольным работам по курсу «Алгоритмические языки и программирование» для студентов заочной формы обучения

( Программирование на Бейсике )

Одесса

ОНПУ 2004 г.

Министерство образования и науки Украины

Одесский национальный политехнический университет

Кафедра «компьютеризированные системы управления и автоматики»

Методические указания к контрольным работам по курсу «Алгоритмические языки и программирование» для студентов заочной формы обучения

( Программирование на Бейсике )

Утверждено на заседании кафедры ксу

Протокол №___от_________

Одесса

ОНПУ 2004 г.

Методические указания к контрольным работам по курсу

“Алгоритмические языки и программирование” для студентов заочной формы обучения . (Программирование на Бейсике) / В.П.Шилов – Одесса: ОНПУ, 2004 – 114с.

Составитель:

В.П.Шилов, доцент

ПРОСТЕЙШИЕ КОНСТРУКЦИИ ЯЗЫКА BASIC.

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

Символьная константа – это последовательность любых символов языка длиной  255 заключённых в двойные кавычки “ ”.

Примеры:

“ПРОГРАММА”

“10,234”

“<=;-A”

Числовые константы подразделяются на целые и вещественные.

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

Целая десятичная константа – это целое число со знаком или без него в диапазоне от –32768 до +32767.

Целая шестнадцатеричная константа – это последовательность шестнадцатеричных цифр (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F), которым предшествует знак &H.

Примеры:

&H76

&H2F

Диапазон шестнадцатеричных констант 0FFFF.

Целая восьмеричная константа – это последовательность восьмеричных цифр (0,1,2,3,4,5,6,7), перед которой стоит префикс &0 или &.

Примеры:

&025

&123

Диапазон восьмеричных констант 0177777.

Вещественные константы подразделяются на вещественные десятичные константы и вещественные экспоненциальные константы.

Вещественная десятичная константа – это дробное число, в котором целая и дробная части отделяются друг от друга точкой (.). Либо целая, либо дробная части могут при записи константы опускаться, если они равны нулю.

Примеры:

24.35 0.52 .52 3.0 3. –4.65

Вещественная экспоненциальная константа – это число, состоящее из мантиссы, вещественной десятичной константы, за которой следует буква E или D и порядка целого числа со знаком + или -.

E – признак обычной точности. (простой)

D – признак двойной точности.

Примеры:

23E-2=0,23

235.9E-6=0,0002359

65.55E3=65550

3.4D2=340

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

Константы простой точности записываются в соответствии с правилами.

  1. Они содержат не более, чем 7 цифр.

  2. В экспоненциальной форме записываются с буквой E.

  3. В конце числа ставится знак !.

Примеры:

45.6 -2.4E-03 35.0 24.3!

Константы двойной точности записываются в соответствии с правилами:

  1. В экспоненциальной форме с буквой D.

  2. Длина числа 8 и более цифр.

  3. В конце числа ставиться знак #.

Примеры:

13425678 -1.35D12 341.6#

В оперативной памяти целые константы занимают 2 байта, вещественные константы простой точности –4 байта, вещественные константы двойной точности 8 байт, шестнадцатеричные и восьмеричные -–2 байта.

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

Каждая переменная имеет своё имя (или идентификатор).

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

Имена переменных могут быть любой длины, но Бэйсик различает имена по первым 40 символам.

Имя переменной определяет её тип (числовой или символьный) и точность числовой переменной.

Имя символьной переменнойдолжно записываться символом $.

Пример:

A$ B8$ ISKRA1$

Имя числовой переменнойдолжны записываться символами:

% - целая переменная.

! – вещественная переменная простой точности.

# - вещественная переменная двойной точности.

Если имя переменной не содержит этих знаков эта переменная будет вещественная простой точности.

Примеры:

A1# - вещественная переменная двойной точности.

is! – вещественная переменная простой точности.

al% - целая переменная.

da – вещественная переменная простой точности.

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

Знаки арифметических операций:

+(сложение), -(вычитание), *(умножение), /(деление с плавающей точкой), \(целочисленное деление), MOD(остаток от деления), ^(возведение в степень).

Приоритет выполнения арифметических действий следующий:

функции^* или /, \, MOD, + или –

При целочисленном делении операнды округляются до целого, и результат урезается до целого.

Примеры:

A=10\4=2; B=25.6\6.9=3

т.е. (B=26\7=3.7)

Операция MOD даёт целое число, которое является оператором от целочисленного деления операндов.

Примеры:

A=7 MOD 4 =3

B=25.6

C=6.9

A=B MOD C = 5

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

(a*x^2+b*x+c)/(d-2.5)

(x^(1/3)+4)/(a*b)

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

ОПЕРАТОР ПРИСВАИВАНИЯ LET.

Синтаксическая структура оператора присваивания: LET<x>=<a>,

где <x> - переменная, <a> - арифметическое выражение.

Принцип действия оператора: вычисляется значение арифметического выражения <a> и полученное значение присваивается переменной <x>.

Примеры:

LET X=X+1

LET Y=C*D(K+0.5)

LET Z=5

LET C=A

ОРГАНИЗАЦИЯ ВВОДА И ВЫВОДА.

Для ввода данных с клавиатуры в ЭВМ используются операторы вводы. Они имеют следующий формат:

INPUT <список ввода>

<список ввода> - список имён переменных, разделённых запятыми.

Примеры:

INPUT a,b,c

В операторе INPUT допускается написание символьных констант:

INPUT “Введите K,N”;K,N

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

READ <список ввода>

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

Формат оператора DATA:

DATA <список констант>

<список констант> - список числовых или символьных констант, разделённых запятыми.

Примеры:

  1. READ a,b,c

20 DATA 2,3.4,0.2

Аналогичная запись:

10 READ a

20 READ b,c

несколько операторов DATA воспринимаются как один.

Для вывода данных на экран используется оператор PRINT. Он позволяет выводить на экран значения переменных, пояснительные тексты, заключённые между двойными кавычками (“), а также функции TAB и SPC.

Его формат:

PRINT <список вывода>

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

Примеры:

  1. PRINT A;B

20 PRINT A+B^2

  1. PRINT x”в квадрате=” x^2

Элементы списка вывода могут разделиться пробелом, запятой <,>, точкой с запятой <;>. Использование запятой и пробела эквивалентно.

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

<,> - вывод элемента списка в новую зону;

<;> - вывод элемента вслед за предыдущим.

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

Если оператор PRINT завершается символами <,;> или функциями TAB и SPS, то следующий оператор PRINT будет выводить информацию в ту же строку, что и предыдущий.

Если таких разделителей нет в конце оператора PRINT, вывод осуществляется с новой строки.

В списках вывода операторов PRINT, LPRINT и PRINT# могут использоваться функции TAB и SPC.

Функция TAB(k) указывает, что вывод будет осуществляться, начиная с k-ой позиции строки (k=1255). Использование TAB в конце оператора PRINT эквивалентно использованию запятой <,>.

Функция SPC(k) выводит k пробелов (k=1255). Использование SPC в конце оператора PRINT эквивалентно использованию точки с запятой <;>.

В списке вывода можно использовать несколько функций TAB и/или SPC. При этом TAB указывает каждый раз новую позицию вывода, а SPC суммирует свои значения при вычислении позиции в строке.

Оператор формата PRINT без списка вывода и без разделителей(,;TAB SPC) осуществляет перевод курсора в начало новой строки.

Примеры:

  1. 10 X=46.41: PRINT “Значение X=”;X;

  1. Y=21.41: PRINT “Значение Y=”;Y

  1. PRINT TAB(3);”X=”;X;SPC(3);”Y=”;Y

RUN

Значение X=46.21 Значение Y=21.41

X=46.41Y=21.41

  1. 10 A$=”AAA”:B$=”SSS”:X=46:Y=41:Z=21

  1. PRINT “A$+B$=”; A$+B$;SPC(2);(x+y).

  1. PRINT, “A$=”;A$,,,,,”B$=”;B$

RUN

A$+B$=AAASSS 4.142857 A$=AAA

  1. 5 REM Использование функций TAB и SPС

  1. PRINT TAB(45);TAB(15);TAB(68);TAB(40);”40”

  1. PRINT SPC(4);SPC(5);SPC(15);SPC(15);”40”

RUN

40

40

  1. 5 REM Вывод в уплотнённом формате

  1. X=15.56: Y=48

  1. PRINT TAB(3);X;TAB(10),Y;

  1. PRINT TAB(3);X;TAB(15);Y

RUN

    1. 48

    1. 48

Оператор WRITE. Он имеет формат:

WRITE <список вывода>

Действие данного оператора аналогично оператору PRINT со следующими отличиями:

  • В качестве разделителей в списке не допускаются пробелы;

  • Элементы списка вывода разделяются запятыми <,>, а символьные значения выводятся в кавычках <”>;

  • положительные числовые значения выводятся без ведущего пробела (пробел вместо знака );

  • в конце вывода осуществляется перевод строки и возврат каретки в 1-ю позицию строки;

  • список вывода не должен содержать функцию TAB и SPC или завершиться символами <,> <;>.

Пример:

  1. X=46.41:Y%=41.21:A$=”Текст”:D=26.0888

  1. WRITE X,Y%,A$,D

RUN

46.41, 41, “Текст”, 26.0888

СТРУКТУРА ПРОГРАММЫ И ПРАВИЛА ЕЁ ЗАПИСИ

Текст программы состоит из одной или нескольких программных строк (длиной < 256 символов). В каждой строке записывается один или несколько операторов или команд языка БЕЙСИК, отделённых друг от друга символом двоеточия <:>.

Все строки программы нумеруются в пределах 065529 и располагаются в порядке возрастания их номеров. Шаг нумерации строк может быть любым целым числом > 0. Однако из практических соображений рекомендуется шаг нумерации выбирать большим 1, скажем 10. Это позволит в случае необходимости весьма просто осуществлять вставки строк в программу без её перенумерации. Конец программы определяется оператором END или в его отсутствии последним оператором программы.

ВОПРОСЫ ДЛЯ КОНТРОЛЯ

  1. Какие типы констант используются в языке BASIC?

  2. Как конструируются имена переменных?

  3. Как определяются типы переменных?

  4. Каковы знаки арифметических операций?

  5. Какова структура и принцип работы оператора INPUT?

  6. Какова структура и принцип работы оператора READ?

  7. Какова структура и принцип работы оператора DATA?

  8. Какие разделители используются в списке вывода оператора PRINT и каково их назначение?

  9. Какова структура и принцип работы оператора WRITE?

  10. Каковы правила записи Бейсик – программы?

Контрольная работа №1.

РАЗВЕТВЛЯЮЩИЕСЯ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ.

    1. Теоретическая часть.

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

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

    1. ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА

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

GOTO <номер строки>

где: GOTO – служебное слово(идти к).

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

    1. ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ И ОПЕРАТОРЫ УСЛОВНОГО ПЕРЕХОДА.

Логические выражения– это совокупность констант, переменных, стандартных функций и арифметических выражений, соединённых операциями отношениями и логическими операциями. Их используют для проверки условий в операторах условного перехода.

Операциями отношенияявляются: =(равно); <>(не равно); <(меньше); >(больше); <=(меньше или равно); >=(больше либо равно). Их используют для сравнения арифметических выражений. Например: x>y; a>=1; cos(x)+1<sin(x)-1. Это простые логические выражения. Их называют отношениями. Результатом вычисления такого логического выражения является одно из логических значений «истина» или «ложь».

Логическими операциямиявляются: NOT, AND, OR, XOR, EQV, IMP.

Их смысл отражён в таблице.

Операнд

Значение битов X и Y

X

0

0

1

1

Операция

Y

0

1

0

1

Отрицание

NOT X

1

1

0

0

Конъюнкция

X AND Y

0

0

0

1

Дизъюнкция

X OR Y

0

1

1

1

Исключающее ИЛИ

X XOR Y

0

1

1

0

Эквивалентность

X EQV Y

1

0

0

1

Импликация

X IMP Y

1

1

0

0

Примеры:

a>40 или g<41 и s>20

X+4<Y или X/2+a<3

a>40 OR g<41 AND s>20

X+4<Y OR X/2+a<3

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

Полный формат условного оператора переходаимеет вид:

<nc> IF <логическое выражение> THEN <оператор 1> ELSE <оператор 2>

где IF(если), THEN(то), ELSE(иначе) – ключевые слова языка, nc – номер строки.

Сокращённый формат условного оператораперехода имеет вид:

<nc> IF <логическое выражение> THEN <оператор>

Оператор IF в полном формате сначала вычисляет значение логического выражения. Если результат «истина», то выполняется <оператор 1>, в противном случае выполняется <оператор 2>.

Пример:

IF A=0 AND B<>0 THEN Z=X+Y ELSE Z=X-Y

Если выполняются одновременно два условия (A=0 и B0) будет выполняться оператор Z=X+Y. Если хотя бы одно из этих двух условий не выполнено, то будет выполняться оператор присваивания Z=X-Y.

Оператор IF в сокращённой форме также сначала вычисляет значение логического выражения и, если результат «истина» то <оператор> выполняется, в противном случае оператор IF пропускается и осуществляется переход к следующей строке.

Примеры, иллюстрирующие особенности использования операторов IF обоих форматов:

  1. 5 X$=”YES” Y$=”AGN”

  1. IF X$=”YES” GOTO 20 ELSE GOTO 30

  1. PRINT X$;:X$=Y$:GOTO 10

  1. PRINT “NO”

RUN

YESNO

  1. 5 X$=”AAA”

  1. IF X$=”YES” GOTO 30

  1. ELSE END

  1. PRINT X$

RUN

AAA

  1. 10 X=46:Y=41:Z=21

  1. IF X>Y AND Y>Z THEN PRINT X,Y,Z:PRINT “NO”

  1. SWAP X,Y:GOTO 20

RUN

46 41 21

NO

46 41 21

(функция SWAP осуществляет обмен двух значений X и Y).

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

Задача: вычислить значение Y при X=2.

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

Y=X-1

Y=X2+2

Y=2X+1

Программа

10 REM Разветвляющийся вычислительный процесс

20 INPUT “Введите значение X”; X

30 IF X<=-3 THEN Y=X-1

40 IF –3<x AND X<3 THEN Y=2*X+1 ELSE Y=X^2+2

50 PRINT “Y=”; Y

60 END

RUN

Введите значение X = 2

Y=5

    1. Вопросы для контроля.

  1. Какие действия выполняет оператор GOTO?

  2. Как действует оператор IF в полной и сокращённой форме?

  3. Какие логические операции используются в логических выражениях?

    1. ЗАДАНИЯ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ №1

Вариант

Задание

Вычислить значения переменных по формулам

1.

; ;;

, если ;

S = , если;

, если ;

2.

; ;;

, ecли ;

R = , ecли;

, ecли ;

3.

; ;;

, если ;

G = , если;

, если ;

4.

; ;;

, если ;

x = , если;

, если ;

5.

; ;;

, если ;

y = , если;

, если ;

6.

; ;;

, если ;

Q = , если;

, если ;

7.

; ;;

, ecли ;

Q = , ecли;

, ecли ;

8.

; ;;

, если ;

G = , если;

, если ;

9.

; ;;

, если ;

x = , если;

, если ;

10.

; ;;

, если ;

Q = , если;

, если ;

11.

; ;;

, ecли ;

R = , ecли;

, ecли ;

12.

; ;;

, если ;

G = , если;

, если ;

13.

; ;;

, если ;

x = , если;

, если ;

14.

; ;;

, если ;

S = , если;

, если ;

15.

; ;;

, ecли ;

R = , ecли;

, ecли ;

16.

; ;;

, если ;

G = , если;

, если ;

17.

; ;;

, если ;

x = , если;

, если ;

18.

; ;;

, если ;

S = , если;

, если ;

19.

; ;;

, ecли ;

R = , ecли;

, ecли ;

20.

; ;;

, если ;

G = , если;

, если ;

21.

; ;;

, если ;

x = , если;

, если ;

22.

; ;;

, если ;

S = , если;

, если ;

23.

; ;;

, ecли ;

R = , ecли;

, ecли ;

24.

; ;;

, если ;

G = , если;

, если ;

25.

; ;;

, если ;

x = , если;

, если ;

26.

; ;;

, если ;

S = , если;

, если ;

27.

; ;;

, ecли ;

R = , ecли;

, ecли ;

28.

; ;;

, если ;

G = , если;

, если ;

29.

; ;;

, если ;

x = , если;

, если ;

30.

; ;;

, если ;

S = , если;

, если ;

31.

; ;;

, ecли ;

R = , ecли;

, ecли ;

32.

; ;;

, если ;

G = , если;

, если ;

33.

; ;;

, если ;

x = , если;

, если ;

34.

; ;;

, если ;

S = , если;

, если ;

35.

; ;;

, ecли ;

R = , ecли;

, ecли ;

36.

; ;;

, если ;

G = , если;

, если ;

37.

; ;;

, если ;

x = , если;

, если ;

38.

,

, если

y = , если

, если

39.

если

R = , если

, если

40.

, если

S = , если

, если

41.

; ;;

, если

D = , если

, если

42.

;

, если

y = , если

, если

43.

, если

x = , если

, если

44.

; ;

, если

R = , если

, если

45.

;

, если

Z = , если

, если

46.

;

, если

H = , если

, если

47.

;

, если

P = , если

, если

48.

;

, если

x = , если

, если

49.

;

, если

Z = , если

, если

50.

; ;;

, если

D = , если

, если

Контрольная работа №2.

ТАБУЛИРОВАНИЕ

    1. Теоретическая часть

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

При табулировании число повторений циклов заранее неизвестно, но задано некоторое условие его окончания (или продолжения). Такие вычислительные процессы могут быть реализованы с помощью условных операторов, оператора цикла WHILE-WEND или оператора цикла FOR.

Cхематическая схема решения такой задачи с использованием условных операторов IF или оператора цикла WHILE-WEND выглядит следующим образом:

__

условие

+

выход из цикла

операторы

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

контрольной работе № 1.

Оператор WHILE-WEND имеет следующий формат:

WHILE <арифметическое выражение>

<операторы тела цикла>

WEND

Принцип его работы следующий: если значение <арифметическое выражение> отлично от нуля, то выполняются операторы тела цикла (между WHILE и WEND), в противном случае управление получает оператор, следующий за WEND.

Оператор WHILE-WEND допускает использование вложенных циклов, но при этом каждому WHILE должен соответствовать свой WEND. В этом случае вложенные циклы имеют следующую структуру:

WHILE <арифметическое выражение>

<оператор>

……………

WHILE<арифм. выраж.>

<оператор>

……………

WEND

WEND

Оператор FOR-NEXT имеет следующий формат:

FOR i=m1 TO m2 STEP m3

<операторы тела цикла>

NEXT i

Где: i- параметр цикла, который изменяет свое значение от m1 до m2 с шагом m3.

m1- начальное значение параметра цикла

m2- конечное значение параметра цикла

m3- шаг изменения параметра цикла

Принцип работы оператора цикла FOR-NEXT следующий: выполняются операторы тела цикла для значения i=m1,

далее осуществляется переход в заголовок цикла и параметр цикла i изменяется на величину шага m3. Так происходит до тех пор, пока i не станет > m2. В этом случае происходит выход из цикла и выполняется оператор, расположенный за NEXT i.

Если шаг изменения параметра цикла = 1, его можно не указывать, т.е. заголовак цикла может быть записан в таком виде:

FOR i=m1 to m2

Оператор FOR-NEXT допускает использование вложенных циклов, при этом каждому циклу должен соответствовать свой параметр цикла. Вложенные циклы имеют следующую структуру:

FOR i=m1 TO m2 STEP m3

FOR j=n1 TO n2 STEP n3

<операторы тела цикла>

NEXT j

NEXT i

Или: FOR i=m1 TO m2 STEP m3

FOR j=n1 TO n2 STEP n3

<операторы тела цикла>

NEXT j,i