Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование для начинающих Выпуск 16


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Программирование для начинающих

Выпуск 10h

16 APR 2001

 
 
 
Ведущий рассылки: Вячеслав Мацнев
e-mail: stac@stacmv.net
Сверху дул квадратный ветер, и ничего не предвещало завтрака....

В этом выпуске читайте:

Здравствуйте, друзья!

Предлагаю вашему вниманию 10-й выпуск рассылки "Программирование для начинающих". Вообще-то он 16-й. Ну, а если честно, то 20-й. Впрочем, какая разница?

Приступим, пожалуй, к занятиям.

ОТСЕБЯТИНА

"Будильник прозвенел непривычно рано, в 1000 минут двести тридцать седьмого. Повернувшись на черный бок, я пытался вспомнить, для чего мне понадобилось так рано вставать в выходной.

Выходной, выходной... Выходной? Выходной! Мамки-папки, мне же сегодня заново выходить на работу!

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

Крепко одевшись, я выскочил из квартиры и, как закрученный, побежал вперед, перепрыгивая аж по полступеньки.

Солнце еще не взошло, поэтому было очень светло и тепло. Я перешел на белую сторону улицы и направился к офису. Сверху дул квадратный ветер, и ничего не предвещало завтрака.

Уже недалеко от офиса улицу перпендикулярно, под углом 120 градусов, пересекал Великий проспект, по которому шагали пионеры. "Затопчут или не затопчут?",- думал я, уверенно переходя им дорогу.

Затоптали."

Не переживайте, герой этого рассказа остался жив. Правда, он все же опоздал на работу и несколько раз падал с крыши, пытаясь доказать начальнику, что он не носит синтетических носков.

Я уверен, что многие или даже большинство из вас не совсем поняли, что это за бред написан выше. Также многие не понимают, как шестнадцатый выпуск рассылки может быть десятым, как три может равняться одиннадцати и т.д.

А на самом деле все, как обычно, просто: вы за свою жизнь привыкли к целому ряду условностей. Вы считаете, что правая рука это та, которая справа, что днем светло, а ночью темно, что небо синее, а снег белый, что солнце всходит на востоке, а садится на западе, что 2+2=4, что 100 градусов это температура кипения воды, а 90 градусов это прямой угол.

И вы во все это искренне верите. Вас этому учили с детства, с пеленок. В школе вам десять лет втирали (а кому-то и сейчас втирают), что если дискриминант квадратного уравнения меньше нуля, то уравнение не имеет корней, что в алфавите 33 буквы, что параллельные прямые не пересекаются, а параллельных миров вообще не существует.

Не считайте меня психом, пожалуйста (даже если я, действительно, псих). Я вовсе не хочу сказать, что все, чему вас учили родители и учителя это бред. Нет, это не бред, это условности.

Каждый человек уникален, и каждый по-своему ощущает окружающий его мир. Но людей много и им приходится часто встречаться и взаимодействовать между собой. Уникальность мироощущения каждого человека вызывает некоторые трудности, осложняя это взаимодействие.

Поэтому еще на заре эпохи человечества, люди (и не только люди) пришли к необходимости как-то унифицировать средства межличностных коммуникаций (взаимодействия). Обычно считают, что люди взаимодействуют по трем каналам: визуальному (мы воспринимаем информацию посредством зрения), аудиальному (посредством слуха), кинестетическому (посредством кучи рецепторов (сенсоров, датчиков), разбросанных по всему телу).

Кстати, довольно трудно определить какой из каналов был первым использован. Пещерные человеки одинаково успешно корчили друг другу рожи (визуальный канал), рычали друг на друга (аудиальный) и били морду (кинестетический) и, таким образом, обменивались информацией.

В те далекие времена было относительно мало поводов для общения. В основном поводами служили еда и особи противоположного пола.

Пример диалога того времени:

Человек ест, второй тоже хочет есть. Если второй не очень уверен в себе, то он начинает рычать на первого (мол, дай пожрать, парень). Первый может порычать что-нибудь в ответ ("отвали, гад"), испугаться и отдать еду, либо дать второму в лицо (перейти, так сказать, на повышенный тон). С другой стороны, второй человек может оказаться качком и сразу сломать первому пару-тройку костей, тем самым, сократить время разговора и потратить его на еду.

