Что такое класс в алгоритмическом языке с

Алгоритмический язык С++. Символы языка. Типы данных и их внутренне представление

Язык C++ — это язык программирования общего назначения, цель которого — сделать работу серьёзных программистов более приятным занятием. За исключением несущественных деталей, язык C++ является надмножеством языка С. Помимо возможностей, предоставляемых языком С, язык C++ обеспечивает гибкие и эффективные средства определения новых типов.

Язык программирования служит двум взаимосвязанным целям: он предоставляет программисту инструмент для описания подлежащих выполнению действий и набор концепций, которыми оперирует программист, обдумывая, что можно сделать. Первая цель в идеале требует языка, близкого к компьютеру, чтобы все важные элементы компьютера управлялись просто и эффективно способом, достаточно очевидным для программиста. Язык С создавался на основе именно от этой идеи. Вторая цель в идеале требует языка, близкого к решаемой задаче, чтобы концепции решения могли быть выражены понятно и непосредственно. Эта идея привела к пополнению языка С свойствами, превратившими его в язык C++.

Ключевое понятие в языке C++ — класс. Классы обеспечивают сокрытие информации, гарантированную инициализацию данных, неявное преобразование определяемых пользователем типов, динамическое определение типа, контроль пользователя над управлением памятью и механизм перегрузки операторов. Язык C++ предоставляет гораздо лучшие, чем язык С, средства для проверки типов и поддержки модульного программирования. Кроме того, язык содержит усовершенствования, непосредственно не связанные с классами, такие как: символические константы, встраивание функций вместо вызова, параметры функций по умолчанию, перегруженные имена функций, операторы управления свободной памятью и ссылки. Язык C++ сохраняет способность языка С эффективно работать с аппаратной частью на уровне битов, байтов, слов,

адресов и т.д. Это позволяет реализовывать пользовательские типы с достаточной степенью эффективности.

Множество символов языка C включает:

— прописные буквы латинского алфавита;

— строчные буквы латинского алфавита;

Остальные символы могут быть использованы только в символьных строках, символьных константах и комментариях. Язык C++ различает большие и маленькие буквы, таким образом, name и Name — разные идентификаторы.

Литералы в языке C++ могут быть целые, вещественные, символьные и строковые.

— десятичные: 10, 132, -32179;

-восьмеричные (предваряются символом «0»): 010, 0204, -076663;

— шестнадцатеричные (предваряются символами «0х»): 0хА, 0x84, 0x7db3.

Вещественные: 15.75, 1.575e1, .75, -.125

3) Типы данных языка C++

В языке C++ существуют перечислимый тип — enum, который является подмножеством целого типа, и пустой тип — void, который имеет специальное назначение. Он используется для объявления функций, которые не возвращают никакого значения, а также для объявления указателей на значение типа void. Такие указатели могут быть преобразованы к указателям на любой другой тип.

В языке С++ можно объявлять структуры и так называемые объединения.

В языке C++ нет специальных типов для массивов и строк, которые представляются массивом символов.

В языке С не существовало логического типа. Логические значения представлялись данными целого типа, при этом значение 0 соответствовало логическому значению ложь, а все остальные целые значения соответствовали логическому значению истина. В языке С++ сохранена данная логика. По определению, true имеет значение 1 при преобразовании к целому типу, а false — значение 0. И наоборот, целые можно неявно преобразовать в логические значения: при этом ненулевые целые преобразуются в true, а ноль — в false. В любом месте, где требуется логическое значение, может стоять целочисленное выражение. В арифметических и логических выражениях логические значения преобразуются в целые, операции выполняются над преобразованными величинами.

Указатель можно неявно преобразовать в логическое значение, при этом ненулевой указатель принимает значение true, нулевой — false.

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

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

