
- •Н. А. Аленский основы программирования
- •§ 1. Структура простой программы. Ввод, вывод
- •1.1. Пример первой программы
- •1.2. Директива препроцессора #include
- •1.3. Структура программы
- •1.4. Комментарии
- •1.5. Ключевые слова и идентификаторы
- •1.6. Простой ввод, вывод
- •§ 2. Оператор if
- •2.1. Полная форма
- •2.2. Сокращённая форма
- •2.3. Особенности оператора
- •Задачи и упражнения
- •§ 3. Выражения
- •3.1. Константы
- •Непосредственно записать в выражении;
- •3.2. Операции и их приоритет
- •3.3. Операции отношения и логические операции
- •3.4. Особенности операции присваивания
- •3.5. Тернарная операция (?)
- •Задачи и упражнения
- •§ 4. Оператор выбора switch
- •Задачи и упражнения
- •§ 5. Операторы цикла
- •5.1. Оператор while c предусловием
- •Правила использования и особенности оператора while
- •5.2. Оператор цикла do … while c постусловием
- •5.3. Оператор for
- •5.4. Операторы continue и break
- •Задачи и упражнения
- •§ 6. Введение в одномерные массивы
- •6.1. Что такое массив. Объявление одномерного массива
- •6.2. Способы определения массивов
- •6.3. Вывод одномерного массива. Функции printf и сprintf
- •6.4. Некоторые типы простых задач при работе с массивами
- •Задачи и упражнения
- •§ 1. Функции без результатов. Передача параметров по значению
- •1.1. Примеры. Правила оформления и вызова функций
- •Void line2(int Len, y, char ch) // ошибка,
- •1.2. Формальные и фактические параметры
- •1.3. Передача параметров по значению
- •§ 2. Функции типа void с несколькими результатами
- •2.1. Пример
- •2.2. Что такое ссылочный тип
- •2.3. Возврат значений из функции с помощью ссылочного типа
- •Задачи и упражнения
- •§ 3. Функции с одним результатом. Оператор return
- •Задачи и упражнения
- •§ 4. Одномерные массивы в функциях. Сортировка массива
- •Задачи и упражнения.
- •§ 5. Область действия имён. Локальные и глобальные имена
- •§ 6. Дополнительные возможности функций
- •Встраиваемые функции (inlineфункции)
- •6.2. Параметры по умолчанию
- •6.3. Перегрузка функций
- •§ 1. Примеры
- •§ 2. Класс. Поля и методы класса
- •§ 3. Создание объектов. Конструктор
- •Задачи и упражнения.
- •Глава 4 простые типы данных § 1. Целый тип
- •1.1. Битовые операции
- •1.2. Использование битовых операций
- •1.3. Упаковка и распаковка информации
- •Задачи и упражнения.
- •§ 2. Логический тип
- •§ 3. Символьный тип
- •Глава 5 матрицы (двухмерные массивы) § 1. Объявление, способы определения
- •§ 2. Вывод матриц
- •§ 3. Типы алгоритмов на обработку матриц
- •3.1. Построчная обработка
- •3.2. Обработка матрицы по столбцам
- •3.3. Обработка всей матрицы
- •3.4. Обработка части матрицы
- •3.5. Преобразование матрицы
- •Упражнения.
- •3.6. Построение матриц
- •§ 4. Передача матрицы в качестве параметра функции
- •Задачи и упражнения.
- •Б. Обработка матрицы по столбцам.
- •Даны две матрицы a и b одинаковой размерности. Построить матрицу с, каждый элемент которой определяется по правилу:
- •Список рекомендуемой литературы
- •Сборники задач по программированию
- •Оглавление
- •Задачи и упражнения …….……………………………………...12
- •3.1. Константы ………………………………………………...…14
3.5. Тернарная операция (?)
Этой операции также нет в других языках, и без неё можно обойтись. С её помощью в более компактном виде в некоторых случаях можно записать полную форму оператора if. Например,
R=k>9 ? 100 : x*y; равносильно if (k>9) R=100; else R=x*y;
Это единственная трёхместная (триадная) операция, так как для неё требуется три операнда. Общий вид операции следующий:
выражение1 ? выражение2 : выражение3
Операция выполняется следующим образом: вычисляется выражение1; если оно истинно (любое ненулевое значение), то вычисляется выражение2, и всё выражение получает это значение; если выражение 1 ложно (нулевое значение), то вычисляется выражение3, и всё выражение получает это значение.
Эта операция не обязательно должна быть связана с присваиванием. Например, в cout можно записать выражение, а в нём при необходимости разрешается использовать эту операцию без дополнительного присваивания значения выражения. Например: cout<<(x>0 && y>x ? x*y : x+y); в зависимости от значений x и y выведут их произведение или сумму. Это равносильно if (x>0 && y>x) cout<<(x*y); else cout<<(x+y).
Не для любого оператора if можно записать тернарную операцию. Вопервых, её можно использовать для замены только полной формы условного оператора. Вовторых, в одной и другой ветвях операции (после символов “?” и “:” ) можно использовать по одному выражению, то есть это соответствует такому оператору if, в котором в каждой ветви по одному оператору.
Эта операция, как и любая другая, в выражении не обязательно должна быть единственной. Аналогично, как операцию “+” можно использовать с другой операцией, допустимо, например, следующее присваивание: R=A+(x>y ? x : y)* B;
Замечание. Наличие отмеченных выше особенностей присваивания, тернарной операции и операции “запятая”(§ 6) является одной из причин того, что язык С, в том числе и С++, традиционно считается сложнее языка Pascal. На начальном этапе изучения такого рода особенности не обязательно надо использовать. Можно программировать проще, в стиле языка Pascal.
Поэтому для слабо подготовленного состава слушателей, для которых язык С++ является первым изучаемым языком, эти вопросы желательно изучать позже.
Задачи и упражнения
1. Вывести “Yes” или “No” в зависимости от того, точка с координатами x, y принадлежит области, ограниченной линиями y= –x, x=0 и y= –1, или нет (записать оператор if и операторы вывода).
if (y<= – x && x>= 0 && y>–1) cout<<"Yes";
else cout<<"No";
-
Нарисовать область плоскости, в которой и только в которой следующее логическое выражение истинно:
а) x>y && x<2 && y>-1; б) x>y || x<2 && y>-1;
в) x>y && x<2 || y>-1; г) x>y || x<2 || y>-1;
д) x>y && (x<2 || y>-1).
-
Даны два вещественных числа x, y. Вывести “Yes” или “No” в зависимости от того, точка плоскости с координатами (x, y) принадлежит кольцу, ограниченному окружностями, радиусы которых r и R (r<R) c общим центром в точке с координатами (a, b), или не принадлежит этому же кольцу.
4. Даны два вещественных числа x, y. Если точка плоскости с координатами (x, y) принадлежит треугольнику с вершинами в точках (–2, 0), (0, 2), (2, 0), то обе координаты увеличить в 10 раз, в противном случае уменьшить их на 10.