По алгоритмизации и программированию для 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

По алгоритмизации и программированию для



По алгоритмизации и программированию для

лабораторных и самостоятельных работ

по дисциплине «Информатика»

310200 «Агрономия», 320400 «Агроэкология», 310700 «Зоотехния», 311200 «Технология производства и переработки сельскохозяйственной продукции», 310800 «Ветеринарной медицины», 060500 «Бухгалтерский учет, анализ и аудит», 060800 «Экономика и управление на предприятиях АПК», 062100 «Управление персоналом»

Белгород - 2008

УДК 681.3.06(076. 5)

ББК 32.973-018

М 54

Методические указания и задания по алгоритмизации и

программированию по дисциплине «Информатика»

для выполнения лабораторных и самостоятельных работ для студентов всех специальностей/ Белгород: Изд-во БелГСХА, 2008. - 63 с.

 

Составители: доцент, канд. техн. наук Головкин А.В.;

доцент, канд. экон. наук Кравченко Д.П.;

ст. преп. Павлова О.В.;

ст. преп. Асеева О.В.;

ассистент Тюкова Л.Н.

 

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

 

 

Рецензент:

зав. каф. морфологии факультета ВМ, доцент, канд.биол.наук Литвинов Ю.Н.

 

 

Рекомендовано к изданию методическим советом финансово-учетного факультета БелГСХА

 

 

©Белгородская государственная сельскохозяйственная академия

ВВЕДЕНИЕ

Способность выполнять и составлять алгоритмы занимает центральное место в компьютерной грамотности и играет важную роль при обработке информации и решении задач.

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

Составление алгоритма предполагает осознание процесса решения задачи в целом и может быть полезным в любой практической деятельности.

АЛГОРИТМИЗАЦИЯ ЗАДАЧ

Понятие алгоритма

Алгоритм является основой для написания любого вида программ для ЭВМ.

Термин алгоритм происходит от латинской формы написания имени узбекского математика IX века Мухаммеда ибн Муссы аль-Хорезми, которым впервые были сформулированы правила выполнения арифметических действий с использованием арабских цифр.

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

Виды записи алгоритма

1. Словесно-формульный ( на естественном языке ). Представляет собой описание хода решения задачи в виде последовательности действий, сформулированных словесно или в виде математических формул.

2. Графический (представление хода решения задачи в виде стандартных геомет­рических фи­гур, или, как говорят, в виде блок-схемы или просто схемы).

При этом могут использоваться следующие графические обо­значения:

 

Изображение процесса (операции или группы опе­ра­ций), в ре­зультате которого изменяется значение, форма представле­ния данных.
Изображение предопределенного процесса – использование в алгоритме ранее созданных и отдельно написанных алгоритмов и программ.
Изображение блока «решение» – выбор направления выполнения алгоритма в зависимости от некоторых переменных условий.
  Изображение начала и конца процесса обра­ботки данных.  
Изображение блока ввода-вывода информации, т.е. преобразования в форму, пригодную для обработки (ввод) или отображение результата обработки (вывод).
  Изображение и описание циклических дейст­вий в алгоритме.  

 

3. Табличный (представление алгоритма в виде таблиц или матриц и рас­чет­ных формул).

 

4. На языке программирования - запись алгоритма на алго­ритмическом языке.

 

Типы алгоритмов

1. Линейный. В линейных алгоритмах действия по обра­ботке информа­ции выполняются последовательно.

2. Разветвляющий. Разветвляющиеся алгоритмы всегда со­держат одно или несколько логических условий и, соответ­ственно, несколько вет­вей вычислений. Частный случай разветвления – обход.

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

4. Комбинированный. Это наиболее часто встречающийся тип алго­ритма, в нем могут присутствовать элементы всех названных выше ти­пов алгоритмов.

 

Свойства алгоритма

§ Определенность - каждый шаг алгоритма должен быть точно и однозначно определен.

§ Массовость - алгоритм должен быть пригоден для решения любой за­дачи данного типа.

§ Дискретность - означает возможность разбиения всего алго­ритма на части (фрагментирование) и выполнения его по частям.

§ Инвариантность -означает возможность решения задачи несколькими способами.

§ Результативность - означает, что, будучи примененным к со­ответствую­щему типу задач, алгоритм обязательно приведет к искомому результату. Результатом выполнения алгоритма должна быть одна или несколько выходных величин, зависящих от исходных данных.

§ Конечность – означает требование нормального завершения алгоритма за ко­нечное количество шагов.

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