а) если один из операндов имеет тип long double, другой тоже преобразуется в long double;

  • — иначе, если один операнд имеет тип double, то второй операнд преобразуется к типу double;
  • — иначе, если один операнд имеет тип float, то второй операнд преобразуется к типу float;
  • — иначе над обоими операндами производится интегральное продвижение, а именно: значения типов char, signed char, unsigned char, short int и unsigned short int преобразуются в int, если int может представить все значения исходных типов, в противном случае они преобразуются в unsigned int; bool преобразуется в int.
  • б) затем если один операнд имеет тип unsigned long, то второй операнд преобразуется к типу unsigned long;
  • — иначе, если один из операндов относится к типу long int, а другой к типу unsigned int, то если long int может представить все значений типа unsigned int, unsigned int преобразуется в long int, иначе оба операнда преобразуются в unsigned long int;
  • — иначе, если один операнд имеет тип long int, то второй операнд преобразуется к типу long int;

-иначе, если один операнд имеет тип unsigned int, то второй операнд преобразуется к типу unsigned int;

— иначе оба операнда имеют тип int.

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

4) Операции языка C++

:: — операция разрешения области видимости. При повторном объявлении имени во вложенном блоке или классе предыдущие объявления оказываются скрытыми. Однако скрытое имя члена класса можно использовать, квалифицировать его именем класса при помощи операции разрешения области видимости. Скрытое глобальное имя можно использовать, если квалифицировать его унарной операцией разрешения области видимости.

( ) — выражение в скобках (используется для изменения порядка вычисления) или вызов функции.

[ ] — индексное выражение, используется для работы с массивами.

. и -> — выбор элемента, используются при работе с классами, структурами и объединениями.

Операции static_cast (преобразование с проверкой во время компиляции), dynamic_cast (преобразование с проверкой во время выполнения), reinterpret_cast (преобразование без проверки), const_cast (константное преобразование) осуществляют различные преобразования типов. Они имеют следующий синтаксис: операция<новый тип>(выражение). Угловые скобки являются элементом синтаксиса. Операция static_cast осуществляет преобразование родственных типов, например, указателя на один тип к указателю на другой тип из той же иерархии классов, целый тип в перечисление или тип с плавающей точкой в интегральный. Операция reinterpret_cast управляет преобразованиями между несвязанными типами, например, целых в указатели или указателей в другие (несвязанные) указатели. Такое различие позволяет компилятору осуществлять минимальную проверку типов при использовании static_cast, а программисту — легче обнаружить опасные преобразования, представляемые reinterpret_cast. Преобразование dynamic_cast выполняется и проверяется на этапе выполнения. Преобразование const_cast аннулирует действие модификатора const.

Основы алгоритмического языка С++

Здесь представлены базовые компоненты программ на С++. В их число входят типы данных, переменные, константы и выражения.

— Предопределенные типы данных в С++ включают в себя типы int, char, float, double и void. В языке С++ гибкость типов данных увеличивается благодаря применению модификаторов типов. Эти модификаторы изменяют точность представления и диапазон значений переменных. Модификаторами типа являются signed, unsigned, short и long.

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

— Директива #include является специальной командой компилятора. Она предписывает компилятору включить в программу содержимое определенного файла, как если бы вы сами ввели его в текущий исходный файл.

— Объявление констант предусматривает использование директивы #define для объявления констант, определенных при помощи макросов, или использование ключевого слова const для объявления формальных констант. Формальные константы требуют от вас определения их типа (значением по умолчанию является int), имени и ассоциированного с ними значения.

— Объявление переменной требует, чтобы вы задали ее тип и имя, С++ дает вам возможность инициализировать переменную при ее объявлении. Вы можете объявить несколько переменных в одном операторе объявления.

— Арифметическими операциями являются +, -, *, / и % (деление по модулю).

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

— Операции инкремента и декремента используются в префиксной и постфиксной формах. Язык С++ дает вам возможность применять эти операции к переменным, в которых хранятся символы, целые числа и даже числа с плавающей точкой.

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

— Оператор sizeof возвращает как для типов данных, так и для переменных их размер в байтах.

— Механизм приведения типа дает вам возможность форсировать преобразование типа выражения.

— Операции отношений и логические операции дают вам возможность строить логические выражения.

— Булевы выражения объединяют операции отношений и логические операции для формулирования нетривиальных условий. Эти выражения позволяют программе принимать сложные решения.

— Условное выражение предлагает вам короткую форму для простого оператора if-else с двумя альтернативами.

— Операции манипулирования битами выполняют поразрядные операции AND, OR, XOR и NOT. Кроме того, в С++ поддерживаются поразрядные операции сдвига << и >>.

— Операции манипулирования битами с присваиванием предлагают короткие формы для простых операций манипулирования битами.

Множество символов Си включает большие и малые буквы из английского алфавита и 10 десятичных арабских цифр:

-большие английские буквы: A B C D E F G H I J K L M N O P Q R T U V W X Y Z

-малые английские буквы: a b c d e f g h i j k l m n o p q r t u v w x y z

-десятичные цифры: 0 1 2 3 4 5 6 7 8 9

Буквы и цифры используются при формировании констант, идентификаторов и ключевых слов. Все эти конструкции описаны ниже. Компилятор Си рассматривает одну и ту же малую и большую буквы как отличные символы. Если в данной записи использованы малые буквы, то замена малой буквы "a" на большую букву "A" сделает отличной данную запись от предшествующей.

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

Символ CONTROL-Z рассматривается как индикатор конца файла. Компилятор игнорирует любой текст, следующий за символом

Компилятор Си игнорирует пробельные символы, если они не используются как разделители или как компоненты константы-символа или строковых литералов. Это нужно иметь в виду, чтобы дополнительно использовать пробельные символы для повышения наглядности программы (например,для просмотра редактором текстов).

Знаки пунктуации и специальные символы

Эти символы имеют специальный смысл для компилятора Си. Их использование в языке Си описывается в дальнейшем содержании руководства. Знаки пунктуации из множества представимых символов, которые не представлены в данном списке, могут быть использованы только в строковых литералах, константах-символах и комментариях.

ESC- последовательности- это специальные символьные комбинации, которые представляют пробельные символы и неграфические символы в строках и символьных константах.

Их типичное использование связано со спецификацией таких действий, как возврат каретки и табуляция , а также для задания литеральных представлений символов, таких как символ двойная кавычка. ESC-последовательность состоит из наклонной черты влево, за которой следует буква, знаки пунктуации ‘ " или комбинация цифр. В таблице 2.2. приведен список ESC- последовательностей языка Си.

Если наклонная черта влево предшествует символу, не включенному в этот список, то наклонная черта влево игнорируется, а символ представляется как литеральный. Например, изображение c представляет символ "c" в литеральной строке или константе-символе.

Последовательности ddd и xdd позволяют задать любой символ в ASCII (Американский стандартный код информационного интерфейса) как последовательность трех восьмеричных цифр или двух шестнадцатеричных цифр. Например, символ пробела может быть задан как 10 или x08. Код ASCII "нуль" может быть задан как или x0 . В восьмеричной ESC- последовательности могут быть использованы от одной до трех восьмеричных цифр.

Например, символ пробела может быть задан как 10 . Точно так же в шестнадцатеричной ESC- последовательности могут быть использованы от одной до двух шестнадцатеричных цифр. Так, шестнадцатеричная последовательность для символа пробела может быть задана как x08 или x8 .

Когда используется восьмеричная или шестнадцатеричная ESCпоследовательность в строках, то нужно полностью задавать все цифры ESC- последовательности (три цифры для восьмеричной и две цифры для шестнадцатеричной ESC- последовательностей). Иначе, если символ непосредственно следующий за ESC- последовательностью, случайно окажется восьмеричной или шестнадцатеричной цифрой, то он проинтерпретируется как часть последовательности. Например, строка x7Bell при выводе на печать будет выглядеть как

ESC- последовательности позволяют посылать неграфические управляющие символы к внешним устройствам. Например, ESC- последовательность33 часто используется как первый символ команд управления терминалом и принтером. Неграфические символы всегда должны представляться ESC-последовательностями, поскольку, непосредственное использование в программах на Си неграфических символов будет иметь непредсказуемый результат.

