Слайд 1Лекция 2. Фундаментальные типы данных и основные конструкции
Красс Александр
Alexander.Krass@gmail.com
СПбГУ ИТМО,
2008
Слайд 3true и false в C++
Любое число отличное от нуля – это
true.
Нуль – это false.
Слайд 4Модификаторы типов
unsigned
signed
long
short
Слайд 5Модификаторы типов (1/2)
unsigned
signed
long
short
Слайд 6Модификаторы типов (2/2)
Если явно не указано unsigned или signed, то всегда
предполагается signed.
Если указан модификатор типа, а тип опущен, то всегда предполагается int:
unsigned i; // Обе строчки объявляют
unsigned int j; // переменную типа
// unsigned int
Слайд 8Интегральные типы (1/2)
char
bool
short
int
long long
Слайд 9Интегральные типы (2/2)
Диапазоны многих типов платформозависимы. Можно быть уверенными только в
следующем соотношении:
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
Слайд 10Вещественные типы (1/2)
float
double
long double
Слайд 11Вещественные типы (2/2)
sizeof (float)
нельзя применять модификаторы unsigned, signed и short. “
Слайд 12Подробнее о фундаментальных типах данных
Читаем в интернете (например, здесь http://msdn.microsoft.com/en-us/library/cc953fe1.aspx).
Слайд 13Оператор ветвления (1/3)
if (условие_1)
{
действия_1
}
[else if (условие_2)
{
действия_2
}]
[…]
[else
{
действия_n
}]
Слайд 14Оператор ветвления (2/3)
if (true)
{
cout
cout << “Не будет напечатано”;
}
Слайд 15Оператор ветвления (3/3)
if (25)
{
cout
cout << “Не будет напечатано”;
}
Слайд 16Разберём фрагмент программы
unsigned int i;
cin >> i;
if (i > 3)
{
cout << "The value is greater than 3" << endl;
}
else if (i == 4)
{
// Вместо этого выполнится случай, когда i > 3
}
else
{
cout << "The value is lesser than 4" << endl;
}
Слайд 17switch
switch ( expression )
case constant-expression :
statement
case constant-expression :
statement
…
[default :
statement]
Слайд 18Эти фрагменты делают одно и то же (1/2)
unsigned int i;
cin >>
i;
if (i == 3)
{
// i == 3
}
else if (i < 6)
{
// i >= 0 && i < 6 && i != 3
}
else
{
// i >= 6
}
Слайд 19Эти фрагменты делают одно и то же (2/2)
switch(i)
{
case 3:
cout
<< "i == 3" << endl;
break;
case 0:
case 1:
case 2:
case 4:
case 5:
cout << "i >= 0 && i < 6 && i != 3 " << endl;
break;
default:
cout << "i >= 6" << endl;
}
Слайд 20Ещё один момент
switch(i)
{
case 5:
cout
endl;
cout << "Please, enter one more number: "
<< endl;
{
int j; // Из-за этой строчки и
cin >> j; // нужны “{}”. Иначе будет ошибка.
cout << "j == " << j << endl;
}
break;
default:
cout << "i >= 6" << endl;
}
Слайд 21while
while ( expression )
statement
Слайд 22Пример использования while (1/6)
void main()
{
unsigned int n = 0,
k = 1;
cin >> n;
while (n > 1)
{
k = k * n;
n = n - 1;
}
cout << "n! = " << k << endl;
}
Слайд 23Пример использования while (2/6)
void main()
{
unsigned int n = 0,
k = 1;
cin >> n;
while (n > 1)
{
k *= n;
n -= 1;
}
cout << "n! = " << k << endl;
}
Слайд 24Пример использования while (3/6)
void main()
{
unsigned int n = 0,
k = 1;
cin >> n;
while (n > 1)
{
k *= n;
n--;
}
cout << "n! = " << k << endl;
}
Слайд 25Пример использования while (4/6)
void main()
{
unsigned int n = 0,
k = 1;
cin >> n;
while (n > 1)
{
k *= n;
--n; // Так лучше.
}
cout << "n! = " << k << endl;
}
Слайд 26Пример использования while (5/6)
void main()
{
unsigned int n = 0,
k = 1;
cin >> n;
while (n > 1)
{
k *= --n; // Ошибка!
// n -= 1;
} // k *= n;
cout << "n! = " << k << endl;
}
Слайд 27Пример использования while (6/6)
void main()
{
unsigned int n = 0,
k = 1;
cin >> n;
while (n > 1)
{
k *= n--; // Ok
// k *= n;
} // n -= 1;
cout << "n! = " << k << endl;
}
Слайд 28do-while
do
statement
while ( expression ) ;
Слайд 29Пример использования do-while
void main()
{
unsigned int n = 0, k
= 1;
cin >> n;
do
{
k *= n--;
} while (n > 1);
cout << "n! = " << k << endl;
}
Слайд 30for
for ( init-expression ;
cond-expression ;
loop-expression )
statement
Слайд 31Пример использования for
void main()
{
unsigned int n = 0, k
= 1;
cin >> n;
for (; n > 1; --n)
{
k *= n;
}
cout << "n! = " << k << endl;
}
Слайд 32Пример использования for
void main()
{
unsigned int n = 0, k
= 1;
cin >> n;
for (; n > 1; --n) // Что выведется на
{ // Экран, если
k *= n; // пользователь
} // введёт n == 0?
cout << "n! = " << k << endl;
}
Слайд 33Пример использования for
void main()
{
unsigned int n = 0, k
= 1;
cin >> n;
for (; n > 1; --n) // Правильно!
{ // "n! = 1"
k *= n;
}
cout << "n! = " << k << endl;
}
Слайд 34Пример использования for
void main()
{
unsigned int n = 0, k
= 1;
cin >> n;
for (int i = n; i > 1; --i)
{
k *= i;
}
cout << "n! = " << k << endl;
}
Слайд 35Пример использования for
for (int i = n; i > 1; --i)
{
k *= i;
}
сout << "i = "
<< i // Ошибка!
<< endl; // i уже не существует
Слайд 36Задание на дом
Мальчику Васе задали огромное задание по арифметике из-за того,
что он долго дёргал за косички дочку учительницы. Помогите ему! Задание состоит из неизвестного вам числа примеров вида: <вещественное число> <операция> <вещественное число. Например, 2 + 2.5, 7.5 * (-5), 1 / 7.
Виды операций: сложение, вычитание, умножение, деление, деление с остатком (%), возведение в степень (^).
Слайд 37Задание на дом
Замечание. Операнды и операция вводятся по одному.
Замечание. Действие ^
в C++ – это не возведение в степень.
Для продвинутых. Сделать контроль пользовательского ввода и дать возможность использовать результат предыдущего примера в текущем вместо первого аргумента.
Для ещё более продвинутых. Вместо любого из аргументов.
Слайд 38Как оформлять домашнее задание
Каждое задания нужно посылать в архиве с именем:
<Номер группы> <Фамилия Имя> <Номер лекции> <Номер задания на лекции>. Пример: 9999 Krass Alexander 2 1. Нумерация заданий начинается с единицы.
Внутри папка с таким же именем, а в ней файлы: *.vcproj, файлы с исходными кодами, во вложенной папке Debug *.exe файл с вашим приложением.