2361
.pdfVar
FistName, LastName, TempName: StringType; Здесь FistName, LastName и TempName
представляют собой переменные строки(длиной до 10 символов.)
Для содержания набора символов в памяти TurboPascal можно использовать как массив символов, так и строковую переменную, например:
Const StringSite=20;
Type
IndexRange = 1..StringSite; тип-диапазон CharArray = arroy IndexRange ; of_Char; Stringro = String StringSite ;
Var
FirstName: CharArray; массив из 20
символов
LastName;String 20 ; строка содержащая до 20 символов
В данном описании выделена память для массива FirstName и для строковой переменной LastName, причем в обоих случаях выделяется память для содержания 20 символов.
Массив FirstName можно в программе обрабатывать как любой другой массив. При этом для занесения данных в массив или выборки их из массива необходимо воспользоваться оператором цикла.
Заметим, что для занесения в переменную LastName строкового значения можно воспользоваться как оператором Read, так и арифметическим оператором присваивания, например,
LastName:=‘Washiugtjn‘;
Отметим, также, что строка в TurboPascal трактуется как цепочка отдельных символов.
К любому символу в строке можно обратиться точно также, как к элементу одномерного массива
Array[0..N]_of_Сhar, например: Var
St: string; Begin
……. If_St[5]=‘A‘_then… …….
End.
В заключение отметим, что двухступенчатые описание строкового типа необязательно.
Можно воспользоваться одним описателем Var, Например:
A:String;
B:String [20] ;
Здесь переменная А может состоять из 255 символов (по умолчанию), а переменная B может иметь только 20 символов.
Со строками и символами можно производить все операции сравнения:
<,<=,>,>=,<>,=;
Кроме того, к строкам можно применять операцию щепления <<+>>, например:
St:= ‘a‘ + ‘b‘; St;:= St + ‗c‘;
В результате St будет содержать «abc».
Все остальные операции над строками и символами осуществляются с помощью следующих процедур и функций:
- Concat(S1[,S2,…,SN]) – функция осуществляет присоединение к строке S1 строк S2,…, SN (слияние нескольких строк в одну строку);
-Copy(St, Index, Count) – функция удаляет(копирует) из строки St определенное количество символов равное Count, начиная с номера символа равного INDEX, например:
Day := copy(Date,3,7);
-DELETE(ST,INDEX,COUNT) – процедура:
выполняет те же функции, что и COPY.
-INSERT(SUBST,ST,INDEX) – процедура: вставляет подстроку SUBST в строку ST, начиная с символа имеющего номер INDEX.
-LENGTH(ST)- функция типа INTEGER; определяет длину строки ST.
-POS(SOBST,ST) – функция типа INTEGER;
отыскивает в строке ST первое вхождение подстроки SUBST выдает номер позиции с которой она начинается; если подстрока не найдена, возвращается и выдается ноль;
-URCASE(CH) – функция типа Char; возвращает для символьного выражения CH , которое должно представлять собой строчную латинскую букву, соответствующую заглавную букву; если значение CH является любой другой символ (в том числе строчная буква русского алфавита), функция возвращает его без преобразования.
Описание переменных
Если вышеперечисленные описатели в программе могут отсутствовать, то данный раздел всегда обязателен в программе, так как прежде чем описать какую либо переменную необходимо обязательно определить тип, к которому эта переменная принадлежит. Существует четыре основных встроенных типа данных переменных:
1. Целочисленный – integer.
2.Вещественный – real.
3.Логические – boolean (булевый).
4.Символьные – char.
Последний тип данных рассмотрим более подробно. Значения типа Char представляют собой отдельные символы-буквы, цифры или специальные знаки. Каждый литерал типа Char должен быть заключен в апострофы.
Например: A‘, z‘, 2‘, g‘, *‘, :‘, ‖ ‘, я‘, ‘ и т.д.
Здесь предпоследний литерал кавычки, предпоследний – русская буква алфавита (необходимо клавиши переключать на русский шрифт), а последний литерал - пробел.
Хотя литерал типа Char в программе (в соответствующем месте) должен быть заключен в апострофы, значение типа Char в них не нуждается, т.е. , например, при вводе буквы z (с помощью оператора Read) в качестве значения тип Char, которое должно быть считано программой, от вас требуется только нажать клавишу z. Но в то же, если этот тип данных включен в правую часть арифметического оператора присваивания) , то апострофы должны быть.
Например: y:= a‘;
Это праммной ввод исходных данных, в отличие от ввода данных с клавиатуры – с помощью оператора
Read.
Следует отметить, что арифметические операции над значениями типа Char невозможны. В тоже время можно сравнить символы, а также выводить их на экран дисплея (пример см. в разделе 4.2.3)
Как видно из изложенного выше каждому из этих типов соответствует свое служебное слово на
PASCAL.
Следует отметить, что для целого и вещественного типов существуют дополнительные типы(см.рис.4.3, табл.4.3.1 и 4.3.2. соответственно).
Данный раздел для всех четырех типов данных должен начинается с ключевого слова var, после которого перечисляются через запятую все переменные определенного типа, затем ставится двоеточие и после него служебное слово данного типа.
Например:
Var
a, b, c, d, x, y: real – вещественный тип;
і, ј, k, l, m, n: integer – целый тип данных;
В данном примере была описана процедура описания простых переменных (целых и вещественных).
Описание массивов с помощью данного описателя осуществляется следующим образом. После Var через запятую перечисляются имена массивов, после последнего имени из списка ставится <<:>> затем обязательное ключевое слово Array после него в квадратных скобках указывается начальный индекс массива, после << ..>> ставится конечное значения массива (тем самым указывается его размерность) – после закрытой квадратной скобки пишется слово OF и после него к.-л. тип массива,
Например: Var
A: ARRAY[1…8]_OF_REAL;
MOD,DOP: ARRAY[1…10]_OF_INTEGER;
Это для одномерного массива.
Двумерные массивы (матрицы) описываются следующим образом:
Var
MATRIX: ARRAY[1..3,1..10]_OF_REAL;
Здесь описана матрица размерности 8х10, элементы которой вещественного типа.
Отметим, что выше были изложены четыре стандартных типов данных. В процессе программной реализации отдельных алгоритмов возникает необходимость ввести свой (не стандартные) типы данных. В этом случае их необходимо обозначать с помощью описателя Type по вышеизложенным правилам.
В заключении заметим, что в отличие от стандартного Pascal в TurboPascal описатели LABEL, CONST,TYPE и VAR могут следовать друг за другом в произвольном порядке.
Раздел описания процедур и функций
Данный раздел, состоящий из 2-х подразделов – описателей PROCEDURE и FUNCTION присутствует в программе, если программист помимо стандартных процедур и функций определяет (используют) свои, являющиеся самостоятельными программами единицами, к которым осуществляется обращение(ссылка) из основной(головной) программы с помощью указания имени этой процедуры или функции и параметров.
Данный раздел более подробно будет изложен ниже (см. раздел 4.2.4.).
4.2.2.Коментарии
Прежде чем переходить к разделу операторов необходимо рассмотреть такой второстепенный вопрос, как комментарии к программе. В состав программы могут быть включены комментарии – тексты, поясняющие программу, но не влияющие на ход ее
выполнения. Как правило, они располагаются перед оператором (или группой операторов) или после них.
При этом комментарии обязательно должны заключаться в круглые скобки c обязательными звездочками, либо в фигурные скобки (без звездочек).
Например:
( ниже следует процедура ) {здесь начинается цикл } {далее осуществляется вывод}
4.2.3. Раздел операторов
Составной оператор(операторные скобки)
BEGIN – END
Раздел операторов (операторный блок), следующий за разделом описания должен обязательно заключаться в так называемые операторные скобки begin – end.
Следует иметь в виду, что внутри операторных скобок могут находиться другие операторные скобки, так называемые вложенные. Степень вложения их неограниченна. После end каждой вложенной скобки ставится точка с запятой, а после end внешних операторных скобок ставится точка.
Для того, чтобы программа, удобно читалась необходимо каждую пару внутренних скобок, по отношению к внешним сдвигать вправо с помощью клавиши TAB.
Схематически такие операторные скобки можно представить так
описатели
Begin
Begin
Begin
End;
End;
End.
Операторы, входящие в состав составного оператора, будут выполняться в том порядке, в котором они записаны ( сверху – вниз ). После каждого оператора (в конце его ) должен обязательно стоять символ <<;>>.
Арифметический оператор присваивания
Иногда данный оператор называют проще – арифметический оператор или оператор присваивания.
Данный оператор является самым простым и наиболее часто используемым. Он определяет, что вычисленное значение должно быть присвоено
некоторой переменной. В общем виде его можно записать:
a:=W;
где а – какая либо переменная, либо массив; знак «:=» - знак присваивания;
W – какое-либо математическое выражение, переменная, либо константа.
Таким образом, в отличие от других алгоритмических языков высокого уровня (Бейсик, Фортран и т.д.), пара символов <<:=>>, связывающая левую и правую части оператора присваивания, означает «присвоить значение» (в отличие от описания констант, где используется одиночный символ <<=>>.
С точки зрения синтаксиса языка Pascal, два символа <<:=>> рассматриваются как один специальный символ и обязательно пишутся слитно(без пробелов).
В случае, когда w – константа, то данный оператор используется для программного ввода исходных данных. Во случае, когда w – переменная, то осуществляется переприсвоение.
Справа, стоящее выражение в данном случае вычисляется согласно приоритету (старшинству) операций.
1.В первую очередь раскрываются круглые скобки, если есть внутренние, то они раскрываются ранее внешних.
2.Затем какая-либо стандартная функция.
3.Умножение или деление .
4.И только в конце сложение либо вычитание. Операция одного и того же старшинства вычисляется слева направо по строке.
Данную процедуру (приоритет) проиллюстрируем на следующем примере. Пусть задан арифметический оператор следующего вида:
y : exp(a b x sqrt(c d x b / x 3.7)
7 |
1 |
2 |
8 |
9 |
3 |
4
5
6
10
11
12
Данный оператор соответствует следующему исходному математическому выражению:
|
|
|
|
|
|
a bx c dx |
b |
3,7 cm |
|||
|
|||||
x |
|||||
y e |
|
|
|||
|
|
|
Рассмотрим пример, когда наличие круглых скобок обязательно, хотя в исходном математическом