4386

Введение в синтаксис языка С++

Реферат

Информатика, кибернетика и программирование

Введение в синтаксис языка С++ Использование ключевого слова using Если операторы cout и cin применяются очень часто, то использование идентификатора std:: перед ними становится обременительным. Эту проблему можно решить двумя способами. Первы...

Русский

2012-11-18

66.5 KB

4 чел.

Введение в синтаксис языка С++

  1.  Использование ключевого слова using

Если операторы cout и cin применяются очень часто, то использование идентификатора std:: перед ними становится обременительным. Эту проблему можно решить двумя способами. Первый заключается в том, что в начале текста кода можно сообщить компилятору об использовании объектов cout и cin (или любых других) только из стандартной библиотеки, как показано в листинге 2.1.

Листинг 2.1. Использование ключевого слова using

1: #include <iostream>

2: int main()

3: {

4: using std::cout; // Вместо этих двух строк можно записать

5: using std::endl; /* одну: using namespace std;*/

6:

7: cout << “Hello there.\n”;

8: cout << “Here is 5: ” << 5 << “\n”;

9: cout << “The manipulator endl “;

10: cout << “writes a new line to the screen.”;

11: cout << endl;

12: cout << “Here is a very big number: \t” << 70000;

13: cout << endl;

14: cout << “Here is the sum of 8 and 5: \t”;

15: cout << 8+5 <<endl;

16: cout << “Here is a fraction: \t”;

17: cout << (float) 5/8 << endl;

18: cout << “And a very very big number: \t”;

19: cout << (double) 7000*7000 << endl;

20: return 0;

21: }

РЕЗУЛЬТАТ

Hello there.

Here is 5: 5

The manipulator endl writes a new line to the screen.

Here is a very big number:        70000;

Here is the sum of 8 and 5:  13

Here is a fraction:    0.625

And a very very big number:  4.9е+07

 Помимо стандартного объекта cout в данной программе используется стандартный оператор endl, который выводит на экран символ новой строки. В строке 12 (и в некоторых других) используется еще один символ форматирования –  \t, который вставляет символ табуляции, используемый для выравнивания выводимой информации. Идентификатор float указывает объекту cout, что результат должен выводиться как вещественное (с плавающей точкой) число. Идентификатор double устанавливает вывод результата в экспоненциальном представлении.

Второй способ избежать необходимости писать каждый раз std:: перед стандартными операторами заключается в том, что вместо строки using std:: cout; используется определение пространства имен using namespace std.

Преимуществом формы записи using namespace std; является отсутствие необходимости указывать каждый используемый объект явно. Недостатком является риск непреднамеренного использования объектов из несоответствующей библиотеки. Ортодоксы предпочитают писать std:: перед каждым экземпляром cout и endl. Лентяи предпочитают использовать пространство имен (using namespace std;) и рисковать.

  1.  Комментарии

В строках 4 и 5 программы используются комментарии. Комментарии представляют собой текст, который игнорируется компилятором, но позволяет описать прямо в исходном коде назначение отдельной строки или целого блока.

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

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

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

  1.  Функции

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

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

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

Функции состоят из заголовка и тела. Заголовок содержит объявление типа возвращаемого значения, имени и параметров функции. Параметры позволяют передавать в функцию данные. Следовательно, если функция предназначена для сложения двух чисел, то их необходимо передать в функцию как параметры. Вот как будет выглядеть заголовок возвращающей целочисленное значение функции Sum(), которой передаются два целых числа (first и second):

Int Sum(int first, int second)

Параметр – это объявление типа данных, передаваемых функции. Реальное значение, передаваемое при вызове функции, называется аргументом. Некоторые программисты рассматривают эти понятия как синонимы. Другие считают смешение терминов признаком непрофессионализма.

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

В листинге 2.2 приведена функция, которая получает два целочисленных параметра и возвращает целочисленное значение.

Листинг 2.2. Пример простой функции

#include <iostream>

 int Add (int first, int second)

{

 return (first+second);

}

void main() {

 using std::cout;

 using std::cin;

 int a, b, c;

cout << “Enter two numbers: “;

 cin >> a;

 cin >> b;

 c=Add(a, b);

cout << “c=“ << c;

char response;

cin >> response;

}

