- •Н. А. Аленский основы программирования
- •§ 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. Выражения
Выражение — это любая допустимая, записанная по определённым правилам, комбинация переменных, констант, обращений к функциям и операций. Как и в других языках, в выражениях можно использовать обращения к стандартным функциям и функциям пользователя с одним результатом, который возвращается с помощью return (гл. 2), то есть подпрограммы типа Function (функции) в смысле языка Pascal. Любой из перечисленных элементов не является обязательным, любой из них может отсутствовать. Как частный случай выражение может содержать только один из первых трёх элементов, например, константу или единственную переменную, или только обращение к функции.
3.1. Константы
Константы в отличие от переменных не могут изменяться программой. Записываются они по следующим правилам. Вещественные константы можно записать в обычной форме, используя символ “.”(точка) для разделения целой и дробной частей (5.,-12.345, 0.00987) или в экспоненциальной форме (0.5e1, -0.12345е+2, 987е-5). Константы целого типа можно записать в десятичной (-26) или шестнадцатеричной (0x1A) системе счисления. Символьные константы записываются в одинарных кавычках (‘5’, ‘А’, ‘\t’,’\r’, ‘\”’, ‘\’’,’\\’). Последние пять констант представляют собой следующие символьные константы с обратным слэшем: горизонтальная табуляция, возврат каретки, двойная кавычка, одинарная кавычка и символ “обратный слэш”. Строковые константы записываются в двойных кавычках (“1234”, “Это строка”, “The first number”). Как и в других языках программирования, грамматический контроль строк не выполняется.
Константы можно определить одним из следующих способов:
-
Непосредственно записать в выражении;
-
с помощью ключевого слова const, например, const SIZE=10. И тогда в выражении (в одном или нескольких) вместо константы 10 указываем идентификатор SIZE. Этот способ имеет следующее преимущество. Если одна и та же константа в программе встречается несколько раз, то для её изменения не надо искать каждое появление такой константы, а достаточно изменить её значение один раз при объявлении;
-
с помощью директивы #define, например, #define SIZE 10. Директива заменяет каждое появление символов SIZE, образующих слово, на 10. Например, операторы
int SIZE2=5;
cout<<(SIZE+SIZE2);
выведут число 15. Идентификатор SIZE2 определяет не константу, а переменную с начальным значением, которое в дальнейшем можно изменить. В идентификаторе SIZE2 последовательность символов SIZE не меняется на 10 ни первый, ни второй раз, а замена выполняется только в cout для SIZE. В отличие от второго способа, в этом случае SIZE можно переопределить, т. е. в любом месте программы можно записать новую директиву для определения SIZE, например, #define SIZE 2.
3.2. Операции и их приоритет
Перечислим операции в порядке их приоритета, разбив на группы, внутри которых приоритет одинаковый. Для большинства из них операции выполняются в естественном порядке слева направо, за исключением операций первых двух групп.
-
( ) — круглые скобки для изменения приоритета операций и записи параметров функций,
[ ] — квадратные скобки для индексации массивов (§ 6),
> — операция доступа к элементу структуры, если объявлен указатель на неё (2й семестр);
-
! — логическая операция отрицание (3.3),
+ — унарный (одиночный) плюс,
— унарный (одиночный) минус,
++ — операция инкремент, или увеличение на единицу (3.4),
-- — операция декремент, или уменьшение на единицу (3.4),
& и * — операции для работы с указателями (2–й семестр),
sizeof — размер типа или переменной в байтах (6.1);
-
арифметические операции * / — умножение и деление для целых и вещественных типов;
% — получение остатка при целочисленном делении. Последнюю операцию можно использовать только для целых чисел, например, 25%3 даст в результате 1;
-
арифметические бинарные операции + (сложение) и (вычитание);
-
битовые операции: << — битовый сдвиг влево, >> — битовый сдвиг вправо (гл. 5);
-
операции сравнения (отношения): < (меньше), <= (меньше либо равно), > (больше), >= (больше либо равно) (3.3);
-
операции сравнения: на равенство = = и неравенство != (2.5, 3.3);
-
& — битовая операция И (гл. 4);
-
^ — битовая операция исключающее ИЛИ (гл. 4);
-
| — битовая операция ИЛИ (гл. 4);
-
&& — логическая операция И (3.3);
-
|| — логическая операция ИЛИ (3.3);
-
?: тернарная операция для замены оператора if в некоторых случаях (3.5);
-
операции присваивания:
= *= /= %= += -= &= ^= |= <<= >>= (3.4 и гл. 4);
-
, — операция запятая (§ 6).
Для изменения приоритета операций используются круглые скобки, которые имеют наивысший приоритет. Рекомендуется их написать, если есть сомнения насчёт приоритета операций. Ошибки не будет, если они окажутся лишними.
Обращение к функции, если оно есть в выражении, всегда выполняется первым.