Перейти к содержимому

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

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

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

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

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

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

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

    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.

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

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *