Лекции.ИНФО


Int mul (int x, int у); // Прототип функции mul().



Int main()

{

 int answer;

 answer = mul (10, 11); // Присваивание значения, возвращаемого функцией.

 cout << "Ответ равен" << answer;

 return 0;

}

// Эта функция возвращает значение.

Int mul (int х, int у)

{

 return х * у; // Функция возвращает произведение х и у.

}

В этом примере функция mul() возвращает результат вычисления выражения х*у с помощью инструкции return. Затем значение этого результата присваивается переменной answer. Таким образом, значение, возвращаемое инструкцией return, становится значением функции mul() в вызывающей программе.

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

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

// Устаревший способ записи функции mul().

mul (int X, int у) /* По умолчанию в качестве типа значения, возвращаемого функцией, используется тип int.*/

{

 return х * у; // Функция возвращает произведение х и у.

}

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

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

Функция main()

Фффффф

Фффффф

Фффффф

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

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

Общий формат С++-функций

В предыдущих примерах были показаны конкретные типы функций. Однако все С++-функции имеют такой общий формат.

тип_возвращаемого_значения имя (список_параметров) {

.

Тело метода

.

}

Рассмотрим подробно все элементы, составляющие функцию.

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

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

В фигурные скобки заключено тело функции. Тело функции составляют С++-инструкции, которые определяют действия функции. Функция завершается (и управление передается вызывающей процедуре) при достижении закрывающей фигурной скобки или инструкции return.

Некоторые возможности вывода данных

До сих пор у нас не было потребности при выводе данных обеспечивать переход на следующую строку. Однако такая необходимость может потребоваться очень скоро. В C++ последовательность символов "возврат каретки/перевод строки" генерируется с помощью символа новой строки. Для вывода этого символа используется такой код: (символ обратной косой черты и строчная буква n). Продемонстрируем использование последовательности символов "возврат каретки/перевод строки" на примере следующей программы.

/* Эта программа демонстрирует последовательность, которая обеспечивает переход на новую строку.

*/

#include <iostream>

using namespace std;

Int main()

{

 cout << "один";

 cout << "два";

 cout << "три";

 cout << "четыре";

 return 0;

}

При выполнении программа генерирует такие результаты:

Один

Два

Тричетыре

Символ новой строки можно поместить в любом месте строки, а не только в конце. "Поиграйте" с символом новой строки, чтобы убедиться в том, что вы правильно понимаете его назначение.

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

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

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









Читайте также:

Последнее изменение этой страницы: 2016-03-17; Просмотров: 148;


lektsia.info 2017 год. Все права принадлежат их авторам! Главная