Хелпикс

Главная

Контакты

Случайная статья





Языки программирования



Чтобы компьютер выполнил решение какой-либо задачи, ему необходимо получить от человека инструкции, как её решать. Набор таких инструкций для компьютера, направленный на решение конкретной задачи, называется компьютерной программой.

Современные компьютеры не настолько совершенны, чтобы понимать программы, написанные на каком-либо употребляемом человеком языке.

Команды, записанные для ЭВМ, необходимо записывать в понятной компьютеру форме. С этой целью применяют языки программирования – искусственные языки, алфавит, словарный запас и структура которых удобны и понятны компьютеру.

В самом общем смысле языком программирования называется фиксированная система обозначений и правил для описания алгоритмов и структур данных.

Языки программирования должны быть понятны и человеку, и ЭВМ. Они делятся на языки низкого и высокого уровня.

Язык низкого уровня – средство записи программы простыми приказами – командами на аппаратном уровне. Такой язык отражает структуру данного класса ЭВМ, и поэтому иногда называется машинно-ориентированным языком . Пользуясь системой команд, понятной ПК, можно описать алгоритм любой сложности, но такая запись для сложных задач будет очень громоздкой и мало приспособлена для использования человеком.

Существенной особенностью языков низкого уровня является жесткая ориентация на определённый тип аппаратуры (систему команд процессора).

Чтобы приспособить язык программирования низкого уровня к человеку, был разработан язык символичного кодирования – язык Ассемблер. Структура команд Ассемблера определяется форматами команд и данных машинного языка.

Программа на Ассемблере ближе человеку, потому что операторы этого языка – те же коды, но они имеют мнемонические названия; используются не конкретные адреса, а их символьные имена.

Многочисленную группу составляют языки программирования высокого уровня. Средства таких языков допускают описание задачи в наглядном, легко воспринимаемом виде.

Отличительной особенностью этих языков является ориентация не на систему команд той или иной ЭВМ, а на систему операторов, характерных для записи определённого класса алгоритмов.

К языкам программирования этого типа относятся Бейсик, Фортран, Паскаль, Си и другие. Программа на языках высокого уровня записывается системой обозначений, понятной человеку (например, фиксированным набором слов английского языка).

Все вышеперечисленные языки – вычислительные. Более молодые – декларативные (непроцедурные) языки. Отличительная черта их – задание связей и отношений между объектами и величинами и отсутствие определенной последовательности действий (один из первых – Пролог, затем C++, Delphi, Visual Basic). Эти языки дали толчок к разработке специальных языков искусственного интеллекта и языков представления знаний.

 

Трансляторы

Текст программы, записанный на Паскале, не может быть воспринят ЭВМ непосредственно, требуется перевести его на машинный язык.

Перевод программы с языка программирования на язык машинных кодов называется трансляцией (translation – перевод), а выполняется специальными программами – трансляторами.

Существует три вида трансляторов: интерпретаторы, компиляторы, ассемблеры.

Интерпретатором называется транслятор, производящий покомандную обработку и выполнение исходной программы.

Компилятор преобразует (транслирует) всю программу в модуль на машинном языке, после этого программа записывается в память ПК и лишь потом выполняется.

Ассемблеры переводят программу, записанную на языке автокода, в программу на машинном языке.

Любой транслятор решает следующие основные задачи:

– анализирует транслируемую программу, в частности, проверяет, содержит ли она синтаксические ошибки;

– генерирует выходную программу (её часто называют объектной или рабочей) на языке команд ЭВМ;

– распределяет память выходной программы, в простейшем случае назначает каждому фрагменту программы: переменным, константам и другим объектам свои адреса в памяти.

 

1. ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ ПАСКАЛЬ

