Уроки для начинающих программистов
Выпуск N 7
Суббота, 27 августа 2000 г.
Всего подписчиков - 10590
Ведущий рассылки Эдуард Дмитриев
Здравствуйте, уважаемые подписчики!
Это письмо желательно читать в броузере или развернуть на весь экран, тогда легче ориентироваться и приятнее читать!

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

1. О выпуске

Здравствуйте, уважаемые подписчики! Хочу обратить ваше внимание, что количество читателей давно перевалило за 10000, с чем вам и поздравляю! Юбилейное число, все таки... Нас с вами теперь так много, что впору организовывать какой-нибудь "Клуб начинающих программистов". Думаю, он получил бы Ваше одобрение, к тому же если хотя бы каждый десятый вступил бы в него, масштабы клуба впечатлили бы. Но пока, конечно, я не знаю ваше отношение к такой идее, поэтому жду писем с вашими мыслями по этому поводу, мой адрес вы знаете.

Далее хочу обратить ваше внимание, что я изменил шрифты в заголовках и содержании - убрал шрифт Times, так как было много жалоб по поводу того, что он не отображается; рисуются какие-то иероглифы. Уважаемые друзья! Решение этой проблемы есть, и я хочу вам его предложить - пусть даже рассылка стала полностью совместимой со всеми броузерами, но в дальнейшем, возможно, вы столкнетесь с этой проблемой и будете знать, как ее решить.
Так вот, проблемы со шрифтами (в частности Times) бывают у броузера Internet Explorer 5.0 и выше, а именно с его дополнительным модулем "Автоопределение языка". Этот модуль, видимо, имеет какие-то ошибки и по моим соображениям он переключает кодировки то в одну, то в другую сторону. При этом документ выглядит сразу в нескольких кодировках. Как бороться с этим, на сегодняшний день не известно. Существует единственный выход - удалите модуль автоопределения. Броузер при этом совсем не пострадает, но решатся многие проблемы.

Однако, это не единственная причина несовместимости. Как оказалось, рассылка не правильно отображается в почтовой программе The BAT! В частности, примеры программ - многие мне жалуются, что я их ужасно пишу (в одну строку, без соблюдения структуры...). Также это относиться к подписчикам в текстовом формате - у вас возникает больше проблем при прочтении рассылки и я могу посоветовать изменить параметры подписки на HTML. А если у Вас стоит The BAT! - открывайте письмо в броузере. Его понимают и Netscape Navigator и Internet Explorer и Opera. Скорее всего и все остальные, сплоть до самых экзотических.

  Разбор писем

В этом разделе сразу же хочу извиниться перед теми, кто не получил моего ответа на свое письмо. Писем от вас приходит невероятное количество и я просто не в состоянии не то что отвечать на них, но и просто прочитать. Так что извините еще раз!
Многие мне пишут, что я допускаю много орфографических ошибок. Да, это так - я сам когда перечитываю выпуск иногда просто удивляюсь, как я мог так написать. Но будьте ко мне снисходительны - рассылка имеет довольно большой объем и я просто не могу проверять в ней орфографию. Можно, конечно, воспользоваться Word'ом, но это связано с большими сложностями и проверять такой большой HTML документ на ошибки довольно утомительное занятие. Кроме того, обратите внимание, что ошибки мои - это в основном опечатки, вроде "проргаммирование". Задумайтесь, неужели я считаю, что это слово действительно так пишеться? Тут понятно, что если я так написал, то это не свидетельствует о моей безграмотности, а я просто не то набрал на клавиатуре. Я очень быстро печатаю, поэтому иногда бывают опечатки. Особенно, если рассылка создается часа в 2-3 ночи - в основном, это и есть мое свободное время. Так что призываю вас еще раз: Будьте ко мне снисходительны! Постарайтесь меня понять.
И напоследок - если вы пишите мне письмо с рассказами про мою безграмотность, пожалуйста, сами-то проверяйте ошибки! А то не хорошо получается.

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

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

 

2. Несостоявшийся конкурс

В прошлом выпуске я объявил конкурс на лучшее описание рассылки, соорудив для его проведения систему, через которую можно было это осуществить. Но, к моему великому сожалению, из почти десяти тысяч человек на момент выхода прошлого выпуска откликнулось 13 (!). Это очень мало и я не считаю конкурс закрытым. Мне нужно больше описаний, чтобы выложить их на сайте.

Рискну попросить вас еще раз принять участие в конкурсе. Правила участия смотрите в предыдущем выпуске.

 

3. Уроки HTML. Гипертекстовые ссылки.

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

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

  Гипертекстовая ссылка

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

  Тэги оформления ссылок

Для оформления гипертекстовых ссылок служит тэг <a>. Сам этот тэг не делает ничего, все его возможности реализуются через параметры. Параметров у него несколько, но все мы сейчас изучать не будем, а остановимся только на основном. Тэг <a> имеет завершающую пару - </a>. Вот как раз то, что находитсья внутри этой конструкции и будет ссылкой. Ссылки всегда подсвечиваются броузером, подчеркиваются или меняют цвет при наведении.
Для того, чтобы создать ссылку, служит параметр HREF, после которого в кавычках указывается адрес. Например, мы имеем страницу page.html, которая находиться в одном каталоге с той страницей, на которой проставлена ссылка. Для этого мы напишем:

<a HREF="page.html">Перейти к page.html</a>.

При переходе по такой ссылке броузер откроет страницу page.html. Вот, собственно и все! Оформив таким образом ссылку мы можем открывать страницы.

Как же загрузить файл? Это делается точно так же. Необходимо в параметре HREF указать имя файла, который должен быть загружен. Например, мы имеем файл archive.zip, который находиться в одном каталоге со страницей, с которой он загружается. Оформление такой ссылки будет выглядеть так:

<a HREF="archive.zip">Загрузить файл</a>.

Теперь давайте представим, что файл archive.zip находиться в каталоге ARCHIVE. Здесь мы будем писать так:

<a HREF="ARCHIVE/archive.zip">Загрузить файл</a>.

Обращаю ваше внимание на символ "/". В Интернет, как вы заметили адреса разделяются символами "/", например, http://www.plib.f2s.com/index.html. А вот в системе Windows адреса (каталоги, файлы), разделяются символом "\", то есть повернутом в обратную сторону. Так вот, запомните, такой символ в адресах Интернета и следственно гипертекстовых ссылках использовать нельзя! Чтобы вы до конца это поняли, приведу пример.

Давайте представим, что мы имеем каталог, находящийся в корневом каталоге диска C:, который называется, например, Site. Следовательно, путь к этому каталогу будет обозначаться так: C:\Site. В этом каталоге мы имеем гипертекстовую страницу, на которой стоит ссылка на файл 1.zip, находящийся в каталоге C:\Site\1\1.zip. По правилам написания адресов системы Windows, ссылка должна иметь вид:

<a HREF="1\1.zip">1.zip</a>.

Но это не так. Мы запишем все знаки "\" обратными - "/", таковы правила написания адресов в Интернет. Следовательно, мы преобразуем ссылку к такому виду:

<a HREF="1/1.zip">1.zip</a>.

Запомните это и вспоминайте при необходимости. Далее по выпускам я расскажу еще о некоторых правилах написания адресов - как перейти в каталог уровнем выше, корневой и т.д., а пока продолжаем изучать тэг <a> и его параметр HREF в частности.

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

<a HREF="http://www.plib.f2s.com">Библиотека программиста</a>.

Эта конструкция соответсвенно отобразится броузером следующим образом:

Библиотека программиста

Вот и все, ссылка на сайт готова. Здесь, как вы успели заметить играет решающую роль заголовок "http://", который и сообщает броузеру, что это полноценный адрес Интернет. Существует также другой заголовок, который полволяет автоматически отправлять сообщение на адрес электронной почты. Это очень полезная возможность и в дальнейшем вам обязательно понадобиться.
Итак, вы решили вставить на сайте свой электронный адрес, указав, что это адрес вебмастера. Релизуется это следующим образом: в параметре HREF указывается заголовок mailto:, после чего указывается адрес электронной почты. Вот пример:

<a HREF="mailto:ed1@mailru.com">Послать письмо Вебмастеру</a>.

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

  Создаем страничку

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

Итак, что же сайт мы собираемся делать? Давайте предствим, что мы пишем небольшой рассказ о себе, основными частями которого будет:

  1. Автобиография
  2. Семейное положение
  3. Работа

(Для примера хватит).

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

Моя личная страничка

  1. Автобиография
  2. Семейное положение
  3. Работа

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

Обычно желательнa (и существует) какая-нибудь навигация по сайту, которая позволяет перемещаться с любой страницы в удобное место, где и есть доступ ко всем разделам. Это может быть переход на главную страницу с любой страницы, может быть переход к любому разделу с любой станицы, т.е. "совместная навигация", при которой существует сразу несколько панелей, ведущих в разные части сайта. Хороший пример такой навигации вы найдете на Библиотеке программиста. Обратите внимание, верняя полоса ведет к главным разделам сайта, мало относящихся к содержанию - то есть просто сервисы, а справа - большая вертикальная полоса, это уже основное содержание, ведущее к самым разным разделам, представляющим непосредственно состав сайта. Обе панели навигации есть на каждой странице, где оно того требует. За счет этого обеспечивается очень удобная навигация из любой точки сайта в любую его другую точку. Многие пользователи, правда, предпочитают пользоваться кнопками броузера "назад" - "вперед" (стрелками), чем созданными авторoм ссылками. Но навигация обязательна (как минимум крайне желательна), поэтому мы это учтем и как-нибудь ее оформим. Давайте разбираться, из чего же будут состоять разделы.
Какова же будет наша навигация? Смотрите, мы с Главной страницы переходим в какой-нибудь раздел, например, Автобиография. Что здесь должно быть?

1. Обязательно должен быть заголовок. Его лучше всего оформлять более крупным шрифтом, чем остальной текст, хотя это может быть и другой цвет, другой вид шрифта, или все вместе - главное, чтобы он выделялся. Можете расположить его по середине, хотя.... решайте сами! Это довольно творческая работа.
2. После заголовка идет содержание. Здесь вы соответсвенно вписываете все, что должен содержать раздел.
3. Не забываем про навигацию, которая будет вверху и внизу страницы. (Так удобнее). В качестве таковой давайте использовать лишь ссылку на главную страницу, ведь там у нас содержание. Пойдет? Если да, то примемся за работу.

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

  1. Откройте "Блокнот" и сразу же сохраните пустой файл в созданном вами каталоге. Произвольное название давать ему не нужно, обязательно назовите его index.html (или .htm). Дело в том, что всегда главным файлом является файл с именем index.html, привыкайте к этому.
  2. Ну а теперь давайте править созданный вами файл. Тут вы уже все будете делать сами - меняйте как хотите шрифты, делайте разный размер, цвет и т.д. Главное, сделайте нормальное меню, сразу придумав названия будущим файлам разделов. Давайте условимся, что они будут называться так:
    1. Автобиография - auto.html
    2. Семейное положение - family.html
    3. Работа - work.html
    Договорились? Соответсвенно, привожу пример главной страницы:

    <HTML>
    <HEAD>
    <TITLE>Моя личная страничка </TITLE>
    </HEAD>

    <BODY>

    <CENTER>
    <!-- Заголовок - устанавливаем шрифт -->
    <font face="Arial" size="3" color="navy">
    <B>Моя личная страничка </B></font>
    </CENTER>

    <P>

    <!-- Содержание - устанавливаем шрифт -->

    <font face="Times" size="3">
    <B>

    <!-- Выстраиваем ссылками меню -->
      - <a HREF="auto.html"> Автобиография </a><BR>
      - <a HREF="family.html">
    Семейное положение </a><BR>
      - <a HREF="work.html">
    Работа </a>

    <P>

    <!-- Оставляем ссылку на свой E-mail -->
      Мой e-mail:
    <a HREF="mailto:ed1@mailru.com"> ed1@mailru.com </a>

    </BODY>
    </HTML>

Введите этот текст и сохраните. Запустите файл HTML в броузере, ну как? Видите, есть ссылки, кое-какое оформление? Теперь сделайте все другие страницы. Поступайте по тому же принципу, не забывайте менять заголовок броузера (тэги TITLE), сделайте на каждой из них навигацию - разместите ссылку на главную страницу (index.html). Где ее разместить, решайте сами - вверху ли, внизу, по центру или нет и т.д.

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

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

 

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

В прошлом выпуске мы освоили расширения конструкции if...then...else, а именно процедуру goto. Я показал, как с ее помощью можно строить интерактивные программы, управлять работой и ходом выполнения программы. Эта возможность дала вам некоторые новые перспективы написания более усовершенстованных программ. Но этого мало, нормальную программу ен написать, пользуясь только элементами сравнения. В Паскале есть и другие конктрукции, позволяющие совершенствовать и усложнять тексты программ, а слудовательно, расширять возможности программирования.
Мы по порядку и своевременно будем их все изучать. Сегодня продолжаем изучение конструкций, а именно новой конструкции - циклов. Циклы - это неотъемлемая чать программы. На самом деле эта конструкция проста, но многие иногда не понимают самого ее принципа - зачем это и как используется? Имено поэтому я сначала хочу рассказать о том, что такое циклы и когда они могут потребоваться.

Начнем с примера. Давайте представим, что нам потребовалось написать программу, которая будет выводить 10 раз строку, введенную пользователем. Я извиняюсь за такой примитивный пример, но на его работе лугче всего понять данную тему.
Итак, решение программы очевидно:

  1. Мы читаем в переменную строку.
  2. Десять раз выводим ее на экран.
  3. Завершаем программу.

Все вроде ясно. Читать строку мы будем процедурой Readln, как завершить программу тоже не вопрос. А вот как вывести строку 10 раз? Можно десять раз написать процедуру Writeln. Но это ОЧЕНЬ громоздко и нерационально. Здесь желательно как-нибудь застопорить программу - тот ее кусок, который выводит 10 раз строку, чтобы он повторялся сам. Для этого и используюся циклы! Они позволяют "зацикливать программу", то есть заставляют ее повторяться несколько раз - столько, сколько нужно пользователю.
Вот мы и подошли вплотную к реализации этого элемента языка. Скажу сразу, что циклов несколько - некоторые позволяют повторяться программу определенное количество раз, заложенное в программе, некоторые заставляют повторяться программу до определенных условий (например, пока пользователь не нажмет клавишу выхода). Вот и все, теперь давай начнем непосредственно изучение самих циклов.
Первым циклом, который мы изучим, будет так называемый цикл FOR, он относиться к разряду тех, которые заставляют повторяться программу определенное количество раз.

  Цикл FOR

Чтобы продемонстрировать, как работает этот цикл, давайте напишем программу, приведенную выше:

Program Example;

var

I: Byte;
S: String;

begin

Write('Введите сроку: ');
Readln(S);

For I := 1 to 10 do
   Writeln(S);

Readln;
end.

Посмотрите внимательно на программу. Видите слово FOR? Это и есть начало цикла. Обясняю его синтаксис:

1. Цикл начинается словом FOR.
2. После него идет присваивание какой-нибудь переменной начального значения. Именно начиная с этого значения и будет происходить отсчет.
3. Далее идет слово TO.
4. После этого указывается конечно значение приведенной переменной. До этого значения будет производиться отсчет.
5. В конце заголовка цикла ставиться слово do.
6. После этого идут все действия, которые должны быть зациклены. Здесь действует тоже правило, что и в конструкции if...then...else - про вложенность. То есть если после слова do должно быть несколько действий, а не одно, то все они заключаются в конструкцию begin ... end; Помните об этом, иначе циклы не будут правильно работать - выполняться будет только первое действие, а остальные будут затонуты только после выполнения цикла.

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

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

А+1 = 8;
А+2 = 9;
А+3 = 10;
А+4 = 11;
.............
A+10 = 17;

Решение я обяснять по шагам не буду (ни к чему это, верно?), а сразу приведу текст программы:

Program Example;

var

A: Integer;
I: Byte;

begin

Write('Введите число: ');
Readln(A);

For I := 1 to 10 do
   Writeln(A,' + ',I,' = ',A+I );

Readln;
end.

Обратите внимание на строку Writeln(A, ' + ' ,I, ' = ' ,A+I); - здесь я привожу ее более крупным шрифтом, чтобы было легче разобраться. Она хорошо демонстрирует множественность параметров процедуры Writeln, не так ли? Кроме того, обратите внимание, что я использую процедуру Writeln, а не Write - для того, чтобы переносить строку после каждого вывода. Таким образом строки будут выводиться в столбик.
Заметьте также, что я использую в цикле тип Byte. Дело в том, что Byte занимает меньше памяти, чем Integer или Word, тем самым программа становиться оптимизированнее. Мы ведь заранее знаем, что в цикле значение не перевалит через 10, верно? Зачем же использовать типы, способные хранить значения гораздо большие?


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

For   I := 1   to   10   do

Что при этом будет происходит с переменной i?
1. Она будет приравнена к единице;
2. Она будет увеличиваться на единицу с каждым новым началом цикла (это называется итерацией - новый проход;), пока не станет равна 10.
Обратили внимание, она будет увеличиваться? А вот если написать так:

For   I := 10   to   1   do

Переменная ведь должна уменьшаться? Судя по значениям - да. Но если так написать в программе, цикл не будет выполнен. Паскаль не выдаст ошибки, программа пойдет на выполнение, но цикл работать не будет. Почему? Просто в цикле For при каждой новой итерации (проходе) Паcкаль увеличивает на 1 переменную и проверяет - она больше заданного конечного значения? Если да, цикл завершен. Вот и здесь - переменная I увеличивается на 1, она теперь равна 11, то есть больше конечного значения (больше 1), цикл завершен. То есть он пуст - работать не будет. Начальное значение сразу же становиться больше конечного.

Однако, иногда необходимо, чтобы переменная в цикле уменьшалась. Например, модифицированный вариант предыдущей программы - уменьшать на 10 значение введенной переменной. Как же поступить? Именно для этих целей и существует расширение синтаксиса цикла FOR, которое позволяет уменьшать значения, то есть задавать "от большего к меньшему".
Для того, чтобы использовать эту возможность, Вам необходимо заменить служебное слово to словом downto, то есть оформление станет таким:

For   I := 10   downto   1   do

Просто, верно? Но тем не менее работа цикла совсем меняется. Давайте теперь модифицируем нашу программу, т.е. сделаем, чтобы она уменьшалась на 10. Только уменьшать будем с 10 до 1, а не с 1 до 10, как мы делали ранее. Сделаем еще одно, чтобы усовершенствовать программу: так как мы будет вычитать сразу 10 из введенного числа, не хотелось бы, чтобы оно было меньше нуля. Зачем, скажете вы? Пусть будет... Да нет, возьмем это просто как условие, чтобы хоть как-то расширить интерфейс. Итак, мы будем проверять введенное число на больше/меньше нуля, после чего вычитать из него числа от 10 до 1. Пример программы:

Program Example;

label

L1;

var

A: Integer;
I: Byte;

begin
L1:

Write('Введите число: ');
Readln(A);

if A <= 10 then goto L1;

For I := 10 downto 1 do
   Writeln(A,' - ',I,' = ',A-I );

Readln;
end.

Вот и все. Разберитесь в этой программе, здесь вам все знакомо.

Собственно, это и все про цикл FOR. Напишите самостоятельно несколько программ, не подглядывайте в рассылку. Попробуйте хорошенько запомнить синтаксис, без него никуда. Впрочем и без циклов тоже. Домашнее задание я вам задавать сегодня не буду, попытайтесь модифицировать приведенныю программы и тренируйтесь побольше самостоятельно. Пишите больше программ, пусть они будут маленькие, но это даст вам больше опыта. Знаете, самостоятельное написание заданий - это отличная практика. Вы совершенствуетесь как программист и все больше и больше задаетесь какими-нибудь вопросами. Конечно, вы еще не достаточно знаете Паскаль, чтобы решать более-менее серьезные задачи, но и не так уж мало вы знаете, чтобы ничего не решать.
Далее по выпускам мы изучим все существующие циклы (а их осталось еще два) и главное, будем пытаться применять их на практике. Также нам нужно будет выучить еще несколько типов и попробовать работать посерьезнее с ними - преобразовывать из одного к другому и т.д. Но это потом, а пока занимайтесь циклом FOR.
Удачи и желаю, чтобы у вас все получалось!

 

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

Как всегда самые оригинальные и очень часто встречающиеся вопросы.

 1 
Как называется "Блокнот" в английской версии Windows?
В английской версии редактор "Блокнот" имеет название Notepad.

 2 
Как в Windows в панели Пуск >> Программы отсортировать файлы по имени?
Это возможно при установке Internet Explorer 5.0 и выше. При инсталляции этого броузера происходит серьезное обновление стандартных библиотек Windows и у системы появляется ряд новых возможностей. В частности, даже в Windows 95 можно нажав правой кнопкой мыши на любой объект в панели Пуск >> Программы вызвать контекстное меню свойств объекта. Именно там и есть опция "Сортировать по имени".

 



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


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

Назад

Hosted by uCoz