По дисциплине Информатика (раздаточный материал)
АЛГОРИТМИЧЕСКОМ
ЯЗЫКЕ БЕЙСИК
Методические указания,
Лабораторный практикум и контрольные задания
по дисциплине Информатика (раздаточный материал)
Алгоритмические языки предоставляют возможность человеку управлять действиями ЭВМ. Существует множество таких языков, среди которых самыми популярными в настоящее время являются языки: Си, Паскаль, Бейсик. Последний является не только “школьным” языком. Его поддержка влиятельным мировым производителем программных продуктов – корпорацией Microsoft и, особенно, распространение этого языка на среду Windows (версия Visual Basic) сделали хрестоматийный Бейсик очень популярным и перспективным языком как начального, так и профессионального уровней.
Ниже мы рассмотрим средства, алгоритмического языка QBasic фирмы Microsoft в объеме, необходимом для программирования несложных процессов и выполнения контрольных работ.
Алфавит языка. В Бейсике разрешены следующие основные символы:
1. Буквы латинского и русского языков (буквы кириллицы могут использоваться только в константах).
2. Цифры.
3. Специальные символы: + плюс, – минус; * умножение, / деление, ^ возведение в степень;
= равно, > больше, < меньше (отношение неравенства отображается двумя значками <>);
. точка,, запятая, () скобки, " кавычки,; точка с запятой,: двоеточие и некоторые другие.
Переменные. Все, используемые в программе, переменные снабжаются латинскими именами. Имя должно начинаться с буквы, и может содержать до сорока букв и цифр. Программист выбирает имена произвольно, но таким образом, чтобы они указывали на смысл переменной. За каждой переменной компьютер закрепляет ячейку памяти. Большие и маленькие буквы в именах и операторах воспринимаются компьютером одинаково, т.е. буквы W и w обозначают одну и ту же переменную. Имена переменным лучше давать, сообразуясь со смыслом физических величин, которые они обозначают. Так будет легче ориентироваться в тексте программы.
Примеры имен: X, y, A24, VES, Netto, MAXIMUM.
Типы переменных. Переменные могут быть следующих типов.
Целое число (Integer) от -32768 до +32768.
Длинное целое (Long) от -2147483648 до +2147483647.
Вещественное обычной точности (Single) в приблизительном диапазоне ±1038.
Вещественное двойной точности (Double) в приблизительном диапазоне ±10308.
Символьный тип (String) – до 32567 символов.
В тексте программ типы переменных указываются специальным оператором или специальным символом сразу после имени переменной. Целый тип обозначается знаком %, длинный целый – &, вещественный –!, вещественный двойной точности – #, символьный – $. Например: A%, B&, C!, D#, E$. Если тип не указан явно, он считается вещественным обычной точности. Таким образом, переменные C! и C являются одной и той же переменной обычной точности.
Выражения. Выражения используются для вычисления формул. Участники выражения соединяются знаками операций, которые были приведены выше. Выражения строятся по определенным правилам, учитывающим необходимость записи формул в строку. Вычисления в них реализуются слева направо в последовательности: 1. возведение в степень, 2. умножение-деление, 3. сложение-вычитание. Порядок действий может быть изменен скобками.
Следующие два примера иллюстрируют правила построения выражений.
Формулы в обычной записи: Выражения на Бейсике:
XC+2.5^H/(6*K)
F4/(B–3)+(C*B/(TM–5))*8.4
Кроме привычных математических операций (сложение, вычитание и т.д.) в языке имеется специальная операция вычисления модуля MOD. Она имеет следующий формат
üчисло1 MOD число2
Здесь число1 делится на число2. Результатом остаток от деления. Примеры: 5 MOD 2=1; 2 MOD 6=2.
И, конечно, Бейсик располагает рядом математических функций. Вот некоторые из них.
üSIN(число) – синус угла, заданного в радианах.
üCOS(число) – косинус угла, заданного в радианах.
üTAN(число) – тангенс угла, заданного в радианах.
üATN(число) – арктангенс числа.
üLOG(число) – натуральный логарифм числа.
üABS(число) – абсолютное значение числового выражения. Пример: ABS(–6)=6.
üSGN(число) – функция, возвращающая знак числа. Если число положительно, возвращается +1, если
равно нулю – ноль, если отрицательно – минус 1. Примеры: SGN(12)=1; SGN(0)=0; SGN(–13.4)=–1.
üFIX(число) – усечение числа до целого. Примеры: FIX(1.2)=FIX(1.9)=FIX(1.5)=1; FIX(–1.2)=FIX(–1.5)=–1.
üEXP(число) – основание натурального логарифма в степени аргумента – eчисло.
üSQR(число) – квадратный корень числа.
1. ПРОСТЕЙШИЕ Операторы языка
Оператор является основной единицей программы и выполняет какое-то элементарное действие. Во многих версиях Бейсика операторы в программе нумеруются. В QBasic, однако, сплошная нумерация не обязательна. При задании формата оператора символами [ ] будем ограничивать необязательную часть оператора.
Оператор присваивания. Формат оператора:
üпеременная=выражение
Такая запись означает, что выражение, стоящее справа, вычисляется и его результат присваивается переменной, стоящей слева.
Примеры операторов: Z=2, A=3.5+EXP(8), S=X^4+Y/2.
Присваивание не является равенством в обычном смысле. Справа и слева от знака “=” можно указывать одну и ту же переменную, например: М=М+2, X=X/3. Эти выражения следует понимать как реализацию так называемых рекуррентных соотношений, то есть новое содержимое переменной М будет равно старому, увеличенному на 2, и новое X будет равно старому, деленному на 3. В алгебре для записи такого рода выражений используются индексы, указывающие последовательность действий. Например Мt+1=Мt+2.
По обе стороны равенства могут стоять переменные разных типов. Но если слева от знака равенства – целочисленная переменная, а справа получено вещественное число, то его дробная часть будет отброшена. Так, если М целочисленная переменная и A=2, то после вычислений в операторе М=A*0.2+0.5 получим не М=0.9, а М=0.
Присвоение может осуществляться и другим образом – с помощью пары операторов
üDATE список_констант
üREAD список_переменных
Например, операторы
DATE 2, 3.5, 100
READ x, y, z
соответствуют следующим операторам присваивания: x=2, y=3.5, z=100.
Использовать эту пару операторов удобно при необходимости вводить большое число констант.
Оператор перестановки. Часто возникает необходимость в перестановке значений переменных. Так, если нужно поменять значения X и Y, следует записать три оператора: A=X, X=Y, Y=A. Здесь понадобилась дополнительная “транзитная” переменная A, в которой временно запоминается значение X.
Оператор
üSWAP переменная1, переменная2
позволяет выполнить обмен значений сразу. Например: SWAP X,Y
Наше общение с компьютером имеет характер переписки. Мы пишем, он читает. Он пишет, читаем мы. Эти действия реализуются следующими специальными операторами ввода-вывода.
Оператор вывода. Для просмотра и анализа результатов вычислений необходимо вывести их на внешний носитель – бумагу или экран дисплея. Для этой цели используется следующий оператор.
üPRINT [список_выводимых_переменных]
или? [список_ выводимых_переменных]
Вопросительный знак может заменять слово PRINT, что экономит время ввода программы. Например, оператор:
PRINT a, m читается так – “Печатать переменные A, М”.
Оператор PRINT может вообще использоваться без аргументов. Тогда при выводе будет формироваться только пустая строка.
В оператор вывода могут включаться не только переменные, но константы и целые выражения. Например, если X=12, а Y=100, то применение оператора
? "СУММА=" x+y
даст следующий результат: СУММА=112
При выводе данных имеет значение, какой разделительный знак использован для перечислении переменных. Если используется точка с запятой или пробел, следующая переменная будет выведена непосредственно за предыдущей. Если запятая – следующая переменная будет выведена с начала следующей зоны вывода. Бейсик разделяет каждую строку вывода на зоны по 15 символов. Это означает, что первое выводимое значение займет колонки с 1 по 15, второе – с 16 по 30, третье с 31 по 45 и т.д.
Если необходимо управлять положением и разрядностью выводимых данных, следует использовать оператор
üPRINT USING шаблон; список,_выводимых_переменных
Здесь шаблон содержит символы, определяющие эти параметры. Символ “#” в шаблоне указывает на то, что в этой позиции будет выведена цифра. Символ “. ” определяет место десятичной точки. Например, положим, что X=2539.23745. Оператор
PRINT USING "######.##"; x
выведет число 2539.24, которому предшествуют два пробела, поскольку под целую часть числа отводиться 6 позиций, а фактически их 4. Дробная часть округляется до двух разрядов.
Оператор ввода. Исходные данные, обрабатываемые программой, можно задавать оператором присваивания. Пусть нужно вычислить площадь круга S=2ПR2. Если задать непосредственно в программе значение радиуса окружности, например оператором R=5, то программа будет вычислять площадь только такой окружности. Если нужно вычислить значение S с иным радиусом, придется изменить оператор непосредственно в программе. Это очень неудобно, поскольку пользователь программы не имеет квалификации и возможности изменять что-нибудь в программе. Необходимо сделать так, чтобы результаты вычислений зависели не от текста программы, а только от данных. Для этого имеется оператор чтения данных вида:
üINPUT [приглашение;/,] список_вводимых_переменных
где приглашение – необязательная символьная константа, указывающая, что именно нужно вводить. Если после приглашения указана точка с запятой, после приглашения будет выведен вопросительный знак. Если запятая – нет.
Если список переменных содержит более одной переменной, вводимые значения следует разделять запятыми. Число вводимых данных по количеству и типу должно соответствовать списку переменных. По завершении ввода всех переменных для данного оператора INPUT следует нажать клавишу ENTER. Если ввод был осуществлен неверно, ПК выдаст сообщение “Redo from start” о необходимости его повторить.
Пример: INPUT "Введите переменные R и L"; r, l
Дословно оператор интерпретируется следующим образом: “Читать в память ЭВМ, введенные с клавиатуры, переменные R и L”. При этом на экране сначала будет выведено приглашение вида “Введите переменные R и L?”
Оператор завершения END (“конец”) завершает выполнение программы. Он может находиться в любом месте программы. Таких операторов может быть несколько в случае, если предполагается завершение программы не только в ее конце. Присутствие END в конце программы необязательно, поскольку после выполнения последнего оператора, она все равно заканчивается.
Комментарии. Написанная программа спустя некоторое время даже автору кажется малопонятным набором символов. Для облегчения понимания программы в нее вставляются комментарии – тексты, поясняющие суть процессов и не влияющие на ее исполнение. Такие тексты должны начинаться со знака апостроф – '.
Оператор очистки CLS освобождает экран от информации и устанавливает курсор в его левый верхний угол.
üCLS
@ Задачи для самостоятельного решения.
1. Пусть известны координаты вершин треугольника X1,Y1; X2,Y2; X3,Y3. Найти: периметр треугольника P и его площадь S. Треугольник лежит на длинной стороне (D).
2. Пусть некоторый процесс начался в H1 часов, Min1 минут, а закончился, когда было H2 часов и Min2 минут. Вычислить длительность этого процесса (в часах HD и минутах MinD). Считаем, что процесс идет внутри одних суток.
Эти и другие задания “для самостоятельного решения” являются также материалом для лабораторных работ
2. Операторы управления
В программе принят естественный порядок выполнения операторов – в той последовательности, в которой они записаны. В случае если этот порядок должен быть нарушен, используются операторы перехода.
Оператор безусловного перехода. Оператор вида:
üGOTO метка_оператора
вынуждает программу выполнять не следующий по порядку оператор, а оператор с указанной меткой. Например, оператор GOTO 25 читается как “Идти к оператору с меткой 25” и передает управление оператору с меткой 25.
В некоторых версиях Бейсика все операторы в программе нумеруются. В QBasic, однако, сплошная нумерация не обязательна, хотя и возможна. Здесь для организации ссылок используются метки (в частном случае это могут быть и номера операторов), которые расставляются слева от тех операторов, на которые есть ссылки. Метками могут быть любые целые числа, идущие в произвольном порядке (не обязательно по возрастанию). Важно только, чтобы они не повторялись.
Оператор анализа условий. Если переход, или какое то другое действие должно быть выполнено в зависимости от некоторых условий, то используется оператор IF. Его формат:
üIF логическое_условие THEN оператор1 ELSE оператор2
Здесь, если заданное условие истинно, выполняется оператор1, если нет – оператор2. Например, оператор
IF a>b THEN? "А больше В" ELSE? "А не больше В"
выводит сообщение о фактическом соотношении переменных A и В.
Фраза ELSE необязательна, т.е. возможен и такой формат
ü IF логическое_условие THEN оператор
Например, следующий оператор читается: “Если X>Z, напечатать Y, иначе идти к следующему оператору (непосредственно под оператором IF)”.
IF x>z THEN?Y
¯ нет
Например
IF a>=b-2 THEN GOTO 40 читается так:
¯ нет
“Если A³B–2, то идти к оператору 40, иначе – к оператору, стоящему ниже ”.
Если требуется осуществить только переход слово THEN можно опустить
ü IF логическое_условие GOTO метка
Другой пример. На практике иногда приходится выяснять, четное число (например, X) или нечетное. Это можно сделать с помощью любого из следующих выражений
IF FIX(x/2)=x/2 THEN "X – четное" ELSE "X – нечетное"
IF x MOD 2=0 THEN "X – четное" ELSE "X – нечетное"
Структурный оператор анализа условий. Здесь уместно напомнить, что всюду, где в синтаксисе команд встречается слово оператор, может быть записано несколько операторов, разделенных двоеточием. Однако этого может оказаться недостаточно – внутрь выражений THEN/ELSE может потребоваться включить много действий и даже целые процессы. В этом случае используется структурный оператор, позволяющий формировать условия, включающие любое число строк программы.
Вид оператора:
üIF логическое_условие THEN
Операторы1
ELSE
Операторы2
END IF
Здесь если логическое условие истинно, выполняются операторы1, если нет – операторы2. Присутствие фразы ELSE и следующих за ней операторов2 необязательно.
Для примера используем предыдущую задачу о сравнении двух чисел A и В.
IF a>b THEN
? "А больше В"
ELSE
? "А не больше В "
END IF
Замечание к нотации. Для придания более наглядного вида программе удобно использовать отступы при вводе “подчиненных” операторов в структурах IF, FOR и других, как показано выше. В данном случае подчиненными операторами по отношению к структуре IF являются операторы печати.
Блок-схема. При разработке алгоритма программы сначала удобно построить его графическое представление – блок-схему. В блок-схеме отдельные операции или группы операций помещаются в прямоугольные блоки. Операции анализа (операторы IF) отображаются ромбами, имеющими два выхода. Выход ДА, соответствует истинному значению, анализируемого условия, НЕТ – ложному. Обычно, блок-схемы обрамляют блоки НАЧАЛО и КОНЕЦ. Мы будем изображать последние только в случае, если возможно разночтение.
Не нашли, что искали? Воспользуйтесь поиском:
|