программирование на паскале2. Учебное пособие по курсу Высокоуровневые методы информатики и программирования для студентов Гуманитарноприкладного института
Скачать 0.89 Mb.
|
Часть . Основы программирования на Паскале1.1. Структура простейшей Паскаль-программыПростейшая программа на Паскале состоит из одного файла и имеет следующую структуру (см. рис.1).
Рис.1 а) общая схема простейшей Паскаль-программы; б) пример программы вычисления суммы двух чисел. Программа начинается с заголовка (program Имя_программы). Затем идет ключевое слово1 Var, после которого даются описания переменных2 программы. Далее между ключевых слов begin и end записывается операторы программы; эти слова в паскале играют роль скобок, т. е. объединяют компоненты в единое целое. Обратим внимание, что последнее слово end программы требует после себя точку. Любая программасостоит из инструкций языка. Инструкции могут быть либо описаниями, либо операторами. Операторы - это исполняемые инструкции; при компиляции они переводятся в одну или несколько машинных команд. Описания - это неисполняемые инструкции языка; они используются компилятором для распределения памяти под данные и определения характера операций, которые могут выполняться с этими данными. Описания характеризуют область значений данных. Фрагмент Паскаль-программы, начинающийся со слова Var и содержащий описания переменных, называется разделом переменных. Программа может иметь и другие разделы описаний (констант, типов и т. д.); но простейшая программа, приведенная на рис.1,а, также дает возможность решить многие практически важные задачи. В любое место программы можно включить комментарии - поясняющие фразы, окаймленные фигурными скобками. Комментарии компилятором не обрабатываются и служат только для пояснения текста программы. В Объектном Паскале также допускается использовать как комментарий часть строки программы от символов // до конца строки. 1.2. Данные и операции над ними1.2.1. Свойства ячейки памяти. Переменные и константыКомпьютерные программы, для написания которых предназначен алгоритмический язык Паскаль, обрабатывают данные, которые хранятся в оперативной памяти компьютера. Каждое элементарное данное имеет некоторый смысл (например, число или символ) и занимает один или несколько байтов памяти3. Эту область памяти часто называют ячейкой памяти. Для того, чтобы ячейки памяти можно было различать и использовать их в программе, каждой ячейке дается имя. Таким образом, ячейка памяти характеризуется своим именем и содержимым (т. е. данным, которое в ней хранится). Кроме того, ячейка имеет адрес (адресом ячейки считается адрес младшего из занимаемых ею байтов). В программе имена ячеек участвуют как имена переменных, т. е. переменные программы - это, по существу, ячейки памяти. При написании программ считают, что ячейка памяти обладает следующими свойствами:
Под константой в программировании понимается значение, не изменяющееся в процессе выполнения программы. Константам, также как и переменным, соответствуют ячейки памяти. Можно считать, что эти ячейки защищены от записи. В программе, кроме констант обозначенных или именованных (т. е. имеющих имя), могут использоваться явные константы, заданные своим значением. Например, можно использовать константу с именем epsilon, предварительно задав ей значение 0.0001, а можно использовать в программе явную константу 0.00014. В качестве имен переменных и констант, также как в качестве других имен, в языках программирования (в том числе Паскале) используются идентификаторы. Под идентификатором понимается последовательность букв, символов подчеркивания и цифр, начинающаяся с буквы или символа подчеркивания. В Паскале при формировании имен (а также служебных слов) прописные и соответствующие строчные буквы не различаются. 1.2.2. Типы данныхКроме разделения данных на переменные и константы, существует классификация данных по типу. Описание переменных прежде всего состоит в объявлении их типа. Тип данных характеризует форму их представления в памяти компьютера, и, следовательно, область значений. Каждый тип характеризуется набором выполняемых над данными операций. Традиционно в универсальных языках программирования имеются такие стандартные типы, как целый, вещественный, символьный и логический5. Существование двух числовых типов (целого и вещественного) связано с двумя возможными формами представления чисел в памяти компьютера. Данные целого типа хранятся в форме представления с фиксированной точкой. Для нее характерны абсолютная точность представления чисел и выполнения операций над ними, а также ограниченный диапазон значений чисел. Целый тип используется для данных, которые в принципе не могут иметь дробной части (количество людей, машин, и т. д., номера и счетчики). Тип вещественный соответствует форме представления чисел с плавающей точкой, для которой характерны приближенное представление числа с заданным количеством значащих цифр (знаков мантиссы) и большим диапазоном порядка числа, что обеспечивает возможность представления как очень больших, так и очень малых по абсолютной величине чисел. В силу приближенного представления данных вещественного типа сравнение их на равенство является некорректным. В современных реализациях универсальных языков программирования обычно существует несколько целых и несколько вещественных типов, каждый из которых характеризуется определенным размером отводимой под одно значение памяти и, соответственно, определенным диапазоном значений чисел, а для вещественных типов - и определенной точностью (числом цифр мантиссы). Данные символьного типа принимают значения на всем множестве допустимых для данного компьютера символов. Каждому символу соответствует двоичный код, все коды символов собраны в специальные стандартные таблицы кодирования. В настоящее время используются таблицы ANSI (в которой для хранения одного символьного значения отводится один байт) и UNICODE (код одного символа занимает два байта). Эти таблицы совместимы: первые 256 кодов UNICODE совпадают с кодами ANSI. Существование двух кодовых таблиц объясняется необходимостью поддержки приемственности программного обеспечения при развитии компьютерной техники: для уже устаревших 16-разрядных компьютеров используется таблица ASCII, первая половина которой совпадает с ANSI. В Паскале для описания данных символьного типа используется ключевое слово char. В версии Borland Pascal используется только система кодирования ANSI. В Object Pascal, кроме типа char, имеется тип widechar, поддерживающий кодировку UNICODE. Данные логического типа в Паскале описываются с помощью ключевого слова boolean. Используемые в различных версиях Паскаля целые и вещественные типы представлены в таблицах 1-4. Таблица 1. Стандартные целые типы данных Borland Pascal (операционная среда MS DOS)
Таблица 2. Стандартные целые типы данных Object Pascal (операционная среда Windows)
Таблица 3. Стандартные вещественные типы данных Borland Pascal (операционная среда MS DOS)
Таблица 4. Стандартные вещественные типы данных Object Pascal (операционная среда Windows)
Заметим, что помнить эти таблицы совершенно необязательно. Для написания программ первой части пособия нам потребуются всего два числовых типа: вещественный real и целый integer. Все рассмотренные в этом параграфе типы относятся к стандартным ( т. е. встроенным в язык) типам Паскаля. У пользователя имеется возможность задать собственные, нестандартные типы в разделе TYPE программы – об этом см. §§1.5.2, 1.6. 1.2.3. Правила записи константМы рассмотрим простейшие9 правила записи явных констант. Целая десятичная константа - это последовательность десятичных цифр, например, 12678909. Последовательность шестнадцатеричных цифр (0, 1, ..., 9, A, B, C, D, E, F), перед которой записан символ доллара $, представляет собой целую шестнадцатеричную константу; например, $FF - шестнадцатеричное представление числа 255. Соответствующие отрицательные значения получаются в результате применения унарной операции минус (-), см. п.1.2.5. Простейшие правила записи вещественных констант состоят в следующем: разделителем между целой и дробной частью числа является точка; можно использовать показатель десятичного порядка Е (большую или малую латинскую букву). Пример вещественных констант: 100.01, 3.44Е3 (значение 3.44*103), 1.0 Е-2 (значение 0.01). Для представления числовых констант в памяти компьютера выбирается подходящий тип в соответствии с таблицами 1-4. Естественно, при этом следует выбирать минимальный диапазон и минимальное число значащих цифр. Такой выбор не только уменьшает память и время работы программы, но и повышает ее надежность, так как компилятор может обеспечить контроль над значениями переменных (чтобы они находились в указанных границах). Символьная константа - это соответствующий символ клавиатуры, заключенный в апострофы. Примеры: 'a', '5', '?'. Другой способ задания констант - в виде #код, например, #32 –пробел, #90 буква Z. Уже при написании простейших программ при записи операторов вывода (а иногда и ввода) нам потребуется понятие строковой константы. Это последовательность символов, заключенная в одинарные кавычки (апострофы). Например: ‘Введите исходные данные'. Логические константы обозначаются следующим образом: false – ложь, true - истина 1.2.4. Описание переменных и именованных констант |
Обозначение Паскаля | Смысл (математическое обозначение) | Тип аргумента | Тип результата |
abs(x) | abs(x) | числовой | совпадает с типом аргумента |
arctan(x) | arctg(x) | вещественный | вещественный |
cos(x) | cos(x) | вещественный | вещественный |
exp(x) | ex | вещественный | вещественный |
ln (x) | ln x | вещественный | вещественный |
sin (x) | sin x | вещественный | вещественный |
sqr(x) | x2 | числовой | совпадает с типом аргумента |
sqrt(x) | | вещественный | вещественный |
round(x) | преобразование из вещественного в целое с округлением | вещественный | целый |
trunc(x) | преобразование из вещественного в целое с отбрасыванием дробной части | вещественный | целый |
odd(x) | | целый | булевский |
ord(x) | номер х в последовательности значений порядкового типа10 | любой порядковый | целый |
succ(x) | следующее значение порядкового типа | любой порядковый | совпадает с типом аргумента |
pred(x) | предыдущее значение порядкового типа | любой порядковый | совпадает с типом аргумента |