kopilkaurokov.ru - сайт для учителей

Создайте Ваш сайт учителя Курсы ПК и ППК Видеоуроки Олимпиады Вебинары для учителей

Delfi програмирование

Нажмите, чтобы узнать подробности

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

  • В Delphi объектное и объектно-ориентированное программирование хоть и поощряется, однако не является единственно возможным. Так, допустимо (в отличие от C#) объявление и использование глобальных или статических функций и переменных.

Язык C# принудительно объектен. Глобальные, без привязки к классу, функции запрещены. Value-типы, наподобие структур struct, унаследованы от общего типа C#, несмотря на то, что сами по себе они не могут быть унаследованы (то есть, наследование структур в C# запрещено). Вместе с тем, экземпляры классов C# являются неявно-ссылочными типами, как и в Delphi.

Поскольку системные вызовы в Windows (как, впрочем, и в POSIX-системах наподобие Linux, Mac OS) формально необъектны, взаимодействие C#-кода с ними затруднено даже без учёта разной парадигмы управления временем жизни переменных в памяти. Delphi не имеет подобных ограничений.

Несмотря на такую акцентированную на объектность парадигму, в C# отсутствует понятие виртуального конструктора, то есть создания экземпляра класса, точный тип которого на этапе компиляции неизвестен, а известен лишь базовый класс этого экземпляра. Отчасти этот недостаток может быть скомпенсирован посредством интерфейсов или reflection, однако подобные решения не являются стандартными для языка.

Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Наладить дисциплину на своих уроках.
Получить возможность работать творчески.

Просмотр содержимого документа
«Delfi програмирование »

Delphi (Де́лфи, произносится /ˈdɛlˌfi:/[1]) — императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal[2]. Начиная со среды разработки Delphi 7.0[3], в официальных документахBorland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.

Изначально среда разработки Delphi была предназначена исключительно для разработки приложений Windows, затем был реализован вариант для платформ Linux(как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и вскоре было объявлено о поддержке Microsoft .NET, которая, в свою очередь, была прекращена с выходом Delphi 2007.

На сегодняшний день, наряду с поддержкой разработки 32 и 64-разрядных программ для Windows, реализована возможность создавать приложения для Apple Mac OS X (начиная с Embarcadero Delphi XE2), iOS (включая симулятор, начиная с XE4 посредством собственного компилятора), а также, в Delphi XE5, для Google Android (непосредственно исполняемые на ARM-процессоре).

Независимая, сторонняя реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора[источник не указан 2014 дней] для GCC.

Философия и отличия от популярных прикладных языков программирования[править | править вики-текст]

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

Так, сложность объектного C++, по сравнению с C, выросла весьма существенно и затруднила его изучение в качестве первого языка программирования, чего нельзя сказать об Object Pascal относительно Pascal.

Ниже перечислены некоторые отличия синтаксических конструкций Delphi от семейства C-подобных языков (C/C++/Java/C#):

  • В Delphi формальное начало любой программы четко отличается от других участков кода и расположено в определенном, единственном в рамках проекта, исходном файле с расширением dpr (тогда как другие файлы исходных текстов программы имеют расширение pas)

program Project32;

{$APPTYPE CONSOLE}

{$R *.res}

uses

System.SysUtils;

begin

try

{ TODO -oUser -cConsole Main : Insert code here }

except

on E: Exception do

Writeln(E.ClassName, ': ', E.Message);

end;

end.

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

  • В Delphi идентификаторы типов, переменных, а равно и ключевые слова читаются независимо от регистра: например идентификатор SomeVar полностью эквивалентен somevar. Регистро-зависимые идентификаторы в начале компьютерной эпохи ускоряли процесс компиляции, и кроме того, позволяли использовать очень короткие имена, порой отличающиеся лишь регистром.

И хотя к настоящему времени обе эти практики − использование нескольких идентификаторов, различающихся лишь регистром, равно как и чрезмерная их лаконичность, осуждены и не рекомендованы к применению, практически все унаследованные от С языки − C++, Java, C# − являются регистро-зависимыми, что, с одной стороны, требует достаточно большой внимательности к объявлению и использованию идентификаторов, а с другой допускается написание кода в весьма трудночитаемом стиле.

  • В Delphi в исходных файла pas (которые, как правило, и содержат основное тело программы) на уровне языковых средств введено строгое разделение на интерфейсный раздел и раздел реализации. В интерфейсной части содержатся лишь объявления типов и методов, тогда как код реализации в интерфейсной части не допускается на уровне компиляции. Подобное разделение свойственно также языкам C/C++, где в рамках культуры и парадигмы программирования вводится разделение на заголовочные и собственно файлы реализации, но подобное разделение не обеспечивается на уровне языка или компилятора.

В C# и Java такое разделение устранено вовсе − реализация метода, как правило, следует сразу же после его объявления. Инкапсуляция обеспечивается лишь принадлежностью метода к той или иной области видимости. Для просмотра одной только интерфейсной части модуля исходного кода используются специальные средства.

  • В Delphi метод или функция четко определяются зарезервированными для этого ключевыми словами procedure или function, тогда как в C-подобных языках обозначается лишь скобками:

//Delphi

procedure DoSomething(aParam:integer);//не возвращает значения

function Calculate(aParam1, aParam2:integer):integer;//возвращает целочисленный результат

//C#

void DoSomething(int aParam);//не возвращает значения

{

//code

}

int Calculate(int aParam1,aParam2);//возвращает целочисленный результат

{

//code

}

Тем сложнее в C#/C++ выглядят такие конструкции, как объявление типа "указатель на метод":

//C++: объявление типа pCalc, указателя на функцию-член, принимающую 2 целочисленных параметра, и возвращающию целочисленный результат

typedef int (TSomeClass::*pCalc)(int,int);

В вышеуказанном примере объявление типа отличается от объявления переменной ключевым словом typedef, имя типа, pCalc указывается в середине выражения, в скобках

//C#: объявление типа pCalc, указателя на функцию-член, принимающую 2 целочисленных параметра, и возвращающию целочисленный результат

public delegate int pCalc(int aParam1,aParam2);

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

//Delphi

type pCalc=function(aParam1, aParam2:integer):integer of object;

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

  • В Delphi начало и конец программного блока выделяются ключевыми словами begin и end, тогда как в C-подобных языках программирования для этих целей используются фигурные скобки: {}. Таким образом, в Delphi достигается лучшая читаемость кода, особенно для лиц с ослабленным зрением.

//C#

if (bVal){

//код, состоящий из нескольких инструкций

};

if (bVal2) /*код, состоящий из одной инструкции*/;

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

//Delphi

if bVal then begin

//код, состоящий из нескольких инструкций

end;

if bVal2 then (*код, состоящий из одной инструкции*);

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

  • Подобно этому, в C-подобных языках, условное выражение цикла заключается в круглые скобки:

while (condition){//цикл с "предусловием"

//тело цикла

};

do{

//тело другого цикла

} while (condition2);//конец цикла с "постусловием", тело выполняется хотя бы однажды

В Delphi циклы с предусловием и постусловием разительно отличаются: конец цикла с постусловием нельзя принять за начало цикла с предусловием.

while condition do begin//условием продолжения цикла является истинность выражения, следующего за словом while, как C/C#

//тело цикла

end;

repeat//начало цикла с постусловием

//тело цикла

until not condition2;// истинность выражения, следующего за словом until - это условие ВЫХОДА из цикла, в отличие от C/C#

  • В Delphi операция присвоения значения переменной обозначается при помощи двоеточия со знаком равенства, :=, что является заимствованием из математической нотации. Знак равенства без двоеточия — это оператор проверки равенства, возвращающий булево значение. Напротив, в C-подобных языках оператором присваивания является одинарный знак равенства, а оператором проверки равенства — двойной, ==. В силу того, что в этих языках программирования присваивание является лишь выражением, возвращающим значение переменной слева, не так уж редки следующие неочевидные ошибки:

//C++

int iVal=12;

while (iVal=1){

//по замыслу программиста, данное тело цикла не должно выполнятся, если на входе iVal имеет значение, отличное от единицы

// однако в результате ошибочной замены знака == на одиночный =, iVal будет присвоено значение 1, а цикл окажется бесконечным

}




Получите в подарок сайт учителя

Предмет: Информатика

Категория: Прочее

Целевая аудитория: 10 класс

Скачать
Delfi програмирование

Автор: Абдрахманова Айгерим Сагатбековна

Дата: 14.01.2015

Номер свидетельства: 154994


Получите в подарок сайт учителя

Видеоуроки для учителей

Курсы для учителей

ПОЛУЧИТЕ СВИДЕТЕЛЬСТВО МГНОВЕННО

Добавить свою работу

* Свидетельство о публикации выдается БЕСПЛАТНО, СРАЗУ же после добавления Вами Вашей работы на сайт

Удобный поиск материалов для учителей

Ваш личный кабинет
Проверка свидетельства