Programming Taskbook 0
Download 1.62 Mb. Pdf ko'rish
|
Abramyan-Pascal2016-1
Глава 1. Некоторые расширения Паскаля в языке PascalABC.NET 7 Глава 1. Некоторые расширения Паскаля в языке PascalABC.NET При разработке программ на языке PascalABC.NET можно использо- вать синтаксис традиционных реализаций Паскаля (таких как Delphi Pascal или Free Pascal). Однако язык PascalABC.NET включает ряд новых воз- можностей, отсутствующих в традиционном Паскале. Эти возможности позволяют записывать программы более компактным и наглядным спосо- бом. В данной главе описываются наиболее существенные нововведения PascalABC.NET, без использования которых не обходится практически ни одна программа и которые будут активно применяться на протяжении всей книги. 1.1. Описание переменных PascalABC.NET позволяет описывать переменные не только в специ- альном разделе описаний, но и в любом месте раздела операторов. Об- ласть действия такой переменной продолжается до окончания того блока, в котором она описана. Еще одной важной особенностью описания пере- менных в PascalABC.NET является вывод типов (type inference): если в момент описания переменная инициализируется некоторым значением, то тип переменной можно не указывать: он будет автоматически выведен компилятором из типа инициализирующего выражения. Таким образом, в любом месте программы можно, например, описать переменную a, иници- ализировав ее значением 0, и в результате с этой переменной будет связан целочисленный тип integer: var a := 0; Преимуществом подобного способа описания является то, что требуе- мые переменные вводятся в программу непосредственно перед их исполь- зованием, причем наиболее краткая форма описания (с инициализирую- щим выражением) является одновременно и наиболее надежной, так как обеспечивает явную инициализацию описываемой переменной (заметим, что использование переменных без их явной инициализации очень часто приводит к ошибкам в программе). 8 Важным частным случаем подобного способа инициализации является инициализация параметра цикла for, например: for var i := 1 to 10 do … Подобный вариант заголовка цикла описывает переменную i, тип ко- торой выводится из инициализирующего выражения 1, т. е. является цело- численным. Эта переменная будет существовать до конца того цикла, в ко- тором она определена. Если попытаться обратиться к переменной i после выхода из цикла, то возникнет ошибка компиляции. Таким образом, по- добная форма заголовка цикла for защищает программиста от очень рас- пространенной ошибки — обращения к параметру цикла после его завер- шения, которая в традиционном Паскале не выявляется на этапе компиля- ции и в дальнейшем, при выполнении программы, обычно приводит к ее неверной работе. Не следует считать, что описание вспомогательной переменной внут- ри блока, который выполняется многократно, приводит к неэффективной работе программы. Предположим, например, что переменная a описана в теле цикла: for var i := 1 to 10 do begin var a := 0; … end; Это не означает, что на каждой итерации цикла будет выполняться по- следовательность действий, обеспечивающая выделение памяти для пере- менной a и ее инициализацию. Компилятор PascalABC.NET обеспечивает эффективное выделение памяти для всех используемых в программе пере- менных, независимо от области их видимости. 1.2. Ввод и вывод данных Наряду с традиционной процедурой ввода Read язык PascalABC.NET позволяет использовать функции ввода для базовых типов данных: Read- Integer, ReadReal, ReadChar, ReadString, ReadBoolean. Применение этих функ- ций позволяет совместить в одном операторе и описание переменной, и ввод ее значения, причем тип переменной можно не указывать, так как он выводится из типа возвращаемого значения функции. Например, для опи- сания целочисленной переменной a и немедленного ввода ее значения с клавиатуры достаточно использовать единственный оператор: var a := ReadInteger; |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling