шпаргалка

Paskal

[ Назад ]

PascalABC.NET - это реализация языка Object Pascal для .NET Framework, включающая такие важные особенности современных языков программирования как интерфейсы, обобщенные классы (generics), делегаты, сборка мусора, исключения, средства параллельности. PascalABC.NET - это бесплатная среда программирования, сочетающая простоту языка Паскаль и огромные возможности платформы .NET. 1 октября 2008 г. вышла версия 1.0 beta, скачать ее можно отсюда. Описание среды и языка опубликовано здесь.



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



Наиболее популярным решением для персональных компьютеров в 80-е - начале 90 годов стал компилятор Turbo Pascal фирмы Borland, который ввел в язык Паскаль новые возможности и обеспечивал высокую скорость компиляции. Выпущенная в 1995 г. как продолжение среды Turbo Pascal система программирования Delphi стала одной из лучших сред для быстрого создания приложений. Delphi ввела в язык Паскаль ряд удачных объектно-ориентированных расширений; обновленный язык получил название Object Pascal.



Однако, язык Delphi Object Pascal тесно привязан к среде, ориентированной на программирование под Windows, что привело к трудностям при переносимости его на другие платформы. Кроме того, среда Delphi по мере развития становилась все более громоздкой и малопригодной для обучения программированию. Наконец, появление платформ Java и .NET, включающих мощный язык программирования и мощные стандартные библиотеки ослабило позиции языка Delphi. В профессиональном программировании царствуют такие языки как Java, C, C++, C#, Visual Basic, PHP, Java Script (см. рейтинг языков программирования), для обучения программированию часто выбираются перечисленные выше языки, а также Oberon, Python и др.



Развитие таких платформ как Java и .NET привело, однако, к ситуации, еще не оцененной должным образом. Создать компилятор, переводящий текст программы не в машинный, а в высокоуровневый промежуточный байт-код, стало значительно проще. Недостатки промежуточного кода, связанные с незначительным замедлением скорости выполнения программ, с лихвой окупаются рядом преимуществ. Это единая объектно-ориентированная библиотека классов, возможность свободного сочетания модулей, написанных на разных языках программирования, а также проникновение в языки программирования единых современных языковых средств (таких как исключения, интерфейсы, перегрузка операций, обобщенные классы, параллельность). Таким образом, разница между универсальными языками программирования становится менее заметной, поскольку предоставляемые ими средства практически идентичны.



Язык и система программирования PascalABC.NET призваны изменить сложившуюся ситуацию и вернуть языку Паскаль былую привлекательность как для обучения, так и для профессионального программирования, помножив ее на мощь платформы .NET. PascalABC.NET содержит следующие предоставляемые платформой .NET языковые средства: интерфейсы, перегрузка операций, обобщенные классы, делегаты, исключения, сборка мусора. Откомпилированные модули хранятся в специальном промежуточном формате, представляющем собой семантическое дерево программы и обеспечивающем возможность проведения ряда высокоуровневых преобразований. Кроме того, в PascalABC.NET добавлены такие языковые средства как оператор foreach, операция new для создания объектов классов, инициализация любых переменных при описании (в т.ч. локальных и полей классов), методы в записях, встроенные множества произвольных типов, внутриблочные описания переменных, определение тел методов внутри классов.



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



электронный задачник по программированию Programming Taskbook (сайт http://ptaskbook.com)



растровая графическая библиотека GraphABC

библиотека векторных графических объектов ABCObjects

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

Простота, современные возможности, бесплатность - вот главные достоинства PascalABC.NET !









Описание меток

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



label a1,l2,777777;





Записи

Запись представляет собой набор элементов разных типов, каждый из которых имеет свое имя и называется полем записи. Тип записи конструируется следующим образом:



record

список полей

список методов

end



Приведем пример записи, содержащей только поля:



type

SexType = (male, female);

Person = record

Name: string;

Age, Weight: integer;

Sex: SexType;

end;



При описании переменной или константы типа запись можно использовать инициализатор записи (как и в Object Pascal):



const p: Person = (Name: 'Петрова'; Age: 18; Weight: 55; Sex: female);



var p: Person := (Name: 'Иванов'; Age: 20; Weight: 80; Sex: male);



Присваивание записей копирует содержимое полей одной переменной-записи в другую:



d2 := d1;



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



В отличие от Object Pascal, в PascalABC.NET отсутствуют записи с вариантами.



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



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



Запись представляет собой размерный тип (переменные типа запись располагаются на стеке).

Все члены записей – публичные, модификаторы доступа внутри записей запрещены.

Записи нельзя наследовать; от записей также нельзя наследовать (отметим, что записи, тем не менее, могут реализовывать интерфейсы). В .NET тип записи неявно предполагается наследником типа System.ValueType и реализуется struct-типом.

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



По умолчанию процедура write для переменной типа запись выводит ее тип. Чтобы изменить это поведение, в записи следует переопределить метод ToString класса Object.



Например:



type

SexType = (male, female);

Person = record

Name: string;

Age, Weight: integer;

Sex: SexType;

constructor Create(Name: string; Age, Weight: integer; Sex: SexType);

begin

Self.Name := Name;

Self.Age := Age;

Self.Weight := Weight;

Self.Sex := Sex;

end;

function ToString: string; override;

begin

Result := string.Format('Имя: {0} Возраст: {1} Вес: {2} Пол: {3}',

Name, Age, Weight, Sex);

end

end;

...

var p: Person := new Person('Иванов',20,70,Sex);

writeln(p);

КАТЕГОРИИ:

Network | английский | архитектура эвм | астрономия | аудит | биология | вычислительная математика | география | Гражданское право | демография | дискретная математика | законодательство | история | квантовая физика | компиляторы | КСЕ - Концепция современного естествознания | культурология | линейная алгебра | литература | математическая статистика | математический анализ | Международный стандарт финансовой отчетности МСФО | менеджмент | метрология | механика | немецкий | неорганическая химия | ОБЖ | общая физика | операционные системы | оптимизация в сапр | органическая химия | педагогика | политология | правоведение | прочие дисциплины | психология (методы) | радиоэлектроника | религия | русский | сертификация | сопромат | социология | теория вероятностей | управление в технических системах | физкультура | философия | фотография | французский | школьная математика | экология | экономика | экономика (словарь) | язык Assembler | язык Basic, VB | язык Pascal | язык Си, Си++ |