- •Введение
- •Глава 1. Основы.
- •Int main()
- •1.2. Методика создания программ в Microsoft Visual Studio.
- •Void main(){
- •1.3. Ввод-вывод.
- •1.4. Переменные и константы.
- •Int I; // объявление целочисленной переменной
- •42 // Десятичная константа
- •0X42 // шестнадцатеричная константа, начинается с 0х
- •042 // Восьмеричная константа, начинается с 0
- •1.5. Арифметические операции.
- •Void main()
- •1.6. Встроенные функции. Математические функции. Состав math.H.
- •Void main()
- •Int rand(void); // функция используется без аргумента
- •Глава 2. Операторы и выражения.
- •2.1. Логические выражения и операторы
- •2.1.1. Оператор if else
- •If (условие)
- •If (условие)
- •2.1.2. Конструкция if else if
- •Int number;
- •Int number;
- •2.1.3. Условный оператор.
- •2.1.4. Оператор switch.
- •Int dvalue;
- •2.2. Операторы цикла.
- •2.2.1. Оператор for
- •Void main()
- •Int I; // создаем переменную цикла
- •Void main()
- •Int I; // переменную цикла можно определить и вне цикла
- •2.2.2. Изменение шага цикла
- •Void main()
- •2.2.3. Цикл while.
- •2.2.4. Цикл do while
- •Void main()
- •2.3. Операторы break и continue
- •Void main()
- •Void main()
- •2.4. Типичные ошибки при использовании операторов цикла
- •Глава 3. Производные типы данных.
- •3.1. Ссылки и указатели.
- •Int test; // объявили целочисленную переменную
- •Int & s_test; // ошибка! ссылка не связана с переменной
- •Int *p1; // объявлен указатель на целое с именем p1
- •3.2. Массивы и строки.
- •Int z[10]; //массив из 10 целых чисел
- •Int ar[3]; // объявлен целочисленный массив из 3 элементов
- •Int varr[4]; // объявление массива
- •3.2.2. Многомерные массивы.
- •Int z[3][4]; //массив из 12 целых чисел
- •3.2.3. Строки
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •If(strstr(st,st2)) //если подстрока встречается, выводим
- •3.1.5. Динамическое определение одномерных массивов.
- •3.1.6. Динамические двумерные массивы.
- •3.1.7. Указатели, массивы и арифметика указателей.
- •Int tacs[3];
- •Void main()
- •3.2. Структуры
- •Int age; // элементы структуры
- •Int hours;
- •Int mins;
- •Void main()
- •Int hours;
- •Int mins;
- •Void main()
- •4. Функции, определяемые пользователем
- •4.1. Объявление и определение функции
- •Int max(int , int ); // в прототипе достаточно указать только тип и
- •Void main() {
- •Int MyRand(){
- •Int func(){ return 1;} // правильное выражение
- •Int func2(){return 0.146;} // неправильно, 0.146 преобразуется к int с
- •Void swap(int p, int q)
- •Int bigger(int a,int b)
- •4.2. Передача параметров функций
- •5. Заголовочные файлы.
- •6. Работа с файлами
- •6.1 Простой файловый ввод/вывод
- •6.2 Тонкости работы с файлами
- •7.1. Определение классов.
- •Void main()
- •7.2. Как объявлять функции класса?
- •7.3. Конструкторы и деструкторы классов.
- •8. Графика OpenGl.
- •Void callback Draw()
- •Void main()
- •8.1. Создание анимации с помощью библиотеки xgl
- •Приложения Управление выводом
- •Управление шириной вывода
2.1.2. Конструкция if else if
Комбинируя вместе несколько операторов if else, можно смоделировать конструкцию выбора более чем из двух возможных вариантов:
if(ch==’A’)
up++; // альтернатива 1
else
if(ch==’B’) // альтернатива 2
down++; // подальтернатива 2a
else
down--; // подальтернатива 2b
Если ch не равно ‘A’> программа переходит к else. Второй оператор if else разветвляет эту альтернативу еще на две возможности. Свободное форматирование позволяет расположить эти элементы другим способом, более удобным для чтения:
if(ch==’A’)
up++; // альтернатива 1
else if(ch==’B’)
down++; // альтернатива 2
else
down--; // альтернатива 3
Подобная конструкция выглядит гораздо понятнее и позволяет создавать код для выбора различных альтернатив, при этом вся конструкция продолжает считаться одним оператором!
Различные варианты вложения if else может вызвать затруднение в понимании, какому if соответствует else ? Рассмотрим пример:
Int number;
cin>>number; // ввод значения number
if(number>=10)
if(number<21)
cout<<”1: number=”<<number;
else
cout<<”2: number=”<<number;
cout<<”3: number=”<<number;
Чтобы понять, какую строку выведет программа, следует запомнить правило: else соответствует ближайшему if. Таким образом, несмотря на форматирующие отступы, else относится не к первому, а ко второму if. Следовательно, если введено любое значение number меньше 10 (например, 7), то управление будет передано на оператор, следующий за условными операторами. На экран будет выведено:
3 : number = 7
Изменить такой порядок можно, если воспользоваться фигурными скобками:
Int number;
cin>>number;
if(number>=10)
{
if(number<21)
cout<<”1: number=”<<number; // будет выполняться при number >=10 и <21
}
else
cout<<”2: number=”<<number; // будет выполняться при number < 10
cout<<”3: number=”<<number; // будет выполняться всегда
2.1.3. Условный оператор.
В языке С++ имеется оператор, который может использоваться вместо оператора if else. Это условный оператор и записывается как ?:. Общий формат оператора:
выражение1 ? выражение2 : выражение3;
Если выражение1 истинно, то значением всего условного оператора является выражение2, в противном случае - выражение3.
// пример
int c=a>b ? a : b; // если a>b, то с=a, иначе с=b
Как видим, условный оператор в данном примере приводит к тому же результату, что и выражение
int c;
if(a>b)
c=a;
else
c=b;
По сравнению с последовательностью if else, условный оператор более лаконичен, но и менее нагляден. Злоупотребление условным оператором может послужить «эффективным» способом сокрытия смысла программного кода.
2.1.4. Оператор switch.
Выше мы уже приводили пример использования вложенной конструкции else if else для организации выбора между множественными альтернативами. В С++ имеется другая конструкция, которая служит этим же целям – оператор switch. Общая форма оператора:
switch (целочисленное выражение)
{
case метка1 : оператор(ы);
case метка2 : оператор(ы);
…
default : оператор(ы);
}
Встретив ключевое слово switch, программа по значению целочисленного выражения переходит к строке с соответствующей меткой. Так, если целочисленное значение равно 4, то следующим выполняется оператор в строке с меткой case 4. Если целочисленное значение не соответствует ни одной из меток, то программа переходит к строке default. Эта строка не обязательна, если ее опустить, и при этом совпадения с метками не обнаружена, то программа переходит к оператору, следующему за switch.