Таким образом, древние люди были очень общительными. Что иногда приводило к сокращению населения. Со временем умные люди изобрели орудие труда - палку-копалку. Другие умные люди догадались использовать сие орудие труда для общения. Было установлено, что если один из концов палки немного заточить, то тебя станут лучше понимать.

Этот способ общения существует и в наши дни, развиваясь и совершенствуясь.

Но еще древними было замечено, что излишнее уменьшение популяции, происходящее в результате общения негативно сказывается на уровне жизни. К тому же стало появляться все больше и больше поводов для общения. Например, сидят мужчина и женщина и едят. Подходит второй мужчина и рычит. Попробуй тут разберись, чего он хочет: еду, женщину, палку-копалку или шкуру свежеубитого тигра.

Средства общения стали развиваться. Теперь уже разное рычание означало разные вещи, люди стали указывать рукой на объекты обсуждения, да и кинестетические воздействия стали многообразнее. Если раньше мужчина выражал женщине свою симпатию дубиной по голове, то теперь мог и погладить.

Одновременно с развитием средств общения стали появляться и условности. Например, одна из условностей: человек показывает на палку рукой, не касаясь(!) ее. Другой человек (осведомленный об этой условности) посмотрит на палку. Но если человек покажет на палку собаке (или человеку, не знающему об этой условности), она посмотрит на его руку.

С развитием человечества средства общения, обрастали новыми условностями. Причем у разным племен эти условности были различными. Например, у одних кивок означал утвердительный ответ, у других - отрицательный.

Постепенно стали появляться и развиваться языки, которые тоже представляют из себя набор условностей. Например, племена жившие на территории современной Россия договорились называть ту белую жидкость, которой коровы кормят своих детей молоком. Ребята, которые жили там, где сейчас Англия, назвали ту же жидкость milk (милк), а французы назвали ее lait(лэ). Думаете милк отличается чем-нибудь от молока? Угу, также как кау от коровы, а бул от быка.

Такими условностями полна наша с вами жизнь. Я имею ввиду не только языки. Почему, вода, например, кипит при 100 градусах Цельсия? Да потому что Цельсий сказал, что температура при которой вода будет кипеть пусть равняется 100 градусам, а при которой она замерзнет будет нулем. Все. А Фаренгейт сказал, что 100 градусов это температура тела его жены. Американцы,между прочим, поверили.

Вот захочу и придумаю свою температурную шкалу. Захочу и еще что-нибудь придумаю. Все, о чем мы с вами знаем, кем-то зачем-то придумано. Обычно цели введения всяких условностей самые, что ни на есть, благие, а сами условности значительно облегчают нам жизнь.

Вот, если я попрошу вас поднять правую руку, вы все поднимите одну и ту же руку (ту, что справа), и мне не придется каждому индивидуально показывать, какую руку нужно поднять. Удобно. Практично. Одним словом, хорошо.

Но есть одна проблема. Порой люди не понимают, что условности это всего лишь условности. Отсюда возникают трудности при изучении иностранных языков, каких-то научных дисциплин, программирования, в конце концов.

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

Поясню на примере изучения иностранных языков. От чего избавляемся (временно)? От своего родного языка. На что подменяем? На иностранный язык.

"Я беру яблоко". В этом простом предложении три слова. "Я" - это я, вполне определенный субъект, имеющий паспорт и полис медицинского страхования. "Беру" - это описание некоторого, хорошо знакомого вам процесса. "Яблоко" - это тоже совершенно определенный продукт питания.

С другой стороны, брать что-нибудь можно десятком разных способ, да и яблоки бывают разные. Представьте себе яблоко. Все вы представили себе разные яблоки, кто-то большое и красное, кто-то маленькое, кто-то зеленое. Кто-то представил себе яблоко на рыночном лотке. Те, кто знают, что яблоки растут на деревьях, наверное, представили яблоню.

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

