Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование C++ (1 сем, мага) / Лабы / Лабораторная работа №1

.docx
Скачиваний:
0
Добавлен:
01.09.2026
Размер:
4 Мб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное автономное образовательное учреждение высшего образования

«Национальный исследовательский ядерный университет «МИФИ»

Кафедра экспериментальной ядерной физики и космофизики (№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 в двоичном представлении имеет значение 012, а значение переменной 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. "!=" – не равно.

Результаты выполнения этих операций согласуются с теорией.

Также получены навыки работы с отладчиком, с помощью которого просматривались текущие значения переменных во время выполнения программы.