- •Лабораторные работы по курсу" "Основы программирования и алгоритмические языки" часть I
- •2. Порядок выполнения лабораторных работ
- •2.1. Подготовка к выполнению
- •2.2. Задания для выполнения.
- •2.3. Выполнение задания
- •2. Подготовка каталога и запуск системы программирования
- •3. Отчет к лабораторной работе
- •4. Литература
- •Лабораторная работа ╧1 Работа в системе программирования Borland с
- •1. Цель работы
- •3. Настройка рабочей среды
- •3.1. Установка каталогов
- •3.2. Параметры компиляции
- •3.3. Параметры программы Make
- •3.4. Параметры компоновщика
- •3.5. Параметры отладчика
- •3.6. Сохранение параметров среды
- •4. Пользование подсказкой
- •5. Создание, редактирование и сохранение программы
- •6. Компиляция и выполнение программы
- •7. Диагностика ошибок и предупреждения компилятора и компоновщика
- •8. Отладка программы
- •9. Выводы
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •Приложение 1. Базовые типы данных языка с
- •Приложение 2. Некоторые функции стандартного ввода-вывода
- •4. Варианты индивидуальных заданий
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5. Пример решения задачи (вариант 30)
- •5.1. Программа упаковки
- •5.2. Программа распаковки
- •5.3. Выводы
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •4. Варианты индивидуальных заданий
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
- •4. Варианты индивидуальных заданий
- •5. Пример решения задачи (вариант 30)
- •5.1. Разработка алгоритма решения.
- •5.2. Определение переменных программы
- •5.3. Разработка текста программы
- •5.4. Отладка программы
- •5.5. Результаты работы программы
- •5.6. Выводы
5.2. Программа распаковки
5.2.1. Разработка алгоритма решения.
Алгоритм программы линейный и состоит из таких шагов.
5.2.1.1. Ввод значения слова состояния устройства.
5.2.1.2. Выделение из слова состояния устройства кода состояния. Код слова состояния устройства нужно сдвинуть на 11 разрядов вправо и выделить 5 младших разрядов - "побитовое логическое И" с константой 1F16. Слово состояния устройства остается неизменным, а полученное значение записывается в переменную для кода состояния.
5.2.1.3. Выделение из слова состояния устройства признака ошибки. Код слова состояния устройства сдвинуть на 9 разрядов вправо и выделить 1 младший разряд - "побитовое логическое И" с константой 1. Слово состояния устройства остается неизменным, а полученное значение записывается в переменную для признака ошибки.
5.2.1.4. Выделение из слова состояния устройства признака занятости. Код слова состояния устройства сдвинуть на 9 разрядов вправо и выделить 1 младший разряд. Слово состояния устройства остается неизменным, а полученное значение записывается в переменную для признака занятости.
5.2.1.5. Выделение из слова состояния устройства количества байт. В коде слова состояния устройства нужно выделить 8 младших разрядов - "побитовое логическое И" с константой FF16. Полученное значение записывается в переменную для количества байт.
5.2.2. Определение переменных программы Для работы программы нам будут нужны такие же переменные, что и в пп. 5.1.2.
5.2.3. Разработка текста программы
Начало программы - заголовок и определение переменных - по пп. 5.1.3. Далее идет формирования упакованного кода, которое точно повторяет шаги алгоритма, описанного в пп. 5.2.1:
по пп.5.1.2.2:
c=(UnitStateWord>>11)&0x1F;
по пп.5.1.2.3:
f=(UnitStateWord>>9)&1;
по пп.5.1.2.4:
b=(UnitStateWord>>8)&1;
по пп.5.1.2.5:
n=UnitStateWord&0xFF;
Вывод первого результата - кода состояния выполняется оператором:
printf("Код состояния = %d\n",c);
Подобными операторами выполняется и вывод остальных результатов
Полный текст программы приведен ниже.
/******************************************************/
/* Лабораторная работа ╧4 (часть 2) */
/* Распаковка кода */
/* Пример выполнения. Вариант ╧30. */
/******************************************************/
#include <stdio.h>
int main(void) {
char c; /* код состояния */
char f; /* признак ошибки */
char b; /* признак занятости */
unsigned char n; /* количество байт */
unsigned int UnitStateWord; /* слово состояния */
/* ввод слова состояния устройства */
printf("Введите cлово состояния устройства \n");
printf("(16-ричное число от 0 до 0xFFFF) >");
scanf("%x",&UnitStateWord);
/* Выделение составных частей */
c=(UnitStateWord>>11)&0x1F;
f=(UnitStateWord>>9)&1;
b=(UnitStateWord>>8)&1;
n=UnitStateWord&0xFF;
/* вывод результатов */
putchar('\n');
printf("Код состояния = %d\n",c);
printf("Признак ошибки = %d\n",f);
printf("Признак занятости = %d\n",b);
printf("Количество переданных байт = %d\n",n);
return 0;
}
5.2.4. Отладка программы
Отладка программы ведется по методике, описанной в пп.5.1.4.
5.2.5. Результаты работы программы
При работе программы на экран были выведены такие результаты:
Введите cлово состояния устройства
(16-ричное число от 0 до 0xFFFF) >cb42
Код состояния = 25
Признак ошибки = 1
Признак занятости = 1
Количество переданных байт = 66
