Олег Деревенец - Песни о Паскале

Тут можно читать онлайн Олег Деревенец - Песни о Паскале - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-db. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Песни о Паскале
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.5/5. Голосов: 21
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Олег Деревенец - Песни о Паскале краткое содержание

Песни о Паскале - описание и краткое содержание, автор Олег Деревенец, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Аннотация: Изложены основы программирования на языке Паскаль. По ходу обучения решаются десятки задач (использован проектный подход). От читателя не требуется начальных познаний в программировании, но круг затронутых тем ориентирует его в профессиональную область. Книга адресована школьникам средних и старших классов, желающим испытать себя в «олимпийских схватках». Будет полезна студентам-первокурсникам и преподавателям информатики.

Песни о Паскале - читать онлайн бесплатно полную версию (весь текст целиком)

Песни о Паскале - читать книгу онлайн бесплатно, автор Олег Деревенец
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Итак, символы внутри компьютера кодируются числами. Мы посчитали, что общее количество букв, цифр и других знаков составляет более двухсот. Инженеры не поскупились и отвели для кодирования символов 256 чисел – от 0 до 255 включительно. Почему именно 256, а не 300 или 500?

Дело в том, что в двоичной системе счисления 256 – это круглое число, оно равно двойке в восьмой степени (если вам знакомо слово «байт», то речь о нём). Так был создан «алфавит» для компьютеров, он включает буквы, цифры, знаки препинания и управляющие символы, – последние выполняют специальные действия с печатающим устройством, например, перевод на следующую строку.

Понятно, что можно придумать несметное количество вариантов кодирования символов. Желая добиться взаимопонимания между техническими устройствами разных изготовителей, инженеры договорились о единой системе кодирования. Теперь она известна под именем ASCII (читается «аски») – American Standard Code for Information Interchange – американский стандартный код для обмена информацией. Со временем этот стандарт стал международным. Ныне используют несколько стандартов кодирования, один из них (для MS-DOS) представлен в приложение И.

Все кодируемые символы разбиты на три группы. Первую составляют управляющие символы с кодами от 0 до 31. Их названия вам мало о чем скажут, обратите внимание лишь на символы с кодами 10 и 13, – они служат для разбивки текста на строки.

Вторую группу составляют символы с кодами от 32 до 127, – здесь собран весь латинский алфавит, цифры и основные знаки. Коды латинских букв следуют в порядке латинского алфавита, причем разница между кодами одноименных больших и маленьких букв составляет 32.

Наконец, в третьей группе собраны русские буквы, символы псевдографики (их применяют для рисования таблиц) и другие редко используемые знаки. Коды большинства русских букв тоже следуют в порядке русского алфавита, но некоторые выпадают из этой последовательности.

Заметьте также, что символы русского и латинского алфавитов со схожими начертаниями (такие, как «А», «В», «Р») представлены разными кодами!

Чудесные превращения

Итак, символы в компьютере представлены своими кодами, то есть числами. А с числами работать легко: для превращения кода одного символа в код другого надо лишь прибавить либо вычесть некоторое число – шифрующий ключ.

Но как превратить символ в число и наоборот, — число в символ? Ведь это данные разных типов. Паскаль поможет вам своими встроенными функциями. Преобразовать число в символ можно либо функцией CHR, которая изначально присутствовала в языке, либо её современным аналогом по имени CHAR, которым я иногда буду пользоваться в дальнейшем. Обе функции принимают число, а возвращают символ, вот их объявления:

function Chr(arg : integer) : char;

function Char(arg : integer) : char;

Случайно ли, что имя функции CHAR совпадает с именем типа данных? Нет, ведь на самом деле обе эти функции ничего не делают! Они лишь подсказывают компилятору, что число в скобках — это код символа. И все! С такими «ненастоящими» функциями мы ещё встретимся, их применяют для преобразования типов данных. Вот как можно напечатать нескольких символов с их кодами.

var n: integer;

begin

for n:=40 to 50 do

Writeln(n,' ', Char(n))

end.

Для обратного преобразования — символа в число — применяют другую «ненастоящую» функцию по имени ORD (от ORDER — «порядковый номер»). Cейчас компиляторы предлагают и её аналог по имени Byte. Функция действительно возвращает порядковый номер символа в таблице ASCII, вот её заголовок:

function Ord(arg : char) : integer;

Воспользовавшись ею, мы тоже можем напечатать символы с их кодами.

var с: char;

begin

for c:=’A’ to ’F’ do

Writeln(c,' ', Ord(c))

end.

Здесь счетчиком цикла FOR служит переменная символьного типа. Паскаль допускает это, поскольку «знает», что каждому символу соответствует некоторое число – его код.

Итак, научившись превращать числа в символы и наоборот, мы оказались в шаге от поставленной цели – шифрования символа.

Шифрование символа

Вернемся к функции шифрования Encrypt, теперь мы можем упростить её до предела.

function Encrypt(arg: char): char;

begin

Crypt:= Char(Ord(arg) + CKey);

end;

Здесь CKey – ключ шифра, хранящийся где-то в глобальной константе или переменной. Превратив символ arg в число, мы прибавляем к нему ключ, а полученную сумму вновь превращаем в символ.

Все хорошо, прекрасная маркиза, за исключеньем пустяка: сумма в скобках может оказаться больше 255, а символа с таким кодом не существует! Как тогда поступит функция Char? Она вернет символ, укоротив его код на 256. Например, функция Char(260) вернет символ с кодом 260–256=4. Устроит нас это? Никак нет, поскольку первые 32 символа таблицы (коды от 0 до 31) – это управляющие символы. К сожалению, такие символы нарушат структуру текстового файла, и редактор не сможет прочесть его.

Значит, при передаче суммы в функцию Char надо проверить, не превышает ли она 255? Если да, то обрубим ей «хвост» и сдвинем ещё на 32 позиции выше, чтобы попасть в область видимых символов с кодами от 32 и далее.

if X>255 then X:=X–256+32; { смещаем «хвост» – в начало видимых символов }

Так получаем окончательный вариант функции шифрования символа.

function Encrypt(arg: char): char;

var x: integer;

begin

x:= Ord(arg)+ CKey;

if x>255 then x:= x–256+32;

Crypt:= Char(x);

end;

Расшифровка символа

Понятно, что для расшифровки символа надо выполнить обратный сдвиг. После вычитания ключа проверим, не попадает ли полученная разность в область управляющих символов? Если попадает, поправим её, сместив в область видимых символов. Вот текст функции расшифровки Decrypt.

function Decrypt(arg: char): char;

var x: integer;

begin

x:= Ord(arg)– CKey;

if x<32 then x:= x+256–32;

Decrypt:= Char(x);

end;

Теперь все готово для построения программы шифрования и расшифровки строки «P_24_1».

{ P_24_1 – Шифрование строки}

const CKey = 2; { Ключ Цезаря }

{––––– Шифрование одного символа –––––}

function Encrypt(arg: char): char;

var x: integer;

begin

x:= Ord(arg)+ CKey;

if x>255 then x:= x–256+32;

Encrypt:= Char(x);

end;

{––––– Расшифровка одного символа –––––}

function Decrypt(arg: char): char;

var x: integer;

begin

x:= Ord(arg)– CKey;

if x<32 then x:= x+256–32;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Олег Деревенец читать все книги автора по порядку

Олег Деревенец - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Песни о Паскале отзывы


Отзывы читателей о книге Песни о Паскале, автор: Олег Деревенец. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x