Файл: Основы программирования на языке Pascal ( Понятие Языка Паскаль).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.06.2023

Просмотров: 28

Скачиваний: 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 на те языки, компиляторы которых сама не выпускает.