Т.е. в окружающем нас мире есть объекты и явления, а на ряду с ними существуют отображения этих объектов и явлений. Причем может быть как несколько объектов имеющих одно отображение (куча реальных яблок и слово "яблоко"), так и один объект, имеющий множество отображений (яблоко и слова "яблоко", "антоновка","apple", "mcintosh").

Вот это вы должны понять.

ТЕОРИЯ

Числа, с которыми мы сталкиваемся в жизни существуют в двух ипостасях: в виде реального числа, т.е. значения, и в виде его отображения. Это все и просто и сложно одновременно.

Есть два яблока, их два. И есть отображения двух яблок. Либо это картина с яблоками, либо это слово "два", произнесенное или написанное на каком-нибудь языке, либо что-нибудь еще, в том числе и сами яблоки.

Способ отображения мы выбираем сами, потому что это всего лишь условность. И выбираем мы его, конечно же, руководствуясь какими-то соображениями. Попробую объяснить на пальцах.

Вот пальцы. Их у нас десять (на руках). Поэтому в качестве отображения для малых чисел мы можем выбрать сами пальцы. Надо тебе отобразить "два" - покажи два пальца.

Если надо показать "20", то нужны 20 пальцев. А где их взять? Можно показать пальцы на руках и ногах, но это не удобно, особенно, если учесть, что ноги обычно во что-нибудь обуты. Поэтому можно взять 20 палочек (они похожи на пальцы). Кстати, если палочки выложить на земле, то руки будут свободны и ими можно будет что-нибудь делать.

Палочки это цифры, т.е. каждая палочка это одна цифра - "единица". Сколько палочек, столько и баранов. мешков с зерном и т.п. Получаем единичную систему счисления (т.е. счета).

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

Но эта, казалось бы перспективная идея развивалась не очень активно, даже после "изобретения" папируса и глиняных табличек. Дело в том, что реальных объектов, которых нужно было считать, становилось все больше и больше. Каким же должна быть глиняная табличка, чтобы на ней написать число 2001? Это ж рука устанет столько палочек рисовать.

Нужно было срочно изобретать новые системы счисления. И они были изобретены. Причем разные там греки и вавилоняне изобретали свои собственные системы счисления не совместимые между собой. Я не буду об этом сейчас рассказывать подробно, если вдруг появится интерес, почитайте соответствующую литературу.

Разные народы иногда торговали между собой. Это поставило ребром проблему совместимости систем счисления. Которая была успешно решена, хотя и не сразу.

Сейчас мы все пользуемся десятичной системой счисления, которая в результате конкурентной борьбы с другими системами вышла на первый план.

Любой первоклассник легко оперирует числами, записанными в этой системе, а про другие системы даже не знает. Ничего не напоминает?

Правильно, очень похоже на успех Windows. Большинство из нас используют десятичную систему счисления и работают в Windows. Большинство, но не все. Есть много (очень много) операционных систем, во многом лучших Windows, но пользователь (как и первоклассник) про них даже не знает. Существует также и много систем счисления.

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

Например, в числе 12, цифра 1 означает десять, а в числе 123 она же означает сто.

Система счисления - способ записи (отображения) чисел.

Конечно же, система счисления это условность.

Символы, с помощью которых осуществляется запись, называются цифрами. Они, в принципе, могут быть любыми. Цифра имеет значение и отображение.

Трудность в понимании этого заключается в том, нельзя показать значения цифры или числа, не используя какое-нибудь его отображение. Поэтому многие люди и не видят разницы между значением числа и его отображением. Но она есть и очень большая. Правда я не смогу это объяснить, по причине того, что все написанное мной это всего лишь отображение моих мыслей. Объяснить это также трудно, как объяснить маленькому ребенку, что земля круглая и вращается вокруг солнца с огромной скоростью. Здесь надо обладать неплохим воображением.

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

=================== Сделай паузу ===================

Так случилось, что в мире цифровой электроники получила распространение двоичная система счисления. Это связано с конструктивными и технологическими особенностями этой самой электроники.

Двоичная система имеет всего две цифры. И ее основание равно двум.

Основание позиционной системы счисления это число используемых в ней цифр.

В принципе, цифры могут быть любыми, но обычно для систем счисления с основанием меньшим или равным десяти берутся арабские цифры (те, которые мы с вами постоянно используем).

Для двоичной системы используются первые две цифры: 0 и 1. Для пятеричной - первые пять: 0, 1, 2, 3, 4.

Если основание системы больше 10, то в качестве цифр также используются латинские буквы. Например, в двенадцатеричной системе используются цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B; в шестнадцатеричной - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Т.е. значение цифры A - 10, а цифры E - 14.

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

Как я уже говорил, компьютер работает с двоичной системой счисления, для кого же тогда нужна шестнадцатеричная? Для нас с вами, людей. Дело в том, что большие числа при записи в двоичной системе занимают неприлично много места на бумаге или экране и их очень трудно запоминать.

Так, число 2725586065 в двоичной системе запишется так: 10100010011101010010010010010001, а в шестнадцатеричной: A2752491. Очень удобно.

К тому же 16 это 2^4 (два в четвертой степени). Это в вопросу о том, почему используется шестнадцатеричная система, а не, например, двадцатисемиричная.

Кстати, по моим данным, шестнадцатеричная система счисления стала популярна с появлением IBM PC, отвоевав первое место у восьмеричной. Это наводит на мысль, что выбор доминирующей системы связан с разрядностью процессора. Т.е. раньше были модными восьмибитные процессоры, потом шестнадцатибитные.

Шестнадцать бит - это два байта или одно, так называемое машинное слово (word). Шестнадцать бит достаточно, чтобы записать числа от 0 до 2^16=65536 (кстати, вот почему 65536 цветовых оттенков называются 16-ибитным цветом). И любое число в этом диапазоне потребует максимум две цифры. При этом получается, что каждый байт (целых 8 бит) будет записан всего одной цифрой. Почему это так важно? Да потому что мы в основном используем восьмибитные кодировки символов, в которых, например, каждая буква, как раз и представляет собой один байт.

Чем дальше вы будете забираться в дебри внутреннего устройства и работы компьютера, чем чаще вы будете встречать числа, кратные 16 (такие, например, как объем обычной "ДОСовской" памяти).

А сейчас давайте, хотя бы, научимся работать с шестнадцатеричными числами.

Итак, у нас есть 16 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Счет производится также, как и десятичной системе.

01234567891011121314151617181920212223242526
0123456789ABCDEF101112131415161718191A
272829303132333435363738394041424344454647484950515253
1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435

и так далее.

Обратите внимание, что числа, оканчивающиеся нулем в шестнадцатеричной системе, кратны 16. Это справедливо для любой системы счисления - числа оканчивающиеся нулем кратны основанию системы счисления.

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

Для того, чтобы перевести число из любой p-ичной системы счисления в десятичную, надо каждую цифру умножить на основание системы, возведенное в степень, соответствующую номеру разряда цифры.

Напомню, что разряды нумеруются с нуля справа налево.

Пример,

1F = 1*16^1+15*16^0 = 16+15 = 31. Главное считать в той системе, в которую вы переводите число (F в десятичной запишется как 15).

Меня часто спрашивают, можно ли переводить числа не в десятичную систему, а в какую-нибудь другую, например, из шестнадцатеричной в восьмеричную, миную десятичную.

"Легко", обычно отвечаю я, "надо просто считать в той системе".

Как это выглядит? Примерно так:

1F = 1*20^1+17*20^0 = 20 + 17= 37

В правой части от первого знака равенства все числа восьмеричные. Кстати, чтобы отличать числа одной системы от другой, к ним обычно приписывают суффиксы или что-то типа этого. В разных языках программирования способы записи чисел в разных системах отличаются. Чуть позже я расскажу, как записывать числа в Бейсике, а пока давайте договоримся (введем условность), я после числа буду приписывать латинскую букву, указывающую на систему счисления, отличную от десятичной.

b - двоичная система счисления (binary) o - восьмеричная -//- (octal) h - шестнадцатеричная -//- (hexadecimal)

Т.е. в вышеприведенном примере использованы следующие числа (отображения чисел):

1Fh = 31
20o = 16
17o = 15
37o = 31

Обратный перевод, из десятичной системы в какую-то другую обычно осуществляется путем многократного деления числа на основание систему, в которую ведется перевод, и записи остатков от деления в определенном порядке. Этот способ мы уже рассматривали раньше. Для того, чтобы вы вспомнить его, посмотрите пример:

147=?h

147|16 144 -- 3 9|16 _ 0 -- |\ 9 0 \--- 093 = 93

Стрелка указывает на порядок записи остатков от деления (от последнего к первому)

147=93h

Также хорошо работает и первый метод (который обычно используется для перевода чисел в десятичную систему):

147 = 1h*Ah^2h+4h*Ah^1h+7h*Ah^0h = 64h + 28h + 7h = 93h

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

Это функции HEX$(), OCT$() и BIN$(), причем последней нет в Quick Basic'е. Функции принимают в качестве аргумента число в десятичной системе и возвращают строку (как следует из имен функций), содержащую символьное отображение числа в требуемой системе счисления.

Пример:

PRINT
INPUT "Введите число: ",dec
PRINT dec;" = ";HEX$(dec);"h = ";OCT$(dec);"o"

Можно также использовать в программах шестнадцатеричные числа, записывая их с префиксом &H, например, &H1A, &HFF.

А, вот, зачем их использовать вы должны решить сами. Сейчас, наверное, у вас нет никаких идей на этот счет. Это нормально. Зато, если такие идеи возникнут, вы легко сможете их реализовать.

Пока же можете посмотреть, где сейчас применяется представление данных в шестнадцатеричном виде. Я имею так называемые hex-редакторы или шестнадцатеричные редакторы. Простейшие разновидности таких ректоров встроены в просмотрщики (вьюеры) почти всех менеджеров файлов (таких как, Norton Comander, DOS Navigator, Windows Comander, FAR, Frigate, Servant Salamander и др.) Обычно просмотрщики запускаются по клавише F3, а в шестнадцатеричный режим переходят по F4 (как завещал великий Нортон).

Возьмите и посмотрите какой-нибудь текстовый файл.

HTML

Гипертекст это классная вещь! Однако часто требуется сопроводить текст иллюстрациями. Полагаю, нет необходимости объяснять, зачем нужны картинки на вебстраницах. Вы видели уже много станиц и сами все понимаете.

Моя задача сейчас - объяснить вам, как разместить картинку на своей страничке.

HTML-документ это обычный текстовый файл, поэтому в него мы картинку поместить не сможем, в отличие от того же документа Word.

Но это и не надо, достаточно поместить в HTML-документ ссылку на файл с картинкой, а браузер уже сам загрузит картинку и покажет ее.

Для того чтобы это сделать используется тег IMG. По традиции, он имеет несколько параметров, наиболее важные из которых SRC, ALT, WIDTH и HEIGHT.

Параметр SRC задает ссылку на файл (путь к файлу) с картинкой, т.е. его URL. Отсюда вытекает следующий вывод: можно использовать картинки, физически расположенные на любом сайте Сети.

Правда, обычно создатели сайтов располагают картинки только на своих сайтах, по причине того, что нет гарантии, что картинка на чужом сайте внезапно не исчезнет.

А если такая гарантия есть? Например, чужой сайт это сайт вашего друга. Ну, тогда, знаете ли, можно придумать очень много интересных вещей.

Пример использования тега IMG:

<IMG src=http://www.mysite.ru/images/myphoto.jpg>
<IMG src=myphoto.jpg>

В первом примере указан абсолютный путь к файлу, во втором предполагается, что файл с картинкой myphoto.jpg расположен в том же каталоге, что и загруженный HTML-домент, где встретился этот тег (относительный путь).

