Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 10
начало
конец
Х=А+В
Х=А+В
Y=X+C
Z=Y^2
X>A
I=1,10,1
A
A
A, B
A, B
TEXT
+
-
I=A1, A2, A3
начало
_
+
начало
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
Деление
на 0
EMBED Equation.3
EMBED Equation.3
Конец
+
-
начало
А, В, С
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
конец
EMBED Equation.3
z 5
z2 , если z < 0
z2 - 1 ,если 0 ≤ z ≤ 1
1
(1-z) ,если z > 1
f =
начало
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
конец
-
+
начало
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
конец
PI=3.1416
X=1,2*PI,0.2*PI
Y=1-X: Y1=COS(X)
Y=0 OR Y1=0
“DEL. NA 0”
Z=SIN(2*X)/Y+1/Y1^2
X, Z
конец
+
_
S=S+S1
начало
конец
S=0
I=1,25
S1=0
J=1,I
I^2-J<>0
= (I ^ 2 + J ^ 3) / (I ^ 2 - J)
S1 = S1 + Y
S
“DELENIE
NA 0 PRI “I,J
начало
I=1,10
A(I);
“MASSIV A(10)”
I=1,10
A(I);
конец
конец
I MOD 10=0
“ “;
C(I);
C(I)
I=1,20
“MASSIV C(20)”
начало
+
_
начало
“MASSIV D(6,6)”
I=1,6
D(I,J)=INT(RNL*200-75)
D(I,J);
конец
“ “;
J=1,6
…
+
_
MAX=K(1)
IMAX=1
MAX; I
K(I)>MAX
MAX=K(I)
IMAX=I
I=1,30
конец
_
+
+
_
N=0
K(I) MOD 2=0
N=N+1
K1(N)=K(I)
I=1,30
I=1,N
K1(I);
I MOD 10=0
конец
“ “;
N
+
+
_
N2=0
K(I) >0
N2=N2+1
K3(N2)=K(I)
I=1,30
…
I=1,N2
K3(I);
_
I MOD 10=0
конец
“ “;
N2
+
_
MAX=D(I,1)
JMAX=J
STROKA I, MAX; J
D(I,J)>MAX
MAX=D(I,J)
JMAX=J
I=1,30
конец
I=1,30
…
+
MAX=D(1,1)
IMAX=1
IMAX, MAX
D(I,I)>MAX
MAX=D(I,I)
IMAX=I
конец
…
I=1,6
3
4
10
10
12
13
13
14
18
MAX= 117 I= 16
Введение
Возникновение информатики как науки связано с появлением ЭВМ и относится к 60-м годам ХХ столетия. В самом общем смысле под информатикой понимают фундаментальную естественную науку, изучающую процессы передачи, накопления и обработки информации с помощью ЭВМ. Роль вычислительной техники (ВТ) в различных отраслях человеческой деятельности постоянно возрастает. Оснащенность средствами ВТ определяет уровень развития современного общества и является основой автоматизации умственной деятельности человека. Сфера использования ЭВМ в настоящее время настолько широка, что нет такой отрасли, где применение ЭВМ было бы нецелесообразным. Это вызывает всё большую необходимость подготовки специалистов в области программирования и использования ЭВМ.
При решении задач на ЭВМ в первую очередь необходимо определить возможность решения поставленной задачи и выбрать соответствующий метод. Далее: необходимо разработать программу на одном из языков программирования, доказать правильность работы программы, протестировав ее, и предусмотреть возможность ее совершенствования на этапе использования.
Наиболее общая тактика разработки программ (программирования) состоит в разделении всей задачи на отдельные более простые задачи, решение которых приводит к решению первоначально поставленной задачи.
Программирование сложнейший раздел информатики. В программировании синтезировано все то, что десятилетиями нарабатывалось в компьютерной науке. Это и результаты работы специалистов, работающих на стыке математики и информатики, это достижения в вычислительной технике, это огромный опыт формализации и решения сложнейших проблем в самом программировании, связанный с созданием больших программных комплексов.
1. Основные понятия и определения.
1.1. Алгоритм.
В настоящее время интерес к алгоритмам особенно велик благодаря возможности использования в научных исследованиях, в технике, в экономике и других областях вычислительных машин, выполняющих построение некоторых величин в точном соответствии с указанным алгоритмом. Эта возможность привлекательна по той причине, что явления и процессы, которые изучаются в рамках упомянутых исследований, часто удается описать с помощью понятий математики функций, систем уравнений, неравенств и т.д. и для получения конкретных сведений об изучаемых явлениях и процессах надо произвести некоторые действия над математическими объектами. Человеку достаточно описать алгоритм необходимых преобразований и вычислений, а сами действия (как правило, настолько обширные и громоздкие, что их невозможно выполнить вручную) выполнит вычислительная машина. Например, статистические расчеты, численные методы решения дифференциальных уравнений и т.п.
Алгоритм конечный набор правил, позволяющий чисто механически решать любую конкретную задачу из некоторого класса однотипных задач. Исходные данные могут изменяться в некоторых пределах, но путь решения задачи определен однозначно. Алгоритм синоним слов способ, рецепт. Наиболее распространенные формы задания алгоритма словесный, табличный, блок-схема (структурная схема). Словесное задание позволяет описать алгоритм с помощью слов и предложений. Табличное задание служит для представления алгоритма в виде таблицы и расчетных формул. Блок-схема это графическое представление логической структуры алгоритма, в которой каждое действие записывается соответствующей геометрической фигурой (см. таблицу 1), а внутри блоков записывается содержание этих действий (см. рис. 1).
Таблица 1. Основные блоки.
№№ п/п |
Название |
Обозначение |
Пояснения |
1 |
2 |
3 |
4 |
1 |
Процесс |
Вычислительное действие или их последовательность |
|
2 |
Решение |
Проверка условия ( блок сравнения ) |
|
3 |
Модификация |
Начало цикла |
|
4 |
Документ |
Печать результатов |
|
5 |
Перфокарта |
Ввод данных из блока анных Ввод данных с клавиатуры |
|
6 |
Пуск, останов |
Начало, конец |
|
7 |
Соединитель |
Разрыв линии потока |
|
8 |
Комментарий |
Пояснения, заголовки |
Рис. 1.Примеры изображения элементов блок-схем.
В блоке организации циклов
помещается следующая информация:
I - главная управляющая циклом;
A1 - начальное значение главной управляющей циклом;
A2 - конечное значение главной управляющей циклом;
A3 - шаг изменения значения главной управляющей циклом.
Параметры А1, А2, А3 главной управляющей циклом записываются через запятую. Если шаг изменения главной управляющей циклом А3 равен единице, то А3 в записи может опускаться.
Текст комментария может содержать любые символы языка.
Пути вычисления (связи между блоками) указываются стрелками. При естественном ходе вычислений - сверху вниз и слева направо - стрелки можно не указывать.
В зависимости от структуры алгоритма различают следующие типы линейный, разветвленный, циклический.
Линейный алгоритм не содержит логических условий и имеет одну ветвь вычислений.
Пример 1: Вычислить высоты треугольника со сторонами А, В, С по формуле Герона:
где - полупериметр треугольника.
Введем дополнительную переменную:
.
Блок - схема алгоритма предложенной задачи представлена на рис.2.
Разветвляющийся алгоритм содержит одну или несколько ветвей вычислений. Вычисления идут по одному из нескольких возможных путей в зависимости от значений исходных данных или промежуточных результатов.
Пример 2: Вычислить значения функции , где: n и x - заданные параметры.
Блок - схема предложенной задачи представлена на рис.3.
Рис.2. Рис.3.
Циклический алгоритм содержит многократно повторяемые части.
Пример 3: Вычислить при изменении x от 0 до 3 с шагом 0,1.
Предложенная задача может быть решена двумя способами:
с изменением параметра x с помощью блока организации цикла. Блок-схема представлена на рис. 5.
Рис. 4. Рис. 5.
Во время работы персональный компьютер (ПК) выполняет заданную программу, а программа является заданным алгоритмом, записанным в специальных обозначениях.
Правила записи алгоритма для выполнения его вычислительной машиной оказываются очень жесткими автомат не может ничего додумать за человека. Совокупность средств и правил представления алгоритма в виде, пригодном для выполнения вычислительной машиной, называется языком программирования, а каждый алгоритм, записанный на некотором языке программирования, называется программой. Язык программирования нам необходим для того, чтобы написать текст программы, т.е. перечень инструкций, необходимых для решения поставленной задачи. Программа упорядоченная последовательность действий для ЭВМ, реализующая алгоритм решения какой-либо задачи.
Программированием называется процесс подготовки задач
для их решения на ЭВМ. В настоящее время существуют много языков программирования, они отличаются количеством встроенных функций, графическими возможностями и т.п. Сравнение языков программирования Паскаля и Бейсика показывает, что текст алгоритма в виде программы на Бейсике содержит больше подробностей о действиях вычислительной машины, а текст на Паскале яснее выражает математическую сущность алгоритма.
Microsoft Quick BASIC (Qbasic - просто Быстрый) "Бейсик"- диалоговый учебный язык программирования для персональных компьютеров. На современных компьютерах используется следующие версии Basic: GWBasic, QBasic 4.5, Turbo Basic для DOS, Visual Basic 3.0-6.0 для Windows. Здесь мы рассмотрим QBasic 4.5. QBasic входит в состав операционной системы MS-DOS 6.0-6.22. Есть русифицированная версия QBasic.
Qbasic является интерпретатором, т.е. программы, написанные на этом языке, могут выполняться только внутри его интегрированной среды. Однако это является и недостатком Qbasic. Qbasic, в отличии от более ранних версий языка Basic, поддерживает современные средства модульного программирования. Это свойство поднимает его до современных языков программирования. К достоинствам языка QBasic также следует отнести то, что
1.2. Этапы программирования.
Описание плана решения задачи на языке программирования (составление программы).
Ввод текста программы в память ПК.
Компиляция трансляция (перевод) программы с языка про-
граммирования на машинный язык (т.е. в машинные коды).
Исправление ошибок в программе (отладка программы).
Выполнение программы и получение предварительных результатов.
Анализ полученных результатов и, при необходимости, корректировка программы.
Для описания конструкций языка Quick Basic в методических указаниях приняты следующие обозначения:
курсив используется для обозначения операндов и параметров, при написании программы они должны быть заменены соответствующими значениями;
элементы, заключенные в квадратные скобки, являются необязательными и могут быть использованы или опущены по желанию программиста;
многоточие означает возможность повторения, т.е. предшествующий многоточию элемент конструкции команды может быть неоднократно повторен;
обязательные пробелы обозначены знаком подчеркивания “_”.
2. Язык программирования Quick Basic
2.1. Среда Qвasic
Словарь Qbasic содержит около 200 ключевых слов, каждое из которых обозначает выполнение определенного действия. Многие ключевые слова вместе с дополнительными параметрами формируют операторы, из которых и состоит текст программы.
Для входа в среду Qbasic необходимо запустить файл tb.exe, который обычно находится в каталоге Qbasic . После успешного вызова системы верхняя строка экрана монитора содержит «меню» возможных режимов работы среды Qbasic .
Рис. 6.
Начнем с меню File (рис. 6). Для того, чтобы открыть это меню, нужно щелкнуть на нем мышкой (рис. 7). В нем есть пункты New Program - создать новую программу; Open Program... - открыть программу; Save и Save As... - сохранить и сохранить как, и Exit - остальные нам пока не понадобятся.
Рис. 7. Рис. 8.
В меню Edit (рис. 8): Undo - отменить последний ввод; Cut - вырезать в буфер; Copy - копировать туда же; Paste - вставить оттуда; Clear - удалить все.
Меню Search: Find - найти какие-нибудь символы, а Change - найти что-нибудь, а потом заменить (иногда довольно полезная вещь).
Меню Run: Start- запуск написанной вами программы с начала; Continue - продолжение выполнения программы после прерывания ее. Make EXE File... - позволяет сделать из *.bas файла настоящую EXE-версию вашего программы, чтобы ее можно было запускать на машине без Бейсика.
Чтобы переключиться на русский язык, надо нажать правый Ctrl и правый Alt, а чтобы на английский язык, то нажать надо на те же клавиши, только слева.
И еще - если вы запустили программу, а выхода из нее не предусмотрели, то нажмите Ctrl+Break. Чтобы при наборе кода перейти на новую строку нажмите на кнопку ENTER.
При необходимости сохранить написанную программу, нужно воспользоваться меню File -> Save As . Откроется следующее окно:
Рис. 9.
По рисунку 9 видно, как можно выполнить эту операцию. Немного про имена файла: В DOS'e, под которым и работает QBasic, имя файла должно состоять не более, чем из 8-ми символов, начиная с латинской буквы. Далее могут следовать буквы или циры. Расширение после сохранения Qbasic ставит такое - bas. Это облегчит поиск нужного файла. Несколько слов о форматах - верхний формат стоит по умолчанию. Он убыстряет работу с Qbasic , может быть и размер файла будет немного меньше. Но зато файлы, сохраненные таким образом, нельзя открыть ничем, кроме Qbasic . Во втором формате в файле просто будет текст написанной вами программы. Такой файл можно открывать через любой редактор. При необходимости найти уже сохраненную программу используется File -> Open Program... При этом открывается практически такое же окно. В большом окошке можно выбрать нужный файл. А можно ввести название файла в верхнем окне, и Бейсик откроет его.
Команда меню Edit позволяет перейти к режиму редактирования программы.
Команда Compile служит для компиляции, т.е. перевода программы на Qbasic в машинные коды. При выполнении этой
команды выдается сообщения о результатах прохождения компиляции. Если в программе допущены синтаксические ошибки и ошибки, вызванные внутренними несоответствиями, то выдается сообщение. Список основных сообщений об ошибках приведен в Приложении 1. Следует отметить, что компилятор обнаруживает ошибки в написании команд, ошибки несоответствия типов данных и т.п., и не может обнаружить ошибок в алгоритме решения задачи. Из этого следует, что успешное выполнение компиляции, к сожалению, не означает, что задача решена правильно.
Для выполнения программы служит команда меню Run, в случае успешного выполнения программы результат показывается в окне Run системы.
Программа на Qbasic представляет собой последовательность строк. Каждая из строк содержит номер (может отсутствовать) и информационную часть. Номер строки определяет порядок размещения строк в программе и используется для указания строк при передаче управления. Информационная часть состоит из одного или нескольких операторов (команд), а также может включать комментарий. Если строка содержит несколько операторов, то они разделяются двоеточиями. Строка программы может содержать до 255 символов.
Режимы работы в среде Qbasic можно разделить на:
1) режим работы с текстом программы;
2) режим работы с файлом;
3) режим отладки.
Текстовый редактор предоставляет пользователю возможности набора и редактирования текста. С его помощью создаются тексты программы, которые Вы просто набираете с помощью клавиатуры. Для перемещения по тексту можно использовать клавиши со стрелками или специальные клавиши (PgUp, PgDn, HOME, END). Курсор показывает место ввода текста. С помощью клавиши DELЕTE удаляют знак, находящийся над курсором (в позиции курсора), BACKSPASE удаляет знак, стоящий слева от курсора. С помощью клавиши INSERT можно установить режим замены или вставки.
В режиме отладки происходит трансляция программы с языка программирования в машинные коды (при этом исправляются ошибки), выполнение программы, исправление ошибок, тестирование программы. Обычно при отладке используются команды меню Compile и Run.
2.2. Имена
Имя служит для обозначения объектов. В программировании слово «имя» очень часто заменяется словом «идентификатор». При составлении алгоритма, а затем текста программы мы, естественно работаем с некоторыми данными. Для того, чтобы их отыскать, нам необходимо каждому данному (переменной, константе и т.д.) дать имя, т.е. идентифицировать его. Идентификатор в Qbasic всегда начинается буквой латинского алфавита, за которой могут следовать буква, цифра и знак подчеркивания. В идентификатор не могут входить пробелы и специальные символы, в качестве идентификаторов нельзя использовать зарезервированные слова (см. Приложение 2).
При использовании алгебраических выражений следует помнить о том, что их запись в тексте программы несколько отличается от математической записи. Например, недопустимо при записи выражений опускать знак умножения, запись возведения в степень отличается от математической, невозможно использовать и устанавливать верхние и нижние индексы, выражение записывается в одну строку (числитель и знаменатель дроби разделяются знаком “/” и берутся в скобки, см. примеры 7, 8).
2.3. Основные элементы языка
программирования Qbasic.
2.3.1.Алфавит.
Алфавит языка состоит из прописных и строчных букв латинского алфавита, цифр от 0 до 9, специальных знаков. Для записи комментариев могут использоваться буквы русского алфавита. Комментарий задается либо с помощью апострофа
« », либо с помощью оператора REM.
2.3.2. Типы данных.
Тип в программировании это множество, для которого оговорен некоторый набор операций над элементами. В Qbasic используются константы, переменные и массивы.
Константа это такой объект программы, который сохраняет в ней постоянное значение. Тип и значение константы определяются ее записью. Числовые константы могут быть целочисленными (целое число в диапазоне от 32768 до 32767) и вещественными (могут быть с обычной точностью 6 знаков после запятой и с двойной точностью 16 знаков после запятой). Строковая константа это заключенная в кавычки последовательность символов, при ее записи можно использовать любые символы.
Существует специальный оператор для описания констант:
CONST имя переменной=константа
Если переменная описана как константа с помощью этого оператора, Qbasic не позволит случайно изменить ее значение.
Переменная это такой объект программы, который в процессе выполнения программы может иметь различные значения. Переменная характеризуется именем, типом и значением. Для обозначения переменных используются имена, которые не должны повторяться в пределах одной программы. Требования к именам переменных рассмотрены в разделе
Переменные, также как и константы, могут быть: 1) целые; 2) вещественные; 3) логические; 4) символьные.
Если в переменной хранится число, то это числовая переменная, если в переменной хранится слово или фраза, то это строковая (символьная) переменная.
Тип переменной может быть задан:
1) явно (когда тип определяется последними символом в имени переменной: % - переменная целого типа, ! - переменная с обычной точностью, # - переменная с двойной точностью, $ - строковая переменная);
2) с помощью оператора DEF…, который указывает, что тип переменной будет определяться по первой букве имени переменной;
3) по умолчанию. Если тип переменной не задан, то она считается переменной с обычной точностью. Начальные значения числовых переменных устанавливаются по умолчанию равными нулю, а строковых переменных - пустой строке.
Содержимое хранится в переменной до тех пор, пока оно не будет специально изменено.
Для работы с целыми числами в языке Basic служат следующие операторы:
1) Оператор Y = INT(X) округляет до целого дробное число X или результат деления A/B Y = INT(A/B).
То же самое действие выполняет деление \ : X = A \ B
Например: INT(3.5) = 3
X = INT(8/3) = 2
X = 8 \ 3 = 2
2) Оператор MOD делит одно число на другое и возвращает только остаток деления: A MOD B.
Этот оператор вычисляет остаток от деления:
Например: 14 MOD 5 = 4
11 MOD 4 = 3
17 MOD 3 = 2
15 MOD 2 = 1
С помощью этого оператора можно определять кратность числа какой-то величине, в том числе - чётность или нечётность числа.
Массивы. Массив - это набор объектов одного типа, у каждого из которого есть свой индекс (номер). Массив представляет собой последовательность переменных. Отдельные элементы этой последовательности называются элементами массива. Каждый массив имеет имя и размерность. Имена массивов и их тип определяются аналогично простым переменным. Все элементы массива должны иметь один и тот же тип. Отдельный элемент массива обозначается именем массива и списком индексов. Список индексов должен содержать столько индексов, сколько измерений имеет соответствующий массив.
Для объявления массива используется оператор DIM:
DIM_имя массива (размерность)[,имя массива (размерность)…]
Имя массива это любое имя, присвоенное массиву. Размерность это числовое выражение, значение которого должно быть положительным числом, целая часть которого определяет максимальное значение соответствующего измерения. Минимальным значением измерения может быть либо 0, либо 1.
Например: DIM M(25), MATR$(4,6)
По этому оператору в памяти ЭВМ будет отведено место под одномерный массив из 25 элементов с именем М с данными целого или действительного типа и под двумерный массив из 4 строк и 6 столбцов (всего 24 элемента) с именем MATR$ с данными строкового типа.
Например: M(10)=25
MATR$(2,3)=”A”
По этим двум операторам десятому элементу массива с именем М будет присвоено значение 25, а элементу во второй строке третьего столбца массива MATR$ будет присвоено значение А.
2.3.3. Некоторые директивы языка.
Директива REM или апостроф ' - обозначает комментарий к программе или команде. Вся строка (как правило, это поясняющий текст), что идёт после знака комментария, не исполняется. Этот знак используется при отладке программ.
Оператор CLS - оператор очистки экрана. С него часто начинаются программы, работающие в текстовом режиме. В результате выполнения очистки экрана информация, находящаяся на экране, стирается, курсор размещается в верхнем левом углу экрана. Очистить экран можно в любой момент ввода данных с клавиатуры или во время выполнения программы.
Директива END означает конец программы. Применение этой команды в конце программы не является обязательным.
2.3.4. Выражения
Выражение задает порядок выполнения действий над элементами данных и состоит из операндов, скобок и знаков операций. Операндами могут быть константы, переменные, элементы массивов, обращения к функциям. Операции определяют
действия, которые надо совершить над операндами. При записи числовых выражений могут быть использованы арифметические и логические операции, а также операции сравнения. В строковых выражениях используется только одна операция операция сцепления (+). Порядок выполнения операций в выражении определяется их приоритетами.
Арифметические операции в порядке их приоритета:
вычисление выражений в скобках;
вычисление функций;
^ - возведение в степень;
- - изменение знака;
* - умножение;
/ - деление;
\ - деление нацело;
MOD определение остатка от деления;
+ - сложение;
- - вычитание.
Операции сравнения (все они имеют одинаковый приоритет):
= - равно;
< > (или > <) - не равно;
< - меньше;
> - больше;
< = (или = <) - меньше или равно;
> = ( или = >) - больше или равно.
Операндами операций сравнения могут быть числовые и строковые выражения, однако оба операнда, участвующие в сравнении, должны иметь один и тот же тип.
Логические операции в порядке приоритета:
NOT - логическое отрицание (не);
AND - конъюнкция, логическое умножение (и);
OR - дизъюнкция, логическое сложение (или).
XOR - исключающая дизъюнкция.
Например: IF (J>3)_AND_(I>3) THEN MAS(I,J)=1
после выполнения этого оператора элементу массива М, находящемуся в I строке и J столбце присваивается значение 1, если переменные (индексы элементов массива) J и I имеют значение больше 3.
Вычисление выражений выполняется в соответствии с приоритетом операций: 1) вычисляются значения функций, 2) арифметические операции в соответствии с их приоритетом, 3) операция сцепления, 4) операции сравнения, 5) логические опе-
рации в соответствии с их приоритетом. Выражения, стоящие в скобках, вычисляются в первую очередь, операции одного приоритета выполняются слева направо.
Операндами символьных выражений являются строки символов. Для этих выражений определена лишь одна операция - конкатенация (соединение) строк. Знак операции - "+", а результат операции - новая строка символов. Например, "Оболочка "+"Windows" дает результат - " Оболочка Windows".
Выражение любой сложности должно записываться в одну строку.
Например: выражение
в Qbasic необходимо записать следующий оператор:
D=24 + (F1*SIN(X)^2) / (2*A - 4*F1)
2.3.5. Функции
Встроенные функции. Для облегчения работы программиста наиболее распространенные алгоритмы входят в состав языка программирования в виде встроенных функций (например, вычисление тригонометрических функций). Такие функции называются встроенными и являются частью системы Бейсик. Кроме встроенных функций, пользователь может определить свои собственные функции, которые можно использовать только в рамках одной программы. Встроенная функция имеет определенное имя, вслед за именем функции записываются в скобках аргументы функции. Если функция имеет несколько аргументов, то они разделяются запятыми. Далее в методических указаниях при описании встроенных функций «х» обозначает любое числовое выражение, «х$» - строковое выражение, «n» и «m» выражения целого типа.
Основные функции Qbasic:
ABS(x) - абсолютное значение х;
INT(x) - наибольшее целое, не превосходящее х;
SGN(x) - знак х, эта функция равна 1 при х>0, равна 0
при x=0, равна 1 при x<0;
SQR(x) - квадратный корень из х;
SIN(x) - вычисление синуса угла х (х в радианах);
COS(x) - вычисление косинуса угла х (х в радианах);
TAN(x) - вычисление тангенса угла х (х в радианах);
ATN(x) - вычисление арктангенса числового выражения х;
EXP(x) - вычисление функции ехр;
LOG(x) - вычисление натурального логарифма;
RND- генерация случайного числа между 0 и 1.
С помощью функции RND удобно заполнять массив (т.е. присваивать значения элементам массива), значения элементов которого лежат в заданном интервале.
1) A(I)=RND - значения элементов массива А будут действительными числами в интервале от 0 до 1;
2) S(I)=RND*60 - значения элементов массива S будут действительными числами в интервале от 0 до 60;
3) D(I)=RND*50+32 - значения элементов массива D будут действительными числами в интервале от 32 до 82;
4) B(I)=INT(RND*110)-70 - значения элементов массива В будут целыми числами в интервале от -70 до 40.
Функции пользователя. Функция пользователя определяется внутри программы, которая использует эту функцию. Общий вид оператора определения функции пользователя:
DEF_FNимя [(параметр[,параметр]…]=выражение
Имя вместе с FN определяет имя функции, оно задается аналогично имени переменной и используется для обращения к функции. Параметр, который используется в определении функции, не связан с переменными программы, имеющими те же имена. Значения аргументов, заданных в обращении к функции, присваиваются соответствующим параметрам и используются при вычислении выражения. Выражение определяет функцию. Определение функции должно предшествовать ее использованию.
Пример 4:
DEF FNF1(X)=X^2+SQR(X)
INPUT Y
OTV=FNF1(Y*2)+ SQR(Y)
В результате выполнения этих операторов переменной OTV присваивается значение, равное . Значение переменной Y вводится с клавиатуры.
3. Операторы.
Оператор предписание в данном языке программирования, предназначенное для задания некоторого завершенного действия в процессе переработки информации на ЭВМ. Каждый оператор представляет собой законченную фразу языка и определяет некоторый этап обработки данных.
3.1. Оператор присваивания.
Одним из основных оператором языка является оператор присваивания. Оператор имеет вид:
Имя переменной = выражение
Выражение вычисляется и его значение присваивается переменной с соответствующим именем.
Присвоить значение переменной можно с помощью оператора READ. Этот оператор является парным, то есть он может использоваться только вместе с оператором DATA (см п. 3.7.2).
Пример 5: запись р = р + 3 означает, что к прежнему значению переменной р прибавляется три и этой же переменной присваивается ответ; после выполнения этого оператора значений р увеличится на три.
3.2. Операторы управления.
Обычно операторы программы выполняются один за другим в порядке присвоенных им номеров и расположения в тексте программы. Для изменения этого порядка используются операторы управления, к которым относятся операторы безусловного перехода, оператор условного перехода, операторы организации цикла, операторы прекращения выполнения программы и завершения программы.
Оператор безусловного перехода позволяет передавать управление любой строке программы. Общий вид оператора безусловного перехода:
GOTO_номер строки
Номер строки это метка перед строкой, первому оператору которой будет передано управление после выполнения оператора GOTO.
В качестве метки можно взять любое число, не обязательно совпадающее с номером строки, так как в Qbasic 4.5 строки можно не нумеровать. Двух одинаковых меток в одной программе быть не должно. Исполнение программы будет продолжено с той её части, которая начинается с указанной метки.
Условный оператор выбирает то или иное действие, или группу действий в зависимости от истинности или ложности условия выбора. Условный оператор позволяет реализовать алгоритм с ветвлением. Этот оператор имеет вид:
IF_выражение - условие _THEN_группа операторов
[_ELSE_группа операторов]
Выражение - условие логическое соотношение, группа
операторов это оператор или последовательность операторов, разделенных двоеточием, или номер строки, первому оператору которой должно быть передано управление. Часть операторов, начиная с ключевого слова ELSE, может быть опущена.
Если выражение-условие, принимает значение «истина», то выполняется группа операторов, следующая за THEN. Когда значение выражения-условия ложно, то выполняется группа операторов за ELSE (операторы из THEN в этом случае не выполняются). Если в операторе опущена часть ELSE, то при невыполнении условия управление передается оператору, следующему за оператором IF.
Например:
IF R>0 THEN SP=SP+1 ELSE SO=SO+1
В этом примере при R>0 (истинность условия) выполняется оператор присваивания SP=SР+1; при R£0 (ложность условия) выполняется оператор SO=SO+1.
Операторы IF могут быть вложенными, при этом каждый ELSE соответствует ближайшему предыдущему THEN. Формат записи вложенных условных операторов:
IF логическое выражение THEN группа операторов 1
[ ELSE IF логическое выражение THEN
группа операторов 2 ]
……………………..
[ ELSE
группа операторов n ]
END IF
Пример 6. Составить программу вычисления функции:
1 вариант: 2 вариант:
IF Z<0 THEN IF Z<0 THEN
F=(Z-5)/Z^2 F=(Z-5)/Z^2
ELSE IF Z<=1 THEN IF Z<=1 AND Z>=0 THEN
F=Z^2-1 F=Z^2-1
ELSE IF Z>1 THEN
F=1/(1-Z) F=1/(1-Z)
END IF PRINT "F=";F
PRINT "F=";F END
END
Пример 7:
IF R>0 THEN IF Р>0 THEN SP=SP+1 ELSE SO=SO+1
В этом примере:
при R>0 и Р>0 выполняется оператор SP=SР+1;
при R> 0 и Р£0 выполняется оператор SO=SO+1;
при R£0 выполняется оператор, следующий за оператором IF.
Пример 8:
IF R>0 AND А=5 THEN SP=SP+1 ELSE SO=SO+1
В этом примере:
при R>0 и А=5 выполняется оператор SP=SР+1;
при R<= 0 или А<>5 выполняется оператор SO=SO+1;
Формат этого оператора:
SELECT CASE арифм_выражение или симв_выражение
CASE условие 1
< группа операторов 1>
CASE условие 2
< группа операторов 2>
……………….
[ CASE ELSE
< группа операторов n >]
END SELECT
Условие оператора CASE можно указать в одном из трех форматов:
Константы в условии должны быть того же типа, что и выражение в SELECT CASE.
Алгоритм этого оператора заключается в следующем:
1) вычисляется значение выражения, записанного в SELECT CASE; 2) проверяется, удовлетворяет ли это значение одному из указанных в CASE условий; 3) если значение удовлетворяет какому-то условию, выполняется блок операторов, следующий за данным CASE.
3.3. Операторы цикла.
Цикл это команда повторить многократно указанную последовательность команд алгоритмического языка. Когда известно количество повторений некоторого действия или группы действий, мы говорим о конструкции цикла со счетчиком (или цикла с параметром). В том случае, когда количество повторений указанных действий заранее неизвестно, а зависит от некоторых условий, мы говорим о конструкции цикла с условием выхода.
Циклы с параметром FOR имеет вид:
FOR_переменная = начальное значение_TO_конечное значение[_STEP_приращение]
Операторы тела цикла
NEXT_[переменная]
Переменная управляющая переменная цикла, начальное значение, конечное значение, приращение числовые выражения, определяющие начальное и конечное значения управляющей переменной и шаг ее приращения при повторении цикла
(приращение может быть отрицательным или положительным действительным или целым числом). Если шаг не задан, то по умолчанию значение приращения равно +1. Значения выражений, определяющих начальное, конечное значения, приращения не изменяются в процессе выполнения цикла. Каждому оператору FOR должен соответствовать оператор NEXT.
В общем случае после выполнения оператора FOR начинают выполняться строки программы, следующие за ним, пока не будет встречен оператор NEXT. По оператору NEXT текущее значение управляющей переменной увеличивается на значение приращения. Если новое значение управляющей переменной оказывается больше, чем конечное значение, то цикл заканчивается, и выполнение программы продолжается с оператора, следующего за оператором NEXT. Если же новое значение управля-
ющей переменной не превосходит конечного значения, то управление передается оператору, следующему за оператором FOR, т.е. на повторное выполнение цикла. После завершения цикла управляющая переменная равна последнему значению, увеличенному на шаг приращения. Возможно, что шаг <0, но тогда начальное значение будет больше чем, конечное значение.
Пример 8: Заполнить одномерный массив из пятнадцати элементов целыми случайными числами, значения которых лежат в интервале от 35 до 120, найти количество отрицательных элементов и их сумму.
DIM В(15)
SUM=0: KOL=0
FOR I=1 TO 15
В(I)=INT(RND*155)-35
IF B(I)<0 THEN SUM=SUM+B(I): KOL=KOL+1
NEXT I
В этом примере операторы присваивания SUM=0 и KOL=0 служат для задания начальных значений суммы и количества отрицательных элементов.
Циклы могут быть вложенными один в другой. Обязательное условие вложения циклов: цикл вложенный (внутренний) должен целиком помещаться внутри внешнего цикла.
FOR X=A TO B STEP H
...................
FOR Y=С TO D STEP N
……………
NEXT Y
……………
NEXT X
Циклы с предусловием начинается оператором WHILE:
WHILE_числовое выражение
Операторы тела цикла
WEND
Числовое выражение любое числовое выражение. Заканчивается выполнение цикла с предусловием оператором WEND, который задается без операндов. При выполнении цикла с пред-
условием, вычисляется значение выражения в оператореWHILE. Если это значение «истина», то выполняются операторы цикла, следующие за оператором WHILE, до тех пор, пока не будет встречен оператор WEND. После этого управление передается оператору WHILE. Работа цикла будет завершена тогда, когда логическое выражение в операторе WHILE будет «ложь», в этом случае управление будет передано оператору, следующему за оператором WEND.
Пример 9: Вычислить функцию y=sin(x) при изменении x от 0,1 до 2 с шагом 0,01, найти значение х, соответствующее максимуму функции на заданном интервале.
X=0.1
MAX= - 1000
XMAX=0.1
WHILE X<=2
Y=SIN(X)
IF Y>MAX THEN MAX=Y: XMAX=X
PRINT X, Y
X=X+0.01
WEND
PRINT MAX, XMAX
END
Циклы с постусловием начинается оператором REPEAT:
REPEAT
Операторы тела цикла
UNTIL_числовое выражение
Числовое выражение любое числовое выражение. При выполнении цикла c постусловием, сначала выполняются операторы тела цикла и вычисляется значение выражения в операторе UNTIL. Если это значение «ложь», то выполняются операторы цикла, следующие за оператором REPEAT, до тех пор, пока не будет встречен оператор UNTIL. Работа цикла будет завершена тогда, когда логическое выражение в операторе UNTIL будет ««истина», в этом случае управление будет передано оператору,
следующему за оператором UNTIL.
Пример 10: Вычислить функцию y=sin(x) при изменении x от 0,1 до 2 с шагом 0,01, найти значение х, соответствующее максимуму функции на заданном интервале.
X=0.1
MAX= - 1000
XMAX=0.1
REPEAT
Y=SIN(X)
IF Y>MAX THEN MAX=Y: XMAX=X
PRINT X, Y
X=X+0.01
UNTIL X>2
PRINT MAX, XMAX
END
Циклы могут быть вложенными друг в друга в любом сочетании, но внутренние циклы должны целиком помещаться внутри внешних циклов. Если вложены друг в друга два цикла FOR…NEXT, то они должны иметь различные управляющие переменные.
Примером использования вложенных циклов можно считать работу с двухмерными массивами (матрицами).
Пример 11: Задать значения элементов двумерного массива и распечатать его. В данном примере внешний цикл имеет управляющую переменную I, внутренний цикл имеет управляющую переменную J.
DIM А(5,8)
FOR I=1 TO 5
FOR J=1 TO 8
А(I,J)=INT(RND*200)-50
PRINT А(I,J);
NEXT J
NEXT I
END
3.4. Прекращение выполнения и
завершение программы
Для прекращения выполнения программы используется оператор STOP, который не содержит операндов. Этот оператор
рекомендуется также использовать при отладке программы.
По оператору END закрываются все файлы. Наличие этого оператора в конце программы не является обязательным, если не используются подпрограммы. В случае его отсутствия Qbasic считает, что программа заканчивается после последней строки. Но END весьма полезен при необходимости прервать выполнение программы. Оператор END может и не быть последним оператором программы. Текст может продолжаться и после данной команды, но выполнение ее будет прервано сразу при встрече END.
3.5. Подпрограммы
Часто при выполнении программы в разных ее местах должен выполняться один и тот же алгоритм, который записывается группой операторов. Эту группу операторов можно оформить отдельно в виде подпрограммы и передавать ей управление по мере необходимости. В одном программе может быть несколько подпрограмм, подпрограмма в свою очередь может обращаться к другой подпрограмме.
Передачу управления подпрограмме выполняют операторы GOSUB:
GOSUB_номер строки
Для возврата из подпрограммы используется оператор:
RETURN
Номер строки метка строки, содержащий первый оператор подпрограммы. По оператору GOSUB управление передается подпрограмме. Возврат к продолжению выполнения программы осуществляется по оператору RETURN, который является последним оператором в подпрограмме. Возврат осуществляется на оператор, следующий за оператором GOSUB. При использовании подпрограмм наличие оператора END в основной программе обязательно.
Пример 12: Задать и распечатать значения элементов в матрицах F(5,3) и G(6,7).
DIM A(6,7)
PRINT “ MASSIV F(5,3)”
N=5: M=3
GOSUB 100
PRINT “ MASSIV G(6,7)”
N=6: M=7
GOSUB 100
END
100: REM подпрограмма
FOR I=1 TO N
FOR J=1 TO M
А(I,J)=INT(RND*200)-50
PRINT A(I,J);
NEXT J: PRINT: NEXT I
RETURN
3.6. Организация ввода.
Оператор INPUT позволяет выполнять ввод с клавиатуры данных любого типа и присвоение их значений переменным, объявленным в программе. Данные, вводимые с клавиатуры последовательно присваиваются переменным и элементам массивов, которые заданы в операторе INPUT. Общий вид оператора:
INPUT [;][«подсказка»;]переменная[,переменная]
Подсказка строковая константа, которая будет выведена на экран с вопросительным знаком в конце, задается для пояснения, какие данные требуется ввести. В случае отсутствия операнда подсказка на экран выводится вопросительный знак. Переменная имя переменной или элемента массива, которым будет присвоено введенное значение. Символ «;» после слова INPUT отменяет перевод курсора на следующую строку после завершения ввода данных, последующий вывод данных на экран будет располагаться на той же строке.
Пример 13:
INPUT «Размерность массива»; N
После выполнения этой команды на экране в окне Run появится знак «?». Для продолжения выполнения программы, частью которой является этот оператор, необходимо с клавиатуры ввести значение переменной N и нажать ENTER.
Оператор READ позволяет присвоить значение переменной с помощью оператора READ. Этот оператор является парным, то есть он может использоваться только вместе с оператором DATA.
При написании программы с помощью оператора DATA можно описать список постоянных значений, используемых в этой программе, по оператору READ эти значения из списка присваиваются переменным или элементам массивов. Общий вид этих операторов
DATA_ константа [,константа]…
READ_ переменная [,переменная]…
Константа любая константа, причем строковые константы можно не заключать в кавычки. Переменная это имя переменной или элемента массива. Операторы DATA задаются в любом месте программы независимо от места задания READ. При выполнении оператора READ константы последовательно выбираются из списка в операторе DATA, которых может быть несколько, и присваиваются переменным и элементам массивов, указанным в операторе READ. Очередной оператор READ выбирает константы не с начала списка, а с места в списке, на котором остановился предыдущий оператор READ. Неиспользованные константы из списка DATA игнорируются, а случай, когда списка констант недостаточно для всех переменных оператора READ, является ошибкой.
Оператор RESTORE позволяет несколько раз прочитать одни и те же данные из блока данных. Он имеет формат:
RESTORE номер строки или метка
где номер строки должен указывать на оператор DATA.
Если не указан номер строки, следующий после RESTORE, оператор READ начнет чтение с первой константы блока данных. Блок данных удобен в тех случаях, когда несколько раз используется одна и та же последовательность констант.
Пример 14: DATA 3, 4, 23 ,”ABC”
READ A, D
READ F(6), IM$
После выполнения этих операторов будут выполнены следующие присвоения: А=3; D=4; F(6)=23; IM$=ABC
Оператор RANDOMIZE служит для генерации случайных чисел. Он имеет вид:
RANDOMIZE_база
Если база не задана, то выполнение программы приостанавливается, на экран выдается запрос о задании базы генерации. Этот оператор и функция генерации случайных чисел RND широко используются при задании элементов массивов (см. пример 8). Возможно использование функции RND в программе без оператора RANDOMIZE, тогда при неоднократном выполнении программы будет выдаваться одна и та же последовательность случайных чисел.
3.7. Организация вывода.
В общем случае процесс выполнения программы можно разбить на три этапа: ввод исходных данных, их обработка и вывод результатов. Результаты работы программы можно вывести на экран монитора, на принтер или записать в специально организованный файл.
Вывод данных.
Оператор PRINT обеспечивает вывод числовых и строковых данных на экран дисплея. Числовые данные отображаются на экране в двух формах:
- в экспоненциальной форма или в форме с порядком, например, число 0,25 будет представлено в виде 25Е-2;
- в форме десятичных чисел с десятичной точкой вместо запятой: 0.549.
Форма отображения зависит от диапазона их значений. Строковые данные выводятся на экран без преобразования. Оператор PRINT USING осуществляет вывод данных по шаблону, заданному программистом.
На экран дисплея информация выводится строками длиной 80 символов. Количество строк, размещающихся на экране, равно 25. Строки нумеруются сверху вниз от 1 до 25, а столбцы слева направо от 1 до 80. Положение символа на экране задается номерами строки и столбца, на пересечении которых он находится.
Общие правила вывода данных на экран. Вывод информации на экран начинается с позиции, в которой находится курсор. Данные заполняют строку слева направо, курсор при этом автоматически продвигается. Чтобы обеспечить возможность вывода данных, начиная с любой позиции экрана, используется оператор:
LOCATE_[строка][,[столбец][,[курсор][,[начало][,конец]]]]
Строка числовое выражение от 1 до 25, задающее номер строки, в которую будет перемещен курсор. Столбец числовое выражение, задающее номер столбца, в который будет перемещен курсор. Курсор целое число 1 (курсор будет виден на экране) или 0 (курсор будет невидимым). Начало, конец числовые выражения, задающие размеры курсора. Основное назначение данного оператора перемещение курсора в позицию, начиная с которой будет осуществляется вывод данных.
Для установки текстового или графического режима работы дисплея используется оператор:
SCREEN_режим.
Значение режим определяет текстовый (0) или графический (1, 2 или 9) режимы работы с выводимыми результатами.
Оператор PRINT предназначен для вывода на экран значений, перечисленных в списке выражений:
PRINT_[выражение[,выражение]]…[;]
Выражение любое числовое или строковое выражение.
Для разделения выражений используют запятую, пробел или точку с запятой. Позиция первого выводимого данного определяется положением курсора, а последующих данных знаком пунктуации, заданным перед соответствующим элементом. Так запятая вызывает размещение очередного элемента с первой позиции следующей зоны (по умолчанию строка разбита на зоны по 14 позиций каждая). Если элементу предшествует пробел или точка с запятой, то он размещается сразу после предыдущего. Если очередное значение не помещается в текущей строке, то оно будет продолжено с начала следующей строки. Точка с запятой, указанная в конце оператора, отменяет переход на следующую строку после завершения вывода данных.
Вместо ключевого слова PRINT в операторе можно использовать знак «?». Если при работе в среде Qbasic 4.5 вместо слова PRINT ставить знак вопроса "?", а затем нажать Enter, то слово PRINT само появится на экране.
Просто оператор PRINT без текста и знаков означает переход в следующую строку.
В результате выполнения оператора значения выражений, указанные в списке выражений, выводятся на экран. Если список выражений опущен, то выводится пустая строка.
Оператор PRINT TAB устанавливает позицию при выводе данных. Могут использоваться встроенные функции TAB и SPC, которые задаются в списке выражений. Эти функции имеют формат TAB(n) осуществляет переход к n-ой позиции строки, SPC(n) выводит на экран n пробелов.
Пример 15: Вывести на экран значения переменной Х с первой позиции и тригонометрических функций Sin(X) с 15-ой позиции, Cos(Х) с 30-ой позиции.
PRINT SPC(2); ”X”; TAB(19); ”SIN”; TAB(34); ”COS”
FOR X=0.1 TO 1.5 STEP 0.1
PRINT X; TAB(15); SIN(X); TAB(30); COS(X)
NEXT X
Оператор PRINT USING позволяет управлять формой представления выводимых данных, во всем остальном он идентичен оператору PRINT. Оператор имеет формат:
PRINT_USING шаблон [_шаблон]…; выражение [,выражение]…[;]
Шаблон - строковая константа или переменная, определяющая форму вывода значений. В числовом шаблоне используются символы «#» для задания количества символов в числе и знак «.» для задания положения десятичной точки. Выражение - любое числовое или строковое выражение.
Например:
PRINT USING”####.###”;Y
Для вывода данных на принтер слово PRINT надо заменить на ключевое слово LPRINT. Программа будет выполнена правильно, и вся информация, предназначенная для вывода на экран, будет передана на устройство печати.
3.8. Графика языка.
Построение графиком можно осуществить и в среде Qbasic. Существуют специальные операторы графики и функции, позволяющие строить изображения на экране дисплея.
Оператор задания графического режима SCREEN рассматривался в предыдущем разделе.
С помощью графических операторов в Qbasic можно задать цвета фона и самого рисунка, отобразить точки в любом месте экрана по заданным координатам, построить отрезки прямой любой длины и направления, прямоугольники и окрашенные прямоугольники, окружности, эллипсы и дуги.
С помощью графических операторов в Qbasic можно построить любые графики, гистограммы, круговые диаграммы.
3.9. Работа с файлами.
Файлы с данными (результатами работы программы) не следует путать с файлами, в которых записаны тексты программы. Файлы, содержащие программы на Бейсике обычно имеют расширение BAS, а файлы с результатами DAT. В зависимости от способа организации данных различают файлы с последовательным доступом (данные размещаются в порядке их поступления в файл) и произвольным доступом (доступ к данным может быть осуществлен в любом порядке, независимо от того, в какой последовательности данные были помещены в файл). Работа с файлами с произвольным доступом в методических указаниях не рассматривается. Обработка файлов с данными сводится к выполнению четырех основных операций: 1) открытие файла; 2) чтение данных из файла или 3) запись данных в файл; 4) закрытие файла.
Открытие файла осуществляется с помощью оператора OPEN, который имеет формат:
OPEN_спецификация файла_[FOR_тип обработки] AS[#]номер файла_[LEN=длина записи]
Спецификация файла определяет имя файла и устройство, на котором он расположен. Номер файла задается целочисленным выражением, которое может принимать значение от 1 до 15. Заданный номер должен использоваться при всех последующих обращениях к файлу в операторах ввода-вывода. Тип обработки определяет организацию данных и указывает направление передачи данных (ввод или вывод), может принимать следующие значения: INPUT - последовательный файл для ввода данных, OUTPUT последовательный файл для вывода данных, APPEND последовательный расширяемый файл (используется только для вывода). Если тип обработки не указан, то предполагается файл с произвольным доступом. Длина записи задается целочисленным выражением, операнд используется только при открытие файла с произвольным доступом.
Для записи данных в последовательный файл используются операторы PRINT и PRINT USING. В этом случае они будут иметь формат:
PRINT_#номер файла,[выражение[,выражение]]…[;]
PRINT_#номер файла,_USING_шаблон[_шаблон]…; вы-
ражение [,выражение]…[;]
После завершения работы с файлом необходимо его закрыть оператором CLOSE:
CLOSE_[[#]номер файла[,[#]номер файла]…]
В результате выполнения этого оператора закрываются все перечисленные в операторе файлы, если не один операнд не указан, то будут закрыты все открытые к этому моменту файлы.
Пример 16: 1) OPEN_c:\rez.dat”_for_output_as#1
этот оператор открывает файл с именем rez и расши-рением dat на диcке С для ввода данных;
2) PRINT #1,NOM(I)
этот оператор записывает в этот файл I-ый элемент массива NOM.
Для того чтобы прочитать данные последовательно из файла используется операторы:
INPUT_#номер файла[,переменная][,переменная]
LINE_INPUT_#номер файла, переменная
При выполнении этих операторов символы последовательно выбираются из файла и интерпретируются как строковое или числовое значение. Оператор LINE INPUT вводит только строки символов. При чтении файла с диска необходимо предусмотреть проверку конца файла с помощью функции EOF, которая имеет формат:
EOF(номер файла)
Значение этой функции может быть использовано в операторе IF для принятия решения о дальнейшем ходе выполнения программы.
Пример 17:
OPEN “a:\dannye.dat” FOR INPUT AS #2
20 INPUT #2,G$
PRINT G$
IF EOF(2) THEN CLOSE #2
GOTO 20
В результате выполнения этих операторов данные символьного типа будут считаны из файла dannye.dat, находящегося на диске а, и выведены на экран монитора.
Информацию, которая была записана в файл в среде Qbasic, можно обрабатывать другими программами, например, системой электронных таблиц Excel. Эта система позволяет достаточно просто строить, редактировать и печатать графики и диаграммы различных типов. Для того чтобы обработать в Excel файл, созданный с помощью программы на Qbasic необходимо:
в меню выбрать команду Файл, в ней команду Открыть;
в появившемся окне открытия файлов выбрать Все файлы и открыть нужный файл;
в появившемся окне «мастер текстов» выбрать команду с разделителем и нажать кнопку Далее;
в появившемся окне выбрать пробел в качестве символа-разделителя и нажать кнопку Далее;
в появившемся окне выбрать общий формат и нажать кнопку ОК
когда файл откроется, выбрать из меню команду Правка, в ней команду Заменить и заменить точки на запятые, т.к. в Excel в качестве разделителя целой и дробной части используется запятая.
Далее можно сохранить полученный файл в формате Excel и выполнить построение необходимых графиков.
4. Базовые алгоритмы.
Существуют некоторые алгоритмы, которые используются при решении практически всех задач данного и других курсов. К ним можно отнести (в скобках указан номер примера, в котором рассмотрен данный алгоритм):
алгоритм вычисления суммы чисел (пример 13);
подсчет количества чисел, удовлетворяющих заданному условию (пример 13);
поиск минимума (примеры 14, 16);
поиск максимума (пример 16);
замена местами содержимого двух ячеек (пример 17).
5. Советы по выполнению задания.
Напишите, что известно и что требуется получить.
Опишите данные, которые будут необходимы при решении: массивы, переменные для циклов и т.д.
Найдите базовые алгоритмы, на которых будет строиться решение.
Пишите алгоритм сначала укрупненными блоками, а затем уже их детализируйте.
При работе на ЭВМ необязательно набирать сразу весь текст программы. Можно разбить программу на логически завершенные блоки и отлаживать ее постепенно.
Никогда не запускайте программу сразу на выполнение. Помните основное правило: сохраните текст, а затем включите режим отладки. Продумайте список переменных, за значениями которых необходимо наблюдать, т.е. осуществлять вывод их значений на экран дисплея или на печать.
Помните, что необходимо проверить все ветви программы, моделируйте при отладке программы различные ситуации. Цель тестирования убедиться в том, что программа функционирует, как следует, и решает поставленную задачу.
6.1. Задачи на вычисление функций и сумм.
1. Вычислить функцию:
при изменении от 0 до с шагом .
PRINT : PRINT : PRINT
PI = 3.1416
FOR X = 0 TO 2 * PI STEP .2 * PI
Y = 1 - X
Y1 = COS(X)
IF Y = 0 OR Y1 = 0 THEN PRINT "DEL. NA 0": GOTO 10
Z = SIN(2 * X) / Y + 1 / Y1 ^ 2
PRINT USING " X=#.##"; X;
PRINT USING " Z=###.###"; Z
10 : NEXT X
X=0.00 Z= 1.000
X=0.63 Z= 4.083
X=1.26 Z= 8.131
X=1.88 Z= 11.197
X=2.51 Z= 2.160
X=3.14 Z= 1.001
X=3.77 Z= 1.180
X=4.40 Z= 10.156
X=5.02 Z= 10.783
X=5.65 Z= 1.739
X=6.28 Z= 1.001
2. Вычислить сумму: .
CLS
PRINT : PRINT : PRINT
S = 0
FOR I = 1 TO 25
S1 = 0
FOR J = 1 TO I
IF I ^ 2 - J <> 0 THEN GOTO 20
PRINT " DELENIE NA 0 PRI I="; I; " I J="; J: GOTO 10
20 : Y = (I ^ 2 + J ^ 3) / (I ^ 2 - J): S1 = S1 + Y
10 : NEXT J
S = S + S1
NEXT I
PRINT " S="; S
DELENIE NA 0 PRI I= 1 I J= 1
S= 1972.683
6.2.1.Задание и распечатка массивов.
1. Элементы массива задаются с клавиатуры:
CLS
DIM A(10)
FOR I = 1 TO 10
INPUT A(I);
NEXT I
PRINT : PRINT : PRINT: PRINT " MASSIV A(10) "
PRINT : PRINT " ";
FOR I = 1 TO 10
PRINT A(I); : NEXT I
? 2 ? 45 ? 67 ? 34 ? 16 ? 29 ? 30 ? 45 ? 16 ? 13
MASSIV A(10)
2. Элементы массива задаются формулой .
DIM B(20)
PRINT : PRINT : PRINT: PRINT " MASSIV B(20) "
PRINT : PRINT " ";
FOR I = 1 TO 20
Y = I ^ 2 - 4
IF Y <= 0 THEN B(I) = 10: GOTO 10
B(I) = (I - 2) / Y^0.5
10 : PRINT " B(";: PRINT USING "##"; I;
PRINT ") =";: PRINT USING "##.##"; B(I);
IF I MOD 4 = 0 THEN PRINT : PRINT " ";
NEXT I
MASSIV B(20)
B( 1)=10.00 B( 2)=10.00 B( 3)= 0.45 B( 4)= 0.58
B( 5)= 0.65 B( 6)= 0.71 B( 7)= 0.75 B( 8)= 0.77
B( 9)= 0.80 B(10)= 0.82 B(11)= 0.83 B(12)= 0.85
B(13)= 0.86 B(14)= 0.87 B(15)= 0.87 B(16)= 0.88
B(17)= 0.89 B(18)= 0.89 B(19)= 0.90 B(20)= 0.90
3. Элементы массива вводятся из блока DATA:
DIM C(20)
DATA 12,23,24,75,45,15,18,31,45,86
DATA 2,34,90,54,64,23,27,45,72,74
PRINT : PRINT : PRINT
PRINT " MASSIV C(20) "
PRINT : PRINT " ";
FOR I = 1 TO 20
READ C(I)
PRINT USING "####"; C(I);
IF I MOD 10 = 0 THEN PRINT : PRINT " ";
NEXT I
MASSIV C(20)
12 23 24 75 45 15 18 31 45 86
2 34 90 54 64 23 27 45 72 74
4. Элементы массива задаются случайными числами:
DIM K(30)
PRINT : PRINT : PRINT: PRINT " MASSIV K(30) "
PRINT : PRINT " ";
FOR I = 1 TO 30
K(I) = INT(RND * 200 - 75)
PRINT USING "#####"; K(I);
IF I MOD 10 = 0 THEN PRINT : PRINT " ";
NEXT I
MASSIV K(30)
66 31 40 -18 -15 79 -73 77 87 66
-66 7 97 83 -1 117 99 -64 114 -3
29 78 -65 43 18 -16 49 54 -23 -20
5. Элементы двухмерного массива ( матрицы ) задаются случайными числами:
DIM D(6,6)
PRINT : PRINT : PRINT: PRINT " MASSIV D(6,6) "
PRINT : PRINT " ";
FOR I = 1 TO 6
FOR J = 1 TO 6
D(I,J) = INT(RND * 200 - 75)
PRINT USING "#####"; D(I,J);
NEXT J
PRINT : PRINT " ";
NEXT I
MASSIV D(6,6)
66 31 40 -18 -15 79
-73 77 87 66 -66 7
97 83 -1 117 99 -64
114 -3 29 78 -65 43
18 -16 49 54 -23 -20
90 89 42 122 107 -30
6.2.2. Операции над элементами массивов.
Нужно отметить, что значения элементов массивов уже заданы и распечатаны.
PRINT: MAX=K(1): IMAX=1
FOR I = 1 TO 30
IF K(I)>MAX THEN MAX=K(I): IMAX=I
NEXT I
PRINT” MAX=”;MAX;” I=”;IMAX
MIN=K(1): IMIN=1
FOR I = 1 TO 30
IF K(I)<MIN THEN MIN=K(I): IMIN=I
NEXT I
PRINT” MIN=”;MIN;” I=”;IMIN
MIN=-73 I= 7
DIM K1(30)
N=0
FOR I = 1 TO 30
IF K(I) MOD 2=0 THEN N=N+1: K1(N)=K(I)
NEXT I
PRINT : PRINT " ";
FOR I = 1 TO N
PRINT USING "#####"; K1(I);
IF I MOD 10 = 0 THEN PRINT : PRINT " ";
NEXT I
PRINT: PRINT” N=”; N
66 40 -18 66 -66 -64 114 78 18 -16
54 -20
N=12
…….
DIM K2(30)
N1=0
FOR I = 1 TO 30
IF K(I) MOD 2<>0 THEN N1=N1+1: K2(N1)=K(I)
NEXT I
PRINT : PRINT " ";
FOR I = 1 TO N1
PRINT USING "#####"; K2(I);
IF I MOD 10 = 0 THEN PRINT : PRINT " ";
NEXT I
PRINT: PRINT” N=”;N1
31 -15 79 -73 77 87 7 97 83 -1
117 99 -3 29 -65 43 49 -23
N= 18
Блок-схема предложенной задачи аналогична блок-схеме предыдущей задачи.
…….
DIM K3(30)
N2=0
FOR I = 1 TO 30
IF K(I) >0 THEN N2=N2+1: K3(N2)=K(I)
NEXT I
PRINT : PRINT " ";
FOR I = 1 TO N2
PRINT USING "#####"; K3(I);
IF I MOD 10 = 0 THEN PRINT : PRINT " ";
NEXT I
PRINT: PRINT” N=”;N2
66 31 40 79 77 87 66 7 97 83
117 99 114 29 78 43 18 49 54
N= 19
…….
DIM K4(30)
N3=0
FOR I = 1 TO 30
IF K(I) MOD 3=0 THEN N3=N3+1: K4(N2)=K(I)
NEXT I
PRINT : PRINT " ";
FOR I = 1 TO N3
PRINT USING "#####"; K4(I);
IF I MOD 10 = 0 THEN PRINT : PRINT " ";
NEXT I
PRINT: PRINT” N=”;N3
66 -18 -15 87 66 -66 117 99 114 -3
78 18 54
N= 13
строке матрицы и его порядковый номер:
…….
FOR I = 1 TO 6
MAX=D(I,1): JMAX=1
FOR J = 1 TO 6
IF D(I,J)>MAX THEN MAX=D(I,J): JMAX=J
NEXT J
PRINT” STROKA ”;I;: PRINT USING” MAX=###”;MAX;
PRINT” J=”;JMAX
NEXT I
STROKA 1 MAX= 79 J= 6
STROKA 2 MAX= 87 J= 3
STROKA 3 MAX=117 J= 4
STROKA 4 MAX=114 J= 1
STROKA 5 MAX= 54 J= 4
STROKA 6 MAX=122 J= 4
…….
MAX=D(1,1): IMAX=1
FOR I = 1 TO 6
IF D(I,I)>MAX THEN MAX=D(I,I): IMAX=I
NEXT I
PRINT” D(“;IMAX;”,”;IMAX;”)=”;MAX;
D( 4 , 4 )= 78
6.3. Задачи на приближенное вычисление
площади фигур, объемов.
1. Вычислить приближенно площадь фигуры, ограниченной функцией и прямой . Отрезок изменения разделить на 10 частей и суммировать площади прямоугольников с основанием и высотой, равной значению функций на середине каждого интервала.
Теперь решим это же уравнение на языке Qbasic.
Преобразуем данные уравнения, приравняв их левые части:
Решаем квадратное уравнение:
CLS
REM A*X^2+B*X+C=0
A = 2: B = -1: C = -2
D = B ^ 2 - 4 * A * C: D = D ^ .5
K1 = (-B + D) / (2 * A): K2 = (-B - D) / (2 * A)
PRINT " КОРНИ УРАВНЕНИЯ K1=";
PRINT USING "##.###"; K1;
PRINT " K2=";
PRINT USING "##.###"; K2
L = K1 - K2
PRINT " ДЛИНА ОТРЕЗКА L=";
PRINT USING "##.###"; L
DL = L / 10
PRINT USING " ДЛИНА ЭЛЕМЕНТАРНОГО ОТРЕЗКА DL=##.###"; DL
REM X0 - КООРДИНАТА НАЧАЛА ОТРЕЗКА ;
REM X1 - КООРДИНАТА КОНЦА ОТРЕЗКА ;
REМ X - КООРДИНАТА СЕРЕДИНЫ ОТРЕЗКА X=(X0+X1)/2 .
REM Y1, Y2 - ВЕЛИЧИНА ФУНКЦИИ НА СЕРЕДИНЕ ОТРЕЗКА.
X0 = K2: S = 0
FOR I = 1 TO 10
X1 = X0 + DL: X = (X0 + X1) / 2
Y1 = X ^ 2 - 3: Y2 = X / 2 - 2
DS = (Y2 - Y1) * DL
S = S + DS: X0 = X1
NEXT I
PRINT " ПЛОЩАДЬ ФИГУРЫ S=";
PRINT USING "##.###"; S
КОРНИ УРАВНЕНИЯ K1= 1.281 K2= - 0.781
ДЛИНА ОТРЕЗКА L= 2.062
ДЛИНА ЭЛЕМЕНТАРНОГО ОТРЕЗКА DL= 0.206
ПЛОЩАДЬ ФИГУРЫ S= 1.468
6.4. Задачи с использованием метода итераций.
6.4.1. Решение систем уравнений.
на отрезке [ 0; 1 ] с точностью
Для определения корней уравнений можно использовать метод итераций. Для этого следует преобразовать уравнения в форму X=f(X):
X0 = 0: E = .1: K = 0
10 : X = 1 - 2 / (3 + SIN(3 - X0))
IF ABS(X - X0) <= E THEN GOTO 20
X0 = X: K = K + 1
IF K > 6 THEN GOTO 20
GOTO 10
20 : PRINT USING" X=#.##"; X
ОТВЕТ: X=0.43
6.4.2. Вычисление корней уравнений.
1. на отрезке [ 0 ; 1 ] с точностью .
CLS
x0 = 0: E = .001
10 : Y = .2 + (COS(x0)) ^ 2 - 1 / (1 - x0 ^ 3) ^ .5
IF Y < E THEN GOTO 20
x0 = x0 + E
IF x0 > 1 THEN GOTO 20
GOTO 10
20 : PRINT " X=";: PRINT USING "##.###"; x0
ОТВЕТ: X= 0.414
2. Y=2-X на отрезке [ 1 ; 2,5 ] с точностью
CLS
X0 = 1: XK=2.5: E = .001
10: Y = 2 - X0
IF Y < E THEN GOTO 20
X0 = X0 + E
IF X0 > XK THEN GOTO 20
GOTO 10
20: PRINT " X=";
PRINT USING”##.###”;X0
ОТВЕТ: X= 1.999
6.5. Вычислить значения определенных
интегралов.
1. Подынтегральная функция =, метод прямоугольников с числом отрезков 50 на интервале интегрирования [ 0 ; 2].
X = 0: S = 0
DX = 2 / 50
FOR I = 1 TO 51
Y = (X ^ 4 - 4) / (X + 2) ^ 2
DS = Y * DX: S = S + DS: X = X + DX
IF X >= 2 THEN GOTO 10
NEXT I
10 : PRINT " S=";
S= -.5189601
2. Подынтегральная функция =, метод прямоугольников (по левому краю) с числом отрезков 50 на интервале интегрирования [ 0 ; 2].
X = 0: S = 0: DX = 2 / 50
FOR I = 1 TO 50
Y = X: DS = Y * DX
S = S + DS: X = X + DX
IF X >= 2 THEN GOTO 10
NEXT I
10: PRINT " S="; S
ОТВЕТ: S= 196
3. Подынтегральная функция =, метод прямоугольников (по середине отрезка) с числом отрезков 50 на интервале интегрирования [ 0 ; 2].
X = 0: S = 0
DX = 2 / 50
FOR I = 1 TO 50
X1 = X + DX
Y = (X + X1) / 2
DS = Y * DX
S = S + DS
X = X + DX
IF X >= 2 THEN GOTO 10
NEXT I
10: PRINT " S="; S
ОТВЕТ: S=2
4. Подынтегральная функция =, метод трапеций с числом отрезков 50 на интервале интегрирования [ 0 ; 2].
X = 0: S = 0
DX = 2 / 50
FOR I = 1 TO 50
X1 = X + DX
Y = X: Y1 = X1
DS = (Y + Y1) / 2 * DX
S = S + DS
X = X + DX
IF X >= 2 THEN GOTO 10
NEXT I
10: PRINT " S="; S
ОТВЕТ: S= 2
Приложение 1
Список ошибок периода выполнения программы
При обнаружении ошибки во время компиляции управление передается текстовому редактору и курсор устанавливается в ошибочную строку. После прочтения сообщения следует нажать любую клавишу, исправить ошибку и повторить компиляцию. Структура сообщения об ошибке имеет вид:
ERROR_номер ошибки: сообщение
Далее приведены наиболее часто встречающиеся сообщения об ошибках с номером ошибки, переводом сообщения и наиболее вероятной причиной ошибки.
Bad file mod (54) неверный режим файла
- попытка вывода в файл, открытый для чтения, или чтения из файла, открытого для вывода.
Bad file name (52) неверное имя файла или номер
- ссылка на номер файла, который не открыт.
Disk full (61) переполнение диска
- обнаружена нехватка памяти на диске во время выполнения оператора print, write, close.
Disk not ready (71) диск не готов
- открыта крышка дисковода или не установлен диск.
Division by zero (11) деление на ноль
- обнаружено деление на ноль или возведение ноля в отрицательную степень, эта ошибка возникает при делении 1 или 1 на 32768.
Duplicate definition (10) повторное определение
- попытка изменить размерность уже объявленного массива оператором DIM
Illegal function call (5) неверный вызов функции
- возникает, когда задан недопустимый параметр оператора или функции, задано слишком большое значение номера цвета или режима, недопустимая арифметическая операция.
Input past end of file (62) чтение после конца файла
- оператором INPUT пытаются читать пустой файл или файл, все данные которого уже прочитаны.
Internal error (51) внутренняя ошибка
- нарушена работа Бейсик-системы.
Out of DATA (4) исчерпан оператор DATA
- выполняется оператор READ, когда все данные в операторах DATA уже прочитаны.
Overflow (6) переполнение
- результат вычисление не может быть представлен числом во внутреннем представлении Бейсика.
Permission denied (70) нет доступа к диску
- попытка выполнить запись на защищенный диск.
RETURN without GOSUB (3) RETURN без GOSUB
- оператор RETURN выполняется без предварительного вызова подпрограммы оператором GOSUB.
Subscript out of range (9) индекс вне границ
- индекс выходит за допустимые границы.
Syntax error (2) синтаксическая ошибка
- в операторе READ строка символов, не представляющая число, присваивается числовой переменной.
Type mismatch (13) несоответствие типов
- недопустимый тип в операторе, функции или выражении.
«=» expected (414) - пропущен знак =
- в зарезервированном слове сделана синтаксическая ошибка.
Приложение 2
Список зарезервированных слов
Зарезервированные слова не должны использоваться в качестве имен переменных.
ABS, AND, ASC, ATN, AUTO, BEEP, BLOAD, BSAVE, CALL, CDBL, CHAIN, CHDIR, CHR$, CINT, CIRCLE, COMMON, CONT, COS, CSNG, CSRLIN, CVD, CVI, CVS, DATA, DATE$, DEF, DEFDBL, DEFINT, DEFSNS, DEFSTR, DELETE, DIM, DRAW, EDIT, ELSE, END, ENVIRON, ENVIRON$, EOF, EQV, ERASE, ERDEV$, ERL, ERR, ERROR, EXP, FIELD, FILES, FIX, FN, FOR, FRE, GET, GOSUB, GOTO, HEX$, IF, IMP, INKEY$, INP, INPUT, INPUT#, INPUT$, INSTR, INT, INTER$, IOCTL, IOCTL$, KEY, KEY$, KILL, LEFT$, LEN, LET, LINE, LIST, LLIST, LOAD, LOC, LOCATE, LOF, LOG, LPOS, LPRINT,LSET MERGE, MID$, MKDIR, MKD$, MKI$, MKS$, MOD, MOTOR, NAME, NEW, NEXT, NOT, OCT$, OFF, ON, OPEN, OPTION, OR, OUT, PAINT, PEEK, PEN, PLEY, PMAP, POINT, POKE, POS, PRESET, PRINT, PRINT#, PSET, PUT, RANDOMIZE, READ, REM, RENUM, RESET, RESTORE, RESUME, RETURN, RIGHT$, RMDIR, RND, RSET, RUN, SAVE, SCREEN, SGN,
SHELL, SIN, SOUND, SPACE$, SPC(, SQR, STEP, STICK, STOP, STR$, STRING, STRING$, SWAP, SYSTEM, TAB(, TAN, THEN, TIME$, TIMER, TO, TROFF, TRON, USING, USR, VAL, VARPTR, VARPTR$, VIEW, WAIT, WEND, WHILE, WIDTH, WINDOW, WRITE, WRITE#, XOR
Содержание
Введение ……………………………………………………….
1. Основные понятия и определения.
1.1. Алгоритм.
1.2. Этапы программирования.
2. Язык программирования Quick Basic.
2.1. Среда Qвasic.
2.2. Имена.
2.3. Основные элементы языка программирования Qbasic
2.3.1.Алфавит.
2.3.2. Типы данных.
2.3.3. Некоторые директивы языка.
2.3.4. Выражения.
2.3.5. Функции.
3. Операторы.
3.1. Оператор присваивания.
3.4. Прекращение выполнения и завершение программы/
3.5. Подпрограммы/
3.6. Организация ввода.
3.7. Организация вывода.
3.8. Графика языка.
3.9. Работа с файлами.
4. Базовые алгоритмы/
5. Советы по выполнению задания.
6. Примеры решения задач.
6.1. Задачи на вычисление функций и сумм.
6.2.Задачи с использованием массивов.
6.2.1. Задание и распечатка массивов.
6.2.2. Операции над элементами массивов.
6.3. Задачи на приближенное вычисление площади фигур,
объемов.
6.4. Задачи с использованием метода итераций.
6.4.1. Решение систем уравнений.
6.4.2. Вычисление корней уравнений.
6.5. Вычислить значения определенных интегралов.
Список литературы
Приложение 1
Приложение 2
Список литературы
Мельникова О.И., Бонюшкина А.Ю. Начала программирования на языке Qbasic. - М., «ЭКОМ», 2000. -303с.
Новичков В.С. Пылькин А.Н. Начала программирования на языке Qbasic: Учеб. пособие для вузов.- Изд.: «Горячая линия Телеком», 2007. - 268
Мамонтов Д.В. QBasic в задачах и примерах. Санкт-Петербург: «ПИТЕР», 2005. -256 с.
Бобровский С. Программирование на языке QBASIC для школьников и студентов. - М., «Инфорком-Пресс», 1999, -208 с.
Зильднер Г. QuickBASIC для носорога. - М., "ABF", 1994. -482с.
Сафронов И. Бейсик в задачах и примерах.
- Санкт-Петербург, "Сbhv", БХВ-Петербург, 2001. - 214с.
Глинский Я.Н., Анохин В.Е., Ряжская В.А., Бейсик. QBasic и Visual Basic. М.:"ДиаСофт", 2002, - 192 с.
Анеликова Л.А. Алгоритмика в теории и практике: примеры решения задач на базе классического языка программирования Qbasic .- М.: «Солон-Пресс», 2007, - 69 с.
Вик Курилович. Информатика: Языки Basic. М: «Солон-Пресс», 2005 г., - 224 с.
Под ред. Симоновича К. С. Информатика. Базовый курс. Санкт-Петербург: «Питер», 2007. 638 с.
А.Н. Степанов. Информатика. Учебник для ВУЗов. Санкт-Петербург: «ПИТЕР», 2006. 684 с.