Смекни!
smekni.com

Модули и объекты в языке Турбо Паскаль 7.0 (стр. 5 из 5)

If TypeOf(Self) - TypeOf(TA) then ...

И еще одно замечание. Между экземплярами родственных объектов возможен обмен информацией с помощью операторов присваивания. Например, если PoinTl и Point2 - экземпляры объекта TPOINT, то допустимо присваивание
Point1 := Point2;

или
PoinT2 := Point1;

Присваивания разрешены и между экземплярами родственных объектов разных уровней иерархии, однако в этом случае экземпляру объекта-родителя можно присвоить экземпляр потомка, но не наоборот! Например, разрешается присваивание
Point := Line;

но недопустимо

Line := Point;

если LINE - потомок POINT. Это происходит по той причине, что потомок содержит все поля родителя, поэтому при присваивании потомка родителю эти поля получат правильные значения. Обратное же присваивание оставит без изменения «лишние» поля потомка, что является недопустимым.
При использовании виртуальных правил следует остерегаться присваивания между экземплярами объектов, во всяком случае, необходимо помнить, что простое присваивание не заменяет собой инициацию виртуального объекта. Если, например, LINE и POINT - виртуальные объекты, то присваивание
POINT:= Line;

не инициирует объект POINT, даже если объект LINE был перед этим инициирован. После такого присваивания необходим вызов конструктора объекта POINT перед обращением к любому виртуальному методу этого объекта.

Заключение

Мы завершаем рассмотрение основ программирования на Турбо Паскале. Среди них вычисления и обработка информации, использование объектно-ориентированного программирования – словом, те задачи, с которыми приходится сталкиваться профессиональному программисту. Турбо Паскаль был выбран как наилучший язык программирования для обучения основам профессионального программирования.

Турбо Паскаль – достаточно «старый» программный продукт. Следует заметить, однако, что Паскаль – это живой язык. Известны, используются или находятся в стадии разработки компиляторы и среды разработки программ на Паскале для различных операционных систем, в том числе и бурно развивающейся операционной системы Linux. Эти системы иногда частично, а иногда и в значительной мере совместимы с Турбо Паскалем, а следовательно, накопленный опыт может быть использован и для серьезной, профессиональной работы по разработке программ.

Список используемых источников

1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988. - 320 с.

2. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. - М.: Наука, 1987. - 112 с.

3. Вирт Н. Алгоритмы и структуры данных./Пер. с англ. М.: Мир, 1989. - 360 с.

4. Грогоно П. Программирование на языке Паскаль. - М.: Мир, 1982. - 382 с.

5. Дантеманн Дж., Мишел Дж., Тейлор Д. Программирование в среде Delphi: Пер. с англ. - Киев: НИПФ “ДиаСофтЛтд.”, 1995. - 608 с.

6. Епанешников А., Епанешников В. Программирование в среде Турбо Паскаль 7.0. - М.: ДИАЛОГ-МИФИ, 1993. - 288 с.

7. Йенсен К., Вирт Н. Паскаль. Руководство для пользователя и описание языка: Пер. с англ. - М.: Финансы и статистика, 1982. - 151 с.

8. Матчо Дж., Фолкнер Д.Р. Delphi: Пер.с англ.- М.: БИНОМ, 1995. - 464 с.

9. Орлик С.В. Секреты Delphi на примерах: - М.: БИНОМ. - 316 с.

10. Перминов О.Н. Программирование на языке Паскаль. - М.: Радио и связь, 1988. - 224 с.

11. Пильшиков В.Н. Сборник упражнений по языку Паскаль: Учеб. пособие для вузов. - М.: Наука, 1989. - 160 с.

12. Прайс Д. Программирование на языке Паскаль: Практ. руководство. - М.: Мир, 1987. - 232 с.

13. Рубенкинг Н. Турбо Паскаль для Windows: В 2 т.; Пер. с англ. - М.: Мир, 1993. - 536 с.

14. Фаронов В.В. Турбо Паскаль. В 3-х книгах. Книга 1. Основы Турбо Паскаля. - М.: Учеб.-инж.центр МВТУ-ФЕСТО ДИДАКТИК, 1992. - 304 с.

15. Фаронов В.В. Паскаль и Windows. - М.: Учеб.-инж.центр МВТУ-ФЕСТО ДИДАКТИК, 1994. - 539 с.

16. Фаронов В.В. Практика Windows-программирования. М.: Информпечать, 1996. - 247 с.

17. Федоров А., Рогаткин Д. Borland Pascal в среде Windows. - Киев: Диалектика, 1993. - 656 с.

18. Форсайт Р. Паскаль для всех: Пер. с англ.- М.: Машиностроение, 1986. - 288 с.

Приложение А

(обязательное)

{$N+}

unit func1;

interface

type

float = Extended;

const

Infinity = 1.0E+4932;

function Tan(x : float) : float;

function ArcSin(x : float) : float;

function ArcCos(x : float) : float;

function Degrees_to_Radians(Degrees : float) : float;

function Radians_to_Degrees(Radians : float) : float;

function Sinh(x : float) : float;

function Cosh(x : float) : float;

function Tanh(x : float) : float;

function Log10(x : float) : float;

function Power(x, Exponent : float) : float;

implementation

const

Radians_Per_Degree = Pi / 180;

Degrees_Per_Radian = 180 / Pi;

Ln10 = 2.3025850930;

MaxValue = 88.029619;

function Tan(x : float) : Float;

var

Consine, Tangent : float;

begin

Consine := Cos(x);

if Cosine := 0.0 then

if Sin(x)>=0 then

Tan := Infinity

else

Tan := -Infinity

else

begin

Tangent := Sin(x) / Cosine;

if Tangent > Infinity then

Tan := Infinity

else

if Tangent < -Infinity then

Tan := -Infinity

else

Tan := Tangent;

end;

end;

function ArcSin(x : float) : float;

begin

if Abs(x) = 1.0 then

ArcSin := Pi / 2.0

else

ArcSin := ArcTan(x / Sqrt(1 – x * x));

end;

function ArcCos(x : float) : float;

var

Result : float;

begin

if x = 0.0 then

ArcCos := Pi / 2.0

else

begin

Result := ArcTan(sqrt(1 – x * x) / x);

if x < 0.0 then

ArcCos := Result + Pi

else

ArcCos := Result;

end;

end;

function Degrees_to_Radians(Degrees : float) : float;

begin

Degrees_to_Radians := Degrees * Radians_Per_Degree;

end;

function Radians_to_Degrees(Radians : float) : float;

begin

Radians_to_Degrees := Radians * Degrees_Per_Radian;

end;

function Sinh(x : float) : float;

var

t : float;

begin

if x > MaxValue then

Sinh := Ifinity

else

if x < -MaxValue then

Sinh := -Infinity

else

begin

t := Exp(x);

Sinh := 0.5 * (t – 1 / t);

end;

end;

function Cosh(x : float) : float;

var

t : float;

begin

if Abs(x) > MaxValue then

Cosh := Infinity

else

begin

t := Exp(x);

Cosh := 0.5 * (t + 1 / t);

end;

end;

function Tanh(x : float) : float;

begin

Tanh := Sinh(x) / Cosh(x);

end;

function Log10(x : float) : float;

begin

Log10 := Ln(x) / Ln10;

end;

function Power(x, Exponent : float) : float;

begin

if x > 0.0 then

Power := Exp(Exponent * Ln(x))

else if x = 0.0 then

Power := 0.0

else

WriteLn ( ‘ Основание степени отрицательно! ’ );

end;

begin

end.