Лекции / LECS1
.DOCЛекция 1.
-
Г. Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++, 2-е изд./ Пер. с англ. –М.: “Издательство БИНОМ”, СПб.: “Невский диалект”, 1999г. – 560 стр.
-
А. Пол. Объектно-ориентированное программирование на С++,
2-е изд./ Пер. с англ. – СПб.; М.: “Невский диалект” – “Издательство БИНОМ”, 1999г. – 462 стр.
-
Б. Страуструп. Язык программирования С++, 3-е изд./ Пер. с англ. - СПб.; М.: “Невский диалект” – “Издательство БИНОМ”, 1999г. – 991 стр.
-
Баженова И.Ю. VISUAL C++ 6.0 (VISUAL STUDIO 98). Уроки программирования. – М.: Диалог – МИФИ, 1999г. – 416 стр.
-
Шаммас Н.К. и др. Изучи сам BORLAND C++ за 21 день /
Н.К. Шаммас, К. Эрнуш, Э. Малрой/ Пер. с англ.; Худ. обл.
М.В. Драко. – Мн.: ООО “Попурри”, 1996г. – 680 стр.
-
Том Сван. Освоение BORLAND C++ 5. – Диалектика,
1996г. – 576 стр.
-
Хаймен М. BORLAND C++для “чайников”. – К.: “Диалектика”, 1995г. – 416 стр.
-
Чарльз Калверт. Программирование в WINDOWS: Освой самостоятельно за 21 день. – Пер. с англ. – М.: БИНОМ,
1995г. – 496 стр.
-
Бруно Бабэ. Просто и ясно о BORLAND C++ : Пер. с англ. – М.: БИНОМ. – 400 стр.: ил.
В курсе лекций, в основном, используется литература [2] и [6].
Базовое ядро языка
[2] Элементы программы.
Набор символов.
-
Прописные и строчные буквы: a,b,…,z, A,…,Z
-
Цифры: 0,1,…,9
-
Операторы: *, +, =…
-
Знаки пунктуации: ; , ’ … “
Лексемы – наборы символов, распознаваемых компилятором (базовый словарь языка).
-
ключевые слова
-
идентификаторы
-
литералы
-
операторы
-
знаки пунктуации
Комментарии
/* многострочный или однострочный комментарий */
// комментарий до конца строки
/* Программист Иванов И.И.
Дата последней коррекции 8.02.2000
Версия 1.01.
*/
# include < iostream.h > // заголовочный файл
Ключевые слова – четко определенные, зарезервированные слова, имеющие конкретный смысл в языке СИ++.
Например, int, long, public, protected, for, do, class,…
Идентификаторы – последовательность букв, цифр и символов подчеркивания. Идентификатор не может начинаться с цифры. Прописные и строчные буквы различаются. Длина до 31 символа в большинстве систем (вообще не ограничена).
Примеры + -
n for
count 2x
- foo - count
buff-size
too_ _ bad, _Sys foo / для системного использования
Литералы – постоянные значения, существующие для каждого собственного типа С++.
Литералы: символьные, целые, вещественные, строковые константы.
Примеры литералов:
-
// целая константа
5U // u или U означает unsigned (беззнаковая)
5L // l или L означает long (длинная)
-
// целая константа в восьмеричном виде
0x5 // целая константа в шестнадцатиричном виде
true // булевская (логическая) константа
-
// константа с плавающей точкой,
// трактируемая как double
5.0F // f или F (float) константа с плавающей точкой,
// одинарной точности
5.0L // l или L длинная константа с двойной точностью
‘5’ // символьная константа (код 53)
‘\ n’ // символьная константа – управляющая последовательность
// (означает переход на новую строку)
L’XYZ’ // wchar_t символ XYZ
“5” // строка, состоящая из символа 5
“ строка и символ перехода на новую строку \ n ”
Символьные литералы представляются в виде ‘символ’
‘A’ // прописная буква А (код 65)
‘a’ // строчная буква а (код 97)
‘\ 0’ // нулевой символ – символ конца строки (код 0)
‘+’ //символ оператора сложения
Символьные константы, заданные escape – последовательностями:
‘\ a’ - звуковой сигнал ( alert )
‘\\’ - обратная косая черта ( back slash )
‘\ b’ - возврат на шаг ( back space )
‘\ r’ - возврат каретки (carriage return)
‘\” ‘ - двойные кавычки (double quote)
‘\ f’ - прогон листа (form feed)
‘\ t’ - табуляция (tab)
‘\ n’ - перевод строки (new line)
‘\ 0’ - нулевой символ (null char)
‘\’’ - апостроф (single quote)
‘\ v’ - вертикальная табуляция (vertical tab)
‘\ 101’- восьмеричный код ASCI I (код А) (до трех символов)
‘\ x041’- шестнадцатиричный код ASCI I
L’oop’ – wchar_t константа. Для расширения набора символов за диапазон 256. В Visual C++ 5.0 для ее представления используются два байта, например L’ab’. Количество символов между апострофами зависит от реализации.
escape – последовательности могут использоваться в строковых литералах.
Строковые литералы – static char [ ].
Строковый литерал хранится в памяти, как последовательность символов, заканчивающаяся символом с кодом 0.
“a” // два байта - а, 0 (\а и \0)
“a\t b\n” // пять байт ‘a’ ’\t’ ’b’ ’\n’\0
“1 \\” // четыре байта ’1’ ’ ’ ’\\’ ’\0’
- пробел
‘\” ” // два байта ’ ” ’ ’\0’
“ ” // один байт ‘\0’
Строковые литералы, разделенные white space пробельными символами понимаются как одна строка.
“ Это одна строка, ”
“ так как она разделена ”
“ пробелами и переводами строки. ”
Литералы с плавающей точкой.
3.14f 1.234F // константы с плавающей точкой
// и одинарной точностью
0.1234567 // с двойной точностью
0.123456789L // длинная с двойной точностью
3. 3.0 0.3Е1 300е-2 // всё это 3.0 с двойной точностью.
Операторы (или операции).
+, - , *, / , % // арифметические
=, +=, *= // присваивания.
… и т.д.
Знаки пунктуации: круглые и фигурные скобки, двоеточие, точку с запятой и т.д.
Ввод – вывод в СИ++.
Стандартный заголовочный файл iostream.h.
Библиотека iostream перегружает операторы побитового сдвига.
<< // поместить в выходной поток
>> // считать с входного потока
Потоки:
cout // стандартный поток вывода (“экран”)
cin // стандартный поток ввода (“клавиатура”)
cerr // стандартный поток
Использование потоков аналогично инструкции присваивания по работе со значениями и переменными.
int i;
double x;
cout << “\n Введите число с двойной точностью: ”;
cin >> x;
cout << “\n Введите положительное целое: ”;
cin >> i;
if (i<1)
cerr << “ошибка, i= ” << i << end l;
cout << “ i * x = ” << i * x;
end l (манипулятор) очищает поток и добавляет новую строку.
Пример программы на С++.
// Программа для вычисления наибольшего общего делителя
// (GSD – Greatest Common Division)
# include <iostream.h>
# include <assert.h>
int gcd (int m, int n) // Определение функции
// (заголовок)
{ // блок
int r; // объявление остатка
while (n! = 0){ // не равно
r = m % n; // оператор деления с остатком
m = n; // присваивание
n = r;
} // конец цикла while
return m; // выход из функции со значением m
}
int main ()
{
int x,y,g;
cout << “\n ПРОГРАММА GSD на C++ ”;
do {
cout << “\n Введите два целых числа: ”;
cin >> x >> y;
assert (x * y ! = 0); // предусловие
cout << ”\n GSD ( “<< x <<”, “<< y <<”) = ”
<<( q = gсd (x,y)) << end l;
assert (x % g = = 0 && y % g = = 0); //постусловие
}while (x ! = y);
}