Наклонная черта влево () помимо определения ESC-последовательностей используется также, как символ продолжения строки в препроцессорных определениях.

Если символ "новая строка" следует за наклонной чертой влево, то новая строка игнорируется и следующая строка рассматривается, как часть предыдущей строки.

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

Операция условного выражения ?: -это тернарная, а не двухсимвольная операция. Формат условного выражения следующий: <expression>?<expression>:<expression>

Константа- это число, символ или строка символов. Константы используются в программе как неизменяемые величины. В языке Си различают четыре типа констант: целые константы, константы с плавающей точкой, константы-символы и строчные литералы.

Целая константа- это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целую величину. Десятичная константа имеет следующий формат представления:

<digits>, где <digits> — это одна или более десятичных цифр от 0 до 9.

Восьмеричная константа имеет следующий формат представления:

где <odigits> — это одна или более восьмеричных цифр от 0 до 7. Запись ведущего нуля необходима.

Шестнадцатеричная константа имеет один из следующих форматов представления:

где <hdigits> одна или более шестнадцатеричных цифр. Шестнадцатеричная цифра может быть цифрой от 0 до 9 или

буквой (большой или малой) от A до F. В представлении константы допускается "смесь" больших и малых букв. Запись ведущего нуля и следующего за ним символа x или X необходима.

Пробельные символы не допускаются между цифрами целой константы. В Табл. 2.4 иллюстрируются примеры целых констант.

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

Каждая целая константа специфицируется типом, определяющим ее представление в памяти и область значений. Десятичные константы могут быть типа int или long.

Восьмеричные и шестнадцатеричные константы в зависимости от размера могут быть типа int, unsigned int, long или unsigned long. Если константа может быть представлена как int, она специфицируется типом int. Если ее величина больше, чем максимальная положительная величина, которая может быть представлена типом int, но меньше величины, которая представляется в том же самом числе бит как и int, она задается типом unsigned int. Наконец, константа, величина которой больше чем максимальная величина, представляемая типом unsigned int, задется типом long или unsigned long, если это необходимо.

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

Программист может определить для любой целой константы тип long, приписав букву "l" или "L" в конец константы. В Табл. 2.6 показаны примеры целых констант.

Константы с плавающей точкой

Константа с плавающей точкой- это действительное десятичное положительное число. Величина действительного числа включает целую, дробную части и экспоненту. Константы с плавающей точкой имеют следующий формат представления:

где <digits> — одна или более десятичных цифр (от 0 до 9), а E или e -символ экспоненты. Целая или дробная части константы могут быть опушены, но не обе сразу. Десятичная точка может быть опущена только тогда, когда задана экспонента.

Экспонента состоит из символа экспоненты, за которым следует целочисленная величина экспоненты, возможно отрицательная.

Пробельные символы не могут разделять цифры или символы константы.

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

Примеры констант с плавающей точкой и константных выражений:

Целая часть константы с плавающей точкой может быть опущена, например:

Все константы с плавающей точкой имеют тип double.

Константа-символ- это буква, цифра, знак пунктуации или ESC- символ, заключенные в одиночные кавычки. Величина константы-символа равна значению представляющего ее кода символа.

Константа-символ имеет следующую форму представления:

где <char> может быть любым символом иэ множества представимых символов, включая любой ESC- символ, исключая одиночную кавычку (‘), наклонную черту влево () и символ новой строки.

Чтобы использовать одиночную кавычку или наклонную черту влево в качестве константы-символа, необходимо вставить перед этими знаками наклонную черту влево. Чтобы представить символ новой строки, необходимо использовать запись ‘n’.

Константы-символы имеют тип int.

Строковый литерал- это последовательность букв, цифр и символов, заключенная в двойные кавычки. Строковый литерал рассматривается как массив символов, каждый элемент которого представляет отдельный символ. Строковый литерал имеет следующую форму представления:

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

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

"Long strings can be bro

cken into two pieces."

"Long strings can be brocken into two pieces."

Чтобы использовать двойные кавычки или наклонную черту влево внутри строкового литерала, нужно представить их с предшествующей наклонной чертой влево, как показано в следующем примере:

"This is a string literal"

""Yes, I do," she said."

"The following line shows a null string:"

Заметим, что ESC- символы (такие как и ") могут появляться в строковых литералах. Каждый ESC- символ считается одним отдельным символом.

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

Строчные литералы имеют тип char[]. Под этим подразумевается, что строка- это массив, элементы которого имеют тип char. Число элементов в массиве равно числу символов в строчном литерале плюс один, поскольку символ null (отметка конца строки) тоже считается элементом массива.

Идентификаторы- это имена переменных, функций и меток, используемых в программе. Идентификатор создается объявлением соответствующей ему переменной или функции.После этого его можно использовать в последующих операторах программы. Идентификатор- это последовательность из одной или более букв, цифр или подчерков(_), которая начинается с буквы или подчерка. Допускается любое число символов в идентификаторе, однако только первые 31 символ распознаются компилятором. (Программы, использующие результат работы компилятора, такие как, линкер, могут распознавать меньшее число символов).

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

Компилятор Си рассматривает буквы верхнего и нижнего регистров как различные символы. Поэтому можно создать отдельные независимые идентификаторы, которые совпадают орфографически, но различаются большими и малыми буквами. Например, каждый из следующих идентификаторов является уникальным:

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

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

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

Список ключевых слов:

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof while

do if static volatile

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

Ключевые слова const и volatile зарезервированы для будущего использования.

Следующие идентификаторы могут быть ключевыми словами для некоторых приложений:

Комментарий- это последовательность символов, которая воспринимается компилятором как отдельный пробельный символ или, другими словами, игнорируется.

Комментарий имеет следующую форму представления:

где <characters> может быть любой комбинацией символов из множества представимых символов, включая символы новой строки, но исключая комбинацию */. Это означает, что комментарии могут занимать более одной строки, но не могут быть вложенными.

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

Следующие примеры иллюстрируют некоторые комментарии:

/* Comments can separate and document

lines of a program. */

/* Comments can contain keywords such as for

Так как комментарии не могут содержать вложенных комментариев, то следующий пример будет ошибочным:

/* You cannot/* nest */ comments */

Компилятор распознает первую комбинацию */ после слова nest как конец комментария. Затем, компилятор попытается обрабатывать оставшийся текст и выработает сообщение об ошибке. Чтобы обойти компиляцию комментариев больших размеров, нужно использовать директиву #if препроцессора.

Когда компилятор обрабатывает программу, он разбивает программу на группы символов, называемых лексемами. Лексема- это единица текста программы, которая имеет определенный смысл для компилятора и которая не может быть разбита в дальнейшем. Операции, константы, идентификаторы и ключевые слова, описанные в этом разделе,являются примерами лексем. Знаки пунктуации, такие как квадратные скобки ([]), фигурные скобки (<>), угловые скобки (<>), круглые скобки и запятые, также являются лексемами. Границы лексем определяются пробельными символами и другими лексемами, такими как операции и знаки пунктуации. Чтобы предупредить неправильную работу компилятора, запрещаются пробельные символы между символами идентификаторов, операциями, состоящими из нескольких символов и символами ключевых слов.

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

Например, рассмотрим следующее выражение:

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

ИСХОДНЫЕ ТЕКСТЫ ПРИМЕРОВ

// Программа VAR.CPP, иллюстрирующая простые переменные

double x, y = 355.0 / 113;

cout << "i j y x Введите часы: ";

cout << "Введите минуты: ";

cout << "Введите секунды: ";

totalSec = ((hours * MIN_IN_HOUR + minutes) *

cout << endl << totalSec << " секунд прошло с полуночи" << endl;

Алгоритмические языки. Общие представления

Алгоритмический язык – это язык программирования, который используется как средство общения человека с компьютером. Это специально разработанный язык, который содержит определенный набор слов (ключевых слов) и фраз. Объем такого языка значительно меньше объема разговорного языка. Он лаконичен, не имеет слов – синонимов, все его фразы не имеют двоякого смысла и четко определяют конкретные действия. В общем же это «человеческий» язык, так как он использует слова и фразы, взятые из разговорного языка. Основная масса распространенных алгоритмических языков использует английский язык. Последнее объясняется тем, что они разработаны американскими компаниями. Основное назначение алгоритмического языка это описывать алгоритм вычислений. Такое описание называют программой.

Современные алгоритмические языки – это универсальные языки высокого уровня. Чем выше уровень языка, тем больше степень обобщения команд (инструкций). Это означает, что команды, записанные на алгоритмическом языке, имеют уровень макрокоманд в отличие от компьютера, который выполняет операции на уровне микрокоманд, то есть элементарных операций. Написание программы с использованием макрокоманд существенно сокращает объем программы и упрощает ее восприятие. Программа, написанная на алгоритмическом языке понятна человеку, но она не «понятна» компьютеру. Компьютер воспринимает информацию на языке машинных (двоичных) кодов. Поэтому, чтобы довести компьютеру ту информацию, которая изложена в программе, ее необходимо «перевести» на машинный язык. Для этой цели используются программы – переводчики. Они бывают различными, но наиболее распространенными среди них являются программы, называемые компиляторами. Компиляторы не только выполняют перевод с алгоритмического языка на машинный язык, но одновременно и производят синтаксический анализ программы. Синтаксический анализ – это проверка на соответствие, написанных в программе слов и фраз, установленным в языке правилам. В случае обнаружения такого несоответствия, компилятор выдает об этом сообщение на экран. Пока ошибки не будут устранены, программа не начнет выполняться. Компилятор является обязательной составляющей языка.

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

История разработки алгоритмических языков знает достаточно много языков высокого уровня таких, как АЛГОЛ, БЭЙСИК, ФОРТРАН, PL/1, ПАСКАЛЬ, Си и др. Каждый из них оставил свой след, имел своих поклонников, но путь совершенствования непрерывен и поэтому на смену одним языкам приходят другие, более совершенные и более привлекательные алгоритмические языки.

10.1. Алгоритмический язык С++

Одним из последних разработанных языков является алгоритмический язык высокого уровня С++. Он является расширенной версией языка Си. Основой языка С++ является объектно – ориентированное программирование (ООР – Objekt Oriented Programmation). Этот язык получил большую популярность в мире среди программистов. Его называли языком XXI века.

С++ был разработан сотрудником научно – исследовательского центра АТ & T (Нью – Джерси, США) Бьярном Страуструпом в 1979 году. Первоначально он имел название «Си с классами». Затем это название в 1983 году было заменено на С++. Начиная с 1980 г., С++ притерпел две существенные модернизации, в 1985 и 1990 годах. Последняя, третья модернизация, связана с процессом стандартизации С++. Для создания единого международного стандарта по С++ был сформирован объединенный комитет по стандартизации ANSI (American National Standards Organization) и ISO (Inernational Standards Organization). Первый рабочий проект указанного стандарта был представлен 25 января 1994 года. Комитет ANSI / ISO по С++ фактически сохранил все черты языка, заложенные еще Страуструпом и добавил несколько новых инструментов. Вскоре, после завершения работы над первым проектом стандарта, произошло событие, которое заставило существенно изменить этот проект. Дело в том, что к этому моменту появилась, разработанная Александром Степановым, библиотека стандартных шаблонов (Standard Library, STL). Эта библиотека представляет набор основополагающих процедур, которые можно использовать для обработки данных. Библиотека стандартных шаблонов – это мощный и элегантный инструмент программирования, хотя и достаточно объемный. Сразу же после появления первого проекта стандарта комитет ANSI / ISO проголосовал за включение библиотеки стандартных шаблонов в спецификацию языка С++. С этого момента стандарт на язык С++ стал реальностью и получил название STANDARD C++ . В новом стандарте, кроме добавления библиотеки стандартных шаблонов, есть некоторые изменения в синтаксисе языка.

Добавить комментарий

Ваш адрес email не будет опубликован.