تارا فایل

پاورپوینت زبان دلفی




Delphi

تاریخچه زبان دلفی
دلفی در واقع یک کامپایلر پاسکال است. دلفی 6 نسل جدید کامپایلر های پاسکال است که شرکت Borland از زمان ایجاد اولین نسخه پاسکال توسط Andres Hejlsberg در 15 سال پیش به بازار عرضه کززرد. برنامه نویسی به زبان پاسکال در سالیان سال از استواری و ثبات، زیبایی و ظرافت و البته سرعت بالای کامپایل سود برده است. دلفی هم از این قاعده مستثنی نیست. کامپایلر دلفی ترکیبی از بیش از یک دهه تجربه طراحی کامپایلر پاسکال و معماری بهبود یافته کامپایلر های 32 بیتی است. اگرچه قابلیت های کامپایلرها با گذشت زمان پیشرفت قابل توجهی داشته است ولی سرعت آن چندان کاهش نیافته و همچنان از سرعت بالایی برخوردار است. به علاوه استحکام و قدرت کامپایلر دلفی معیاری برای سنجش دیگر کامپایلر هاست.
Turbo Pascal و Borland Pascal کامپایلرهای 16بیت با کد محلی ارزان قیمتی بودند. آنها در طی سال ها تجدید چاپ شدند، و در اصل برای تولید برنامه های نمایش متن استفاده می شدند. وقتی استفاده از رابط های گرافیکی کاربر توسط 3.1Microsoft Windows حمایت شد، استفاده از Borland Pascal تکمیل شده به عنوان زبان زیر مجموعه معرفی شد. دلفی یکی از اولی ابزارچیزی که آمد بود که به عنوان Rapid Application Development(RAD) شناخته می شد وقتی که در سال 1995 برای Windows 3.1 16 بیتی آمد. دلفی2 ، یک سال بعد منتشر شد، که از طرف محیط Windows 32 بیتی حمایت می شد و استفاده های مختلفی از C++ به عنوان یک زبان زیرمجموعه می نمود. و C++ Builder چند سال بعد دنبال شد.

ویژگی های زبان برنامه سازی دلفی

◊ محیط توسعه مجتمع بسیار قوی و انعطاف پذیر:
در زبان های برنامه نویسی دیداری (همچون دلفی)، محیط کار و سادگی استفاده از آن، نقش مهم (و حتّی مهم تر از برنامه مترجم) را در طرّاحی برنامه ها بر عهده دارد که سازندگان دلفی به این نکته توجّه داشتند، به طوری که یک مجتمع کامل برای ساخت برنامه ها در دلفی وجود دارد که هر چیزی که لازم دارید، در این محیط موجود است.
◊ سادگی فراوان:
کار با دلفی به علّت پشتیبانی آن از موارد زیر، بسیار ساده می باشد:
*بهره مندی کامل از شیوه شی ءگرایی: ساختار زبان برنامه سازی دلفی بر اصل استفاده از پاسکال شی ءگرا بنا گردیده است که زبانی کامل، قدرتمند و یکسره شی گراست. هسته اصلی روش های برنامه نویسی شیءگرا در دلفی نهفته است و همینک دلفی به صورت واقعی از قابلیّت های مختلف زبان های شیءگرا پشتیبانی می کند و دارای ویژگی هایی اضافی (مانند بازبینی نوع داده ها در هنگام اجرا، واژه کلیدی Published، ویژگی ها و تابع های بازگرداننده نوع های پیچیده) نیز می باشد. مفهوم شیءگرایی در دلفی کامل تر از C++ است؛ ولی ممکن است به کاملی قابلیّت های شیءگرایی Smalltalk نباشد. در هر صورت، در حال حاضر دلفی قسمت عمده کدهای برنامه را به صورت کاملاً شیءگرا تولید می کند.

*  کوتاه بودن کدهای برنامه نویسی و روش های ویرایش آن ها: دلفی بسیاری از کدهای برنامه ها را به صورت خودکار در هنگام آغاز ایجاد پروژه تولید می کند؛ امّا علاوه بر این قابلیّت، قسمتی تحت عنوان «ویرایش گر کد» دارد که بر پایه متن استوار است و قابلیّت هایی مانند تعیین عکس العمل ها، هم زمان سازی ها، تکمیل کدها، قابل استفاده بودن جزیی کدها، استفاده از ماکروها، و نقشه های کلیدی سفارشی را در اختیار شما قرار می دهد. همچنین ترکیب متن روشن و نیز باز و بسته شدن کدها در خواندن، و هدایت کردن کدها به شما کمک خواهد کرد.

◊ ترجمه سریع برنامه:

ترجمه برنامه در دلفی بسیار سریع انجام می شود؛ به طوری که سرعت این ترجمه بیش تر از سرعت مترجم های زبان های برنامه نویسی C و C++ است و حتی دارای سرعتی 10 تا 20 بار سریع تر از برنامه های تفسیری مانند: VB PowerBuilder, Paradox, Visual Fox Pro و dBase می باشد و به ادّعای شرکت Borland، مترجم دلفی سریع ترین مترجم در بین زبان های برنامه نویسی است و از دلایل این امر می توان به سادگی تعریف و ساختار زبان برنامه نویسی دلفی و نیاز کم تر مترجم به تلفیق قسمت های لازم برنامه در آن اشاره کرد. لازم به ذکر است که مترجم دلفی، مترجمی برای پاسکال می باشد.
◊ اشکال زدایی، مستقرسازی، و نصب برنامه ها:

اشکال زداهای توسعه یافته Borland .NET و Borland Win32 شما را در یافتن و تصحیح انواع اشکال های برنامه کمک می کنند. همچنین مدیر مستقرسازی ASP.NET دلفی، شما را در کپی کردن فایل هایی که برنامه های ASP.NET به سوی یک سرویس دهنده وب نیاز دارد، کمک می نماید. همچنین، چارچوب کاری .NET شامل چند برنامه کمکی است که شما را در آماده سازی برنامه هایتان برای مستقرسازی آن ها کمک می کند. دلفی نیز شامل برنامه Install Shield Express برای ایجاد برنامه های نصب کننده ویندوزی می باشد.
◊ خروجی ایستا:
فایل های اجرایی دلفی نیز یک فایل EXE واقعی و تنهاست که همه چیز در درون آن قرار داده شده است و قابل اجرا بر روی هر رایانه دارای شرایط درست می باشد. در نتیجه، نیازی به تحویل فایل های دیگر (کتابخانه های در حال اجرا) به مشتری در هنگام ارائه فایل اجرایی نمی باشد؛ در حالی که در VB باید فایل های VBX نیز به همراه فایل اجرایی نهایی به مشتری ارائه شوند؛ البتّه مگر آن که از بسته ها استفاده کرده باشید. به همین دلیل، برنامه های دلفی برای نصب، ساده تر از برنامه های نوشته شده به وسیله سایر زبان های برنامه نویسی می باشند.
 

ویژگی های اختصاصی

دلفی و Kylix از زبان برنامه نویسی دلفی مبتنی بر پاسکال استفاده می کنند، و کد منبع دلفی را به کد محلی x86 یا کد مدیریت شده.NET کامپایل می کند. آن ها شامل VCL/CLX (کتابخانه مولفه دیداری) هستند، که رابط های مستقل COM(ریزفیلم های خروجی کامپیوتر) همراه اجرای کلاس های فرض شده با مرجع ، و تعداد زیادی از اجزاء بیگانه را حمایت می کنند. پیاده سازی های رابط به قسمت هایی از قابلیت های کلاس ها واگذار می شود. گردانندهای پیام بوسیله علامت زدن شیوه ای از کلاس با عدد ثابت پیام برای اجرا پیاده سازی می شوند. تاکید مهم بر روی اتصال پایگاه داده قرار دارد، و این موجب شده دلفی در مورد پایگاه داده دچار اشتباه شود، (فقط) نرم افزار نهایی طراحی کننده، مجموعه پایگاه داده ای غنی خود را عرضه کرده است.
عیب ها

