Programming Taskbook 0


Download 1.62 Mb.
Pdf ko'rish
bet2/71
Sana21.06.2023
Hajmi1.62 Mb.
#1644761
TuriУчебное пособие
1   2   3   4   5   6   7   8   9   ...   71
Bog'liq
Abramyan-Pascal2016-1


Глава 1. Некоторые расширения Паскаля в языке PascalABC.NET 

Глава 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; 
Преимуществом подобного способа описания является то, что требуе-
мые переменные вводятся в программу непосредственно перед их исполь-
зованием, причем наиболее краткая форма описания (с инициализирую-
щим выражением) является одновременно и наиболее надежной, так как 
обеспечивает явную инициализацию описываемой переменной (заметим, 
что использование переменных без их явной инициализации очень часто 
приводит к ошибкам в программе). 



Важным частным случаем подобного способа инициализации является 
инициализация параметра цикла 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; 


Download 1.62 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling