Вот и возвращаемся к Паскалю.

Изучение его вещь несколько нудная, но одновременно и интересная.

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

Что ж, приступаем опять к Паскалю. Я думаю, сегодня не буду приводить новых процедур, точнее, новых серьезных процедур, только некоторые незначительные, позволяющие упростить некоторые рутинные вычисления или действия.

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

Арифметические процедуры

Давайте возьмем для примера такую ситуацию:

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.

Для того, чтобы скопировать строку в буфер, необходимо сделать следующее:

1. Нажав и удерживая клавишу Shift, Вы передвигаете курсор клавишами-стрелками, вслед за ним текст выделяется белым цветом.

2. Выделенный фрагмент текста далее должен быть помешен в буфер:
Для этого нажмите комбинацию Ctrl+Ins (Insert).

3. Теперь перемещайтесь в место, где хотите вставить текст и нажмите комбинацию Shft+Ins. (Вставка)

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

Как располагать вывод процедуры Write (см. выпуск 3) (например заголовок) по центру?

В принципе, не существует такой процедуры, которая ровняет выводымий текст по центру. Единственное, что я могу Вам пока предложить (самое оптимальное) - это дополнять начало строки пробелами. Вот пример:

Write(         'Заголовок');

Таким образом строка будет сдвигаться от начала экрана и выводиться к середине. Здесь можно посчитать, сколько пробелов сначала необходимо:

4. Ширина экрана (в символах) в DOS всегда 80 (а высота - 25 строк).

5. Берем длину строки (например, слово "Заголовок" - 9 символов).

6. Делим 80 (ширину экрана) на 2 - получаем 40.

7. Делим длину строки на 2 и отбрасываем остаток: 9/2 = 4.

8. Вычитаем из половины экрана (40 симовлов) половину длины строки: 40 - 4 = 36.

9. Это число и будет необходимым количеством пробелов.

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



Опубликовал admin
16 Ноя, Воскресенье 2003г.



Программирование для чайников.