دلفی درون خود، یک ابزار گذر از پایگاه نیست. اما Delphi.NET برای چارچوب های گرافیکی .NET کامپایل می کند، که برای پایگاه های گذار با چند تنظیم کد منبع pre.NET اصل طراحی شده است. محصول Kylix، که انتقال برنامه ها را به لینوکس امکان می بخشد، خیلی به فروش نرفت. هر نسخه جدید دلفی سعی در سازگاری با نسخ قبلی دارد. این به کاربران امکان می دهد تا کدهای ارث برده شده بسازند بدون اینکه در توابع و رابط ها مشکلی پیش بیاید. اما بعضی از ارتقا دهندگان احساس می کنند ای توجه به سازگاری با قبل از تحول در دلفی جلو گیری کند، و باعث کهنگی و از رده خارج شدن تصمیمات طراحی در کتابخانه های استاندارد کلاس(VCL/RTL) شود. در حال حاضر توسعه های 64 بیتی در دلفی موجود نیست، اما نسخه ای با نام Commodore که در اواسط 2009 به بازار خواهد آمد در حال برنامه ریزی است.

انواع داده اولیه

انواع صحیح ((Integer
byte,word
shortint, smalint
integer,
longint, cardinal

انواع اعشاری (Floating Point)
معمولی (real)
دقت مضاعف (double)

انواع دهدهی (Decimal)
مقادیر 128 بیتی و برای محاسبات پولی و دقت آن 28 تا 29 رقم با ارزش

انواع بولین (Boolean)
انواع بولی مقادیر true و false را می پذیرد

انواع رشته ای (string)
برای نمایش اطلاعات رشته ای

عملگرها

عملگر های محاسباتی : +,-,*,/,div,mod

عملگر های رابطه ای : in,>,<,>=,<=,==,<>

عملگر های منطقی : not,and,or,xor

عملگرهای ترکیبی : +=,-=,*=,/=

عملگر های بیتی : &,|,>>,<<

متغیر

متغیرفاقد نوع در دلفی شناخته شده نیست. یعنی دارای تعریف نوع صریح است.
برای تعریف متغیرها از کلمه کلیدی var استفاده میکنیم.
برای انتساب از =: استفاده میشود.

مثال:
var name of varient :type varient

حلقه ها ی تکراری
حلقه for
مقدارنهایی to مقدار اولیه =:نام متغیرfor
Begin
statement
End
حلقه while

doشرطWhile
Begin
statement
End

کاربرد

دلفی یک زبان برنامه نویسی قوی سطح بالا است. در اصل بر مبنای زبان برنامه نویسی خوب طراحی شده پاسکال ایجاد شده است. دلفی بر خلاف پاسکال مقدمتاً برای اهداف تحصیلی طراحی نشد. اضافه بر ویژگی های زبان های سطح بالا ، برنامه نویسی سطح پایین نیز با فعال شدن اسمبلر و بوسیله کدهای دستورالعمل پردازنده نیز ممکن است. ویژگی های شیئ گرایی زبان فقط چند ریختی بر مبنای کلاس- و رابط – که باعث می شود برنامه با وضوح بیشتری درظاهر یک برنامه نوشته شده به چند زبان نوشته شود، اجازه و استفاده چند ارثی داده شده. کلاس های خودی، اولین اشیاء کلاس هستند. اشیاء در حقیقت به اشیاء رجوع می کنند(شبیه جاوا) که دلفی به طور ضمنی ارجاع می دهد، بنابراین به اختصاص دادن حافظه برای اشاره گرها به اشیاء توسط خودمان یا تکنیک های مشابه آن در زبان های دیگر نیازی نیست. در آنجا مراجع اختصاصی که نوع رشته دارند وجود دارد.(به خوبی رشته های نا متناهی) ترجیحاً نسبت به توابع، رشته ها بوسیله علامت + می توانند ملحق شوند. برای آن دسته از انواع رشته ای اختصاص داده شده، مدیریت حافظه توسط خودمان لازم نیست، بلکه مدیر حافظه این را مدیریت می کند. مدیر حافظه پیشرفته که توسط Borland Developer Studio 2006 معرفی شده است، توابعی را برای اختصاص دادن حافظه فراهم می کنند

. زبان برای پیشرفته سازی های بعدی مناسب است و از IDE جامع آمده است. دلفی با یک رابط گرافیکی بزرگ به اسم VCL ارتباط خوبی دارد، که شامل خیلی از کدهای منبع آن است. سوم-اجزا حزب (معمولا با منبع کامل قانون) موجود در بازار هم به منزله تقویت ide یا برای سایر کارهای دلفی مربوط به توسعه است. IDE شامل واسط گرافیکی برای محلی سازی و ترجمه برنامه های ایجادشده که می تواند به یک مترجم گسترش داده شود ، بدون هزینه اضافی.( برخی از گسترش دهنده ها دسته سوم محصولات را به خاطر عاملیتی که دارند ترجح می دهند.) رابط گرافیکی حالتی را پیش می آورد که نسخه های قدیمی به نسخه های جدید دلفی، تبدیل شوند. کتابخان های دسته سوم می توانند از طریق فروشنده یا قابلیت های کامپایل دوباره برنامه را ارتقا داده شوند. VCL سازگار کننده قدیمی ای بود از تزریق وابستگی یا کنترل معکوس. VCL یک مدل با قابلیت استفاده دوباره ، خبره و توسعه پذیر با ارتقا دهنده هاست. با کمک کننده کلاس ، می توان عملکرد هسته RTL و کلاس های VCL را بدون تغییر دادن منبع اصلی کد تغییر داد. بهینه سازی سریع وساده انتقال کامپایلری می تواند به برنامه اجرایی تبدیل کند.CLX بیشتر پشتیبانی نشد چون Kylix از رده خارج شد

مدیریت حافظه در دلفی
تخصیص خودکار حافظه وقتی شما از نوع های پایه (Integer ،real ،word و…) برای ایجاد متغییرهای خود استفاده می کنید، هیچ نگرانی درباره تخصیص حافظه آن وجود ندارد چون دلفی خودش آنرا تخصیص حافظه می کند و سپس آزاد میکند.

دراین نمونه پس از پایان برنامه، تمام حافظه تخصیص داده شده فراخوانی و آزاد می شود.
type TDay = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday) var Name : String; {256 Bytes} X, Y : Integer; {4 + 4 = 8 Bytes} List : array [0..10] of Double; {8 * 11 = 88 Bytes} Today : TDay; {1 Byte}

تخصیص حافظه دینامیکی
در این حالت برنامه نویس احتیاج دارد تا انباره حافظه را شخصا'' تخصیص و آزاد کند. نوع Pointer اشاره گرها در دلفی می توانند شکل های مختلفی را در برگیرد. نخست، نوع اشاره گری که یک آدرس حافظه را برای نوع ویژه ای از داده، همانند صحیح، رشته و غیره نگه میدارد (Typed Pointer)
var Number : ^Integer; Name : ^String;

دوم، اشاره گرهای بدون نوع. اشاره گرهای بدون نوع Untyped Pointers خیلی به نوع معمولی خود شبیه هستند. اما محدودیت هایی مثل اینکه باید به نوع خاصی اشاره Point کند را ندارد.
var Something : Pointer; حال اشاره گر بدون نوع ما می تواند به هر نوعی از داده اشاره کند. برای تخصیص حافظه آن، از کمپلکس بیش از یک بیت استفاده میکنیم. برای مثال برنامه زیر کامپایل می شود ولی در زمان اجرا حافظه ای تخصیص نمیشود
begin New(Something); Dispose(Something); end;

تخصیص بلاکی از حافظه ما می توانیم از اشاره به بلاک هایی از تخصیص حافظه در سیستم استفاده کنیم. این کار را با رویه های GetMem و FreeMem برای تخصیص و آزاد سازی حافظه استفاده

میکنیم. var Something : Pointer begin GetMem(Something, 100); FreeMem(Something, 100);
end;
اشاره به حافظه از قبل تخصیص داده شده هر دو نوع اشاره گرها می توانند به هر جایی از حافظه اشاره بکنند. این بدان معناست که آنها می توانند اشاره به فضای اشغال شده با داده هایی که در حال حاضر موجودند داشته باشند. این نمونه اشاره گر احتیاجی به تخصیص حافظه ندارد.

ارایه ها به عنوان یکی از داده های ساختیافته در دلفی

دلفی به ما امکان می دهد آرایه هایی از هر نوع متغییری را ایجاد کنیم. برای تعریف آرایه به صورت زیر عمل میکنیم: var array[indexType1, …, indexTypen] of baseType; در این تعریف برای نامگذاری آرایه، از قانون نامگذاری متغییرها استفاده میکنیم و مقدار اولیه را نیز درون یک جفت کروشه قرار می دهیم. نکته: شما می توانید به جای استفاده از کروشه [ ] از ترکیب پرانتز نقطه استفاده کنید: d(.i.):= 3 + i; // Equivalent d:= 3 + i; نکته: وقتی که شما یک آرایه را تعریف می کنید احتیاجی ندارید که به آن مقدار کمترین یا بیشترین بدهید: var A : array [Boolean] of integer; begin A[True] := 50; A[False] := 100; end; نکته: توابع Low و High کران های پایین وبالای یک متغییر آرایه ای یا نوعی یا ترتیبی را بر میگردانند: for I := 0 to High(X) do S := S + X

آرایه های ثابت: آرایه های ثابت می توانند توسط ساختار ثابت نوع دلفی تعریف شود. نوع ثابت که همیشه با عبارت Const تعریف می شود، نه تنها مانع تغییر مقدار پارامتر می شود، بلکه کدهای بهینه بیشتری برای رشته ها و رکوردهای رد شده به توابع تولید می کند. ما هنگامی از این نوع استفاده می کنیم که نخواهیم مقدار رد شده به یک تابع تغییر کند
آرایه های دینامیکی: آرایه های دینامیکی، آرایه های تحلیلی پویایی هستند که ابعاد آنها موقع کامپایل شدن شناخته شده نیست. برای اعلان آنها کافی است یک آرایه بدون بعد تعریف کنید: var MyFlexibleArray: array of Real
قبل از به کار گیری آرایه های دینامیکی، ابتدا باید از رویه SetLength برای تخصیص حافظه آرایه استفاده کرد: SetLength (MyFlexibleArray, 2; ) نکته: آرایه های دینامیکی همیشه مبتنی بر صفر می باشند. نکته: شما می توانید آرایه های دینامیکی را قبل از رسیدن به ترک قلمرو از حافظه خارج کنید: MyFlexibleArray := nil; نکته: مقدار حافظه ای که در اختیار آرایه قرار میگیرد، به طول آرایه ونوع عناصر آن بستگی دارد. به عنوان مثال اگر آرایه ای از نوع صحیح به طول 10 داشته باشیم 4*10 بایت حافظه به آن اختصاص می یابد. فشرده سازی آرایه ها: در دلفی شما هنگامی که ساختار خود را تعیین کردید می توانید با استفاده از کلمه کلیدی packed اطلاعات ذخیره شده خود را متراکم کنید: type TNumbers = packed array[1..100] of Real; نکته: استفاده از packed سرعت دسترسی به اطلاعات را کند میکند. در مورد آرایه ای از کاراکترها این مورد سازگارتر می باشد.

برنامه نویسی ساخت یافته
در دهه 1960 میلادی توسعه نرم افزار دچار مشکلات عدیده ای شد. در آن زمان سبک خاصی برای برنامه نویسی وجود نداشت و برنامه ها بدون هیچگونه ساختار خاصی نوشته می شدند. وجود دستور پرش goto نیز مشکلات بسیاری را برای فهم و درک برنامه توسط افراد دیگر ایجاد می کرد، چرا که جریان اجرای برنامه مرتبا دچار تغییر جهت شده و دنبال کردن آن دشوار می گردید. لذا نوشتن برنامه ها عملی بسیار زمان بر و پرهزینه شده بود و معمولا اشکال زدایی, اعمال تغییرات و گسترش برنامه ها بسیار مشکل بود. فعالیتهای پژوهشی در این دهه باعث بوجود آمدن سبک جدیدی از برنامه نویسی بنام روش ساختیافته گردید؛ روش منظمی که باعث ایجاد برنامه هایی کاملا واضح و خوانا گردید که اشکال زدایی و خطایابی آنها نیز بسیار ساده تر بود. اصلی ترین نکته در این روش عدم استفاده از دستور پرش goto است. تحقیقات بوهم و ژاکوپینی نشان داد که می توان هر برنامه ای را بدون دستور پرش و فقط با استفاده از 3 ساختار کنترلی ترتیب، انتخاب و تکرار نوشت. ساختار ترتیب، همان اجرای دستورات بصورت متوالی (یکی پس از دیگری) است که کلیه زبانهای برنامه نویسی در حالت عادی بهمان صورت عمل می کنند. ساختار انتخاب به برنامه نویس اجازه می دهد که براساس درستی یا نادرستی یک شرط، تصمیم بگیرد کدام مجموعه از دستورات اجرا شود. ساختار تکرار نیز به برنامه نویسان اجازه می دهد مجموعه خاصی از دستورات را تا زمانیکه شرط خاصی برقرار باشد، تکرار نماید

هر برنامه ساختیافته از تعدادی بلوک تشکیل می شود که این بلوکها به ترتیب اجرا می شوند تا برنامه خاتمه یابد(ساختار ترتیب). هر بلوک می تواند یک دستورساده مانند خواندن، نوشتن یا تخصیص مقدار به یک متغیر باشد و یا اینکه شامل دستوراتی باشد که یکی از 3 ساختار فوق را پیاده سازی کنند. نکته مهم اینجاست که درمورد دستورات داخل هر بلوک نیز همین قوانین برقرار است و این دستورات می توانند از تعدادی بلوک به شرح فوق ایجاد شوند و تشکیل ساختارهایی مانند حلقه های تودرتو را دهند. نکته مهم اینجاست که طبق قوانین فوق یک حلقه تکرار یا بطور کامل داخل حلقه تکرار دیگر است و یا بطور کامل خارج آن قرار می گیرد و هیچگاه حلقه های روی هم افتاده نخواهیم داشت.
از جمله اولین تلاشها در زمینه ساخت زبانهای برنامه نویسی ساختیافته، زبان پاسکال بود که توسط پروفسور نیکلاس ویرث در سال 1971 برای آموزش برنامه نویسی ساختیافته در محیطهای آموزشی ساخته شد و بسرعت در دانشگاهها رواج یافت. اما بدلیل نداشتن بسیاری از ویژگیهای مورد نیاز مراکز صنعتی و تجاری در بیرون دانشگاهها موفقیتی نیافت. کمی بعد زبان C ارائه گردید که علاوه بر دارا بودن ویژگیهای برنامه نویسی ساختیافته بدلیل سرعت و کارایی بالا مقبولیتی همه گیر یافت و هم اکنون سالهاست که بعنوان بزرگترین زبان برنامه نویسی دنیا شناخته شده است.

روالها و تابع ها:

ساختار : 1
procedure <Name> [( param1: var_type ; ( param2 : var_type…) ];
begin
// Pr ocucedure body
end ;

ساختار 2:
function <Name> [( param1: var_type ; ( param2 : var_type…) ]; return _type ;
begin
// function body
end ;
نام پارامترهای انتقال داده Parami ها اسامی اختصاص یافته به هر کدام از زیر برنامه ها Name
پارامترها در برنامه …, Interger ها انواع داده هستند همان انواع متغیرها مثل var- type شده به زیر برنامه
هم عیناً نوع متغیر است و نوع متغیری است return – type عیناً مانند متغیر قابل دسترسی ان د. در نهایت
بدنه زیر برنامه است و کل متن اصلی زیر برنامه در این body که تابع به برنامه اصلی باز می گرداند . بخش
بخش نوشته می شود.
در مورد انتقال پارامترها به زیربرنامه نکاتی وجود دارد، هر چند که گفتیم پارامترها عیناً مشابه
متغیرها هستند ولی در عمل سه نوع متفاوت از پارامتر وجود دارد که در هر مورد نحوه برخ ورد متفاوت است،
این موارد بدون آوردن مثال قابل توضیح نیست لذا باید تا کامل شدن توضیح بدویات تعریف زیر برنامه صبر
کنید.

در توابع برای آنکه مقداری که می خواهید به برنامه بازگردانید مشخص کنید دو راه وجود دارد یکی
استفاده از متغیری هم نام با اسم تابع البته نه به این معنا که آن را تعریف کنید بلکه فقط استفاده کنید مثلاً
function f (x: real): real
begin
f :=x *x
End

است، یک متغیر تعریف شده دیگر وجود Pascal علاوه بر امکان فوق که مشترک با Delphi ولی در
با نوع متغیر مشابه تابع وجود result دارد که استفاده از آن ترجیح دار د. در تمامی توابع تعریف شده متغیر
دارد که می توان استفاده کرد
function f (x: real): real
begin
Result:= x* x
End

در هر دو سوی عبارت انتساب استفاده کرد result مزیت روش دوم این است که می توان از متغیر
مثلاً
result := result *2;
نمی توان چون در سمت راست = معادل فراخوانی خود تابع است: f ولی از
F1: = f *2

اجرای دستور به دستور : کنترل خطاها :

در بخش قبل خطاهایی را بررسی کردیم که کلا اتفاق می افتند چه خطاهایی که نقض الگوریتم است مثل عدم در نظر گرفتن احتمال تقسیم بر صفر دو جایی که این احتمال وجود دارد و چه خطاهایی که در اثراستفاده اشتباه از نرم افزار اتفاق می افتد. در واقع بخشی گذشته یک روش کلی برای پیدا کردن خطا های دربرنامه و دسته بندی آنها بود. با روشهای فصل گذشته ریش های مشکلات برنامه پیدا می شد.
خطاهایی که نقض الگوریتم است با اصلاح آن از بین می رود و بر استحکام الگوریتم افزوده می شوداما باید برای خطاهای نوع کاربری هم فکر مقتضی کر د. این کار با " مدیریت استثناها " که قبلاً هم به آن اشاره کردیم ممکن است و به این معنی است که خطاهایی که استثنائاً در اجرای برنامه ایجاد می شوند را در هنگام رخداد به نحوی مناسب به اطلاع کاربر برسانیم و هر گونه مشکل احتمال در اثر بروز خطا را رفع کنیم از قبیل"نشت حافظه 1" که عبارتست از اختصاص حافظه و عدم آزاد سازی آن که باعث می شود رشته مدیریت
حافظه از دست سیستم عامل در رفته و دچار کمبودر حافظه گردد.
اولین و مهمترین ساختار در این مورد ساختارtry است.

Try
//some operation
Finally
//must be done operation
end;
Try
//some operation
except
// Operations in of
//Exceptions
end;

در مواردی می دانیم در اثر عدم استفاده صحیح کاربر احتمال خطا در بخش خاصی از برنامه وجوددارد مثلاً برنامه ای که باید اعداد را تغییر مبنا دهداگر مبنای وارد شده از طرف کاربر 0 باشد حتماً خطا ایجاد می شو د. در چنین مواردی کدی را که قرار می دهیم. در نوع اول اگر خطا اتفاق finally,try, یا ,except ,try احتمال ایجاد خطا دارد در بخش خاصیمنتقل می شود . و در ساختار دوم هر اتفاقی د ر اجرای بیافتد کنترل برنامه به بخش بین end,except اجرا می شود. end و finally چه خطا داشته باشیم و چه خیر بخش بین finally,try کدهای بیندر مورد اول که نیاز به مثال کاربرد نیست اما در مورد حالت دوم مثال زیر کاربرد آن را نشان می دهد:
فرض کنید قرار است که عددی از کاربر دریافت شود عدد قبلی بر آن تقسیم شود و در هر صورت (چه خطا رخ داد و چه خیر پیغام خاصی رو صفحه نمایش داده شود).

Try
X :X /I;
.
.
.
Finally;
ShowMessage;
End;

و یا در مواردی تخصصی تر هنگامی که یک شیئی ایجاد می شود حتماً باید فضای اختصاص داده شده ایجاد نشد یعنی چه خطا رخ داد و چه رخ ندا د باید حافظه اختصاص MemoryLeak age ، به آن آزاد شود داده شده آزاد شود.

X=:tobject .Create
try
//Code that mayGererate errorss
finally
X .Free
end

با این ابزارهای بسیاری از خطاهای برنامه مدیریت می شوند البته نکات دیگری در استفاده از
مراجعه کنید. Delphi وجود دارد که اگر علاقه به دانستن آنها دارید؛ به راهنمای try…except…end
این ابزارها بسیاری از خطاها را پوشش می دهد برای باقیمانده خطاها باید ابتدا مفاهیمی را بدانیم تا
مدیریتشان کنیم.
به ارث برده شده اند اتفاق Exception در دلفی اخبار رخدادن یک استثنا توسط شیئی هایی که از
ندارند بلکه نام آنها متفاوت است لذا Exception می افت د. این کلاسهای تقریباً هیچ چیزی علاوه بر
Massage دارند. خاصیت Massage مشترک بین تمامی آنهاست . این اشیا خاصی ت Exception خاصیتهای
از نوع رشته حرفی و مقدار پیغام خطی به زبان انگلیسی است.

کلاس های Abstract

در دلفی، کلاسی که حداقل یکی از متدهای آن با استفاده از رهنمود abstract تعریف شده باشد، کلاس Abstract نامیده می شود.[۱] متدهای abstract متدهایی هستند که توسط یک کلاس والد parent (تعریف می شوند، اما پیاده سازی نمی شوند. پیاده سازی اینگونه متدها بر عهده کلاس های فرزند child می باشد. در صورتی که یک نمونه instance یک شی object از یک کلاس abstract ایجاد کنید، با هشدار کامپایل مواجه خواهید شد و در صورتی که یکی از متدهای abstract آن شی را فراخوانی کنید، برنامه شما با یک استثنای EAbstractError" متوقف خواهد شد.

Interfaces

اینترفیس ها نوعی قرارداد بین دو یا چند کلاس محسوب می شوند که در آن یک کلاس پیاده سازی تمامی متدهای مشخص شده در قرار داد را برای استفاده سایر کلاس ها یا کاربر تضمین می کند. پیاده سازی این متدها از دید کلاس های استفاده کننده و کاربر پنهان است. اینترفیس ها شبیه به کلاسی هستند که تمامی متد های آن abstract باشد و هیچ فیلدی برای ذخیره اطلاعات نداشته باشد.
اما اینترفیس ها ویژگی هایی دارند که آنها را از کلاس های Abstract جدا می کند:
۱- اینترفیس ها کلاس نیستند، بلکه یک نوع (Type) مستقل در زبان مربوطه (در اینجا Object Pascal) محسوب می شوند. ۲- اینترفیس ها از TObject مشتق نمی شوند. IUnknown در نسخه های قبلی دلفی (قبل از دلفی ۵) بعنوان والد تمام اینترفیس ها محسوب می شد، اما از نسخه ۵ به بعد، همه اینترفیس ها از IInterface مشتق می شوند. IUnknown و IInterface یکسان هستند. از IUnknown در برنامه های مبتنی بر تکنولوژی COM مایکروسافت استفاده می شود. ۳- اگر پیدا سازی نکردن یک متد از کلاس abstract ،در کلاس های فرزند، موجب ایجاد هشدار کامپایلر می شد؛ پیاده سازی نکردن هر یک از متدهای یک اینترفیس، توسط کلاسی که آن اینترفیس را پشتیبانی می کند، موجب کامپایل نشدن برنامه می شود. ۴- یک کلاس می تواند از چندین اینترفیس بطور همزمان

پایان


تعداد صفحات : 27 | فرمت فایل : .pptx

بلافاصله بعد از پرداخت لینک دانلود فعال می شود