Программирование линейных алгоритмов

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

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

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

Не забывайте, операторы отделяются друг от друга точкой с запятой!

1.3.1 Операторы языка программирования Pascal

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

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

<имя переменной> := <выражение>

Принцип действия: вычисляется выражение, находящееся в правой части оператора, и его значение присваивается переменной в его левой части.

Тип выражения в правой части оператора присваивания и переменной в левой его части должны быть совместимы по типу. Например, недопустимо присваивать вещественное число переменной целого или символьного типа.

Если в правой части − алгебраическое выражение, то оно может содержать переменные и константы как целого, так и вещественного типа. При этом тип результата будет вещественным.

Пример 1. Соответствие и несовместимость типов данных в выражениях с оператором присваивания.

Program types;

Var x : real;

n : integer;

ch : char;

st : string;

Begin

n:=5;

x:=n; {правильно, вещественной переменной присваивается целое

значение}

n:=3.4; {ошибка, целой переменной присваивается вещественное

значение}

n:=4/2; {ошибка, результат операции деления всегда

вещественного типа}

n:=cos(x); {ошибка, результатом вычисления функции косинус

является вещественное число}

ch:=’a’;

st:=ch; {правильно, строковой переменной присваивается

символьное значение}

ch:=’Pascal’; {ошибка, символьной переменной присваивается

строковое значение}

n:=ch; {ошибка, целой переменной присваивается символьное

значение}

End.

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

read(список переменных, перечисленных через запятую)

readln(список переменных, перечисленных через запятую)

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

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

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

write(список переменных, констант, выражений через запятую)

writeln(список переменных, констант, выражений через запятую)

Например, при обращении к процедуре

writeln('x=',x,' sin x =',sin(x))

выводятся последовательно строковая константа из двух символов x= (без кавычек и апострофов), значение переменной x, строковая константа sin x = (без кавычек и апострофов, первый символ пробел) и вычисленное значение выражения sin(x).

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

Примечание− Вызов процедуры writeln без параметров используется для перехода на новую строку или для пропуска строки.

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

writeln(k:5)– для отображения переменной k целого или строкового типа при выводе выделяется 5 позиций;

writeln(a,' ':3,b)– значения переменных a и b при выводе разделяются тремя пробелами.

Количество позиций, отводимое при выводе для вещественного числа, указывается форматом :n:m, где n − общее число позиций, m − число позиций для дробной части, например:

writeln(y:6:2) − для отображения вещественной переменной у при выводе отводится 6 позиций, из них 2 − после десятичной точки, причем одну позицию занимает символ точка, т. е. значение y = 23.17445 будет выведено как 23.17 с пробелом впереди числа.

Форматирование результатов не является обязательным. Но тогда для данных целого типа при выводе выделяется 15 позиций, а для данных вещественного типа − 18 позиций, что часто бывает чрезмерным. При этом вещественные числа представляются в E-формате (другими словами, в экспоненциальной форме, формате с плавающей точкой, в виде мантиссы и порядка), например:

−3.456000000E+02

Такие числа иногда трудны для восприятия и могут сливаться друг с другом, что является недочетом, иногда приводящим к неправильному толкованию результата. Поэтому рекомендуется не только форматировать результаты при выводе, но и отделять значения выводимых переменных и выражений пробелами. Например, при выводе значения переменной p = 2,74 и выражения y, зависящего от p (получено значение y = 16,570824), есть несколько способов, представленных в таблице 6.

Таблица 6 − Форматирование выходных данных в языке Pascal

Фрагмент кода Вывод на экран (в файл)
writeln(p,y) 2.7400000000E+00 1.6570824E+01
write('p=',p:5:2,'y=',y:8:4) p= 2.74y= 16.5708
write('p=',p:4:2,' y=',y:6:4) p=2.74 y=16.5708

Составной оператор объединяет в одно целое группу операторов, которые после этого могут считаться одним оператором. Свое применение он находит в структурированных операторах ветвления и цикла. Составной оператор начинается зарезервированным словомbegin, затем следуют операторы, перечисленные через точку с запятой, и оканчивается зарезервированным словом end.

Пара служебных (ключевых) слов beginиendназывается операторными скобками.

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

Программирование линейных алгоритмов - student2.ru

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

Формат оператора безусловного перехода:

goto<метка>

Метку можно установить перед любым оператором основной программы (кроме операторов в составе составного), отделив её двоеточием:

<метка> : <оператор>

В качестве метки можно использовать как имя, предложенное пользователем, так и число от 0 до 9999. Все метки, встречающиеся в программе, надо предварительно указать в разделе описаний после зарезервированного слова Label (см. структуру простейшей программы на языке Pascal):

Label <список меток>;

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

Наши рекомендации