Scheme1.pdf

‫زباى‌های‌برًاهه‌ًویسی‬
‫‪Scheme‬‬
‫توریي‌عولی‌اول‬
‫‪‬‬
‫جَاب توزیيّا را تِ آدرس ‪ [email protected]‬تفزستیذ‪ .‬پاسخ تواهی سَاالت را در یک فایل‬
‫تا ًام ‪ = # ( STD#‬شوارُ داًشجَیی) قزار دّیذ ٍ فایل هزتَعِ را در یک فایل‬
‫‪ zip‬تِ ًام ‪ = # ( STD#‬شوارُ‬
‫داًشجَیی) فشزدُ کٌیذ‪ ..‬هَضَع ایهیل ًیش تایذ حتوا تِ فزهت ‪ STD#‬تاشذ‪.‬‬
‫‪‬‬
‫هْلت ارسال ایي توزیي تا ساعت‌‪‌۲۳:۵۹‬روز‌‪۳۰‬ام‌ههر است‪.‬‬
‫‪‬‬
‫سیاستّای هزتَط تِ تاخیز ٍ تقلة در کالس حلتوزیي اعالم خَاّذ شذ‪.‬‬
‫‪‬‬
‫ّزگًَِ سَال در هَرد توزیي را تِ آدرس ‪ [email protected]‬تفزستیذ‪.‬‬
‫‪ً‌.۱‬صب‌و‌راه‌اًدازی‌‪Racket‬‬
‫‪ Racket‬یکی اس ستاىّای خاًَادُی‬
‫‪ Scheme‬است‪ DrRacket .‬یک هحیظ تزًاهًَِیسی تعاهلی (یا‬
‫‪ )interactive‬تزای ایي ستاى است‪ .‬تزای ًصة ًسخِی هٌاسة تزای سیستنعاهلتاى تِ ایي آدرس هزاجعِ‬
‫کٌیذ‪:‬‬
‫‪http://racket-lang.org/download/‬‬
‫تعذ اس اجزای تزًاهِ تا پٌجزُی سیز هَاجِ هیشَیذ‪ .‬در قسوت تاال (هحیظ ًَشتي تزًاهِ) تزًاهِی خَد را‬
‫هیًَیسیذ‪ .‬تا سدى دکوِی ‪ Run‬تزًاهِی شوا قاتل اجزا شذُ ٍ تاتعّایی کِ در تزًاهِی خَد تعزیف کزدُایذ در‬
‫قسوت پاییي (هحیظ اجزای تاتعّا ٍ دستَرّا) قاتلاستفادُ ّستٌذ‪ .‬تَجِ کٌیذ کِ تعذ اس ّز تغییز تایذ دٍتارُ‬
‫دکوِی ‪ Run‬را تشًیذ‪.‬‬
‫تزای آشٌایی تیشتز تا تَاتع اٍلیِی ‪ Racket‬هیتَاًیذ اس لیٌک سیز استفادُ کٌیذ‪:‬‬
‫‪http://docs.racket-lang.org/quick/index.html‬‬
‫‪‌.۲‬رسن‌بازگشتی‌فراکتال‌ها‌‬
‫شکل سیز فزاکتال ‪ T-Square‬است کِ تِ تزتیة اس چپ تِ راست تزای ‪ّn‬ای ‪ ۱‬تا ‪ ۶‬رسن شذُاست‪.‬‬
‫شوا تایذ تاتع )‪ (T-Square n‬را پیادُساسی کٌیذ کِ تِ عٌَاى ٍرٍدی‬
‫‪ n‬را هیگیزد ٍ حزٍجی آى ‪n‬اهیي‬
‫فزاکتال ‪ T-Square‬است‪ .‬اتعاد شکل خزٍجی تاتع شوا تایذ ‪ 128x128‬تاشذ‪ .‬تِ عٌَاى راًُوایی قغعِکذ سیز‬
‫را اجزا کٌیذ ٍ ًتیجِی آى را تثیٌیذ‪.‬‬
‫‪‌.۳‬کار‌با‌لیست‌ها‌‬
‫لیستّا اس هفاّین اساسی در ستاى ‪ّ Lisp‬ستٌذ‪ .‬در ایي توزیي چٌذ تاتع اٍلیِ تزای کار تا لیستّا را پیادُساسی‬
‫هیکٌین‪ .‬تَجِ کٌیذ کِ ایي تاتعّا را تایذ خَدتاى پیادُساسی کٌیذ ٍ استفادُ اس تاتعّای هشاتِ کِ تِ شکل‬
‫پیشفزض در خَد ‪ Lisp‬هَجَد ّستٌذ هجاس ًیست‪.‬‬
‫‪ :(my_member node lst) ‬در صَرتی کِ ‪ node‬عضَ ‪ lst‬تاشذ هقذار ‪ ٍ true‬در غیز ایيصَرت‬
‫هقذار ‪ false‬را تزهیگزداًذ‪.‬‬
‫‪ :(my_append lst1 lst2) ‬لیست حاصل اس قزاردادى ‪ lst2‬در اداهِی ‪ lst1‬را تاسهیگزداًذ‪.‬‬
‫‪ :(my_delete node lst) ‬خزٍجی آى لیست حاصل اس حذف ّوِی تکزارّای ‪ node‬در ‪ lst‬است‪.‬‬
‫‪ٍ :(my_reverse lst) ‬ارٍى لیست ٍرٍدی را تاس هیگزداًذ‪.‬‬
‫‪‌‌.۴‬جای‌گشت‌روی‌لیست ‌‬
‫تا استفادُ اس تاتعّایی کِ در تخش قثل ًَشتیذ‪ ،‬تاتع‬
‫)‪ (all_permutation lst‬را تٌَیسیذ‪ .‬ایي تاتع تایذ‬
‫تواهی جایگشتّای لیست ٍرٍدی را در یک لیست تزگزداًذ‪ .‬فزض کٌیذ کِ لیست ٍرٍدی عٌصز تکزاری‬
‫ًذارد‪ّ .‬نچٌیي دقت کٌیذ کِ خزٍجی ایي تاتع لیستی اس لیستّا است‪.‬‬