Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа №2.
«Преобразование информации в семибитный код».
Выполненные работы необходимо присылать тьютору по адресу michnick@aspu.ru. Студенту необходимо выбрать себе один вариант и реализовать программу на любом языке компилируемом языке программирования. Тьютору предоставлять откомпилированный вариант и полные исходные тексты.
Долгое время компьютерные сети были способны передавать только семибитные данные (значения байтов меньше 128). Это было связано как с тем, что таблица ASCII содержит только 128 значений (0-127), так и с тем, что восьмой бит использовался для контроля четности.
На одном из конкурсов для программистов была предложена следующая задача:
Написать программу, преобразующую поданный ей на вход файл, в вид, пригодный для передачи по подобной сети. Поскольку на другом конце сети должно производиться восстановление исходного вида файла, а наличие на компьютере-получателе программы кодирования/декодирования неизвестно, то программа передается вместе с файлом. В силу этого, сама программа должна содержать лишь байты, меньшие 128.
2.1 Задание на лабораторную работу.
В качестве параметра командной строки задается имя файла произвольного вида. Программа должна рассматривать переданный ей файл как бинарный. В ходе работы программы осуществляется преобразование файла к семибитному виду. Преобразование должно быть обратимым. В качестве дополнительного задания возможна реализация второй части: сама программа должна быть семибитной.
Предлагается использовать следующий метод: читаем семь байт из файла и формируем из их старших битов восьмой.
program Code;
begin
read(f,a1..a7);
sum:=0;
for i:=1 to 7 do
s:=ai and 10000000b;
s:=s shr 7;
sum:=sum shl 1;
sum:=sum or s;
endfor
write(f,a1..a7,sum);
end;
program decode;
begin
read(f,a1..a7,sum);
for i:=1 to 7 do
s:=sum mod 2;
sum:=sum div 2;
s:=s shl 7;
ai:=ai or s;
endfor
write(f,a1..a7);
end;