Операторы и математические функции
Переменные и их типы
План
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+ + можно использовать комментарии из языка С, которые заключены между символами /* и */.
Поскольку комментарий из языка С заканчивается не символом конца строки, а символом */, его можно продолжать на несколько строк. В программах можно использовать любой из этих двух видов комментариев или оба вместе. (начало)