p align="left">Например: inc. main() { II примеры комментария int а = 0; // int d; /*int b = 15;*/ int с = 7; /* <- начало комментария а = с; конец комментария -> */ return 0; } В приведенном примере компилятор проигнорирует объявление переменной b и d, а также присвоение переменной а значения переменной с. 3. Переменные и типы данных Суть фактически любой программы сводится к вводу, хранению, модифицированию и выводу некоторой информации. Для того чтобы программа могла на протяжении своего выполнения сохранять определенные данные и оперировать с ними, используются переменные и константы. Одним из базовых свойств программы является идентификатор. Под идентификатором понимается имя переменной или константы, имя функции или метка. В программе идентификатор может содержать прописные и строчные латинские буквы, цифры и символ подчеркивания, обязательно начинается с буквы или символа подчеркивания и не должен совпадать с ключевым словом (с учетом регистра). Так, в приведенном выше примере представлены идентификаторы а, Ь, с и d. Следующим базовым понятием любого языка программирования является ключевое слово. Ключевые слова - это зарезервированные языком идентификаторы, имеющие специальное назначение. В табл. 1.1 приводится список ключевых слов языка С++. Таблица 1.1 Ключевые слова |
asm | else | new | template | | auto | enum | operator | this | | break | explicit | private | throw | | case | extern | protected | try | | catch | float | public | typedef | | char | for | register | typename | | class | friend | return | union | | const | goto | short | unsigned | | continue | if | signed | virtual | | default | inline | sizeof | void | | delete | int | static | volatile | | do | long | struct | while | | double | mutable | switch | | | |
Чтобы переменную можно было использовать в программе, она должна быть предварительно объявлена. При этом в процессе объявления переменной осуществляется создание ее идентификатора. Переменная - объект программы, занимающий в общем случае несколько ячеек памяти, призванный хранить данные. Переменная, обладает именем, размером и рядом других атрибутов (таких как видимость, время существования и т.д.). При объявлении переменной для нее резервируется некоторая область памяти, размер которой зависит от конкретного типа переменной. Здесь следует обратить внимание на то, что размер одного и того же типа данных может отличаться на компьютерах разных платформ, а также может зависеть от используемой операционной системы. Поэтому при объявлении той или иной переменной нужно четко представлять, сколько байт она будет занимать в памяти ЭВМ, чтобы избежать проблем, связанных с переполнением и неправильной интерпретацией данных. Ниже приведен перечень базовых типов переменных и их размер в байтах. Следует учесть, что размер, указанный в табл. 1.2 для каждого типа, должен быть проверен для конкретного ПК. Таблица 1.2 Базовые типы данных для ПК на базе платформы Intel |
Тип | Размер, байт | Значение | | 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 647 | | int (16 разрядов) | 2 | от -32 768 до 32 767 | | int (32 разряда) | 4 | от -2 147 483 648 до 2 147 483 647 | | unsigned int (16 разрядов) | 2 | от 0 до 65 535 | | unsigned int (32 разряда) | 4 | от 0 до 4 294 967 295 | | char | 1 | от 0 до 256 | | float | 4 | от 1.2е-38 до 3.4е38 | | double | 8 | от 2.2е-308 до 1.8е308 | | void | 2 или 4 | - | | |
Объявление переменной начинается с ключевого слова, определяющего его тип, за которым следует собственно имя переменой и (необязательно) инициализация - присвоение начального значения. Одно ключевое слово позволяет объявить несколько переменных одного и того же типа. При этом они следуют друг за другом через запятую (,). Заканчивается объявление символом точка с запятой (;). Имя переменной (идентификатор) не должно превышать 256 символов (разные компиляторы накладывают свои ограничения на количество распознаваемых символов в идентификаторе). При этом важно учитывать регистр букв (Abe и abc - не одно и то же)! Конечно, имя должно быть достаточно информативным, однако не следует использовать слишком длинные имена, так как это приводит к опискам. Хотя начальная инициализация и не является обязательной при объявлении переменной, все же рекомендуется инициализировать переменные начальным значением. Если этого не сделать, переменная изначально может принять непредсказуемое значение. Установка начального значения переменной осуществляется с помощью оператора присваивания (=). Рассмотрим подробно основные типы переменных. Переменная типа bool занимает всего 1 байт и используется, прежде всего, в логических операциях, так как может принимать значение 0 (false, ложь) или отличное от нуля (true, истина). В старых текстах программ вы можете встретить тип данных BOOL и переменные этого типа, принимающие значения TRUE и FALSE. Этот тип данных и указанные значения не являлись частью языка, а объявлялись в заголовочных файлах как unsigned short, с присвоением начальных значений 1 и 0 соответственно. В новой редакции С++ bool - самостоятельный, полноправный тип. Часто в программе бывает необходимо указать, что переменная должна принимать только целые значения. Целочисленные переменные (типа int, long, short), как следует из названия, призваны хранить целые значения, и отличаются только размером допустимого значения. Целочисленные переменные могут быть знаковыми и беззнаковыми. Знаковые переменные могут представлять как положительные, так и отрицательные числа. Для этого в их представлении один бит (самый старший) отводится под знак. В отличие от них, беззнаковые переменные принимают только положительные значения. Чтобы указать, что неременная будет беззнаковой, используется ключевое слово unsigned. По умолчанию целочисленные переменные считаются знаковыми (signed, чаще всего опускается; используется при преобразовании типов данных). Из табл. 1.2 видно, что переменная типа int в разных случаях может занимать в памяти различное число байт. Символьный тип данных char применяется," когда переменная должна нести информацию о коде ASCII. Этот тип данных часто используется для построения более сложных конструкций, таких как строки, символьные массивы и т.д. Данные типа char также могут быть знаковыми и беззнаковыми. Для представления чисел с плавающей запятой применяют тип данных float. Этот тип, как правило, используется для хранения не очень больших дробных чисел и занимает в памяти 4 байта: 1 бит - знак, 8 бит - экспонента, 23 бита - мантисса. Если вещественное число может принимать очень большие значения, используют переменные двойной точности, тип double. Переменная типа void не имеет значения и служит для согласования синтаксиса. Например, синтаксис требует, чтобы функция возвращала значение. Если не требуется использовать возвращенное значение, перед именем функции ставится тип void. Приведем несколько примеров объявления переменных: int а = О, А = 1; float aGe = 17.5; double PointX; bool bTheLightlsOn=false; char LETTER = 'Z'; void MyFunctionQ; //возвращаемое функцией //значение игнорируется 4. Константы Константы, так же как и переменные, представляют собой область памяти для хранения данных, с тем лишь отличием, что значение, присвоенное константе первоначально, не может быть изменено на протяжении выполнения всей программы. Константы бывают литеральными и типизованными, причем литеральные константы делятся на символьные, строковые, целые и вещественные. Символьные константы представляются отдельным символом, заключенным в одинарные кавычки (апострофы): 'е', '@', '<'. Строковые константы - это последовательность символов, заключенная в двойные кавычки: "Это пример не самой длинной строковой константы!". Целые константы бывают следующих форматов: ¦ десятичные; ¦ восьмеричные; ¦ шестнадцатеричные. Десятичные могут быть представлены как последовательность цифр, начинающаяся не с нуля, например: 123; 2384. Восьмеричные константы - последовательность восьмеричных цифр (от 0 до 7), начинающаяся с нуля, например: 034; 047. Шестнадцатеричный формат констант начинается с символов Ох или ОХ с последующими шестнадцатеричными цифрами (0...9, A...F), например: 0xF4; 0X5D. Буквенные символы при этом могут быть представлены в как в нижнем, так и в верхнем регистре. Длинные целые константы, используемые в переменных типа long, определяются латинской буквой I или L сразу после константы без пробела: 36L, 012L, 0x52L. Вещественные константы - числа с плавающей запятой могут быть записаны в десятичном формате (24.58; 13.0;.71) или в экспоненциальной форме (1е4; 5е+2; 2.2е-5, при этом в мантиссе может пропускаться целая или дробная часть:.2е4). Типизованные константы используются как неременные, значение которых не может быть изменено после инициализации. Типизованная константа объявляется с помощью ключевого слова const, за которым следует указание типа константы, но, в отличие от переменных, константы всегда должны быть инициализированы. Рассмотрим небольшой пример: // Объявление переменной int i; // Инициализация переменной i // литеральной целочисленной константой 25600 i = 25600; // Теперь объявим типизованную // строковую константу MyCatName // и инициализируем ее литеральной строковой константой const MyCatName[] = "Рудик"; Символьные константы в С++ занимают в памяти 1 байт и, следовательно, могут принимать значения от 0 до 255 (см. табл. 1.2). При этом существует ряд символов, которые не отображаются при печати, - они выполняют специальные действия: возврат каретки, табуляция и т.д., и называются символами escape-последовательности. Термин «escape-последовательность» ввела компания Epson, ставшая первой фирмой, которая для управления выводом информации на своих принтерах стала использовать неотображаемые символы. Исторически сложилось так, что управляющие последовательности начинались с кода с десятичным значением 27 (0x1В), что соответствовало символу «Escape» кодировки ASCII, Escape-символы в программе изображаются в виде обратного слеша, за которым следует буква или символ (см. табл. 1.3). Таблица 1.3 Символы escape-последовательности |
Символ | Описание | | \\ | Вывод на печать обратной черты | | \! | Вывод апострофа | | \" | Вывод при печати кавычки | | \? | Символ вопросительного знака | | \а | Подача звукового сигнала | | \ь | *возврат курсора на 1 символ назад | | \f | Перевод страницы | | \п | Перевод строки | | \г | Возврат курсора на начало текущей строки | | \t | Перевод курсора к следующей позиции табуляции | | \v | Вертикальная табуляция (вниз) | | |
В качестве примера использования типизованных и литеральных констант вычислим значение площади круга по известному значению радиуса: #include <iostream.h> int main() { const double pi = 3.1415; const int Radius = 3; double Square = 0; Square = pi * Radius * Radius; // Выведем вычисленное значение // и осуществим перевод строки ('\п') cout << Square << '\n'; return 0; } В начале главной функции программы объявляются две константы: pi и Radius. Значение переменной Square изменяется в ходе выполнения программы и не может быть представлено как константа. Поскольку значение радиуса задано явно и в тексте программы не предусмотрено его изменение, переменная Radius объявлена как константа. 5. Перечисления При использовании большого количества логически взаимосвязанных целочисленных констант удобно пользоваться перечислениями. Перечисления имеют вид: enum Name { iteml[=def], item2[=def], …….. itemN[ = def] }; где enum - ключевое слово (от enumerate - перечислять), Name - имя списка констант, iteml...itemN - перечень целочисленных констант, [=def] - необязательный параметр инициализации. Предположим, нам необходимо в программе описать работу светофора. Известно, что его цвет может принимать лишь 3 значения: красный (RED), желтый (YELLOW) и зеленый (GREEN). Для обработки полученных от светофора сигналов заведем три константы с такими же именами - RED, YELLOW и GREEN, проинициализировав их любыми неповторяющимися значениями с тем, чтобы в дальнейшем проверять, какой из этих трех цветов горит. Например, мы могли бы записать: const int RED = 0; const int YELLOW = 1; const int GREEN = 2; Используя перечисления, то же самое можно сделать в одну строку: enum COLOR {RED, YELLOW, GREEN}; Константы перечисления обладают следующей важной особенностью: если значение константы не указано, оно на единицу больше значения предыдущей константы. По умолчанию первая константа имеет значение 0. То же перечисление можно было проинициализировать другими значениями: enum COLOR {RED=13, YELLOW=l, GREEN}; При этом константа GREEN по-прежнему имеет значение 2. 6. Преобразования типов В С++ существует явное и неявное преобразование типов. В общем случае неявное преобразование типов сводится к участию в выражении переменных разного типа (так называемая арифметика смешанных типов). Если подобная операция осуществляется над переменными базовых типов (представленных в табл. 1.2), она может повлечь за собой ошибки: в случае, например, если результат занимает в памяти больше места, чем отведено под принимающую переменную, неизбежна потеря значащих разрядов. Для явного преобразования переменной одного типа в другой перед именем переменной в скобках указывается присваиваемый ей новый тин: #include <iostream.h> int main() { int Integer = 54; float Floating = 15.854; Integer = (int) Floating; // явное преобразование типов cout << "New integer: "; cout << Integer << '\n'; return 0; } В приведенном листинге после объявления соответствующих переменных (целочисленной Integer и вещественной Floating) производится явное преобразование типа с плавающей запятой (Floating) к целочисленному (Integer). Пример неявного преобразования: #include <iostream.h> int main() {. int Integer = 0; float Floating = 15.854; Integer = Floating; // неявное преобразование типов cout << "New integer: "; cout << Integer << '\n'; return 0; } В отличие от предыдущего варианта про1раммы, в данном случае после объявления и инициализации переменных осуществляется присваивание значения переменной с плавающей Floating целочисленной переменной Integer. Результат работы обеих программ выглядит следующим образом: New integer: 15 То есть произошло отсечение дробной части переменной Floating. Выводы В процессе выполнения работы мы ознакомились с типом данных С++, а именно со структурой, комментариями, переменными и типами данных, константами, перечислениями, преобразованием типов. Список использованной литературы 1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988. 2. Довгаль С.И., Литвинов Б.Ю., Сбитнев А..И. Персональные ЭВМ: Турбо Паскаль V7.0, объектное программирование, локальные сети. - Киев: Информсиситема сервис, 1993. 3. Епанешников А.М., Епанешникова В.А. Программирование в среде Turbo Pascal 7.0.-М.: Диалог -МИФИ,1999. 4. Зуев Е.А. Программирование на языке Turbo Pascal 6.0,7.0. - М.: Радио и связь, Веста,1993. 5. Кандзюба С.П., Громов В.Н. Delphi 7.Базы данных и приложения. Лекции и упражнения. - К.: Издательство "ДиаСофт", 2001. 6. Климова Л.М. Pascal 7.0. Практическое программирование. Решение типовых задач. -М.:КУДИУ ОБРАЗ, 2000. 7. Марченко А. И., Марченко Л.А.. Программирование в среде Turbo Pascal 7.0.-К.: Век+,1999. 8. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. - М.: Нолидж, 2000. 9. Глушаков С.В., Коваль А.В., Смирнов С.В. Практикум по С++- Х., Фолио, 2006 - 525 с. 10. Методические указания к выполнению курсовой работы по дисциплине "Программирование" для студентов специальностей 7.091501 "Компьютерные системы и сети" и 7.091502 «Системное программирование» дневной и заочной форм обучения. /Сост.: Н.С. Семенова, С.А. Сафонова - Северодонецк: Изд-во СТИ ВНУ, 2006. - 37с.
Страницы: 1, 2
|