کنترل نوع - ghobaei.ir
Download
Report
Transcript کنترل نوع - ghobaei.ir
طراحی و پیاده سازی زبان های
برنامه نویسی
مصطفی قبائی آرانی
Home
Page:www.ghobaee.ir
E-mail:[email protected]
فهرست مطالب
فصل اول :اصول طراحی زبان ها
فصل دوم :اثرات معماری ماشین بر زبان ها
فصل سوم :اصول ترجمه زبان
فصل چهارم :مدل سازی خواص زبان ها
فصل پنجم :انواع داده اولیه
فصل ششم :انواع داده ساختاریافته
فصل هفتم :وراثت
فصل هشتم :کنترل ترتیب اجرا
2
فصل نهم :کنترل ترتیب زیربرنامه ها
طراحی و پیاده سازی زبان ها
فصل اول:
اصول طراحی زبان ها
فهرست مطالب فصل اول
دالیل(فواید) مطالعه انواع زبان های برنامه نویسی
تاریخچه (نسل های) مختلف زبان برنامه نویسی
طبقه بندی زبان ها از نظر کاربرد
اثر محیط برطراحی وپیاده سازی زبان برنامه نویسی
ویژگی های یک زبان برنامه نویسی خوب
مدل های محاسباتی زبان های برنامه نویسی
استاندارد سازی زبان های برنامه نویسی
طراحی و پیاده سازی زبان ها
دالیل(فواید) مطالعه زبان های برنامه نویسی
افزایش توانای ی های خود در نوشتن الگوریتم های کارا
استفاده بهینه از زبان های برنامه نویسی موجود
اشنای ی با اصطالحات مفید ساختارهای برنامه نویسی(افزایش دامنه
لغات برنامه نویسی)
انتخاب بهترین زبان برنامه نویسی
یادگیری یک زبان جدید اسانتر می شود
طراحی یک زبان جدید اسانتر می شود
طراحی و پیاده سازی زبان ها
نسل های زبان برنامه نویسی
نسل اول( :(Machine Language
در این نسل ،برنامه به صورت صفر و یک (زبان ماشین) می باشد -نیازی به مترجم ندارد و سریع اجرا می شود -نوشتن
برنامه و اموزش مشکل -اشکال زدای ی مشکل
نسل دوم (: )Assembly Language
در این نسل ،برنامه نویسی کمی راحت تر شد و به جای بعضی صفر و یک های معروف نماد(سمبل) قرار داده شد
ولی در عوض یک برنامه به زبان اسمبلی باید توسط اسمبلر ترجمه شود.
نسل سوم (سطح باالی ساخت یافته) :
در این نسل ،برنامه نویس باید نحوه اجرا برنامه را به صورت الگوریتم کد نویسی کند )how to do?(.مثل زبان های
C# , C++ , C , Pascal
نسل چهارم (خیلی سطح باال یا ویژوال) :
در این نسل ،کد نویسی انچنانی الزم نیست و فقط الزم است کاربر خواسته هایش را بگوید(?)what to do
نک ته :زبان های نسل اول و دوم سطح پایین و زبان های نسل سوم و چهارم سطح باال هستند.
طراحی و پیاده سازی زبان ها
طبقه بندی زبان ها از نظر کاربرد
زبان های علمی فنی محاسباتی (مبتنی بر اعداد) :
قدرت انجام محاسبات حجیم ،دارای توابع ک تابخانه ای ریاضی قوی .مثل Fortran
Algol - Matlab
زبان های تجاری :
برای کاربرد های تجاری ،حسابداری و ..استفاده می شود .مثل Cobol
زبان های سیستمی:
کاربرد های سیستمی دارند مانند کامپایلر و سیستم عامل Assembly -Ada - .
C
زبان های هوش مصنوعی:
پردازش تصویر و متن توسط این زبان ها صورت می گیرد و از استنتاج به جای پردازش
استفاده می شود ML – Lisp – Prolog - IPL .
طراحی و پیاده سازی زبان ها
اثر محیط بر طراحی و پیاده سازی زبان
بیان مفهوم محیط
تفاوت محیط میزبان و محیط عملیاتی(مقصد)
انواع محیط
محیط دسته ای()Batch
محیط محاوره ای()Interactive
محیط سیستم تعبیه شده()Embedded System
طراحی و پیاده سازی زبان ها
اثر محیط بر طراحی و پیاده سازی زبان
محیط دسته ای (: )Batch
در محیط های دسته ای ،کاربر با برنامه نوشته شده به یک زبان برنامه نویسی ،هیچ
گونه تعامل و محاوره ای ندارد و ترتیب اجرای برنامه ،در بدنه خود برنامه گنجانده
شده است.
در این محیط ،کاربر در یک فاز ،ورودی های مورد نیاز برنامه را وارد کرده و سپس
منتظر می ماند تا در فاز بعدی ،پردازش صورت گیرد و در نهایت در فاز خروجی،
نتایج بدست می اید.
در این محیط ،ارتباط کاربر با برنامه به صورت offlineاست و اگر خطای ی در حین
اجرای برنامه رخ دهد کاربر نمی تواند در همان لحظه ،ان را اصالح نماید و باید
منتظر اتمام فازها بماند.
9
طراحی و پیاده سازی زبان ها
اثر محیط بر طراحی و پیاده سازی زبان
محیط محاوره ای (: )Interactive
در محیط های محاوره ای ،کاربر با برنامه به طور مستقیم محاوره و تعامل دارد و خروجی برنامه
به طور onlineدر نمایشگر نشان داده می شود مانند محیط مربوط به تایپ متن با نرم
افزار word
با توجه به ارتباط onlineکاربر با محیط ،اگر در حین اجرای برنامه خطای ی رخ دهد ،کاربر
در همان لحظه قادر به اصالح خطا خواهد بود.
10
طراحی و پیاده سازی زبان ها
اثر محیط بر طراحی و پیاده سازی زبان
محیط سیستم های تعبیه شده ()Embedded System
به سیستم کامپیوتری که جهت کنترل بخشی از یک سیستم بزرگ تر استفاده می شود سیستم
کامپیوتری تعبیه شده یا توکار یا جاسازی شده گ فته می شود مانند سیستم کامپیوتری
مربوط به ماشین لباسشوی ی ،مایکروویو ،هواپیما و ...
بر خالف محیط های محاوره ای و دسته ای پردازش خطا در این محیط ها از اهمیت زیادی
برخوردار است و در صورت عدم اصالح خطا در یک بازه زمانی مشخص ،زیان های جدی
به بار خواهد امد .بنابراین ،قابلیت اطمینان در این محیط ها مهم است
معموال سیستم های تعبیه شده به صورت بالدرنگ( )Real-timeکار می کنند و بدون
سیستم عامل هستند و برنامه های نوشته شده در یک حافظه ROMقرار می گیرند
11
طراحی و پیاده سازی زبان ها
ویژگی های یک زبان خوب
وضوح سادگی و یکپارچگی
قابلیت تعامد()Orthogonallity
طبیعی بودن برای کاربردها
پشتیبانی از انتزاع()Abstraction
سهولت در بازرسی برنامه
محیط برنامه نویسی قدرتمند
قابلیت حمل باال ()Portability
هزینه استفاده
طراحی و پیاده سازی زبان ها
مدل های محاسباتی زبان
مدل محاسباتی:چگونگی توصیف یک برنامه (نحوه نوشتن یک برنامه) در یک
زبان برنامه نویسی
انواع مدل های محاسباتی:
دستوری
تابعی
قانون گرا
شی گرا
طراحی و پیاده سازی زبان ها
مدل های محاسباتی زبان
مدل دستوری:
برنامه= مجموعه ای از دستورات
زبانهای این مدلC,C++,Ada,Pascal,Cobol,Fortran,Ada,…:
طراحی و پیاده سازی زبان ها
مدل های محاسباتی زبان
مدل تابعی:
برنامه= مجموعه ای از توابع تودرتو
زبانهای این مدلML,Lisp,Scheme,…:
طراحی و پیاده سازی زبان ها
مدل های محاسباتی زبان
مدل قانون گرا:
برنامه= مجموعه ای از قوانین
زبانهای این مدل( Prolog:زبان برنامه نویسی منطقی -کاربرد در سیستم های خبره
و هوش مصنوعی)
مدل های محاسباتی زبان
مدل شی گرا:
برنامه= مجموعه ای از اشیا (کالس ها)
برنامه
کالس 1
ویژگی
رفتار
کالس 2
ویژگی
رفتار
.
.
.
زبانهای این مدلC++,C#,Java,Smaltalk:
طراحی و پیاده سازی زبان ها
استاندارد سازی زبان ها
زمان شناسی :
زمان استاندارد سازی مهم است از نظر زمانی ،هر چه زودتر یک زبان برنامه نویسی،
استاندارد سازی شود بهتر است
پیروی :
هنگامی که یک زبان برنامه نویسی استاندارد شد ،باید از ان استاندارد استفاده کرد و تمام
برنامه ها باید بر طبق ان استاندارد نوشته شوند و کامپایلر نیز برنامه های نوشته شده بر
طبق استاندارد را کامپایل حواهد کرد(کامپایلر پیرو)
کهنگی و منسوخ شدن :
یعنی در استاندارد های جدید ،برخی ویژگی های موجود در استاندارد های قبلی که
منسوخ شده اند ،بروزرسانی خواهند شد
طراحی و پیاده سازی زبان ها
فصل دوم:
اثرات معماری ماشین بر زبان
ها
فهرست مطالب فصل دوم
کامپیوتر و اجزای ان
سازمان کامپیوتر معمولی
روش های اجرای برنامه
ترجمه
تفسیری
تفاوت دو روش
زبان های کامپایلری و مفسری
انواع مترجم ها
انقیاد و زمان های انقیاد
طراحی و پیاده سازی زبان ها
کامپیوتر و اجزای آن
کامپیوتر های سخت افزاری :
•
کامپیوتر های میان افزار :
•
21
کامپیوتر سخت افزاری کامپیوتری است که کامال از اجرای سخت افزاری و مدارات
الک ترونیکی شامل حافظه ثبات ها و ALUو . . .ساخته شده است در این نوع کامپیوتر
ها دقیقا سخت افزار مربوط به هر دستور زبان ماشین وجود دارد .
یک کامپیوتر میان افزار نامیده می شود در صورتیکه هر دستور زبان ماشین دنباله ای از ریز
عملیات می باشد که در حافظه قابل برنامه ریزی ذخیره شده است .
سیستم هاي عامل پیشرفته
اجزای کامپیوتر
داده :
یک کامپیوتر باید مجموعه ای از داده های اولیه (مثل )int real , charو داده های
ساخت یافته (مثل رکورد ،ارایه و ) . . .برای انجام عملیات فراهم کند .
•
اعمال اولیه :
یک کامپیوتر باید مجموعه ای از عملیات اولیه برای پردازش روی داده ها را داشته باشد .مثل
دستورات CPUیا زبان ماشین
•
کنترل ترتیب محاسبات:
•
22
یک کامپیوتر باید مکانیزمی برای کنترل ترتیب اجرای عملیات داشته باشد .
سیستم هاي عامل پیشرفته
اجزای کامپیوتر
دستیابی به داده :
مدیریت حافظه :
یک کامپیوتر باید مکانیزم های ی جهت تخصیص حافظه برای برنامه و داده و همچنین ازاد
سازی حافظه داشته باشد .
محیط عملیاتی :
23
یک کامپیوتر باید مکانیزم های ی برای کنترل داده های ی داشته باشد که با اجرای عملیات
تولید می شوند ( .کنترل انتقال داده بین برنامه و زیر برنامه ها)
یک کامپیوتر باید مکانیزم های ی برای مبادله اطالعات با دستگاه های جانبی فراهم سازد .
سیستم هاي عامل پیشرفته
سازمان کامپیوتر
واحد پردازش مرکزی ( )cpuاز بخش های مهم یک کامپیوتر می باشد .این واحد از
ثبات های سریع و عناصر پردازش فعال تشکیل شده است .ثبات های ی که وجود
دارند ثبات داده و ثبات ادرس می باشند .
ثبات های ادرس :
برای ادرس دهی کردن داده ها و دستورات روی حافظه استفاده می شوند .
ثبات های داده :
برای ادرس دهی کردن داده ها و دستورات روی حافظه استفاده می شوند .
24
سیستم هاي عامل پیشرفته
سازمان کامپیوتر
25
هر دستور العمل روی حافظه اصلی مشخص کننده یک هدف می باشد .که این عمل توسط مفسر cpu
ترجمه (کد گشای ی عملیات) و دستورات الزم به بخش های مختلف داده می شود.تا اینکه عمل اولیه بر روی
داده انجام شود .
عناصر پردازش فعال یک cpuاز اعمال اولیه ای که برای ان تعیین شده تشکیل شده است .این اعمال
ممکن است در پردازش گر های مختلف باشند .
سیستم هاي عامل پیشرفته
روش های اجرای برنامه
26
روش ترجمه ،کامپایل کردن ()Translation
روش تفسیری ،شبیه سازی نرم افزاری ()Interpreter
سیستم هاي عامل پیشرفته
روش های اجرای برنامه
روش ترجمه ،کامپایل کردن (: )Translation
•
27
در این روش برنامه به زبان سطح باال طی فرایند های ی تبدیل به زبان ماشین می شود
که قابل اجر ا روی سخت افزار است .به طور کلی مفسر (نرم افزار مترجم) به هر
پردازنده زبانی گ فته می شود که برنامه ای به زبان منبع که می تواند سطح باال یا
پایین باشد را گرفته و ان را به زبان مقصد تبدیل می کند .
سیستم هاي عامل پیشرفته
روش های اجرای برنامه
روش ترجمه ،کامپایل کردن (: )Translation
در روش ترجمه ابزارهای ی مورد نیاز است که هر کدام از این ابزار ها خود یک نوع مترجم
می باشند .
نک ته :
اگر برنامه به زبان مبدا با ساختار زبان مبدا تطابق نداشته باشد پیغام خطا صادر خواهد
شد .
28
سیستم هاي عامل پیشرفته
انواع مترجم ها (مفسر ها)
29
اسمبلر ()Assembler
کامپایلر ()Compiler
بار کننده ()Loader
پیوند دهنده ()Linker
پیش پردازنده یا پردازنده ماکرو ()Preproccesor
سیستم هاي عامل پیشرفته
انواع مترجم ها (مفسر ها)
30
اسمبلر (: )Assembler
مفسری می باشد که زبان منبع ان زبان اسمبلی و زبان مقصد ان زبان
ماشین برای برنامه واقعی می باشد .
کامپایلر (: )Compiler
مفسری می باشد که زبان منبع ان یک زبان سطح باال و زبان مقصد ان
نزدیک به زبان ماشین (مثل اسمبلی ) می باشد .
سیستم هاي عامل پیشرفته
انواع مترجم ها (مفسر ها)
بار کننده (: )Loader
مفسری می باشد که زبان منبع ان زبان ماشین به شکل جابجا پذیر (ادرس نسبی) و
زبان مقصد ان کد ماشین واقعی است .بار کننده ،ماژولهای مختلف اجرای ی را به
هم پیوند داده و ادرس های انها را به صورت مناسب جابجا می کند .
پیوند دهنده (: )Linker
این مفسر بخش های مختلف برنامه را دریافت نموده ،انها را سر هم بندی کرده و
برنامه خروجی تقریبا شبیه برنامه ورودی به شکل کامل تر تولید می شود .
31
سیستم هاي عامل پیشرفته
انواع مترجم ها (مفسر ها)
پیش پردازنده یا پردازنده ماکرو (: )Preproccesor
مفسری می باشد که زبان منبع ان شکل توسعه یافته ای از یک زبان
سطح باال مانند C++می باشد و زبان مقصد ان شکل استانداردی
از همان زبان می باشد (همان برنامه . )C
مثال در زبان Cدستوراتی که با عالمت #شروع می شوند مثل
تعریف ماکرو ها یا فایل های includابتدا بسط داده شده و به
دستوراتی از زبان Cتبدیل می شوند .
32
سیستم هاي عامل پیشرفته
ترتیب اجرای مفسر ها برای ترجمه یک
برنامه
33
سیستم هاي عامل پیشرفته
روش های اجرای برنامه
34
روش تفسیری ،شبیه سازی نرم افزاری (: )Interpreter
در این روش کد برنامه منبع مستقیما به شبیه ساز نرم افزاری یا مفسر داده می شود
و مفسر دستورات زبان سطح باال را تفسیر و بالفاصله اجرا می کند در این روش به
جای اینکه زبان سطح باال به زبان ماشین ترجمه شود به کمک شبیه سازی ،ان
برنامه روی یک کامپیوتر میزبان ،اجرا خواهد شد.
سیستم هاي عامل پیشرفته
مقایسه روش ترجمه و تفسیری
در روش ترجمه برنامه به طور کامل به زبان ماشین تبدیل
شده و سپس اجرا می شود .در حالی که در روش تفسیری
تک تک دستورات زبان سطح باال ابتدا تفسیر و مجموعه
دستورات الزم برای شبیه سازی آن دستور اجرا می شود .
35
سرعت اجرا در روش ترجمه بیشتر از مفسری است .زیرا
در روش ترجمه فاز ترجمه و اجرا جدای از یکدیگر هستند ؛
ولی در شبیه سازی این دو فاز یکسان هستند .
مترجم دستورات برنامه را به ترتیب فیزیکی ورودی پردازش
می کند ولی شبیه ساز جریان منطقی برنامه را دنبال می کند
.
سیستم هاي عامل پیشرفته
مقایسه روش ترجمه و تفسیری
36
مترجم هر دستور را فقط یکبار پردازش یا ترجمه می کند ولی شبیه ساز
ممکن است برخی از دستورات را چندبار پردازش کرده مانند حلقه forیا
حتی پردازش نکند مثل یک بلوک شرطی که همیشه غلط است .
در روش کامپایلری برای nبار اجرا یک ترجمه الزم است ولی در روش
تفسیری برای nبار اجرا nترجمه الزم است (.حلقه )for
سیستم هاي عامل پیشرفته
مقایسه روش ترجمه و تفسیری
ترجمه محض و شبیه سازی محض دو کرانه اند که به ندرت استفاده می شوند .
اغلب زبان ها به صورت ترکیبی از ترجمه و تفسیری پیاده سازی می شوند .
ترجمه محض :در مواردی که زبان ورودی دقیقا شبیه زبان ماشین
باشد مانند اسمبلی
شبیه سازی محض :در مواردی مثل زبان های محاوره ای یا زبان
بهترسیستم
کنترل
عاملاز اجرا ترجمه شوند ولی برخی
است قبل
برخی از جنبه های ساختار برنامه
دیگر از جنبه ها بهتر است فقط در زمان اجرا پردازش شوند .
37
سیستم هاي عامل پیشرفته
مقایسه روش ترجمه و تفسیری
38
ایراد مهم ترجمه از دست رفتن اطالعاتی در رابطه با برنامه است ولی در
روش تفسیری تمام اطالعات مربوطه موجود است .
در روش تفسیری چون دستورات تا زمان اجرا شکل اولیه خود را خواهند
داشت چند کپ ی از انها نگهداری نمی شود .در مقابل در روش ترجمه
چندین فایل داریم که نتیجه ترجمه در ان ذخیره می شود .
سیستم هاي عامل پیشرفته
مقایسه روش ترجمه و تفسیری به
صورت خالصه
میزان حافظه
مصرفی
سرعت اجرا
اشکال زدایی
nبار اجرا
39
روش تفسیری
روش ترجمه
کمتر
زیاد
کمتر
بیشتر
ضعیف تر
ایمن تر
nبار تفسیر
یک بار ترجمه
سیستم هاي عامل پیشرفته
انواع زبان ها
:زبان های کامپایلری
C , C++ , FORTRAN , ADA
:زبان های مفسری
Java , Lisp , Perl , Postscript , Basic
ML ,HTML Smalltalk,
سیستم هاي عامل پیشرفته
40
انقیاد و زمان های انقیاد
تعریف :
اختصاص یک ویژگی به مولفه ای از برنامه از بین مجموعه ای از ویژگی
های ممکن انقیاد نام دارد ؛ و زمان اختصاص این ویژگی زمان انقیاد نام
دارد .
زمان های انقیاد :
41
زمان اجرا
زمان ترجمه
زمان پیاده سازی
زمان تعریف یا طراحی زبان
سیستم هاي عامل پیشرفته
انقیاد زمان اجرا
این انقیاد ها در هنگام اجرای برنامه صورت می گیرند .مثل انقیاد متغیر ها
به متغیرشان و انقیاد متغیر ها به محل های خاصی از حافظه .
انواع انقیاد های زمان اجرا :
در هنگام ورود به زیر برنامه
در نقطه خاصی از اجرای برنامه
42
سیستم هاي عامل پیشرفته
انقیاد زمان اجرا
در هنگام ورود به زیر برنامه :
به هنگام صدا زدن تابع در زبان cیا pascalانقیاد پارامتر های مجازی به
واقعی و انقیاد پارامتر های مجازی به محل های ی از حافظه
در نقطه خاصی از اجرای برنامه :
43
برخی از انقیاد ها در حین اجرا ،در نقطه خاصی از برنامه انجام می پذیرند .
مانند انقیاد متغیر ها به مقادیرشان توسط دستور انتساب یا انقیاد اسامی
متغیر ها به محل های ی از حافظه در هر نقطه ای از برنامه مثال در زبان ML
و Lisp
سیستم هاي عامل پیشرفته
انقیاد زمان ترجمه
این انقیاد ها در زمان ترجمه رخ می دهند .
توسط برنامه نویس :
توسط مترجم زبان :
مانند انتخاب محل نسبی داده در حافظه ای که به زیر برنامه اختصاص داده می شود یا
چگونگی ذخیره سازی ارایه ها (سطری یا ستونی )
توسط بار کننده :
44
مانند اسامی متغیر ها ،نوع متغیر ها ،و ساختار دستورات
برنامه ای که شامل چند زیر برنامه است هنگام بار کردن ان در حافظه ادرس متغیر
های موجود در زیر برنامه ها باید به ادرس واقعی انقیاد شود .
سیستم هاي عامل پیشرفته
انقیاد زمان پیاده سازی
برخی از ویژگی های یک زبان ممکن است در پیاده سازی های مختلف ان
متفاوت باشد .به عنوان مثال نمایش اعداد ،اعمال محاسباتی ،
محاسبات ریاضی و غیره .
محدوده مقادیر اعداد short intدر پیاده سازی های مختلف زبان
Cممکن است متفاوت باشد .مثال در یک ماشین ممکن است 8بیتی و
در ماشین دیگر ممکن است 16بیتی باشد .
نک ته :
45
پیاده سازی زبان با توجه به امکانات سخت افزاری می باشد .
سیستم هاي عامل پیشرفته
انقیاد زمان تعریف یا طراحی زبان
46
اغلب ساختارهای زبان های برنامه نویسی ،شکل های مختلف دستورات
،انواع متغیر ها ،انواع ساختمان داده ها و غیره مواردی هستند که در
زمان تعریف زبان معین می شوند .
مثال متغیر های I , j , . . . , nدر فرترن به طور پیش فرض
integerاست .
سیستم هاي عامل پیشرفته
نمونه ای از انقیاد ها
انقیاد نوع
انقیاد مقدار
انقیاد نماد
47
; Int i
;i=10
;i=i+1
متغیر
زمان انقیاد
مجموعه مقادیر ممکن یک متغیر
یک نوع در زبان برنامه نویسی موجود باشد
یا نه
یک متغیر در تعریف چه نوعی باشد
زمان پیاده سازی
زمان تعریف زبان
هنگام ترجمه
مقدار یک متغیر
در لحظه اجرا
سیستم هاي عامل پیشرفته
اهمیت زمان های انقیاد
انقیاد دیر رس (: )Late binding
اگر عمل انقیاد در زمان اجرا مشخص شود انقیاد دیر رس گ فته می
شود .
انقیاد زود رس(: )Erly binding
اگر عمل انقیاد در زمان ترجمه مشخص شود انقیاد زودرس گ فته می
شود .
48
سیستم هاي عامل پیشرفته
انواع زبان ها بر اساس زمان مقد سازی
زبان های ی با انقیاد زودرس (: )EBT
زبان های ی با انقیاد دیررس (: )LBT
49
کارایی باال – سرعت باال – انعطاف پذیری پایین – در زمان
ترجمه
مانند زبانهای Fortran – c – Pascal
کارای ی پایین – سرعت پایین – انعطاف پذیری باال – در زمان اجرا
مانند Basic , Prolog , Lisp , ML
سیستم هاي عامل پیشرفته
فصل پنجم:
انواع داده اولیه
فهرست مطالب فصل پنجم
شی داده
انقیاد شی داده
متغیر ها و ثوابت
نوع داده
مشخصات انواع داده اولیه
پیاده سازی انواع داده اولیه
اعالن
اهداف اعالن
کنترل نوع
کنترل نوع پویا
طراحی و پیاده سازی زبان ها
کنترل نوع ایستا
تبدیل نوع و تبدیل نوع ضمنی
انتساب و مقدار دهی اولیه
انواع داده اسکالر
نوع صحیح
زیر بازه
اعداد حقیقی ممیز شناور و ممیز ثابت
شمارشی ؛ بولین ؛ کاراک تری
انواع داده مرکب
رشته ها
اشاره گر ها
فایل ها
شی داده :
یک شی داده گروهی از یک یا چند قسمت از اطالعات است که در
کامپیوتر های مجازی استفاده می شود .
(هر چیزی را که تعریف می کنیم و مقدار در ان میریزیم را شی داده می گویند
)
یک شی داده توسط مجموعه ای از صفات مشخص می شود که مهمترین
انها نوع داده است .
52
سیستم هاي عامل پیشرفته
ویژگی های اشیا داده :
نام ( )Name
نوع ()Type
مقدار ()Value
ادرس ( : )Address
•
53
ادرس شروع مکان حافظه که در ان مقدار قرار می گیرد .
طول عمر ()Life Time
سیستم هاي عامل پیشرفته
ویژگی های اشیا داده :
طول عمر ()Life Time
فاصله زمانی بین لحظه ای که حافظه به شی داده تخصیص داده می
شود تا زمانیکه حافظه از ان پس گرفته می شود .
Malloc , new گرفتن حافظه
Free , Delete ازاد کردن حافظه
54
مدت زمان بین New , Deleteرا طول عمر گویند .
سیستم هاي عامل پیشرفته
تقسیم بندی های شی داده
اشیا داده به دو دسته تقسیم می شوند :
تعریف شده توسط برنامه نویس :
اشیا داده ای که توسط برنامه نویس تعریف می شوند مانند متغیر ها ،مقادیر ،ثابت ،
ارایه ،فایل
تعریف شده توسط سیستم :
55
اشیا داده ای که توسط سیستم به وجود می ایند و مستقیما در اختیار برنامه نویس
نیستند .مثل پشته های زمان اجرا ،
رکورد های فعالیت زیر برنامه ها ،بافر های فایل و لیست فضای ازاد ،جدول نماد ها
سیستم هاي عامل پیشرفته
تقسیم بندی های شی داده :
شی داده اولیه :
•
شی داده ساخت یافته (ساختاری) :
•
56
اگر شی داده تنها یک مقدار را ذخیره کند به طوریکه شامل یک محل حافظه برای
مقدار داده باشد .مثل نوع Int , float , char , . . . . .
اگر شی داده شامل مجموعه ای از سایر اشیا داده ای باشد (بیش از یک مقدار را در
خود ذخیره کند ) مانند رکورد ،لیست ،ارایه
سیستم هاي عامل پیشرفته
تقسیم بندی های شی داده :
شی داده متغیر:
•
شی داده ثابت:
•
57
اگر ویژگی valueدر مدت طول عمر متغیر باشد و تغییر کند را شی داده متغیر
گویند .
اگر ویژگی valueدر مدت طول عمر ثابت باشد شی داده از جنس ثابت است .
سیستم هاي عامل پیشرفته
نوع داده :
نوع داده طبقه ای از اشیا داده به همراه مجموعه ای از عملیات برای
تولید و دستکاری می باشد .
مشخصات :
پیاده سازی :
58
صفات
مقادیر
عملیات
پیاده سازی عملیات
نمایش حافظه
سیستم هاي عامل پیشرفته
نوع داده در سطح مشخصات :
صفات :
مقادیر :
مجموعه ای از مقادیر ممکن که یک شی داده می تواند داشته باشد .
عملیات :
59
ویژگی است که اشیا داده ا زیک نوع را با دیگر نوع ها متمایز می کند .
مجموعه ای از عملیات که برای یک نوع داده تعریف می شود و تعیین می کند شی
داده چگونه باید دستکاری شود .
سیستم هاي عامل پیشرفته
پیاده سازی عملیات :
سه روش برای پیاده سازی عملیات روی اشیا داده وجود دارد .
سخت افزاری :
مانند Not , And , OR , - , + , * , /
زیر برنامه یا تابع :
مثال عمل جذر گیری که توسط سخت افزار به صورت مستقیم پشتیبانی نمی شود یک زیر برنامه
مانند SQRTبرای ان نوشته می شود .
مجموعه ای از دستورات :
60
به جای زیر برنامه ،دستورات مستقیما در خود برنامه نوشته می شوند ABS(x) .
=> if x<0 then –x else x
سیستم هاي عامل پیشرفته
نمایش حافظه :
61
نمایش حافظه برای انواع داده اولیه ،تحت تاثیر کامپیوتری است که
برنامه را اجرا می کند به عنوان مثال نمایش عدد صحیح به صورت دنباله
بیتی است جهت نمایش کاراک تر ها می توان از کد های کاراک تری موجود
در سخت افزار یا سیستم بهره برد .
سیستم هاي عامل پیشرفته
عملیات :
هر عملیات معموال به صورت یک تابع ریاضی بیان می شود بطوریکه یک یا چند
پارامتر را به عنوان ورودی پذیرفته و نتایج را تولید می کند .
دامنه عملیات :
مجموعه ای از مقادیر که عملیات بر روی انها تعریف شده است .
برد عملیات :
مجموعه ای از نتایج ممکن برد عملیات نام دارد .
ADD(2 , 3 ) 5
برد
62
سیستم هاي عامل پیشرفته
دامنه
عملیات :
زیر نوع (: )Sub Type
ابر نوع (:)Super Type
63
یک نوع زیر مجموعه ای از نوع دیگر باشد .
در نمایش یک نوع زیر مجموعه ،نوع بزرگ تر را ابر نوع گوییم .
سیستم هاي عامل پیشرفته
امضای عملیات :
برای مشخص کردن امضای عملیات از نشانه گذاری های ریاضی که در
زبان Cان را الگو ( )Prototypeمی نامیم استفاده می کنیم .
OP-name: argtype × argtype ×. . . × resulttype
× :integer × integer integer
= :integer = integer boolean
Sqrt : real real
64
سیستم هاي عامل پیشرفته
عملیات :
باینری :
•
یکانی :
•
65
دو پارامتر ورودی می گیرند و یک پارامتر خورجی دارند مانند * ، / ، - ، +
یک پارامتر ورودی می گیرند و یک خروجی دارند مانند قرینه ،جذر
سیستم هاي عامل پیشرفته
عوامل پیچیده شدن پیاده سازی عملیات
به صورت تابع ریاضی
66
تعریف نشده
ارگومان ضمنی
اثرات جانبی
خود اصالحی
سیستم هاي عامل پیشرفته
تعریف نشده
عملی که بر روی دامنه خاصی تعریف شده ممکن است برای بعضی از ورودی
های روی ان دامنه تعریف نشده باشد .
مانند مجموعه ای از اعداد که در عملیات محاسباتی سر ریز یا زیر ریز تولید می
کنند .
+ : int × int int
(30000) + (10000) = Overflow
(- 30000) + (- 10000) = Underflow
67
سیستم هاي عامل پیشرفته
آرگومان ضمنی
ورودی های ضمنی یا ورودی های ی که به صورت صریح تعریف نشده اند
مثل متغیر های سراسری که باعث می شوند تعیین دقیق دامنه عملیات
بر روی اشیا داده ممکن نباشد .
•
)Int f ( int a ,int b
{
6
; Return a*b*c
}
68
12
سیستم هاي عامل پیشرفته
; Int c
) ( Void main
{
; c= 1
;) f (2 , 3
; c= 2
; )f (2 , 3
}
اثرات جانبی
69
یک عملیات ممکن است عالوه بر وظیفه اصلی خود اعمال مخرب
دیگری نیز انجام دهد .
مثل عملیاتی که حاصل جمع دو عدد را بر می گرداند ولی مقادیر ذخیره
شده در سایر اشیا داده را نیز اصالح می کند.
یک تابع ممکن است عالوه بر مقدار برگشتی ،ارگومان های ورودی خود
را نیز تغییر دهد که این یک اثر جانبی است .
سیستم هاي عامل پیشرفته
اثرات جانبی
نک ته :ارگومان ضمنی خود یک نمونه از اثرات جانبی است .
)Int sum ( int a ,int &b
{
; Return a + b ++
}
5 , 10
15
5 , 11
; Int c
) ( Void main
{
;int a=5 , b=10
;cout << a << b
;)cout << sum(a,b
;cout << a<< b
}
70
سیستم هاي عامل پیشرفته
خود اصالحی (حساسیت به سابقه یا گذشته)
عملیات می تواند ساختار داخلی ،از جمله داده های محلی که در بین اجرا های
مختلف نگهداری می شوند یا حتی کد خود را اصالح کنند بنابراین نتایج حاصل از
عملیات برای مجموعه خاصی از ارگومان ها ،نه تنها به ان ارگومان ها بلکه به سابقه
فراخوانی های قبلی بستگی دارد .
مانند تولید اعداد تصادفی .
Rand (0 , 1 )0.567
Rand (0 , 1 )0.638
Rand (0 , 1 )0.445
71
سیستم هاي عامل پیشرفته
Seed = 0.55
Seed = 0.44
اعالن Declaration
دستوری از برنامه است که نام و نوع و طول عمر اشیا داده را مشخص
می کند که به دو دسته تقسیم می شود :
اعالن صریح :
اعالن ضمنی :
72
خود برنامه نویس صراحتا متغیر را تعریف می کند .
خود برنامه مترجم (کامپایلر) پیش فرض های ی را در مورد داده ها و متغیر ها دارد .
سیستم هاي عامل پیشرفته
اعالن
73
در زبان فرترن متغیر ها از I , J . . . Nپیش فرض به صورت صحیح
هستند .
در زبان Perlانتساب مقداری به متغیر ان را اعالن می کند .
گاهی اوقات جزئیات پیاده سازی در اعالن مشخص می شود .
اعالن می تواند اطالعاتی راجع به عملیات را به مترجم بدهد .
سیستم هاي عامل پیشرفته
اطالعاتی که از اعالن گرفته می شود
74
نام
نوع
مقدار اولیه
ویژگی شی داده
طول عمر داده
سیستم هاي عامل پیشرفته
جدول نماد ها
75
اطالعاتی از اشیای ی که در برنامه استفاده کرده ایم در جدولی به نام
جدول نماد ها نگهداری می شود .
مقدار
نوع
نام
3
Int
n
3.14
float
x
سیستم هاي عامل پیشرفته
; int n = 3
;float x=3.14
اهداف اعالن (یا مزایای اعالن )
76
انتخاب نمایش حافظه بهتر
مدیریت بهتر حافظه
مشخص شدن وضعیت عملیات چند ریختی
کنترل نوع
سیستم هاي عامل پیشرفته
انتخاب نمایش حافظه بهتر
اگر اعالن اطالعاتی راجع به نوع و صفات شی داده در
اختیار کامپایلر قرار دهد بهترین نمایش حافظه برای
آن انتخاب می شود .
به عبارت ساده تر کامپایلر می تواند یک فضای مناسب
تعیین کند ( .نوع)
77
سیستم هاي عامل پیشرفته
مدیریت بهتر حافظه
اشیا داده هایی را که طول عمر یکسان دارند در یک
بلوک حافظه قرار می دهد ( .از طول عمر استفاده می
کند)
نکته :
بعضی از اشیا داده پویا که با دستورات Newیا
Mallocایجاد می شوند طول عمر آنها اعالن نمی
شود .
78
سیستم هاي عامل پیشرفته
مشخص شدن وضعیت عملیات چند ریختی
بسیاری از زبان ها ،نماد های خاصی مانند +را برای تعیین عملیات
مختلف استفاده می کنند .
مثال عالمت +مبین عملیات زیر است :
79
جمع دو عدد صحیح
جمع دو عدد اعشاری
الحاق رشته
اجتماع دو مجموعه
سیستم هاي عامل پیشرفته
کنترل نوع ()Type Checking
مهمترین هدف اعالن از دیدگاه برنامه نویس ،انجام کنترل نوع ایستا به جای
کنترل نوع پویا می باشد .
به زبان ساده تر چک می کند ایا نوع ها یکسان هستند یا نه .
; Int A
; Float B , C
; C =A+ B
float
80
int
سیستم هاي عامل پیشرفته
float
کنترل نوع :
کنترل نوع پویا (: )D.T.C
کنترل نوع ایستا (: )S.T.C
81
کنترل نوع در زمان اجرا صورت می گیرد .مثل زبان های ML , Lisp ,
Prolog
کنترل نوع در زمال ترجمه (کامپایل) صورت می گیرد .مثل زبان های Java ,
C , Pascal
سیستم هاي عامل پیشرفته
کنترل نوع ایستا :
مزایا :
معایب :
82
افزایش سرعت برنامه
عدم نیاز به حافظه اضافی جهت نگهداری اطالعات نوع داده ای در زمان اجرا
شامل شدن تمام عملیات موجود در برنامه و کنترل تمام مسیر های اجرای ی
ساده تر بودن اشکال زدای ی برنامه
انعطاف پذیری کم
نیاز به تعریف اعالن برای تمام اشیاء داده
سیستم هاي عامل پیشرفته
کنترل نوع ایستا
در این حالت از کنترل نوع برای متغیر ها از جدول نماد ها استفاده می شود
.
83
مقدار
-
نوع
Int
Float
نام
n
M
2
Int
A
سیستم هاي عامل پیشرفته
; Int n
; Float M
; Int A = 2
کنترل نوع پویا
در این حالت از کنترل نوع برای متغیر ها از توصیفگر استفاده می شود .
N
10111011
K
Int
Float
M
A
00000010
; Int N
Float
Int
; Float M , K
; Int A = 2
;A=M+N
Int
84
سیستم هاي عامل پیشرفته
Float
Int
کنترل نوع پویا
در این حالت از کنترل نوع برای ارایه ها از توصیفگر استفاده می شود .
A :Array [0 ... 10 , 1 .. 9 ] of int
Int
کران باال بعد اول
حافظه آرایه
کران پایین بعد اول
کران باال بعد دوم
کران پایین بعد دوم
85
سیستم هاي عامل پیشرفته
توصیف
گر
استنتاج نوع
Function Add (x: int , y) = x + y ;
x+y => int
Function Add (x , y : int) = x + y ;
x+y => int
Function Add (x: int , y: int) = x + y ;
x+y => int
Function Add (x , y) = x + y ;
سیستم هاي عامل پیشرفته
x+y => ?
86
تبدیل نوع
Error : Type mismatch
; Int A
یا
تبدیل نوع صورت می گیرد
و
Floatمی
متغیر Aرا به چشم
بیند
87
Float B , C
C=A+B
Float
سیستم هاي عامل پیشرفته
Int
Float
تبدیل نوع
ضمنی :
در این نوع تبدیل نوع کامپایلر کار تبدیل نوع را انجام می دهد .
صریح :
در این نوع از تبدیل نوع برنامه نویس کار تبدیل نوع را انجام می دهد .
مانند استفاده از توابع تبدیل
; ) ( int to char
88
سیستم هاي عامل پیشرفته
تبدیل نوع ضمنی :
باریک کننده :
اگر در تبدیل نوع اطالعات از بین برود به ان تبدیل نوع ضمنی محدود کننده
یا باریک کننده می گویند .
گسترش یافته :
اگر در تبدیل نوع اطالعات از بین نرود به ان تبدیل نوع ضمنی ارتقا یافته یا
گسترش یافته می گویند .
89
سیستم هاي عامل پیشرفته
تبدیل نوع ضمنی :
90
باریک کننده :
2.582
صحیح اعشاری
16بیت 8بیت
Short long
گسترش یافته :
33.38
اعشاری صحیح
8بیت 16بیت
long short
سیستم هاي عامل پیشرفته
انتساب
91
انتساب ،عملیات اصلی برای تغییر انقیاد یک مقدار به یک شی داده است
این تغییر ،اثر جانبی عملیات محسوب می شود .
در بعضی زبان ها مانند APL , C , Lispانتساب مقداری را بر
می گرداند که این مقدار یک شی داده ای است که حاوی یک کپ ی از مقدار
نسبت داده شده است .
در زبان پاسکال عمل انتساب مقداری را بر نمی گرداند .
سیستم هاي عامل پیشرفته
انتساب
Pascal
Lisp , C , APL
(:=) int × int void
(=) int × int int
A:=B
A=B
B
A
قبل از انتساب
4
3
قبل از انتساب
بعد از
انتساب
4
4
بعد از
انتساب
B
A
4
3
4
4
مقدار مجازی
92
سیستم هاي عامل پیشرفته
4
فرآیند انتساب A=B
(1
(2
(3
(4
مقدار راست Bرا حساب کن .
مقدار چپ Aرا حساب کن .
مقدار راست Bرا در مقدار چپ Aکپ ی کن .
مقدار راست Bرا به عنوان خروجی برگردان .
مقدار راست = مقدار شی
داده
; Int V = 25
مقدار چپ = آدرس شی داده
R-value (V) = 25
L-value (V) = 0X77
93
سیستم هاي عامل پیشرفته
مقدار دهی اولیه
94
شی داده فاقد مقدار اولیه ،شی داده ای است که ایجاد شده است ولی
هنوز مقداری به ان داده نشده است .
در بعضی از زبان ها مثل APLهر شی داده که ایجاد می شود باید برای
ان مقدار اولیه تعریف شود .
متغیر های فاقد مقدار اولیه عامل مهمی برای بروز خطا در برنامه نویسی
هستند .
سیستم هاي عامل پیشرفته
مقدار دهی اولیه
صریح :
در این حالت برنامه نویس باید دستورات الزم را برای مقدار اولیه به متغیر ها را
در برنامه وارد کند .
ضمنی :
در این حالت خود کامپایلر مقدار اولیه متغیر را تعیین می کند که این مقدار
اولیه می تواند صفر یا NULLباشد .
95
سیستم هاي عامل پیشرفته
انواع داده
اسکالر :
انواع داده اسکالر فقط یک صفت دارند و از معماری سخت افزار کامپیوتر
پیروی می کنند .
انواع داده اسکالر شامل انواع صحیح – اعشاری – بولین و کاراک تری می
باشد.
انواع داده مرکب :
شامل چندین صفت هستند و ساختار پیچیده تری دارند .مانند ارایه ها -
رشته ها -فایل ها و اشاره گر ها
96
سیستم هاي عامل پیشرفته
انواع داده صحیح
از دو نظر انها را بررسی می کنیم .
از نظر مشخصات :
•
•
•
از نظر پیاده سازی :
•
•
97
صفات
مقدار اولیه
عملیات
نمایش حافظه
پیاده سازی عملیات
سیستم هاي عامل پیشرفته
عملیات روی داده نوع صحیح
:عملیات محاسباتی
Binary- op:int*int int +,-,*,/,DIV,MOD
: عملیات رابطه ای
Rel-op:int*intBoolean = ,<,>,<>,<=,>=
:عملیات انتساب
:عملیات بیتی
Assign: int*intvoid (:=)
Assign: int*intint
(=)
Bit-op:int*intint
&,|,~,^
سیستم هاي عامل پیشرفته
98
پیاده سازی
سه نمایش حافظه برای نوع داده صحیح وجود دارد .
بدون توصیفگر
99
توصیفگر و مقدار در یک کلمه
توصیفگر و مقدار در دو کلمه مجزا
سیستم هاي عامل پیشرفته
بدون توصیفگر :
100
این نمایش در زبان های ی که زبان اعالن ها و کنترل نوع ایستا را برای
مقادیر صحیح فراهم می کنند استفاده می شود .مانند فرترن و C
سیستم هاي عامل پیشرفته
توصیفگر و مقدار در یک کلمه :
101
در این حالت در مصرف حافظه صرفه جوی ی می شود ولی برای استفاده
عملیات سخت افزار باید مقدار را از توصیفگر توسط دستورات شیفت از
یکدیگر جدا کرد .
سرعت عمل در این حالت کمتر است .
سیستم هاي عامل پیشرفته
توصیفگر و مقدار در دو کلمه مجزا
102
این نمایش حافظه در لیسپ استفاده می شود .
عیب این روش ان است که حافظه الزم برای شی داده دو برابر می شود
مزیت این روش این است که عملیات روی ان به صورت سخت افزاری قابل
پیاده سازی است که افزایش سرعت را در بر دارد.
سیستم هاي عامل پیشرفته
زیر بازه ها
شامل دنباله ای از مقادیر صحیح و بازه محدود هستند مانند نوع داده
شمارشی
Type
کران باال . . . .کران پایین = نام زیر بازه
دو اثر مهم زیر بازه ها :
نیاز به حافظه کمتر
کنترل نوع بهتر
103
سیستم هاي عامل پیشرفته
نوع شمارشی
Type
(اعضای لیست) = نام نوع شمارشی
مانند مجموعه رنگ ها
Type
) Colors :=(red , green , black
104
سیستم هاي عامل پیشرفته
نوع اعداد اعشاری
ممیز شناور :
این نوع داده معموال با صفت realدر فرترن و پاسکال یا floatدر c
مشخص می شود .
Sin : real real
Max : real real
ممیز ثابت :
برای برخی از داده های حقیقی اگر از ممیز شناور استفاده کنیم خطای
گرد کردن رخ خواهد داد می توان برای اینگونه داده ها از ممیز ثابت
استفاده کرد.
105
سیستم هاي عامل پیشرفته
پیاده سازی اعداد اعشاری ممیز شناور
106
در اک ثر زبان ها نحوه پیاده سازی اعداد حقیقی ممیز شناور به سخت
افزار بستگی دارد .
برای ذخیره و پیاده سازی اعداد ممیز شناور از استاندارد
IEEE754استاندارد 32بیتی و 64بیتی استفاده می شود .
سیستم هاي عامل پیشرفته
استاندارد 32بیتی :
در این استاندارد هر عدد حقیقی شامل سه فیلد است:
بیت : S
فیلد عالمت یک بیتی که صفر به معنای مثبت بودن است.
بیت : E
توان ظاهری 8بیتی با افزودنی .127
توان ظاهری= توان واقعی127 +
بیت : M
مانتیس 32بیتی است .معموال اعداد اعشاری را به صورت نرمال شده ذخیره
می کنند .
107
سیستم هاي عامل پیشرفته
اعداد اعشاری ممیز شناور :
108
M
E
S
32بیتی
32
8
1
64بیتی
52
11
1
سیستم هاي عامل پیشرفته
اعداد اعشاری ممیز ثابت
این اعداد ممکن است مستقیما توسط سخت افزار پشتیبانی شود یا به
صورت نرم افزاری شبیه سازی گردد .
این اعدا به صورت صحیح ذخیره می شوند و نقطه اعشار به عنوان صفت
ان شی داده ای است .
این اعداد از فرمول زیر استفاده می کنند .
Value(X) = Rvalue (X) * 10-SF
109
سیستم هاي عامل پیشرفته
پیاده سازی اعداد اعشاری ممیز ثابت
110
FixedPoint
FloatingPoint
سیستم هاي عامل پیشرفته
: FixedPoint
مثال در زبان Cobolاعالن داده اعشاری ممیز ثابت با عبارت Picture
نشان داده می شود.
Picture 999 V 99
111
سیستم هاي عامل پیشرفته
FloatingPoint
مانند نماد علمی .
; )DECLARE x Fixed DECIMAl (1 , 3
تعداد ارقام
اعشاری
112
تعداد ارقام صحیح
سیستم هاي عامل پیشرفته
نوع ( Boolبولین)
113
متشکل از اشیا داده ای است که یکی از دو مقدار Trueیا False
را می پذیرد.
نمایش حافظه برای شی داده بولی یک بیت از حافظه است به شرطی
که نیاز به توصیفگر برای نوع داده نباشد.
مقدار صفر در کل واحد حافظه نشان دهنده Falseو مقدار غیر صفر
نشان دهنده Treueاست .
بعضی از زبان ها مانند Cفاقد نوع بولین هستند.
سیستم هاي عامل پیشرفته
نوع کاراکتری char
نوع داده کاراک تری اشیا داده را به وجود می اورند که مقدار انها یک
کاراک تر است .
مقادیر داده های کاراک تری همیشه توسط سیستم عامل و سخت افزار
پشتیبانی می شوند .
در هنگام ورودی خورجی کاربرد دارن ()I/O
عملیاتی که روی کاراک تر ها انجام می شود :
114
Upercase
Lowercase
Isdigit
سیستم هاي عامل پیشرفته
رشته ()string
115
به صورت ارایه ای از کاراک تر ها :
char st[20] ; C , Pascal
به صورت نوع رشته ها :
ML , Lisp , Prolog
سیستم هاي عامل پیشرفته
;String st
انواع روش های پیاده سازی رشته ها
رشته با طول ثابت(طوا ایستا) :
رشته با طول متغیر باحد معین(طول پویای محدود) :
شی داده رشته کاراک تری ممکن است طول حداک ثری داشته باشد که در برنامه اعالن
شده باشد .
رشته با طول متغیر (طول پویا):
116
طول رشته در هنگام ایجاد رشته مشخص است .و بعد از تعریف قابل تغییر نیست .
C# , C++ ,Java
طول رشته می تواند در زمان اجرا تغییر کنند و حداک ثر طول برای ان مشخص نمی
شود Perl , JavaScript .
این نوع رشته ها دارای سربارتخصیص وازاد سازی حافظه اند
سیستم هاي عامل پیشرفته
نمایش حافظه ای رشته ها
117
طول ثابت :
طول متغیر با حد معین :
طول متغیر :
سیستم هاي عامل پیشرفته