Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1601

.pdf
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
1.46 Mб
Скачать

Var

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

 

 

 

 

 

Рассмотрим пример, когда наличие круглых скобок обязательно, хотя в исходном математическом