Логические и арифметические операции
В языке С к арифметическим операциям относятся следующие операции: - вычитание или унарный минус;
+ сложение;
* умножение;
/ деление;
% деление по модулю;
++ увеличение на единицу;
-- уменьшение на единицу;
Операции сложения, вычитания, умножения и деления действуют так же, как в большинстве алгоритмических языков программирования. операции выполняются так: сначала вычисляется значение левого выражения (операнда), затем вычисляется значение выражения, стоящего справа от знака действия. Далее, в том случае, когда операнды имеют общий тип данных, этот же тип имеет и результат. Поэтому, если применяется деление "/" к целым числам, например, 11/3, то результат тоже будет целым, то есть в данном случае 3. А выражение 1/2 в этом случае будет равно нулю.
Операция "%" деление по модулю дает остаток от целочисленного деления. Она может применяться к целочисленным переменным. Теперь решим небольую задачу.
В С++ существует три логические операции:
Логическая операция И &&, нам уже известная;
Логическая операция ИЛИ ||;
Логическая операция НЕ ! или логическое отрицание.
Логические операции образуют сложное (составное) условие из нескольких простых (два или более) условий. Эти операции упрощают структуру программного кода в несколько раз. Да, можно обойтись и без них, но тогда количество ифов увеличивается в несколько раз, в зависимости от условия. В следующей таблице кратко охарактеризованы все логические операции в языке программирования С++, для построения логических условий.
Сейчас следует понять разницу между логической операцией И и логической операцией ИЛИ , чтобы в дальнейшем не путаться. Пришло время познакомиться с типом данных bool –логический тип данных. Данный тип данных может принимать два значения: true (истина) и false (ложь). Проверяемое условие в операторах выбора имеет тип данных bool.
Массивы и структуры языка с
При решении задач с большим количеством данных одинакового типа использование переменных с различными именами, не упорядоченных по адресам памяти, затрудняет программирование. В подобных случаях в языке Си используют объекты, называемые массивами.
Массив - это непрерывный участок памяти, содержащий последовательность объектов одинакового типа, обозначаемый одним именем.
Массив характеризуется следующими основными понятиями:
Элемент массива (значение элемента массива) – значение, хранящееся в определенной ячейке памяти, расположенной в пределах массива, а также адрес этой ячейки памяти.
Каждый элемент массива характеризуется тремя величинами:
адресом элемента - адресом начальной ячейки памяти, в которой расположен этот элемент;
индексом элемента (порядковым номером элемента в массиве);
значением элемента.
Адрес массива – адрес начального элемента массива.
Имя массива – идентификатор, используемый для обращения к элементам массива.
Размер массива – количество элементов массива
Размер элемента – количество байт, занимаемых одним элементом массива.
Графически расположение массива в памяти компьютера можно представить в виде непрерывной ленты адресов.
Длина массива – количество байт, отводимое в памяти для хранения всех элементов массива.
ДлинаМассива = РазмерЭлемента * КоличествоЭлементов
Для определения размера элемента массива может использоваться функция int sizeof(тип);
Инициализация представляет собой набор начальных значений элементов массива, разделенных запятыми.
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // массив a из 10 целых чисел
В языке Си, структура (struct) — композитный тип данных, инкапсулирующий без сокрытия набор значений[en] различных типов. Порядок размещения значений в памяти задаётся при определении типа и сохраняется на протяжении времени жизни объектов, что даёт возможность косвенного доступа (например, через указатели)
Пример объявления структуры:
struct str_name
{
int member_1;
float member_2;
char member_3[256];
/* ... */
};
// объявление структуры
struct str_name struct0;
Тип «структура» в Си допускает рекурсию, то есть наличие в своём составе указателей, ссылающихся на объекты этой самой структуры. Таким образом, структуры в Си объединяют в себе функциональность не только кортежей и записей, но и алгебраических типов.В C++ понятие структуры было расширено до класса, то есть была добавлена возможность включения в структуру функций-методов. Главное отличие состоит в том, что в соответствии с «правилом трёх» структуры всегда имеют конструктор, даже если явное его определение в исходном коде отсутствует. Таким образом, говорить о «структурах в С++» некорректно. То же относится к C#.
50. Описание переменных и массивов языка С применение массивов и указателей