Структура программы на Паскале 


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



ЗНАЕТЕ ЛИ ВЫ?

Структура программы на Паскале



 
 

 

 


Раздел описаний вместе с разделом операторов называют блоком.

Заголовок

       
 
   
 

 

 


Идентификатор после ключевого слова program - имя программы. В стандартном Паскале заголовок обязателен, а также обязателен список идентификаторов в круглых скобках.

 

Раздел описаний

Все программные объекты, которые вводятся в рассмотрение программистом, должны быть описаны в разделе описаний. Нельзя использовать программный объект до его описания. В стандартном Паскале программные объекты должны описываться в следующей последовательности: метки, константы, типы, переменные, подпрограммы. В ТР они могут описываться в произвольном порядке. Правила описаний для каждого вида программных объектов будут рассмотрены ниже.

Раздел операторов

 
 


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

6. ДАННЫЕ

 

Информация, предназначенная для передачи и обработки, хранится в формализованном виде в виде данных. Например, в памяти ЭВМ данные представляют собой последовательности из 0 и 1 (битов). Для удобства обработки данных биты объединяют в байты (8 битов составляют 1 байт), а байты - в слова. Данные могут быть переменными или константами. Конечная цель обработки данных - получение новой информации. Одну и ту же последовательность битов можно интерпретировать и обрабатывать по-разному. Например, байт 01000001 можно рассматривать и как символ ‘A’, и как целое число 65. Для правильной интерпретации и обработки тех или иных данных вводится понятие типа данных.

 

Тип данных

Тип данных определяет:

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

2. Множество операций, которые разрешены над данными этого типа.

3. Каждая константа и переменная относятся к определенному типу по их виду или описанию.

4. Каждая операция требует операндов определенного типа и формирует тип результата, в соответствии с правилами языка.

5. Каждая функция требует аргументов определенного типа и возвращает результат определенного типа.

Типы данных языка Паскаль

 
 

 

 


К простым типам относятся данные, значения которых являются неделимыми. Данные структурированных типов представляют собой совокупности компонентов ранее определенных типов.

 

Константы

Константа - это программный объект, не изменяющий своего значения. Каждая константа является либо литералом, либо именованной константой.

Литералы - те константы, тип которых определяется по их виду. Литералами являются целые и вещественные числа, символы, символьные строки.

Целые константы записываются в общепринятом виде, как целое без знака (например, 368) или как целое со знаком (например, -95). ТР позволяет записывать целые константы в шестнадцатеричном виде. Признаком шестнадцатеричной константы является префикс $. Цифры дополняются начальными буквами латинского алфавита: A(10), B(11), C(12), D(13), E(14), F(15). Регистр букв не имеет значения. Например, $5F=95.

Вещественная константа может быть представлена в форме с фиксированной или с плавающей точкой.

Форма с фиксированной точкой (на ЯБНФ):

< целое >. [< целое без знака >]

В записи вещественной константы в форме с фиксированной точкой обязательно должна быть точка. Например, 12.37; 0.063; -4.; 5.09.

Форма с плавающей точкой:

(<целое>½<веществ. с фикс.точкой>)(Е½е)(+½ - )<цифра>{<цирфа>}

Например, -1.012Е+01 (= -10,12), 1Е2 (=100).

Символьная константа - это символ из определенного упорядоченного набора символов, заключенный в апострофы. Например, ‘1’, ‘w’, ‘+’. В упорядоченном наборе каждый символ имеет номер (код). В ТР символ можно представить в виде #<код>. Так, символ А, имеющий код 65, можно записать как ‘A’ или #65.

Символьная строка -это последовательность символов, заключенная в апострофы. Например, ‘ Это символьная строка ’.

Именованная константа -это фиксированное значение, которому в разделе описаний присваивается имя.

Описание констант:

 

 


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

Константным выражением является выражение, не содержащее переменных. В константных выражениях допускается использование некоторых стандартных функций: Abs, Chr, Hi, Lo, Length, Odd, Ord, Pred, Ptr, Round, Trunc, Succ. Тип константного выражения определяет тип описываемой константы.

Например:

const MAX =100; {целый тип}

LEN =1.5*MAX; {вещественный тип}

SYMBOL =’z’; {символьный тип}

FLAG = SYMBOL = ‘z’; {логический тип}

Переменные

 

Переменные - объекты, способные изменять свои значения.

Описание переменных:

 
 

 


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

Например:

var i, j: integer;

f: real;

В приведенном описании две секции. В первой определены две переменные i и j целого типа, во второй - вещественная переменная f.

 

7. ЧИСЛОВЫЕ ТИПЫ И АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ

Целые типы ТP

1) shortint - короткое целое Î[-128; 127], занимает 1 байт;

2) byte - целое без знакаÎ[0; 255], занимает 1 байт;

3) integer - целое Î[-32768; 32767], занимает 2 байта;

4) word - целое, без знакаÎ [0; 65535], занимает 2 байта;

5) longint - целое Î [-2147483648; 2147483647], занимает 4 байта;

В стандартном Паскале есть только один целый тип - integer. Для константы 32767 существует предопределенный идентификатор MAXINT.

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

 

Вещественные типы ТР

Вещественное число, не равное нулю, можно представить в виде r = , где а -мантисса, удовлетворяющая условию1£ а <10 при 0, а n - порядок (n Î Z). Значения вещественных типов хранятся в памяти в виде мантиссы и порядка.

Имя типа Название Объем памяти Цифр в мантиссе Порядок (nÎ Z)
  single вещественный одинарной точности     7-8   nÎ[-39; 38]
real вещественный   11-12 nÎ[-39; 38]
double вещественный двойной точности   15-16 nÎ[-324; 308]
extended вещественный расширенный   19-20 nÎ[-4932; 4932]
comp сложный   19-20 nÎ[0; 18]

 

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

Операция сравнения на равенство данных вещественного типа считается некорректной, равенство r1=r2 будем заменять неравенством ½r1-r2½< e, где e - точность.

В стандартном Паскале определен один вещественный тип real. В ТР типы single, double и extended, comp можно использовать только при наличии сопроцессора.

 

7.3. Арифметические операции, определенные над числовыми

Типами

Название операции Знак операции Запись на Паскале Типы операндов Тип результата
унарный плюс   +   +а целый целый
      вещественный вещественный
унарный минус   -   -а целый целый
      вещественный вещественный
      оба целые целый
сложение + a+b хотя бы один  
      вещественный вещественный
вычитание - a-b как при сложении как при сложении
умножение * a*b как при сложении как при сложении
Название операции Знак операции Запись на Паскале Типы операндов Тип результата
деление / a/b любые числовые вещественный
целочислен-ное деление   div   a div b   целые   целые
нахождение остатка от деления   mod     a mod b   целые   целые

 

Правило выполнения операции div и mod:

a div b=sign(a*b)*[½a/b½] ([х] - целая часть х);

a mod b=a - (a div b)*b.

Например, -15 div 7= -2; -15 mod 7= -1.

 

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

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

На Паскале выражения записываются в строку. Например, выражение

на Паскале имеет вид (a+b) / (a-b). В выражениях не допускаются подряд два знака операций. Например, недопустима запись a*-b; правильное выражение a*(-b).

 

Приоритеты операций в арифметических выражениях (в порядке убывания):

1. Унарные (+ и -).

2. Умножение, деление, деление нацело, нахождение остатка от деления.

3. Сложение, вычитание.

 

Некоторые стандартные функции Паскаля:

Обращение   Математическое обозначение Тип аргумента Тип результата
sin(x) sin x числовой вещественный
cos(x) cos x числовой вещественный
arctan(x) Arctg x числовой вещественный
ln(x) ln x числовой вещественный
exp(x) eх числовой вещественный
abs(x) | x | целый вещественный целый вещественный
sqr(x) x*x как для abs(x) как для abs(x)
Pi p нет вещественный
  round(x)   округление до ближайшего целого   вещественный     целый  
trunc(x) отбрасывание дробной части вещественный   целый  

 

Так как в Паскале нет операции возведения в степень, для возведения в степень х для х Ï Z воспользуемся основным логарифмическим тождеством при а >0, получим exp (x* ln(a)).

Для вычисления log ax используем формулу перехода к основанию е. Функции Arcsin(x) и Arccos(x) выражаем через Arctg(x).

 

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

 
 


Действие оператора присваивания заключается в вычислении значения выражения и присваивании этого значения переменной. Например, после выполнения операторов i:=5; i:= i +3 значение переменной i будет равно 8.

Тип переменной в левой части оператора присваивания должен быть совместим по присваиванию с типом выражения в правой части. Для разных типов требования совместимости по присваиванию различны. Любой целый тип совместим по присваиванию только с целым. Вещественный совместим по присваиванию и с целым, и с вещественным. После описания var j:integer; оператор j:=6/2 недопустим, так как операция деления формирует результат вещественного типа, который не может быть присвоен целому.

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

 

9. СИМВОЛЬНЫЙ ТИП

 

Имя символьного типа - char. Значениями символьного типа являются символы из определенного набора символов, который зависит от конкретной реализации языка. В этот набор входят некоторые символы алфавита и, возможно, другие символы. Среди них могут быть символы, не имеющие графических изображений (например, символ перехода к новой строке). Все символы пронумерованы. Их номера - коды. Множество значений символьного типа является упорядоченным множеством (чем больше код, тем больше символ). В различных реализациях символы могут быть упорядочены по-разному, но обязательно выполнение следующих условий:

1. Коды цифр - последовательные числа и '0' < '1'< '2' <...< '9'.

2. Прописные и строчные буквы должны быть упорядочены по алфавиту, но не требуется, чтобы коды были последовательными числами.

В ТР множеством значений символьного типа является множество символов из расширенной таблицы ASCII, состоящей из 256 символов. Первая половина таблицы (с кодами от 0 до 127) - неизменяемая, вторая (с кодами от 128 до 255) - альтернативная. Символы с кодами меньше 32 являются управляющими, пробел имеет код 32. Цифры, латинские буквы, некоторые знаки операций, разделители находятся в первой половине таблицы. Важная особенность: строчные латинские и прописные латинские буквы имеют последовательные коды. Альтернативная часть таблицы содержит буквы русского алфавита, символы псевдографики.

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

Стандартные функции, используемые при работе с символами:

chr(i) возвращаетсимвол по его коду i

ord(c) возвращает код символа с

Примеры:

1. Значением выражения ord(‘7’)-ord(‘0’) является число 7.

2. Значением выражения chr(ord(‘A’)+5) является шестая буква латинского алфавита.

 

10. ЛОГИЧЕСКИЙ ТИП

 

Имя логического типа - boolean. Множество значений: false и true. Значение логического типа занимает 1 байт. False (ложь) и true (истина) хранятся в памяти как 0 и 1 соответственно. Тип упорядочен: false<true.

 

10.1. Логические операции

 

Название Знак операции Запись на Паскале Приоритет операции
Отрицание not not a  
Конъюнкция and a and b  
Дизъюнкция or a or b  
Исключающее или (сложение по модулю 2) xor   a xor b    

 

Типы операндов и тип результата - boolean.

Результат логической операции определяется в соответствии с таблицей истинности (1 - true, 0 - false).

 

Таблица истинности

x y not x x and y x or y x xor y
           
           
           
           

 

Два выражения, соединенные одним из знаков сравнения, образуют логическое выражение, которое называется отношением. Все шесть операций сравнения (>, <, >=, <=, =, <>) определены над числовыми, символьным, логическим, перечисляемым, строковым типами.

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

Примеры логических выражений на Паскале:

1. Неравенство -2£ x <5 имеет вид (-2<= x) and (x <5).

2. Условие [-2; 5) имеет вид (x <-2) or (x >=5).

3. Высказывание «с - латинская буква» имеет вид

(с>=’A’) and (c<=’Z’) or (с>=’a’) and (c<=’z’).

В ТР по умолчанию, то есть если не указано иначе, при вычислении логического выражения операнды вычисляются до тех пор, пока значение логического выражения не станет определенным. Например, если значение первого операнда дизъюнкции - истина, то значение второго операнда вычисляться не будет. Если значение первого операнда конъюнкции - ложь, то значение второго операнда вычисляться не будет. С учетом сказанного, несмотря на то, что бинарные логические операции коммутативны, следует обращать внимание на последовательность операндов в логических выражениях.

Значение выражения (b<>0) and (a/b>10) определено при любых b, при перестановке операндов этого выражения значение не может быть вычислено при b=0, и при выполнении программы произойдет аварийный останов.

 

11. ПРОСТЫЕ ТИПЫ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ

 

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

Раздел описания типов:

 

 


Идентификатор - имя типа. Описание типа определяется правилами языка для каждого вида типов.

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



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 148; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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