Professional Documents
Culture Documents
PL - DataTypes - 1
PL - DataTypes - 1
بحثانواعدادهاولیه
استاددرس:مهدیجبلعاملی
• شی داده ()Data Object
• یک شی داده گروهی از یک یا چند قسمت از اطالعات است که در کامپیوترهای مجازی استفاده
می شود.
• در واقع شی داده ظرفی برای مقادیری از داده هاست .
• یعنی محلی است که داده ها در آنجا ذخیره و بازیابی می شوند.
2
• طول عمر )(life time
یکی از صفات شی داده طول عمر است .فاصله زمانی بین لحظه ای که حافظه به شی داده تخصیص
داده میشوند تا زمانی که حافظه از آن پس گرفته می شود را طول عمر شی داده گویند.
هر یک از اشیا داده دارای طول عمر مخصوص به خود هستند .بعضی از اشیا داده در شروع اجرای
برنامه وجود دارند و برخی در حین اجرا بصورت پویا ایجاد میشوند و برخی در حین اجرای برنامه
از بین می روند و برخی تا آخر اجرای برنامه باقی می مانند.
3
• شی داده اولیه ) : (Elementaryیک شی داده اولیه است اگر تنها شامل یک محل حافظه برای
مقدار داده باشد .مانند اشیا داده از نوع … , CHAR , FLOAT , INT
• شی داده ساختمان داده) : (Structureاگر شی داده شامل مجموعه ای از سایر اشیا داده ای
باشد .مانند رکورد ،آرایه مقدار یک شی داده ای توسط الگویی از بیت ها مشخص میشود .
4
صفات شیء داده
نوع •
محل •
مقدار •
نام •
اجزاء •
6
: مثال
int max = 100;
7
• نوع داده Data Type
نوع داده طبقه ای از اشیا داده به همراه مجموعه ای از عملیات برای تولید و دستکاری می باشد.
هر زبان مجموعه ای از انوع داده اولیه مانند char , int , bool , floatدارد که هنگام تعریف
زبان مشخص شده اند.
عالوه بر این زبان ممکن است به برنامه نویس اجازه دهد انواع جدیدی را تعریف کند.
8
انواعدادهاولیه
زیر نوع ها :
وقتی نوع داده جدیدی را توصیف می کنیم اغلب تمایل داریم بگوییم که
این نوع مشابه نوع دیگری است به عنوان مثال در زبان cانواع short ,
long intشکل های گوناگونی از نوع داده صحیح هستند و رفتار آنها
یکسان است و عالقه داریم که عملیاتی مانند جمع و ضرب به طور یکسان
تعریف شود .بنابراین اگر نوعی به عنوان بخشی از نوع بزرگتر باشد آن
نوع را زیر نوع و به نوع بزرگتر ابرنوع می گوییم .یا به عبارت دقیق تر اگر
مجموعه مقادیر یک نوع ،زیر مجموعه ی مجموعه مقادیر نوع دیگر باشد
نوع با مجموعه مقادیر بزرگتر را ابر نوع و نوع دیگر را زیر نوع گویند .به
عنوان مثال short intزیر نوع int , intزیر نوع long intمی
باشد.
11
• -3-5اعالن Declaration
• اعالن دستوری از برنامه است که نام ،نوع و طول عمر اشیا داده را
مشخص می سازد
;• int x
12
• -3-5اعالن Declaration
• اعالن دستوری از برنامه است که نام ،نوع و طول عمر اشیا داده را
مشخص می سازد
;• int x
• در زبان perlانتساب مقداری به متغیر آن را اعالن می کند.
• متغیر رشته ای ”$x = “abc
$y = 123 • متغیر صحیح
13
• عالوهبرایناعالنهامیتواننداطالعاتیراجعبهعملیاترابهمترجمبدهندمثلاعالنتابعزیرکهتعداد،ترتیب
،نوعپارامترونتیجهرامشخصمیکند.
Function sub ( int x , float y ): real
14
• اهدف اعالن
• الف ) انتخاب نمایش حافظه :
15
• اهدف اعالن
• الف ) انتخاب نمایش حافظه :
• ب ) مدیریت حافظه بهتر :
16
• اهدف اعالن
• الف ) انتخاب نمایش حافظه :
• ب ) مدیریت حافظه بهتر :
• ج ) عملیات چند ریختی
17
• اهدف اعالن
• الف ) انتخاب نمایش حافظه :
• ب ) مدیریت حافظه بهتر :
• ج ) عملیات چند ریختی
18
-4-5کنترل نوع
X= X+1
19
-4-5کنترل نوع
منظور از کنترل نوع این است که هر عملیاتی که در برنامه انجام می گیرد تعداد و نوع آرگومان های
آن درست باشد.
20
-4-5کنترل نوع
منظور از کنترل نوع این است که هر عملیاتی که در برنامه انجام می گیرد تعداد و نوع آرگومان های
آن درست باشد.
دو روش برای کنترل نوع وجود دارد.
کنترل نوع پویا ( :)D.T.Cکنترل نوع در زمان اجرا صورت می گیرد.
کنترل نوع ایستا ( :)S.T.Cعمل کنترل نوع در زمان ترجمه (کامپایل) صورت می گیرد.
21
جهتاستفادهازکنترلنوعایستابهمواردزیرنیازمندیم: •
نوعمتغیرهادرزمانتعریفمتغیرهابایدمشخصشودوثابتباشد. •
درزیربرنامههابایدتعداد،نوعوترتیبپارامترهاونوعمقداربازگشتیازتابعنیزمشخصباشند. •
نوعثابتهابایدمشخصباشند. •
• درحالتپویابهیکتوصیفکننده()Descriptorنیازداریمکهمشخصمیکندکهنوع
شیءدادهچیست
مقایسهکنترلنوعایستاوپویا:
• سرعتاجرا
• مصرفحافظه
• انعطافپذیری
)if ($x>15
;$y=15
else
;"$y="ABC
• اشکالزدایی
• نوعقوی(:)Strong Type
• اگریکزبانتمامکنترلنوعهایشرادرزمانترجمهانجامدهد،میگوییمازنظرنوعقویاست
کهدراینحالتسرعتاجرایکدهایاینزبانباالبودهومیزانحافظهمصرفیبرنامه کم
میباشد.
• نوعقوی(:)Strong Type
• اگریکزبانتمامکنترلنوعهایشرادرزمانترجمهانجامدهد،میگوییمازنظرنوعقویاست
کهدراینحالتسرعتاجرایکدهایاینزبانباالبودهومیزانحافظهمصرفیبرنامه کم
میباشد.
• استنتاجنوع(:)Type Inference
• یکزباندارایامکاناستنتاجنوعمیباشدچنانچهبتواندبراساسمتنبرنامهنوع اشیاءدادهایرا
مشخصکند(استنتاجکند):
;• fun Area(length : int, width : int) : int = length * width
نوعقوی(:)Strong Type •
اگریکزبانتمامکنترلنوعهایشرادرزمانترجمهانجامدهد،میگوییمازنظرنوعقویاست کهدر •
اینحالتسرعتاجرایکدهایاینزبانباالبودهومیزانحافظهمصرفیبرنامهکممیباشد.
استنتاجنوع(:)Type Inference •
یکزباندارایامکاناستنتاجنوعمیباشدچنانچهبتواندبراساسمتنبرنامهنوعاشیاءدادهایرامشخص •
کند(استنتاجکند):
;• fun Area(l : int, w : int) : int = l * w
درکدباالنوعپارامترهاوخروجیتابعمشخصمیباشد.معادلتابعباال،میتوانتوابعزیررانیزنوشت: •
;• fun Area(l : int, w : int) = l * w
;• fun Area(l, int w) : int = l* w
)Type Conversion(تبدیلنوع
• type1 → type2
تبدیلنوع()Type Conversion
• type1 → type2
• جهتاینمنظوربرنامهنویسمیتواندبهصورتصریحتوسطدستوراتیکهدرخود زبانوجود
دارد،تبدیلنوعانجامدهد،مانندتابع roundکهنوعاعشاریرابهنوعصحیحتبدیلمیکند.
تبدیلنوع()Type Conversion
• type1 → type2
• جهتاینمنظوربرنامهنویسمیتواندبهصورتصریحتوسطدستوراتیکهدرخود زبانوجود
دارد،تبدیلنوعانجامدهد،مانندتابع roundکهنوعاعشاریرابهنوعصحیحتبدیلمیکند.
• تبدیلنوعضمنی(:)Coercion
• دراینروشعملتبدیلنوعبهصورتخودکاروبدوندخالتبرنامهنویسانجاممیشود.
;float z,y
;int x
;z = x + y
مقایسهانواعتبدیلنوع
• انعطافپذیری
• اشکالزدایی
• درهردونوعممکناستکهدادهیااطالعاتماازبینبرود.
انتساب):(Assignment
• توسطانتساب،یکشیءدادهایرابهیکمقداردادهایمقیدمیکنیم.
• دربرخیاززبانهاانتسابیکدستوراستودربرخیدیگراززبانهاانتسابیکعملاست.
انتساب):(Assignment
• توسطانتساب،یکشیءدادهایرابهیکمقداردادهایمقیدمیکنیم.
• دربرخیاززبانهاانتسابیکدستوراستودربرخیدیگراززبانهاانتسابیکعملاست.
;x:=y • درزبانپاسکالدستور
• باامضای
• integer1*integer2→void
• مقدار integer2رابه integer1انتسابمیدهدوخروجیندارد.
انتساب):(Assignment
توسطانتساب،یکشیءدادهایرابهیکمقداردادهایمقیدمیکنیم. •
دربرخیاززبانهاانتسابیکدستوراستودربرخیدیگراززبانهاانتسابیکعملاست. •
;x:=y درزبانپاسکالدستور •
باامضای •
• integer1*integer2→void
مقدار integer2رابه integer1انتسابمیدهدوخروجیندارد •
;x=y درزبانهایخانواده Cعمل •
integer1*integer2→integer3 باامضای •
مقدار integer2رادر integer1قرارمیدهدو integer3راباتوجهبهمقدار integer1بهعنوان •
نتیجهبرمیگرداند
دستور انتساب روبرو را در نظر بگیرید:
X:=Y
: Yبه مقدار موجود در شی داده ای که دارای نام Yاست مراجعه می کند
این ارجاع را مقدار راست شی داده ()Right Valueگویند.
: Xبه محلی از شی داده مراجعه می کند که حاوی مقدار جدید خواهد بود
این ارجاع را مقدار چپ شی داده ()Left Valueگویند.
Y=++X
Y=X++
35
مفهومانتساب
مقدار دهی اولیه •
شیدادهفاقدمقداراولیهشیدادهایاستکهایجادشدهاستولیهنوز
مقداریبهآندادهنشدهاست.
;int x,y
;y=2*x
37