Лекции по программированию на Паскале. Часть 1




1. О С Н О В Н ЫЕ П О Н Я Т И ЯА Л Г О Р И Т М И Ч Е С К О Г О Я З ЫК А СОСТАВ ЯЗЫКА. Обычный разговорный язык состоит из четырех основныхэлементов: символов, слов, словосочетаний и предложений. Алгоритми-ческий язык содержит подобные элементы, только слова называют элемен-тарными конструкциями, словосочетания-выражениями, предложения-опера-торами. Символы, элементарные конструкции, выражения и операторысоставляют иерархическую структуру, поскольку элементарные конструк-ции образуются из последовательности символов, выражения-это последо-вательность элементарных конструкций и символов, а оператор-последо-вательность выражений, элементарных конструкций и символов. ОПИСАНИЕ ЯЗЫКА есть описание четырех названных элементов. Описаниесимволов заключается в перечислении допустимых символов языка. Подописанием элементарных конструкций понимают правила их образования.Описание выражений-это правила образования любых выражений, имеющихсмысл в данном языке. Описание операторов состоит из рассмотрениявсех типов операторов, допустимых в языке. Описание каждого элементаязыка задается его СИНТАКСИСОМ и СЕМАНТИКОЙ. Синтаксические определе-ния устанавливают правила построения элементов языка. Семантика опре-деляет смысл и правила использования тех элементов языка, для которыхбыли даны синтаксические определения. СИМВОЛЫязыка-это основные неделимые знаки, в терминах которых пи-шутся все тексты на языке. ЭЛЕМЕНТАРНЫЕ КОНСТРУКЦИИ -это минимальные единицы языка, имеющиесамостоятельный смысл. Они образуются из основных символов языка. ВЫРАЖЕНИЕ в алгоритмическом языке состоит из элементарных конс-трукций и символов, оно задает правило вычисления некоторого значе-ния. ОПЕРАТОР задает полное описание некоторого действия, которое необ-ходимо выполнить. Для описания сложного действия может потребоватьсягруппа операторов. В этом случае операторы объединяются в СОСТАВНОЙОПЕРАТОР или БЛОК. Действия, заданные операторами, выполняются над ДАННЫМИ. Предложе-ния алгоритмического языка, в которых даются сведения о типах данных,называются ОПИСАНИЯМИ или неисполняемыми операторами. Объединенная единым алгоритмом совокупность описаний и операторовобразует ПРОГРАММУ на алгоритмическом языке. В процессе изучения алгоритмического языка необходимо отличать ал-горитмический язык от того языка, с помощью которого осуществляетсяописание изучаемого алгоритмического языка. Обычно изучаемый язык на-зывают просто языком, а язык, в терминах которого дается описаниеизучаемого языка - МЕТАЯЗЫКОМ. Синтаксические определения могут быть заданы формальными или не-формальным способами. Существуют три формальных способа: -металингвистическая символика, называемая Бэкуса-Наура формулами; -синтаксические диаграммы; -скобочные конструкции. Мы в последующем изложении будем пользоваться неформальным спосо-бом. 2. О С Н О В Н ЫЕ С И М В О Л ЫОсновные символы языка-буквы, цифры и специальные символы-состав-ляют его алфавит. ТУРБО ПАСКАЛЬ включает следующий набор основныхсимволов: 1) 26 латинских строчных и 26 латинских прописных букв: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 2) _ подчеркивание 3) 10 цифр: 0 1 2 3 4 5 6 7 8 9 4) знаки операций: + - * / = <> < > <= >=:= @ 5) ограничители:., ' () [ ] (..) { } (* *)..:; 6) спецификаторы: ^ # $ 7) служебные (зарезервированные) слова: ABSOLUTE EXPORTS LIBRARY SETASSEMBLER EXTERNAL MOD SHLAND FAR NAME SHRARRAY FILE NIL STRINGASM FOR NEAR THENASSEMBLER FORWARD NOT TOBEGIN FUNCTION OBJECT TYPECASE GOTO OF UNITCONST IF OR UNTILCONSTRUCTOR IMPLEMENTATION PACKED USESDESTRUCTOR IN PRIVATE VARDIV INDEX PROCEDURE VIRTUALDO INHERITED PROGRAM WHILEDOWNTO INLINE PUBLIC WITHELSE INTERFACE RECORD XOREND INTERRUPT REPEATEXPORT LABEL RESIDENT Кроме перечисленных, в набор основных символов входит пробел. Про-белы нельзя использовать внутри сдвоенных символов и зарезервирован-ных слов. 3. Э Л Е М Е Н Т А Р Н ЫЕ К О Н С Т Р У К Ц И И Элементарные конструкции языка ПАСКАЛЬ включают в себя имена, чис-ла и строки. Имена (идентификаторы) называют элементы языка - константы, метки,типы, переменные, процедуры, функции, модули, объекты. Имя - это пос-ледовательность букв и цифр, начинающаяся с буквы. В именах может ис-пользоваться символ _ подчеркивание. Имя может содержать произвольноеколичество символов, но значащими являются 63 символа. Не разрешается в языке ПАСКАЛЬ использовать в качестве имен слу-жебные слова и стандартные имена, которыми названы стандартные конс-танты, типы, процедуры, функции и файлы. Для улучшения наглядности программы в нее могут вставляться пробе-лы. По крайней мере один пробел требуется вставить между двумяпоследовательными именами, числами или служебными и стандартными име-нами. Пробелы нельзя использовать внутри имен и чисел. Примеры имен языка ПАСКАЛЬ: A b12 r1m SIGMA gamma I80_86 Числа в языке ПАСКАЛЬ обычно записываются в десятичной системесчисления. Они могут быть целыми и действительными. Положительныйзнак числа может быть опущен. Целые числа записываются в форме бездесятичной точки, например: 217 -45 8954 +483 Действительные числа записываются в форме с десятичной точкой илив форме с использованием десятичного порядка, который изображаетсябуквой Е: 28.6 0.65 -0.018 4.0 5Е12 -1.72Е9 73.1Е-16 ПАСКАЛЬ допускает запись целых чисел и фрагментов действительныхчисел в форме с порядком в шестнадцатиричной системе счисления: $7F $40 $ABC0 Строки в языке ПАСКАЛЬ - это последовательность символов, записан-ная между апострофами. Если в строке в качестве содержательного сим-вола необходимо употребить сам апостроф, то следует записать дваапострофа. Примеры строк: 'СТРОКА' 'STRING' 'ПРОГРАММА' 'АД''ЮТАНТ' 4. К О Н Ц Е П Ц И Я Т И П АД Л Я Д А Н Н ЫХ В математике принято классифицировать переменные в соответствии снекоторыми важными характеристиками. Производится строгое разграниче-ние между вещественными, комплексными и логическими переменными, меж-ду переменными, представляющими отдельные значения и множество значе-ний и так далее. При обработке данных на ЭВМ такая классификация еще более важна. Влюбом алгоритмическом языке каждая константа, переменная, выражениеили функция бывают определенного типа. В языке ПАСКАЛЬ существует правило: тип явно задается в описаниипеременной или функции, которое предшествует их использованию. Кон-цепция типа языка ПАСКАЛЬ имеет следующие основные свойства: -любой тип данных определяет множество значений, к которому при-надлежит константа, которые может принимать переменная или выражение,или вырабатывать операция или функция; -тип значения, задаваемого константой, переменной или выражением,можно определить по их виду или описанию; -каждая операция или функция требует аргументов фиксированного ти-па и выдает результат фиксированного типа. Отсюда следует, что транслятор может использовать информацию о ти-пах для проверки вычислимости и правильности различных конструкций. Тип определяет: -возможные значения переменных, констант, функций, выражений, при-надлежащих к данному типу; -внутреннюю форму представления данных в ЭВМ; -операции и функции, которые могут выполняться над величинами,принадлежащими к данному типу. Обязательное описание типа приводит к избыточности в тексте прог-рамм, но такая избыточность является важным вспомогательным средс-твом разработки программ и рассматривается как необходимое свойствосовременных алгоритмических языков высокого уровня. В языке ПАСКАЛЬсуществуют скалярные и структурированные типы данных. К cкалярным типам относятся стандартные типы и типы, определяе-мые пользователем. Стандартные типы включают целые, действительные, символьный,логические и адресный типы. Типы, определяемые пользователем, - пере-числяемый и интервальный. Структурированные типы имеют четыре разновидности: массивы, мно-жества, записи и файлы. Кроме перечисленных, TURBO PASCAL включает еще два типа - проце-дурный и объектный. Из группы скалярных типов можно выделить порядковые типы,которые характеризуются следующими свойствами: -все возможные значения порядкового типа представляют собойограниченное упорядоченное множество; -к любому порядковому типу может быть применена стандартнаяфункция Ord, которая в качестве результата возвращает порядко-вый номер конкретного значения в данном типе; -к любому порядковому типу могут быть применены стандартныефункции Pred и Succ, которые возвращают предыдущее и последую-щее значения соответственно; -к любому порядковому типу могут быть применены стандартные функ-ции Low и High, которые возвращают наименьшее и наибольшее значениявеличин данного типа. В языке ПАСКАЛЬ введены понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняетсяодно из двух условий: -Т1 и Т2 представляют собой одно и то же имя типа; -тип Т2 описан с использованием типа Т1 с помощью равенства илипоследовательности равенств. Например: type T1 = Integer; T2 = T1; T3 = T2; Менее строгие ограничения определены совместимостью типов. Напри-мер, типы являются совместимыми, если: -они эквивалентны; -являются оба либо целыми, либо действительными; -один тип - интервальный, другой - его базовый; -оба интервальные с общим базовым; один тип - строковый, другой - символьный. В ТУРБО ПАСКАЛЬ ограничения на совместимость типов можно обойти спомощью приведения типов. Приведение типов позволяет рассматриватьодну и ту же величину в памяти ЭВМ как принадлежащую разным типам.Для этого используется конструкция Имя_Типа(переменная или значение). Напрмер, Integer('Z') представляет собой значение кода символа 'Z' в двухбайтном представ-лении целого числа, а Byte(534) даст значение 22, поскольку целое число 534 имеет тип Word и занима-ет два байта, а тип Byte занимает один байт, и в процессе приведениястарший байт будет отброшен. 5. С Т А Н Д А Р Т Н ЫЕ Т И П ЫД А Н Н ЫХ К стандартным относятся целые, действительные, логические,символьный и адресный типы. ЦЕЛЫЕ типы определяют константы, переменные и функции, значениякоторых реализуются множеством целых чисел, допустимых в данной ЭВМ. тип диапазон значений требуемая память__________________________________________________________Shortint -128.. 127 1 байтInteger -32768.. 32767 2 байтаLongint -2147483648.. 2147483647 4 байтаByte 0.. 255 1 байтWord 0.. 65535 2 байта__________________________________________________________ Над целыми операндами можно выполнять следующие арифметическиеоперации: сложение, вычитание, умножение, деление, получение остаткаот деления. Знаки этих операций: + - * div mod Результат арифметической операции над целыми операндами есть вели-чина целого типа. Результат выполнения операции деления целых величинесть целая часть частного. Результат выполнения операции полученияостатка от деления - остаток от деления целых. Например: 17 div 2 = 8, 3 div 5 = 0. 17 mod 2 = 1, 3 mod 5 = 3. Операции отношения, примененные к целым операндам, дают результатлогического типа TRUE или FALSE (истина или ложь). В языке ПАСКАЛЬ имеются следующие операции отношения: равенство =,неравенство <>, больше или равно >=, меньше или равно <=, больше >,меньше <. К аргументам целого типа применимы следующие стандартные (встроен-ные) функции, результат выполнения которых имеет целый тип: Abs(X), Sqr(X), Succ(X), Pred(X), и которые определяют соответственно абсолютное значение Х, Х в квад-рате, Х+1, Х-1. Следующая группа стандартных функций для аргумента целого типа да-ет действительный результат: Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X). Эти функции вычисляют синус, косинус и арктангенс угла, заданногов радианах, логарифм натуральный, экспоненту и корень квадратный со-ответственно. Результат выполнения функции проверки целой величины на нечетностьOdd(X) имеет значение истина, если аргумент нечетный, и значениеложь, если аргумент четный: X=5 Odd(X)=TRUE, X=4 Odd(X)=FALSE. Для быстрой работы с целыми числами определены процедуры: Inc(X) X:=X+1 Inc(X,N) X:=X+N Dec(X) X:=X-1 Dec(X,N) X:=X-N ДЕЙСТВИТЕЛЬНЫЕ типы определяет те данные, которые реализуютсяподмножеством действительных чисел, допустимых в данной ЭВМ. Тип Диапазон Количество цифр Требуемая значений мантиссы память (байт)---------------------------------------------------------------Real 2.9e-39.. 1.7e+38 11 6Single 1.5e-45.. 3.4e+38 7 4Double 5.0e-324.. 1.7e+308 15 8Extended 3.4e-4932.. 1.1e+4932 19 10Comp -9.2e+18.. 9.2e+18 19 8--------------------------------------------------------------- Тип Real определен в стандартном ПАСКАЛЕ и математическим сопро-цессором не поддерживается. Остальные действительные типы определены стандартом IEEE 457 и ре-ализованы на всех современных компьютерах. Для их использования при наличии сопроцессора или при работе наЭВМ типа 80486 необходимо компилировать программу с ключом {$ N+}, апри отсутствии сопроцессора - с ключами {$N-,E+}. Тип Comp хотя и относится к действительным типам, хранит толькодлинные целые значения. Над действительными операндами можно выполнять следующие арифмети-ческие операции, дающие действительный результат: сложение +, вычитание -, умножение *, деление /. К величинам действительного типа применимы все операции отношения,дающие булевский результат. Один из операндов, участвующих в этих операциях, может быть целым. К действительным аргументам применимы функции, дающие действитель-ный результат: Abs(X), Sqr(X), Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X),Sqrt(X), Frac(X), Int(X), Pi. Функция Frac(X) возвращает дробную часть X, функция Int(X) - целуючасть X. Безаргументная функция Pi возвращает значение числа Пи действи-тельного типа. К аргументам действительного типа применимы также функции Trunc(X) и Round(X), дающие целый результат. Первая из них выделяет целую часть действи-тельного аргумента путем отсечения дробной части, вторая округляетаргумент до ближайшего целого. ЛОГИЧЕСКИЙ тип (Boolean) определяет те данные, которые могут при-нимать логические значения TRUE и FALSE. К булевским операндам применимы следующие логические операции: not and or xor. Логический тип определен таким образом, что FALSE < TRUE. Это поз-воляет применять к булевским операндам все операции отношения. В ТУРБО ПАСКАЛЬ введены еще разновидности логического типа:ByteBool, WordBool и LongBool, которые занимают в памяти ЭВМ один, дваи четыре байта соответственно. СИМВОЛЬНЫЙ тип (Char) определяет упорядоченную совокупность симво-лов, допустимых в данной ЭВМ. Значение символьной переменной иликонстанты - это один символ из допустимого набора. Символьная константа может записываться в тексте программы тремяспособами: -как один символ, заключенный в апострофы, например: 'A' 'a' 'Ю' 'ю'; -с помощью конструкции вида #K, где K - код соответствущего симво-ла, при этом значение K должно находиться в пределах 0..255; -с помощью конструкции вида ^C, где C - код соответствущего управ-ляющего символа, при этом значение C должно быть на 64 большекода управляющего символа. К величинам символьного типа применимы все операции отношения. Для величин символьного типа определены две функции преобразования Ord(C) Chr(K). Первая функция определяет порядковый номер символа С в наборе сим-волов, вторая определяет по порядковому номеру К символ, стоящий наК-ом месте в наборе символов. Порядковый номер имеет целый тип. К аргументам символьного типа применяются функции, которые опреде-ляют предыдущий и последующий символы: Pred(C) Succ(C). Pred('F') = 'E'; Succ('Y') = 'Z'. При отсутствии предыдущего или последующего символов значение со-ответствующих функций не определено. Для литер из интервала 'a'..'z' применима функция UpCase(C), кото-рая переводит эти литеры в верхний регистр 'A'..'Z'. АДРЕСНЫЙ тип (Pointer) определяет переменные, которые могут содер-жать значения адресов данных или фрагментов программы. Для храненияадреса требуются два слова (4 байта), одно из них определяет сегмент,второе - смещение. Работа с адресными переменными (указателями) будет рассмотренапозже, сейчас отметим, что для получения значения адреса какой-либопеременной введена унарная операция @. 6. К О Н С Т А Н Т ЫТип констант в языке ПАСКАЛЬ определяется по их виду: константыцелого типа - это целые числа, не содержащие десятичной точки, конс-танты действительного типа - действительные числа, логические конс-танты - логические значения TRUE и FALSE, символьные константы - либостроки длиной в один символ, либо конструкции вида #K или ^K. Язык ПАСКАЛЬ допускает использовать синонимы для обозначения конс-тант, в этом случае текст программы содержит раздел описанияконстант, например: {} 7. П Е Р Е М Е Н Н ЫЕ.И Н И Ц И А Л И З А Ц И Я П Е Р Е М Е Н Н ЫХ Тип переменных определяется пользователем в разделе описания пере-менных:{} В настоящее время в профессиональном программировании принятозаписывать имена переменных с использованием так называемой венгерс-кой нотации. Венгерская нотация - это соглашение о наименованиях переменных ифункций. Соглашение широко используется при программировании на язы-ках PASCAL, C и в среде WINDOWS. Венгерская нотация основывается на следующих принципах: -имена переменных и функций должны содержать префикс, описывающийих тип; -имена переменных и функций записываются полными словами или сло-восочетаниями или их сокращениями, но так, чтобы по имени можно былопонять назначение переменной или действие, выполняемое функцией. Префиксы записываются малыми буквами, первая буква каждого слова -заглавная, префиксы и слова записываются либо слитно, либо через сим-вол _ (подчеркивание). Для языка PASCAL могут быть рекомендованы следующие префиксы дляскалярных переменных и функций: Префикс Тип---------------------by Bytesh Shortinti Integerw Wordl Longintr Realsi Singled Doublee Extendedc Compch Charb Booleanp Pointerx,у координаты символа или точки на экране Для величин структурированного типа могут быть использованы следу-ющие префиксы: a Arrays Stringsz Stringzse Setre Recordf Filet Text Например: rV, arVector[1..20], sName, iCount. В откомпилированной программе для всех переменных отведено место впамяти, и всем переменным присвоены нулевые значения. Для задания начальных значений переменным (инициализации перемен-ных) TURBO PASCAL позволяет присваивать начальные значения переменнымодновременно с их описанием. Для этого используется конструкция имя переменной: тип = значение; которая должна быть размещена в разделе описания констант, например: const rWeight: Real = 0.4; 8. В ЫР А Ж Е Н И Я Выражение состоит из констант, переменных, указателей функций,знаков операций и скобок. Выражение задает правило вычисления некото-рого значения. Порядок вычисления определяется старшинством (приори-тетом) содержащихся в нем операций. В языке ПАСКАЛЬ принят следующийприоритет операций: 1. унарная операция not, унарный минус -, взятие адреса @ 2. операции типа умножения * / div mod and shl shr 3. операции типа сложения + - or xor 4. операции отношения = <> < > <= >= in {} Выражения входят в состав многих операторов языка ПАСКАЛЬ, а такжемогут быть аргументами встроенных функций. 9. О П Е Р А Т О Р П Р И С В А И В А Н И Я Тип переменной и тип выражения должны совпадать кроме случая, ког-да выражение относится к целому типу, а переменная - к действительно-му. При этом происходит преобразование значения выражения кдействительному типу.{}


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: