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

Что означает в паскале точка с запятой

  • автор:

 

Работа с точками с запятой

Есть два различных способа работы с точками с запятой используемые в популярных языках. В Паскале точка с запятой расценивается как разделитель операторов. Точка с запятой не требуется после последнего утверждения в блоке. Синтаксис:

<statement> ::= <assignment> | <if> | <while> . | null

(пустое утверждение важно!)

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

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

Из двух синтаксисов, синтаксис Паскаля внешне выглядит более рациональным, но опыт показал, что он ведет к некоторым странным трудностям. Люди так привыкают ставить точку с запятой после каждого утверждения, что они также предпочитают ставить ее и после последнего утверждения в блоке. Это обычно не приносит какого-либо вреда. она просто обрабатывается как пустое утверждение. Многие программисты на Паскале, включая вашего покорного слугу, делают точно также. Но есть одно место, в котором вы абсолютно не можете поставить точку с запятой — прямо перед ELSE. Это маленький подводный камень стоил мне множества дополнительных компиляций, особенно когда ELSE добавляется к существующему коду. Так что выбор C/Ada оказывается лучше. Очевидно, Никлаус Вирт думает также: в Modula-2 он отказался от Паскалевского подхода.

Имея эти два синтаксиса, легко (теперь, когда мы реорганизовали синтаксический анализатор!) добавить эти возможности в наш анализатор. Давайте сначала возьмем последний случай, так как он проще.

Для начала я упростил программу представив новую подпрограмму распознавания:

procedure Semi; begin MatchString(‘;’); end;

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

Так как точка с запятой следует за утверждением, процедура Block почти единственная, которую мы должны изменить:

procedure Block; begin Scan; while not(Token in [‘e’, ‘l’]) do begin case Token of ‘i’: DoIf; ‘w’: DoWhile; ‘R’: DoRead; ‘W’: DoWrite; ‘x’: Assignment; end; Semi; Scan; end; end;

Внимательно взгляните на тонкие изменения в операторе case. Вызов Assigment теперь ограничивается проверкой Token. Это позволит избежать вызова Assigment когда токен является точкой с запятой (что случается когда утверждение пустое).

Так как объявления — тоже утверждения, мы также должны добавить вызов Semi в процедуру TopDecl:

procedure TopDecls; begin Scan; while Token = ‘v’ do begin Alloc; while Token = ‘,’ do Alloc; Semi; end; end;

Наконец нам нужен вызов для утверждения PROGRAM:

begin Init; MatchString(‘PROGRAM’); Semi; Header; TopDecls; MatchString(‘BEGIN’); Prolog; Block; MatchString(‘END’); Epilog; end.

Проще некуда. Испробуйте это с копией TINY и скажите как вам это нравится.

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

procedure Statement; begin Scan; case Token of ‘i’: DoIf; ‘w’: DoWhile; ‘R’: DoRead; ‘W’: DoWrite; ‘x’: Assignment; end; end;

Используя эту процедуру мы можем переписать Block так:

procedure Block; begin Statement; while Token = ‘;’ do begin Next; Statement; end; end;

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

Подробнее о оформлении модуля [ править ]

Вне фокуса внимания в этом примере остался разбор мелких важных деталей в оформлении кода. Аккуратно оформленный и опрятный код не только позже облегчит понимание самого кода, но и позволит его упростить, оптимизировать, расширить.

Заглавные буквы [ править ]

В Компонентном Паскале заглавные буквы используются только для ключевых слов. Ключевые слова изменить нельзя. Они определены создателями языка, разнообразие их достаточно и исчерпывающе. В других языках, таких как Си или python заглавные буквы используются для обозначения констант. Впрочем, и в Компонентном Паскале никто не запрещает использовать заглавные буквы для констант. Но так не принято.

Точка с запятой [ править ]

Это важная синтаксическая единица языка. Точно также точка с запятой есть во всех вариантах Паскаля и множестве других языков. В правописании точка с запятой используются для перечислений. Можно сказать, что и в КП она играет такую же роль. Но точку с запятой (дилиметер или терминатор (суть одно и тоже) — разделитель) ставить всегда вовсе не обязательно. Есть три таких случая:

  1. Не ставят после ключевых слов: IMPORT, TYPE, VAR, BEGIN — после этих ключевых слов может ничего не идти, но как правило, идёт. Если поставить сразу точку с запятой, то будет считаться, что секция программы либо ничего не содержит, либо содержит пустую инструкцию.
  2. Не ставят точку с запятой перед ключевым словом END. А зачем? Если есть ключевое слово END — и так понятно, что дальше ничего нет.
  3. После последнего END ставится точка, а не точка с запятой. Это особый случай, когда идёт указание КП ,что текст модуля закончен. Именно поэтому программисту разрешается после текста вставить КОММАНДЕР (и вообще всё что душе угодно), и КП не посчитает это за ошибку (на рисунке слева успешно скомпилированный модуль). Эта особенность позволяет хранить вместе с кодом и описание модуля, какие-то заметки, рекомендации и т. д., при этом не перегружая и не размазывая код между обильными комментариями.

Типичная ошибка при использовании точки с запятой [ править ]

Заключается она в том, что этой самой точки с запятой попросту нет. Вот тут КП откажется компилировать текст, но не бросит программиста, а подскажет место, где он ошибку обнаружил:

Подсветка места ошибки.

Место ошибки будет отмечено серым квадратом с диагональным перечёркиванием. После устранения ошибки, этот квадрат сам исчезнет (его можно удалить и вручную, но смысла в такой операции нет). Но это ещё не всё. ББ предлагает нажать по квадрату дважды, и после этого причина ошибки станет более понятной:

Причина ошибки в КП.

Не правда ли, очень удобно? В ходе разработки программ на КП многие программисты определяют свои коды ошибок, они с таким же успехом отображаются в виде серых перечёркнутых квадратов. Сколько будет ошибок — столько будет квадратов.

Именование процедур и переменных [ править ]

Как действуют правила относительно ключевых слов, также действуют правила относительно именования процедур и переменных. Пока не производился разбор процедуры Start, но уже полезно знать, что процедуры именуются с большой буквы. Так, например, инструкция Log.String(‘Привет, мир!’) является вызовом процедуры «String» из модуля «Log». И это точно не ключевое слово, так как заглавные буквы не все, а только первая.

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

Размещение инструкций [ править ]

Часто можно встретить код, представленный ниже

Два вызова процедур из модуля «Log» размещены в одну строку. Вызовы процедур вполне могут быть и из разных модулей, и больше чем два (при этом их надо все разделить точкой с запятой, кроме последней). И всё это будет верно. Обычно так делают тогда, когда программист хочет подчеркнуть неразрывность цепочки операций. Тут важно не переборщить, так как код может выйти далеко за пределы основного кода, и читать такой код будет весьма неудобно. Обычно достаточно два. три оператора в строке.

Размещение комментариев [ править ]

Код без каких-либо комментариев является дурным тоном. Код, в котором комментариев столько, что их приходиться прокручивать чтобы увидеть код — это тоже дурной тон. В крайнем случае, объёмные комментарии следует располагать вместе и в начале модуля. Если такой комментарий претендует на роль документации модуля — то такой текст стоит либо вынести в модуль документации (в папке «Docu» соответствующей подсистемы файл с таким же именем, что и файл содержащий код), либо в самом файле с кодом, но после всего кода.

Правильный комментарий должен содержать пояснения неочевидных операций, например, с помощью операции «сдвиг на два бита вправо» — на самом деле — (* тут деление на четыре. *). (Как известно, операция сдвига работает часто быстрее, чем деление) Соответственно, правильный комментарий не должен пояснять очевидные вещи, например:

Зачем вставлять этот комментарий, если из имени процедуры следует, что она возвращает координату Х?

Отступы в коде и подсветка [ править ]

Практически везде по тексту модуля используются отступы. Отступы не являются требованием языка, как это сделано в python. КП прекрасно скомпилирует модуль и без отступов. Но всё-таки с отступами текст выглядит более аккуратно и ухожено. Не говоря уже о том, что такой текст легче воспринимается для понимания кода. Подсветка текста и выравнивание может быть сделана автоматически через:

  • Меню «Cpc» -> пункт меню «Отформатировать код»

Код будет отформатирован на столько, на сколько это вообще возможно.

Заключение [ править ]

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

Общие сведения о языке программирования Паскаль

Язык программирования – это формальный язык описания компьютерных программ.

Программа – это последовательность команд, позволяющая компьютеру выполнить конкретную задачу.

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

Одним из таких языков является язык программирования Паскаль, созданный в 1970 году швейцарским ученым Никлаусом Виртом. Язык назван в честь французского математика Блеза Паскаля – создателя одной из первых механических вычислительных машин.

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

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

Алфавит и словарь Паскаля

Основой любого языка программирования является алфавит.

Алфавит – набор допустимых символов, которые используются для написания программы.

Алфавит Паскаля включает:

  • Прописные буквы латиницы (A, B, C, …, X, Y, Z);
  • Строчные буквы латиницы (a, b, c, …, x, y, z);
  • Арабские цифры (0, 1, 2, …, 7, 8, 9);
  • Знаки арифметических и логических операций («плюс», «минус», «умножить», «разделить», «больше», «меньше», «равно» и др.)
  • Ограничители и разделители (апостроф, двоеточие, точка с запятой, круглые, квадратные и фигурные скобки, точка, запятая);
  • Специальные символы («амперсанд», «процент», «решетка», знак подчеркивания и др.).

Некоторые символы, записанные вместе, образуют составные символы, например:

  • := (операция присваивания);
  • >= и <= (≥ и ≤ соответственно);
  • // (начало комментария, который заканчивается после перехода на новую строку).

Из символов алфавита формируются идентификаторы – аналоги слов естественного языка, но построенные по определенным правилам:

  • Идентификатор может состоять из цифр, буквы латинского алфавита и символа подчеркивания.
  • Идентификатор не может начинаться с цифры.
  • Отсутствует различие между прописными и строчными буквами («PROGRAM», «Program» и «program» — один и тот же идентификатор).
  • Максимальное допустимое число символов в идентификаторах зависит от транслятора.

Идентификаторы нужны, чтобы давать имена переменным, константам, функциям и процедурам.

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

 

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

Типы данных в Паскале

Данные в программах на языке Паскаль описываются простыми или составными типами данных, которые указывают транслятору, как интерпретировать эти данные и сколько места в памяти компьютера нужно выделить для их хранения.

К простым типам относятся: целочисленный, вещественный, символьный, строковый и логический типы.

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

Структура программы на Паскале

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

  • Заголовок;
  • Блок описания данных;
  • Программный блок.

Заголовок программы начинается с ключевого слова program, за которым следует идентификатор имени программы. Завершается строка заголовка символом «точка с запятой».

Блок описания данных включает в себя характеристику констант (const), характеристику переменных (var) и другие задействованные разделы. При описании переменных необходимо указать их имена и типы данных.

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

var i, j: integer; x: real; a: char;

где integer – целый тип данных; real – вещественный; char – символьный.

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

Пример того, как должен выглядеть примерный код программы:

program <название программы>;

const <последовательность неизменяемых значений>;

var <тип переменных, которые будут использованы>;

begin <программный блок>

end.

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

Символ точкой с запятой является разделителем между операторами.

В строке, после которой идёт слово end, точка с запятой не ставится.

Оператор присваивания

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

<имя переменной> := <выражение>

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

Процесс выполнения операции присваивания можно рассмотреть на примере следующего фрагмента программы:

При выполнении операции присваивания a :=15 в отдел оперативной памяти компьютера под названием a помещается значение 15. При выполнении операции присваивания b :=6 в отдел оперативной памяти компьютера под названием b помещается значение 6. Операция s :=a+b равносильна сумме значений, заключённых в переменных a и b. После сложения результат помещается в отдел оперативной памяти компьютера, имеющий название s.

Представление и получение информации в Паскале

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

У каждого языка программирования есть свои средства ввода и вывода данных. В Паскале получение информации от пользователя можно осуществить с помощью процедур read() и readln(), а вывод – с помощью процедур write() и writeln().

Окончание ln в этих командах – это сокращение от line («линия», «строка», англ.), оно означает ввод или вывод целой строки, с переводом курсора на новую строчку.

Откуда в программу вводится информация? Наиболее распространённые способы – получение данных из файла или ввод с клавиатуры.

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

Классическим устройством ввода считается клавиатура, а вывода – монитор компьютера. Когда в алгоритме не указано место, откуда нужно считать информацию и куда её вывести, то программа будет пользоваться классическими устройствами. Объединение клавиатуры и экрана носит название консоль. Следовательно, именно консоль является классическим способом получения и представления информации.

Вывод данных на экран

Вывод данных в файл или на экран с помощью процедур write() и writeln().

Допустим, необходимо вывести на экран несколько фраз. Для того чтобы новая фраза появлялась с новой строки, необходимо использовать writeln(), если это не нужно – то write().

В пример можно привести следующие программы:

Write() используется тогда, когда необходимо вывести текст на монитор, а после этого получить новые данные без перемещения курсора консоли на следующую строку. К примеру, появляется сообщение «Введите число: », курсор не переходит на следующую строку, поскольку ожидается ввод.

В пример можно привести ещё один алгоритм. В памяти компьютера содержится информация. В программе идёт обращение к ней через переменные number, fl и text. Вывод значений этих переменных можно выполнить различными способами:

Во втором примере показано, что процедуры вывода могут принимать несколько аргументов разного типа и корректно выводить их.

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

Получение информации

Получение данных в Паскале осуществляется с помощью процедур read() и readln(). Значения можно ввести, используя клавиатуру, либо извлечь из файла. Стоит рассмотреть именно ввод с клавиатуры.

Для того, чтобы осуществить ввод данных, в программе нужно создать переменные соответствующих типов, и передать их в процедуры read() или readln() в качестве аргументов. Процедуры чтения помещают введенные данные непосредственно в память указанных переменных. Дальше эти переменные можно использовать для выполнения алгоритма или вывода на экран.

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

Входящие данные необходимо отделять друг от друга пробелом или нажатием клавиши Enter.

Есть определённые нюансы ввода с помощью процедур read() и readln(). Если друг за другом идут несколько вызовов процедуры read(), то входную информацию можно разделять любой клавишей. Если подряд идут несколько вызовов процедуры readln(), то входные данные можно разделить только нажав клавишу Enter. В пример можно привести несколько алгоритмов:

Условный оператор if

Этот оператор используется для создания условных переходов. С его помощью можно слегка изменить последовательность выполнения программы. Оператор ветвления if в языке Паскаль записывается следующим образом:

if <условие> then <первый оператор> else <второй оператор>;

Условие — это высказывание с определённой логикой, от которого зависит то, как программа выполняет определённые действия. Если условие истинно (принимает значение True), то программа выполняет оператор 1, который помещён после связующего слова then («тогда»). Если условие оказывается ложно (принимает значение False), то программа переходит к выполнению оператора 2, который помещён после связующего слова else («иначе»), пропуская оператор 1.

Когда операторы, находящиеся после условия, выполнены, то программа начинает выполнять команды, стоящие после оператора if. Нужно помнить, что «;» перед связующим словом else не ставится.

Слово else может отсутствовать. В этом случае, если условие является ложным, то программа полностью пропускает оператора if и все его команды, переходя к выполнению действий, описанных после него.

Стоит учитывать, что в Паскале за словами else и then можно вписать только один оператор. Исходя из этого необходимо объединить группу инструкций в общий оператор (вписать между связующими слова begin и end). Если этого не сделать, то произойдёт сбой в логике программы. Несмотря на то, что программа не выдаст ошибки, выполнять алгоритм она будет неправильно. Можно привести следующий пример:

Задачи на линейные алгоритмы и их решение

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

Задача 1. Написать программу, которая выводит на экран произведение и сумму трёх чисел.

Задача 2. На вход подаётся сторона квадрата a. Нужно найти периметр квадрата по формуле 4а и площадь квадрата по формуле а 2 .

Что означает в паскале точка с запятой

Real (занимает 6 байт, диапазон от 2.9E-39 до 1.7E+38 по модулю, точность 11-12 значащих цифр) основной тип

Как видите, один оператор Write может выводить сразу несколько элементов. Элементы нужно отделять друг от друга запятыми. В этом примере — три элемента:
1)текст ‘Это’
2)выражение 4+4
3)текст ‘кошек’ .
Все элементы выводятся в одну строку вплотную друг к другу. Если вся информация, выводимая оператором Write, не умещается в одну строку, то не уместившаяся часть автоматически выводится с начала следующей строки.
Самое трудное для новичка — не путать запятые и кавычки, находить элементы и отличать текстовые элементы от чисел и выражений. Совет : сначала найдите внутри скобок запятые. Теперь, чтобы отличить текстовые элементы от прочих, обратим внимание, что они заключены в кавычки.

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

 

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

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