Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Раздел 2. Программирование на языке Pascal
Тема 2.1 Основные элементы языка Pascal.
Структура программы на Паскале. По определению стандартного Паскаля программа состоит из заголовка программы и тела программы (блока), за которым следует точка — признак конца программы. В свою очередь, блок содержит разделы описаний и раздел операторов. Program <имя программы>; Label <раздел меток>; Const <раздел констант>; Туре <раздел типов>; Var <раздел переменных>; Procedure (Function) <раздел подпрограмме Begin <раздел операторов> End. Раздел операторов имеется в любой программе и является основным. Предшествующие разделы носят характер описаний и не все обязательно присутствуют в каждой программе. В Турбо Паскале, в отличие от стандарта, возможно следующее: • отсутствие заголовка программы; • разделы Const, Type, Var, Label могут следовать друг за другом в любом порядке и встречаться в разделе описаний сколько угодно раз. Примеры программ. Уже было сказано, что Паскаль разрабатывался Н.Виртом как учебный язык. Основной принцип, заложенный в нем, — это поддержка структурной методики программирования. Этот же принцип лежит в основе псевдокода, который мы здесь называем Алгоритмическим языком (АЯ). По сути дела, расхождение между АЯ и Паскалем заключается в следующем: АЯ — русскоязычный, Паскаль — англоязычный; синтаксис Паскаля определен строго и однозначно в отличие от сравнительно свободного синтаксиса АЯ. Запись программы на Паскале похожа на английский перевод алгоритма, записанного на Алгоритмическом языке. Сравните алгоритм деления простых дробей, записанный на АЯ, с соответствующей программой на Паскале. алг деление дробей; Program Division; цел a,b,c,d,m,n; Var a,b,c,d,m,n: Integer; нач ввод(a,b,с,d); Begin ReadLn(a,b,с, d); m:=a*d; m:=a*d; n:=b*c; n:=b*c; вывод(m,n) WriteLn(m,n) Кон. End. Здесь использовано следующее равенство:
Даже не заглядывая в учебник по Паскалю, в данной программе можно все понять. Для этого достаточно знать английский язык. Заголовок программы начинается со слова Program (программа), за которым следует произвольное имя, придуманное программистом (division — деление). Раздел описания переменных начинается со слова Var (variables — переменные), за которым следует список переменных. Тип указывается после двоеточия словом integer — целый. Начало и конец раздела операторов программы отмечаются словами Begin (начало) и End (конец). В конце программы обязательно ставится точка.
Ввод исходных данных с клавиатуры производится с помощью процедуры ReadLn (read line — читать строку). На клавиатуре набирают четыре числа, отделяемые друг от друга пробелами, которые отражаются строкой на экране дисплея. После набора чисел нажимают на клавишу ввода. Операторы присваивания в Паскале записываются так же, как в АЯ. Знак умножения — * (звездочка). Вывод результатов на экран дисплея производится с помощью процедуры WriteLn (write line — писать в строку). В рассмотренном примере два целых числа тип выведутся в строчку, курсор на экране перейдет в начало следующей свободной строки и работа программы завершится. Необходимо строгое соблюдение правил правописания (синтаксиса) программы. В частности, в Паскале однозначно определено назначение знаков пунктуации. Точка с запятой (;) ставится в конце заголовка программы, в конце раздела описания переменных, после каждого оператора. Перед словом End точку с запятой можно не ставить. Запятая (,) является разделителем элементов во всевозможных списках: списке переменных в разделе описания, списке вводимых и выводимых величин. Строгий синтаксис в языке программирования необходим прежде всего для транслятора. Транслятор — это программа, которая исполняется формально. Если, допустим, разделителем в списке перемен- ных должна быть запятая, то любой другой знак будет восприниматься как ошибка. Если точка с запятой является разделителем операторов, то транслятор в качестве оператора воспринимает всю часть текста программы от одной точки с запятой до другой. Если вы забыли поставить этот знак между какими-то двумя операторами, то транслятор будет принимать их за один, что неизбежно приведет к ошибке. Основное назначение синтаксических правил — придать однознач ный смысл языковым конструкциям. Если какая-то конструкция может трактоваться двусмысленно, значит, в ней обязательно содержится ошибка. Лучше не полагаться на интуицию, а выучить правила языка.
В дальнейшем мы строго опишем синтаксические правила Паскаля, а пока для получения первоначального представления о языке обратимся еще к нескольким примерам программирования несложных алгоритмов. «Оттранслируем» алгоритм вычисления факториала натурального числа (N \) на Паскале. Из этого примера, во-первых, видно, как записывается на Паскале оператор цикла с предусловием (цикл-пока): While <условие выпог.нения> Do <тело цикла> (while — пока, Do — делать). Если тело цикла содержит последовательность операторов, то говорят, что оно образует составной оператор, в начале и в конце которого надо писать Begin и End. Служебные слова Begin и End часто называют операторными скоб ками, которые объединяют несколько операторов в один составной. Если же тело цикла — один оператор (не составной), то операторных скобок не требуется. Тогда транслятор считает, что тело цикла заканчивается на ближайшем знаке «;». Во-вторых, из примера видно, что в Паскале нет специальных слов для обозначения начала цикла (нц) и конца цикла (кц). На все случаи есть универсальные слова Begin и End. Рассмотрим еще один примерного уравнения. В этой программе по сравнению с предыдущими появилось много новых элементов. Имя вещественного типа в Паскале —r e a l. Цикл с постусловием (цикл-до) программируется оператором Repeat <тело цикла> Until <условие окончания> (здесь Repeat — повторять, Until — до). Тело цикла может быть как одиночным, так и составным оператором, однако употребления Begin и End не требуется, поскольку сами слова Repeat и Until выполняют роль операторных скобок. Знак не равно в Паскале пишется так: <>, знак больше или равно: >=. Правила записи арифметических выражений мы подробно рассмотрим немного позже. В формулах вычисления корней используется стандартная функция квадратного корня (Vx), которая в Паскале записывается так: sqrt (x). Порядок выполнения операций в выражении определяется скобками и старшинством операций. Старшинство операций такое же, как и в алгебре. Операции одинакового старшинства выполняются в порядке их записи (слева направо). Ветвление в Паскале программируется с помощью условного оператора, который имеет следующую форму: If <условие> Then <оператор 1> Else <оператор 2> (здесь If — если, Then — то, Else — иначе). Операторы 1 и 2 могут быть как простыми, так и составными. Составной оператор следует заключать в операторные скобки Begin и End. Так же, как и в Алгоритмическом языке, возможно использование неполной формы условного оператора: if <условие> then <оператор> Характерной чертой данной программы является использование в тексте комментариев. Комментарий — это любая последовательность символов, заключенных в фигурные скобки {...}. Можно употреблять также следующие ограничители комментариев (*...*). Комментарий не определяет никаких действий программы и является лишь пояснительным текстом. Он может присутствовать в любом месте программы, где можно поставить пробел. Программист пишет комментарии не для компьютера, а для себя. Комментарий придает тексту программы большую ясность. Хорошо откомментированные программы называют самодокументированными. Во многих подобных программах объем комментариев превышает объем вычислительных операторов.
Удачное использование комментариев — признак хорошего стиля программирования. Чтобы выполнить программу на ЭВМ, ее нужно ввести в память, оттранслировать и исполнить. Для того чтобы проделать всю эту работу, на компьютере должны быть специальные средства программного обеспечения. На ПК они составляют систему Турбо Паскаль. Алфавит. Алфавит языка состоит из множества символов, включающих в себя буквы, цифры и специальные символы. Латинские буквы: от А до Z (прописные) и от а до z (строчные). Цифры: О, 1, 2, 3, 4, 5, 6, 7, 8, 9. Шестнадцатеричные цифры: О, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, E, F. Специальные символы: + — */ = <>[].,():;{}А@$#. Следующие комбинации специальных символов являются едиными символами (их нельзя разделять пробелами): := знак присваивания; <= меньше или равно; >= больше или равно; (* *) ограничители комментариев <> не равно; (используются наряду с { }); (..) эквивалент [ ]. Пробелы — символ пробела (ASCII-32) и все управляющие символы кода ASCII (от 0 до 31). К спецсимволам относятся служебные слова, смысл которых определен однозначно. Служебные слова не могут быть использованы для других целей. С точки зрения языка это единые символы. Вот список служебных слов Турбо Паскаля:
Последние версии языка содержат еще ряд служебных слов, относящихся к работе с объектами и встроенным ассемблером. Идентификаторы. Идентификатором называется символическое имя определенного программного объекта. Такими объектами являются имена констант, переменных, типов данных, процедур и функций, программ. С помощью синтаксической диаграммы идентификатор можно определить, как показано на рис. 3.
Расшифровать это можно так: идентификатор — это любая последовательность букв и цифр, начинающаяся с буквы. В Турбо Паскале к буквам приравнивается также знак подчеркивания. Строчные и прописные буквы в идентификаторах и служебных словах не различаются. Например: max, мах, Мах и тАх — одно и то же имя.
Длина идентификатора может быть произвольной, но значащими являются только первые 63 символа. Комментарии. Следующие конструкции представляют собой комментарии и поэтому игнорируются компилятором: {любой текст, не содержащий символ «}» } (* любой текст, не содержащий символы «*)»*) Буквы русского алфавита употребляются только в комментариях, в литерных и текстовых константах. Строка, начинающаяся с символов {$ или (*$, является директивой компилятора. За этими символами следует мнемоника команды компилятора.
Тема 2.2 Переменные и константы. Типы данных. Концепция типов данных является одной из центральных в любом языке программирования. С типом величины связаны три ее свой ства: форма внутреннего представления, множество принимаемых значений и множество допустимых операций. Турбо Паскаль характеризуется большим разнообразием типов данных, отраженном на рис. 4. В стандартном Паскале отсутствует строковый тип. Кроме того, в Турбо Паскале целые и вещественные — это группы типов. В старших версиях Турбо Паскаля существует процедурный тип и тип объект. Каждый тип имеет свой идентификатор. В табл. 2 представлена информация о простых типах данных, определенных в Турбо Паскале. Для вещественных типов в скобках указано количество сохраняемых значащих цифр мантиссы в десятичном представлении числа.
табл. 2
В стандарте Паскаля из вещественных типов определен только тип Real; из целых типов — Integer. Типы Single, Double, Extended употребляются в Паскаль-программах только в том случае, если ПК снабжен сопроцессором «плавающей арифметики» (для процессоров IBM PC, начиная с Intel-80486 и старше, это условие всегда выполняется). Тип данных называется порядковым, если он состоит из счетного количества значений, которые можно пронумеровать. Отсюда следует, что на этом множестве значений существуют понятия «следующий» и «предыдущий». Описание переменных. Для всех переменных величин, используемых в программе, должны быть указаны их типы. Это делается в разделе переменных программы. Структура раздела переменных показана на рис. 5.
Пример раздела переменных программы: Var m,n,k: Integer; х,у,z: Real; Symbol: Char; Константы. Тип константы определяется по контексту, т.е. по форме ее записи в программе. Целые десятичные константы записываются в обычной форме целого числа со знаком или без знака, например 25, -24712, 376. Целые шестнадцатеричные константы записываются с префиксом $. Они должны находиться в диапазоне от $00000000 до SFFFFFFFF.
Вещественные константы с фиксированной точкой записываются в обычной форме десятичного числа с дробной частью. Разделитель целой и дробной части — точка, например: 56.346, 0.000055, -345678.0. Вещественные константы с плавающей точкой имеют форму: <мантисса>Е<порядок> Здесь мантисса — целое или вещественное число с фиксированной точкой, порядок — целое число со знаком или без, например 7Е-2 (7-e-2), 12.25Е6 (12,25-106), 1Е-25 (10"25). Символьная константа — любой символ алфавита, заключенный в апострофы, например, 'W, '!', '9'. Логическая константа — одно из двух слов: true, false. Строковая константа — строка символов, заключенная в апострофы, например Turbo Pascal', 'Ответ:', '35-45-79'. Максимальная длина — 255 символов. Константе может быть поставлено в соответствие определенное имя. Назначение имени константе производится в разделе констант программы. Структура раздела констант показана на рис. 6. В дополнение к сказанному заметим, что в Турбо Паскале допустимо употребление типизированных констант. Типизированная константа аналогична переменной, которой задается начальное значение. Причем происходит это на этапе компиляции. Описание типизированной константы приведено на рис. 7. В Турбо Паскале имеется ряд имен, зарезервированных за определенными значениями констант. Ими можно пользоваться без предварительного определения в программе (табл. 3). Таблица 3
Типы пользователя. Один из принципиальных моментов состоит в том, что пользователю разрешается определять свои типы данных. Типы пользователя всегда базируются на стандартных типах данных Паскаля. Для описания типов пользователя в Паскале существует раздел типов, структура которого представлена на рис. 8. Перечисляемый тип (рис. 9) задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Определенное имя типа затем используется для описания переменных. Например: Type Gaz=(C,0,N, F); Metal=(Fe,Co,Na,Cu, Zn); Var Gl,G2,G3:Gaz; Metl,Met2:Metall; Day:(Sun,Mon,Tue,Wed,Thu,Fri,Sat) Здесь Gaz и Metal — имена перечисляемых типов, которые ставятся в соответствие переменным Gl, G2, G3 и Metl, Met2. Переменной Day назначается перечисляемый тип, которому не присвоено имя. Значения, входящие в перечисляемый тип, являются константами. Действия над ними подчиняются правилам, применимым к константам. Каждое значение в перечисляемом типе занимает в памяти 2 байта. Поэтому число элементов не должно превышать 65535. Перечисляемый тип — упорядоченное множество. Его элементы пронумерованы начиная от 0 в порядке следования в описании. В программе, в которой присутствует данное выше описание, возможен такой фрагмент: if Day=Sun then WriteLn('Ура!Сегодня выходной!'); Интервальный тип (рис. 10) задается как упорядоченное ограниченное подмножество некоторого порядкового типа. Рис. 10 Порядковый номер первой константы не должен превышать номера второй константы в соответствующем базовом типе. При исполнении программы автоматически контролируется принадлежность значений переменной интервального типа установленному диапазону. При выходе из диапазона исполнение программы прерывается. Пример: Type Numbers=l..31; Alf='A'..'Z'; Var Data:Numbers;; Bukva:Alf;
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-04-05; просмотров: 155; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.51.241 (0.069 с.) |