Для решения одной задачи могут быть разработаны несколько алгоритмов.

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

Языки программирования

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

Алгоритмический язык – это совокупность средств и пра­вил для пред­ставления алгоритма в виде, воспринимаемом компьютером, и его испол­не­ния. Алгоритмический язык, с од­ной стороны, близок к обычному языку и чи­тается как обычный текст, с другой стороны, алгоритм включает в себя мате­матиче­скую символику, числа, обозначения величин и функ­ций, знаки опера­ций, скобки и т.д.

Различают языки программирования высокого уровня и низкого уровня. Каж­дая ко­манда языка программирования низкого уровня представляет со­бой элемен­тарное преобразо­вание данных в регистрах памяти компьютера (сдвиг, пораз­рядное сравнение и т.п.), поэтому процесс создания программ на язы­ках низ­кого уровня является весьма трудоемким и требует спе­циальных знаний. При­мерами языков программирования низкого уровня являются языки АССЕМБЛЕР, Форт и др.

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

В языке программирования высокого уровня каждая команда представ­ляет со­бой микропрограмму (набор элементарных операций для ЭВМ), кото­рая вы­зы­вается так называемым ключевым словом, по­этому пользователь может не вникать во внутренние преобразо­вания данных при выполнении этой ко­манды, а пользуясь лишь ключевыми словами данного алгоритмиче­ского языка. К язы­кам высокого уровня относятся ФОРТРАН, БЕЙСИК, ПАСКАЛЬ, и др.

Ключевые (служебные) слова алгоритмического языка - это слова, смысл и способ употребления которых задан однозначно, раз и навсегда. Их исполь­зо­вание делает запись алгоритма более наглядной, а форму пред­став­ления алго­ритма – единообразной.

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

 

ТРАНСЛЯТОРЫ: КОМПИЛЯТОРЫ И ИНТЕРПРЕТА­ТОРЫ

АЛФАВИТ ЯЗЫКА BASIC.

Константы

В языке Basic используются числовые и символьные константы.

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

Помимо описанных числовых констант в Basic могут быть использованы двоичные, шестнадцатеричные, восьме­ричные константы.

Примеры числовых констант с фиксированной точкой: 195, 43.235, +108, -10.31, 0.475, -. 41 (0 целых можно опускать).

Примеры записи двоичной и 16-ричной константы: 100100, 17FB.

Число с плавающей точкой записывается в виде

± тЕ ± р,

где т — мантисса числа, которой предшествует знак плюс или минус; Е — разделитель мантиссы и порядка; р — порядок числа, которому предшествует знак порядка (плюс или минус).

Мантисса - число с фиксированной точкой, знак мантиссы определяет знак числа. Число считается нормализованным, если мантисса удовлетворяет условию 0,1 ≤ т < 1. При записи числа с плавающей точкой мантисса обязательна.

Порядок может быть только целым. Он определяет положение десятичной точки в числе. Знак плюс в порядке может быть опу­щен.

Примеры:

а) Правильные записи чисел

-0.052Е-04 (-0.052*10-4)

-1Е-17 (-10-17)

-.76Е-03 (-0,00076)

б) Ошибочные записи чисел:

Е5 отсутствует мантисса

1Е отсутствует порядок

-10.3Е1.7 порядок не является целым числом

+21Е+1200 значение числа находится за пределами допустимого диапазона чисел.

Символьная (строковая) константа представляет собой один или несколько символов, заключенных в кавычки. Длина символьной константы не более 256 символов.

Примеры символьных констант:

«Информатика», «Агропарк»,«БелГСХА», «13-Т», «39-23-06», «1/2».

 

Переменные

В языке Basic используются два типа пере­менных: числовые, символьные. Числовая переменная обозначается идентификатором и резервирует в памяти место, в котором будет размещаться числовая константа. Для задания типа числовой переменной используются специальные символы объявления:

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

! - переменная обычной точности

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

Символьные переменные принимают значения символьных констант и резервируют в памяти место для размещения символьных констант. Любое имя переменной, за которой стоит знак $, указывает на символьную переменную.

Пример: F$ - символьная переменная, R% целая переменная.

Переменные с индексами

Переменные с индексамипредназначены для обозначения эле­ментов массива.

С понятием «массив» приходится сталкиваться при решении научно-технических и экономических задач обработки совокупностей большого количества значений.

Массив - это множество однотипных элементов, объединённых общим именем и занимающих в памяти компьютера определённую область.

