Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовые / Язык программирования Сpp 25.09.11.doc
Скачиваний:
110
Добавлен:
10.05.2015
Размер:
10.13 Mб
Скачать

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

Наряду с командами часто нужно писать пояснительный текст, который рассказывает о том, с какой целью вы все это делаете. Такие пояснения называются комментариями. Комментарии особенно важны, если вы хотите, чтобы в вашей программе мог разобраться кто-нибудь другой, или если вы собираетесь с ней работать дальше. Опыт показывает, что спустя неделю после завершения работы с программой забываются практически все тонкие моменты, на которые вы потратили больше всего времени. Поэтому примите настоятельный совет – пишите комментарии, даже если делать этого не хочется. С другой стороны не увлекайтесь литературным творчеством. писать комментарий типа: «а здесь я умножаю два на три». Пишите комментарии действительно там, где они нужны и так, чтобы они принесли наибольшую пользу. Комментарии программой не исполняются. Заметим, что в комментарии можно использовать любые символы, что означает, что комментарий можно писать на русском языке, а также использовать зарезервированные слова, например, main( ).

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

// Это текст, который до конца строки рассматривается

// как комментарий,

// такой комментарий может быть продолжен на следующей строке.

// Признаком окончания этого типа комментария является

// конец строки.

Такого рода комментарии называются комментариями в стиле языка С++.

Существует еще один тип комментариев. Такой комментарий начинается знаком /* и заканчивается обратным знаком */. Вот пример такого комментария:

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

* В связи с этим часто каждую строку такого комментария

* помечают каким-нибудь специальным знаком, например, знаком

* умножения. В противном случае комментарий можно принять

* за команду особенно когда запись производится буквами

* латинского алфавита */

Такой комментарий называется комментарием в стиле языка С. Комментарии этого типа не могут быть вложенными, т.е. конструкция типа

/* Это один комментарий, /* а здесь начинается другой */ */

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

1.3. Зарезервированные слова и типы данных

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

Зарезервированные словаэто заранее оговоренный список английских слов и нескольких символов, который используется в качестве команд языка. С некоторыми из них мы уже встречались, например, словаmain, define. Встречая такое слово, компьютер «понимает» что далее нужно сделать и не спутает его ни с каким иным словом. Таких слов в С++ немного, меньше 60. Можно сказать, что как только мы все их изучим, так сразу поймем возможности языка С++. Зарезервированный символ мы тоже встречали это решетка#.

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

Мы уже говорили, что минимальной единицей информации в компьютере является байт, который состоит из восьми битов. Память компьютера можно рассматривать как последовательность пронумерованных байтов. Номер байта называется его адресом. Байт довольно мелкая величина, поэтому для хранения чисел, букв или любого иного объекта информации часто используется несколько соседних байтов. Группа состоящая из соседних байтов в которых хранится объект информации называется ячейкой. Адресом такой ячейки является адрес первого, входящего в группу байта. Таким образом, память компьютера можно рассматривать как совокупность ячеек разного размера. Размер ячейки, как отмечалось, зависит от того, что мы в неё поместили. Однако часто ячейки равных размеров хранят в себе данные разных типов. Остановимся на этом более подробно.

Информация, содержащаяся в ячейках памяти может иметь совершенно различный смысл. Это могут быть, например, целые числа, или числа с дробной частью, или символы. Тем не менее, все это выражено в виде последовательности нулей и единиц. Обращаясь к ячейке памяти, компилятор может трактовать содержащуюся в ней информацию как число, букву, команду или информацию другого типа. Например, двоичное число 01000001 может обозначать букву Aили десятичное число 65. Поэтому, при создании программ, нужно указывать какая информация хранится в каждой ячейке. В этом случае за счет применения разных схем кодирования удается правильно интерпретировать содержащуюся информацию. К счастью, сделать это несложно, практически все выполняется автоматически. Для этого в языках программирования используются понятия«типыданных».

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

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

Часто этот перечень бывает закрытым. Это означает, что программист может работать только с ограниченным числом переменных входящих в названный список. В С++ это не так. Программист, работающий в С++ может неограниченно расширять количество типов переменных. Однако существует несколько базовых типов. Здесь мы рассмотрим только некоторые из них. Прежде всего, это символьный тип. В символьный тип входят все символы, которые встречаются на клавиатуре. Именно символы, а не вспомогательные клавиши. Однобайтовых символов может быть 28=256 штук. Для кодирования символов достаточно одного байта.

Каждый тип данных имеет свое название. Символьный тип имеет имя charот слова английского словаcharacter(буква, иероглиф, цифра, знак). Кстати, о иероглифах. Для кодирования многих национальных алфавитов 256 символов оказывается недостаточно. Поэтому иногда для кодирования символов используются два байта. Такой тип кодировки называется юникодом. Юникод позволяет поддеоживать все известные в мире алфавиты и элементы иероглифов.

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

Другим типом являются целые числа. В С++ целый тип называется типом int от словаinteger(целый). Для размещения числи типаint используется 4 байта. В четырех байтах можно поместить 232различных чисел без знака или числа от– 2 147 483 648до2 147 483 647. Обычно такого диапазона целых чисел вполне достаточно. В компьютерах ранних версий использовалось только два байта, поэтому диапазон чисел типаintв там значительно уже от-32768до32767. В компьютерах с 32 разрядных процессорах такие числа тоже можно использовать, только называются ониshort(короткий) илиshort int. Оба имени можно применять в программах, т.к. они означают одно и тоже.

Кроме целых чисел программа должна работать с дробными числами. В С++ для этого используются так называемые числа с плавающей точкой(запятой). Не стоит пугаться, с такими числами вы давно знакомы. Например, 123,456 можно записать как 1,23456∙102, т.е. такие числа имеют дробную часть. Такой тип чисел, а точнее тип данных, называетсяfloat(плавающий). Обратите внимание, что дробная часть отделяется от целой части точкой, а не запятой. Это справедливо для записи дробных сисел любых типов. Для записи числа типаfloatиспользуется 4 байта. Числа этого типа могут быть как положительными так и отрицательными. Диапазон изменений таких чисел примерно равен от 10-38до 1038.

Другим типом дробных чисел является число типа double (двойной). Такие числа имеют дробную часть. Например,3.1415926. Для записи числа типаdoubleиспользуется 8 байтов. Числа этого типа могут быть как положительными так и отрицательными. Минимальное по модулю число примерно равно 10-308, максимальное 10308. Следует понимать, что целые числа заприсыватся точно, а дробные числа хранятся как приближенное значение, то есть только

Сравним записи целых чисел и чисел с плавающей точкой. Если в программе встретятся числа 2 и 2.0 то компилятор С++ будет трактовать их по-разному. Первое рассматривается как целое – int (4 байта), второе какdouble (8 байт), потому, что у него есть дробная часть. Неважно, что она равна нулю. Число типаdoubleможет быть записано вэкспоненциальной форме. В частности такое представление удобно для очень больших и очень малых по модулю чисел. Например число 2873620000, которое иначе можно записать как2,87362∙109в С++ записывается как2.87362е9, то есть после знакаестоит степень в которую нужно возвести число 10. Такое обозначение употребляется потому, что в обычных клавиатурах не предусмотрен способ записи с использованием верхнего индекса. Число стоящее перед знакоменазывается мантиссой. Число стоящее после знакаеназывается показателем степени, его можно рассматривать как указатель направления и количества цифр на которые нужно переместить десятичную точку. Например, чтобы записать число3.62е4в виде обычной десятичной дроби нужно перенести десятичную точку на четыре позиции вправо, в результате получится число36200.0. Если после символаестоит отрицательное число, десятичную точку нужно перенести налево, при необходимости добавляя после нее нули. Так число3.62е-4означает тоже самое, что0.000362. Эти примеры показывают, что при экспоненциальном представлении числа десятичная точка как бы плывет на соответствующее степени количество разрядов. Отсюда и название такого типа - числа с плавающей точкой.

Число которое стоит перед символом еможет содержать или не содержать десятичную точку. Число стоящее послеене должно содержать десятичной точки.

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

Вероятно, после такого краткого введения в типы чисел у читателя появились новые вопросы. Например, какие еще типы чисел могут использоваться в С++?. Почему тип чисел с дробной частью называется double(двойной)? Есть ли типsingle (одинарный)? Ответы на эти вопросы читатель может получить из следующей таблицы:

Название типа

Количество используемых байтов

Интервал значений

Точность цифр

Примечания

short(short int)

2

От -32768 до 32768

-

Названия shortиshort intэквивалентны

int

4

От -2147483648 до 2147483647

-

long(long int)

4

От -2147483648 до 2147483647

-

Названия longиlong intэквивалентны

float

4

Приблизительно от 10-38до 1038

7

double

8

Приблизительно от 10-308до 10308

15

long double

10

Приблизительно от 10-432до 10432

19

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

Забегая вперед отметим, что объем памяти занимаемой типом можно получить если воспользоваться инструкцией

sizeof(имя типа);илиsizeof(имя переменной);

Например,

cout<< sizeof(int);

выведет на экран число 4, а

short int j;

cout<< sizeof(j);

даст число 2.

Теперь, когда мы разобрались с типами чисел, попробуем ответить на такой вопрос,- чем отличаются числа 2 и 2.0? Читатель сразу ответит – типом. Конечно, ответ формально верный. Но чем по существу отличаются эти числа? Что значит отличаются типом? Думаю, что здесь возникнет заминка. Поэтому подскажу. Число 2.0 рассматривается как приближенное значение числа 2, несмотря на то, что его дробная часть равна нулю. Чуть позже мы увидим, что это может приводить к неожиданным результатам при выполнении вычислений, особенно при выполнении деления.

Еще одним типом является тип bool, сокращение от словаboolean, что означает булевский. Напомним, что английский математикGeorgeBool, именем которого и назван этот тип, первым ввел правила математической логики. Переменные типаboolмогут принимать только два значенияtrueиfalse. Переменная типаbool занимает один байт.

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

Заканчивая изучение базовых типов дадим наконец определение тому о чем мы так долго говорили.

Тип данныхэто множество значений, которые может принимать переменная, с определением операций, которые над ней можно выполнять.