Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие С++- не книжкой_новое.doc
Скачиваний:
5
Добавлен:
04.11.2018
Размер:
765.44 Кб
Скачать

Глава 1. Основы программирования на языке высокого уровня

1.1. Структура программы на языке С++

Для того чтобы описать структуру программы, написанной на C++, рассмотрим простейшую программу, выводящую на экран строку Hello, world.

// Program1.cpp

#include <iostream.h>

Void main()

{

cout << "\nHello, world\n";

}

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

Во второй строке программы помещена команда препроцессора (директива) #include, позволяющая подключить стандартные библиотеки функций используемого компилятора или оттранслированные модули, написанные самим программистом. Директива #include имеет два формата:

#include <имя_файла>

#include “имя_файла”.

В первом случае имя_файла определяет текстовый (заголовочный) файл, содержащий прототипы (описания) той или иной группы стандартных для данного компилятора функций. Например, в нашем случае директива #include <iostream.h> обеспечивает включение стандартных возможностей потока ввода и вывода, находящихся в файле iostream.h (мнемоника: “i” (input) – ввод, “o” (output) – вывод, stream – поток, “h” (head)- заголовок). Стандартным потоком вывода по умолчанию считается вывод на экран монитора, стандартный поток ввода обеспечивает чтение данных с клавиатуры. Приведем еще несколько примеров использования директивы #include. Если программист хочет использовать в своей программе такие стандартные функции как косинус (cos), синус (sin), степень числа (pow), то он должен использовать директиву #include <math.h>, для использования функции ожидания ввода любого символа с клавиатуры без отображения на экране, то есть функции задержки экрана (getch) – директиву #include <conio.h>, функцию конкатенации строк (strcat)- директиву #include <string.h>. Если в программе, например, используется функция cos (функция вычисления косинуса), но не указана директива #include <math.h>, то на этапе компиляции возникнет ошибка. Ниже приведено функциональное значение основных заголовочных файлов:

math.h –математические функции;

ctype.h – функции проверки и преобразования символов;

stdio.h – функции ввода вывода для стандартных файлов;

string.h, stdlib.h – функции для работы со строками;

alloc.h – функции для выделения и освобождения памяти;

conio.h – функции для работы с терминалом в текстовом режиме;

graphics.h – функции для работы с графикой.

Если имя_файла после директивы #include указано в кавычках, это означает, что используется не стандартный заголовочный файл, а файл, созданный самим программистом.

Третья строка программы является заголовком функции с именем main. Каждая программа должна содержать функцию с именем main, и работа программы начинается с выполнения этой функции. Перед именем main помещено служебное слово void – спецификатор типа, указывающий, что функция main в данной программе не возвращает никакого значения. Круглые скобки после main требуются в связи с синтаксисом заголовка любой функции и содержат список параметров. В нашем примере параметры не нужны и этот список пуст.

Тело любой функции в языке С++ – это заключенная в фигурные скобки последовательность описаний и операторов. Каждое описание и оператор заканчивается символом ‘;’. В данном примере в теле функции main нет явных описаний, а есть только один оператор

cout << "\nHello, world\n";

Имя cout, в соответствии с информацией, содержащейся в файле iostrem.h, является именем объекта, который обеспечивает вывод информации на экран монитора. (Поэтому, если строка #include <iosteam.h> будет отсутствовать в программе, то имя cout будет воспринято как неизвестное на этапе компиляции программы). Операция << (“поместить в”) пишет свой второй аргумент в первый (в данном случае, строковую константу "\nHello, world\n" в стандартный поток вывода cout). Строковая константа в языке С++ - это последовательность символов, заключенная в двойные кавычки. В строке символ обратной косой черты ‘\’, за которым следует другой символ, обозначает один специальный символ, в данном случае, ‘\n’ является символом новой строки. Таким образом, выводимые символы в данном случае состоят из символа перевода строки, символов Hello, world и еще одного символа перевода строки.

Отметим, что обратная косая черта ‘\’ позволяет не только записывать символы, не имеющего графического изображения и некоторые другие, но и выводить символьные константы, явно задавая их коды в восьмеричном или шестнадцатеричном виде. Последовательность литер, начинающаяся с символа ‘\’ называют esc-последовательностями (ескейп-последовательностями). Их допустимые значения приведены в таблице 1.

Отметим несколько особенностей использования стандартного потока вывода cout.

  1. Строки, помещенные в два подряд идущих потока cout, при условии, что в них нет символа перевода строки, будут выведены на экран как одна строка, то есть операторы

cout << “Это” ;

cout << “строка”;

обеспечивают вывод на экран текста: Это строка .

  1. Несколько строк, последовательно помещенных в поток cout, при условии, что в них нет символа перевода строки, будут выведены на экран как одна, то есть оператор

cout << “С” “т” “рока”;

обеспечивает вывод на экран текста: Строка .

  1. Длинную текстовую строку можно разместить подряд в нескольких строках программы, используя символ \. Например, оператор

cout << “Это \

строка”

обеспечит вывод строки: Это строка. (Обратите внимание, что пробелы из второй строки сохраняются).

Методы организации вывода числовой информации и ввода данных будут рассмотрены в следующей главе.

Таблица 1. Допустимые ESC-последовательности

Изображение

Смысл

\a

Звуковой сигнал

\b

Возврат на шаг (забой)

\n

Перевод строки (новая строка)

\r

Возврат каретки

\t

Табуляция горизонтальная

\\

Обратная косая черта (\)

\’

Апостроф (‘)

\”

Двойная кавычка (“)

\000

Восьмеричный код символа (000 - любые восьмеричные символы)

\xhh

Шестнадцатеричный код символа (hh – любые шестнадцатеричные символы)