Общий идентификатор всех величин, входящих в состав массива, называется идентификатором массива. Им может быть любое принятое в Basic имя переменной. В качестве элементов массива можно использовать любой тип данных, поэтому вполне правомерно существование массивов числовых значений, массивов строк и т.д.

Запись переменной с индексом состоит из имени массива и следующего за ним в круглых скобках индекса. Индекс определяет положение элемента в массиве.

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

Число индексов определяет размерность массива: одномерный, двумерный и т. д. Одномерный массив соответствует вектору, двумерный массив — матрице (таблице). В двумерном массиве первый индекс обозначает номер строки таблицы, второй — номер столбца таблицы.

Для каждого массива в программе должен быть указан его максимальный размер, т.е. максимальные значения, которые могут принимать индексы. Это нужно для того, чтобы интерпретатор мог зарезервировать соответствующий объем памяти. Массив описывается зарезервированным словом DIM.

Первоначально все элементы описанных массивов имеют нулевые значения.

Например, запись DIM A(N) предписывает предоставить N свободных ячеек памяти ЭВМ для одномерного числового массива с именем А.

Каждый элемент массива в общем виде описывается как А(I), где

I - номер или индекс массива (0<=I<=N).

A(I) - значение I-го элемента массива.

Индексы элементов массивов принимают значения целых чисел, начиная с 0, т.е. для одномерного массива элементы именуются А(0), А(1), А(2) и т.д.

Для задания начального значения индекса используется оператор Option base, содержимым которого является 0 или 1 (по умолчанию начальный индекс массива равен 0).

Пример: 10 Option base 1

В этом случае начальное значение индекса следующих в программе массивов будет начинаться с 1.

Так, оператор DIM В(2,3) описывает двумерный числовой массив (матрицу) с элементами В(1,1), В(1,2), В(1,3), В(2,1), В(2,2), В(2,3).

Если описание массива отсутствует, то под одномерный массив выделяется 10 ячеек памяти.

Индекс в общем случае является арифметическим выражением. В момент использования индекс должен иметь положительное целое значение. Для изменения значений индексных переменных используют те же операторы БЕЙСИК, что и в случае простых переменных.

Пример: 10 DIM А1(10), МТ(3,4), S$(6)

В строке описан массив А1 с максимальным количеством элементов, равным 10 элементов, двумерный массив (матрица) МТ с количеством элементов 3х4 = 12 элементов, символьный массив S$ - 6 элементов.

Описание массивов всегда должно предшествовать использованию их элементов в других операторах.

Пример:

Аlfa (1)=0.5 - первому элементу числового массива с именем Аlfa присваивается значение 0.5;

X=В2(10) - переменной Х присваивается значение десятого элемента числового массива с именем В2;

S$=S$+С$(5) - строка символов S$ удлиняется на пятый элемент символьного массива С$;

TER(2,4) = MIN - элементу двумерного числового массива TER, находящемуся на пересечении 2-й строки и 4-го столбца таблицы присваивается значение переменной MIN.

ВЫРАЖЕНИЯ НА ЯЗЫКЕ BASIC

Последовательность операций, которые необходимо произвести над данными, чтобы получить требуемое значение, называется выражением. В Basic допустимы выражения двух типов: числовые и строковые.

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

Арифметические операции выполняют действия обычной ариф­метики.

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

Запись выражений производится в одну строку слева направо. Запись под­строчных и надстрочных символов не допускается.

 

Таблица 1. Арифметические операции

 

Название операции Математический знак Знак в Basic Математическая запись Запись в Basic
Возведение в степень   ^ 25 2^5
Сложение + + 5 + 10 5+10
Вычитание - - a - b a - b
Умножение *; · * 2 · 5 2 * 5
Деление : / 10: 2 10 / 2
Целочисленное деление   \   10 \ 2
Выделение остатка при целочисленном делении   MOD   10 MOD 3

Функция - это заранее определённая операция над данными.

В Basic существует два вида функций: встроенные (стандартные) и определённые пользователем (нестандартные).

Таблица 2. Встроенные математические функции

Название функции Математическая запись Запись в Basic Пример в Basic
Абсолютная величина |x| ABS(X) ABS(-5)
Экспонента ex EXP(X) EXP(5)
Логарифм натуральный ln x LOG(X) LOG(3)
Остаток целочисленного деления (MOD)   x MOD y 19 MOD 6
Выделение целой части чиcла   INT(x/y) INT(12/5)
Квадратный корень SQR(X) SQR(4)
Синус Sin x SIN(X) SIN(3.14)
Косинус Cos x COS(X) COS(1)
Тангенс tg x TAN(X) TAN(2)
Арктангенс arctg x ATN(X) ATN(3)
Знак числового выражения   SGN(X) SGN(-5)
Генерация случайных чисел   RND(X) RND(1)

 

