علوم مهندسی کامپیوتر و IT و اینترنت

طراحی و پیاده سازی زبان های برنامه نویسی (زبان ML)

Tarahi_va_piadesazi_barnamenevisi_zaban_ML

در نمایش آنلاین پاورپوینت، ممکن است بعضی علائم، اعداد و حتی فونت‌ها به خوبی نمایش داده نشود. این مشکل در فایل اصلی پاورپوینت وجود ندارد.




  • جزئیات
  • امتیاز و نظرات
  • متن پاورپوینت

امتیاز

درحال ارسال
امتیاز کاربر [0 رای]

نقد و بررسی ها

هیچ نظری برای این پاورپوینت نوشته نشده است.

اولین کسی باشید که نظری می نویسد “طراحی و پیاده سازی زبان های برنامه نویسی (زبان ML)”

طراحی و پیاده سازی زبان های برنامه نویسی (زبان ML)

اسلاید 1: فهرست

اسلاید 2: مقدمه و تاریخچهام‌ال یک زبان برنامه‌نویسی تابعی همه منظوره است که توسط رابین میلنر و همکاران در اواخر دهه ۱۹۷۰ در دانشگاه ادینبورگ توسعه یافت.قواعد دستوری آن از ISWIM الهام گرفته است.کلمه ML از فوق زبان (Meta Language) گرفته شده است. ام‌ال معمولاً به عنوان یک زبان تابعی ناخالص یاد می‌شود. چرا که به اثرات جنبی ، اجازه می‌دهد و بنابراین برنامه نویسی امری، بر خلاف زبان برنامه نویسی تابعی خالص مانند هاسکل. به همین دلیل ام‌ال یک زبان برنامه‌نویسی چند نمونه‌ای (multi-paradigm) نیز عنوان می‌شود.امروزه زبان‌های مختلفی در خانواده ام‌ال است دو گویش اصلی آن ام ال استاندارد و Caml است. اما بقیه شامل F# که یه پروژهٔ تحقیق باز که هدف .NET شرکت مایکروسافت بود نیز وجود دارند.

اسلاید 3: در باره ام الML :Metalanguage (فوق زبان)مشابه بودن سبک برنامه نويسی با زبانهای C وپاسکالمفيد بودن برای مطالعه زبانهای ديگرکاربرد آموزشی و تحقيقاتی MLوضوح مکانيزم تعريف انواع داده هاML شی گرا نيستML دارای يک سيستم قوی برای استنتاج نوع است

اسلاید 4: ويژگی های MLImperative programming languageApplicative programming languageML is case sensitiveSML is standard of MLNo pointerAutomatic garbage collection in MLPolymorphism

اسلاید 5: انواع داده هامتغيرهای ساده : real, int, char, string-val x : int = 5;متغيرهای مرکب : list, tuple, record List : يک چند تايي شامل يک نوع اشياnil : يک ليست تهی استليست ها با [ ] مشخص می شودTuple : يک چند تايي شامل چند نوع از اشيايک ليست با طول ثابتTuple با ( ) مشخص می شودRecord : يک tuple که هر فيلد آن يک اسم داردRecord با { } مشخص می شودstructure

اسلاید 6: تعريف دادهاز علامت ~ برای مقادير منفی صحيح و اعشاری استفاده می شود: ~5 -5Examples: -[2,1+2,4];عبارت فوق بصورت زیر تفسیر می شود: -val it=[2,3,4] : int مثال برای list : -[“e”, “fg”, “h”];عبارت فوق یک string list است، که می توان بصورت زیر هم نوشت. -[“e”,concat [“f”,”g”],”h”];

اسلاید 7: تعریف داده(ادامه)-val x= (2, “hi”);عبارت فوق مثال برایtuple است. -val x={one = 2, two = “hi”};عبارت فوق مثال برای record است. عبارت فوق را می توان بصورت زیر نوشت:-val x = {2,”hi”};

اسلاید 8: آرایه در MLopen Array توابع آرایه را به برنامه اضافه می کند.array(m,n) آرایه ای شامل m عنصر با مقدار اولیه n تعریف می کند.اندیسها از صفر شروع می شود.sub(a,i) مقدار a[i] را برمیگرداند.update(a,i,val) مقدار val را در a[i] قرار می دهد.

اسلاید 9: Data typeDatatype در ML معادل union در C یا variant در Pascal است.Datatype ها حتما باید اعلان شود.Datatype ها اغلب به صورت بازگشتی هستند. مثال:datatype height = tall | medium | short

اسلاید 10: عبارت هاعملگرهای ریاضی عملگرهای منطقیعملگرهای مقایسه ایعملگرهای انتخابعملگرهای جمله ای

اسلاید 11: اولویت عملگرهای ریاضی: +، - * ، / ، mod ، div ~عملگرهای منطقی: شامل not,andalso,orelse کهorelse, andalso عملگرهای short circuit اند.عملگرهای جمله ای: ^ ≡ concatenation, “ ” ≡ empty stringعملگرهای انتخاب : if <expression> then <statement1> else <statement2>Statement2, statement1 باید هم نوع هم باشند. نکته:قسمت else در عبارت if اختیاری نیست.عملگرهای مقایسه ای: = < > <= =< <> که اولویت کمتری نسبت به عملگرهای ریاضی دارند. Pattern ها: -val x::xs = rev[1,2,3];

اسلاید 12: تعريف توابعتوابع به صورت زیر تعریف می شود:fun name of function (arguments) = expression;-fun sum (a :int , b :int) :int = a +b;-fun sum (a , b :int ) :int = a + b;-fun sum (a :int ,b) = a + b;-fun sum (a , b) :int = a + b;-fun sum (a, b) = a + b; (false)

اسلاید 13: تعريف توابع(ادامه)این Syntax ساده به ما اجازه می دهد توابع چند ریختی قدرتمندی ایجاد کنیم.-fun shuffle (x) = tl(x) @ [hd(x)]; تابع فوق بر روی هر لیستی از نوع ‘a عمل می کند و لیستی از همان نوع برمیگرداند.همه توابع در ML ، call by value هستند.توابع در SML فقط دارای یک آرگومان هستند.اگر تابعی به چند آرگومان نیاز داشته باشد از یک tuple استفاده می کنیم.

اسلاید 14: توابع ورودی - خروجیتابع print به عنوان تابع خروجی استفاده می شود.“n” نشان دهنده ابتدای خط جدید است.تابع open_int(filename) فایل ورودی را باز می کند.این تابع اشاره گر به ابتدای فایل را برمیگرداند.تابع input(file_ptr,n) تعداد n کاراکتر را از فایل ورودی می خواند و به صورت یک رشته بر می گرداند.تابع end_of_stream(file_ptr) وقتی به انتهای فایل رسیده باشیم مقدار درستی را برمیگرداند.

اسلاید 15: توابع استانداردتوابعی که بر روی متغیرهای ساده عمل می کند:~(argument) : negates its argument real , floor, ceiling, trunc sin, cos, arctan …

اسلاید 16: توابع استاندارد(ادامه)توابعی که بر روی رشته ها عمل می کنند: explode , implode ord, ordof, size substring … توابعی که بر روی لیست ها عمل می کنند: hd, tl, nth, nthtail null , length, rev map, fold, exists …

اسلاید 17: توابع استاندارد(ادامه)توابعی که بر روی عبارت های منطقی عمل می کنند: andalso, orelse not makestring print …در SML تابع print فقط بر روی رشته ها عمل می کند.

اسلاید 18: استثناهاتعریف:(تعریف استثنا) exception نام استثنافراخوانی:( فراخوانی استثنا) rise نام استثنا پردازش استثنا با handle : عبارت handle پردازش استثنا اگر raise در داخل این عبارت در هر تابعی که توسط عبارت فراخوانی شده ، فراخوانی شود پردازش استثنا به صورت زیر صدا زده میشود:

اسلاید 19: استثناها(ادامه) handler(pattern1) => expression1 handler(pattern2) => expression2 ... . handler(patternn) => expressionn مثلا استثنا myerror به صورت raise myerror(2) فراخوانی می شود وپردازش آن به صورت زیر است: myerror(1) => expression1 myerror(2) => expression2Exception divide_err ;fun InnerDivide(a: int; b:int): real =if b=0 then raise divide_err(b)else real(a) / real(b);fun Divide(a,b) = InnerDivide(a,b) handledivide_err(b) =>(print(b); “is divide errpr, 0 used”; 0.0);

اسلاید 20: دستور letبرای تعریف ثابت ها بکار می رود نمی توان با آن متغیر تعریف کردمشابه forces method argument در smalltalk وconst در C++ می باشدبا دستور let می توانیم local declaration داشته باشیم: -let val x = 10;در زبان C: {int x=10;…} در C مقدار x می توانست تغیر کند ولی در SML نمی توانیم آنرا تغیر دهیم.

اسلاید 21: Example

اسلاید 22: ML Glossary ! Dereferencea type parametera ditto with equality# record reference# truncated strings... truncated lists:.. of typeval define a label…… @ append_ anonymous parameter:: cons=> Anonymous functionsnull test for empty listo function compositionop infix to prefix

اسلاید 23: ML Glossary

اسلاید 24: پایان- گاهی چه قدر زود دیر می شود

34,000 تومان

خرید پاورپوینت توسط کلیه کارت‌های شتاب امکان‌پذیر است و بلافاصله پس از خرید، لینک دانلود پاورپوینت در اختیار شما قرار خواهد گرفت.

در صورت عدم رضایت سفارش برگشت و وجه به حساب شما برگشت داده خواهد شد.

در صورت نیاز با شماره 09353405883 در واتساپ، ایتا و روبیکا تماس بگیرید.

افزودن به سبد خرید