Операторы и математические функции

Переменные и их типы

План

1. История развития языка программирования С++

2. Структура программы на С++

5. Операторы ввода/вывода на языке С++

6. Пример программы на С++

1. История развития языка программирования С++

Языка C++, объединяющий в себе свойства языка С и объектно–ориентированного программирова­ния, стал один из главных языков программирования в 90–е годы и твердо продолжает оставаться таким в начале XXI века. Язык C++ получил в наследство от языка С такие качества, как эффективность, компакт­ность, быстрота выполнения и переносимость про­грамм. От объектно–ориентированного программи­рования язык C++ получил новую методологию программирования, позволяющую справиться с возрос­шей сложностью современных задач программирования. А такие элементы языка, как улучшенные шаблоны, привносят в язык C++ еще одну новую методологию программирования: обобщенное программирование. Это тройное наследство является для языка C++ одновре­менно и благословением, и проклятием. Оно делают язык очень мощным, но в то же время и сложным; а это означает, что программистам приходится больше изу­чать.

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

Язык С

Сотрудник компании Bell Laboratories Кена Томпсона в 1969 году разработал язик B (би) для создания других программных систем. Однако этот язык был интерпретируемым, что не позволяло создавать на нем независимые исполняемые файлы. Тем не менее этот язык явился предшественником языка С.

В начале 70–х годов Денис Ритчи из компании Bell Laboratories занимался разработкой опе­рационной системы UNIX. Для выполнения этой ра­боты Ритчи нуждался в таком языке программирования, который был бы кратким, а также мог бы обеспечивать эффективное управление аппаратными средствами и создание компактных, быстро работающих программ. Традиционно такие потребности программистов удов­летворял язык ассемблера, который тесно связан с внут­ренним машинным языком компьютера. Однако язык ассемблера – это язык низкого уровня, т.е. он привязан к определенному типу процессора (или компьютера). Поэтому если программу на языке ассемблера необхо­димо перенести на компьютер другого типа, то ее при­ходится переписывать заново на другом языке ассемб­лера.

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

Язык С, как и большинство основных языков программирования нашего времени, является процедурным.

Язык С++

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

Язык C++, так же как и язык С, является детищем ком­пании Bell Laboratories. Автор Бьярни Страуструп разработал этот язык в начале 80–х годов. По его собственным словам, «язык C++ был спроектирован главным образом так, чтобы мне и моим друзьям не приходилось программировать на ассемблере, С или различных современных языках высокого уровня. Его главная цель состояла в следующем: сделать так, что­бы отдельным программистам было легче и приятнее писать хорошие программы» .

Страуструп создал C++ на основе языка С, так как язык С был кратким, хорошо подходил для системного программи­ровании, был широко доступен и тесно связан с опера­ционной системой UNIX. Объектно–ориентированная часть языка C++ возникла под влиянием языка модели­рования Simula67. Страуструп добавил элементы ООП в язык С, не изменяя при этом существенно сам язык С.

Название C++ происходит от обозначения оператора инкремента ++ в языке С, который добавляет единицу к значению переменной. Название C++ подразумевает, что этот язык является усовершенствованной (++) версией языка С.

Обобщенное программирование

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

 

2. Структура программы на С++

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

Большинство программ на С++ имеют следующий вид:

раздел подключения заголовочных файлов

заголовок программы (функции)

{

тело функции

}

Заголовок программы

Программа C++ состоит из одного или более модулей, называемых функциями. Выполнение программы начи­нается с функции, имеющей имя main(), поэтому в про­грамме обязательно должна присутствовать функция с таким именем. Если в про­грамме нет такой функции, то в нет и законченной программы; компилятор в этом случае указывает, что функция main() не была определена.

Описание такой функции выполняют в разделе заголовка программы и записывают в виде:

void main()

Важно учитывать тот факт, что компилятор С++ различает регистр символов. Поэтому, имя функции, набранное в другом регистре (например: Main() или MAIN()), будет распознаваться как неправильное.

Раздел подключения заголовочных файлов

При создании исполняемого кода программ C++, так же как и в случае с программами С, используется пре­процессор. Это программа, которая обрабатывает исход­ный файл перед основной компиляцией. Чтобы вызвать этот препроцессор, не надо делать ниче­го особенного. Он запускается автоматически при ком­пиляции программы.

Каждая программа на С++ вначале имеет директиву вида:

#include <iostream.h>

Эта директива приводит к тому, что препроцессор добавляет в программу содержимое файла iostream. Это типичное для препроцессора действие: добавление или изменение текста в исходном коде перед компиляцией.

Директива #include приводит к тому, что содержимое файла iostream пере­дается в компилятор вместе с содержимым исходного файла. В сущности, содержимое файлаiostream заменя­ет в программе строку #include <iostream>. Исходный файл не изменяется, а объединенный файл, созданный из исходного файла и файла iostream, обрабатывается на следующем этапе компиляции.

Такие файлы, как iostream, называются файлами вклю­чения (поскольку они включаются в другие файлы) или заголовочными файлами (поскольку они включаются в начале файла). Компиляторы C++ поставляются со мно­гими заголовочными файлами, каждый из которых под­держивает отдельное семейство программных средств. Заголовочные файлы в языке С по традиции имеют рас­ширение h, это самый простой способ идентификации типа файла по его имени. Например, заголовочный файл math.hподдерживает различные математические функ­ции языка С++.

Заголовочные файлы находятся в папке Include среды разработки Turbo C++. Если при запуске программы выдается ошибка, указывающая на отсутствие подключаемого заголовочного файла, то в среде Turbo C++ необходимо выполнить настройку. Для этого выполните команду Options – Directories, в поле Include Directoriesвведите ..\INCLUDE, а в поле Library Directories введите ..\LIB.

Тело функции

Тело функции содержит инструкции для ком­пьютера, т.е. определяет то, что собственно делает фун­кция.

Тело функции имеет следующий вид:

{

описание переменных;

операторы;

return;

}

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

Оператор представляет собой инструкцию для компьютера. Чтобы понять исходный код, компилятор должен знать, когда заканчивается один оператор и начи­нается другой. В некоторых языках программирования используются разделители операторов. В языке Pascal один оператор от следующего отделяется точкой с запятой. В некоторых случаях точку с запятой в языке Pascal можно опускать, например, после оператора перед словом END, когда фактически не происходит разделение двух операторов. Но в языке C++, так же как и в языке С, применяется скорее признак (указатель) конца, чем разделитель. Признак конца – это точка с запятой, которая отмечает конец оператора; она является скорее частью оператора, чем разделителем между операторами. Практический резуль­тат заключается в том, что в языке C++ никогда нельзя опускать точку с запятой.

Инструкция RETURN 0 указывает на завершение работы функции и возврат в вызывающую программу. В главной функции main() эту инструкцию можно не указывать.

В тексте программ допускается использовать комментарии. В языке C++ комментарии обозначаются двойной на­клонной чертой (//). В программах C+ + можно использовать комментарии из языка С, которые заключены между символами /* и */.

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