Тригонометрические функции, отсутствующие в таблице, определяются по известным математическим формулам, например,

ARCSIN(X)=ATN(X/SQR(1-X^2)).

При решении задач часто используются и другие функции:

1. RND - имя функции для генерирования так называемых слу­чайных чи­сел в интервале значений (0,1) с максимальной разрядно­стью.

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

INT(10* RND)+1.

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

RND(1) - генератор случайных чисел, который задаёт случайные числа из интервала от 0 до 1.

Случайные числа от 1 до 100могут быть сгенерированы оператором:

N=(RND(1)*100+1)

2. INT(числовое выражение) - эта функция основана на операции целочисленного деления, используется для отбрасывания дробной части числа, являющегося результатом деления (INT(14.6) = 15, INT(14.1) =14, INT(-15.2) = -15, INT(-15.8) = -16.

Функция INT в свою очередь,может быть использована для того, чтобы генерируемые числа от 1 до 100 были натуральными:

N=INT(RND(1)*100+1).

FIX(X) - используется для отбрасывания дробной части числа без ок­руг­ления результата, например:

FIX(2.5) = 2 или FIX(-3.4) = -3.

Функция MOD выполняет деление с округлением резуль­тата, как и “\”, но результатом является остаток от целочисленного деления (33 MOD 7 = 5).

ОПЕРАЦИИ ОТНОШЕНИЯ

Числовые операции отношения

Вычисление выражений, содержащих операнды различного типа, осуществляется в следующем порядке:

1) вычисляются значения функций;

2) выполняются арифметические операции с учетом приоритетов;

3) выполняются операции отношения в соответствии с приоритетами;

4) выполняются логические операции в соответствии с при­оритетами.

Действие операций отношения для числовых аргументов соответствует их математическому пониманию. Результатом этих операций является булевское значение True (истина, да), False (ложь, нет).

Простейшим булевским выражением являются отношения, которые представляют собой два арифметических выражения, связанные знаком операции отношения. Список операций отношения приведен в таблице 3. Булевские переменные и выражения называют также логическими.

 

Таблица 3. Знаки операций

 

Значение операции Знак операции Выражение в Basic
Равенство = x = y
Неравенство < >, > < x < > y
Меньше < x < y
Больше > x > y
Меньше или равно, не больше < =, = < x <= y
Больше или равно, не меньше > =, = > x >= y

 

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

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

abs(Y - Yl) <= 0.000001.

Упражнения

1. Записать следующие числа на языке Basic в режиме с фиксированной точкой и в режиме с плавающей точкой:

0,348 10-3; -3,05; 1,7-10-3; 6,75; 100000.

2. Какие из приведенных записей можно рассматривать как десятичные константы с фиксированной точкой:

а) 23 б) 3,14 в) 0ЕЗ г) -1 д) 0,0625 е) +5,76 ж).03 з) 463

3. Указать, какие из приведенных записей можно рассматривать как иден-тификаторы переменной: а)Х5 б) А.4 в) К г) 7К д) А% Б.

4. Записать следующие выражения на языке Basic:

________________ b2 + c2 - a2

c = Ö a2+ b2 – 2 a×b×cosC; A = arccos--------------; B = p-(A+C); S = (a×c×sinB)/2.

2×b×c

5. Указать порядок выполнения операций

а) Х > Y + 3 АND Х< 3;

б) Х ^ Y /2+7;

в) SQR(X) > 7 AND SQR(X) < 1.5

 

 

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

Оператор присваивания имеет формат:

< номер строки> LET <переменная> = <выражение>

Действие этого оператора состоит в вычислении значения выражения записанного справа от знака равенства и присвоении этого значения переменной, указанной слева от знака равенства. В операторе присваивания могут использоваться переменные числового и символьного типа, простые и переменные с индексами. Необходимо, чтобы тип переменной совпадал с типом выражения (т.е. числовой переменной присваивается арифметическое выражение, символьной переменной - символьное выражение).

Зарезервированное слово LET можно опускать в записи оператора.

Например:

10 LET A = 6.3

20 LET В = sin(x^2+1)/(2+a*a*b)

