Добавил:
okley
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование C++ (1 сем, мага) / Лабы / Лабораторная работа №1
.pdf
Министерство науки и высшего образования Российской Федерации
Федеральное государственное автономное образовательное учреждение высшего
образования
«Национальный исследовательский ядерный университет «МИФИ»
Кафедра экспериментальной ядерной физики и космофизики (№7)
Программирование на С и С++
Отчет по лабораторной работе № 1
Выполнил:
студент группы M22-105 Васильева А.П.
Москва, 2022

Цель работы: написать программу, иллюстрирующую следующие операции языка C:
1) "^" – поразрядное исключающее ИЛИ;
2) "?:" – условная операция;
3) "--" – декремент;
4) "%=" – присваивание с остатком от деления;
5) "!=" – не равно.
Введение
Декремент (--) – унарная операция, в результате которой значение операнда
уменьшается на единицу. Знак операции может быть записан как перед операндом
(префиксная форма), так и после него (постфиксная форма). В первом случае изменение
операнда происходит до его использования в выражении. Во втором случае сначала операнд
используется в выражении, а затем его значение уменьшается на единицу.
Операция поразрядного исключающего ИЛИ (^) – бинарная операция, которая
сравнивает каждый бит первого операнда с соответствующими битами второго операнда.
Если один из сравниваемых битов равен 0, а второй бит равен 1, то соответствующий бит
результата устанавливается в 1, в противном случае, т.е. когда оба бита равны 1 или 0, бит
результата устанавливается в 0.
Присваивание с остатком от деления (%=) – бинарная операция составного
присваивания, которая записывается как (операнд-1) %= (операнд-2) и
эквивалентна записи (операнд-1) = (операнд-1) % (операнд-2). В результате
выполнения этой операции операнд-1 принимает значение, равное остатку от его деления
на операнд-2.
Операция "не равно" (!=) – бинарная операция отношения, которая возвращает true,
если первый операнд не равен второму, и false, если оба операнда равны.
Условная операция – тернарная операция, которая имеет следующий формат записи:
операнд-1 ? операнд-2 : операнд-3
Вычисление операции выполняется следующим образом. Вначале вычисляется
операнд-1, представляющий собой условие – логическое или арифметическое выражение,
подобное тому, которое можно записать в операторе if. Если условие истинно, то
результатом работы операции будет операнд-2, если ложно, то операнд-3.

Ход работы
Написана программа, в которой реализованы описанные выше пять операций. Код
программы:
Далее программа была запущена в режиме отладки. При этом было установлено
наблюдение за переменными a, b и с.
• Произведен вход в функцию main(), строка с объявлением и инициализацией
переменных ещё не отработала, поэтому переменные имеют произвольные значения.
• Переменные a и b были не только объявлены, но и инициализированы, поэтому
теперь они имеют заданные значения: a = 3, b = 15. Переменная c не
инициализировалась и по-прежнему содержит произвольное значение.

• Выполнена операция декремента над переменной a, поэтому ее значение
уменьшилось на единицу и стало равно a = 2. Значения переменных b и c не
изменились.
• Выполнена проверка условия, что a не равно 5 – здесь использована операция !=.
Результатом выполнения операции является true, т.к. значение переменной a
действительно не равно пяти: 2 ≠ 5. Поэтому выполнен вход внутрь блока
условного оператора if.

• Выполнена операция присваивания с остатком от деления – переменной b
присвоено значение, равное остатку от деления b на 7: 15%7 = 1.
• Выполнена операция поразрядного исключающего ИЛИ. Переменная b = 1 в
двоичном представлении имеет значение 01
2
, а значение переменной a = 2 в
двоичной системе счисления равно 102. В результате выполнения 01^10 получается
11, т.к. и в случае младшего бина, и в случае старшего один из сравниваемых бинов
равен 1, а второй 0, соответственно результатом будет 1. Число 112 в десятичной
системе счисления равно 3, поэтому переменная c принимает значение c = 3.

• При выполнении условной операции выполнено сравнение значений переменных a
и b. Т.к. 2 > 1, условие истинно и выполняется выражение c = 13. В результате
условной операции переменной c присвоено значение 13.
На этом завершается выполнение представленной программы.

Примечания по декременту и условному оператору. Модифицированный код
программы:
Знак операции декремента записан после операнда (постфиксная форма), поэтому
сначала операнд участвует в выражении (в примере – выполняется операция присваивания
переменной d значения переменной a), а уже после этого происходит уменьшение операнда
на единицу:
До операции декремента a = 3. Сначала выполняется присваивание, в результате
которого d = 3, а затем – декремент и переменная a принимает значение a = 2.
В выражениях внутри условного оператора, как правило, не используются операции
присваивания, а полученное в результате его работы значение может быть присвоено какойлибо переменной:
В приведенном коде выполняется условие (a > b), т.к. 2 > 1, и переменной c
присваивается значение 13.

Заключение
В лабораторной работе освоены следующие операции языка C:
1) "^" – поразрядное исключающее ИЛИ;
2) "?:" – условная операция;
3) "--" – декремент;
4) "%=" – присваивание с остатком от деления;
5) "!=" – не равно.
Результаты выполнения этих операций согласуются с теорией.
Также получены навыки работы с отладчиком, с помощью которого просматривались
текущие значения переменных во время выполнения программы.
Соседние файлы в папке Лабы
