Программирование на языке Pascal






Содержание:
  • Язык программирования Pascal
  • Линейный алгоритм. Типы числовых данных. Функции ввода - вывода.
  • Логические операторы. Символьные переменные.


  • Язык программирования Pascal


    Язык программирования Turbo Pascal является развитием языка Pascal, разработанного Никлаусом Виртом в 1969-71 годах, для обучения структурному программированию. Фирма Borland International, существенно расширила алгоритмические средства языка, создала удобную среду программирования и высокоскоростной компилятор.
    Turbo Pascal разрабатывался под операционную систему ДОС (Дисковая Операционная Система), поэтому он работает только в текстовом режиме. Среда разработки Turbo Pascal (версия 7) представляет из себя текстовый редактор и средства отладки и компиляции программы. Для переключения редактора из оконного в полноэкранный режим и обратно следует нажать одновременно клавиши Alt + Enter.

    Программа на Pascal пишется в текстовом редакторе по определённым правилам. Текст программы проверяется редактором кода. Зарезервированные слова языка и определённые синтаксические конструкции выделяются цветом, что создаёт определённые удобства.


    Линейный алгоритм. Типы числовых данных. Функции ввода - вывода.


    Простые программы пишутся последовательно, шаг за шагом до тех пор, пока не будет получено решение задачи. Такая линейная последовательность в программировании называется линейным алгоритмом. Рассмотрим программу простого калькулятора. Пусть нам нужно сложить, вычесть, умножить и разделить два числа X и Y. В большинстве языков программирования принято объявлять участвующие в программе переменные. Это нужно для того, что бы зарезервировать фрагмент оперативной памяти компьютера для хранения объявленных данных. На рисунке показана программа калькулятора:

    Рассмотрим построчно, что означают введённые в редакторе команды:
    • uses crt; - Выражение: Использовать модуль CRT. В начале программы, обычно, пишется директива uses и затем, через запятую, перечисляются модули содержащие набор необходимых функций для работы программы. CRT - модуль поддержки монитора и клавиатуры. (Важное замечание. Регистр букв текста программы не имеет значения. Так, например, можно написать uses crt; или Uses CRT; - программа будет работать и не воспримет это как ошибку). Любое выражение на Pascal должно заканчиваться знаком "точка с запятой".
    • var - (сокращённое от variable - переменная) объявления блока переменных. После команды var точка с запятой не ставится.
    • x, y, z1, z2, z3, z4 : real; - перечисляем через запятую переменные необходимые для решения задачи; x и y - вводимые данные для вычислений; z1 ... z4 - переменные для хранения результатов вычислений. Двоеточие и real означает, что все перечисленные переменные объявлены как тип данных - число с плавающей запятой.
      При программировании используются различные типы данных. Ниже представлены числовые типы данных:

    • Вещественные типы
      Наименование Диапазон значений
      real 10-39 ... 1038
      double 10-324 ... 10308
      Целые типы
      byte 0 ... 255
      Word 0.. 65535
      Integer -32768.. +32767
      Longint -2147483648.. 2147483647

    • Begin - собственно начало программы. Оператор begin называется операторной открывающейся скобкой. После оператора begin точка с запятой не ставится.
    • Clrscr; - процедура очистки экрана. Эта процедура встроена в модуль CRT. В фигурных скобках {clear screen} написан комментарий к программе.
    • Write('Wwedite X: '); - функция write выводит на экран сообщение. Выводимое сообщение является аргументом функции write. Если сообщение текстовое, то оно заключается в одинарные кавычки (апострофы). К сожалению Turbo Pascal не поддерживает символы кириллицы, поэтому сообщение <эВведите Х:> пришлось написать латинским шрифтом.
    • Readln(x); - функция readln получает данные с клавиатуры вводимые пользователем. При появлении этой функции в исполняемой программе, действие программы приостанавливается и она ожидает ввода данных до нажатия клавиши Enter. Сама функция readln состоит из двух частей: read - собственно чтение с клавиатуры (может использоваться самостоятельно); окончание ln - означает (line new) новая строка, после выполнения чтения с клавиатуры переводит курсор на новую строку.
      Следующие две строки в точности повторяют две предыдущие, только выводится сообщение для ввода переменной Y и чтение этой переменной с клавиатуры.
    • z1 := x + y; - вычисляем сумму аргументов х и у. Знак := означает переменной z1 присвоить значение суммы х и у.
    • z2 := x - y; - вычисляем разность аргументов х и у.
    • z3 := x + y; - вычисляем произведение аргументов х и у.
    • z4 := x + y; - вычисляем частное от деления аргументов х и у.
    • Writeln(z1) - так же, как и оператор write выводит сообщение на экран, ln - означает, что следующее сообщение будет выводиться с новой строки. Так как переменная z числового типа, то апострофы ставить не нужно. Итак, функции Writeln(z1); Writeln(z2); Writeln(z3); и Writeln(z4); выводят на экран все значения z в столбик.
    • End. - оператор конца программы. После end (операторная закрывающаяся скобка, парная оператору begin) ставится точка. Точка является признаком конца файла.
          Что бы убедиться в правильности написания программы следует нажать клавишу F9. Произойдёт компиляция программы и проверка синтаксиса. Если код написан верно, то увидим следующее сообщение:


    • Если компилятор обнаружит ошибку, то появится соответствующее сообщение, а курсор будет установлен в строку с ошибкой.


      В нашем случае строка z4 = x / y; - должно быть z4 := x / y;
      Для запуска программы на исполнение, следует нажать комбинацию клавиш Ctrl и F9. В программе следует ввести значение х и нажать Enter, затем ввести значение у и опять нажать Enter. Компьютер произведёт необходимые вычисления и выведет значения на экран, но мы, скорее всего, ничего не увидим, потому что выполнение программы закончится и произойдёт возврат в редактор. Для просмотра полученных результатов следует нажать одновременно Alt и F5.


      То, что мы видим на экране не совсем удобно для понимания. Лучше будет, если результаты отображать не экспоненциальном виде, а в нормальном, десятичном.
      Так же, пользователь программы вынужден догадываться в какой строке результатов сложение, в какой умножение и так далее. Для исправления ситуации изменим строки вывода результатов на экран:
      writeln('X + Y = ', z1:0:4);
      writeln('X - Y = ', z2:0:4);
      writeln('X * Y = ', z3:0:4);
      writeln('X / Y = ', z4:0:4);
      Рассмотрим любую из изменённых строк, например writeln('X / Y = ', z4:0:4); Функция вывода writeln в качестве аргумента (в нашем случае) принимает два значения. Аргументы друг от друга отделяются запятой.
      Первое значение: 'X / Y = ' - надпись которая будет выводиться на экран, она должна быть заключена в апострофы. Второе значение - число z4. Для придания числу десятичной формы отображения, оно отформатировано по следующей схеме: двоеточие - число знаков до запятой, двоеточие - число знаков после запятой. Если число знаков до запятой неизвестно, то лучше поставить ноль.
      Усовершенствованная программа принимает удобочитаемый вид:


      До оператора end можно ввести строку readln;, тогда программа не будет завершаться сразу после выполнения, а будет ожидать нажатия клавиши Enter. Для сохранения готовой программы следует нажать F2 и сохранить файл с именем, например, calc.pas.

      Логические операторы. Символьные переменные.


      При выполнении написанной программы могут возникнуть непредвиденные обстоятельства, а именно, если пользователь программы вторым числом введёт значение 0 (нуль). Как известно, деление на 0 запрещено и при выполнении программы компьютер выдаст такое сообщение:


      Что бы избежать таких ситуаций, программист должен предусмотреть в программе некоторую защиту.
      Самое простое решение, в нашем случае, при значении Y равном нулю, перейти к началу программы, что бы пользователь ввёл другие значения. Перечислим те действия, которые должна выполнить программа:
      - если Y равно 0 то перейти к метке в начале программы, иначе (Y не равен 0) выполнить математические действия.
      На языке Pascal это будет выглядеть так: if y = 0 then goto label1 else ...
      Эта запись означает: (if) если y = 0 (y = 0 - логическое выражение) then (то) goto (перейти к) label1 (имя метки) else (иначе) ... Оператор else можно не использовать если дальнейшее выполнение программы подразумевается при невыполнении условия логического выражения. Метка label1 придуманное имя метки, поэтому мы должны его объявить до начала программы, сразу за разделом объявления переменных. Сама метка устанавливается в том месте программы, куда должен осуществиться переход. После имени метки ставится знак двоеточие. Изменённая таким образом программа показана на рисунке:


      Такая программа имеет более "товарный" вид и свойства.
      Рассмотрим подробно какие конструкции можно создавать на языке Pascal с использованием логических операторов. В общем виде логическая запись выглядит так:
      if (условие) then (действие1) else (действие2);
      или
      if (условие) then (действие);
      Сначала рассмотрим запись условий:
      Условие. Описание
      A = B А равно В
      A <> B А не равно В
      A <= B А меньше либо равно В
      A >= B А больше либо равно В
      Логические связки условий
      OR Логическое ИЛИ
      AND Логическое И
      NOT Логическое НЕТ (Отрицание)

      Логические связки записываются между логическими условиями, сами условия берутся в скобки, например: if (a = b) and (z <= 0) then ...
      Следует иметь в виду что при выполнении условия, после оператора then может быть только одно действие. Если действий по условию программы должно быть больше, то все действия должны быть взяты в операторные скобки begin ... end.
      Например:
      if a = b then
        begin
        writeln('Error!');
        y:= 22;
        goto label1;
      end else ...
      Аналогичным образом несколько действий записывается после оператора else.
          Написанная нами программа "калькулятор" имеет один существенный недостаток, если нужно произвести несколько вычислений, приходится перезапускать программу на выполнение. Изменим нашу программу так, что бы она завершалась с согласия пользователя. Пользователю следует предложить нажать клавишу Y для продолжения работы с программой, или любую другую клавишу для завершения работы.
      Заменим последний в программе оператор readln; на такие строки:
        write('Repeat - Y / End - other key'); {Выводим сообщение для пользователя}
        readln(sym); {Считываем символ с клавиатуры}
        if (sym = 'Y') or (sym = 'y') then goto label1; {Если введён символ Y или y , то переходим к началу программы}
      В нашей программе появилась новая переменная - sym (вымышленное имя, которое придумываем мы сами. Имя должно начинаться с буквы, а затем могут следовать цифры или буквы). Эта переменная имеет тип одиночного символа и мы должны её объявить в разделе переменных. Символьные переменные имеют тип char.Символьные переменные при использовании в программе следует заключать в апострофы.
      Добавим эту переменную в разделе var:
      var
      sym : char;
      .............
      Запустим программу на исполнение, и убедимся, что программа написана правильно:

      В паскале есть ещё один тип символьных переменных, это тип string- строка состоящая максимум из 255 символов, но об этом в следующих разделах.

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




       ©Гуков Константин Михайлович 2006 - 2011     Почта: [email protected]