Автор: Пользователь скрыл имя, 17 Января 2011 в 18:57, курс лекций
6 тем.
1.1 Состав языка
Алфавит – совокупность допустимых в языке символов. Алфавит языка С++ включает:
1) прописные и строчные
латинские буквы и знак
2) арабские цифры от 0 до 9, шестнадцатеричные цифры от A до F;
3) специальные знаки ) ( " { } [ ] , | ; + - / % * . \ ' : ? < = > ! & # ~ ^
4) пробельные символы:
пробел символ табуляции,
Идентификатор – это имя программного объекта: константы, переменной, метки, типа, экземпляра класса, функции и поля в записи. Идентификатор может включать латинские буквы, цифры и символ подчеркивания. Прописные и строчные буквы различаются, например, myname, myName и MyName — три различных имени. Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра. Пробелы внутри имен не допускаются. Язык С++ не налагает никаких ограничений на длину имен, однако для удобства чтения и записи кода не стоит делать их слишком длинными. Ключевые слова – это зарезервированные идентификаторы, которые имеют специальное значение для компилятора, например, include , main, int и т.д. Ключевые слова можно использовать только по прямому назначению. С ключевыми словами и их назначением можно ознакомиться в справочной системе С++.
asm auto bool break case catch char class const const_cast continue default delete do double dynain1c_cast else enum explicit extern false float for friend goto if inline int log long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true is try typedef typeid typename union unsigned using virtual void volatile wchar_t while Следующие идентификаторы зарезервированы как альтернативные формы представления операторов и также не могут употребляться для других целей. and &&
not_eq !=
and_eq &=
or ||
bitand &
or_eq |=
bitor |
xor ^
compl ~
xor_eq ^=
not !
1.2 Структура программы
Каждая программа на языке С++ состоит из одной или несколько функций. При запуске программы вызывается функция с именем main – это главная функция программы, которая должна присутствовать в программеобязательно. Рассмотрим пример простейшей программы, которая подсчитывает сумму двух целых чисел, значения которых вводит с клавиатуры пользователь, а результат выводится на экран.
Перед вводом данной
программы рекомендуем
Первая строка кода: #include <iostream> – это директива препроцессора, которая указывает компилятору на необходимость подключить перед компиляцией содержимое заголовочного файла библиотеки подпрограмм С++. Имя заголовочного файла помещено в скобки, в данном случае это iostream . В этом файле содержатся готовые программные средства для организации форматированного ввода-вывода. В общем случае в программе может быть несколько директив, каждая из которых должна начинаться с новой строки и располагаться вне тела функции.
Далее идет комментарий. Комментарии используются для кратких заметок об используемых переменных, алгоритме или для дополнительных разъяснений сложного фрагмента кода, т.е. помогают понять смысл программы. Комментарии игнорируются компилятором, поэтому они могут использоваться для «скрытия» части кода от компилятора.
В языке С++ существуют 2 вида комментариев:
1) Комментарий, содержание которого умещается на одной строке, начинается с символов // и заканчивается символом перехода на новую строку.
2) Если содержание комментария не умещается на одной строке, то используется парный комментарий, который заключается между символами /* */. Внутри парного комментария могут располагаться любые символы, включая символ табуляции и символ новой строки. Парный комментарий не допускает вложения.
Пятая строка содержит
директиву using namespace std
Следующая строка нашей программы представляет собой заголовок функции main , которая не содержит параметров и должна возвращать значение типа int . Тело функции помещено в фигурные скобки.
Седьмая и тринадцатая строка определяют начало и конец блока.
В восьмой строке производится объявление двух переменных типа int (целый тип данных).
Девятая строка начинается с идентификатора cout , который представляет собой объект С++, предназначенный для работы со стандартным потоком вывода, ориентированным на экран. Далее идет операция <<, которая называется операцией вставки или помещения в поток. Данная операция копирует содержимое, стоящее в правой части от символов <<, в объект, стоящий слева от данных символов. В одной строке может быть несколько операций помещения в поток. В нашем случае в результате выполнения команды cout<< на экране появляется строка «Введите два целых числа» и курсор перемещается на новую строчку. Перемещение курсора на новую строку происходит за счет использования специализированного слова endl , называемого манипулятором: при его записи в поток вывода происходит перевод сообщения на новую строку.
Следующая строка начинается с идентификатора cin. Идентификатор cin представляет собой объект С++, предназначенный для работы со стандартным потоком ввода, ориентированным на клавиатуру. Операция >> называется операций извлечения из потока: она читает значения из объекта cin и сохраняет их в переменных, стоящих справа от символов >> . В результате выполнения данной операции с клавиатуры будут введены два значения, первое из которых сохраняется в переменной a , второе – в переменной b.
Далее идет оператор вывода, в результате выполнения которого на экране появится сообщение «Их сумма равна …». Например, если с клавиатуры были введены числа 3 и 4, то на экране появится сообщение «Их сумма равна 7».
1.3 Стандартные типы данных
Данные – это формализованное(понятное для компьютера) представление информации. В программах данные фигурируют в качестве значений переменных или констант. Данные, которые не изменяются в процессе выполнения программы, называются константами. Данные,объявленные в программе и изменяемые в процессе ее выполнения, называются переменными.
Все типы данных можно
разделить на простые и составные.
К простым относятся: стандартные(целые,
вещественные, символьные, логический)
и определенные пользователем(перечислимые
типы). К составным типам относятся
массивы, строки, объединения,структуры,
файлы и объекты. Кроме этого существует
специальный тип void ,который не предназначен
для хранения значений и применяется обычно
для определения функций, которые не возвращают
значения.
В данном разделе мы рассмотрим только стандартные типы данных.
Существует семейство целых типов данных - short, int, long; и два спецификатора – signed и unsigned.
|
Тип int является аппаратно-зависимым, это означает, что для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного — 4 байта. Размер типов short – 2 байта, long – 4 байта всегда фиксирован.
Спецификатор используется
для установления беззнакового формата
представления данных, signed – знакового.
По умолчанию все целые типы являются
знаковыми и поэтому спецификатор signed можно
не использовать.
Существует семейство веществен
|
В таблице приведены абсолютные величины минимальных и максимальных значений.
Для описания символьных данных используются типы char и wchar_t.
Под величину типа char отводится 1 байт, что достаточно для размещения любого символа из 256-символьного набора ASCII . Под величину типа wchar_t отводится 2 байта, что достаточно для размещения любого символа из кодировки Unicode .
Для описания логических данных используется тип bool , который может принимать всего два значения: true (истина) и false (ложь). Теоретически размер переменной типа bool должен составлять 1 бит, но на практике большинство компиляторов выделяет под него 1 байт, т.к. организовать доступ к байту на аппаратном уровне легче, чем к биту.
Следует отметить, что значение константы true преобразуется к целому значению 1, а значение константы false– к 0. Поэтому логические данные могут участвовать в составе арифметических выражений. В свою очередь любое ненулевое значение может преобразовываться к логической константе true, а нулевое значение – к константе falsе, поэтому арифметические значения могут участвовать в составе логических выражений.
1.4 Константы
Константами называются данные, которые не изменяются в процессе выполнения программы. В С++ можно использовать именованные и неименованные константы.
Неименованные константы или литералы - это обычные фиксированные значения. Например, в операторе:
a = b + 2.5; // 2.5 – неименованная константа
Различаются целые, вещественные, символьные и строковые литералы. Компилятор относит литерал к одному из типов данных по его внешнему виду.
Для записи целочисленного литерала можно использовать одну из трех форм: десятичную, восьмеричную или шестнадцатеричную. Десятичная форма: последовательность десятичных цифр,начинающаяся не с нуля, если это не число нуль. Восьмеричная: нуль, за которыми следуют восьмеричные цифры (0,1,2,3,4,5,6,7). Шестнадцатеричная: Ох или ОХ, за которым следуют шестнадцатеричные цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A , B , C , D , E , F ).
Например, значение 20 можно записать:
1) в десятичной форме как 20;
2) в восьмеричной форме как 024;
3) в шестнадцатеричной форме как 0 x 14.
Для записи вещественного литерала можно использовать десятичную или экспоненциальную форму. Константы с плавающей запятой имеют тип double .
Десятичная форма записи имеет вид: [целая часть].[дробная часть], например,2.02, -10.005. При этом в записи числа может быть опущена либо целая часть,либо дробная, но не обе сразу. Например: 2 или .002
Экспоненциальная
форма имеет вид [мантиса]{Е| е}[+ | -][