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


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

1. О выпуске

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

  Разбор писем

Я хочу выразить огромную благодарность всем, кто прислал свое мнение о рассылке - вообще-то я не встретил НЕ ОДНОГО неприятного письма. Это меня просто очень радует - то, что моя расылка Вам нравиться, буду стараться улучшать ее и по возможности создавать новые и интересные задания.
Многие мне писали, что рассылка должна выходить чаще. Да, знаю, должна. По моим планам тоже - но кроме этого есть еще много дел, связанных с рассылкой. Ответы подписчикам, просмотр домашних заданий...
Хочу также обратиться к подписчикам, желающим (особенно к упорно настаивающим) изучать Си, Delphi или заниматься объектно-ориентированным программированием. Поймите, я не могу этого делать. Если я сейчас возмусь за такие вещи, пусть даже вынесу их в отдельный раздел, я не смогу уделять столько внимания урокам Паскаля и HTML. Вспомните название рассылки! Уроки для начинающих программистов. Еще - если я буду заниматься Си или объектным программированием сейчас, то выйдет что мы в этом уже зайдем далеко, когда придет время преподносить эти вещи новичкам - выходит, мне придется повторяться, начинать все сначала? Все по порядку, друзья, не будем спешить! Мы займемся и Си, и ООП и DELPHI.
Теперь на тему сайта Библиотека программиста. Это стало, как я заметил, большой проблемой - многие не могли скачать с него архив рассылки, многие не могли скачать Turbo Pascal. Тут была и моя вина - действительно, сначала у меня была недоработка в программе и при большом количестве пользователей иногда не срабатывали конфигурационные файлы - то есть они были кем-то заняты, а программа отказывалась ждать их освобождения и выбивала разные ошибки.
Я все исправил, теперь все работает, заходите и скачивайте архив! Да, запаковывать файлы в ZIP я все же буду, но не в ближайшее время - у меня слишком много дел и пока я не планирую перерабатывать архив. Хотя желающих открывать выпуски не в ON LINE, а скачивать в архивах много. Ну чтож, скоро будут архивы.
Что еще мне писали? Да, еще много писали про сайт. Кто только мне не указывал на то, что не работает содержание, отсутсвуют ссылки и не работают разделы! Я вас понимаю, но я НЕ РЕКЛАМИРОВАЛ СВОИ РАЗДЕЛЫ И ССЫЛКИ, а просто указывал на раздел для подписчиков. Кроме того, я говорил, что на сайте ничего не работает (см. прошлые выпуски) - но вы найдете там архив рассылки и кое-что еще. Также на сайте на главной странице стоит пометка (см. информационный блок "Комментарии, новости и события"), что на сайте переработка и разделы не отвечают.
Отдельные благодарности всем тем, кто не поленился и прислал мне домашние задания. С программами на Паскале у многих возникали проблемы, но вот с HTML (заданием "кулинарный рецепт") особых проблем не возникало. Здесь я вообще старался - раздавал советы и делал комментарии. Извините, может не ко всем попало мое мнение о их работах, это значит, что ваша работа не требует комментариев. Значит все ОК!

  О планах

В прошлом выпуске я говорил, что собираюсь делать что-нибудь интересное, связанное с рассылкой - для того, чтобы хоть как-то разнообразить ее содержание. Кое-какие из планов я начал осуществлять, но столкнулся с одной проблемой. Дело в том, что на Subcsribe.ru ограничен размер письма, и я просто не могу внедрять серьезные информационные блоки непосредственно в рассылку, так как за счет этого придется сокращать размер уроков Паскаля и Гипертекстового языка.
Но придумывать что-то надо, поэтому я решил сделать следующее.
Отныне сайт http://www.plib.f2s.com/ станет местом проживания рассылки. Там откроется большой раздел для подписчиков, где вы и сможете найти разные интересные вещи. Но это пока не полностью готово. Думаю, мне в очередной раз стоит уточнить, как осуществляется доступ к этому разделу.
Вверху на главной странице слева есть табличка, выполненная в сине-зеленых тонах с названием "Подписчикам!". Именно в этой табличке Вы и увидете все ссылки для подписчиков. Сейчас Вы сможете пойти по ссылке "Архив рассылки" или на страницу загрузки Turbo Pascal, где получите доступ к нескольким ON LINE Сервисам:
1. Ваши мнения о рассылке - оставляйте свои мнения и пожелания;
2. Гостевая книга для подписчиков - рассказывайте о себе;
3. Ваши вопросы - задавайте свои вопросы.
А вот ссылка Домашние задания пока не работает. Точнее, она сделана но нужно время, чтобы оформить ее на сайте.
Думаю, это может быть вам интересно, но я буду также постоянно придумывать что-нибудь новое. Да, некоторые люди, бывает, пишут туда что-нибудь не хорошее - например, как я увидел в гостевой книге вместо сообщения тупой набор символов. Ну обращайте на это внимания. Бывает...
Итак, новый выпуск и очередные уроки и новые задания.

 

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

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

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

  Параметры тэгов

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

Итак, я рассказывал вам о некоторых тэгах, которые позволяли так или иначе управлять внешним видом документа. Это были одиночные команды, то есть работающие так и не иначе. Я имею в виду, что тэг <P> будет переносить абзац всегда одинаково - в его работе не может быть никаких различий.
Но тэги - это просто команды, и многие из них требуют дополнительных комментариев. Это значит, что есть некоторые тэги, которые могут выполняться броуером по-разному, в зависимости от того, что конкретно нужно.
Сейчас мы с вами будем учиться управлять шрифтом - его видом, размером и цветом. Что нам при этом будет надо? Вот здесь вы и поймете на наглядном примере, что значит параметры тэга.
Для управления шрифтом используется тэг <FONT>. Это просто команда, встречая которую броузер определяет сразу много вещей - вид шрифта, размер, цвет. Вот эти вещи и передаются как параметр, то есть после самого тэга. Вот пример:

<FONT размер_шрифта цвет_шрифта вид_шрифта>

Заметили указания после самого тэга? Это и есть параметы. Они пишутся вместе с тэгом внутри знаков < и >, являясь как бы частью этой команды. Сделаю сразу несколько комментариев по использованию параметров:
  1. Параметры могут находиться в любом порядке, то есть не важно, что идет сначала - размер_шрифта или цвет_шрифта.
  2. Любое количество параметров может отсутсвовать - т.е. можно, например, указать только вид_шрифта или цвет_шрифта.
  3. Параметров может вообще не быть - <FONT>, тогда просто ничего не измениться, но и не случиться ничего сташного.
  4. Эти правила справедливы для всех тэгов, использующих параметры.
Запомните это. Дальше мы будем изучать много тэгов, требующих указания параметров и вам просто будет легче.

  Тэг <FONT> - управление шрифтом

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

Как я уже сказал, параметры текущего шрифта меняются тэгом <FONT>, который, естественно, имеет завершающую пару - </FONT>. Использование этой пары позволяет печатать текст самыми разными шрифтами, так как можно в любом месте прервать заданный шрифт и изменить на другой.
Параметрами тэга <FONT> являются три основные вещи -

1. Вид (стиль, или просто название) шрифта;
2. Размер шрифта;
3. Цвет шрифта;

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

1. Вид (стиль, или просто название) шрифта;
Этот параметр обозначается в тэге <FONT> как face, после него ставиться знак "=" и указывается сам вид шрифта. То есть все это выглядит так:

<FONT face="Times">

Заметили, я указываю в качестве вида шрифта слово Times. Это шрифт Times new Roman, который для краткости пишется как Times. Если мы напишем в документе строку

<FONT face="Times">Это шрифт Times new Roman</FONT>

то она отобразиться так:

Это шрифт Times New Roman

Заметили, как поменялся шрифт? Здесь сразу хочу сказать, что если вы не знакомы с начертанием шрифтов (обычно с этим хорошо знакомы те, кто часто работает в текстовых редакторах типа Word), не расстраивайтесь. Ничего страшного также, если вам вообще ничего не говорит название Times New Roman. Просто запомните эти названия как названия разных видов шрифтов, попрактикуйтесь с созданием HTML страничек с использованием разных шрифтов и все станет ясно. Разберетесь, здесь нет ничего сложного.

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

Таблица шрифтов, используемых в HTML

Название Пример использования Как выглядит
Arial <FONT face="Arial">Пример шрифта</FONT> Пример шрифта
Times <FONT face="Times">Пример шрифта</FONT> Пример шрифта
Verdana <FONT face="Verdana">Пример шрифта</FONT> Пример шрифта
Courier New <FONT face="Courier New">Пример шрифта</FONT> Пример шрифта

Вот собственно и все основные шрифты. Больше особо нечего говорить про параметр face, здесь и так все просто и понятно. Давайте теперь напишем небольшой пример, использующий разные шрифты.
Пусть это будет некое расписание автобуса.

<HTML>
<HEAD>
<TITLE>Расписание движения автобуса</TITLE>
</HEAD>
<BODY>
<center><B>
<FONT face="Arial">Расписание</FONT>
</center></B>

<!-- переносим абзац -->
<P>

<!-- и пишем само расписание -->
<B>
<FONT face="Verdana">8-00</FONT></B> - Станция метро;<P>

<B> <FONT face="Verdana">12-00</FONT></B> - Остановка "Парк";<P>

<B> <FONT face="Verdana">14-00</FONT></B> - Микрорайон "Северный";<P>

<!-- ...ну и так далее... -->

</BODY>
</HTML>

Откройте "Блокнот" и напечатайте этот текст. Сохраните и откройте в броузере. Ну как? Видите, тут используется несколько шрифтов. Это, конечно, довольно примитивный пример, но как бы там ни было демонстрирует использование тэга <FONT>. Ну а теперь, как я говорил - у меня кончается размер письма и я завершаю свой рассказ о гипертекстовом языке.
Как всегда дам задание, но его мне присылать не нужно будет - мы ведь еще не до конца познакомились с тэгом шрифта. Да и рейтинг с предыдущих ДЗ еще не готов - рецепты пока не вымещены на сайте. Но скоро это произойдет, как я и обещал, а пока занимайтесь.
Задание будет очень творческим:

  Сделайте собственную визитную карточку  

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

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

 

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

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

* Итак, что же про Паскаль? По вашим советам и просьбам я сегодня уточню одну важную вещь - структуру программы, т.е. размещение разделов var, begin, порядок их размещения и функциональные особенности. Читать про это стоит подписчикам не подготовленным, то есть тому, кто понимает, что не знает как оформлять программу.
*Потом нам с вами нужно будет вспомнить про типы данных - это очень важная вещь, мы говорили о ней в прошлых выпусках (см. архив рассылки). В принципе вы должны знать много типов (помните выпуск 3 и его зеленую табличку с диапазоном значений каждого типа?), но все известные вам типы могут хранить только целые числа. Сегодня займемся другими типами данных.
*И после всего этого мы с вами освоим новую вещь, невероятно полезную и довольно простую. Это будет возможность сравнения, так называемая конструкция If...then.....else, но обо всем по порядку, читайте рассылку....

  Структура программы

Вспоним, в программе есть несколько основных вещей - переменные и разного рода операторы, процедуры, выражения. Операторы и процедуры представляют собой непосредственно текст программы, так наз. тело программы.
Эти разные части оформляются в различных разделах отдельно друг то друга. То есть переменные находяться отдельно, тело программы - отдельно. Я думаю, Вы это знаете. Заметьте, я не говорю, что это все части, есть и другие, но об этом будем говорить позже. Итак, решили мы писать программу. Она будет использовать какие-нибудь данные, так ведь? Складывать числа, выводить строки. Для этого заводим переменные, чтобы хранить все эти значения.
1. Все переменные должны быть в разделе var, который всегда идет до раздела begin. Запомните это.
2. Все поцедуры, выражения, структуры и почее что взбредет в голову программисту - только в разделе begin, который соответсвенно заканчивается словом end. (с точкой на конце).
3. Продолжаем уточнения про разделы. Все слова, означающие названия разделов не имеют никаких символов после себя - ни ";", ни ":" ничего другого.

Итак, схема программы на Паскале:

Program Program_name;

var

.
.
описание_переменных
.
.
begin
.
.
тело_программы
.
.
end.

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

  Новые типы данных

Помните, мы с вами разговаривали о типах переменных? О том, как присвоить какой-либо тип и зачем это делается? Тогда мы с вами обсуждали всего лишь типы-числа, причем целые числа, дробные значения им присвоить нальзя. Основные из тех типов были Integer, Byte, Word и LongInt, имеющие замый разный диапазон значений (не пишите мне, что вам не ясно, см. выпуск #3), в которых вам нужно научиться ориентироваться.
Здесь я еще сделаю немаловажный комментарий - типы, схожие друг с другом можно вычитать, складывать, умножать и делить. То есть можно писать так:

Program Program_name;

var

A: Integer;
B: Word;
C: Byte;

begin

A := B - C;
B := C + A;
C := B * A;
end.

* Обращайте внимание на синтаксис! Не забывайте!

Видите, как все происходит? Конечно, это примитивный пример, но он замечательно демонстрирует использование совместимости типов. Если начинаете сейчас путаться, не пугайтесь. Здесь нет абсолютно ничего сложного. Разберем.
Вот, смотрите: Если имеем два числа, A: Integer; B: Word;.
Определимся, что они могут?
Переменная А - может хранить значения от -32000 до +32000 (я примерно пишу)
Переменная В - может хранить значания от 0 до 65500 (тоже не точно, см. зеленую таблицу в 3)
А теперь представьте, число А = 12, а число В = 15. Ну как, мы разве не сможем их сложить? Еще как. А вычесть? Тоже. А умножить? И это у нас выйдет.
Теперь такая ситуация - если результат помещается в переменную В (тип Word), но он отрицательный? (Следите за ходом моих мыслей). Что выйдет? Ведь тип Word не может хранить отрицательные числа, а я только что вел разговор о совместимости.
Выйдет то, что значение числа B будет испорчено. Совместимость есть, Паскаль ошибки не выдаст. Но значение будет потеряно. Поэтому лучше использовать совершенно одинаковые типы, с этим будет меньше проблем, либо точно знать, что за результат будет (по крайней мере его диапазон). Если вы здесь не разобрались, ничего. Дальше все станет ясно, и если что, будете знать где это найти. В общем, информация в копилку.

Нормально напомнил, вспомнили?

Как бы там ни было, все эти типы позволяют хранить только числа. Считывая переменную процедурой Readln мы может прочитать в такую переменную только число. Но этого очень мало и в программе никак не обойтись без других данных. Кроме этих типов существуют еще числовые, но позволяющие хранить дробные числа. Правда, о этой группе типов отдельный разговор, их мы будем обсуждать после, пока они нам не нужны.
Гораздо более интересными сейчас будут другие, которые позволяют хранить строки и символы. Тем более, их всего два и они очень простые и понятные.
Итак, зачем же нам иметь переменные, позволяющие хранить символы?
Давайте вспомним приводимый мной как-то пример программы, выводящей Hello, world!, написанной для демонстрации работы процедуры Write. Помните? Она печатала строку, которая как бы слита с программой и не может быть изменена во время ее работы. Давайте перестроим эту программу и напишем ее модифицированный вариант. Действовать будем так (напоминаю, последовательность действий называется алгоритм):

  1. Выведем на экран строку "Введите Ваше имя: "
  2. Прочитаем имя с клавиатуры
  3. Выведем на экран строку "Привет, ИМЯ!"
Начинаем писать программу и как всегда определимся, что нам нужно.
1. Для того, чтобы вывести строки будем просто использовать Write.
2. А вот для того, чтобы прочитат, сохранить и вывести имя, используем переменную, которой зададим тип-строку.

Тип "строка" изображается так: String.

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

var

Name: String;

Ну а теперь вроде все разобрали, все понятно и можно писать программу. Ее текст будет выглядеть так:

Program Ask_name;

var

Name: String;

begin

Write('Введите Ваше имя: ');
Readln(Name);
Write('Привет, ',Name,'!');
Readln;
end.

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

Write('Привет, ',Name,'!');
Эта строка выводит именно "Привет, ИМЯ!". Заметили, восклицательный знак находиться после переменной? То есть переменная получается как бы внутри выводимой строки. Именно для того, чтобы это сделать я использовал несколько параметров процедуры Write; - т.е. чередовал символы с переменной. Так можно напечатать любой текст, содержащий где угодно в себе переменные. Запомните этот прием, а то некоторые ломают голову над этим - используют несколько процедур Write для вывода всех частей строки отдельно и т.д.

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

  IF...THEN...ELSE - Важная конструкция языка

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

Нам нужно написать программу, которая:
  1. Запрашиват два числа;
  2. Далее проверяет, если 1-е число больше второго, выводит: "1-е больше, чем второе"; если 2- больше 1-го, то выводит: "2-е больше, чем первое";

В программе явно нет ничего сложного. Но есть одна деталь - как мы проверим эти числа на БОЛЬШЕ/МЕНЬШЕ? Вот здесь нам и понадобиться конструкция If...Then...Else, о которой я вам сейчас и расскажу.

IF..Then..Else - (англ. Если....То...Иначе). Очень важная и необходимая конструкция Паскаля. Используется для проверки каких-либо условий. В этой конструкции используются знаки сравнения, которые в Паскале обозначаются так:

> Бoльше
< Меньше
>= Бoльше или равно
<= Меньше или равно
<> Не равно

Запомните эти знаки, они вам дальше очень понадобятся. И не пугайтесь, если что-то не понятно. Сейчас все разъясниться, как только я приведу пример и сделаю к нему комментарий.

Итак, как же оформить конструкцию if...then...else? Для начала давайте запишем словами сравнение двух чисел А и В:

1. Если А > B То Write(A,' больше чем ',B,'!')
2. Иначе Write(B,' больше чем ',A,'!');

Посмотрите внимательней на приведенный пример. Разобрались? Теперь посмотрим, как выглядит эта конструкция на Паскале:

If A > B Then Write(A,' больше чем ',B,'!')
else Write(B,' больше чем ',A,'!');

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

  1. Сначала идет служебное слово If
  2. После него стоит первая проверка, в которой как раз и используются знаки сравнения, приведенные мной в таблице.
  3. Если эта проверка выполняется верно, то есть A > B, то выполняется действие, указанное после слова Then. Обратите внимание, что после действия (процедуры Write) нет точки с запятой - ";". Она не ставиться перед словом Else.
  4. Если же проверка не верна, то есть A < B то выполняется действие, указанное после слова Else. После этого действия уже ставиться точка с запятой.

Замечание. Слова Else может и не быть. Это используется тогда, когда нужно выполнить всего одно условие и не делать ничего, если оно не верно. В таком случае после действия, указанного за словом Then ставиться ";". Вот такой пример:

If A > B Then Write(A,' больше чем ',B,'!');

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

Program Primer;

var

A,B: Integer;

begin

Write('Введите A: ');
Readln(A);
Write('Введите B: ');
Readln(B);
If A > B Then Write(A,' больше чем ',B,'!')
   else Write(B,' больше чем ',A,'!');
Readln;
end.

Комментировать программу я не буду, так как нам уже нужно как-то усложнять материал. Разберитесь в ней, введите в Паскале и запустите. Видите, она реагирует на величину чисел? А теперь вспомните, что мы проходили сегодня новый тип - String. Его тоже можно с успехом использовать, поэтому привожу еще пример:

Program Primer;

var

S1,S2: String;

begin

Write('Введите 1-ю строку: ');
Readln(S1);
Write('Введите 2-ю строку: ');
Readln(S2);
If S1 <> S2 Then Write('Строки не равны!')
   else Write('Строки равны!');
Readln;
end.

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

Program Primer;

var

A: Integer;

begin

Write('Введите число: ');
Readln(А);
If А < 0 Then Write('Число отрицательное!')
   else Write('Вы ввели число: ',A);
Readln;
end.

Разберитесь самостоятельно в этих всех программах. Запускайте их, меняйте - смотрите, как измениться работа. Ну а пока к сожалению я исчерпываю лимит письма и на этом заканчиваю. Но на последок немного домашних заданий. Правда, эти мне присылать не нужно, я придумал их для того, чтобы Вы смогли попрактиковаться самостоятельно в написании программ и использовании конструкции if...then...else. Программы как всегда в порядке возрастания сложности. Итак, практика:

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

Ну вот и все на сегодня про Паскаль. Этот урок получился довольно большим, но вы узнали достаточно нового. Хочу вам напомнить, что нужно разобраться во всем, о чем я говорю - иначе вы не добьетесь больших результатов. Осваивайте, пишите свои программы - и обязательно решайте мое домашнее задание! Если оно вам покажется довольно нудным, не обращайте внимания и сделайте просто для закрепления пройденного. Далее придется очень часто и развернуто использовать if...then...else, поэтому добейтесь уверенности в своих знаниях этой конструкции.
В следующем уроке мы займемся тем же самым, но гораздо серьезней и напишем пару программ посложнее.
А пока до свидания, учите и занимайтесь!

 

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

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

 1 
Вы научите меня программировать?
Постараюсь, именно в этом и состоит моя задача.

 2 
Можно ли получить от меня архив рассылки по почте?
Нет, друзья, к сожалению нельзя. У меня невероятное ограничение на траффик. Посылать Вам архивы по почте это лишние 2-3 мегабайта в день. Еще раз извиняюсь кому не прислал, скоро на сайте http://www.plib.f2s.com/ появятся выпуски в архивах. У кого нет Интернета, сможет скачать их по почте с помощью спец. программ.

 3 
Как в таблице убрать внутренние границы между ячейками и сторонами или сделать их такими как цвет фона?
Используйте след.:

1. Либо добавляйте в описание таблицы border=0, т.е. <table border=0>
2. Либо добавляйте cellpadding=0 cellspacing=0, т.е. <table cellpadding=0 cellspacing=0>

 4 
Можно ли программу, напечатанную в текстовом файле скопировать в Turbo Pascal? Если можно то как?
Можно только сохранить текстовый файл с расшрирением PAS и открыть в Паскале. Скопировать же через буфер (как в WINDOWS) нельзя, программы DOS не держат буфер друг между другом.
 5 
Как мне в "Блокноте" сохранить файл с расширением .HTM или .HTML?
1. Выберите из меню Файл пункт Сохранить или Сохранить как.
2. Далее в строке ввода Имя файла наберите имя файла, написав его с расширением .HTM или .HTML, например так: имя.html. При этом игнорируйте в меню выбора "Тип файлa" надпись Текстовые документы (или любую другую).
3. Нажмите кнопку Сохранить. Все OK!


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


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

Назад

Hosted by uCoz