Ваша первая программа на Паскале
Вид материала | Программа |
СодержаниеПроцедура GOTO Процедура Goto Процедура Writeln A+B = (результат) |
- Тема урока: Программирование ветвлений на Паскале, 61.32kb.
- Программирование ветвлений на Паскале Оператор ветвления на Паскале, 166.05kb.
- А. В. Розина программирование на паскале методическое пособие, 480.71kb.
- Агенство ваша бухгалтерия, 168.25kb.
- Книга Первая, 7751.74kb.
- Где и кто должен встречать посетителя, 1789.68kb.
- Первая. Новое восприятие проблемы рождаемости глава первая, 1589.66kb.
- Первая. Новое восприятие проблемы рождаемости глава первая, 5106.96kb.
- Кормление среднеазиатских овчарок: слагаемые рациона Чтобы Ваша собака была здоровой, 257.42kb.
- С. В. Элективный курс «Программируем на Паскале» общие вопросы самылкина Н. Н. Программа, 503.53kb.
Процедура 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
Это и есть раздел описания меток. Служебное слово label озаглавливает этот раздел, после него идут имена меток. Если меток несколько, то они перечисляются через запятую.
- First:
Так устанавливается метка в программе. Обратите внимание на синтаксис - после имени метки ставиться двоеточие - ":".
- If A > B Then goto First;
А это и есть переход при выполнении условия. Заметьте, в конструкии if...then...else отсутсвует слово else, оно нам не нужно, так как мы не делаем ничего при невыполнении условия.
Вот, собственно и все. А теперь давайте вспомним ту задачу, которую я представил вначале - ввести два числа, сложить и запросить повтор. (см. выше).
Итак, напишем эту программу с учетом пройденного материала:
|
Program UseGOTO; |
label |
Again; |
var |
A,B: Integer; |
S: String; |
Begin |
Again: |
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 в прошлых выпусках, то увидите сходство с тэгом <ВR>
Мне часто задавали вопрос, как переносить строки, отделяя таким образом переменные и прочие части вывода. Запомните, для этого и используется эта процедура. Ею можно вообще просто отделять строки - сколько раз вы ее напишите, столько строк будет попущено.
В нашем примере я вывожу с ее помощью строку A+B = (результат), после чего сразу же переноситься курсор и уже обычной процедурой Write выводиться Еще раз? (Y/N). В общем, это очень полезная процедура и невероятно необходимая.
Ну а сейчас мы продолжаем и следующий раздел - типы.