Сжа́тие да́нных (англ. data compression) — алгоритмическое преобразование данных, производимое с целью уменьшения занимаемого ими объёма. Применяется для более рационального использования устройств хранения и передачи данных. Синонимы — упаковка данных, компрессия, сжимающее кодирование, кодирование источника. Обратная процедура называется восстановлением данных (распаковкой, декомпрессией).
Сжатие основано на устранении избыточности, содержащейся в исходных данных. Простейшим примером избыточности является повторение в тексте фрагментов (например, слов естественного или машинного языка). Подобная избыточность обычно устраняется заменой повторяющейся последовательности ссылкой на уже закодированный фрагмент с указанием его длины. Другой вид избыточности связан с тем, что некоторые значения в сжимаемых данных встречаются чаще других. Сокращение объёма данных достигается за счёт замены часто встречающихся данных короткими кодовыми словами, а редких — длинными (энтропийное кодирование). Сжатие данных, не обладающих свойством избыточности (например, случайный сигнал или белый шум, зашифрованные сообщения), принципиально невозможно без потерь.
Сжатие без потерь позволяет полностью восстановить исходное сообщение, так как не уменьшает в нем количество информации, несмотря на уменьшение длины. Такая возможность возникает только если распределение вероятностей на множестве сообщений не равномерное, например часть теоретически возможных в прежней кодировке сообщений на практике не встречается.
program Vozrasr;
var
AGE: integer;//Переменная возраста
begin
writeln('Введите любое число от 1 до 120');
Readln(AGE); //Ввод возраста
if (AGE < 1) or (AGE > 120) then
begin
writeln('ERROR!')
end
else
begin
case AGE of //для чисел от 11 до 20 создаем отд-ый кейс
11..20: Writeln('ответ: Мне ', AGE, ' лет');
Else //иначе если они не входят в диапазон от [11..20], то выполняется второй кейс
begin
case AGE mod 10 of //делим на 10 и получаем остаток =
1: Writeln('ответ: Мне ', AGE, ' год');
2..4: Writeln('ответ: Мне ', AGE, ' года');
0, 5..9: Writeln('ответ: Мне ', AGE, ' лет');
end;
end;
end;
end;
end.