4386

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

Реферат

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

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

Русский

2012-11-18

66.5 KB

6 чел.

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

  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.


 

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

26361. Фридрих II и просвещённый абсолютизм в Пруссии 27.52 KB
  Фридрих II и просвещённый абсолютизм в Пруссии. Фри́дрих II или Фридрих Великий известный также как по прозвищу Старый Фриц нем. Фридрих родился в Берлине 24 января 1712 года при крещении получил имя КарлФридрих. Его отец король Пруссии Фридрих Вильгельм I из династии Гогенцоллернов мать София Доротея Ганноверская дочь короля Англии Георга I.
26362. Просвещенный абсолютизм в Австрии. Реформы Марии-Терезии и Иосифа II 15.02 KB
  Реформы МарииТерезии и Иосифа II. Правление Иосифа II 178090 Сын Марии Терезии Иосиф II ставший соправителем своей матери после 1765 часто вступал с ней в споры по вопросам государственной политики. Демонстрируя просвещенность и добрую волю Иосиф II провозгласил равенство всех подданных перед судом и при сборе налогов. Хотя Иосиф II объявил себя защитником католичества он вел энергичную борьбу с властью папы Римского.
26363. Итальянские войны 1494-1559 г 25.59 KB
  Французские войска вторглись в Италию подчинили Флоренцию и практически не встречая сопротивления в 1495 году заняли Неаполь. 6 июля 1495 года французские войска встретились с армией Венецианской лиги в сражении при Форново и не сумев добиться победы ушли во Францию. В 1496 году испанские войска очистили территорию Италии от французских гарнизонов остававшихся в крепостях а французский гарнизон в Неаполе капитулировал. В 1501 году французские войска вторглись на территорию Неаполя а испанский экспедиционный корпус высадился в Калабрии.
26364. Тридцатилетняя война 1618-1648 г 29.02 KB
  Тридцатилетняя война 16181648 г. Тридцатилетняя война 1618 1648 первый в истории Европы военный конфликт затронувший в той или иной степени практически все европейские страны в том числе и Россию за исключением Швейцарии. Война началась как религиозное столкновение между протестантами и католиками Германии но затем переросла в борьбу против гегемонии Габсбургов в Европе. Последняя значимая религиозная война в Европе породившая вестфальскую систему международных отношений.
26365. Война за испанское наследство 34.66 KB
  Когда же Людовик XIV начал более агрессивно расширять свои территории некоторые европейские державы главным образом Англия и Голландская республика выступили на стороне Священной Римской империи чтобы воспрепятствовать усилению Франции. Другие государства присоединились к союзу против Франции и Испании чтобы попытаться заполучить новые территории или же защитить уже имеющиеся. В результате Филипп V остался королём Испании но лишился права наследовать французский престол что разорвало династический союз корон Франции и Испании. В...
26366. Война за австрийское наследство 17.67 KB
  Претензии сторон После смерти императора Карла VI 20 октября 1740 года его старшая дочь Мария Терезия вступила согласно постановлению Прагматической санкции во владение всеми землями австрийской монархии но её наследственные права стали оспариваться с разных сторон а одновременно с тем заявлены были и разные другие притязания. Прусский король Фридрих II Великий прежде всех воспользовался этим случаем чтобы заявить древние права своего дома на силезские герцогства Лигниц Волау Бриг и Егерндорф и в декабре 1740 года вступил в Силезию....
26367. Семилетняя война 1756-1763 г. и европейская дипломатия вт.пол. XVIII в 62.81 KB
  Первая 1740 1742 и вторая 1744 1748 Силезские войны являются составной частью Войны за австрийское наследство. Североамериканский театр войны называют франкоиндейской войной. Причины войны Первые выстрелы Семилетней войны раздались задолго до её официального объявления и не в Европе а за океаном. Фридрих считая войну с Австрией неизбежной и сознавая ограниченность своих ресурсов сделал ставку на английское золото а также на традиционное влияние Англии на Россию рассчитывая удержать Россию от участия в предстоящей войне и избежать...
26368. Исторические предпосылки и характерные черты эпохи Возрождения 12.63 KB
  Христиане в свою очередь окончательно вытеснили мусульман из католической Западной Европы уничтожив в 1492 году в год открытия Колумбом Америки на Пиренейском полуострове Кордовский халифат. Все населения Европы было окончательно христианизовано.в Третьим важнейшим историческим фактором стал упадок влияния церкви на общественногосударственную жизнь стан Западной Европы. Ослабление а то и подрыв господства церкви в политической жизни народов Европы самым положительным образом сказалось на всех сторонах социальной исторической и...
26369. Западноевропейская естественнонаучная мысль эпохи Возрождения 26.42 KB
  Более чем через столетие его идеи с энтузиазмом воспринял и распространял Джордано Бруно. Наиболее известным продолжателем Кузанского был уже упомянутый Джордано Бруно. Утопические и естественнонаучные идеи эпохи Ренессанса Томмазо Кампанелла Джордано Бруно Томмазо Кампанелла Важный вклад в развитие социальной мысли Ренессанса внес Томмазо Кампанелла 15681639. Джордано Бруно 15481600.