- •Утверждено на заседании кафедры ксу
- •Пример составления программы
- •Блок – схема
- •1.2. Вопросы для контроля:
- •Задания к лабораторной работе №2
- •Контрольная работа № 3 итерационные вычислительные процессы
- •1.1. Теоретическая часть
- •1.2. Задания к контрольной работе № 3
- •Контрольная работа № 4.
- •Блок – схема
- •1.2.Вопросы для контроля
- •Контрольная работа № 5 обработка двумерных массивов (матриц)
- •1.1. Теоретическая часть
- •1.2. Вопросы для контроля
- •1.3. Задание к контрольной работе №5
- •Контрольная работа № 6 использование функций пользователя
- •1.2. Вопросы для контроля:
- •1.3.Задание к контрольной работе № 6
- •Контрольная работа № 7
- •1.1. Теоретическая часть.
- •1.2. Вопросы для контроля:
- •1.3. Задание к контрольной работе № 7
- •Контрольная работа № 8
- •1.1. Теоретическая часть.
- •1.2. Вопросы для контроля
- •1.3.Задание к контрольной работе № 8
- •Контрольная работа №9 создание и обработка графических изображений
- •Вопросы для контроля
- •Задание к контрольной работе №9
- •2. Графическое обозначение блоков в схемах алгоритмов
Министерство образования и науки Украины
Одесский национальный политехнический университет
Методические указания к контрольным работам по курсу «Алгоритмические языки и программирование» для студентов заочной формы обучения
( Программирование на Бейсике )
Одесса
ОНПУ 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
Диапазон шестнадцатеричных констант 0FFFF.
Целая восьмеричная константа – это последовательность восьмеричных цифр (0,1,2,3,4,5,6,7), перед которой стоит префикс &0 или &.
Примеры:
&025
&123
Диапазон восьмеричных констант 0177777.
Вещественные константы подразделяются на вещественные десятичные константы и вещественные экспоненциальные константы.
Вещественная десятичная константа – это дробное число, в котором целая и дробная части отделяются друг от друга точкой (.). Либо целая, либо дробная части могут при записи константы опускаться, если они равны нулю.
Примеры:
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
Вещественные константы могут быть простой и двойной точности.
Константы простой точности записываются в соответствии с правилами.
Они содержат не более, чем 7 цифр.
В экспоненциальной форме записываются с буквой E.
В конце числа ставится знак !.
Примеры:
45.6 -2.4E-03 35.0 24.3!
Константы двойной точности записываются в соответствии с правилами:
В экспоненциальной форме с буквой D.
Длина числа 8 и более цифр.
В конце числа ставиться знак #.
Примеры:
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 <список констант>
<список констант> - список числовых или символьных констант, разделённых запятыми.
Примеры:
READ a,b,c
20 DATA 2,3.4,0.2
Аналогичная запись:
10 READ a
20 READ b,c
несколько операторов DATA воспринимаются как один.
Для вывода данных на экран используется оператор PRINT. Он позволяет выводить на экран значения переменных, пояснительные тексты, заключённые между двойными кавычками (“), а также функции TAB и SPC.
Его формат:
PRINT <список вывода>
Элементами списка вывода могут быть числа, значения переменных, символьные константы, выражения, пояснительные тексты:
Примеры:
PRINT A;B
20 PRINT A+B^2
PRINT x”в квадрате=” x^2
Элементы списка вывода могут разделиться пробелом, запятой <,>, точкой с запятой <;>. Использование запятой и пробела эквивалентно.
При выводе на печать физическая строка устройства делится на зоны по 14 позиций в каждой. Разделительные символы определяют местоположение в строке выводимого элемента списка, за которым он следует, следующим образом:
<,> - вывод элемента списка в новую зону;
<;> - вывод элемента вслед за предыдущим.
Если использовать K запятых, это приводит к соответствующему смещению на K зон.
Если оператор PRINT завершается символами <,;> или функциями TAB и SPS, то следующий оператор PRINT будет выводить информацию в ту же строку, что и предыдущий.
Если таких разделителей нет в конце оператора PRINT, вывод осуществляется с новой строки.
В списках вывода операторов PRINT, LPRINT и PRINT# могут использоваться функции TAB и SPC.
Функция TAB(k) указывает, что вывод будет осуществляться, начиная с k-ой позиции строки (k=1255). Использование TAB в конце оператора PRINT эквивалентно использованию запятой <,>.
Функция SPC(k) выводит k пробелов (k=1255). Использование SPC в конце оператора PRINT эквивалентно использованию точки с запятой <;>.
В списке вывода можно использовать несколько функций TAB и/или SPC. При этом TAB указывает каждый раз новую позицию вывода, а SPC суммирует свои значения при вычислении позиции в строке.
Оператор формата PRINT без списка вывода и без разделителей(,;TAB SPC) осуществляет перевод курсора в начало новой строки.
Примеры:
10 X=46.41: PRINT “Значение X=”;X;
Y=21.41: PRINT “Значение Y=”;Y
PRINT TAB(3);”X=”;X;SPC(3);”Y=”;Y
RUN
Значение X=46.21 Значение Y=21.41
X=46.41Y=21.41
10 A$=”AAA”:B$=”SSS”:X=46:Y=41:Z=21
PRINT “A$+B$=”; A$+B$;SPC(2);(x+y).
PRINT, “A$=”;A$,,,,,”B$=”;B$
RUN
A$+B$=AAASSS 4.142857 A$=AAA
5 REM Использование функций TAB и SPС
PRINT TAB(45);TAB(15);TAB(68);TAB(40);”40”
PRINT SPC(4);SPC(5);SPC(15);SPC(15);”40”
RUN
40
40
5 REM Вывод в уплотнённом формате
X=15.56: Y=48
PRINT TAB(3);X;TAB(10),Y;
PRINT TAB(3);X;TAB(15);Y
RUN
48
48
Оператор WRITE. Он имеет формат:
WRITE <список вывода>
Действие данного оператора аналогично оператору PRINT со следующими отличиями:
В качестве разделителей в списке не допускаются пробелы;
Элементы списка вывода разделяются запятыми <,>, а символьные значения выводятся в кавычках <”>;
положительные числовые значения выводятся без ведущего пробела (пробел вместо знака );
в конце вывода осуществляется перевод строки и возврат каретки в 1-ю позицию строки;
список вывода не должен содержать функцию TAB и SPC или завершиться символами <,> <;>.
Пример:
X=46.41:Y%=41.21:A$=”Текст”:D=26.0888
WRITE X,Y%,A$,D
RUN
46.41, 41, “Текст”, 26.0888
СТРУКТУРА ПРОГРАММЫ И ПРАВИЛА ЕЁ ЗАПИСИ
Текст программы состоит из одной или нескольких программных строк (длиной < 256 символов). В каждой строке записывается один или несколько операторов или команд языка БЕЙСИК, отделённых друг от друга символом двоеточия <:>.
Все строки программы нумеруются в пределах 065529 и располагаются в порядке возрастания их номеров. Шаг нумерации строк может быть любым целым числом > 0. Однако из практических соображений рекомендуется шаг нумерации выбирать большим 1, скажем 10. Это позволит в случае необходимости весьма просто осуществлять вставки строк в программу без её перенумерации. Конец программы определяется оператором END или в его отсутствии последним оператором программы.
ВОПРОСЫ ДЛЯ КОНТРОЛЯ
Какие типы констант используются в языке BASIC?
Как конструируются имена переменных?
Как определяются типы переменных?
Каковы знаки арифметических операций?
Какова структура и принцип работы оператора INPUT?
Какова структура и принцип работы оператора READ?
Какова структура и принцип работы оператора DATA?
Какие разделители используются в списке вывода оператора PRINT и каково их назначение?
Какова структура и принцип работы оператора WRITE?
Каковы правила записи Бейсик – программы?
Контрольная работа №1.
РАЗВЕТВЛЯЮЩИЕСЯ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ.
Теоретическая часть.
Любая программа содержит линейные вычислительные процессы. В них все операции выполняются последовательно одна за другой в порядке их записи (в порядке нумерации строк). Это осуществляется при решении простых задач вычисления по формулам без всяких условий.
При решении задач, содержащих условия и варианты решения возникает необходимость изменения порядка выполнения операторов с целью получения нужного варианта. Для этого используют операторы безусловного перехода, логические выражения и операторы условного перехода.
ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА
Оператор безусловного перехода имеет следующий формат:
GOTO <номер строки>
где: GOTO – служебное слово(идти к).
Например, оператор GOTO 30 выполняет переход к оператору, имеющего номер строки 30.
ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ И ОПЕРАТОРЫ УСЛОВНОГО ПЕРЕХОДА.
Логические выражения– это совокупность констант, переменных, стандартных функций и арифметических выражений, соединённых операциями отношениями и логическими операциями. Их используют для проверки условий в операторах условного перехода.
Операциями отношенияявляются: =(равно); <>(не равно); <(меньше); >(больше); <=(меньше или равно); >=(больше либо равно). Их используют для сравнения арифметических выражений. Например: 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 и B0) будет выполняться оператор Z=X+Y. Если хотя бы одно из этих двух условий не выполнено, то будет выполняться оператор присваивания Z=X-Y.
Оператор IF в сокращённой форме также сначала вычисляет значение логического выражения и, если результат «истина» то <оператор> выполняется, в противном случае оператор IF пропускается и осуществляется переход к следующей строке.
Примеры, иллюстрирующие особенности использования операторов IF обоих форматов:
5 X$=”YES” Y$=”AGN”
IF X$=”YES” GOTO 20 ELSE GOTO 30
PRINT X$;:X$=Y$:GOTO 10
PRINT “NO”
RUN
YESNO
5 X$=”AAA”
IF X$=”YES” GOTO 30
ELSE END
PRINT X$
RUN
AAA
10 X=46:Y=41:Z=21
IF X>Y AND Y>Z THEN PRINT X,Y,Z:PRINT “NO”
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
Вопросы для контроля.
Какие действия выполняет оператор GOTO?
Как действует оператор IF в полной и сокращённой форме?
Какие логические операции используются в логических выражениях?
ЗАДАНИЯ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ №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.
ТАБУЛИРОВАНИЕ
Теоретическая часть
Процесс табулирования относится к циклическим вычислительным процессам, которые характеризуются тем, что вычисление осуществляется по одной и той же формуле (формулам) многократно с подстановкой новых исходных данных в каждом цикле.
При табулировании число повторений циклов заранее неизвестно, но задано некоторое условие его окончания (или продолжения). Такие вычислительные процессы могут быть реализованы с помощью условных операторов, оператора цикла 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