РЕЗУЛЬТАТ

Enter two numbers: 3 5

C=8

  1.  Переменные

В последней программе мы использовали переменные a, b, c. В языке С++, как и в других языках, переменные используются для хранения информации. Переменная – это место в оперативной памяти компьютера, где можно размещать хранимое значение, а затем извлекать его (табл. 2.1).

Таблица 2.1.

Тип переменной

Размер

Значение

bool

1 байт

True или false

unsigned short int

2 байта

от 0 до 65 535

short int

2 байта

от -32 768 до 32 767

unsigned long int

4 байта

от 0 до 4 294 967 295

long int

4 байта

от -2 147 483 648 до 2 147 483 648

int (16 разрядов)

2 байта

от -32 768 до 32 767

int (32 разряда)

4 байта

от -2 147 483 648 до 2 147 483 648

unsigned int (16 разрядов)

2 байта

от 0 до 65 535

unsigned int (32 разряда)

4 байта

от 0 до 4 294 967 295

char

1 байт

256 значений символов

float

4 байта

от 1.2е-38 до 3.4е38

double

8 байтов

от 2.2е-308 до 1.8е308

Чтобы определить переменную, необходимо указать тип, за которым (после одного или нескольких пробелов) должно следовать ее имя, завершающееся точкой с запятой. Для имени переменной можно использовать практически любую комбинацию букв, но оно не должно содержать пробелов, например: x, J23qrsnf и myAge. Следует подбирать осмысленные имена, позволяющие судить о назначении переменных, поскольку это облегчает понимание работы программы в целом.

Соблюдая культуру программирования, избегайте таких ужасных имен, как J23qrsnf, и ограничьте применение односимвольных имен (таких как x или i) лишь общепринятыми переменными, которые используются особенно часто. Старайтесь использовать осмысленные имена, например myAge (мой возраст). Впоследствии такие имена избавят от мучительных попыток вспомнить, что именно имелось в виду во время написания этой строки кода.

Язык С++ чувствителен к регистру букв, прописные и строчные буквы считаются разными. Переменные с именами age, Age и AGE рассматриваются как три различные переменные. Некоторые компиляторы позволяют отключать чувствительность к регистру букв. Лучше этого не делать, поскольку такая программа не сможет работать с другими компиляторами, а остальные программисты не смогут разобраться в ней.

Некоторые слова изначально зарезервированы в языке С++, и поэтому их нельзя использовать в качестве имен переменных. Такие слова называются ключевыми и используются компилятором для управления программой. В их число входят if, while, for, main и т.д.

Вполне допустимо создавать несколько переменных с помощью одного оператора, указав их тип и перечень имен, разделенных запятыми. Например:

unsigned int myAge, myWeight; //две переменные типа unsigned int.

Начинающим программистам иногда трудно решить, когда объявлять переменную типа long, а когда – типа short. Правило довольно простое: если существует хоть малейший шанс, что значение будет слишком большим для предполагаемого типа, то используйте тип с большим размером.

Переменные типа bool – это логические переменные (переменные булевой алгебры), которые могут иметь только два значения True (истина) или false (ложь). Переменные типа char – это символьные переменные (буквы). Char – это сокращение слова character (буква, символ), читается как «кар».

  1.  Константы

Подобно переменным, константы (постоянные) предназначены для хранения данных. Но, в отличие от переменных, константы нельзя изменить. Создаваемую константу необходимо сразу же инициализировать, поскольку присвоить ей значение позже не удастся. В языке С++ предусмотрены два типа констант: литеральные и символьные.

Литеральная константа – это значение, непосредственно вводимое в самой программе. Например, в выражении int myAge = 39; слово myAge является переменной типа int, а число 39 – литеральной константой. Константе 39 никакое иное значение присвоить нельзя.

Символьная константа – это константа, представленная именем (точно так же, как представлена любая переменная). Но, в отличие от переменной, значение инициализированной константы изменить нельзя.

В языке С++ существуют два способа объявления символьной константы: с использованием ключевого слова const и ныне уже устаревший, заключающийся в использовании директивы препроцесора #define. Например:

#define myAge 39;

const int myAge = 39;

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

  1.  Перечисляемые константы

