Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_1_10 / Лекция 04.docx
Скачиваний:
56
Добавлен:
21.05.2015
Размер:
2.04 Mб
Скачать

Две простые инструкции

Для рассмотрения более реальных примеров программ нам необходимо познакомиться с двумя С++-инструкциями: if и for.

Инструкция if

Инструкция if позволяет сделать выбор между двумя выполняемыми ветвями программы.

Инструкция if в C++ действует подобно инструкции IF, определенной в любом другом языке программирования. Её простейший формат таков:

if(условие) инструкция;

Здесь элемент условие — это выражение, которое при вычислении может оказаться равным значению ИСТИНА или ЛОЖЬ. В C++ ИСТИНА представляется ненулевым значением, а ЛОЖЬ — нулем. Если условие, или условное выражение, истинно, элемент инструкция выполнится, в противном случае — нет. При выполнении следующего фрагмента кода на экране отобразится фраза 10 меньше 11.

if(10 < 11) cout << "10 меньше 11";

Такие операторы сравнения, как "<" (меньше) и ">=" (больше или равно), используются во многих других языках программирования. Но следует помнить, что в C++ в качестве оператора равенства применяется двойной символ "равно" (==). В следующем примере cout-инструкция не выполнится, поскольку условное выражение дает значение ЛОЖЬ. Другими словами, поскольку 10 не равно 11, cout-инструкция не отобразит на экране приветствие.

if(10==11) cout << "Привет";

Безусловно, операнды условного выражения необязательно должны быть константами. Они могут быть переменными и даже содержать обращения к функциям.

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

// Эта программа демонстрирует использование if-инструкции.

#include <iostream>

using namespace std;

int main()

{

 int a,b;

 cout << "Введите первое число: ";

  cin >> a;

 cout << "Введите второе число: ";

  cin >> b;

 if(a < b) cout << "Первое число меньше второго.";

 return 0;

}

Цикл for

forодна из циклических инструкций, определенных в C++.

Цикл for повторяет указанную инструкцию заданное число раз. Инструкция for в C++ действует практически так же, как инструкция FOR, определенная в таких языках программирования, как Java, С#, Pascal и BASIC. Ее простейший формат таков:

for(инициализация; условие; инкремент) инструкция;

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

Например, следующая программа с помощью цикла for выводит на экран числа от 1 до 100.

// Программа демонстрирует использование for-цикла.

#include <iostream>

using namespace std;

Int main()

{

 int count;

 for(count=1; count<=100; count=count+1)

  cout << count << " ";

 return 0;

}

На рис. 2.1 схематично показано выполнение цикла for в этом примере. Как видите, сначала переменная count инициализируется числом 1. При каждом повторении цикла проверяется условие count<=100. Если результат проверки оказывается истинным, cout-инструкция выводит значение переменной count, после чего ее содержимое увеличивается на единицу. Когда значение переменной count превысит 100, проверяемое условие даст в результате ЛОЖЬ, и выполнение цикла прекратится.

В профессионально написанном С++-коде редко можно встретить инструкцию count=count+1, поскольку для инструкций такого рода в C++ предусмотрена специальная сокращенная форма: count++. Оператор "++" называется оператором инкремента. Он увеличивает операнд на единицу. Оператор "++" дополняется оператором "--" (оператором декремента), который уменьшает операнд на единицу. С помощью оператора инкремента используемую в предыдущей программе инструкцию for можно переписать следующим образом.

for(count=1; count<=100; count++) cout << count << " ";

Блоки кода

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

if(х<10) {

 cout << "Слишком мало, попытайтесь еще раз.";

  cin >> х;

}

обе инструкции, расположенные после if-инструкции (между фигурными скобками) выполнятся только в том случае, если значение переменной х меньше 10. Эти две инструкции (вместе с фигурными скобками) представляют блок кода. Они составляют логически неделимую группу: ни одна из этих инструкций не может выполниться без другой. С использованием блоков кода многие алгоритмы реализуются более четко и эффективно. Они также позволяют лучше понять истинную природу алгоритмов.

Блокэто набор логически связанных инструкций.

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

// Программа демонстрирует использование блока кода.

#include <iostream>

using namespace std;

Int main()

{

 int a, b;

 cout << "Введите первое число: "; cin >> a;

 cout << "Введите второе число: "; cin >> b;

 if(a < b)

{

  cout << "Первое число меньше второго.\n";

  cout << "Их разность равна: " << b-a;

 }

 return 0;

}

Эта программа предлагает пользователю ввести два числа с клавиатуры. Если первое число меньше второго, будут выполнены обе cout-инструкцин. В противном случае обе они будут опущены. Ни при каких условиях не выполнится только одна из них.

Точки с запятой и расположение инструкции

В C++ точка с запятой означает конец инструкции. Другими словами, каждая отдельная инструкция должна завершаться точкой с запятой.

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

Язык C++ не воспринимает конец строки в качестве признака конца инструкции. По-этому для компилятора не имеет значения, в каком месте строки располагается инструкция. Например, с точки зрения С++-компилятора, следующий фрагмент кода

х = у;

у = у+1;

mul(x, у);

аналогичен такой строке:

x = у; у = у+1; mul(x, у);

Практика отступов

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

Ключевые слова C++

В стандарте C++ определено 63 ключевых слова. Они показаны в табл. 2.1. Эти ключевые слова (в сочетании с синтаксисом операторов и разделителей) образуют определение языка C++. В ранних версиях C++ определено ключевое слово overload, но теперь оно устарело.

Следует иметь в виду, что в C++ различается строчное и прописное написание букв. Ключевые слова не являются исключением, т.е. все они должны быть написаны строчными буквами. Например, слово RETURN не будет распознано в качестве ключевого слова return.

Идентификаторы в C++

В C++ идентификатор представляет собой имя, которое присваивается функции переменной или иному элементу, определенному пользователем. Идентификаторы могут состоять из одного или нескольких символов (значимыми должны быть первые символа). Имена переменных должны начинаться с буквы или символа подчеркивания Последующим символом может быть буква, цифра и символ подчеркивания. Символы подчеркивания можно использовать для улучшения читабельности имени переменной например first_name. В C++ прописные и строчные буквы воспринимаются как личные символы, т.е. myvar и MyVar — это разные имена. Вот несколько примеров допустимых идентификаторов.

В C++ нельзя использовать в качестве идентификаторов ключевые слова. Нельзя же использовать в качестве идентификаторов имена стандартных функций (например abs). Помните, что идентификатор не должен начинаться с цифры. Так, 12х— недопустимый идентификатор. Конечно, вы вольны называть переменные и другие программные элементы по своему усмотрению, но обычно идентификатор отражает н чение или смысловую характеристику элемента, которому он принадлежит.

Стандартная библиотека C++

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

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

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

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

Помимо библиотеки функций, каждый С++-компилятор также содержит библиотеку классов, которая является объектно-ориентированной библиотекой. Наконец, в C++ определена стандартная библиотека шаблонов (Standard Template Library— STL). Она предоставляет процедуры "многократного использования", которые можно настраивать в соответствии с конкретными требованиями. Но прежде чем применять библиотеку классов или STL, нам необходимо познакомиться с классами, объектами и понять, в чем состоит суть шаблона.

Соседние файлы в папке lekcii_1_10