110 M=X(I,J)^2

30 LЕТ A$= " Наименование: Цена: Количество: Стоимость"

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

Например:

200 S$=” БелГСХА, “+”2008 год“

В результате выполнения такого оператора присваивания символьная переменная S$ получит значение ” БелГСХА, 2008 год“

В Basic могут использоваться следующие функции над символьными строками:

LEFT$(< строка>, N) - выделяет из "строки" подстроку с первого до N-го знака. Здесь и далее над аргументом <cтрока> будем понимать символьное выражение, а аргумент N должен быть целым числом или выражением, принимающим целочисленное значение. Если N равно или больше длины строки, выдается вся строка. Если N=0, выдается пустая строка.

Например: функция LEFT$("АВСD", 3) дает результат "АВС".

RIGHT$ (<cтрока>, N) - выделяет наиболее правые символы "строки". Если N равно или превышает длину строки, выдается вся строка. Если N=0, выдается пустая строка. Например: функция RIGHT$("ABODE",2) дает строку "DЕ".

MID$ (<строка>, N1, N2) - проверяет "строку" и возвращает N2 символов, начиная с позиции NI. Если NI больше, чем строка. MID$ возвращает пустую строку. Например: функция MID$("АВСDЕ", 2, 3) дает результат "BCD".

LEN (<строка>) - функция определяет длину строки, то есть возвращает целое число, равное количеству символов в строке.

Например: Функция LEN ("ABCDE") дает результат 5.

VAL (<строка>) - функция преобразует цифровую строку в числовое значение. Строка может включать цифры, знаки "+", "-", "." и "Е". Если строка содержит другие знаки, то значение функции равно нулю.

Например: VAL ("1E3") дает числовое значение 1000.

STR$ (<выражение>) - действие функции противоположно действию функции VAL: она преобразует числовое значение в цифровую строку.

Например: STR$(9372) дает строку 9372.

ASC (<строка>) - функция возвращает код КОИ-7 первого символа указанной строки. Функция ASG ("АВСD") дает значение 65.

CHR$ (<выражение>) - функция возвращает символ КОИ-7, код которого равен значению выражения. Выражение должно приводиться к целому числу между 0 и 255.

Например: Функция CHR$(65) дает символ А.

ОПЕРАТОРЫ УПРАВЛЕНИЯ

Условные операторы

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

Оператор может быть использован в одном из форматов:

1. < номер строки > IF <условие> THEN < номер строки1 >

2. < номер строки > IF <условие> THEN <оператор>

3. < номер строки > IF <условие> THEN <оператор1> ELSE <оператор2>

Условие представляет собой логическое выражение. В случае, когда условие принимает значение “истина”, управление передается оператору с номером строки 1 (1-й вариант формата) или выполняется оператор (операторы), записанный после THEN (2-й вариант формата).

 
 

 


После выполнения оператора управление передается оператору с последующим номером строки. В случае невыполнения условия управление также передается оператору с последующим номером строки.

Отличие 3-го варианта формата оператора от предыдущих состоит в том, что в случае, когда условие принимает значение“истина”, выполняются действия <оператор1>, иначе действия <оператор2>. После этого управление также передается оператору с последующим номером строки.

 
 


Операторы цикла

 

Циклические программы (участки программ) можно записывать, используя операторы IF и GOТО. Но для упрощения процедуры составления циклов и с целью их четкого выделения в программе могут быть использованы специальные операторы FOR … NEXT, WHILE … WEND, DO …LOOP.

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

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

<номер строки> FOR <имя переменной> = <выражение 1> ТО <выражение 2> [ SТЕР <выражение 3>]

Имя переменной в операторе FOR называют управляющей переменной или параметром цикла, а <выражение 1>, <выражение 2> и <выражение 3> представляют собой начальное значение параметра цикла, конечное значение параметра цикла и шаг изменения параметра цикла соответственно. Если " STEP <выражение 3> " опущено, то шаг изменения параметра цикла полагается равным 1.

Во время выполнения оператора FOR вычисляются или задаются параметры цикла (начальное и конечное значения управляющей переменной, величина шага изменения) и присваивается начальное значение управляющей переменной. Тело цикла начинается вслед за оператором FOR и завершается оператором NEXT, который имеет следующий формат:

<номер строки> NEXT [имя переменной]