Перечисляемые константы позволяют создавать новые типы данных, а затем определять переменные этих типов, значения которых ограничены набором значений константы. Например, можно объявить константу COLOR  как перечисляемую и определить для нее пять значений: RED, BLUE, GREEN, WHITE, BLACK.

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

enum COLOR { RED, BLUE, GREEN, WHITE, BLACK };

 Это выражение выполняет две задачи:

создается перечисляемая константа нового типа с именем COLOR;

определяются символьные константы: RED со значением 0, BLUE со значением 1, GREEN со значением 2 и т.д.

Каждому элементу перечисляемой константы соответствует определенное целочисленное значение. По умолчанию первый элемент имеет значение 0, а каждый последующий – на единицу больше. Любому элементу константы можно присвоить произвольное значение; в этом случае остальные элементы (значения которых не задавались явно) инициализируются значением, на единицу больше предыдущего. Предположим, что константа объявлена так:

enum COLOR { RED=100, BLUE, GREEN=500, WHITE, BLACK=700 };

Здесь значение RED будет равно 100, значение BLUE=101, значение GREEN=500, значение WHITE=501, значение BLACK=700.

Теперь можно определять переменные типа COLOR, каждой из них следует присвоить только одно из перечисленных значений (в данном случае – RED, BLUE, GREEN, WHITE, BLACK или 100, 101, 500, 501, 700).

Важно понимать, что перечисляемые переменные на самом деле имеют тип unsigned int и соответствуют целочисленным беззнаковым переменным. Но иногда при работе с цветами, днями недели или другими подобными наборами значений неплохо иметь возможность называть значения по имени.

Листинг 2.3. Использование перечисляемых констант

#include <iostream.h>

 void main() {

 enum Days { Sunday, Monday, Tuesday, Wednsday,

Thursday, Friday, Saturday };

Days today;

today = Monday;

if (today == Sunday || today == Saturday)

cout << “\nWeekends!\n”;

else

cout << “\nBack to work.\n”;

 }

РЕЗУЛЬТАТ

Back to work.


 

А также другие работы, которые могут Вас заинтересовать

71384. Проектирование контактной сети постоянного тока 314.22 KB
  Для подачи электроэнергии на подвижной состав применяются устройства контактной сети. Контактная сеть может быть выполнена с контактным рельсом или контактной подвеской. Основным элементами контактной сети с контактной подвеской являются провода контактной сети контактный провод...
71386. Анализ финансового состояния предприятия на примере ОАО «ВК и ЭХ» 191.12 KB
  Финансовое состояние – важнейшая характеристика экономической деятельности предприятия Она определяет конкурентоспособность, потенциал в деловом сотрудничестве, оценивает, в какой степени гарантированы экономические интересы самого предприятия и его партнёров в финансовом и производственном отношении.
71387. Разработка поточной линии по ремонту тележек грузовых вагонов модели 18-100 465.5 KB
  Вагонное хозяйство является ключевым и играет важную роль в совершенствовании и обеспечении бесперебойной работы железнодорожного транспорта: оно объединяет вагоны и материально-техническую базу их ремонта. Задачами вагонного хозяйства являются поддержание грузовых вагонов в работоспособном...
71388. Криминологическая характеристика организованной преступности 137.23 KB
  Организованную преступность сегодня называют одной из глобальных проблем современности, решение которой требует усилий всего человечества, слаженных действий в рамках отдельных государств, координируемых мировым сообществом.
71389. Equivalence within the framework of Dynamic translation model 57.35 KB
  The actual work of translation brings together everything the translator has learned about the target audience. Having faced many difficulties in preparing for me translation, the translator is will face still more obstacles before the work is done.
71390. Процесс развития воображения у детей дошкольного возраста 123.42 KB
  Проблема развития воображения детей дошкольного возраста привлекает к себе пристальное внимание психологов и педагогов. Одним из них является вопрос об индивидуальных особенностях развития воображения проявлений индивидуальности ребенка в его творческой деятельности.
71392. Оптимизация логистических процессов и процессов продаж на «1С:Розница 8» в условиях объекта управления 2.14 MB
  Для достижения поставленной цели в рамках настоящей дипломной работы необходимо выполнить следующие задачи: Дать оценку реализации бизнес-процессов на начало момента внедрения в сети розничных магазинов Галактика.