Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги хакеры / журнал хакер / специальные выпуски / Специальный выпуск 4_compressed

.pdf
Скачиваний:
1
Добавлен:
20.04.2024
Размер:
7.13 Mб
Скачать

Æ Ó Ð Í À Ë

Ê Î Ì Ï Ü Þ Ò Å Ð Í Û Õ

Õ Ó Ë È Ã À Í Î Â

 

 

 

 

 

 

 

 

w w w . x a k e p . r u

!CA0A21b

design by modernart.ru

Дарова, перец! Ты находишься на пороге новой жизненной эпохи - будешь с нами сегодня кодить. Программировать, то есть. Боишься? Думаешь, это заморо- ченное занятие, долгое и нудное, от которого сдвиг по фазе начи- нается, и, к тому же, только избранным яйцеголовым доступное? Хорош, не бойся! Не боги горшки обжигают. Современные языки программирования позволяют тебе практически без строчки кода САМОМУ написать прикольные проги - и не какие-нибудь “2 + 2 = 3,5”, а настоящие - плееры всякие, инет - броузеры. Так можно даже простенького троянского коня написать! И при этом не нужно заморачиваться понятиями, типа “билинейная структура данного алгоритма не позволяет интерполировать данный полином”, и про- чей фигней. Просто берешь в руки мышь, в зубы - Х, и - вперед! Главное - не стрематься, и через пару часов у тебя будет уже целый арсенал реальных, работающих программ! Так что - от винта, поехали и вс¸ такое. Я пристегнут, а ты? Пора. Пристегнись.

editorial

/братская могила/

Редакция

Координатор проекта:

 

Сергей Покровский

 

(pokrovsky@xakep.ru)

 

Главный редактор: Александр

 

Черных (holod@xakep.ru)

 

Второе дыхание:

 

Александр Сидоровский

 

(2poisonS@xakep.ru)

 

добрая фея

 

 

Игорь Пискунов

 

(igor@gameland.ru)

 

замполит-политрук

 

Алена Скворцова

 

(alyona@gameland.ru)

Art

Aрт-директор

 

R.SKY

 

 

(matrix@xakep.ru),

 

дизайн и обложка

 

Griff

 

 

modernart.ru

 

 

дизайн верстка

 

Таня Отакуева

 

(osyako@gameland.ru)

Реклама

руководитель отдела

 

Игорь Пискунов

 

(igor@gameland.ru)

 

менеджеры отдела

 

Алексей Анисимов

 

(anisimov@gameland.ru)

 

Басова Ольга

 

 

(olga@gameland.ru)

 

Крымова Виктория

 

(vika@gameland.ru)

 

òåë.:

(095) 229.43.67

 

 

(095) 229.28.32

 

ôàêñ:

(095) 924.96.94

Оптовая

руководитель отдела

продажа

Владимир Смирнов

 

(vladimir@gameland.ru)

 

менеджеры отдела

 

Андрей Степанов

 

(andrey@gameland.ru)

 

Самвел Анташян

 

(samvel@gameland.ru)

 

òåë.:

(095) 292.39.08

 

 

(095) 292.54.63

 

ôàêñ:

(095) 924.96.94

PUBLISHING

учредитель и издатель

 

ÇÀÎ “Ãåéì Ëýíä”

 

директор

 

 

Дмитрий Агарунов

 

(dmitri@gameland.ru)

 

финансовый директор

 

Борис Скворцов

 

(boris@gameland.ru)

Для писем

101000, Москва,

 

Главпочтамп,

 

 

а/я 652, Хакер

Web-Site

http://www.xakep.ru

E-mail

magazine@xakep.ru

Мнение редакции не обязательно совпадает с мнением авторов. Редакция не несет ответственности за те моральные и физические увечья, которые вы или ваш комп можете получить, руководствуясь информацией, почерпнутой из статей номера. Редакция не несет ответственности за содержание рекламных объявлений в номере.

Отпечатано в типографии «ScanWeb», Финляндия

Зарегистрировано в Министерстве Российской Федерации по делам печати, телерадиовещанию и средствам массовых коммуникаций

ÏÈ ¹ 77-1905 от 15 марта 2000 г.

Тираж 57 000 экземпляров. Цена договорная.

Журнал презентуется всем пассажирам, летающим рейсами авиакомпании “ИГИДА АЭРО”

2

0002

СОДЕРЖАНИЕ

 

 

>СПЕЦВЫПУСК #4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

68

 

Твой собственный веб-броузер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

71

 

Инсталлим языки программирования

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

74

 

Высший пилотаж - пишем клавиатурный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сниффер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

78

 

Смотрелка в домашних условиях

 

 

 

 

 

 

 

 

 

80

 

Getright своими руками

 

 

 

 

1

Вступительная

 

 

 

 

 

 

84

 

Сканер портов? ЛЕГКО!

 

 

 

 

 

 

 

 

 

 

 

 

 

2

Содержание

 

86

 

Справочник конспиративных квартир на ВБ

 

 

 

 

4

Глоссарий

 

90

 

Азм - проще некуда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

Как создается программа

 

92

 

Текстовый редактор на дельфи или снова

 

 

 

 

16

“Hacked By” на дельфи, VC++ и VB

 

 

 

 

 

 

текстовый редактор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

Проги для программера

 

94

 

Кранты соседям, или свой собственный

 

 

 

 

 

 

 

 

 

24

Дебаг или как защитить себя от

 

 

 

 

 

 

мега-плеер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

насекомых

 

98

 

Суровая правда жизни о директ3Д

 

 

 

 

 

 

 

 

 

 

28

Перекодировщик

 

104

Кликер - самопал

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

32

Программистские ресурсы в сети

 

106

Совершенное оружие кодера

 

 

 

 

 

 

 

 

 

 

 

 

36

Языки программирования, и откуда они

 

 

110 J++ c самого начала: пишем текстовый

 

 

 

 

 

взялись - ликбез

 

 

 

 

 

 

редактор.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

42

ÂÓÇÛ

 

 

 

114

Нас ребут, а мы крепчаем!

 

 

 

 

 

 

 

 

 

 

 

 

 

44

Фишки

 

 

116

Нет, не хакер, просто гадил плохо

 

 

 

 

 

 

 

 

 

53

Боевой конь за 10 минут

 

120

Пишем свой мессаджер для локалы на

 

 

 

 

 

 

 

 

 

56

Команда, или о вреде программистов

 

 

 

 

 

 

С++ Билдер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

66

Cоздай язык сам или Конструктор для

 

122

Бешеная Блинница

 

 

 

 

 

программиста

 

 

 

126

 

Анекдоты о програмерах

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

0004

ТЕОРИЯ

>СПЕЦВЫПУСК #4

 

ГЛОССАРИЙ

 

С САМОГО Н

 

 

 

 

лове. Так вот, чтобы тебе не заморочиваться и

 

 

 

 

не чесать репу, я тебе все растолкую “по поня-

 

 

 

 

тиям”. Прикинь, как ты сможешь выделаться пе-

 

 

 

 

ред подругой! Она тебе: “...а у меня то да се не

 

 

 

 

работает, а завтра зачет по компутерам, а пре-

 

 

 

 

под - тормоз...”, а ты ей: “Да не вопрос! Тут у те-

 

 

 

 

бя элемент массива в строковую переменную

 

 

 

 

криво конвертируется, сейчас мы его порепаем

 

 

 

 

в пару циклов, да еще и без меток обойдемся!”.

 

 

 

 

Все, дама будет твоей навеки. Проверено элек-

 

 

 

 

троникой :)))) !!! Поехали.

 

 

 

 

ПЕРЕМЕННАЯ

 

 

 

 

В этом мире все меняется, верно? Все что-то

 

 

 

 

на что-то меняют... Одни Риву 128 на Риву

 

 

 

 

256, другие паровоз на другой паровоз. Так и

 

 

 

 

в кодинге, то есть в его, понимаешь, резуль-

 

 

 

 

тате, супер-пупер-рулезной проге, которая

 

 

 

 

осчастливит человечество, наконец сломает

 

 

 

 

Инет и поснимает лифчики на всех фотках

 

 

 

 

подружек. Во, кстати, и пример - приходит к

 

 

 

 

тебе красавица, вся в бантах и кружевах (ну,

 

 

 

 

или в джинсах и футболке, кому как нравится).

 

 

 

 

А ты уже весь подготовился, все помыл, вынес

 

 

 

 

кубометр пивных бутылок и прочих заваляв-

 

 

 

 

шихся от прошлых зависаний предметов, лю-

 

 

 

 

бимую крысу к компу подвесил и подстелил ей

 

 

 

 

(крысе!) парадный коврик с зайчиком (рабо-

 

 

 

 

чий, с голой теткой в шкаф спрятал - дабы не

 

 

 

 

травмировать...). Ну и через n часов ты с этой

 

 

 

 

лапочкой уже вовсю практикуешь чудеса и ди-

 

 

 

 

ковины вольной акробатики. Все лишние

 

 

 

 

предметы одежды (а они тут все лишние! ) по-

 

 

 

 

летели в стороны, и все такое... Смотри: была

 

 

 

 

подруга в прикиде, стала... ну... тоже в прики-

 

 

 

 

де, но - более естественном :)))). То есть - ее

 

 

 

 

одетость есть величина, по жизни, ПЕРЕМЕН-

 

арова. Признайся, перец, было табуржуинским разумом уверен, что, типа, все

НАЯ. Может дама быть совсем одетой, может

 

кое, что ты читал (пытался читать)

знают и понимают, что значит фраза вроде “...

- немного раздетой, а может - и обнаженной:

 

умную книжку, написанную суровым

после анализа содержимого стека и/или дампа

получается, что дама - переменная, прини-

 

Äдядей из МелкойМягкости? Ну, ти-

памяти по адресам хххххх-ххххх вы поймете, что

мающая эти три значения. Переменная - пер-

 