Язык Паскаль (назван в честь выдающегося французского математика и философа Блеза Паскаля (1623-1662), разработан 1968-1971 годах Никлаусом Виртом (Швейцария). Первоначально создавался для обучения программированию. Сейчас широко используется среди программистов.

Паскаль имеет ряд преимуществ:

– благодаря компактности, удачному описанию – лёгок в изучении;

– отражает фундаментальные и наиболее важные идеи алгоритмов в очевидной и лёгко воспринимаемой форме, что предоставляет программисту средства, помогающие проектировать программы;

– позволяет чётко реализовать идеи структурного программирования и структурной организации данных;

– язык Паскаль сыграл большую роль в развитии методов аналитического доказательства правильности программ, позволил перейти к автоматической проверке;

– повысилась надёжность разработанных программ за счёт требований Паскаля к описанию переменных (при компилировании без выполнения).

1. 1. Алфавит языка. Идентификаторы и зарезервированные слова

Набор символов языка Паскаль является подмножеством набора символов кода ASCII, в котором используются следующие символы:

– прописные и строчные буквы латинского алфавита (не различаются), а также символ подчеркивания, который используется наравне с буквами;

– цифры от 0 до 9;

– специальные символы: #, $, ', (, ), *, +, ,, -, ., /, :, ;, <, >, =, @, [, ], ^, {, };

– символ пробела.

Идентификаторы используются для обозначения имен переменных, констант, типов, процедур, функций, модулей, программ и представляют собой последовательность букв, цифр и символа подчеркивания. Первым символом должна быть буква или символ подчеркивания.

Пример правильной записи идентификатора: Program1, PeremX, _a2.

Пример ошибочной записи: 1_Program, Perem X, a! 2.

Часто вместо слова «идентификатор» используется термин «имя». Различают стандартные идентификаторы и идентификаторы пользователя. Стандартным идентификаторам разработчиками заранее приписывается определенный смысл, например, обозначение типов данных (Integer, Boolean и т. п. ), констант (False, True, Maxint), функций (Abs, Sqr), процедур (Read, Write). Идентификаторы пользователя задаются программистом и служат для обозначения определенных им объектов.

Зарезервированные слова служат для определенной цели и имеют один единственный фиксированный смысл. В Паскале имеются следующие зарезервированные слова:

 

And                                           Goto                                  Program

Asm                               If                                       Record

Array                                         Implementation                 Repeat

Begin                                         In                                       Set

Case                                          Inherited                           Shl

Const                                         Inline                                 Shr

Constructor                   Interface                            String

Destructor                                 Label                                 Then

Div                                            Library                              To

Do                                             Mod                                  Type

Downto                                     Nil                                     Unit

Else                                           Not                                    Until

End                                           Object                    Uses

Exports                                      Of                                      Var

File                                            Or                                      While

For                                             Packed                              With

Function                                    Procedure                          Xor

2. ДАННЫЕ В ПАСКАЛЕ. ПРОСТЫЕ ТИПЫ ДАННЫХ

Решение любой задачи на ЭВМ сводится к определенным действиям над данными с целью получения конечного результата. Под данными понимают представление фактов или идей в формализованном виде, пригодном для передачи и обработки в процессе, реализуемом на ЭВМ.

В программе данные представляют собой значения констант или переменных. Переменными называют элементы данных, которые могут менять свои значения в процессе выполнения программы. Константы это элементы данных, значения которых известны заранее и в ходе выполнения программы не меняются.

На рис. 2 приведена структура типов данных Паскаля.

 


Рис. 2. 1. Структура типов данных в Паскале

Типы данных определяют множество значений, которые могут принимать объекты программы (переменные, константы, функции, выражения), и множество операций, допустимых над этими значениями.

 

 


2. 1. Целочисленный тип

В таблице 1 приведены названия целых типов, длина их внутреннего представления в байтах и диапазон возможных значений.

Таблица 1

Целые типы

 

Название Длина, байт Диапазон значений
Byte 0…255
ShortInt -128…+127
Word 0…65535
Integer -32768…+32767
LongInt -2147483648…+2147483647

 

 П р и м е р ы значений целочисленного типа: -81, 0, 99.

 

2. 2. Вещественный тип

 

Включает в себя вещественные числа (положительные, отрицательные и ноль), модуль которых лежит в определенном диапазоне (табл. 2).

 

Таблица 2

Вещественные типы

 

Название Длина, байт Количество значащих цифр Диапазон десятичного порядка
Real 11... 22 -39…38
Double 15…16 -324…+308
Extended 19... 20 -4951…4932
Comp 19... 20 -2*1063+1…+2*1063-1
Название Длина, байт Количество значащих цифр Диапазон десятичного порядка
Real 11... 22 -39…38
Double 15…16 -324…+308
Extended 19... 20 -4951…4932
Comp 19... 20 -2*1063+1…+2*1063-1

 

 П р и м е р ы значений вещественного типа:

 

С фиксированной точкой С плавающей точкой
21. 18 2. 118Е+01
0. 00000000Е+00
-8. 59 -8. 59Е+00

 

2. 3. Логический тип

Обозначение – Boolean.

Переменные и константы этого типа принимают одно из двух логических значений, обозначенных стандартным именем True (истина) и False (ложь). При этом считается, что False< True.

К данным этого типа применимы операции:

AND – логическое «и»;

OR – логическое «или»;

NOT – логическое отрицание.

Результаты применения данных операций определяются таблицами истинности (табл. 4, п. 3. 3).

 

2. 4. Символьный тип

Обозначение – Char.

Литерный (или символьный) тип состоит из определенной упорядоченной последовательности символов, определяемой реализацией языка. Значения переменных и констант литерного типа включают в апострофы.

К типу Char применимы операции отношения, а также встроенные функции:

Chr(C) – функция типа Char; преобразует выражение С типа Byte (код символа в таблице ASCII) в символ;

Ord(C) – возвращает код символа С в таблице ASCII.

П р и м е р ы символьных констант: ‘8’, ‘-‘, ‘A’, ‘! ’.

 

2. 5. Перечисляемый тип

Рассмотренные выше типы данных являются предопределенными. В языке Паскаль пользователь может определить новые типы переменных в виде упорядоченного множества значений – так называемые перечисляемый (перечислимый) и ограниченный (диапазонный) типы.

Определение перечисляемого типа заключается в непосредственном перечислении всех значений, которые может принимать переменная такого типа. Список возможных значений переменной заключается в круглые скобки, а сами значения разделяются символом «запятая». Нельзя одно и то же имя включать в определения разных перечисляемых типов. Введение нового типа осуществляется в разделе определения типов.

П р и м е р:

 

TYPE

OPERATORS=(PLUS, MINUS, DIVIDE);

SIM=(A, C, D, E);

METALL=(Fe, Na, Cu, Co);

VAR M1, M2: METALL;

 OP1, OP2, OP3:    OPERATORS;

 

В рассмотренном примере переменные с именами M1, M2 могут принимать только значения Fe, Na, Cu или Co, переменные OP1, OP2, OP3 – только значения PLUS, MINUS, DIVIDE и т. д. Других значений этим переменным присваивать нельзя. Указываемые в круглых скобках имена являются константами, порядковый номер первой из них равен нулю, следующей – единице и т. д. В перечисляемом типе частные значения упорядочены, что означает, к примеру, что для рассмотренных выше значений Fe< Na, MINUS< DIVIDE, A< E и т. д. При этом старшинство связано с местом слова при перечислении. Не допускается применять операцию сравнения к операндам разного типа, например, сравнивать MINUS и Fe и т. п.

К перечисляемым типам можно применять операции отношения (оба операнда должны иметь один тип), а также использовать их в качестве аргументов стандартных функций SUCC(x), PRED(x), ORD(x).

Рассмотренный ранее тип BOOLEAN может быть определен как перечисляемый следующим образом:

TYPE BOOLEAN=(FALSE, TRUE);

Определение предполагает, что для имен констант FALSE и TRUE выполняется отношение: FALSE< TRUE.

 

2. 6. Ограниченный (диапазонный) тип данных

 

Ограниченный (диапазонный, интервальный) тип определяется на базе уже заданного типа (например, INTEGER, CHAR, перечисляемого). Для описания ограниченного типа нужно задать нижнюю и верхнюю границу значений:

 

TYPE < имя типа> =< нижняя граница>.. < верхняя граница>;

 

Первая константа определяет нижнюю границу, затем идет знак «две точки»(.. ), после которого указывается вторая константа. При этом нижняя граница не должна превышать верхнюю, а их тип должен быть один и тот же.

 

 П р и м е р ы:

 

TYPE MONTH=(JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT,

  NOV, DEC);  {перечисляемый тип}

LETO=JUN.. AUG; {диапазон месяцев}

INDEX=(0.. 90); {диапазон для INTEGER}

SIMVOL=’A’.. ’G’; {диапазон для CHAR}

 

Над значениями ограниченного типа допустимы те же операции, что и над значениями базового типа, используемыми при задании в разделе определения типов. Если, к примеру, задано определение:

 

TYPE BUKVA = ’A’.. ’Z’;

         VAR Y:      BUKVA;

 

то можно выполнить присваивание:

Y: = ’D’;

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.