Transcript مشاهده
بسم هللا الرحمن الرحیم
فصل پنجم
انواع داده اولیه
وحیده رضویان -فاطمه نظری
1
مقدمه
2
برنامه
مجموعه ای ازعملیات
اجراروی داده ها به ترتیب خاصی
تفاوت های بین زبان ها
3
انواع داده ها
عملیات
مکانیزم کنترل ترتیب اجرای عملیات برروی داده ها
خواص اشیا داده وانواع داده
4
ناحیه های ذخیره داده ها درکامپیوترواقعی
5
مثل حافظه ،ثبات ها ،دیسک و...
به صورت بایت یا کلمه گروهبندی می شوند.
این ناحیه ها ایستا هستند.
ناحیه های ذخیره داده ها درکامپیوترمجازی
سازمان پیچیده ای دارند.
مثل آرایه ها ،پشته ها،اعداد،رشته های کاراکتری و...
ازاصطالح شی داده برای گروهبندی زمان اجرای یک یا
چندقطعه ازداده ها استفاده می شود.
این ناحیه ها پویا هستند.
6
تعریف
شی داده
ظرفی برای مقادیرداده است.
محلی است که مقادیر داده در آنجا ذخیره وبعدا
بازیابی می شوند.
یک شی داده توسط مجموعه ای ازصفات مشخص می
شودکه مهم ترین آنها نوع داده است.
7
شی داده
• بعضی ازاشیا داده توسط برنامه نویس تعریف می
شوند.
برنامه نویس آنها رابا استفاده از اعالن ها ودستورات
زبان،دربرنامه ایجاد ودستکاری می کند.
مثل متغییرها ،آرایه ها،ثوابت،و...
• بعضی ازاشیا داده توسط سیستم تعریف می شوند.
مستقیما دراختیار برنامه نویس نیستند.
درحین اجرای برنامه،درصورت نیاز به طورخودکار ایجاد میشود.
مثل :پشته ها ،رکورد های فعالیت
8
مقادیر داده
مقدار داده با الگوی خاصی از بیت ها درحافظه
کامپیوتر نمایش داده می شود.
مقدار داده ممکن است یک عدد،کاراکتر یا
اشاره گری به شی داده دیگری باشد.
9
مثال
شی داده:محلی درحافظه
به نام A
A:
= 10001مقدارداده
0000000000010001
10
A:
طول عمرlifetime-
هرشی داده دارای طول عمر است.
از زمانی که متغیر در برنامه به وجود می آید تا
زمانی که از بین می رود.
11
شی داده اولیه
اگر شی داده حاوی مقداری باشد که همیشه به
عنوان یک واحد دستکاری شود.
یک شی داده اولیه است اگرتنها دارای یک محل
حافظه برای یک مقدار داده باشد.
آرایه شی داده اولیه نیست.
ساختمان
اگرشی داده ،مجموعه ای ازسایر اشیای داده باشد.
مثل آرایه
12
انواع مختلف انقیاد یک شی داده
یک شی داده درطول عمرخود انقیادهای گوناگونی را می
پذیرد
انقیاد شی داده به یک نوع:
مجموعه ای ازمقادیر که شی داده میتواند بپذیرد.
در زمان ترجمه برنامه ایجادمی شود.
13
انقیاد شی داده به محلی از حافظه:
محلی درحافظه برای شی درنظر گرفته می شود.
انواع مختلف انقیاد یک شی داده
انقیاد شی داده به یک یا چند مقدار:
نتیجه عمل انتساب
انقیاد شی داده به یک یا چند نام:
توسط اعالن ها مشخص می شود.
انقیاد شی داده به اجزا:
مثل آرایه
14
متغیرها و ثوابت
15
تعریف
متغیر
شی داده ای که توسط برنامه نویس تعریف می شود.
مقدار آن با عملیات انتساب تغییر می کند.
مثل int n,char a
ثابت
یک شی داده با نام است .
مقداری به آن نسبت داده می شود که درطول عمر آن
ثابت است.
مثل ; Const int max=30درزبان c
16
تعریف
لیترال (ثابت لیترال)
ثابتی است که نام آن همان نمایش مقدارش است.
مثل ” “21که یک ثابت لیترال است که یک شی داده با
مقدار 21است.
نکته:
گاهی کامپایلر می تواند از اطالعات مربوط به مقادیر
ثابت استفاده کند تا از تولید کد برای یک دستور یا عبارت
جلوگیری کند.
17
مثال
;Const int MAX=30
;Int N
N=27
N=N+MAX
اشیای دادهMAX, N, “30” ,”27”:
متغیرN :
ثابتMAX :
ثابت لیترال30,27:
18
ماندگاری داده
دراکثر موارد طول عمر متغیرها با زمان اجرای برنامه
یکی است.اجرا که تمام شد متغیرهاازبین می روند.
اگرطول عمریک داده بیشتراز یک اجرا باشدگوییم داده
ماندگار است ودربین اجراهای مختلف برنامه وجود
دارد.
ماندگاری:از بین نرفتن انقیادمکان ومقدار بعدازاتمام
برنامه.
مثل سیستم رزرواسیون هواپیما
19
انواع داده
20
تعریف
نوع داده اولیه
دسته ای از اشیای داده اولیه که عملیات
گوناگونی بر روی آنها تعریف می شوند و در زبان
ساخته می شوند.
مثل انواع کاراکتری ،صحیح ،حقیقی و...
نوع دادهdata type -
دسته ای ازاشیای داده به همراه مجموعه ای
ازعملیات برای ایجاد ودستکاری آنها
آرایه که از نوع داده اولیه ساخته شده است پس آرایه یک
نوع داده است.
21
نوع داده
زبان ممکن است به برنامه نویس اجازه دهد انواع
جدیدی راتعریف کند.
تفاوت مهم بین زبان های قدیمی مثل فرترن وزبان های
جدید مثل جاوا به انواع داده هایی مربوط می شود که
توسط کاربران تعریف می شوند.
نوع داده معموال در دو سطح بررسی می شود:
.1
مشخصات
.2
پیاده سازی
22
عناصراصلی مشخصات یک نوع داده:
.1
صفات
صفات اصلی هرشی داده مثل نوع داده ونام درطول عمرآن
عوض نمی شود.
بعضی ازصفات درتوصیفگر به عنوان بخشی ازشی داده ذخیره
می شود.
بقیه صفات فقط برای تعیین نمایش حافظه شی داده هستند
و درحین اجرای برنامه صریحا ظاهر نمی شوند.مثل آدرس
شی داده
مقداریک صفت ازشی داده،متفاوت ازمقداری است که شی
داده حاوی آن است.
23
عناصراصلی مشخصات یک نوع داده:
.2مقادیر
انواع اشیا داده ،مجموعه ای ازمقادیرممکن
رابرای آن اشیا تعیین می کنند.
مجموعه ای ازمقادیر که توسط نوع داده
اولیه تعریف می شوند ،مجموعه مرتب می
نامند.
مجموعه مرتب دارای کمترین و بیشترین مقدار
است.
24
عناصراصلی مشخصات یک نوع داده:
.3
عملیات
عملیات تعیین می کنندکه نوع اشیای داده چگونه
بایددستکاری شوند.
عملیات اولیه:
بخشی از زبان
عملیات تعریف شده توسط برنامه نویس:
25
به شکل زیربرنامه ها یا اعالن متد
عناصراصلی مشخصات یک نوع داده( :عملیات)
هرعملیات یک تابع ریاضی است.
یعنی به ازای هر آرگومان ورودی،نتیجه مشخصی دارد.
هرعملیات دارای یک دامنه و یک برد است.
دامنه:مجموعه ای ازمقادیر ورودی است که عملیات
برروی آن تعریف میشود.
برد:مجموعه ای از نتایج ممکن.
26
عناصراصلی مشخصات یک نوع داده( :عملیات)
الگوریتم:مشخص میکند که محاسبات چگونه برروی
آرگومانهای ورودی انجام شود تا نتایج مطلوب حاصل
شود.
عملکرد یک عملیات:نتایج تولیدشده برای هرمجموعه از
آرگومانها است.
الگوریتم عملکرد یک عملیات را مشخص میکند.
مثل:برای مشخص کردن عملکرد عملیات ضرب استفاده
از جدول ضرب به جای الگوریتم ضرب دو عدد.
27
امضای عملیات
درامضای یک عملیات ،تعداد،ترتیب و انواع داده ی آرگومانها و
ترتیب و نوع داده ی نتیجه را مشخص می کند.
Result type
Op name:arg type*…*arg type
عملیات جمع:
integer
+: integer * integer
جمع عملیات دو دویی است.
عملیات جذر:
real
جذرعملیات یکانی است.
28
Sqrt : real
گاهی تعیین مشخصات دقیق یک عملیات به صورت
تابع ریاضی دشوار است.
چهار عامل موجب میشود تا تعریف عملیات زبان برنامه سازی
دشوار شود:
.1عملیاتی که برای ورودی های خاصی تعریف نشده اند.
مثل:تقسیم بر صفر یا مجموعه ای از اعداد که در
عملیات محاسبات منجر به سر ریز یا پاریز می شود.
29
ادامه
.2
.3
30
آرگومانهای ضمنی
مثل:متغیرهای سراسری که باعث میشوند تعیین
دقیق
دامنه عملیات ممکن نباشد.
نتایج ضمنی (اثرات جانبی):
عملیات ممکن است عالوه بر وظیفه اصلی
خود،اعمال دیگری را انجام دهد.
اثرات جانبی تعیین مشخصات برد عملیات را دشوار
میکنند.
ادامه
.4
خوداصالحی(حساسیت به سابقه )
عملیات در عملکرد خود به سابقه حساسیت دارند.
عملیات ممکن است ساختار داخلی،اعم از داده های محلی
یا حتی کد خود را اصالح کند
نتایج حاصل از عملیات برای مجموعه ی خاصی از آرگومانها
نه تنها به آن آرگومانها ،بلکه به فراخوانی های قبلی
بستگی دارد.
مثل :در مولد عدد تصادفی اگر عدد دانه (پایه تولید عدد
تصادفی)تغییر نکند عدد تصادفی تولید نمی شود.
31
عناصراصلی مشخصات یک نوع داده:
.4زیر نوع ها
اگر نوعی به عنوان بخشی از نوع بزرگتر باشد،آن را زیر
نوع و نوع بزرگتر را ابر نوع می گویند.
مثل:
زیر نوع ها میتوانند عملیات مربوط به ابر نوع را به ارث
ببرند.
مثل :نوع charدر cعملیات نوع intرا به ارث میبرد.
32
short intزیرنوع و intابر نوع است.
عناصراصلی پیاده سازی یک نوع داده:
.1
نمایش حافظه
.2
شیوه ای که عملیات تعریف شده برای نوع داده ،اشیا
داده را دستکاری می کند.
33
.1نمایش حافظه
نمایش حافظه برای انواع داده اولیه تحت تاثیر
کامپیوتری است که برنامه را اجرا میکند.
نمایش حافظه برای مقادیر صحیح به صورت نمایش دو
دویی صحیح
اگر از نمایش های سخت افرازی استفاده شود
عملیات اصلی بر روی آن نوع توسط سخت افزار پیاده
سازی میشود.
اگر از نمایش های سخت افزاری استفاده نشود
پس باید به طور نرم افزاری شبیه سازی شوند که
کارایی عملیات کم میشود.
34
نمایش حافظه
نمایش حافظه صفات اشیای داده نیز می تواند هم به
صورت سخت افزاری و هم به صورت نرم افزاری شبیه
سازی شود.
زبان های ،cفرترن
نمایش حافظه سخت افزاری
وپاسکال
صفات داده توسط کامپایلرتعیین می شود.
35
زبان های لیسپ و
نمایش حافظه نرم افزاری
پرولوگ
صفات درتوصیفگر ذخیره می شوند.
شیوه ای که عملیات تعریف شده برای نوع داده،
اشیا داده را دستکاری میکند:
.1
به صورت عملیات سخت افزاری
.2
به صورت فراخوانی زیر برنامه رویه یا تابع
.3
به صورت دستوراتی در داخل برنامه نوشته شوند.
مثل تابع قدر مطلق
دستورات مربوط به تابع قدر مطلق در برنامه نوشته
می شود.
36
نمایش نحوی نوع داده
مستقل از مشخصات و پیاده سازی انواع داده
است.
مثل int x:
دراین نمایش نحوی مشخص نیست xچندتا
بایت دارد ،آدرس xچند و...
37
اعالن ها
اعالن:
دستوری ازبرنامه که نام ونوع اشیای داده وهمچنین
طول عمر آنها رامشخص می شود.
مثل ;float a,b
انواع اعالن
صریح
توسط برنامه نویس مشخص می شود.
ضمنی
اعالن پیش فرض
مثل:فرترن ازمتغیری مثل INDEXبدون اعالن صریح ستفاده
میکند ونوع آن صحیح تعیین می شود.
38
اعالن چه قابلیت هایی دارد
.1
اعالن میتواند مقدار شی داده ثابت راتعیین کند.
اعالن می تواند مقدار اولیه متغیرها رامشخص کند.
.3
گاهی جزییات پیاده سازی مثل انقیادبه محل حافظه
خاص یا نمایش حافظه ویژه نیزمشخص می شود.
.4
اعالن ها می تواننداطالعاتی راجع به عملیات رابرای
مترجم زبان فراهم کنند.درحین ترجمه هر عملیات نیازبه
امضای هرعمل است.
.2
39
اهداف اعالن
.1انتخاب نمایش حافظه
اطالعاتی راجع به نوع داده وصفات شی داده.
.2مدیریت حافظه
اطالعاتی راجع به طول عمراشیا داده
.3عملیات چندریختی
نماد +می تواندمبین عملیات جمع صحیح،اعشاری
،الحاق دو رشته،اجتماع دو مجموعه.
براساس نوع آرگومانهایش چندین عمل انجام میدهد.
.4
40
کنترل نوع
درادامه...
کنترل نوع
سوال
دنباله بیتی زیررا درنظر بگیرید:
این دنباله مبین چه اطالعاتی است؟
آیا می توان گفت آن دقیقا یک مقدار صحیح یا دنباله ای
ازکاراکتر ها یا یک دستور است؟
11100101…1001
آیا بااستفاده ازعملیات اولیه سخت افزار(عملیات ضمنی) برای
عملی مثل جمع می توان نوع آرگومان ها را کنترل کرد؟
41
کنترل نوع
هیچ راهی برای تشخیص وجود ندارد.
داده ها وقتی در سخت افزار نگهداری می شوند،
هیچ نوعی ندارند.
در زبان ماشین که به سخت افزار نزدیک است نمی
توانیم خطای نوع را تشخیص دهیم.
مثل عملیات جمع با آرگومان های نادرست
درسطح سخت افزاری کامپیوترهای معمولی قادربه
تشخیص خطای نوع نیستند.
42
کنترل نوع
تعریف:
هر عملیاتی که در برنامه انجام می شود،باید تعداد و
نوع آرگومان های آن درست باشد.
امتیاز اصلی استفاده از زبان سطح باال
زبان می تواندبرای تمام عملیات کنترل نوع انجام
دهد و برنامه در مقابل خطا محفوظ باشد.
کنترل نوع به دو روش پویا و ایستا انجام می شود.
43
کنترل نوع پویا
در زمان اجراانجام میشود.
بالفاصله قبل از اجرای عمل خاصی صورت می گیرد.
برای هر شی داده یک برچسب نوع قرار می
گیرد(.صفت نوع در توصیفگر ذخیره می شود).
مثل:یک شی داده صحیح میتواند هم شامل مقدارصحیح
وهم شامل برچسب نوع صحیح باشد.
44
کنترل نوع پویا
زبان های لیسپ وپرولوگ،کنترل نوع پویاراانجام میدهد.
دراین زبان ها نوع متغیرها اعالن نمی شود.
برای عمل ،A+Bانواع Aو Bقبل از هرعمل جمع
،درزمان اجرا باید کنترل شود.
چون Aو Bنوع ثابتی ندارند این متغیرها را بدون نوع
گویند.
45
امتیاز اصلی کنترل نوع پویا:
46
قابلیت انعطاف درطراحی برنامه و آزادی از محدودیت ها
چون متغیرها بدون اعالنند.
معایب کنترل نوع پویا
.1اشکال زدایی برنامه و حذف تمام خطاهای نوع آرگومان
مشکل است.
درحین تست برنامه،تمام مسیرهای اجرایی ممکن را
نمیتوان تست کرد.
.2
حافظه بیشتری مصرف میکند و کاهش سرعت اجرا
.3باید به صورت نرم افرازی شبیه سازی شود.
47
کنترل نوع ایستا
در زمان ترجمه برنامه انجام می شود.
در زمان ترجمه انقیاد همه متغیرهابه یک نوع مشخص
می شود.
اطالعات در اعالن ها به صورت صریح یا ضمنی مشخص
می شود.
این اطالعات عبارتند از:
.1برای هر عمل ،تعداد،ترتیب و نوع آرگومان و نتایج آن
.2
.3
48
نوع هر متغیر
نوع هر داده ثابت
کنترل نوع ایستا
در اغلب زبان ها به دلیل وجود بعضی از ساختارهای
زبان دربعضی از موارد کنترل نوع ایستا انجام نمی شود.
.1
.2
49
پس برای کنترل نوع آرگومان ها به دو روش زیر عمل
می کنند:
کنترل نوع پویا
عملیات کنترل نشوند
اگرهزینه کنترل نوع پویا زیاد باشد قابل قبول است.
امتیازات کنترل نوع ایستا
چون تمام مسیرهای اجرایی کنترل می شود الزم
نیست تستی برای خطاهای نوع صورت می گیرذ.
50
استفاده بهینه ازحافظه و افزایش سرعت اجرا
نوع قوی
زبانی از نظر نوع قوی است که بتوان تمام خطاهای نوع
رابه طور ایستا(در زمان ترجمه) برطرف کرد.
زبانی که ازنظر نوع قوی است امنیت برنامه های ما راباال
می برد.
مثل تابع f:s r
اگر fمقداری خارج از rتولید نکندتابع fامنیت نوع دارد
و نوع نتیجه هم درست است.
تعداد کمی از زبانهای امروزی ازنظرنوع قوی هستند.
اگر تبدیل یک نوع به نوع دیگر رامحدود کنیم به تعیین نوع
قوی نزدیک می شویم.
51
استنتاج نوع
ازسایر،می توان اطالعات نوعی را که ازقلم افتاده اند
.انواع تعریف شده استنتاج کرد
اگر تفسیر مبهم نباشد نیازی به اعالنML مثال در زبان
.نوع نیست
Fun
Fun
Fun
Fun
area(length:int.width:int):Int=length*width
area(length.width):Int=length*width
area(length:int.width):=length*width
area(length.width:int):Int=length*width
52
تبدیل نوع
اگر درحین کنترل نوع ،نوع مورد انتظار با نوع واقعی
آرگومانی یکسان نباشد آنگاه:
.1
خطا رخ می دهد.
تبدیل نوع صورت می گیرد.
تبدیل نوع ،نوعی شی داده را گرفته وشی داده متناظر
با آن را تولید می کند.
Conversion:type1
type2
.2
53
تبدیل نوع
تبدیل نوع به دوصورت انجام می شود:
.1استفاده ازمجموعه ای از توابع ازپیش ساخته که توسط
برنامه نویس فراخوانی می شود.
مثال در زبان c.با استفاده از تابع ازپیش ساخته
roundمی توان شی داده ی حقیقی رابه شی داده
صحیح تبدیل کرد(.گرد کردن)
.2
تبدیل ضمنی ،به طور خودکار ،فراخوانی شود.
مثال:در زبان cنوع صحیح به طور ضمنی به نوع حقیقی
تبدیل میشود.
54
تبدیل نوع
تبدیالت ضمنی
اطالعات ازبین نمیرود.
گسترش یا ارتقا
(تبدیل مقادیر صحیح به حقیقی)
اطالعات ازبین می رود.
محدود کننده
(تبدیل مقادیر صحیح به حقیقی)
55
در زبانهایی که کنترل نوع پویا را پشتیبانی می کنند در
صورتی که عدم تطابق نوع صورت گیرد تبدیل ضمنی صورت
میگیرد وتبدیالت محدود کننده در صورتی امکان پذیر است که
اشیای داده مقدار مناسبی داشته باشند .
1/5قابل تبدیل نیست.
در کنترل نوع ایستا،کد اضافی در برنامه ی ترجمه شده قرار
میگیرد تا عملیات تبدیل را در نقطه ی مناسبی از اجرا انجام
دهد.
56
تبدیل نوع ممکن است چندین بار بیشتر از خودعملیات انجام
شود.
مثال در زبان کوبول و PL/Iاعداد به صورت رشته کاراکتری
ذخیره میشوند.
برای عمل جمع :
نمایش حافظه کاراکتری
نمایش حافظه دودویی
57
نمایش حافظه دودویی
نمایش حافظه کاراکتری
دو فلسفه متضاد در مورد تبدیل نوع ضمنی در زبان وجود دارد.
در پاسکال و ادا هیچ تبدیل نوع ضمنی وجود ندارد
در Cتبدیل ضمنی صورت میگیرد.
عدم تطابق نوع یک خطای متداول برنامه نویسی است.
58
انتساب و مقداردهی اولیه
59
انتساب
عملیات اصلی برای تغییر انقیاد یک مقدار به یک شی
داده است این تغییر اثرجنبی نام دارد .
Cو لیسپ ،عمل انتساب ،مقداری را برمیگرداند.
:= int 1* int 2
int 3
پاسکال ،عمل انتساب ،مقداری را برنمیگرداند.
void
=: int 1 * int 2
Cout<< a=7+5
60
انتساب
X:=Xرا درنظر بگیرید:
Xسمت راست به مقدار موجود در شی داده ای به
مقدار راست
نام Xاشاره می کند
Xسمت چپ به محلی از حافظه برای ذخیره مقدار
مقدار چپ
اشاره می کند
61
تساوی و هم ارزی
2+3
.1
.2
A
مقدار Aبرابر5
مقدار Aبرابر عبارت 2+3
اگرنوع داده های زبان ایستا باشد نوع Aمشخص می
کند از کدام معنا استفاده کنیم.
در زبان پرولوگ عملگر isمقدار هم ارز رانسبت می دهد.
ولی عملگر= هم نماد انتساب و هم نماد مقایسه منطقی
A is 2+3 ,A =5.
A=2+3,A=5.
62
مقدار دهی اولیه
63
متغیر فاقد مقدار اولیه
یک شی داده است که ایجاد می شود ولی هنوز
مقداری به آن داده نشده است.
انواع داده اسکالر
64
تعریف
اشیایی وجود دارند که برای اشیای داده خود فقط یک
صفت دارند.
مثل:یک شی نوع صحیح دارای یک مقدار صحیح
( )...،1،5است و هیچ اطالعات دیگری نمی تواند ازآن
شی بدست آید.
65
اشیای اسکالر از معماری سخت افزار پیروی می کنند.
.1انواع داده عددی
متداولترین انواع داده عددی،اعدادحقیقی و صحیح هستند.
خواص نمایش داده عددی ومحاسباتی بر روی کامپیوتر ها با
عملیات عددی ومحاسباتی که در ریاضیات معمولی بحث
می شود متفاوت است.
66
1-1انواع صحیح
مشخصات:
مهمترین صفت برای یک شی داده از نوع صحیح ،نوع
است.
مقادیر :برای انواع صحیح زیرمجموعه ی مرتبی از
اعداد صحیح .
عملیات شامل:
عملیات محاسباتی
عملیات دودویی وعملیات یکانی
intege
BinOp: integer * integer
integer
67
Unaryop : integer
عملیات رابطه ای
RelOp: integer *integer
boolean
انتساب
assignment: integer*integer
void
عملیات بیتی
BinOp: integer * integer
integer
68
پیاده سازی
نوع داده صحیح بعد از تعریف توسط زبان توسط نمایش
حافظه سخت افزاری ومجموعه ای از عملیات بر روی
مقادیر صحیح پیاده سازی می شود.
سه نمایش حافظه برای مقادیر صحیح:
69
پیاده سازی
نمایش اولی
در مواردی امکان پذیر است که زبان ،اعالنها و
کنترل نوع استا را برای مقادیر صحیح فراهم می
کند(.مثل فرترن و)C
نمایش دومی
عیب:حافظه برای یک شیء داده صحیح رادوبرابرمی کند
امتیاز:عملیات روی آن بصورت سخت افزاری قابل پیاده
سازی می باشد(.مثل لیسپ)
نمایش سومی
در حافظه صرف جویی می شود ولی برای عملیات سخت
افزاری باید مقدار را از توصیفگر تفکیک کردو پس از انجام
عملیات آن را درج کرد.
70
زیربازه ها
مشخصات
زیربازه ای از نوع داده صحیح،زیر نوعی ازنوع داده
صحیح است
(پاسکال)A:1…10
(ادا)A:integer range 1….10
نوع زیر بازه عملیات نوع صحیح رادارا می باشد.
پیاده سازی
نیاز به حافظه کمتر:مقدار زیر بازه نسبت به مقدار
صحیح معمولی به بیتهای کمتری نیاز دارد.
71
پیاده سازی
نیاز به حافظه کمتر:مقدار زیر بازه نسبت به مقدار صحیح معمولی به
بیتهای کمتری نیاز دارد.
مثال:مقدار صحیح دربازه (،)1...10چهار بیت از حافظه در حالی که
مقدار صحیح معمولی حافظه 16یا32یا بیشتر نیاز داشته باشند.
کنترل نوع بهتر :اعالن یک متغییر از نوع زیر بازه موجب می شود تا
کنترل دقیقتری صورت گیرد.مثال:اگر متغییر
month:1....10
تعریف شود.دستور زیر غلط می باشدودر زمان کامپال تشخیص داده می
شود.
Month := 0
72
اماانتساب زیر کنترل زمان اجرا الزم دارد تا مشخص کند مقدار جدید در
بازه قابل قبول
قراردارد
اعداد حقیقی ممیز شناور
مشخصات
معموال ً با صفت نوع داده مثل realدر فرترن یا floatدر C
مشخص می شود.
دقت اعداد ممیز شناور توسط برنامه نویس مشخص
می شود.
عملیات محاسباتی،رابطه ای وانتساب در اعداد
حقیقی امکان پذیر است.
بدلیل اصول مربوط به گرد کردن کمتر اتفاق می افتد که
دو مقدار حقیقی با هم مساوی باشند.
73
نمایشهای حافظه برای این نوع به سخت افزار بستگی
دارد.
اعدادممیز شناور به صورت دقت معمولی یا دقت مضاعف
شامل سه فیلد عالمت،توان ومانتیس می باشند.
74
اعداد حقیقی ممیز ثابت
برای برخی از داده های حقیقی اگر از ممیز شناور استفاده
کنیم خطای گرد کردن اتفاق می افتد،می توان برای
اینگونه داده ها از ممیزثابت استفاده کرد.
تعریف عدد ممیزثابت در کوبول
X picture 999V99
پیاده سازی
ممکن است توسط سخت افزار پشتیبانی شود یا به
صورت نرم افزار شبیه سازی گردد.
نقطه اعشار به عنوان صفت شی داده است(.فاکتور
مقیاس)
داده های ممیز ثابت در X :PL/Iده رقمی با دو رقم
اعشار
)X FIXED DECIMAL (10,2
75
نقطه اعشار به عنوان صفت شی داده است(.فاکتور
مقیاس)
داده های ممیز ثابت در X :PL/Iده رقمی با دو رقم اعشار
)X FIXED DECIMAL (10,2
76
اعداد موهومی
متشکل از یک جفت از اعداد است که یکی از آنها
بخش حقیقی ودیگری بخش موهومی را نشان می دهد.
عملیات بر روی آنها بصورت نرم افزاری می باشد.
77
اعداد گویا
خارج قسم دو عدد صحیح به طول نامحدوداست که معموال ً
بصورت پیوندی نمایش داده می شود.
78
نوع شمارشی
لیست مرتبی از مقادیر مجزا است.به نام ثوابت
شمارشی هم خوانده می شوند.
برنامه نویس اسامی لیترال ها و همچنین ترتیب
آنها را با استفاده از اعالنی مشخص می
کند.تعریف متغییری از این نوع در:C
}enum StudentClass {Fresh,Shop,Jonior,Senior
درپاسکال ابتدا تعریف نوع سپس تعریف متغییر
}type Class= {Fresh,Shop,Jonior,Senior
StudentClass: Class
79
عمالت بر روی نوع داده شمارشی:عملیات رابطه ای،
انتساب وعملیات (successorبعدی)و(predecssorقبلی)
پیاده سازی:نمایش حافظه برای شی داده ای از نوع
شمارشی ساده است.هر مقدار با اعداد صحیح نمایش داده
می شود.
نوع بولی
متشکل از اشیای داده ای است که یکی ازمقادیرtrue
و falseرا می پذیرند.
عملیات بر روی انواع بولی :انتساب و nor, nand
and,or,xor,
80
پیاده سازی
نمایش حافظه برای شی داده بولی یک بیت از حافظه
است.
مقادیر trueو falseبه دو روش در این واحد حافظه نمایش
داده می شوند:
◦ بیت خاصی از واحد حافظه برای این مقادیر استفاده
می شودبقیه بیتها بی استفاده.
مقدار صفر در کل واحد حافظه نشان دهنده false
◦
و مقدار غیرصفر نشان دهنده trueاست.
بدلیل مصرف زیاد حافظه معموال ً از مجموعه ای از بیتها در زبان
استفاده می شود.
Cنوع داده بولین ندارد از نوع صحیح برای این منظور استفاده
می کند
false
.مقدار صفر
true
81مقدار غیر صفر
کاراکتر ها
داده های ورودی وخروجی به صورت کاراکتر ها
هستند.
درنوع کاراکتری مقدار اشیای داده ،کاراکتر است.
مجموعه ای از مقادیر کاراکتری،بصورت نوع
شمارشی در نظر گرفته می شود.مثل کاراکترهای
اسکی
عملیات :رابطه ای،انتساب،تستهایی برای تشخیص
پیاده سازی :مقادیر داده های کاراکتری همیشه توسط
سخت افزار و سیستم عامل پشتیبانی می شوند.
82
انواع داده مرکب
ساختمان داده پچیده ای است که توسط کامپایلر سازماندهی
می شود
-1رشته های کاراکتری
شی داده ای است که از دنباله ای از کاراکترها تشکیل شده است.
مشخصات
با رشته های کاراکتری حداقل به سه روش رفتار می شود:
طول ثابت :کاراکترهای بیشتر از طول رشته نادیده گرفته می شوند،اگر
کمتر باشد بقیه رشته با فضای خالی پر می شود(.تخصیص حافظه در
زمان ترجمه )
;lastName: packed array [1…20] of char
طول متغیر با حد باال:حداکثر طول در برنامه اعالن می شود(.تخصیص
حافظه در زمان ترجمه )
طول نامحدود:ممکن است به طور خودکار در حین اجرای برنامه تغییر
کند(.تخصیص حافظه پویا)
83
پیاده سازی
84
عملیات
الحاق
عملیات رابطه ای در رشته ها
انتخاب زیر رشته با استفاده از اندیس:با دانستن ابتدا و انتهای زیر رشته آن را
از رشته انتخاب می کنند مثال:در
فرترن
فرمت بندی ورودی –
)NEXT=STR(6-10
خروجی :فرمت بندی خروجی یا شکستن داده های
ورودی فرمت بندی شده به عناصر کوچکتر.
انتخاب زیر رشته با تطابق
الگو :یک آرگمان این عملیات الگویی است که باید
جستجو شود،آرگمان دیگر رشته ای است که الگو باید در آن جستجو گردد.
رشته های پویا :درپرل مقادیر رشته ای استا یا پویا هستند ( ُ $ABCُ.ایستا)و ًَ $ABC
( 8پویا)
5
اشاره گرها و اشیای داده برنامه نویس
برای اینکه زبان نوع اشاره گر را داشته باشد باید ویژگیهای
زیر را دارا باشد:
نوع داده اولیه اشاره گر
عمل ایجاد کردن
عملیات دستیابی به محتویات
مشخصات
نوع داده اشاره گر دسته از اشیای داده را تعریف
می کند که مقادیر آنها آدرسهای اشیای دیگری اند
اشاره گر ها ممکن است فقط به یک نوع
شی داده مراجعه کنند( .کنترل نوع ایستا)
اشاره گرها ممکن است به هر نوع شی داده
مراجعه کنند(.کنترل نوع پویا)
86
پیاده سازی
شی داده اشاره گر به صورت محلی از حافظه نمایش داده می
شود ،شامل ادرس محل دیگری از حافظه است.
دو نمایش حافظه برای مقادیر اشاره گر استفاده می شود:
ادرس مطلق :ادرس واقعی
ادرس نسبی :افستی از ادرس بلوک پایه
87
فایلها و ورودی-خروجی
ساختمان داده ای با دو ویژگی :
بر روی حافظه ثانویه مثل دیسک یا نوار تشکیل می
شود و ممکن است بسیار بزرگتر از سایر ساختمان داده
ها باشد.
طول عمر آن می تواند بسیار زیاد باشد.
متداول ترین فایلها:
فایلهای ترتیبی
فایلهای متنی
ورودی – خروجی محاوره ای
فایلهای دستیابی مستقیم
فایلهای ترتیبی شاخص دار
88
فایلهای ترتیبی
ساختمان داده ای مرکب از دنباله خطی از عناصر همنوع
است.
طول آن متغیر است و حد باالیی ندارد.
89
ورودی–خروجی داده ها معموال ً به صورت کاراکتری اند.
فایل می تواند در حالت خواندن یا در حالت نوشتن
دستیابی شود.
مشخصات
عملیات اصلی بر روی فایلهای ترتیبی :
بازکردن
خواندن
نوشتن
تست انتهای فایل
بستن
پیاده سازی
سیستم عامل مسئول پیاده سازی فایلها است.
90
91
فایلهای متنی
فایلی از کاراکترها است .
شکل اولیه فایل مربوط به ورودی – خروجی در
اغلب زبانها است.
فایلهای متنی را مستقیماً از طریق صفحه کلید می
توان ایجاد و چاپ کرد.
این فایلها شکلی از انواع فایلهای ترتیبی هستند
که یک سری عملیات ویژه را پشتیبانی می کنند
92
ورودی – خروجی محاوره ای
اصالح چندین جنبه از دیدگاه معمولی فایلهای ترتیبی که در
باال مطرح شدند :
فایل همزمان باید در حالت خواندن و نوشتن باشد.
بافر کردن داده در ورودی و خروجی محدود می
شود.
اشاره گر موقعیت فایل و تست انتهای فایل ارزش
چندانی ندارند.
93
فایلهای دستیابی مستقیم
در فایل ترتیبی عناصر به ترتیبی که در فایل قرار دارند
بازیابی می شوند .
دستیابی تصادفی به عناصر غیر ممکن است.
می توان به هر عنصر به طور تصادفی دست یافت.
به صورت مجموعه ای از عناصر نامرتب سازماندهی
می شود.
94
فایل ترتیبی شاخص دار
این سازمان فایل مصالحه ای را بین سازمانهای
ترتیبی محض و دستیابی مستقیم محض به وجود می
آورد.
این نوع فایل امکان دستیابی ترتیبی به عناصر بعدی
را فراهم می کند که عنصر فعلی بطور تصادفی انتخاب
شده است.
95
96
97
98