Здесь [имя переменной] соответствует управляющей переменной в заголовке цикла. При выполнении оператора NEXT производится изменение значения управляющей переменной на величину шага и проверка условия окончания цикла. Цикл повторяется до тех пор, пока значение управляющей переменной не станет строго больше (при положительном шаге изменения) или строго меньше (при отрицательное шаге изменения) конечного значения. Можно выйти из цикла и в том случае, если параметр цикла не достигает конечного значения. Для этого используют операторы условного и безусловного перехода.

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

Операторы FOR и NEXTне могут выполняться в операторе IF.

С помощью конструкции WHILE … WEND можно реализовывать выполнение ряда операторов до тех пор, пока выполняется определённое условие.

WHILE Условие

[ Оператор 1]

[ … ]

[ Оператор N]

WEND

До тех пор, пока соблюдается условие, последовательно выполняются операторы от 1 до N. Если условие цикла больше не соблюдается, то выполнение программы продолжается, начиная с оператора, следующего за WEND. Если условие цикла WHILE не выполняется с самого начала, то управление сразу же передаётся оператору, расположенному за WEND.

ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ

Кроме стандартных функций, предназначенных для вычисления математических выражений, в языке Basic допускается употребление функций, определяемых пользователем. Если в программе необходимо несколько раз вычислить одно и то же выражение при различных значениях некоторого параметра, то целесообразно создать "свою" функцию. Описать функцию можно с помощью определяющего оператора DEF, формат которого следующий:

<номер строки> DEF FNА (<аргумент>) = <выражение>

где FN А - имя функции, состоящее из обязательных букв FN и имени произвольной переменной А.

Пример:

10 DEF FNA(X) =SIN(X)^2 -COS(X)^2

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

30 DEF FNА(Х) = Х*В + TAN(C/X)

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

10 DEF FNA(Х) = Х^2 + SIN(Х)

20 А = FNA(2.5) + 2*FNA(3)

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

Оператор DEF является неисполнимым оператором и поэтому может размещаться в любой части программы, например, в начале.

Пример:

Пусть X и Y - натуральные числа. R - остаток от деления X на Y. Выразить R(X,Y), где R функция от X и Y.

В этом примере R(X,Y) - функция двух аргументов:

R = X - INT(X/Y) * Y - остаток от деления X на Y.

Функция должна быть определена следующим образом:

DEF FNR(X,Y) = X – Y * INT(X/Y)

 

ПОДПРОГРАММЫ

Операторы GOSUB и RETURN

Последовательность повторяющихся в программе операторов может быть оформлена в виде подпрограммы. Подпрограмма на языке БЕЙСИК - это часть программы, которая реализует операции, выполнение которых требуется в нескольких точках программы.

Для перехода к подпрограмме используется оператор, имеющий следующий формат:

<номер строки> GOSUB <номер строки подпрограммы>

где <номер строки подпрограммы> - номер строки подпрограммы, содержащий оператор подпрограммы, с которого начинается ее выполнение (точка входа).

При выполнении оператора GOSUB управление передается в точку входа в подпрограмму.

Первая строка подпрограммы может начинаться оператором комментария (оператором REM) или любым выполняемым оператором.

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

<номер строки> RETURN.

Оператор RETURNобуславливаетвозвратуправления оператору, следующемузаоператором GOSUB.

БЕЙСИК допускает использование в одной программе нескольких подпрограмм. Подпрограммы могут быть вложенными, то есть одна подпрограмма может осуществить вызов другой подпрограммы. Если при выполнении подпрограммы встречается оператор RETURN, то он вызывает передачу управления тому оператору, который следует после оператора GOSUB, произведшего обращение к этой подпрограмме (в точку возврата).

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

Оператор ON - GOSUB

Оператор ON - GOSUB используется (аналогично оператору ON - GOTO) для условной передачи управления одной из нескольких подпрограмм или к одной из нескольких входных точек одной (или нескольких) подпрограмм. Формат оператора:

<номер строки> ON <арифметическое выражение> GOSUB <список номеров строк подпрограммы>

Во время выполнения оператора ON - GOSUB вычисляется значение арифметического выражения и целая часть этого значения (n) используется в качестве указателя на один из перечисленных номеров строк в списке. В результате происходит передача управления подпрограмме, которая начинается номером строки, находящимся в списке на n - ом месте. Оператор RETURN возвращает управление оператору, следующему за оператором ON - GOSUB.

 

ОПЕРАТОРЫ ВВОДА - ВЫВОДА

Оператор INPUT

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

<номер строки> INPUT <список ввода>



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 291; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.192.53.34 (0.21 с.)