
2 сем / ОП 1 Лабораторная
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ
ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
КАФЕДРА
Кафедра вычислительных систем и сетей
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
Доцент Л.Н. Бариков
должность, уч. степень, звание подпись, дата инициалы, фамилия
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ
Следование
по дисциплине: Основы программирования
РАБОТУ ВЫПОЛНИЛА
СТУДЕНТКА ГР. №
номер группы подпись, дата инициалы, фамилия
Студенческий билет №
Санкт-Петербург 2020
Лабораторная работа №1
Следование
Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке C/C++ при решении простейших вычислительных задач.
Задание на программирование: используя технологию структурного программирования разработать линейную программу решения индивидуальной вычислительной задачи (выполнение поразрядных логических операций над целыми числами).
Порядок выполнения работы:
Получить у преподавателя индивидуальное задание.
Разработать математическую модель вычислений. Для этого выполнить все необходимые вычисления вручную, при этом учесть, что все исходные данные и результаты вычислений занимают по одному байту памяти. Конечные результаты интерпретировать как неотрицательные значения.
Принять полученные результаты в качестве контрольных значений.
Построить схему алгоритма решения задачи.
Составить программу на языке C/C++.
Для хранения результатов использовать переменные типа unsigned char.
Выходные данные (сообщения) выводить на экран в развернутой форме.
Проверить и продемонстрировать преподавателю работу программы.
Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольный пример (скриншот).
Вариант задания определяется как две последних цифры номера зачетной книжки (цц), взятых по модулю 50, плюс 1 (цц mod 50 + 1). Например, 00 – 1-й вариант, 01 – 2-ой вариант, 49 – 50-ый вариант, 60 – 11-ый вариант, и т.д.
Вариант №49
Задание: выполнить поразрядные логические операции над машинными кодам.
Условные обозначения операций:
˄
-
конъюнкция,
поразрядное логическое умножение;
˅
- дизъюнкция, поразрядное логическое
сложение;
¬ - поразрядное логическое отрицание;
∆ - поразрядное суммирование по модулю 2;
>> - поразрядный сдвиг вправо; << - поразрядный сдвиг влево
49.
95
˄
20
95
˅
-20
95 >> 2
120
∆
-95 ˄
(¬20
˅
-37)
Ход работы.
1. Выполнила вычисления вручную.
9510 = 0101 1111 2
9510 = 1010 00012
3710 = 1101 1011 2
2010 = 0001 0100 2
-2010 = 1110 1100 2
12010 = 0111 100 2
Схема алгоритма решения задачи.
Текст программы.
#include <iostream> using namespace std;
int main() { unsigned char a, b, c, d, xx, xxx, xxxx; a = 95 & 20;
printf("95 AND 20 = (20) = %i \n", a); b = 95 | -20;
printf("95 OR - 20 = (255) = %i \n", b); c = 95 >> 2; printf("95 >> 2 = (23) = %i \n", c);
d = 120 ^ -95 & (~20 | -37);
printf("120 XOR - 95 AND (NOT 20 OR - 37) = (217) = %i \n \n", d); //
cout << "PROVERKA\n________________________\n\n"; xx = 120 ^ -95;
printf("120 ^ -95 = (217) = %i \n", xx); xxx = ~20 | -37;
printf("~20 | -37 = (251) = %i \n", xxx); xxxx = xx & xxx;
printf("xx & xxx = (217) = %i \n", xxxx);
cout << "________________________\n";
//
return 0;
}
4. Скриншот контрольного примера выполнения программы.