Файл: Основы программирования на языке Pascal ( Понятие Языка Паскаль).pdf
Добавлен: 30.06.2023
Просмотров: 30
Скачиваний: 2
Глава 2 Структура программы и организация данных
2.1 Структура программы
Программа на языке Паскаль состоит из двух основных частей[4]:
- описания данных, над которыми совершаются действия, и описание действий, которые должны осуществляться над данными. Действия задаются операторами, а данные - определениями и описаниями.
В структуре программы можно выделить заголовок и собственно программу, которая может содержать максимально шесть разделов:
- описание меток;
- описание констант;
- определение типов;
- описание переменных;
- описание функций и процедур;
- раздел операторов.
Раздел операторов заключается в операторные скобки, т.е. BEGIN...END. Любой раздел, кроме последнего, может отсутствовать. Разделителями между разделами и операторами служит точка с запятой. В конце программы должна стоять точка. Заголовок программы записывается в первой строке программы и начинается с ключевого слова program после которого указывается имя программы и связь программы с исходными данными и результатами обработки (т.е. файлы, доступные программе). В качестве имен файлов используются стандартные имена INPUT и OUTPUT.
program drev( input,output);
Кроме этого в любое место программы могут быть включены комментарии, при этом смысл программы не меняется. Комментарии заключатся в фигурные скобки. Если в системе нет фигурных скобок, то вместо них используются пары символов (* и *).
(* ПРИМЕР1 КОММЕНТАРИЯ НА ПАСКАЛЕ *)
{ ПРИМЕР2 КОММЕНТАРИЯ НА ПАСКАЛЕ }
2.2 Организация и описание данных
Программа, написанная на языке Паскаль, оперирует некоторыми объектами, называемыми данными. Каждый элемент данных в программе является либо константой, либо переменной. Для каждой переменной задается некоторый тип, определяющий как возможные значения переменной, так и операции, которые могут над ней выполняться. Имя в языке Паскаль состоит из последовательности букв, цифр и символа подчеркивания, начинающейся с буквы[5]. Имена используются в программах для записи констант, переменных, функций и подпрограмм.
Тип переменной обязательно должен быть задан в разделе описания переменных. Именованная константа отличается от переменной тем, что ее значение не может изменяться во время выполнения программы и она описывается в разделе описания констант. Тип константы однозначно определяется ее значением и в явном виде не указывается. Константы могут являться значением следующих типов: целые, вещественные, логические ( булевские), литерные (символьные) и текстовые (строки).
Константы описываются следующим образом:
CONST имя1 = значение1; имя2 = значение2;
Если потребуется изменить константу, то при таком ее описании достаточно изменить ее значение в описании.
const log = true;
rmax= 24; zk = c;
Раздел "описание констант" в программе может отсутствовать, а раздел "описание переменных" должен присутствовать тогда, когда в программе используется хотя бы одна переменная. Выбор имен переменных желательно производить таким образом, чтобы был понятен их смысл и назначение.
Операторы описания данных
Язык Паскаль предоставляет богатые возможности для построения сложных типов данных, которые задаются в разделе типов. Однако все они строятся на основе стандартных типов: целый, вещественный, символьный и логический. Кроме этого, в языке Паскаль можно использовать перечисляемые типы.
Стандартные типы данных
Целый тип (INTEGER).
Для любой вычислительной машины значением переменной этого типа должно быть целое число n, лежащее в диапазоне:
-MAXINT <= N <= MAXINT
Помимо стандартного целого типа на персональном компьютере в среде Турбо-Паскаль возможны следующие целочисленные типы которые отличаются размером при хранении в памяти и способом кодировки значений (с представлением знака или без него):
Таблица 2
Целочисленные типы, которые отличаются размером при хранении в памяти и способом кодировки значений
Тип |
Диапазон |
Размер, байт |
shortint byte integer word longint |
-128...+127 0...255 -32768...+327678 0...65535 -2147483648... +2147483647... |
1 1 2 2 4 |
Над целыми числами кроме обычных арифметических и стандартных операций могут выполняться:
- операции целочисленного деления и поиска остатка от целочисленного деления:
15 div 4 = 3 13 mod 4 = 1
- операции поиска предыдущего и последующих значений аргумента:
pred(9) = 8 succ(-9) = -8
pred(-9) = -10 succ(9) = 10
- функция позволяющая определить четность или нечетность аргумента:
odd(7) - true
odd(6) - false.
Переменные целого типа описываются следующим образом:
var a, g, jh, gg: integer;
Вещественный тип (REAL)
Значением переменной этого типа является вещественное число, заданное либо в естественной форме -6.7694
или в экспоненциальной 5.6Е-2.
Вещественные переменные обладают двумя важными характеристиками - диапазоном значений и точностью, которые определяются структурными особенностями конкретной ЭВМ.
Помимо стандартного вещественного типа на персональном компьютере в среде Турбо-Паскаль возможны следующие вещественные типы, являющиеся приближением к точным значением:
Таблица 3
Вещественные типы, являющиеся приближением к точным значением
Тип |
Диапазон |
Значащие цифры |
Размер, байт |
real single double extended comp |
-1.7e38...1.7e38 -3.4e38...3.4e38 -1.7e308...1.7e308 -1.1e4932...1.1e4932 -2*2^63...1...2*2^63 |
11...12 7...8 15...16 19...20 19...20 |
6 4 8 10 8 |
Тип comp содержит только целочисленные значения.
Для вещественных аргументов кроме перечисленных выше функций могут использоваться стандартные функции преобразования значений вещественного типа в значение целого типа :
- функция trunc вырабатывает целый результат путем отбрасывания дробной части аргумента:
trunc(23.54) = 23
trunc(-3.54) = -3
- функция round вырабатывает целый результат путем округления до ближайшего целого:
round(23.53) = 24
round(-3.53) = -4
- функция int выделяет целую часть числа:
int(23.54) = 23.0
int(-3.54) = -3.0
- функция frac выделяет мантиссу аргумента:
frac(23.54) = 0.54
frac(-1.67) = -0.67
Переменные вещественного типа описываются следующим образом:
var ad, gs, fh, nn: real;
Булевский тип (BOOLEAN)
Этот тип данных на языке Паскаль называется логическим. Над логическими данными вычисляются следующие операции:
OR, NOT и AND.
Логическими данными и операции над ними имеют важное значение в информатике, так как позволяют ввести в расчеты элементы формальной логики.
Так как значения true и false можно рассматривать как упорядоченное множество, состоящее из двух элементов, то для этого типа данных помимо succ и pred, определена функция ord, определяющая порядковый номер для значений перечисляемого типа:
pred(false) = true succ(true) = false
ord(false) = 0 ord(true) = 1
Переменные логического типа описываются следующим образом: var w, y, z, vv: boolean;
Символьный тип (CHAR)
Символьными значениями переменной символьного типа являются элементы конечного и упорядоченного набора символов. Набор символов должен отвечать следующим минимальным требованиям:
- содержать буквы, упорядоченные в алфавитном порядке;
- содержать цифры, расположенные в порядке возрастания;
- содержать символ пробел.
Каждый символ должен иметь свой порядковый номер. При записи данных символьного типа символ должен заключаться в апострофы:
'2','g','k','s','0'.
С данными символьного типа связаны функции:
- ord(символ) - дает порядковый номер символа в упорядоченном массиве:
ord('?') = 63
ord('5') = 53
ord('I') = 73
- сhr(номер) - дает символ, стоящий под указанным номером в упорядоченном множестве символов:
chr(53) = '5'
chr(53) = '5'
ord(73) = 'I'
К аргументам символьного типа применимы функции pred и succ, которые выдают предыдущий и последующий символы, а также операции отношения ( символ 1 считается больше символа 2, если его порядковый номер в множестве символов больше сравниваемого):
pred('M') = 'L'
succ('M') = 'N'
Переменные символьного типа описываются следующим образом:
var w, y, z, vv: сhar;
Строковый тип (STRING).
Значениями переменной строкового типа являются последовательности символов, заключенные в апострофы. Имеющиеся внутри текста апострофы должны быть отдублированы:
'2gk', 's''0', 'Program''System'''.
Переменные строкового типа описываются следующим образом:
var wf, yyy, zs, vev: string [10];
Описание массивов
Массив представляет собой упорядоченный набор значений одного типа, имеющих общее имя. Местоположение элемента в массиве задается индексом, который записывается в квадратных скобках:
имя: array [ Nmin..Nmax ] of тип;
При описании массивов большей размерности пределы измерения должны отделяться друг от друга запятой:
имя: array [ Nmin..Nmax, Kmin..Kmax, Rmin..Rmax] of тип;
Массивы описываются следующим образом:
var fff: array [1..4, 1..4] of integer;
sss: array [1..6] of real;
ddd: array [1..11, 1..4, 1..55] of char;
aaa: array [1..22, 1..11] of string;
Заключение
Таким образом, можно сделать следующие выводы.
Особенностями языка Паскаль являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль являлся одним из первых таких языков. Синтаксис автор постарался сделать интуитивно понятным любому пользователю даже при первом знакомстве с языком.
Нужно заметить, что многие недостатки языка не проявляются как таковые недостатки, а даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд.
В начале 80-х годов прошлого века в СССР для обучения школьников основам информатики и вычислительной техники академик А. П. Ершов разработал алголо-паскалеподобный «алгоритмический язык».
Паскаль, разработанный в 1970-х гг. Никлаусом Виртом как язык обучения программированию, претерпел за прошедшее время довольно много изменений в лучшую сторону. Основная заслуга в этом принадлежит фирме Borland International, долгое время выпускавшей линейку Turbo Pascal. Одно из основных усовершенствований, внесенных ею, — дополнение языка разнообразными и мощными средствами ввода-вывода. Другое связано с языком Модула-2 (автором которого также стал Н. Вирт): фирма Borland отказалась от распространения компилятора этого языка, применив вместо этого модульный принцип построения в Turbo Pascal. Кроме того, в Паскаль были введены средства непосредственного доступа к портам и ячейкам памяти, а позднее — возможность включать в текст программы фрагменты, написанные на ассемблере. Все это превратило Паскаль из средства обучения в достаточно мощный универсальный язык.
Сейчас признанными лидерами в области профессионального программирования стали Си-подобные языки. В течение долгого периода Паскаль был, пожалуй, почти единственной альтернативой им в качестве универсального языка. Однако когда труд большинства профессиональных программистов стал практически сводиться лишь к манипуляциям с вызовами более или менее стандартного API-инструментария (Application Programming Interface — интерфейс прикладного программирования), остро встал вопрос выбора единственного языка программирования, на котором (и для которого) будет писаться этот API. Вследствие различных причин — как объективных, так и субъективных — выбор пал на Си/Си++. Во-первых, Си, как и Паскаль, оказался одним из первых языков высокого уровня (ЯВУ), разрешившим проблему «курицы и яйца»: его компилятор был написан на нем же. Во-вторых, компиляторы для Си делать, пожалуй, легче, чем для любого другого языка (что, собственно, и было одной из целей его разработки), поэтому именно их выпуск экономически наиболее целесообразен. Впрочем, не обошлось и без субъективных факторов: значительную долю сегодняшнего API производит фирма Microsoft, уже давно разграничившая с фирмой Borland «сферы влияния» в этой области. Сейчас Borland не выпускает компиляторы для Бейсика и Фортрана, а Microsoft – для Паскаля, и, естественно, не ориентирует свои API на те языки, компиляторы которых сама не выпускает.