МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
(ГУАП)
КАФЕДРА № 44
Преподаватель
канд. техн. наук, доцент Бариков Л. Н.
Отчёт
по лабораторной работе №1
по дисциплине ОСНОВЫ ПРОГРАММИРОВАНИЯ
на тему: «Следование»
Работу выполнил
студент гр. Z9411 Кафка Р. С.
Санкт-Петербург
2020
Лабораторная работа №1
Следование
Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке C/C++ при решении простейших вычислительных задач.
Задание на программирование: используя технологию структурного программирования разработать линейную программу решения индивидуальной вычислительной задачи (выполнение поразрядных логических операций над целыми числами).
Порядок выполнения работы:
1. Получить у преподавателя индивидуальное задание.
2. Разработать математическую модель вычислений. Для этого выполнить все необходимые вычисления вручную, при этом учесть, что все исходные данные и результаты вычислений занимают по одному байту памяти. Конечные результаты интерпретировать как неотрицательные значения.
3. Принять полученные результаты в качестве контрольных значений.
4. Построить схему алгоритма решения задачи.
5. Составить программу на языке C/C++.
6. Для хранения результатов использовать переменные типа unsigned char.
7. Выходные данные (сообщения) выводить на экран в развернутой форме.
8. Проверить и продемонстрировать преподавателю работу программы.
9. Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольный пример (скриншот).
10. Вариант задания определяется как две последних цифры номера зачетной книжки (цц), взятых по модулю 50, плюс 1 (цц mod 50 + 1). Например, 00 – 1-й вариант, 01 – 2-ой вариант, 49 – 50-ый вариант, 60 – 11-ый вариант, и т.д.
Вариант №4. (студ. билет 2019/3603)
217 ˄ 13
-217 ˅ 13
217 << 2
¬21 ∆ -3 ˄ (¬217 ˅ -13)
Программа
Формулировка задания:
Выполнить поразрядные логические операции над целыми числами
217 ˄ 13
-217 ˅ 13
217 << 2
¬21 ∆ -3 ˄ (¬217 ˅ -13)
Математическая модель (ручной счёт)
1) Находим внутреннее представление используемых десятичных чисел. Для этого переводим их в двоичную форму и размещаем каждое в 1 байте.
2 |
1 |
7 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
1 |
6 |
1 |
0 |
8 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
8 |
|
5 |
4 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
5 |
4 |
|
2 |
7 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
2 |
6 |
|
1 |
3 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
1 |
2 |
|
|
6 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
6 |
|
|
3 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
2 |
|
|
1 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
0 |
|
|
0 |
2 |
1 |
7 |
= |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-2 |
1 |
7 |
= |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
3 |
= |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-1 |
3 |
= |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
1 |
= |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-3 |
= |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2) Выполняем необходимые поразрядные логические операции и переводим получившиеся результаты в десятичную форму.
|
|
|
|
2 |
1 |
7 |
= |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
|
|
|
|
|
||||||||||||||
|
|
|
|
|
1 |
3 |
= |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
|
|
|
|
|
||||||||||||||
2 |
1 |
7 |
A |
ND |
1 |
3 |
= |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
= |
9 |
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
-2 |
1 |
7 |
= |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
|
|
|
|
|
||||||||||||||
|
|
|
|
|
1 |
3 |
= |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
|
|
|
|
|
||||||||||||||
2 |
1 |
7 |
O |
R |
1 |
3 |
= |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
= |
4 |
7 |
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
2 |
1 |
7 |
= |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
|
|
|
|
|||||||||||||||
|
|
2 |
1 |
7 |
<< |
2 |
= |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
= |
1 |
0 |
0 |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
1 |
7 |
= |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N |
O |
T |
2 |
1 |
7 |
= |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
1 |
= |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N |
O |
T |
2 |
1 |
= |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N |
O |
T |
2 |
1 |
7 |
= |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-1 |
3 |
= |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(N |
O |
T |
2 |
1 |
7) |
O |
R |
-1 |
3 |
= |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-3 |
= |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(N |
O |
T |
2 |
1 |
7) |
O |
R |
-1 |
3 |
= |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
-3 |
A |
N |
D |
(N |
O |
T |
2 |
1 |
7 |
O |
R |
-1 |
3) |
= |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-3 |
A |
N |
D |
(N |
O |
T |
2 |
1 |
7 |
O |
R |
-1 |
3) |
= |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N |
O |
T |
2 |
1 |
= |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
|
|
|
|
N |
O |
T |
2 |
1 |
X |
O |
R |
-3 |
A |
N |
D |
(N |
O |
T |
2 |
1 |
7 |
O |
R |
-1 |
3) |
= |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
= |
3 |
1 |
|
Схема алгоритма решения
Начало
a
= 217 & 13
Вывод a
b
= -217 | 13
Вывод b
c
= 217 << 2
Вывод c
Ввод d
d
= ~21 ^ -3 & (~217 | -13)
Конец
Текст программы
#include <stdio.h>
using namespace std;
int main()
{
unsigned char a, b, c, d;
a = 217 & 13;
printf("217 AND 13 = (9) = %i\n", a);
b = -217 | 13;
printf("-217 OR 13 = (47) = %i\n", b);
c = 217 << 2;
printf("217 << 2 = (100) = %i\n", c);
d = ~21 ^ -3 & (~217 | -13);
printf("NOT 21 XOR -3 AND (NOT 217 OR -13) = (31) = %i\n", d);
return 0;
}
Скриншот контрольного примера выполнения программы