Уроки для начинающих программистов
Выпуск #4
Понедельник, 31 июля 2000 г.
Количество подписчиков - 4890
Ведущий рассылки Эдуард Дмитриев
Здравствуйте, уважаемые подписчики!
Если есть возможность, открывайте этот документ в браузере (или хотя бы разверните письмо на весь экран), там гораздо легче читать и он намного лучше выглядит!


В этом выпуске:
  1. О выпуске
  2. Уроки HTML. Оформление текста
  3. Уроки программирования на Паскале
  4. Вопросы - ответы

1. О выпуске

Вот вы и читаете очередной выпуск рассылки для начинающих программистов. Спасибо всем тем, кто задавал свои вопросы по прошлому выпуску, откликнулся на рассылку и прислал свои объявления. Объявлений хотя и не много, но побольше, чем в прошлом выпуске - это радует. Напоминаю, присылайте ваши объявления мне по адресу ed1@mailru.com.
В этом выпуске Вы как и в прошлом найдете уроки по HTML и Паскалю. Я продолжаю обучение этим двум прекрасным, простым и, пожалуй, самым распространенным языкам. Знате, я заметил, что подписчики четко разделились на две категории - те, кто учит HTML и те, кто изучает Паскаль.

  Новым подписчикам

Хочу заметить, что количество подписчиков с момента выхода прошлого выпуска сильно выросло. Теперь получается, что подписчики, которые недавно подписались на рассылку, не поймут некоторые вещи, которые мы проходили в прошлых выпусках. Но это не проблема - Вы сможете найти прошлые выпуски рассылки на сайте рассылки - "Библиотека программиста", http://www.plib.f2s.com/, там почти ничего сейчас не работает, но я открываю разделы для подписчиков - архив рассылки, служебную страницу, онлайновые сервисы, в которых вы сможете выразить свое мнение о рассылке, задать вопрос другим подписчикам или оставить свою запись в гостевой книге, а также раздел с домашними заданиями, в котором будут публиковаться домашние задания, заданные в рассылке.
В общем, я вам советую посмотреть предыдущие выпуски, думаю, они будут Вам полезны и необходимы для понимания дальнейшего материала. Ну а я пока не буду сильно спешить, и буду рассказывать обо всем немного и по порядку, напоминая прошедший материал, что будет вам полезно.

  Немного о планах

Многие у меня спрашивают, почему мы не проходим чего-нибудь более интересного, вроде графики или не пытаемся как-нибудь усложнять задания. Чтож, может сейчас вам и кажется все немного однообразным - наверное это действительно так. Но ничего не поделаешь, такая жизнь у программиста - постоянное решение однообразных проблем, да и программы все сильно похожи друг на друга. Пусть это даже не внешнее сходство, но алгоритмы и подходы очень часто повторяются. Кроме того, подход к изучению программирования просто требует постоянного решения однообразных задач, так как именно при этом вырабатываются необходимые навыки.
Но всеже хочется как-то разнообразить содержание рассылки. И, поверьте, не только вам, но и мне. Я некоторое время думал, чтоже мне сделать - и мне пришло в голову несколько идей. Во-первых, мне часто задают интересные вопросы, на которые я каждому с удовольствием и полнотой отвечаю. (Думаю, многие из вас смогли в этом убедиться). Часто эти вопросы не касаются конкретных задач по Паскалю или HTML - в большей степени это какие-нибудь интересные моменты. Я подумал и решил, что их стоит публиковать в рассылке. Ведь многим из вас были бы интересны эти ответы - может, вы и не задумывались о них, но всеже они принесут определенную пользу...
Далее - еще в прошлом выпуске я открыл раздел объявления. Был рад, когда вы на него откликнулись. Думаю, это будет многим интересно - и Вы прочитаете этот раздел с удовольствием.
Теперь о планах. Кто-нибудь из вас имеет опыт в программировании? Может, вам хочется написать что-нибудь в рассылку? Только, конечно, не уроки и не теорию по языкам, а что-нибудь интересное о компьютерах или новостях? Читали когда-нибудь журнал Компьютерра? Ведь он не для программистов, но посвящен компьютерам и в нем очень много интересной информации. (Это я для примера). Так вот, почему бы и нам не попробовать свои силы? Пишите все, что угодно, всем будет интересно. (Эта рассылка всеже посвящена компьютерам).
Ну а пока я не буду отягощать выпуск своими рассуждениями и заканчиваю вступление.
Продолжаем учиться.....