па, “Аспекты и тонкости программи-

трассировка вызывает обращение по вектору

вое и основное понятие любого языка кодин-

 

рования на Visual C++ в среде Windows 9x, бла-

прерывания 02h и....”. Я, например, уже после

га, в которое ты, перец, просто должен вник-

 

бла-бла. И грузил тебя тот дядя после первой

второй страницы таких душераздирающих исто-

íóòü.

 

же страницы страшными терминами. Он своим

рий рвал и без того редкие волосы у себя на го-

 

 

 

ТЕОРИЯ

 

 

 

>СПЕЦВЫПУСК #4

0005

5

 

КОДЕРА ИЛИ АЧАЛА

 

 

ПОСТОЯННАЯ, или КОНСТАНТА

КАК ЗАГИБАТЬ ПАЛЬЦЫ, ИЛИ СИСТЕ-

МЛАДШИЙ РАЗРЯД (îò 0 äî 9) - ýòî òû èëè

 

 

 

 

 

А теперь, на том же примере, - то, что ты по-

МЫ СЧИСЛЕНИЯ

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пытаешься снова развести на романтический

Никогда не задумывался, как комп думает?

СТАРШИЙ РАЗРЯД (десятки) - это друг или

 

 

 

 

 

 

 

 

 

 

вечер эту пельмешку так же обязательно, как

Прикинь, вот ты считаешь яблоки (подружек,

пальцы на его руках. А если еще пяток перцев

 

 

 

 

 

восход солнца утром. Это, выражаясь по-ла-

зеленых президентов). И загибаешь пальцы.

привлечь, можно считать до морковкино-роз-

 

 

 

 

 

тински, constanta est. То

 

 

 

говенья. Так и комп. У не-

 

 

 

 

 

есть непременно и обяза-

А теперь прикинь, перец,

го тоже разряды есть,

 

 

 

 

 

тельно, и так будет всег-

только считает он не от 0

 

 

да. Так вот, в кодинге,

что такую байду надо про-

äî 9 à, îò 0 äî 1. Íó, ïà-

 

 

 

 

 

коим ты собираешься за-

делать, чтобы посчитать

лец у него один... Теперь

 

 

 

 

 

няться, это

называется

вспомни снова - цифирей

 

 

КОНСТАНТА,

èëè ÏÎÑ-

äî 7657651265? Ýòî æ êðû-

он сколько знает? Пра-

 

 

 

 

ТОЯННАЯ ВЕЛИЧИНА. Вот

ша отъедет, сто пудов! Ó

вильно, две.

 

 

 

 

 

так мы продвинулись аж

компа-то не отъедет, ему

 

 

 

 

 

 

íà

äâà

 

термина. Дальше

BINARY, БИНАРНЫЙ,

 

 

 

 

 

 

 

 

 

 

 

пойдет

 

посложнее, но

что, он железный. А вот у

ДВОИЧНЫЙ - òàê ýòî

 

 

 

 

 

помни -

программер-ко-

нас с тобой от одной за-

называется по латыни (да

 

 

 

 

 

дер - это, прежде всего,

писи глаза съедутся в

и по-английски тоже).

 

 

 

 

 

 

 

 

 

 

чугунная задница.

Понял? Ну, там, бисек-

 

 

 

 

 

ГЛОБАЛЬНЫЕ И ЛО-

кучку. Хочешь, покажу?

суалов вспомни. Их тоже

 

 

 

 

 

7657651265=1100100001101110011

к ДВУМ полам тянет. Те-

 

 

 

 

 

КАЛЬНЫЕ ПЕРЕМЕН-

перь надо врубиться, как

 

 

 

 

 

1110001000001b! Êàê òåáå?

 

 

 

 

 

НЫЕ (КОНСТАНТЫ)

до пяти, например, таким

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Так вот, чтобы избежать

методом посчитать. До-

 

 

 

 

 

То, что мы с тобой нарыли

говоримся так: у компа

 

 

 

 

 

 

 

 

 

 

- переменная и константа,

такого гимора, умные люди

до фига рук, на каждой -

 

 

 

 

 

- áàçà, íî è òóò âñå íå òàê

подумали и решили: а чего

один палец. Загнутый па-

 

 

 

 

 

просто. Чтобы было по-

мы, собственно говоря, па-

лец - 1, разогнутый - 0.

 

 

 

 

 

 

 

 

 

 

нятно,

снова пример: то,

римся? Давай придумаем

Лады? Поехали... Заги-

 

 

 

 

 

что ты пиво пьешь с клас-

баем один комповый па-

 

 

 

 

 

 

 

 

 

 

сными перцами по выход-

еще какую-нибудь СИСТЕМУ

лец, получаем 1b (буква

 

 

 

 

 

 

 

 

 

 

ным в клубе, оно, конеч-

СЧИСЛЕНИЯ, чтобы и компу

b в конце нам говорит,

 

 

 

 

 

ное, константа... Но, кро-

удобно было, и нам.

 

что это binary-система

 

 

 

 

 

ме тебя и твоей компании,

 

счета). А теперь вспомни,

 

 

 

 

 

это знают максимум чело-

 

 

 

пельмень, у компа еще

 

 

 

 

 

век десять, так? А вот то,

 

 

 

руки есть. И на второй

 

 

 

 

 

 

 

 

 

 

 

 

 

что Билл Гей(тс-с-с!) и его Форточки - мас-

Один, два... И так, пока пальцы не кончатся.

руке тот палец не загнут (01b). А нам нужно

 

 

 

 

 

 

 

 

 

 

тдай, - все говорят, и с завидным постоян-

Пальцев десять - двенадцать. Подружек или

посчитать двойку, правильно? Так вот, на той

 

 

 

 

 

ством. Тоже константа получается. Так как од-

бутылок пива вечером может быть и больше.

руке, где палец не загнут, загибаем, а на той,

 

 

 

 

 

но от другого отличать? Почесали репу умные

Конечно, еще ноги есть. И йенг... Но, согла-

на которой был загнут - разгибаем. Во, выра-

 

 

 

 

 

дяди и ввели термин -

ГЛОБАЛЬНАЯ КОН-

сись, тяжеловато. А компу как считать, когда

зился... Что получилось? Точно, 10b. В двоич-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СТАНТА (ПЕРЕМЕННАЯ) и ЛОКАЛЬНАЯ. Попро-

он всего до одного считать умеет? Сам

ной системе счета 10 - это то же самое, что 2

 

 

 

 

 

буй догадаться, где тут какая константа. Ну,

знаешь, у него все - либо 1, либо 0. Засада,

в ДЕСЯТИЧНОЙ (DECIMAL, не путать с децибе-

 

 

 

 

 

ты рубишь, однозначно :))!!! Значит, догово-

вроде. Но не тут-то было! Ты можешь, напри-

лами :)). Считаем дальше. Три. У нас есть две

 

 

 

 

 

рились: локальное - это

то, что знаешь ты,

мер, насчитав десяток (на пальцах), взять и

руки, на руке “старшей” загнут палец, на

 

 

 

 

 

 

 

 

 

 

здесь и сейчас, а глобальное - помасштабнее

попросить дружбана на своей ладони палец

младшей - нет. Так и загнем его, чего он тор-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

будет, все знают, никто не спорит.

загнуть. Теперь чего получилось? Так бы вы

чит. А на “старшей” руке палец разгибать не

 

 

 

 

 

 

 

 

 

 

 

вдвоем всего до 22 посчитали (десять на ру-

будем, а то опять 1 получится. В результате

 

 

 

 

 

С переменными и константами мы вроде ра-

ках, десять на ногах, плюс два йенга :) ), а то -

этой хитрой операции у нас получилось 11b.

 

 

 

 

 

зобрались, так?

 

до 110, только на одних руках. Во какая штука.

Это и есть 3 в бинарной системе. Только вот

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

0006

ТЕОРИЯ

 

 

>СПЕЦВЫПУСК #4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

руки у нас снова кончились. Фигня, сейчас

ной системе - это 2 разряда, 1-десятки и 5-

бя 344.07, да? Так уж деньги устроены - руб-

 

 

еще одну привлечем к делу. Итак, четыре. Рук

единицы). Тут в ход пошли буквы: 10=A,

ли, в которых по 100 копеек. Поэтому очень

 

у нас три, пальцев тоже. Два загнуты. Разог-

11=B, 12=C,13=D.... 15=F. На самом деле,

удобно записывать их количество в виде деся-

 

 

нем их на фиг. А на новой руке загнем. Полу-

все эти системы счисления - это так, для

тичной дроби (в школе изучали, помнишь?).

 

чилось 100b. Теперь пять. Загибаем самый

удобства.

 

Такое число в терминологии (слово-то какое

 

 

 

 

 

 

правый палец (понятно, почему правый? Ну,

РАЗМЕР - ЭТО ВСЕ-ТАКИ ГЛАВНОЕ

умное!!!) программеров называется ДРОБ-

 

ты же когда после 16-и 17 пишешь, ты же

НЫМ или РЕАЛЬНЫМ (REAL).

 

цифру справа меняешь, так?). Получилось

 

 

À âîò åñëè áû òû

планировал количество

 

 

 

 

 

 

101b. Вот и посчитали до пяти. По-модному,

В отличие от того дела, которое ты так лю-

 

 

 

 

 

 

как настоящие компы. Чувствуешь себя ки-

бишь, где важен не размер, а умение, в прог-

дрынка для вечерины

с друзьями, ты бы при-

 

боргом? :))))))) А теперь прикинь, перец, что

раммировании размер очень даже важен. Раз-

кинул, сколько нужно бутылок (ящиков, ваго-

 

 

такую байду надо проделать, чтобы посчитать

мер чего угодно. Переменных, констант, са-

нов) пЫва. И тут уж 5.3 бутылки быть не мо-

 

до 7657651265? Это ж крыша отъедет, сто пу-

мой программы, отдельных ее частей. “То ес-

жет, ты ж отпитую не потащишь на стол? А бу-

 

дов! У компа-то не отъедет, ему что, он желез-

ть как - размер? Они чего, неодинаковые?” -

дет этих бутылок хоть и нереальное, но ЦЕЛОЕ

 

ный. А вот у нас с тобой от одной записи гла-

спросишь ты. Да, неодинаковые. Ты пробовал

количество. И число, обозначающее это коли-

 

за съедутся

в кучку.

Хочешь, покажу?

в одну штанину засунуть две ноги? Ну и как?

чество, тоже называется ЦЕЛЫМ ЧИСЛОМ

 

7 6 5 7 6 5 1 2 6 5 = 1 1 0 0 1 0 0 0 0 - 1 1 0 1 1 1 0 0 -

Так и в программировании. Помнишь, разго-

(INTEGER).

 

 

 

 

 

 

 

 

 

 

 

111110001000001b! Как тебе? Так вот, чтобы

вор шел про байты и биты? Так вот, допустим,

СТРОКОЙ, ты описал место назначения. То

 

 

избежать такого гимора, умные люди подума-

ты определил, что в твоей программе будет 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ëè è

решили: а чего

мы, собственно говоря,

переменных. Одна - сколько у тебя денег, вто-

есть СТРОКА (STRING) - это некоторое коли-

 

 

паримся? Давай придумаем еще какую-нибудь

рая - куда ты ломанешься с подружкой вече-

чество информации, которую можно записать

 

СИСТЕМУ СЧИСЛЕНИЯ, чтобы и компу удобно

ром, и третья - адреса подружек, которых

буквами и цифрами. А вот буквы и цифры, в

 

 

 

 

 

 

было, и нам. А то от этих единиц и ноликов

можно пригласить именно сегодня. Правда,

свою очередь,

называются СИМВОЛАМИ

 

 

 

 

точно опыреть

можно. Наша

 

 

 

 

(CHAR). Но символами они

 

родная десятичная система не

Массив, сам понимаешь,

являются только в преде-

 

 

покатила. Так уж вышло, что ин-

может состоять из чего

лах строки. Гружено? Не

 

 

 

 

 

 

формация

в компе меряется

дрейфь, сейчас растолкую.

 

БИТАМИ (BInary digiT, двоичное

угодно (цифирок, буковок,

Например, “ВАСЯ ПУПКИН

 

 

 

 

число, англ.), ты уже знаешь,

битиков). А может и из

- 1-й парень на деревне!” -

 

 

почему. Биты удобно группиро-

строка, состоящая из сим-

 

файлов. Это не принци-

 

вать в БАЙТЫ, по 8 штук. То ес-

волов. Причем символы -

 

 

 

 

 

 

ть байт - это 8 бит. Почему не

пиально. Важно только,

ýòî âñå, è “Â”, è “À”, è “Ñ”,

 

по 10? Это вопрос философ-

чтобы все ячейки масси-

в том числе и цифра 1.

 

 

 

 

 

 

ский. Микросхемки там всякие

Только настоящий прог-

 

так сделали. Процессор первый

ва содержали данные

раммер напишет - символ

 

 

 

 

 

 

(более-менее) писюковый был

одного типа.

 

 

“1”. Так уж принято, чтобы

 

ИМЕННО

ВОСЬМИРАЗРЯД-

 

 

 

 

отличать цифру 1 от сим-

 

НЫЙ. А раз битов 8, то и систе-

 

 

 

 

вола “1”. То есть строка -

 

му придумали соответствующую...

 

эти переменные не совсем одного ТИПА? Не,

это набор символов. Такие наборы называют-

 

 

 

 

 

 

 

 

 

 

 

 

ну если ты совсем чердаку войну объявил,

ся МАССИВАМИ (ARRAY). То есть первый сим-

 

...ВОСЬМЕРИЧНУЮ

 

 

(по-буржуйски,

можно, конечно, все к одному типу привести:

вол нашей строки “В”, второй “А” и так далее.

 

OCTAL, OCT). Ну, на каждой руке по 7 паль-

денег у меня ТРИСТА СОРОК ЧЕТЫРЕ РУБЛЯ

Очень удобно, если надо узнать, какой там у

 

цев (почему не 8? Ну, подумай, когда ничего

СЕМЬ КОПЕЕК, пойдешь ты в ОРДЕНА ЛЕНИ-

нам символ находится на позиции 145 в 10

 

 

не загнуто, это ж тоже цифра. Ноль). Но сис-

НА, ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕ-

строке восьмой страницы первого тома “Вой-

 

тема сия гиморна и человеческому уму нерас-

НИ и т.д. и т.п. БОЛЬШОЙ ТЕАТР... Адреса

ны и Мира”. Кстати, тут “Война и мир” -

 

òîæå

 

 

 

 

 

 

 

 

 

 

 

тяжима. И потом прогресс не стоит на месте,

подружек я могу угадать: это где-то в районе

массив. Но уже МНОГОМЕРНЫЙ (N-DIMEN-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

процессоров понаделали 16-битных (а также

Кащенко. Зато все типы у тебя одинаковые -

TIONAL), в нескольких измерениях. Почему и

 

 

 

32-битных и более). Поэтому приDOOMали

СТРОКА, все у тебя с помощью текстовых

что это значит, ты как это сформулировал?

-

 

 

 

 

 

 

 

еще одну систему...

 

 

 

 

 

 

 

строчек записано. А ведь можно и так все опи-

спросишь ты. Объясняю: первый том (измере-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сать: денег - 344.07, пойдем в ОРДЕНА ЛЕНИ-

ние номер раз), восьмая страница (измерение

 

 

 

...ШЕСТНАДЦАТИРИЧНУЮ (по-буржуйски

номер два), десятая строка (третье), символ

 

 

 

 

НА,...(тут никуда не денешься, строка), адреса

 

 

 

 

- HEXDECIMAL, HEX). Понял, откуда взялись

подружек - записная книжка ¹1, страницы с 5

номер 145 (четвертое). И нашел там, напри-

 

 

 

 

 

 

всякие названия типа HEXEDIT и прочее? Там

по 25. Чувствуешь преимущество? Все стало

мер, букву (символ) “А”. Этот

символ

íàçû-

 

 

 

 

 

 

 

на каждой руке по 15 пальцев, ты прикинь! А

просто и понятно. Логично. А теперь разберем

вается ЭЛЕМЕНТОМ МАССИВА. Массив, сам

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

записывать как? Ну, со всякими там бинарны-

это дело по пунктам:

понимаешь, может состоять из чего угодно

 

ми и восьмеричными понятно, а тут? Нет же

 

 

(цифирок, буковок, битиков). А может и из

 

 

 

 

 

 

такой цифры, чтоб в одном РАЗРЯДЕ 15, нап-

ДРОБНЫМ ЧИСЛОМ ты описал количество

файлов. Это не принципиально. Важно только,

 

ример, означала (заметь, число 15 в десятич-

денег. Что это значит? Смотри: вот денег у те-

чтобы все ячейки массива содержали данные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ТЕОРИЯ

 

 

 

>СПЕЦВЫПУСК #4

0007

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

одного типа.

 

 

 

конечно, теряем 1 бит в

СТАРШЕМ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РАЗРЯДЕ (HIGH), но получаем знак,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ТИПЫ ДАННЫХ (TYPE) - ýòî

 

 

 

то есть наше число становится ЗНА-

 

 

 

СТРОКА, ЦЕЛОЕ ЧИСЛО, ДРОБНОЕ

 

 

 

КОВЫМ. Метод номер два: берем и

 

 

 

ЧИСЛО, БИТ, БАЙТ, СИМВОЛ, МАС-

 

 

 

договариваемся,

÷òî,

например,

 

 

 

 

 

 

 

СИВ, ФА-ЙЛ и еще целая туева хуча

 

 

 

первый байт слова содержит поло-

 

 

 

 

 

 

 

разных типов, которые применяют-

 

 

 

жительные числа при том условии,

 

 

 

 

 

 

 

ся реже. Ты можешь и сам свои ти-

 

 

 

если другой байт равен 0, а второй

 

 

 

 

 

 

 

пы данных придумывать - напри-

 

 

 

байт - отрицательное. Сложно? Пра-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мер, тип данных “ТЕТКА”.

 

 

 

вильно, сложно. Поэтому второй

 

 

 

 

 

 

 

 

 

 

 

 

метод почти нигде не применяется.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СТРУКТУРА ДАННЫХ - ýòî âñå

 

 

 

Чем дальше в лес, тем толще парти-

 

вместе. Вот твои планы на вечер

 

 

 

заны. А если число не целое?

Ñàì

 

 

 

 

 

 

 

(ночь, утро...) - это и есть структу-

 

 

 

подумай, как компу, который только

 

 

 

 

 

 

 

ра данных, просек? И эта структура

 

 

 

и знает, что 0 и 1, втолковать, что

 

 

 

состоит из данных разных типов.

 

 

 

вот это - не целое число, а офиги-

 

 

 

Этих самых типов, как ты уже по-

 

 

 

тельная дробь? И тут пытливые умы

 

 

 

 

 

 

 

нял, вагон и маленькая тележка.

 

 

 

нашли метод. Они поделили это са-

 

 

 

 

 

 

 

 

 

 

 

 

Комп в одном массиве переменные

 

 

 

мое число на две части. Одна - до

 

 

 

 

 

 

 

разных типов хранить не дает. Да и выяснить,

 

 

 

запятой, вторая - после. Первое число обоз-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

что больше, строка “ВАСЯ ПУПКИН” или число

 

 

 

вали ЦЕЛОЙ ЧАСТЬЮ, а второе - МАНТИССОЙ

 

 

 

 

 

 

 

132, не может тоже (я тоже не могу :) ). Резон-

 

 

 

(имечко будь здоров...). И стали его хранить в

 

 

 

 

 

 

 

íûé

вопрос - почему? Все просто. Помнишь

 

 

 

таком виде в памяти. А чтобы мало не каза-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ïðî

две ноги в одной штанине? Так вот, каж-

 

 

 

лось (мало ли, может ты полет на Марс счи-

 

 

 

 

 

 

 

äûé

тип данных занимает разное количество

 

 

 

тать собрался), дробные числа разделили на 2

 

 

 

 

 

 

 

места в ПАМЯТИ. Ну, ты когда из дома выхо-

 

 

 

òèïà:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дил, ты ж знал, куда идешь и зачем? Во-во, ты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

помнил это дело, то есть держал в ОПЕРАТИВ-

 

 

 

ОДИНАРНОЙ (SINGLE)

è

ДВОЙНОЙ

 

 

 

 

 

 

 

НОЙ ПАМЯТИ (RAM). Оперативная она потому,

 

 

 

(DOUBLE) ТОЧНОСТИ. Они занимают 4 бай-

 

 

 

 

 

 

 

что ты с ней сейчас работаешь. А завтра все

 

 

 

та и 8 байт соответственно. Двойная точность

 

 

 

 

 

 

 

забудешь на фиг. А вот записняк твой с теле-

 

 

 

- это когда на Марс собираешься. Там на ноль

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

фонами - это уже ПОСТОЯНННАЯ ПАМЯТЬ

 

 

 

целых ни фига десятых ошибся и вместо Мар-

 

 

 

 

 

 

 

(ROM). Пока ты его не посеял, он всегда с то-

 

 

 

са прилетел на Юпитер, и хорошо, если вооб-

 

 

 

 

 

 

 

áîé.

 

 

 

ще прилетел.

 

 

 

 

 

 

 

 

 

 

 

РАЗМЕРЫ

 

 

 

РАЗМЕР СТРОКИ. Но мы же, в конце кон-

 

 

 

 

 

 

 

 

 

 

 

 

цов, не только числа в компе храним. А вот хо-

 

 

 

 

 

 

 

Так вот о размерах. Например, бит - он и за-

 

 

 

чу я в качестве переменной в своей проге ис-

 

 

 

 

 

 

 

нимает бит памяти. А вот число 200 в бит уже

 

 

 

пользовать цитату Гоги Хакеридзе! С числами

 

 

 

 

 

 

 

не запихнешь. Приходится выделять памяти

 

 

 

как-то не вяжется. Ну, есть варианты, конеч-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

побольше. Помнишь, мы договорились делить

 

 

 

но. Например, 3.14здец. А цитата может быть

 

 

 

 

 

 

 

информацию на байты (8 бит)? Прикинем...

 

 

 

ого-го! Вот такую цитату нам приходится за-

 

 

 

 

 

 

 

11111111b - это в десятичной системе счис-

 

 

 

писывать строкой. То есть строка должна быть

 

 

 

 

 

 

 

ления 255. Больше, чем число 200, которое

 

 

 

не меньше того самого “ого-го”. Раньше дума-

 

 

 

 

 

 

 

нам надо запомнить. Значит, влезет! Смело

 

 

 

ли, что ничего умнее 255 символов сказать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выделяем под это число 1 байт и радуемся

 

 

 

нельзя. Поэтому и строка была ограничена

 

 

 

 

 

 

 

жизни. А если нам надо записать 300? В байт

 

 

 

255 символами. А потом выяснилось, что кое-

 

 

 

 

 

 

 

уже не лезет... Надо выделять побольше. Два

 

 

 

кто мыслит помасштабнее... Так что сейчас в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

байта. В два байта у нас поместится аж

 

 

 

языках программирования размер строк не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1111111111111111b - 65535!!! Круто, да?

+-

 

 

ограничивается.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Такое число, состоящее из 2 байт, принято на-

 

 

А РАЗМЕР МАССИВА по определению

 

 

 

 

 

зывать СЛОВОМ (WORD). А ведь бывают чис-

 

 

 

 

 

 

 

 

ла и побольше... Тут все снова просто - увели-

Теперь такая подлянка - а если число

отрица-

произвольный. Если в нем 100 байт, то и раз-

 

 

 

 

 

 

 

 

 

 

чиваем размер числа в байтах в 2 раза, полу-

тельное? Чего делать? Метод номер раз: бе-

мер его 100 байт, а если 100 строк - то, сам

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чаем 4 байта, или ДВОЙНОЕ СЛОВО (DOUBLE

рем один бит числа (первый слева) и догова-

понимаешь...

 

 

 

 

 

 

 

 

 

 

 

WORD). И уж сюда можно затолкать!!! Не, не

риваемся, что если он равен 1, то это число -

 

 

 

 

 

 

 

 

 

 

 

 

то, что ты подумал. Просто число - правда, аж

положительное, больше 0, а если этот бит ра-

Теперь понятно, почему строку к байту при-

 

 

 

 

 

äî 4294967295.

вен 0, то число отрицательное. На этом мы,

равнивать не получится? :))))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

0008

ТЕОРИЯ

 

 

 

>СПЕЦВЫПУСК #4

 

 

 

 

Var A,B,C,D: Integer; (ОБЪЯВЛЕНИЕ перемен-

 

 

 

 

ных типа ЦЕЛОЕ и их ИМЕН)

 

 

 

 

Begin (тут начинается то, что будет делать

 

 

 

 

программа)

 

 

 

 

 

 

.................................................................

 

 

 

 

Ну, здесь находится, естественно, крутой код

 

 

 

 

крутейшей проги, которая ломает Инет, но это

 

 

 

 

неважно.

 

 

 

 

 

 

................................................................

 

 

 

 

End (а тут, взломав Инет, прога закругляется).

 

 

 

 

Все просто и логично как лозунг на заводе!

 

 

 

 

ПОВТОРИ, ЧТО ТЫ СКАЗАЛ!!!

 

 

 

 

Решаем нашу задачу дальше. Для решения

 

 

 

 

уравнения нам надо определиться, что мы

 

 

 

 

знаем и что хотим узнать. А знаем мы, по ус-

 

 

 

 

ловию, A,B и C. Найти нужно D. Так что ПРИС-

 

 

 

 

ÂÎÈÌ

ЗНАЧЕНИЯ

ПЕРЕМЕННЫМ. Пишем

 

 

 

 

приблизительно следующее: A=4, B=3, C=5.

 

 

 

 

Теперь составим уравнение, как в третьем

 

 

 

 

классе: D=(A+B)*C. Как машина прочитает это

 

 

 

 

уравнение: “Присвоить переменной D значе-

 

 

 

 

ние, получающееся при решении уравнения

 

 

 

 

(A+B)*C”. Все. Кульнохацкерская прога гото-

 

 

 

 

ва! Вот так она запишется на языке PASCAL:

 

 

 

 

Program MyCoolProgram;(это строка, с кото-

 

 

 

 

рой прога начинается)

 

 

 

 

Var A,B,C,D: Integer; (объявляем перемен-

 

 

 

 

íûå...)

 

 

 

 

 

 

 

Begin

 

(начинаем исполнение кода)

 

 

 

 

A=4;

 

(присваиваем значение пере-

 

 

 

 

менной А)

 

 

 

 

 

 

B=3;

 

(присваиваем значение пере-

 

 

 

 

менной В)

 

 

 

 

 

 

C=5;

 

(присваиваем значение пере-

 

 

 

 

менной С)

 

 

 

 

 

 

D:=(A+B)*C;

 

(А значение переменной D

ЧТО ТЕБЕ В ИМЕНИ МОЕМ...

 

будет равняться сумме А+В, умноженной на

римся, что все числа у нас - целые, так проще.

Ñ)

 

 

 

 

 

 

Значит, в программе напишем что-то типа: “А

Writeln (‘Получилось аж ‘, D) (эта строка выве-

Мы тут с тобой развели здоровенный ля-ля

ОБЪЯВИ-ка ты нам 4 переменные типа ЦЕ-

дет значение переменной D на экран)

насчет типов, переменных, массивов, кон-

ЛЫЕ ЧИСЛА”. А программа нам: “Да не воп-

End.

 

(программа кончается)

стант и все такое. Но! Это все только начало,

рос, только как их друг от друга отличать при-

ЦИКЛЫ

 

 

самое интересное впереди. Как ты думаешь,

кажете?”. А мы ей: “Тундра ты бескрайняя, мы

 

 

если тебе надо в твоей проге решить уравне-

им сейчас ИМЕНА дадим. Первую мы назовем

 

 

 

 

ние (A+B)*C=D, чего делать будем? Хорошо,

A, вторую - B...”. И чего же у нас вышло? По-

Вот ты и сочинил свою первую прогу. Все ко-

если ты знаешь, что A=1, B=5, C=7. D посчи-

лучились у нас 4 переменные одного типа ЦЕ-

деры начинали именно так, поверь мне. С ко-

тать - нет проблем. А если эти числа полу-

ЛОЕ с разными именами (A,B,C и D). Теперь с

мовским разъемом пониже спины никто не

чаются после решения других восьмиэтажных

этими переменными программа сможет тво-

родился. Так, патетику в сторону, полетели

уравнений? И получаются они 10 раз, и тебе

рить все что угодно! Вот как это будет выгля-

дальше. Допустим, надо посчитать всю это

надо эту самую D посчитать те самые десять

деть на ЯЗЫКЕ ПРОГРАММИРОВАНИЯ PAS-

бодягу 10 раз. Да с разными значениями

раз? Подойдем к решению задачи творчески:

CAL:

A,B,C. Как? Десять раз переписать? С ума

есть числа A и B, надо их сложить, потом ум-

 

сойдешь. И тут тебе поможет классная вещь -

ножить на C и записать ответ в переменную D.

Program MyCoolProgram; (программа начи-

ЦИКЛ. Цикл - это задание исполнителю повто-

Äëÿ

начала определимся с

типами. Догово-

нается тут!)

рить многократно одну или несколько указан-