Изучение его вещь несколько нудная, но одновременно и интересная.
Почему? Нудная потому, что приходиться учить много однообразного, а интересная потому, что можно писать самые разные программы, развиваясь в разных направлениях.
Что ж, приступаем опять к Паскалю. Я думаю, сегодня не буду приводить новых процедур, точнее, новых серьезных процедур, только некоторые незначительные, позволяющие упростить некоторые рутинные вычисления или действия.
Так вот, разберем несколько маленьких арифметических процедур и напишем небольшую программку, использующую их. Это будет простой урок, реализующий всего пару новых процедур. Но, поверьте, эти процедуры сильно упростят вам жизнь в дальнейшем — и стоит посвятить время, чтобы их освоить. Итак, поехали…
Арифметические процедуры
Давайте возьмем для примера такую ситуацию:
1. У нас есть переменная-число, которую мы используем как счетчик. То есть, где-то в программе постоянно увеличиваем ее на 1, нумерую какие-либо действия или ход программы. Называется и описывается она, скажем, так:
Counter: Integer;
2. Теперь мы начинаем нумеровать действия: каждый раз, когда совершаем новое, увеличиваем ее на единицу. Что делаем? Пишем в программе:
Counter := Counter + 1;
Увеличивается? Конечно. Каждый раз при совершении такого действия переменная будет работать как полноценный счетчик. Но разве это приятно, каждый раз писать Counter := Counter + 1;?
Для того, чтобы увеличивать переменные-числа на определенные величины существует замечательная операция — Inc. Рассматриваем ее подробно (хотя, конечно, это не очень серьезная процедура):
Процедура Inc — (от англ. Increment — увеличение).
Эта процедура увеличивает переменную на заданное число или на другую переменную.
Синтаксис:
1. Inc (переменная, заданное_число (другая_переменная) );
2. Inc (переменная); — при отсутсвии 2-го параметра увеличиывает переменную на единицу (это как бы по умолчанию).
Вам случайно не показалось это сложным? Если да, то зря. Смотрите пример, все очень просто:
1. Имеем переменную Count. Так увеличиваем ее на единицу:
Inc(Count);
2. Таже переменная Count, но увеличиваем ее на 10:
Inc(Count, 10);
Разобрались? Замечательно!
Продолжаем, и следующая операция Dec. Что же она делает? Она наоборот, уменьшает значение переменной.
Процедура Dec — (от англ. Decrement — увеличение).
Эта процедура уменьшает переменную на заданное число или на другую переменную.
Синтаксис:
1. Dec(переменная, заданное_число (другая_переменная) );
2. Dec(переменная); — при отсутсвии 2-го параметра уменьшает переменную на единицу.
И примеры использования процедуры:
1. Имеем переменную Count. Так уменьшаем ее на единицу:
Dec(Count);
2. А так уменьшаем на 7:Dec(Count, 7);
Ну а теперь напишем небольшую программку.
Сначала определимся с условием. Нам нужно сделать что-нибудь до минимума простое. Давайте так:
Нам нужно сложить два числа A и B и вычесть из получившейся суммы C. Здесь получиться 2 действия, мы их все пронуменруем — то есть после каджого действия будем увеличивать еще одно число-счетчик на единицу. Итак, определяем план действий, который называется «алгоритм» — последовательность выполнения действий. Пишем алгоритм:
1. Заводим 3 переменных — A, B, C и переменную-счетчик для нумерации действий — Count.
2. Складываем А и В; При этом увеличиваем счетчик Count на единицу.
3. Вычитаем С. Увеличиваем Count на единицу.
Текст программы:
Program First;
var
A,B,C,Count: Integer;
begin
A := A + B;
Inc(Count);
A := A - C;
Inc(Count);
end.
Если вы читали предыдущие уроки, то без труда разберетесь в этой программе и все поймете. Но если все же нет, то специально для вас разбираем программу по строкам:
1. Program First;
Название программы. Program — это служебное слово, ничего не выполняет и в принципе необязательно. Если используется, то всегда стоит самой первой строкой в программе. В общем, это простой заголовок. Ничего не выполняющий и никому не нужный, но с ним как-то приятнее…
2. var
Это начало раздела описания переменных (см. пред. выпуски). Программа на Паскале состоит из двух самых важных частей — раздела описания переменных и тела самой программы. var — это служебное слово, ничего не выполняющее, но показывающее Паскалю, что начался раздел описания переменных. В этом разделе мы описываем все переменные, которые будут использоваться в программе. Что такое переменная? Это несколько долгий разговор, смотрите предыдущие выпуски.
3. A,B,C,Count: Integer; — это и есть описание переменных. Integer — это их тип. Описание переменных сводиться к озаглавливанию переменнной (приданию ей имени) и приравниванию ее к какому либо типу. Integer означает, что переменная является числом.
4. begin
Служебное слово, показывающее начало тела программы. После слова begin находиться весь текст программы — опрераторы, присваивания, действия. Заканчивается раздел begin служебным словом end.
5. A := A + B;
Складываем А и В, одновременно помещая результат вычисления в переменную А.
6. Inc(Count);
Увеличиваем переменную-счетчик на единицу.
7. A := A — C;
Вычитаем из результата сложения переменную С.
8. Inc(Count);
Опять увеличиваем переменную-счетчик на единицу — ведь выполнено еще одно действие.
9. end.
Это означает конец программы.
Вот и вся программа! Разберитесь в ней, она очень проста. Это программка пока ничего не делает — не читает данные с клавиатуры и не выводит их на экран.
Вопросы — ответы
Можно ли и как копировать строки, чтобы не набирать по нескольку раз одно и то же?
Копирование строк осуществляется через буфер обмена, прямо как в Windows.Для того, чтобы скопировать строку в буфер, необходимо сделать следующее:
- Нажав и удерживая клавишу Shift, Вы передвигаете курсор клавишами-стрелками, вслед за ним текст выделяется белым цветом.
- Выделенный фрагмент текста далее должен быть помешен в буфер:
Для этого нажмите комбинацию Ctrl+Ins (Insert). - Теперь перемещайтесь в место, где хотите вставить текст и нажмите комбинацию Shft+Ins. (Вставка)
Таким образом можно копировать как одну строку, так и огромные блоки. Скажу сразу. что здесь нужны определенные навыки — но это приходит со временем (и быстрота работы и точность).
Как располагать вывод процедуры Write (см. выпуск 3) (например заголовок) по центру?
В принципе, не существует такой процедуры, которая ровняет выводымий текст по центру. Единственное, что я могу Вам пока предложить (самое оптимальное) — это дополнять начало строки пробелами. Вот пример:
Write( 'Заголовок');
Таким образом строка будет сдвигаться от начала экрана и выводиться к середине. Здесь можно посчитать, сколько пробелов сначала необходимо:4. Ширина экрана (в символах) в DOS всегда 80 (а высота — 25 строк).
- Берем длину строки (например, слово «Заголовок» — 9 символов).6. Делим 80 (ширину экрана) на 2 — получаем 40.
- Делим длину строки на 2 и отбрасываем остаток: 9/2 = 4.8.
- Вычитаем из половины экрана (40 симовлов) половину длины строки: 40 — 4 = 36.9.
Это число и будет необходимым количеством пробелов.Пока это единственный и самый разумный способ выравнивания строки посередине. Но есть и другой, который позволяет осуществлять это прямо в программе и с любой строкой, длина которой даже меняется все время. Но, к сожалению, он несколько сложен, используются процедуры подключаемых модулей и некоторые другие, с которыми я пока не знакомил Вас. Но после я к этому вернусь, а пока пользуйтесь приведенным примером.