Спасибо вам и принимайте участие!

 

2. Уроки HTML. Оформление текста.

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

  Что такое HTML?

Итак, HTML - это гипертекстовый документ, который содержит две основные части. 1-я определяет общий вид документа, а вторая содержит непосредственно текст. Этот текст разделен тэгами - командами HTML, которые выделяются символами "<" и ">" Я рассказал о тэгах, позволяющих выделять текст жирным и выравнивать его по центру. Разобрал с вами, каким образом выделяются две главные части HTML документа. Вам все это просто необходимо знать, так как для успешного создания гипертекстовых страниц это нужно в первую очередь. Повторюсь, смотрите предыдущий выпуск ( 3).

  Как создать HTML документ?

Это просто. Необходимо всего лишь напечатать его в каком-нибудь редакторе, Блокноте, например, и сохранить его с расширением .HTM или .HTML Такие файлы открываются в броузере, например Internet Explorer или Netscape Navigator. Гораздо более подробно написано про это в предыдущих выпусках.

  Продолжаем изучать HTML

Продолжаем HTML. В прошлом выпуске мы создали страничку, в которой познакомились с основными частями HTML документа, такими как HEAD и BODY. Что мы еще освоили, вспомните? Тэги <B> и <CENTER> вместе с их завершающими парами. С помощью этих тэгов уже можно было построить какой-нибудь текст, Но это был бы очень примитивный текст, потому-что не вышло бы даже сделать нормальный перенос строки или абзац. Вы не смогли бы даже поставить лишний пробел, потому что броузер совершенно игнорирует символы переноса строки и лишние пробелы.
Что это значит? Да то, что пять пустых строк будут восприняты броузером как один пробел, 10 пробелов тоже сочтутся за один и так далее. Для того, чтобы явно указать броузеру перенос строки, лишний пробел или символ абзаца (табуляции) тоже существуют тэги и специальные символы.

Набор таких тэгов (работающих с текстом) является как бы редакторским. То есть практически, он позволяет редактировать текст. Вот именно эти тэги мы сегодня и изучим - позволяющие менять текст. Большого понимания эти тэги не требуют - они чрезвычайно просты и их всего лишь нужно знать. Но с их помощью можно отобразить практически любой текст, не использующий таблиц и рисунков. Кроме этих тэгов в этом уроке пока не будет ничего, поэтому он выйдет несколько маленьким. Но задаст вам много работы, ибо вы уже сможете создавать страницы.
Итак, какие же это конкретно тэги? Основных всего три - перенос строки, символ табуляции и символ пропуска строки (т.е. вставляется целая пустая строка, а не просто переноситься на другую). Эти тэги, однако, не позволяют вставлять символ пробела. Чтобы использовать его, необходимо знать и вставлять в текст специальный символ, а точнее комбинацию - &nbsp;.
Не пугайтесь его вида - это всего лишь явное обозначение пробела, его "код", понимаемый броузером. Вот вам пример:

Это &nbsp; текст

Отобразиться броузером как:

Это   текст

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

Это &nbsp;текст

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

  Символы примечания

Здесь я вам расскажу еще об одной новой и очень полезной вещи - символах примечания. Что это такое? Здесь все очень просто. Вот напрмер, создаете вы HTML документ, в котором оформляете к примеру, оглавление текста и сам текст. Естественно, и оглавление и текст находиться внутри тэгов <BODY> и </BODY>, все относиться к документу и будет выводиться броузером. Так вот если этот HTML документ получается очень большим - из-за того, что в нем есть и содержание и текст, то со временем вы начнете в нем путаться. Будет сложнее искать начало текста, конец содержания или что-нибудь более конкретное. Куча тэгов, весь выводящийся текст написан вразброс...
Вот здесь вам и пригодятся символы комментариев. Они позволят в любом месте документа сделать примечания для автора, пометки, личные заголовки и т.д., при этом все, что будет заключено в комментарий не будет выводиться броузером, а точнее, не будет им восприниматься вообще. Итак, как же нам создать комментарий?
Символы комментариев состоят из двух тэгов, одним начинается комментарий, другим он заканчивается. Повторюсь, это очень удобная вешь - комментарий - и не только по своей сущности, но и потому, что их очень просто создать.
Начинатся комментарий со след. символов: <!--, а заканчивается: -->. Вот вам полноценный комментрий:

<!-- Это комментарий. Броузером он не воспринимается. -->

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

  Редактирование текста, основные тэги

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

  1. <BR> - тэг переноса строки. Очень распространенный, применяется везде и повсеместно. Представьте, на сколько он удобен - позволяет разбивать строку в любом ее месте. Привожу, как вегда пример, который вам необходимо будет напечатать, сохранить и открыть в броузере. Итак, откройте редактор "Блокнот" (Notepad) и введите след. текст:

    <HTML>
    <HEAD>

    <!-- Здесь заголовок документа, не забывайте! -->
    <TITLE>Пример переноса строки </TITLE>
    </HEAD>

    <BODY>

    Здесь напечатана строка, в которой используется
    символ переноса: <br> за счет него она и переноситься.
    </BODY>
    </HTML>

    Напечатали, сохранили? Открывайте в броузере. Видите, строка переноситься посередине? Это и есть работа тэга <BR>. Уточняю, что этот тэг не имеет завершающей пары, потому что строка переноситься всего лишь один раз, в отличии, например, от выделения жирным, которое может происходить на протяжении всего текста.

  2. <P> - символ абзаца, то есть пропуска целой строки. Этот тэг используется для того, чтобы делать в документе несколько пустых строк, напрмер, так:

    Это строка 1

     

    Это строка 2

    Заметили, сколько пропусков строки? Предыдущий тэг, <BR> не позволит выполнить такое. Он всего лишь переносит новую строку, но не пропускает целую. В общем, этот тэг тоже очень удобен в некоторых случаях. Вот вам небольшой пример, использующий все изученные нами тэги (на самом деле я так пишу содержание это рассылки... )

    <HTML>
    <HEAD>

    <TITLE>Пример редактирования текста </TITLE>
    </HEAD>

    <BODY>
    <!-- Мы напечатаем небольшой текст, используя тэги переноса и абзаца -->

    <!-- Выводим заголовок жирным и по центру -->
    <center>
    <b> Оглавление выпуска 4 этой рассылки</b>
    </center>

    <!-- Отделяем заголовок пропуском строки от последующего текста -->
    <P>

    <!-- Ну а теперь печатаем текст -->
    <B>1. </B> О выпуске; <BR>
    <B>2. </B> Уроки HTML <BR>
    <B>3. </B> Уроки Паскаля <BR>
    <B>4. </B> Вопросы-ответы <BR>
    <B>5. </B> Объявления подписчиков <BR>

    <!-- Завершаем раздел BODY и весь HTML документ... -->
    </BODY>
    </HTML>

    Открывайте Блокнот и введите этот текст. Сохраните документ с расширением HTML и откройте в броузере. Что вы видите? Полноценное содержание, разве нет? Конечно, оно не использует таблиц, цветов и гиперссылок, но это уже дальше. А я вам пока не рассказал еще об одном тэге - табуляции.

  3. <DD> - это тэг табуляции. То есть он вставляет в начало строки большой отступ, который является как бы абзацным отступом.
    Наглядней представиться его работа, если я приведу след. пример: когда вы печатаете текст и нажимаете на клавишу Tab, что происходит? Вот тоже самое делает и этот тэг.
    Зачем это надо? Помните, я говорил, что множество пробелов и переносов строк не воспринимаются броузером, а печатается всего один пробел? Также можно понаставить в документе и символов табуляции - они тоже не будут восприниматься. А теперь нам приспичило сделать в HTML абзацный отступ. Что делать? Можно отступать от начала строки множество символов пробела (&nbsp;), вымостив этой надоедливой комбинаций целую строку, или просто поставить тэг <DD> и все будет нормально.
    Тоже, я считаю, очень полезный тэг. Но почему-то он не очень известен. Поэтому я и заостряю Ваше внимание на нем, так как некоторые действительно умудряются печатать символ &nbsp; целыми строками, не зная о существовании <DD>.

Вот видимо и все, что касается редакторских тэгов. Сегодняшний урок вышел довольно простым, это и для того, чтобы новые подписчики не отстали, и просто, чтобы выделить тему редактирования текста отдельно.
Думал я, думал, что же вам задать в качестве домашнего задания по HTML и придумал. Решил не давать задачи и не рассказывать, какие странички выполнить, а предложить написать о себе.
В общем, Домашнее задание по HTML:

  Задание первое  

Выполнить гипертекстовую страничку с заголовкам и описанием, содержащую все изученные нами тэги. (Как раз, поиск того, что мы изучили поможет Вам все повторить).

  Задание второе  

Ну а для того, чтобы конкретно попрактиковаться в создании HTML документов, я предлагаю вам сделать творческую и ОЧЕНЬ полезную работу. Я сейчас подумал-подумал, чтоже вам сделать, чтобы содеражало переносы, перечисления, заголовки... и придумал. Итак:

Сделайте HTML страничку с описанием какого-нибудь кулинарного рецепта. (Как вам?!) Если вы уж никода этим не занимались, найдите какой-нибудь журнал или, наконец, кулинарную книгу...
В общем, сделайте его красиво, с выделением жирным, заголовками, выравниванием и прочим. Тэгов, известных вам, хватит для этого. После чего пакуете его ZIP'ом и присылаете мне на адрес: ed1@mailru.com. Я, конечно, самые интересные и простые (не очень хорошо я готовлю, знаете ли) рецепты попробую, АВТОРЫ БУДУТ ОТМЕЧЕНЫ, а рецепты будут размещены на сайте рассылки, на всеобщее обозрение всех подписчиков. Дерзайте!

 

3. Уроки программирования на Паскале.

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

  !  Для новых подписчиков

Уважаемые недавно подписавшиеся! Я в обучению Паскалю не то, чтобы далеко ушел, но это всеже не первый урок. В предыдущих уроках я не рассказывал ничего сложного, просто рассматривал, как выглядит программа. ее основные части, синтаксис (как привильно расставлять знаки) и прочее.
Поэтому не расстаивайтесь и не спешите забыть про этот раздел. Говорю вам - чтобы догнать, вам необходимо потратить буквально крайне незначительное время на то, чтобы достать два предыдущих выпуска (найти их можно на сайте http://www.plib.f2s.com/ - там вы сразу увидете ссылку на архив рассылки) и прочитать в них раздел, посвященный Паскалю. Вам-то надо всего лишь понять (точнее, знать) что такое переменная, ее тип, какие они бывают и прочее. Там мало информации, догоняйте нас!
Что вам нужно еще? Еще нужна программа Turbo Pascal 7.0. В ней пишутся программы на Паскале, вы сможете тестировать примеры, делать домашние работы и создавать собственные программы. Если у вас есть эта программа, то замечательно. Ставьте ее себе, и пытайтесь работать. Если же ее у вас нет, то опять же - найдете ее у меня на сайте. Как всегда, увидите на главной странице ссылку для подписчиков (не пропустите, надеюсь!) и там скачаете Turbo Pascal 7.0. Там также есть полная информация по уставке и решение некоторых проблем. (А проблемы возникают постоянно - видимо, скоро открою раздел FAQ (или ЧаВО) на эту тему... А как вам идея? FAQ на тему "Установка и использование программы Turbo Pascal 7.0"?)

  Для всех

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

  Арифметические процедуры.

Давайте возьмем для примера такую ситуацию:

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

Counter: Integer;

2. Теперь мы начинаем нумеровать действия: каждый раз, когда совершаем новое, увеличиваем ее на единицу. Что делаем? Пишем в программе:

Counter := Counter + 1;

Увеличивается? Конечно. Каждый раз при совершении такого действия переменная будет работать как полноценный счетчик. Но разве это приятно, каждый раз писать Counter := Counter + 1; ?
Для того, чтобы увеличивать переменные-числа на определенные величины существует замечательная операция - Inc. Рассматриваем ее подробно (хотя, конечно, это не очень серьезная процедура):

Процедура Inc - (от англ. Increment - увеличение).
Эта процедура увеличивает переменную на заданное число или на другую переменную.
Синтаксис:
1. Inc(переменная, заданное_число (другая_переменная) );
2. Inc(переменная); - при отсутсвии 2-го параметра увеличиывает переменную на единицу (это как бы по умолчанию).
Вам случайно не показалось это сложным? Если да, то зря. Смотрите пример, все очень просто:

1. Имеем переменную Count. Так увеличиваем ее на единицу:

Inc(Count);

2. Таже переменная Count, но увеличиваем ее на 10:

Inc(Count, 10);

Разобрались? Замечательно!
Продолжаем, и следующая операция Dec. Что же она делает? Она наоборот, уменьшает значение переменной.

Процедура Dec - (от англ. Decrement - увеличение).
Эта процедура уменьшает переменную на заданное число или на другую переменную.
Синтаксис:
1. Dec(переменная, заданное_число (другая_переменная) );
2. Dec(переменная); - при отсутсвии 2-го параметра уменьшает переменную на единицу.
И примеры использования процедуры:

1. Имеем переменную Count. Так уменьшаем ее на единицу:

Dec(Count);

2. А так уменьшаем на 7:

Dec(Count, 7);


Ну а теперь напишем небольшую программку.

Сначала определимся с условием. Нам нужно сделать что-нибудь до минимума простое. Давайте так:

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

1. Заводим 3 переменных - A, B, C и переменную-счетчик для нумерации действий - Count.
2. Складываем А и В; При этом увеличиваем счетчик Count на единицу.
3. Вычитаем С. Увеличиваем Count на единицу.

Текст программы:

Program First;

var

A,B,C,Count: Integer;

begin

A := A + B;
Inc(Count);
A := A - C;
Inc(Count);
end.

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

  1. Program First;
    Название программы. Program - это служебное слово, ничего не выполняет и в принципе необязательно. Если используется, то всегда стоит самой первой строкой в программе. В общем, это простой заголовок. Ничего не выполняющий и никому не нужный, но с ним как-то приятнее...
  2. var
    Это начало раздела описания переменных (см. пред. выпуски). Программа на Паскале состоит из двух самых важных частей - раздела описания переменных и тела самой программы. var - это служебное слово, ничего не выполняющее, но показывающее Паскалю, что начался раздел описания переменных. В этом разделе мы описываем все переменные, которые будут использоваться в программе. Что такое переменная? Это несколько долгий разговор, смотрите предыдущие выпуски.
  3. A,B,C,Count: Integer; - это и есть описание переменных. Integer - это их тип. Описание переменных сводиться к озаглавливанию переменнной (приданию ей имени) и приравниванию ее к какому либо типу. Integer означает, что переменная является числом.
  4. begin
    Служебное слово, показывающее начало тела программы. После слова begin находиться весь текст программы - опрераторы, присваивания, действия. Заканчивается раздел begin служебным словом end.
  5. A := A + B;
    Складываем А и В, одновременно помещая результат вычисления в переменную А.
  6. Inc(Count);
    Увеличиваем переменную-счетчик на единицу.
  7. A := A - C;
    Вычитаем из результата сложения переменную С.
  8. Inc(Count);
    Опять увеличиваем переменную-счетчик на единицу - ведь выполнено еще одно действие.
  9. end.
    Это означает конец программы.

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

    Ну а пока я заканчиваю раздел, разбирайтесь и читайте следующий выпуск!

     

    4. Вопросы-ответы

     1 
    Можно ли и как копировать строки, чтобы не набирать по нескольку раз одно и то же?
    Копирование строк осуществляется через буфер обмена, прямо как в Windows.
    Для того, чтобы скопировать строку в буфер, необходимо сделать следующее:
    1. Нажав и удерживая клавишу Shift, Вы передвигаете курсор клавишами-стрелками, вслед за ним текст выделяется белым цветом.
    2. Выделенный фрагмент текста далее должен быть помешен в буфер:
      Для этого нажмите комбинацию Ctrl+Ins (Insert).
    3. Теперь перемещайтесь в место, где хотите вставить текст и нажмите комбинацию Shft+Ins. (Вставка)

    Таким образом можно копировать как одну строку, так и огромные блоки. Скажу сразу. что здесь нужны определенные навыки - но это приходит со временем (и быстрота работы и точность).
     2 
    Как располагать вывод процедуры Write (см. выпуск 3) (например заголовок) по центру?
    В принципе, не существует такой процедуры, которая ровняет выводымий текст по центру. Единственное, что я могу Вам пока предложить (самое оптимальное) - это дополнять начало строки пробелами. Вот пример:

    Write('                Заголовок');

    Таким образом строка будет сдвигаться от начала экрана и выводиться к середине. Здесь можно посчитать, сколько пробелов сначала необходимо:
    1. Ширина экрана (в символах) в DOS всегда 80 (а высота - 25 строк).
    2. Берем длину строки (например, слово "Заголовок" - 9 символов).
    3. Делим 80 (ширину экрана) на 2 - получаем 40.
    4. Делим длину строки на 2 и отбрасываем остаток: 9/2 = 4.
    5. Вычитаем из половины экрана (40 симовлов) половину длины строки: 40 - 4 = 36.
    6. Это число и будет необходимым количеством пробелов.

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

    Ваши объявления присылайте по адресу: ed1@mailru.com.


На этом прощаюсь, до следующего выпуска!


Автор и создатель рассылки Эдуард Дмитриев (E-mail: ed1@mailru.com)

Назад

Hosted by uCoz