Как оформить программу в паскале

Паскаль, как и многие другие языки программирования, допускает достаточно свободное оформление программ. Вы можете ставить пробелы и переводы строк как вам угодно (за исключением, конечно, ряда понятных требований типа пробелов в выражении if a mod b=c then ).

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

Основная цель форматирования программы — чтобы была лучше видна ее структура, то есть чтобы были лучше видны циклы, if’ы и прочие конструкции, важные для понимания последовательности выполнения действий. Должно быть легко понять, какие команды в каком порядке выполняются в программе, и в первую очередь — какие команды относятся к каким циклам и if’ам (циклы, if’ы и подобные конструкции ниже я буду называть управляющими конструкциями).

Программирование Игр Змейка

Поэтому следует придерживаться некоторых правил. Есть множество разных стандартов, правил на эту тему; во многих проектах, которые пишут целые команды программистов, есть официально требования, и каждый программист обязан их соблюдать вплоть до пробела. На наших занятиях я не буду столь строго относиться к оформлению, но тем не менее я буду требовать соблюдения ряда правил (это — некоторая «выжимка», то общее, что есть практически во всех стандартах), а также буду настоятельно рекомендовать соблюдать еще ряд правил.

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

Обязательные требования

  • Используйте здравый смысл. Любое из указанных ниже правил можно нарушать, если здравый смысл подсказывает вам, что лучше сделать не так — но такие ситуации скорее исключение, чем правило.
  • На каждой строке должно быть не более одной команды и/или управляющей конструкции.
  • Исключение: очень тесно связанные между собой по смыслу команды типа assign и reset.
  • Исключение: управляющая конструкция, внутри которой находится только одна короткая команда, например:

if a>0 then inc(i);
for i:=a to b do if x[i]<>0 then begin // больше кода тут быть не должно!
if a=0 then begin b:=2; // в этой строке отступ c:=c+2; // и в этой тоже end;

Основной принцип отступов — программу можно представить себе как последовательность вложенных блоков. Основной блок — сама программа. В нем могут быть простые команды, а также сложные блоки — if’ы, циклы и т.д.

Код внутри if’а или внутри цикла — это отдельный блок, вложенный в основной блок. Код внутри цикла внутри if’а — это блок, вложенный в другой блок, вложенный в третий. Пример: следующему коду:

Функция random в pascal, программа для генерации случайных чисел на языке Паскаль


read(n); for i:=1 to n do begin read(a[i]); if a[i]>0 then begin writeln(a[i]); k:=k+1; end; end; if n>0 then writeln(‘!’);
соответствует следующая структура блоков:
+———————+ | основная программа | | +————+ | | | цикл for | | | | +——-+ | | | | | if | | | | | +——-+ | | | +————+ | | +——+ | | | if | | | +——+ | +———————+
for i:=1 to n do begin read(a); // вошли внутрь for — появился отступ: 4 пробела if a<>0 then begin inc(m); // вошли еще и внутрь if — отступ стал в два раза больше b[m]:=a; end; end; for i:=1 to m do writeln(b[i]); // если выше единичный отступ был 4 пробела, то и здесь тоже 4, а не 2!
for i:=1 to n do begin read(a); s:=s+a; end; // end очень плохо заметен if s>2 then writeln(s) else begin // else очень плохо заметен writeln(‘Error’); halt; end; // end плохо заметен
for i:=1 to n do begin read(a); s:=s+a; end; // end сразу виден if s>2 then writeln(s) else begin // else сразу виден и разрывает последовательность строк: writeln(‘Error’); // видно, что это две ветки halt; end; // видно, что end есть и не потерян
if dir=’North’ then . else if dir=’South’ then . else if dir=’East’ then . else if dir=’West’ then . else writeln(‘Error!’);

Читайте также:
Программа для создания виртуальной машины

По смыслу программы это — многовариантное ветвление, здесь все случаи равноправны или почти равноправны. Тот факт, что в программе каждый следующий if вложен в предыдущий — это просто следствие того, что в паскале нет возможности сделать многовариантное ветвление. Поэтому такой код надо оформлять именно так, как указано выше, т.е. все ветки else if делать на одном отступе. (Не говоря уж о том, что если на каждый такой if увеличивать отступ, то программа очень сильно уедет вправо.)
Но отличайте это от слудеющего варианта:

if a=0 then writeln(-1); else begin if b=0 then begin x:=1; else x:=b/a; writeln(x); end;
read(a); b:=0; c:=0; for i:=1 to a do begin b:=b+i*i; c:=c+i; end;
Все равно неправильно (for всегда выполняется после c:=0, поэтому отступы должны быть одинаковыми):
read(a); b:=0; c:=0; for i:=1 to a do begin b:=b+i*i; c:=c+i; end;
read(a); b:=0; c:=0; for i:=1 to a do begin b:=b+i*i; c:=c+i; end;
if a=0 then // условие короткое, лучше в одну строку . for i:=1 to 10 do // аналогично . if (((sum+min=min2+min3) or (sqrt(sumSqr)<30)) and (abs(set1-set2)+eps>thershold)) or (data[length(s)-i+1]=data[i]) or good then.
if a=0 then . for i:=1 to 10 do . if ( ( (sum+min=min2+min3) or (sqrt(sumSqr)<30) ) and (abs(set1-set2)+eps>thershold) ) or (data[length(s)-i+1]=data[i]) or good then.
type int=integer; float=extended; var i:integer; s:string;

Не столь обязательные требования, но которые я настоятельно рекомендую соблюдать

  • Пишите begin на той же строке, что и управляющая конструкция, ну или хотя бы на том же отступе, что и управляющая конструкция:
    Совсем плохо:

for i:=1 to n do begin read(a[i]); .
Более-менее:
for i:=1 to n do begin read(a[i]); .
for i:=1 to n do begin read(a[i]); .

Пример хорошо отформатированной программы:

function sum(a, b: longint): longint; begin sum := a + b; end; var i, a, b, s: longint; x, y: double; arr: array [1..1000] of boolean; begin read(a, b); arr[1] := true; for i := 2 to 1000 do if ((a > 0) and (arr[i-1])) then arr[i] := true; for i := 1 to 1000 do arr[i] := false; s := 0; if (a < 0) then begin a := -a; if (b < 0) then begin b := -b; s := a + b; end else begin while (s

Источник: algoprog.ru

Правила оформления исходного кода в Паскаль (форматирование отступами) [Pascal]

vedro-compota's picture

В этом разделе мы поговорим о том как форматировать исходный код программы на языке Паскаль.

Смысл форматирования кода состоит в том, что увеличить его читаемость, то есть понятность для программиста.

Блоковые конструкции

В Паскаль можно выделить как минимум $6$ блоковых конструкций — то есть таких, для окружения тела которых нужны операторные скобки, а именно:

  • Само тело программы.
  • Ветка истинности условного оператора then.
  • Ветка ложности условного оператора else.
  • + три циклические конструкции:
    1. For
    2. While
    3. Repeat/until

    — тела трёх циклических конструкций также являются блоками.

    Смысл блока состоит в том, что в него как бы можно вложить одно или более действий — обычно, когда действий несколько используют операторные скобки (кроме конструкции repeat/until, где операторные скобки не нужны).

    Читайте также:
    Парагон программа для разбивки жесткого диска на русском языке

    кложенные блоки в паскаль правила оормления форматирования

    Один блок может вкладываться в другой бесконечное число раз по принципу матрёшки:

    Главная идея форматирования

    Главная идея состоит в том форматирования кода (то есть придания ему определённой фромы), чтобы каждое вложенное действие имело число отступов по уровню вложенности своего блока.

    Единичный отступ предлагается брать любым, но достаточно заметным.

    Правила оформления программ

    Язык программирования Турбо Паскаль создан швейцарским физиком Никлаусом Виртом в 1970 году и назван в честь французского математика XVII века Блеза Паскаля. Дело в том, что Паскаль в 1640 году создал арифметическую (или счётную) машину.

    Впоследствии появилось множество версий и расширений этого языка. Наиболее популярным из них стал пакет Turbo Pascal фирмы Borland, выпущенной в 1983г. В 1984г. Появилась версия для MS DOS.

    В 1992 году фирма Вог1апd Intегnаtional выпустила два пакета программирования, основанные на использовании языка Паскаль – Borland Pascal 7.0 и Turbo Pascal 7.0.

    Пакет Borland Pascal 7.0 учитывает многие новейшие достижения в программировании и практике создания программ и включает в себя три режима работы:

    в обычном режиме операционной системы MS DOS, в защищенном режимеMS DOS и в среде Windows. Обладая расширенными возможностями, пакет Borland Pascal 7.0 тем не менее требует для использования всех своих возможностей довольно большую память — примерно 30 Мбайт на жестком диске и не менее 2 Мбайт оперативной памяти.

    Пакет Turbo Pascal 7.0 обладает ограниченными возможностями и позволяет работать только в обычном режиме MS DOS, но может быть использован практически на любой машине.

    Turbo Pascal 7.0 включает в себя как язык программирования — одно из расширений языка Паскаль для ЭВМ типа IВМ, так и среду, предназначенную для написания, отладки и запуска программ.

    Название «Турбо Паскаль» относится к системе программирования. состоящей из компилятора языка и объединенного с ним экранного редактора Система удобна для редактирования и обработки ошибок, обнаруженных в исходных текстах программ.

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

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

    Запуск программ в системе Турбо Паскаль происходит на уровне исходных текстов

    Структура меню среды

    Управление средой осуществляется с помощью системы последовательно разворачивающихся меню. Меню фиксирует некоторое текущее состояние диалоговой среды и предлагает несколько альтернативных путей перехода из этого состояния. Каждое конкретное меню реализуется в виде окна с текстом. Содержащиеся в меню альтернативы команд называют опциями.

    Вызов системы ТП производится запуском на исполнение файла TURBO. ЕХЕ. После входа в среду ТП в верхней строке экрана появляется главное меню:

    File Edit Search Run Compile Debug Tools Options Window Help

    Главное меню содержит оглавление разделов меню (подменю). В них сгруппированы близкие по своему роду действия, условное название которых находится в главном меню:

    File (файл) — работа с файлами и выход из системы;

    Edit (редактировать) — операции с буфером редактора текстов;

    Search (искать) — поиск текста, процедуры, функции, места ошибки;

    Run (выполнить) — выполнение программ;

    Compile (компилировать) — компиляция программы;

    Debug (отладка) — отладка программы;

    Tools — инструментальные средства;

    Options (варианты) — параметры среды;

    Window (окна) — работа с окнами;

    Help (помощь)) — обращение к справочнику среды.

    Вызов главного меню происходит при нажатии клавиши F1О. При этом в строке меню изменяется цвет одного его полей.

    Правила оформления программ

    Для создания и редактирования текстов программы предназначен текстовый редактор среды ТП. Режим редактирования автоматически устанавливается сразу после загрузки ТП: в окне редактора появляется курсор, в его верхней строке высвечивается имя NONAMEOO.PAS (неименованный файл).

    Читайте также:
    Программы отвечающие за то чтобы данные из ПК могли правильно передаваться во все внешние устройства

    Набор текста программы производится с клавиатуры. После выполнения очередной строки следует нажать на клавишу «Enter:»,. чтобы перевести курсор на следующую строку. Компилятором ТП воспринимаются строки программы длинной не более 126 символов, общее число символов в файле не должно превышать 64535.

    Программирование на языке Паскаль в соответствии с изложенными правилами именуется структурным программированием.

    Каждое предложение программы рекомендуется начинать с новой строки. Если предложение не помещается в одной строке, его можно продолжить на следующей (без введения каких-либо знаков переноса или продолжения).

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

    Признаком хорошего стиля программирования является применение отступов в строке при оформлении текстов программ, поскольку они делают программу более наглядной. Так объявления (const, type, var и т.п.) или слова begin-end, определяющие тело главной программы выравниваются по левому краю текста.

    Все предложения внутри любой пары операторных скобок begin-end записываются с отступом на определенное число позиций по отношению к первой букве слова begin (end). Предложения тела цикла обычно выравниваются по распределению управляющей переменной цикла в заголовке. В конструкции if-then-else с одинаковых позиций (в равных строках) записываются слова then и else, в операторных скобках — слова begin и end. Предложения внутри подпрограмм записывают тоже с отступом от левого края текста программы.

    Важными моментами при написании программы являются выбор имен (идентификаторов) и оформление полученных результатов. При введении обозначений следует отдавать предпочтение мнемоническим (смысловым) именам, а не именам типа x,y,z, которые совершенно не информативны. Результаты программы должны иметь наглядный вывод: сопровождаться заголовками и сообщениями, поясняющими смысл выводимых величин.

    Кроме того, сделать программу более наглядной позволяет включение в ее текст комментариев. Комментарии рекомендуется помешать в начало программы и в начало крупной программной единицы (подпрограммы, вложенных циклов и т.п.) и выделять пустыми строками или особо важные заключать в рамку.

    Рассмотрим TURBO PASCAL 7.0. на простом примере:

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

    ax 2 +bx+c=0

    (если a=0, b=0 и c=0, то уравнение имеет бесконечное множество решений, если a=0, b=0, а c<>0, то уравнение не имеет решений. Для этих и прочих частных случаев в будущей программе можно было бы предусмотреть вывод соответствующих текстовых сообщений.)

    Однако для упрощения программы (задачи) будем считать, что коэффициент а здесь не равен 0, дискриминант уравнения (b 2 -4ac)неотрицателен.

    Программа с учётом всех изменений:

    Первая строка начинается с зарезервированного слова Program. Представляет собой заголовок. Длина заголовка, а также любой другой строки программы на Turbo Pascal не должна превышать 126 символов.

    Присутствие в программе заголовка – это требование стандартного Pascal. В Turbo Pascal заголовок не является обязательным элементом текста программы.

    Слово Program (а также Var, Begin и End) относится к так называемым зарезервированным (в Turbo Pascal) словам, то есть словам, имеющим специальное назначение.

    После слова Program через пробел следует имя программы.

    Со второй строки нашей программы начинается раздел (или блок) описания переменных. Все используемые переменные должны быть описаны в этом разделе. В нашем случае после слова Var следует перечень из пяти переменных. Слово Real после этого перечня (через двоеточие) указывает, что данные переменные могут принимать только вещественные значения. Если какая-либо переменная из тех, что используются в программе, не фигурирует в разделе описания переменных, компилятор выведет соответствующее сообщение об ошибке.

    Программа набирается в окне редактора и компилируется (F9).

    Источник: megaobuchalka.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru