Раздел описания переменных
Каждая переменная, встречающаяся в программе, должна быть определена. Описание переменной должно предшествовать использованию ее в тексте программы с тем, чтобы в момент использования она была уже "знакома" компилятору. Раздел описания переменных начинается зарезервированным словом var / от variable - переменная/. Вслед за ним идет список, записи которого имеют следующую структуру: сначала через запятую перечисляется один или несколько идентификаторов переменных, затем ставится двоеточие и после двоеточия указывается тип перечисленных переменных. При обработке описания переменной транслятор создает новую переменную и присваивает ей определенный идентификатор. Областью действия такого идентификатора является тот блок, в котором он определен, и любой другой блок в него входящий. Отметим, однако, что в любом блоке, входящем в состав другого блока, можно определить другую переменную, используя тот же самый идентификатор. В таких случаях говорят, что такая переменная является локальной для блока, в котором она описана /и для любого блока в пределах этого блока/, а переменная, описанная на более высоком уровне /во внешнем блоке/ называется глобальной переменной и становится недоступной. Пример: var Result, Intermediate, SubTotal: Real; I, J, X, Y: Integer; Accepted, Valid: Boolean; Period: Day; Buffer: array[0..127] of Byte;
Раздел описания процедур и функций В практике программирования часто возникает необходимость выполнения одной и той же последовательности операторов в различных частях программы. Наиболее простым способом реализации программы является запись последовательности операторов в тех участках программы, где это необходимо. Однако такой прием зачастую оказываетcя нерациональным. Целесообразно оформить эти операторы в виде подпрограммы - процедуры или подпрограммы - функции. Процедуры и функции позволяют записать повторяющиеся участки один раз, а в нужных местах программы приводить лишь обращение к ним. Использование процедур позволяет сократить объем, улучшить структуру программы и уменьшить вероятность наличия ошибок. Основные стандартные процедуры и функции приведены в приложении 1.
Подпрограмма - функция Подпрограммы - функции описываются вслед за разделом описания глобальных переменных и располагаются перед группой операторов основной программы. Функция состоит из заголовка, описания локальных переменных и тела (группы операторов). Общий вид подпрограммы - функции таков: Function имя (а1;...;аn): тип результата;
End;, где а1;...;an - список формальных параметров с указанием типа. Функция передает в вызывающую программу единственное значение (результат) через свое имя. Тип передаваемого значения результата определяется в заголовке функции. В тексте подпрограммы - функции имени функции обязательно должно быть присвоено рассчитанное значение результата, т.е. имя функции должно хотя бы один раз присутствовать в левой части оператора присваивания. Список формальных параметров и раздел описания локальных меток и переменных могут отсутствовать. В этом случае в тексте подпрограммы -функции используются глобальные параметры, описанные в основной программе. При наличии формальных параметров и локальных переменных их тип должен быть определен. Пример А. Оформить в виде подпрограммы - функции алгоритм возведения в целочисленную степень у=хn. Function rez1 (n:integer; x:real): real; var i:integer; begin rez1:=1; for i:=1 to n do rez1:=rez1*x; end;
Пример Б. Оформить в виде подпрограммы - функции алгоритм возведения вещественного числа в вещественную степень y=ax.
Function rez2(x:real; a:real): real; begin Rez2:=exp(x*ln(a)); end;
В примере Б подстепенное выражение не может принимать отрицательное значение или быть равным нулю. Впримере А может быть и отрицательным. Переменные n, x, i примера A определены только в теле подпрограммы -функции. Вне тела функции они не определены, т.е. не существуют. Аналогичными переменными являются параметры а, х впримере Б. Обращение к подпрограмме-функции осуществляется по имени функции с указанием в скобках вместо формальных параметров фактических. Причем имена формальных и фактических параметров могут и не совпадать, но их последовательность, количество и тип должны обязательно соответствовать друг другу. Так, обращение к функции rez2 примера Б может быть таким: у:=а*rez2(n,х);, что соответствует решению задачи у=а*хn. Здесь переменная n обязательно должна быть описана как переменная вещественного типа. В примере Б переменные х и а являются формальными параметрами - переменные, формально присутствующие в подпрограмме и определяющие тип и место подстановки фактических значений, передаваемых из вызывающей программы. Конкретные (фактические) значения передают фактические параметры при обращении в вызывающей программе. Так, при рассмотренном выше обращении к функции rez2 фактическими параметрами являются переменные n и x. Описание функции служит для определения той части программы, которая выполняет определенные вычисления и передает полученный результат. Функция выполняется сразу, как только имя функции встречается как часть предложения программы.
Подпрограмма - процедура В отличие от подпрограммы – функции подпрограмма – процедура в качестве результата может возвращать несколько значений. Структура процедуры имеет вид: Procedure имя (а1;...;аn);
End;, где a1;…an – список формальных параметров с указанием типа. Причем при указании типа параметра обязательно выделяют параметры, которые в ходе выполнения программы не меняют своего значения и которые могут его изменить. Если параметр меняет свое значение (обычно это результат), то перед ним ставится служебное слово Var.
Пример. Составить подпрограмму умножения двух квадратных матриц С=А*В m-го порядка.
Type Matr = array [1..10, 1..10] of real; Var A, B, C: Matr; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Procedure MultMat (n: integer; Mat1, Mat2:Matr; Var Mat3:Matr); var i.k,j: integer; begin for 1:=1 to n do for j:=1 to n do begin Mat3[i,j]:=0.0; for k:=l to n do Mat3[i,j]:=Mat3[i,j]+Mat1[i.k]*Маt2[k,j]; end; end;
Здесь массивы Mat1 и Mat2 в ходе выполнения процедуры не меняют своих значений, поэтому для них указывается только тип. Массив Mat3 формируется в процедуре, соответственно при описании его типа перед именем ставится ключевое слово Var. Переменные i, j, k задействованы только внутри процедуры, поэтому они описаны как локальные переменные. Вызов процедуры осуществляется по имени, с указанием фактических параметров. Так, для рассматриваемого примера обращение к процедуре может выглядеть так: MultMat (m. A, B, С); Результат перемножения двух матриц располагается в массиве С. Описание процедуры служит для определения процедуры в рамках текущей процедуры или программы. Выполнение процедуры начинается с оператора процедуры и после завершения процедуры выполнение программы продолжается с оператора, следующего непосредственно за оператором вызова процедуры.
Раздел операторов Раздел операторов является последним в блоке программы. Он задает действия, которые должна выполнить программа. Раздел операторов имеет вид сложного составного оператора, в конце которого ставится точка или точка с запятой. Раздел операторов определяет действия, которые должна выполнить программа /или подпрограмма/. Программа представляет собой последовательность операторов, каждый из которых определяет одно действие над данным. В этом смысле Паскаль является языком последовательного программирования: операторы выполняются последовательно друг за другом и никогда не возникает ситуации, когда два каких-либо оператора выполняются одновременно. Раздел операторов начинается зарезервированным словом begin - начало и завершается словом end - конец. Между ними находятся операторы, разделенные друг от друга точкой с запятой. Операторы могут быть простыми или структурными.
Оператор присвоения Одним из основных операторов является оператор присвоения. Он используется для присвоения значения переменной. При этом значение выражения, расположенного справа от знака присвоения присваивается переменной, индентификатор которой расположен слева от знака присваивания. Оператор присваивания можно использовать для присваивания значений переменной любого типа, кроме файлового. Единственным условием является, чтобы переменная /или функция/ и выражение имели один и тот же тип. Исключение составляет случай, когда переменная имеет тип real, тогда выражение может быть и действительного и целочисленного типа.
Пример: a:= b; Здесь a – простая или индексная переменная; b – арифметическое или логическое выражение. Выполнение оператора состоит в вычислении выражения, находящегося справа от знака “:=”, и присвоения полученного значения левой части оператора с учетом типа находящейся там переменной. Примеры: B:= a/z; I:= i+1; angle:= angle * p1; AccessOK:= False; SpherVol:= 4 * p1 * R * R;
Ввод – вывод данных Ввод данных осуществляется бесформатными операторами ввода: Read (a1,…,an); Readln (a1,…,an);, где а1,…,аn – список переменных. Ввод данных осуществляется с клавиатуры, при этом численные данные отделяются друг от друга пробелами, кроме данных символьного и строкового типов. Ввод значений элементов массива осуществляется как перечислением элементов в списке, так и с использованием операторов цикла, например:
Read (a[1, 1], a[1, 2], a[1, 3],…) или for i:=1 to n do
for j:=1 to m do read (a[i, j]);.
При большой размерности массива ввод данных с клавиатуры становится трудоемкой операцией. В этом случае значения элементов массива удобнее задавать в разделе описания констант. Пример: ввести значения элементов вектора Х и матрицы А, которые соответственно равны:
4, 5, 10, 8, 0 7, 9, 25, 0, 1 Х = (5, 1.2, 0.1, 7, 8.6) А = 3, 0, 6, 14, 5 0, 0, 0, 99, 12 Значения элементов могут быть определены путем их инициализации:
Const X: array [1..5] of real = (5.0, 1.2, 0.1, 7.0, 8.6); A: array [1..4, 1..5] of integer = ((4, 5, 10, 8, 0), (7, 9, 25, 0, 1), (3, 0, 6, 14, 5), (0, 0, 0, 99, 12));.
Вывод данных на дисплей осуществляется операторами write и writeln, например: write (‘x=’, x:3, ‘ y=’, y:8:3);
На экран дисплея выводятся: значения переменной целого типа X, для которой выделяется 3 позиции, переменной Y вещественного типа, занимает 8 позиций. При атом под дробную часть переменной Y отводится 3 позиции; у переменной Х выводится только целая часть. Перед числовыми значениями переменных выводятся поясняющие их информации, состоящие из имен переменных.
Таким образом, как следует из примера, формат вывода переменных целого типа имеет вид :а, переменных вещественного типа :а:р, где а - общее количество позиций, отводимых под число, из них р - позиций отводится под дробную часть. В общее количество позиций а включаются позиции для знака числа и десятичное точки. Разделителями в формате является символ ":". Если в операторе вывода формат не указан, то вывод будет осуществляться в нормализованной форме представления вещественного числа. Выводимый текст поясняющей информации заключается в апострофы. При использовании оператора write переход на следующую строку произойдет только в случае заполнения текущей строки. Если требуется организовать переход от неполной текущей строки к началу следующей строки, используют оператор writeln. Например, при выполнении операторов вывода: Write (‘ Кафедра вычислительной техники и’); Write (‘ инженерной кибернетики’); Получим на экране:
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|