Основы программирования (947332), страница 6
Текст из файла (страница 6)
п.). В Borland Pascal идентификаторпредставляет собой последовательность букв латинского алфавита (включаясимвол подчеркивания) и цифр, которая обязательно начинается с буквы, например: аааа, Ь121, Parametral, _а и т. п. Синтаксическая диаграмма идентификатора приведена на рис. 2.2. Остальные конструкции будут рассмотреныв последующих разделах.Семантику языка программирования закладывают в его компилятор. Таким образом, синтаксически корректная программа, написанная на языкепрограммирования, после преобразования ее в последовательность машинных команд обеспечит выполнение компьютером требуемых операций.2.2. Ст1^ктура программыПрограмма на Borland Pascal состоит из трех частей: заголовка, разделаописаний и раздела операторов.З а г о л о в о к программы не является обязательным, он состоит из служебного слова program и идентификатора - имени программы.Р а з д е л о п и с а н и й содержит описания всех используемых программой ресурсов (полей данных, подпрограмм и т.д.).Р а з д е л о п е р а т о р о в заключается в так называемые операторные скобки begin ...end и заканчивается точкой.
Между операторными скоб302. Простейшие конструкции языкаками записывают управляющие операторы программы, которые разделяютспециальным знаком ~ точкой с запятой «;». Если точка с запятой стоит перед end, то считается, что после точки с запятой стоит «пустой» оператор.В тексте программы возможны комментарии, которые помещают вфигурные скобки.Посмотрим, как выглядит на Borland Pascal программа, котораяреализует алгоритм Евклида для определения наибольшего общего делителядвух натуральных чисел, разработанный в примере 1.2:Program example; {заголовок программы}{раздел описаний}Var a,b:integer;{объявление переменных}{раздел операторов}BeginWrite ('Введите два натуральных числа:'); {запрашиваем вводданных}Readln(a,b);{вводим значения}while a<>b do{цикл-пока а^Ъ}if a>b then a:^a'b{если a>b, тогда a:=a-b}else b:-b-a;{иначе b:=b-a}Writeln(*Hauбoльшuй общий делитель равен \a); {выводим результатEnd.{конец программы}Программа названа «example».
Раздел описаний в данном случае включает только описание переменных (см. параграф 2.3). Раздел операторов содержит операторы ввода исходных данных, вычислений и вывода результатов.Начнем рассмотрение особенностей программирования на языкеBorland Pascal с проблемы описания данных.2.3. Константы и переменные. Типы переменныхЛюбая программа оперирует с некоторыми данными, используемыми врасчетах или определяющими последовательность выполнения действий.Все данные, с которыми оперирует программа на Borland Pascal, должныбыть описаны.Данные в программе могут присутствовать в виде констант и переменных.Константы.
Константы определяются один раз и не изменяются во время выполнения программы.Используют следующие типы констант:31Часть I. Основы алгоритмизации и процедурное программирование• целые и вещественные десятичные числа, например, 25, 6.12,0.125е10 (см. примечание);• шестнадцатеричные числа - должны начинаться со знака «$»,например, $64;• логические константы - true (истина) и false (ложь);• символьные константы - записываются либо в апострофах, например'А', либо в виде соответствующих кодов по таблице ASCII (русский варианттаблицы символов см. в приложении 2), причем в последнем случае передкодом ставится знак «#», например #65 (этот код соответствует символу Алатинское);• строки символов ~ записываются в апострофах, например 'ABCD'(см.
параграф 4.5);• конструкторы множеств (см. параграф 4.7);• «нулевой» адрес - nil (см. параграф 7.1).Примечания. 1. В программировании принято при записи вещественных чисел вместозапятой для разделения целой и дробной частей числа использовать точку.2. Обычно при записи в программе или выполнении операций ввода-вывода вещественные числа записывают в так называемом формате с фиксированной точкой^ указывая в начале целую часть числа, а затем, после точки, дробную, например: 0.5, -3.85 . Но иногда бываетудобно задавать числа в формате с плавающей точкой, т.е.
в виде мантиссы и порядка. Приэтом мантиссу записывают перед порядком и отделяют от него строчной или прописной латинской буквой «е», например: запись 1.5е-10 соответствует значению 1,5 х10 ~*^, а запись0.5Е23 соответствует значению 0,5x102^.Константы используются в двух формах: как литералы и как поименованные константы.Литерал представляет собой значение константы, записанное непосредственно в программе (например, в выражении 2+5.1*х использованы два литерала «2» и «5.1»).Поименованные константы объявляются в инструкции раздела описаний const. Обращение к ним осуществляется по имени (идентификатору).Под выражением при этом (рис.
2.3) понимают запись, состоящую из ранееЛитерал—^ Const /т~Ч Идентификаторконстанты•-И Выражение[ОтРис. 2.3. Синтаксическая диафамма конструкции <Обьявление констант>322. Простейшие конструкции языкаобъявленных констант, литералов, знаков операций (см. параграф 2.4) и стандартных функций abs, chr, hi, length, lo, ord, odd, pred, round, sizeof, str, succ,trunc (CM. приложение 1).Например;Const min='23; мах=45;aI6=$J0;chl=#94;ch2='a';stroka= *end\vl-[3,6,8..9];center=(max'min) div 2;{десятичные константы}{шестнадцатеричная константа}{символьные константы}{строковая константа}{конструктор множества}{выражение}Переменные.
Переменные - поименованные значения, которые могутизменяться в процессе выполнения программы. Их объявление также выполняют в разделе описаний программы, причем при этом указывается не только идентификатор переменной, но и ее тип (рис. 2.4). Обращение к переменным также осуществляют по идентификатору.Тип переменной определяет возможный набор значений данной переменной, размер ее внутреннего представления и множество операций, которые могут выполняться над переменной.На рис. 2.5 показана классификация типов переменных Borland Pascal.
Всоответствии с ней различают простые и структурные типы переменных.Простые (скалярные) типы описывают упорядоченные наборы значений. Они делятся на порядковые и вещественные.Группа г^оряд/совых типов объединяет типы переменных, набор значенийкоторых конечен, группа вещественных типов - типы с условно бесконечным набором значений.Порядковые типы переменных делятся на стандартные, перечисляемыеи отрезки. Стандартно заданы следующие типы:• целые типы - см. табл. 2.1;• булевский тип Boolean включает только два значения - false (0) и true(1), но в памяти значения данного типа занимают целый байт;• символьный тип Char определяет набор символов по таблице ASCII(см. приложение 2). Всего в таблице указано 255 кодов, для большинства изVarИдентификатор!переменнойТипОРис.
2.4. Синтаксическая диаграмма конструкции<Объявление переменных>33Часть L Основы алгоритмизации и процедурное программированиеТип1ПростойГПорядковыйJT Перечисление*- ОтрезокСтандартныйЦелоеКороткое целоеДлинное целоеСловоБайтБулевскийL СимволСтруктурныйтВещественныйггhЬI-ВещественныйОдинарной точностиДвойной точностиРасширенныйБольшое целоеМассивСтрокаЗапись|- Множествоh ФайлL УказательРис. 2.5. Классификация типовкоторых существует символьное представление. Это, например, буквы русского и латинского алфавитов, цифры и специальные знаки, такие как точка,запятая и т.
п.Нестандартные порядковые типы необходимо описывать при объявлении переменных или используя инструкцию объявления типа (рис. 2.6).Т а б л и ц а 2.1Название34ОбозначениеДиапазонзначенийДлина внутреннегопредставления,байтЦелоеInteger-32768..327672 (со знаком)Короткое целоеShortlnt.128..1271 (со знаком)Длинное целоеLonglnt.231..231 -14 (со знаком)БайтByte0..2551 (без знака)СловоWord0..655352 (без знака)2. Простейшие конструкции языка-G^y^^^^^^^'^-C^vr^^bQfРис. 2.6.
Синтаксическая диаграмма конструкции <Объявление типа>Перечисляемый тип формируется из значений, определенных программистом при объявлении типа. Перечень значений задают,через запятую вкруглых скобках, например:Var D:(Mon,The,Wed,Thu,Fri,Set,Sun); ...{переменная D может принимать только указанные значения}Примечание. Во внутреннем представлении значения перечисляемого типа кодируютсяцелыми числами, начиная с нуля.
Так, идентиф*1катору Мои будет соответствовать О, The - 1и т. д.Объявляя переменную перечисляемого типа, можно сначала определитьновый тип, а затем уже переменную этого типа, например:Туре Day=(Mon,The,Wed,Thu,FrhSet,Sun); {объявление нового типа}Var D.'Day;.., {объявление переменной данного типа}Тип переменной отрезок определяется как диапазон значений некоторого уже определенного типа. При его описании также можно использоватьконструкцию объявления типа, например:Туре Data=L31; {диапазон одного из целых типов}Var DataN:Data;..,или, не описывая тип отдельно, ту же переменную можно объявить следующим образом:VarDataN:L.31;...Вещественные типы используют для представления чисел, содержащихдробную часть.
Во внутреннем представлении мантисса и порядок вещественных чисел хранятся раздельно, причем количество разрядов под мантиссу и порядок регламентируются типом числа. Соответственно обработка вещественных чисел в компьютерах выполняется с некоторой конечной точностыо, которая зависит от количества двоичных разрядов, отведенных дляразмещения мантиссы. Количество разрядов для записи порядка числа определяет диапазон чисел, для представления которых можно использовать разрядную сетку данного типа. В табл. 2.2 приведены характеристики вещественных типов Borland Pascal.35Часть L Основы алгоритмизации и процедурное программированиеТ а б л и ц а 2.2НазваниеВещественныйОбозначениеRealКоличестводесятичныхзначащихцифрДиапазонизмененияпорядкаДлинавнутреннегопредставления,,байт11..Л2-39...+386•ОдинарнойточностиSingle7...8-45...+384ДвойнойточностиDouble15...16-324...+3088РасширенныйExtended19...20-4951...493210«Большоецелое»Comp19...20-263+1...