Практика использования отступов

Знак точки с запятой и позиционирование

Спросим у эксперта

Вопрос: Приводит ли использование программного блока к потере эффективности по времени? Другими словами, потребляют ли скобки { и } дополнительное время при выполнении программы?

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

 

 

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

С++ не рассматривает конец строки текста как конец предложения — только точка с запятой заканчивает предложение. По этой причине не имеет значения, в каком месте строки вы размещаете предложение. Например, для С++

 

х = у ;

y=y+1;

cout << х << " " << у;

 

будет значить то же самое, что

 

х = у; у = у + 1; cout << х << " " << у;

 

Более того, отдельные элементы предложения тоже могут располагаться на отдельных строках. Например, приведенный ниже фрагмент вполне правилен:

 

cout << "Это длинное предложение. Сумма равна : " << а +

b + c + d + e + f;

 

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

 

 

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

 

Цель 1.10. Знакомимся с функциями

 

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

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

 

MyFunc ( ) ;

 

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

Некоторые функции требуют указания одного или нескольких аргументов, которые передаются функции при ее вызове. Аргумент представляет собой значение, передаваемое функции. Перечень аргументов указывается внутри круглых скобок в предложении вызова функции. Если, например, функция MyFunc() требует в качестве аргумента целое число, то приведенная ниже строка вызовет MyFunc() с передачей ей в качестве аргумента числа 2:

 

MyFunc(2);

 

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

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

 

х = MyFunc(2);

 

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

 

х = MyFunc(2)+ 10;

 

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

Повторим: аргументом называется значение, передаваемое в функцию. Возвращаемое значение — это данное, которое передается назад в вызывающий код.

Ниже приведена короткая программа, демонстрирующая вызов функции. Она использует одну из встроенных в С++ функций, которая называется abs( ), чтобы вывести на экран абсолютное значение числа. Функция abs() принимает один аргумент, преобразует его в абсолютное значение и возвращает результат.

// Использование функции abs().

 

#incluae <iostream>

#include <cstdlib>

using namespace std;

 

int main ()

{

int result;

result = abs(-10);

cout << result;

 

return 0;

}

 

В приведенной программе значение -10 передается функции abs() в качестве аргумента. Функция abs( ) получает аргумент, с которым она вызывается, и возвращает его абсолютное значение, которое в данном случае составляет 10. Это значение присваивается переменной result. В результате программа выводит на экран "10".

Обратите внимание на включение в программу заголовка <cstdlib>. Этот заголовок требуется для функции abs(). Во всех случаях, если вы используете библиотечную функцию, вы должны включать заголовок, в котором она описана.

Вообще говоря, вы будете использовать в своих программах функции двух видов. Один вид функций — это те функции, текст которых вы пишете сами; примером такой функции является main(). Позже вы научитесь писать и другие прикладные функции. Реальные С++-программы всегда содержат большое число функций, написанных пользователем.

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

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

 

Библиотеки С++

 

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

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

Стандартная библиотека С++ очень велика; она содержит большое количество функций, которые наверняка потребуются вам при написании программ. Библиотечные функции действуют как строительные блоки, из которых вы собираете нужную вам конструкцию. Вам следует познакомиться с документацией к библиотеке вашего компилятора. Вас может удивить, насколько разнообразны библиотечные функции. Если вы напишите функцию, которую будете использовать снова и снова, ее также можно сохранить в библиотеке.

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

Цель 1.11. Ключевые слова С++

К настоящему времени в стандартном С++ определены 63 ключевых слова; все они приведены в табл. 1-1. Вместе с формальным синтаксисом С++ они образуют язык программирования С++. Ранние версии С++ определяли еще ключевое слово overload, но теперь оно устарело. Имейте в виду, что язык С++ различает прописные и строчные буквы, при этом он требует, чтобы все ключевые слова вводились строчными буквами (на нижнем регистре клавиатуры).

 

Таблица 1-1. Ключевые слова С++

 

asm auto boot break
case catch char class
const const_cast continue default
delete do double dynamic_cast
else enum explicit export
extern false float for
friend goto if inline
int long mutable namespace
new operator private protected
public register reinterpret_cast return
short signed sizeof static
staticcast struct switch template
this throw true try
typedef typeid typename union
unsigned using virtual void
volatile wchart while  

Цель 1.12. Идентификаторы

 

В С++ к идентификаторам относятся имена, присвоенные функциям, переменным или любым другим определенным пользователем объектам. Идентификатор может состоять из одного или нескольких символов. Имена переменных допустимо начинать с любой буквы латинского алфавита или со знака подчеркивания. Далее может идти буква, цифра или знак подчеркивания. Знаки подчеркивания обычно используются для повышения наглядности имен переменных, например, line_count (счетчик_строк). Прописные и строчные буквы рассматриваются компилятором, как различные символы; таким образом, для С++ myvarи MyVar являются различающимися именами. При назначении имен переменным или функциям следует иметь в виду важное ограничение: ключевые слова С++ нельзя использовать в качестве идентификаторов. Кроме того, нельзя использовать в произвольных целях предопределенные идентификаторы, такие, как cout.

 

Вот несколько примеров правильных идентификаторов:

 

Test x y2 Maxlncr
up _top my_var simplelnterest23

 

Не забывайте, что недопустимо начинать идентификатор с цифры. Так. 980ОК не может служить идентификатором. Хороший стиль программирования требует, чтобы ваши идентификаторы отражали существо обозначаемых ими объектов.

 

Список литературы

1. Р. Лафоре. ООП в С++. 4-е издание. 2011. М., СПб. и т.д. "Питер". 924 с.

2. Г. Шилдт. Самоучитель С++. 3-е издание. 2007. Санкт-Петербург, «БХВ-Петербург. 684 с.

3. Д. Либерти, Б. Джонс. Освой самостоятельно С++ за 21 день. 5-е издание. 2007. М., СПб., Киев, "Вильямс". 784 с.