Общая рекомендация здесь такая: если картинка физически расположена не на вашем сайте (сюда, кстати, относятся всякие счетчики, баннеры, кнопки партнерских сайтов и т.п), то необходимо указывать абсолютный путь, что очевидно; если же картинка находится на вашем сайте, то старайтесь избегать абсолютных путей, указывайте только относительные. В противном случае, например, при переносе сайта в другое место (на другую хост-машину или на локальный жесткий диск), абсолютные ссылки не будут работать или будут работать не так, как хотелось бы.

Есть два общепринятых способа размещения файлов с картинками. Они помещаются либо в отдельный каталог, типа IMAGES, PICS и т.п. либо в один каталог вместе с другими файлами. Я лично применяю последний способ. Конечно, если валить файлы в один каталог, он будет похож на свалку. Но с другой стороны, путь к любому файлу будет одинаково короток и прост (не перепутаешь), к тому же такой способ хранения файлов развивает воображение, так как приходится придумывать файлам разные имена (с одним именем два файла в каталоге не уживутся).

Картинка появится на страничке в том месте, где стоит тег. IMG это тег уровня текста, поэтому картинка будет расположена в строке как обычное слово, при этом высота строки будет равна высоте картинки, которая, в свою очередь, как и ширина, определяется оригинальными (внутренними) размерами картинки. Т.е. если картинка имеет размер 127x38 пикселей, то она столько места на экране и займет.

Но дизайнер может управлять размерами картинок, для этого предназначены параметры WIDTH и HEIGHT, которые задают ширину и высоту картинки, соответственно.

Устанавливая эти значения вы можете растягивать или сжимать картинку. Кроме того, часто дизайнеры выставляют ширину и высоту равными соответствующим внутренним размерам картинки.

Это служит нескольким целям. Во-первых, во время загрузки страницы, пока картинка еще не загрузилась, вместо нее отображается прямоугольник, который каким-то образом обтекается текстом. При этом, размеры прямоугольника не соответствуют размерам картинки. Когда же картинка будет загружена и показана произойдет, так сказать, переформатирование страницы с учетом новых размеров картинки.

Думаю, вы не раз с этим сталкивались. Во время загрузки картинок текст "прыгает" с одного места на другое. И ничего хорошего в этом нет.

Если заранее указать размер картинки, то такого неприятного эффекта не будет.

Во-вторых, не все пользователи включают показ графики, вместо картинок они видят упоминавшиеся уже прямоугольники. При этом если их размеры не будут соответствовать размерам картинок, то текст "перекосится" и будет выглядеть несколько не так, как было задумано.

Рекомендуется всегда задавать конкретные значения высоты и ширины картинки в теге IMG.

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

Обычно эта надпись представляет собой либо название картинки либо ее описание. Кстати, поисковики ищут картинки именно по этим описаниям.

Пример:

<IMG src=jan.gif alt="Новогодняя елочка" width=200 height=360>

Рекомендуется всегда задавать значение параметра ALT тега IMG.

Если указать только один параметр из WIDTH и HEIGHT, то второй из них увеличится или уменьшится пропорционально первому. Пусть размеры картинки, указанные в предыдущем примере соответствуют оригинальным.

Тогда, для увеличения картинки в два раза достаточно увеличить только один ее размер:

<IMG src=jan.gif alt="Новогодняя елочка" width=400>

Параметр HEIGHT будет автоматически установлен равным 720 пикселей (360*(400/200)). Но это станет заметно только после загрузки картинки, лучше задать оба параметра.

Можно также задавать высоту и ширину в процентах от оригинальных размеров.

Пару слов о сфере применения тега IMG. Наверное, об этом нужно было сказать сразу...

Тег IMG обычно применяется для иллюстрирования текста либо для организации графических гиперссылок.

Что касается первой области применения, мы ее практически уже рассмотрели. Добавлю только, что есть возможность организовать обтекание текстом картинки, как это сделано, например, в Word'е. Для этого нужно использовать параметр ALIGN тега IMG. Вообще-то он используется не только для этого, но просто для выравнивания картинки относительно строки. Позволю себе процитировать учебник по HTML Александра Матросова:

Значения параметра ALIGN тега IMG
TOPВерхняя граница изображения выравнивается по самому высокому элементу текущей строки
TEXTTOPВерхняя граница изображения выравнивается по самому высокому текстовому элементу текущей строки
MIDDLEВыравнивание середины изображения по базовой линии текущей строки
ABSMIDDLEВыравнивание середины изображения посередине текущей строки
BASELINE или BOTTOMВыравнивание нижней границы изображения по нижней границе текущей строки
LEFTИзображение прижимается к левому полю окна. Текст обтекает изображение с правой стороны
RIGHTИзображение прижимается к правому полю окна. Текст обтекает изображение с левой стороны

Поясню непонятные моменты. Первые 5 параметров выравнивают картинку вертикально. Здесь все понятно, только, вот, может вы не понимаете, чем TOP отличается от TEXTTOP. Дело в том, что кроме данной картинки в строке могут быть и другие [картинки], которые могут быть выше самого высокого текстового элемента строки.

Базовая линия это линия, на которой, как бы, стоит элемент, т.е. она фактически совпадает с нижней границей элемента. Кстати, под словом элемент понимается элемент HTML (абзац(P), картинка(IMG), ссылка(A), и т.п.).

Последние два параметра делают картинку "плавающей"(floating) и смещают ее влево или вправо, а текст обтекает ее с противоположной стороны.

Рекомендую всем поэкспериментировать с параметром ALIGN на практике.

Для того чтобы отделить картинку от текста нужно воспользоваться параметрами HSPACE и/или VSPACE. Они определяют соответственно горизонтальый и вертикальный отступ текста от картинки в пикселях.

<IMG src=l.gif alt="L" align=left vspace=15 width=60 height=60>ong time ago...

Этот пример демонстрирует применение тега IMG для создания буквиц (больших декоративных букв в начале текста). В файле l.gif содержится изображение прописной английской L.

Второе применение картинок, как я говорил, это создание гиперссылок. Здесь тег IMG используется совместно с тегом A.

<A href=http://stacmv.nm.ru><IMG src=pfblogo.gif ALT="Программирование для начинающих" width=83 height-60></A>

Как видите все просто. Есть открывающий и закрывающий теги А, определяющие гиперссылку и то, что находится между ними (в данном случае тег IMG) и служащее указателем ссылки.

В качестве указателя можно использовать и несколько картинок одновременно и картинку совместно с текстом. Одним словом, что поместите между тегами <A> и </A>, то и будет указателем ссылки.

Только не делайте указателем весь текст своей страницы - это некрасиво.

Когда вы попробуете сделать указатель ссылки в виде картинки, вы заметите, что вокруг нее появляется синяя рамочка. Она указывает на то, что эта картинка является ссылкой.

Правда, в большинстве случаев дизайнеру не хочется видеть такие рамочки. Поэтому он использует параметр BORDER тега IMG. Вы можете делать также. Просто задайте рамке нулевой размер и дело в шляпе.

<A href=index.html><IMG src=index.gif alt="На главную страницу" border=0></A>

С другой стороны, вам, наоборот, может понадобиться рамочка для лучшего, так сказать, восприятия. Тогда тоже используйте border и задавайте размер рамки в пикселях.

Кажется, все рассказал. Если чего забыл, посмотрите в учебниках и справочниках.

Кроме как с помощью тега IMG, графику можно отображать на фоне различных элементов HTML. Для этого правда нужно использовать CSS1 (Каскадные таблицы стилей. Уровень 1). Это не сложно и очень здорово. Правда, выходит за рамки нашего курса.

ЗАКЛЮЧЕНИЕ

Друзья, лично я не буду против, если кто-нибудь напишет эссе на тему "Компьютерная графика. Ликбез." и расскажет в нем об основных графических форматах, о том, что такое графика вообще. По идее данное эссе должно будет помочь тем товарищам, которые недавно приобрели компьютер и просто пока не знают многих элементарных вещей.

Ну а я с вами не прощаюсь. Встретимся после рекламной паузы :)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

С уважением,
Вячеслав Stac Мацнев mailto:stac@stacmv.net
16.04.01.



http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное