В этом выпуске я продолжаю темы изучения HTML и Паскаля,
начатые в прошлом номере.
Повторять на этот раз мы с вами ничего не будем, а если
и будем, то незначительно отвлекаться на что-нибудь из прошедшего
материала. Ко мне пришло довольно много писем, в которых вы
пpосили меня преподносить больше материала, то есть делать
рассылку насыщенней. Да, я с вами полностью согласен, так
и должно быть. Но хочу сделать уточнение - в прошлом выпуске
я оговорился, что будет в нем будет большое вступление и я
пока не буду гнать лошадей, так как было много новых подписавшихся
(после повторной публикации в рассылке "Новости проекта CityCat").
Тем самым я постарался дать возможность новым подписчикам
ознакомиться с рассылкой и постараться догнать пройденный
материал.
В этом выпуске я уже начинаю более серьезное обучение, вам
придется учить больше, чем обычно. Будет довольно много нового
материала, который я постараюсь рассказывать более кратно,
сжато и по существу.
Если же вам что-то не понятно, скачивайте прошлые выпуски
из архива рассылки на сайте Библиотека программиста - http://www.plib.f2s.com/.
Кроме того, я в выпуске N4 задавал домашнее задание, лучшие
варианты которого обещал поместить на сайте, сделав из них
рейтинг. Я недавно выполнил обещание - можете зайти глянуть
на сайт по адресу http://www.plib.f2s.com/.
Там через форму Подписчикам! пройдите по ссылке "Домашние
задания".
Еще многие просили меня выложить на сайт 4-й выпуск. Чтож,
4 и 5 выпуски появились в архиве. Смотрите!
Я недавно задумал поместить краткое описание этой рассылки
- "Уроки для начинающих программистов" на главной странице
сайта Библиотека программиста,
отведя для этого специальный информационный блок - если Вы
были на сайте, поймете о чем я.
Так вот, когда я начал составлять это краткое описание,
мне в голову пришла идея - а почему бы не объявить конкурс
на лучшее описание рассылки? Ведь никто не оценит рассылку
лучше, чем ее подписчики! На эту идею меня натолкнуло также
большое количество писем с пожеланиями и предложениями к рассылке.
Но их хоть и много, все-таки не столько, сколько подписчиков.
Количество отзывов не составляет и 10% от общего числа. Конечно,
описание это не рассказ о том, что мы изучает в рассылке -
а скорее Ваше личное отношение к ней, что она Вам дает. Вот
очень поверхностный пример:
"....Уроки для начинающих программистов
- ваша возможность освоить программирование, научиться делать
странички и программирвать под Интернет. Отличная возможность
заниматься этим в свободное от работы время......"
Итак, хочу Вам предложить принять участие в следующем конкурсе:
Напишите описание рассылки "Уроки для начинающих программистов"
Во-первых, это позволит мне лучше понять, что Вы думаете
о рассылке, во вторых, более понравившееся описание будет
размещено на главной странице сайта в качестве аннотации к
форме подписки на рассылку. Попробуйте свои силы!
Теперь условия проведения конкурса:
1. Составьте описание в любом текстовом редакторе
в тексовом виде, никаких тэгов;
2. Пройдите по адресу http://www.plib.f2s.com/
3. На главной странице в первом блоке слева Вы увидите
форму с названием "Подписчикам!". В ней будет ссылка
Написать в конкурс, пройдите по ней.
4. Заполните поля формы - тем самым Вы оставите данные
о себе. В поле ввода "Сообщение" введите текст своего описания.
Здесь удобно воспользоваться буфером.
5. Нажмите подтверждающую кнопку, откроется страница
с сообщением о удаче или неудаче ввода Вашего сообщения.
6. Вот и все, Вы приняли участие в конкурсе!
Помните, присылать мне на почту описание не нужно - отправляйте
только через форму на сайте. Дело в том, что обсуждение
будет происходить не только мной, а также и другими людьми
(конечный вариант, естественно, выберу я), поэтому программа
сама производит необходимые действия по организации.
К сожалению письма, не отправленные через форму, не будут
принимать участие в конкурсе.
Итак, в прошлом выпуске мы с вами изучили тэг управления
шрифтом - <FONT> и его параметр face.
Надеюсь, вы достаточно использовали этот параметр в своих
упражнениях и хорошо освоили различные шрифты. Я говорил,
что у этого тэга есть также и некоторые другие параметры,
а именно управление размером и управление цветом. Этому нам
и предстоит сегодня научиться.
Начем мы с параметра, который управляет размером шрифта
- его то и учить не нужно, здесь все очень посто. После перейдем
к управлению цветом, где придеться кое в чем поразбираться.
Сначала разберемся, что же такое цвет в понятии HTML и как
его нужно составлять. Приведу также таблицу цветовых констант,
но я забегаю вперед. Читайте и разбирайтесь...
Управление размером шрифта |
Для управления размером шрифта используется параметр size
тэга <FONT>. Размер исчисляется в цифрах, то
есть просто указывается его величина, которая может варьироваться
в определенных пределах.
Выглядит этот параметр так:
<FONT size="1">
Или в соединении с параметром face:
<FONT face="Times" size="1">
Величина обычно изменяется в пределах от 1 до 7.
Если вы будете использовать, к примеру, 8 или более
крупное число в качестве размера шрифта, ничего страшного
не будет, просто броузер будет выводить шрифт 7-го
размера, то есть максимально большого.
Вот наглядные примеры использования размера шрифта:
<FONT size="1">
<FONT size="2">
<FONT size="3">
<FONT size="4">
<FONT size="5">
<FONT size="6">
<FONT size="7">
Пример очень хорошо демонстрирует использование параметра
size. Собственно это и все про размер, непонятного
ничего просто не может быть. Разбирайтесь и попрактикуйтесь.
Для управления цветом шрифта используется параметр color.
Значениями этого параметра могут быть как цветовые константы
задающие цвет напрямую, так и определенные числовые комбинации,
задающие цвет по интенсивности каждого составляющего. Разберем
оба варианта по отдельности.
Итак, что же такое цветовые константы?
Константа - как вы помните еще со школы, это постоянная
величина. В HTML существуют такие "постоянные величины" для
определения цвета - они напрямую задают цвет. Эти константы
являются словами - английскими названиями цветов (black, blue,
red) - и ими очень легко манипулировать. На самом же деле
они переводяться броузером в числовые комбинации (о которых
я упоминал), задающие интенсивность составляющих цветов.
Итак, черный цвет обозначается как black. Красный
- red. (Это все англ. слова).
Теперь смотрите, как мы пишем двумя цветами:
<FONT color="red">Это красный шрифт</FONT>
- <FONT color="black">Это черный шрифт</FONT>
Этот код соотвественно выведется так:
Это красный шрифт - Это черный шрифт
Пишем так:
<FONT color="blue">Это голубой шрифт</FONT>
- <FONT color="green">Это зеленый шрифт</FONT>
Этот код соотвественно выведется так:
Это голубой шрифт - Это зеленый шрифт
Заметили, как несложно изменить цвет?
Теперь я приведу таблицу с большинством цветовых констант:
Наглядное отображение |
Значение параметра color |
|
black |
|
maroon |
|
green |
|
olive |
|
navy |
|
purple |
|
teal |
|
gray |
|
silver |
|
red |
|
lime |
|
yellow |
|
blue |
|
lightblue |
|
fuchsia |
|
aqua |
|
white |
Вот вам большой набор цветовых констант. Напомню, если вы
подписаны в текстовом формате, то не увидите примеров цвета
- придется в ручную пробовать все приведенные константы.
В приведенной таблице довольно много цветов и их может с
лихвой хватить для начала. Но я уверен, что вы захотите использовать
какой-нибудь другой цвет, отличный от приведенных. Что же
делать тогда? А вот теперь мы уже подходим к настоящему определению
цвета.
Определение и составление цвета
На самом деле любой цвет в компьютере состоит из трех цветов:
красного, зеленого и синего. Что это значит? Что любой цвет
это ничего более, как три приведенных цвета только разной
интенсивности. Что же такое интенсивность?
Интенсивность цвета - это процент его содержания
в составляемом, новом цвете.
То есть получается, что если соединить три цвета: красный, зеленый и синий, но с разной интенсивностью,
то мы будем получать разные цвета. Повторюсь, эти три цвета
являются основой всех других. Из них и только из них состоят
все цвета.
Как же это происходит? Как составить новый цвет, задав интенсивность
сразу трех, как управлять этой интенсивностью? Здесь на самом
деле все очень просто. Если вы учили не только HTML, но и
Паскаль, то помните такой тип - Byte. Его значение
может изменяться в след. пределах: 0...255. Помните?
Именно этот тип и является основополагающим при определении
интенсивности цветов. То есть интенсивность может изменяться
от 0 до 255. Самая малая - это 0, то есть данного
цвета просто нет, он абсолютно затемнен, то есть попросту
черный. Если 127 - то это где-то серединка, то есть цвет в
половину своей насыщенности. Если же используется 255 - то
интенсивность максимальна, цвет абсолютно красный, зеленый
или синий.
С интенсивностью разобрались - теперь посмотрим, как же
комбинировать три цвета, чтобы составить любой.
Для того, чтобы получить требуемый цвет, нужно соединить
красный, зеленый и синий в одно, но в определенной последовательности.
Точнее, именно в той, какую я привожу:
1. КРАСНЫЙ
2. ЗЕЛЕНЫЙ
3. СИНИЙ
Зная эту последовательность, мы можем задавать просто значения
интенсивности:
1. 255
2. 255
3. 255
Вот мы задали интенсивность всем трем цветам. Что получилось?
Белый цвет. Почему, спросите вы? Максимальная интенсивность
всех цветов будет равна БЕЛОМУ цвету. А вот если написать
так:
1. 0
2. 0
3. 0
То это будет ЧЕРНЫЙ цвет. Интенсивность всех цветов минимальна,
что соответсвует ЧЕРНОМУ. Далее вы начнете это понимать, уверяю
вас, но пока нужно еще кое-в чем разобраться.
Таким образом можно получить абсолютно любой цвет, его желаемый
оттенок и насыщенность. Здесь можно посчитать интереса ради,
сколько таким образом можно составить цветов:
Количество цветов = 256 * 256 * 256 = 16581375.
16581375 - это и есть количество возможных цветов. Думаю,
среди них есть требующийся вам. Обратите внимание, что я возвожу
в 3-ю степень не 255, а 256 - это потому, что диапазон от
нуля до 255 имеет на самом деле 256 значений - сюда включается
и ноль.
Итак, надеюсь вы поняли, что я вам объяснял про цвет. Если
же нет, то сейчас на практике вам станет понятнее, читайте
дальше.
Теперь мы знаем, как составляется цвет. Но как указать желаемый
оттенок в HTML? Это несложно. На самом деле мы прямо цифрами
и напишем в параметре color, задав интенсивность каждого
цвета. Число это будет составлено из трех частей - интенсивности
красного, зеленого, синего.
Составляем число. Для этого выберем цвет, например, абсолютно
красный, что будет соответсвовать такой комбинации (помните
порядок размещения цветов):
255 0
0
Вот мы и составили цветовую комбинацию. Ее и нужно записать
в параметре color, но с оговоркой - интенсивность каждого
цвета должна быть в шестнадцатеричной системе счисления. Что
это значит? На самом деле ничего сложного. Шестнадцатеричная
система счисления - это несколько специфичное представление
чисел, иное, чем то, которым мы с вами привыкли пользоваться.
Она очень часто используется в компьютере и желательно уметь
переводить числа из нашей с вами - десятичной - в шестнадцатиричную
систему. Но, скорее всего, вы этого не умеете. Как же поступить
в этом случае? Выход из этой ситуации довольно простой.
В Windows существует калькулятор, который входит в стандартную
установку. Воспользоваться им можно так:
Нажмите кнопку Пуск, далее выберите Программы
> Стандартные > Калькулятор. Получилось? Возможно,
вы и не найдете там калькулятора - тогда его можно будет скачать
с сайта рассылки (http://www.plib.f2s.com/)-
пройдите по ссылке "Программы" из формы "Подписчикам!"
на главной странице. Туда будет помещаться большинство программ,
используемых нами в работе. На сегодняшний день вы сможете
найти там Калькулятор и Turbo Pascal.
Итак, запустили вы калькулятор. По умолчанию он в стандартном
виде, то есть просто умеет считать, ничего более. Нам нужно
перевести его в более функциональный вид, для чего мы делаем
следующее:
Выбираем в меню "Вид" пункт "Инженерный",
делая его активным.
Ну как, вид сильно изменился? Теперь переводим по порядку
всю нашу комбинацию - 255 0 0 - в шестнадцатиричную систему
счисления. Скажу, что нули в любой системе остаются нулями,
поэтому их мы переводить не будем. Итак, чтобы перевести число,
нужно выполнить следующие шаги:
- В левой половине калькулятора есть набор переключателей:
Hex, Dec, Oct, Bin. Установите Dec. Это
означает, что мы переводим из десятичной (нашей с вами)
системы.
- Нажмите кнопки 2, 5, 5, или наберите эти цифры
на клавиатуре. На табло должно показаться: 255.
- В наборе переключателей, которого мы уже касались выберите
переключатель Hex, что означает перевод числа в
16-ю систему.
- Видите, число 255 изменилось на FF? Это
и есть 255 и 16-й системе счисления. Это все, мы перевели
число!
Теперь продолжаем составлять значение требуемого цвета.
Сейчас мы уже имеем все, что нам нужно, а именно комбинацию:
FF 0 0
Теперь можем записать это в коде HTML, но нужно дополнить
однозначные числа, то есть сделать их двузначными. В данном
случае у нас одноначные числа это нули, то есть они имеют
одну цифру. Нам же нужно три комбинации по две цифры. FF -
это две, а 0 - это одна. Что делать? Поступаем просто - дополняем
однозначные числа нулями в начале:
FF 00 00
Ну а теперь действительно все. Просто убираем пробелы и
получаем число:
FF0000
Это и есть красный цвет. Ну как? Если вы запутались, не
пугайтесь. Это все только начало, пока многим не понятно.
Но от этого никуда не уйдешь, знать это надо, так что разбирайтесь
и практикуйтесь. Далее в этом выпуске мы еще позанимаетмся
вместе и я вам покажу, как можно получить и отразить в HTML
совершенно любой цвет. А пока запишем все в конечном варианте:
<FONT color="#FF0000">
Сдесь налицо, что я перед полученным значением цвета ставлю
символ "#". Запомните, он не ставиться перед константой,
что вы и могли видеть в прошлых примерах, но ставиться перед
прямым определением цвета.
Давайте теперь для примера зададим цвет, который будет являться
помесью красного и зеленого. Для начала определимся, как он
будет изображаться. Скажем, красный будет максимально насыщенным,
и зeленый - сердненасыщенным. Синего в нашем комплекте не
будет совсем, поэтому цифры будут такими:
255 127 0
127 - это середина, что соответсвует средней насыщенности.
Итак, переводим все значения с помощью калькулятора Windows
в 16-ю систему:
FF 7F 0
Дополняем однозначные числа нулем в начале:
FF 7F 00
И пишем в HTML:
<FONT color="#FF7F00">Это новый цвет</FONT>
В броузере выведется такая строка:
Это новый цвет
Вот, собственно и все! Видите, какой интересный цвет? Вы
когда-нибудь подумали бы, что этот цвет не что иное, как смешанный
красный и зеленый? Моделируя таким образом соотношение красного,
зеленого и синего вы сможете получить любой цвет, какой захотите.
Ну а теперь я хочу рассказать вам, как действительно просто
получить любой цвет, не мучаясь с подбиранием соотношения
трех. Вы, как будущие дизайнеры должны уметь получить любой
желаемый цвет и уже пора этому учиться. Но так как еще нет
навыков быстро подбирать значения параметра color,
то я хочу предложить вам один очень оригинальный способ получения
цветов, с помощью которого вы действительно сможете выбрать
люобй оттенок и насыщенность.
Понадобиться вам для этого все тот же калькулятор и еще
графический редактор Paint, который уже точно должен
быть в Windows - это стандартное приложение и вы наверняка
его знаете. Найти его можно по такому пути: Пуск > Программы
> Стандартные > Paint.
Итак, если у вас все готово, начнем.
Как выбрать необходимый цвет? |
Вы решили использовать какой-нибудь цвет, который отсутсвует
в наборе стандартных констант. Получить его опытным путем
составив из чисел в 16-й системе счисления на первых порах
тоже сложно, а иногда и вообще не представляется возможным.
Но есть выход проще - давайте для этого запустим графический
редактор Paint и попробуем разобраться.
Итак, расписываю по шагам получение цвета при помощи подручных
программ:
- Запускаем Paint.
- Запускаем Калькулятор.
- Теперь в Paint смотрим на панель цветов (внизу
слева) - по умолчанию вы видите стандартный набор. Щелкните
дважды по какому-нибудь цвету, при этом появиться окно
c названием "Изменение палитры".
- В этом окне уже побольше цветов, но они нам пока не
нужны. Нажимайте кнопку "Определить цвет >>".
- Что вы видите? Окно расширилось, теперь можно выбрать
более тонкий оттенок и вариант цвета. Здесь вам и карты
в руки - выбирайте мышью любой понравившийся цвет, ей
же отрегулируйте оттенок, насыщенность и контраст. Готово,
цвет определен?
- Теперь самое главное - нужно перенести этот цвет в HTML.
Для этого воспользуемся полученными знаниями о том, что
любой цвет состоит из трех - красного, зеленого и синего.
Для того, чтобы составить цвет нам нужно знать насыщенность
каждого из них. Так вот, вся прелесть в том, что Paint
показывает нам все эти три значения! Смотрите их окошках
с пометками "Красный:", "Зеленый", и "Синий:" соответсвенно.
Запомните их или запишите.
- Теперь переходим к Калькулятору, изменяем его
вид на "Инженерный" и описанным выше способом переводим
все эти три значения в шестнадцатеричную систему счисления.
- Вот и все, вы получили желаемый цвет! Теперь записывайте
его в своем HTML документе.
А теперь про цвет все. Безусловно, сегодняшняя тема довольно
сложна и необычна, но одновременно чрезвычайно необходима.
Вам просто нельзя в ней не разобраться, так как цвет - это
основна HTML. Именно умение составлять композицию цветов и
является основой дизайнерского искусства. Далее, когда мы
достаточно хорошо изучим HTML, мы будем учиться основным композициям
- как составить цвета таким образом, чтобы получился наглядный
и приятный сайт, основные цветовые схемы, постараюсь помочь
вам выработать свой стиль. Главное - разберитесь в этой теме,
научитесь передовать цвета из графического редактора в HTML,
это очень важно. Поверьте мне.
Ну а если всеже многим будет не понятно, то не расстраивайтесь
- я вполне смогу вернуться к этой теме в следующих выпусках.
Сообщайте свои достижения!
Уважаемые подписчики! Задания, которые я вам сейчас задам
присылать мне не нужно! Я просто постараюсь направить вам
на верный путь - где, в чем и как практиковаться. Поэтому
задачи не будут подлежать проверке, оин просто направляющие.
Итак, советую сделать следующее:
1. Составьте страничку, на которой будет столбик
из строк, написанных по возможности разными шрифтами. Гглавное,
цвет строк должен изменять цветовую гамму с черного на свето-серый,
вот начало для примера:
Это текст
Это текст
Это текст
Это текст
Это текст
Это текст
Это текст
В общем, постарайтесь сделать как можно более плавный переход.
Пользуйтесь средствами редактора Paint и Калькулятора.
2. Также посоветую сделать несколько гамм - изменение
то синего к зеленому и так далее. Должно быть вроде такого:
Это текст
Это текст
Это текст
Это текст
Это текст
Это текст
Это текст
Только переход должен быть плавнее. Можете растянуть его
строк на 30-40, будет отлично. Поверьте, это не сложно, но
позволяет лучше почувствовать цвет. Практикуйтесь с такого
рода гаммами!
Ну а пока про HTML все. Не расстраивайтесь если возникнут
сложности, перечитайте урок раз, два - пока не поймете. По
опыту скажу, что сначала до большинства это не доходит, правда
я вам довольно нестандартно все объяснял, с изменениями, как
мне кажется в лучшую сторону. Короче, в учебных заведениях
учят по другому, там понимать сложнее.
Итак, как всегда возвращаемся к Паскалю. В прошлом уроке
мы начали изучение конструкций языка, освоили одну из них
- if...then...else, которая дала нам возможность выбирать
условия прямо в программе и влиять на ее выполнение.
Вроде бы по этой конструкции все, но нет - так быстро во
всех тонкостях не разобраться. В ней существуют некоторые
сложности, или просто нюансы - на которые нужно обратить внимание.
Также надо двигаться дальше - пора заняться новыми типами
и процедурами.
Хочу сказать, что нам осталось не так уж много теории, после
чего начнется одна практика - мы будем стараться писать много
программ, чтобы закреплять все пройденное и развивать алгоритмическое
мышление, так необходимое программисту.
Сейчас нам нужно освоить один прием, который является очень
важным и, возмножно, вы уже сами сталкивались с необходимостью
его применения.
Это вложенность, или, если забыть про стандартные определения,
просто ситуация, когда нужно после проверки условия выполнять
не одно, а несколько действий если условие верно, после чего
также выпонять несколько действий, если условие не верно.
Здесь нам не обойтись без примера, который я сейчас приведу.
Давайте напишем программу, которая будет:
- Читать два числа A, B с клавиатуры;
- Складывать их и если сумма больше 50, то:
- Читать A еще раз;
- Опять складывать A и B;
- Выводить ответ на экран (уже ничего не проверяя).
- Если сумма меньше 50, то:
- Читать B еще раз;
- Вычесть A и B;
- Выводить ответ на экран (уже ничего не проверяя).
- Конец программы.
Как мы здесь будет поступать? Заметили, нам нужно выполнять
несколько действий, в ходе проверки. Все это, в принципе могло
бы выглядеть так (только алгоритм):
If A+B > 50 Then
Readln(A);
A := A + B;
Write(A);
else
Readln(B);
A := A - B;
Write(A);
|
Выглядит, вроде, без ошибок. Но попробуйте, напишите так
программу. Ничего не выйдет, в конструкции if...then...else
должно быть только по одному действию. Как же поступить?
Здесь нам на помощь приходит возможность вложенности. Как
же это реализовать? На самом деле очень просто. Необходимо
заключить все действия в отдельные служебные слова begin
и end; - то есть сделать как бы маленькую программку
в основной программе или сделать ее вложенной - отсюда и название
"вложенность". Только запомните, после слова end, если
вы его используете для обособленности оператора в конструкциях,
ставиться точка с запятой - ";", а не точка! Точка
ставиться только в конце программы. Без исключений.
Итак, модифицированный вариант нашей программы, уже полностью:
Program Primer;
var
A,B: Integer;
begin
Write('Введите A:
');
Readln(A);
Write('Введите B:
');
Readln(B);
If A+B > 50
Then
begin
Readln(A);
A := A + B;
Write(A);
end
else
begin
Readln(B);
A := A - B;
Write(A);
end;
Readln;
end.
|
Вот, собственно и все. Этот метод применяется везде и повсеместно.
Уверяю вас, скоро вы забудете про него и это уже будет получаться
автоматически. А пока запомните это и вспоминайте при необходимости.
Теперь новая процедура, часто используемая в совокупности
с конструкций if...then...else. Это процедура goto,
о которой рассказываю подробно.
Меня часто спрашивают, как же сделать программу по настоящему
интерактивной, то есть работающей в зависимости от действий
пользователя, не всегда заканчивающей работу после того, как
она выполнит какие-нибудь действия. Это возможно, причем просто
и мы сейчас этим займемся. А поможет нам в этом процедура
goto.
Процедура Goto - осуществляет переход в какое-нибудь
место в программе из любой ее точки. То есть с ее помощью
можно "прыгать" по программе. Обычно эти прыжки происходят
из-за каких либо условий, вот пример:
- Вводим два числа;
- Складываем их и выводим сумму на экран;
- Спрашиваем, повторить ли действие?
- Если ответ утвердительный, переходим (прыгаем) на пункт
1 данного алгоритма.
- Завершаем программу.
В этом примере программа может выполняться бесконечно, пока
ответ пользователя будет утвердительным. Как же это сделать?
Команда goto переходит к определенному месту, которое
помечатется так называемой "меткой". Эти метки - особенный
тип Паскаля, может даже сказать и не тип, а часть языка. До
того, как их использовать, метки нужно описать - сообщить
Паскалю о их наличии. Описание меток поисходит также, как
и описание переменных.
Для описания меток имеется специальный раздел, наподобие
var (помните, я говорил, что var и begin-end
не единственные разделы?) только гораздо проще его. Метки
не имеют типа, нужно просто задать им имя. Раздел с метками
назвается label и оформляется следующим образом:
Program UseGOTO;
label
First;
var
A,B: Integer;
begin
First:
Write('Введите A:
');
Readln(A);
Write('Введите B:
');
Readln(B);
If A > B Then goto First;
Readln;
end.
|
Этот пример хорошо демонстрирует использование процедуры
goto. Посмотрите внимательно на программу. Что она делает?
Запрашивает два числа и если 1-е больше чем 2-е, то повторяется
сначала. Необходимые комментарии:
- label
- First;
Это и есть раздел описания меток. Служебное слово label
озаглавливает этот раздел, после него идут имена меток. Если
меток несколько, то они перечисляются через запятую.
- First:
Так устанавливается метка в программе. Обратите внимание на
синтаксис - после имени метки ставиться двоеточие - ":".
- If A > B Then goto First;
А это и есть переход при выполнении условия. Заметьте, в конструкии
if...then...else отсутсвует слово else, оно
нам не нужно, так как мы не делаем ничего при невыполнении
условия.
Вот, собственно и все. А теперь давайте вспомним ту задачу,
которую я представил вначале - ввести два числа, сложить и
запросить повтор. (см. выше).
Итак, напишем эту программу с учетом пройденного материала:
Program UseGOTO;
label
Again;
var
A,B: Integer;
S: String;
begin
First:
Write('Введите A:
');
Readln(A);
Write('Введите B:
');
Readln(B);
Writeln('A+B = ',A+B);
Write('Еще раз? (Y/N): ');
Readln(S);
If S = 'Y' Then goto First;
Readln;
end.
|
Откройте Паскаль и введите эту программу. Запустите ее на
выполнение - видите, она уже полностью реагирует на действия
пользователя и как бы самостоятельно принимает решение, что
делать дальше. Вот это уже полностью интерактивная программа,
хотя и простая.
Особых комментариев, думаю, не требуется - все рассказывал
ранее. Вот только я использовал одну процедуру, которую мы
с вами пока не проходили - думаю, стоит объяснить ее работу.
Процедура Writeln - эта процедура работает
точно так же, как и Write, но после того, как выведет строку,
она переносит курсор на новую строку. Если вы читали про HTML
в прошлых выпусках, то увидите сходство с тэгом <BR>
Мне часто задавали вопрос, как переносить строки, отделяя
таким образом переменные и прочие части вывода. Запомните,
для этого и используется эта процедура. Ею можно вообще просто
отделять строки - сколько раз вы ее напишите, столько строк
будет попущено.
В нашем примере я вывожу с ее помощью строку A+B = (результат),
после чего сразу же переноситься курсор и уже обычной процедурой
Write выводиться Еще раз? (Y/N). В общем, это очень
полезная процедура и невероятно необходимая.
Ну а сейчас мы продолжаем и следующий раздел - типы.
В прошлом выпуске мы с вами изучили новый тип, позволяющий
работать со строками символов. Это был тип String,
с его помощью можно хранить любые данные в текстовом виде,
запрашивать программой строки будь то имя, фамилия или что-нибудь
еще. Очень полезная возможность, не так ли? Но вот давайте
представим, что мы решили запросить не целую строку, а один
символ, например в качестве ответа на такой вопрос:
Повторить действие? (Y/N):
Здесь видно, что ввести нужно всего лишь одну букву - Y
или N. Заводить для этого целую строку нецелесообразно,
хотя и можно. Но при этом программа получается более громоздкой
- целая строка используется для хранения всего лишь одного
символа. При этом мы теряем память, засоряя ее; работа несколько
замедляется, так как строки долго обрабатываются. В общем,
здесь встает вопрос оптимизации, который волнует абсолютно
всех программистов на свете.
Именно для таких целей - оптимизации - существует один тип,
тоже символьный, он более простой, чем строки. Это тип Char.
Char - Переменная этого типа способна хранить
всего лишь один символ. Это как бы строка, но с максимальной
длиной, равной единице. Он очень удобен для некоторых случаев:
невероятно экономит память, ускоряет работу и позволяет легче
состалять программу.
Вот примеры присваивания значений переменной типа Char:
Program UseCHAR;
var
C: Char;
begin
C := 'Y';
Write(C);
C := ':';
Write(C);
Readln(C);
If C <> 'Y' Then Write('C не является буквой Y!');
Readln;
end.
Посмотрите внимательно на пример. Он очень простой, введите
его в Паскале и посмотрите, что он делает. При его работе
выводиться: Y: после чего программа ждет ввода. Если
введенный символ не буква Y, то об этом сообщается
пользователю. Необходимые пояснения к типу Char.
- Переменной типа Char можно прямо в программе присвоить
значение. Это делается посредством знака присваивания: ":=",
после которого должен находиться символ, заключенный в одиночные
кавычки (апострофы): 'A'.
- Переменную можно с успехом использовать в конструкциях
сравнения;
- Ее можно читать с клавиатуры. При этом если мы введем
строку, состоящую из нескольких символов, то значением переменной
Char станет только 1-й символ.
- Его можно прибавлять к строке:
Program UseCHAR;
var
- C: Char;
- S: String;
begin
- Write('Введите строку: ');
- Readln(S);
- Write('Введите символ: ');
- Readln(C);
- S := S + C;
- Write('Если это сложить, получиться: ',S);
- Readln;
end.
Но вычитать нельзя!!! Запомните это.
- Переменная типа Char может хранить совершенно любой
символ, в том числе и букву русского языка (знак кириллицы).
Ну а теперь, напоследок, напишем программу, которая будет
очень хорошо демонстрировать использование строк, символов,
сравнения и goto.
Программа будет читать символы с клавиатуры, пока не прочитает
символ "!" - восклицательный знак. Он будет служить
сигналом окончания ввода. Все читаемые символы будут записываться
в строку, которая по окончанию действия выведстя на экран.
Начнем?
Для начала, как всегда, запишем алгоритм программы, то есть
определимся, что она будет делать и расскажем это простым
человеческим языком. Условимся, что мы имеем две переменных
- S: String; - в нее будут записываться все вводимые
символы;
- C: Char; - этот символ будет постоянно читаться
с клавиатуры.
А теперь алгоритм:
- Читаем символ с клавиатуры;
- Проверяем - если это не "!", то:
- Добавляем введенный символ в строку (прибавляем
его к строке);
- Переходим у вводу символа - пункту 1.
Иначе (символ = !):
- Выводим составленную строку на экран;
- Ставим Readln; тем самым затормаживая программу;
- Завершаем программу;
Вот вроде и все. Теперь текст программы:
Program Primer;
label
A;
var
C: Char;
S: String;
begin
A:
Write('Введите символ:
');
Readln(С);
If C <> '!' Then
begin
S := S + C;
Goto A;
end
else
Write('Вы ввели эти символы: ',S);
Readln;
end.
|
Введите эту программу и запустите. Как вам ее работа? Она
делает все то, что и планировалось, помещает вводимые символы
в строку и выводит ее на экран. Объяснять эту программу по
шагам я не буду, разбирайтесь сами, это будет очень полезно.
Советую написать что-нибудь самостоятельно в этом роде; придумайте
условие и реализуйте его.
А пока на сегодня про Паскаль все, осталась небольшая практика.
Задачи, которые я вам сейчас задам, мне присылать не нужно!
Это работа не будет проверяться, так как является рядовым
заданием для самостоятельного выполнения. Практикуйтесь сами,
вам сейчас нужно больше работать с Паскалем. Итак, задачи:
1
| Напишите программу,
которая будет запрашивать у пользователя данные - ФИО,
дату рождения. После чего будет выводить их на экран
каким-нибудь форматным образом. К примеру, так:
Имя: Василий
Фамилия: Петров
Отчество: Иванович
Родился: 22.11.1961 г.
Сделайте возможность изменять данные, то есть возвращаться
назад. |
2
| Ввести несколько
символов, составляя из них строку. Далее - ввести целую
строку и проверить, равны ли получившиеся строки. |
3
| Запросите
текущее время (в часах). В зависимости от времени суток,
выведете приветсвие на экран, вроде:
"Доброе утро!"
"Добрый день!"
"Доброй ночи!" |
4
| Напишите простейший
калькулятор. Вводите два числа, знак действия (+,-,*.
Без деления!) и выполняйте это самое действие. Ответ
на экран, спросите, начать ли заново, то есть сделайте
его интерактивным. |
5
| Придумайте
сами себе несколько заданий, полезно будет!!! |
Изучите все, что мы сегодня проходили. Нужно понять до конца,
что такое goto, волженность и метки. Это нам дальше
понадобиться, а пока все. Разбирайтесь!
Как всегда самые
оригинальные и очень часто встречающиеся вопросы.
|
У меня
Паскаль не отображает русские буквы, что делать?
|
Видимо, у Вас не загружены драйверы русских букв,
точнее их поддержки с клавиатуры. Загружать их надо
так:
- Найдите в корневом каталоге файл autoexeс.bat
и откройте его. Далее надо вписать такие строки
(разверните письмо на весь эран, так как они почтовой
программой они переносятся посередине, а писать
их в файл autoexec.bat так нельзя. Но я
на всякий случай их пронумеровал).
- mode con codepage prepare=((866) C:\WINDOWS\COMMAND\ega3.cpi)
- mode con codepage select=866
- keyb ru,,C:\WINDOWS\COMMAND\keybrd3.sys
Написали? Сохраните файл autoexec.bat.
Да, еще - если 1-е две строчки (или другие там
есть, не меняйте их), если же путь к папке Windows\command
у Вас другой (не c:\windows\command)
измените его.
- Откройте файл config.sys (он тоже в корневом)
Напишите: (без цифр в начале)
- device=C:\WINDOWS\COMMAND\display.sys con=(ega,,1)
- Country=007,866,C:\WINDOWS\COMMAND\country.sys
- Сохраните это и перезагрузите компьютер. Теперь
запустите Turbo Pascal и нажмите ПРАВЫЙ
CTRL+SHIFT. Компьютер должен пикнуть. Печатайте.
Русский? Отлично. Переключайтесь на Английский
нажатием ЛЕВЫЙ CTRL+SHIFT и обратно. В
общем, здесь комбаниция левый - англ. правый -
русский.
Теперь должно работать.......
|
|
Паскаль
все время при запуске выходит в ДОС. Можно ли что-нибудь
сделать, чтобы он работал в Windows, получить возможность
переключаться между приложениями? |
Это обойти
можно, причем очень просто.
Сделайте следующее:
- Щелкните на файле turbo.exe правой кнопкой
ымши и выберите "свойства".
- Выберите вкладку "Программа".
- Выберите "Дополнительно".
- Уберите флажок "Режим MS DOS".
Нажимайте далее ОК и все.
|
|