انجام پایان نامه

درخواست همکاری انجام پایان نامه  بانک مقالات رایگان انجام پایان نامه

سفارش پایان نامه

|

انجام پایان نامه ارشد

 پایان نامه 

پایان نامه‏ کامپیوتر

انجام پایان نامه‏ ارشد کامپیوتر

Why study programming languages ?
1.    هر چه قابليت ابزار را بشناسيم ابزار شناسي بهتر مي شود .
2.    الگو ريتم هاي بهينه تر مي شود .
3.    قدرت انتخاب زبانها بالا تر مي رود .
4.    يادگيري زبانهاي جديد آسان تر مي شود .
5.    براي طراحي زبان جديد مي توان از قابليتهاي زبانهايي که شناختيم استفاده کنيم و نقاط ضعف را رفع کنيم . (مانند java )

Attributes of a good language :
1.    ساختار زبان ساده و روشن و واضح (کد نويسي راحت باشد)
2.    سنخيت با آن طبيعت مسئله.
3.    orthognaliy (تعامل) قابليت ترکيب دستور العمل ها و استفاده ازساختاريدر ساختارهاي ديگر .
مثال :                         
A=b>3;                if (a=b)

استفاده يکassignment در ساختار if
     :Support for abstraction     .4
  data مجرد که ساخته ميشود مهم نيست در کجا کار ميکند و از محيط خارج مستقل است و محيط خارج هيچ دخل و تصرفي در بر نامه ندارد . به data type  يک زبان هر چه لازم است مي توان اضافه کرد .
مثال : link list يک تايپ data type مجرد است .
     5. Ease of program verificatin   ( تشخيص صحت برنامه ) :
     6. programming enviroment : ( محيط مجتمع توسعه IDE  که محيط هاي user friendly        هستند )
    7. portability of programs : ( قابليت حمل )
از يک دستگاه به دستگاه ديگر کار کند مانند زبان java .  
8. cost of use  : ( هزينه اجرا ، هزينه ترجمه ، هزينه توليد ، هزينه نگهداري )
cost of program execution : برنامه سريع اجرا شود و کد بهينه وقت زيادي براي اجرا از cpu  نگيرد .
cost of program translation:مدت زماني که compile  کد توليد مي کند زمان کمي باشد .
مثال : pascal سريع تر اجرا مي شود و کند تر compile مي شود زيرا پاسکال بهينه سازي کد انجام مي دهد ، زمان بيشتري مي برد ولي c  بر عکس .
cost of program creation , testing and use  : برنامه نويس سريعتر تويط زبان ، برنامه را توليد کند و تعداد برنامه نويس کمتري لازم باشد .
cost of program maintenance  : زباني که توسعه و خوانايي بالاتري داشته باشد .
مثال : pascal  هزينه نگهداري کمتري دارد چون ، چند ماه بعد قابل فهم تر است .
زبان خوب براي دانشجو زباني است که هزينه compile  پايين باشد .
    بستگي به معيارهاي زبان برنامه نويسي مناسب مشخص مي شود .
Language paradiagms :
Imperative languages  :
 زبانهايي مانند : PLI  ، Pascal  ، c ، fortran
 زبانهايي که الگو ريتم ها را در غالب function  ،  procedure  مي نويسيم و هر procedure  يک شرح وظيفه اي دارد که برنامه نويس کد آنرا مي نويسد و مجموعه دستور العمل ها ، state  ماشين ( موقعيت cpu   و حافظه ) را تغببر مي دهد .
بعد از انجام هر دستور العمل نتيجه را در جايي بريزيم و ببينيم . ( procedural  languages  )
Applicative languages :
 زبانهايي مانند ML ،  Lisp  
اساس کار  function است و زبان با کار کردن اين  function به نتيجه کار مي رسد.

 object- oriented programming :
محور اصلي اين زبان شي ها هستند و با استفاده از اين زبان مي توان data type  پيچيده را از ترکيب data type  هاي جديدي بدست آورد .(link list  : مجموعه اي از data type هاي ساده بدست آمده )
  : Rule – based languages              (شاخه اي از زبان توصيفي )
         ساختار اين  rule  ها دو بخش است :
1.    action
2.    validtion
 

 languages evtiarative :
زبانهايي هستند که دانش (rule  ، fact ) داخل آن توصيف مي شود و از آنها براي پاسخگويي به يک سري پرسشها استفاده مي شود .
زبانهايي که دانش در خطوط برنامه مستقر است .
زبان prolog  اجازه داده مي شود که دانش در قالب به صورت facts  ، rules  معرفي شود .
جلسه دوم :                                                                      
Enviroment  : محيطي که تحت آن برنامه نويسي انجام مي شود و بر طراحي و پياده سازي زبان تأثير گذار است .
در محيط dos  ،مي بينيم که زبان بر نامه نويسي هم تأثير پذير است به طور مثال در محيط dos ، mouse programming سخت است .
درc  و turbo pascal  مشکل است با mouse  کار کنيم بايد  driver  موس را داشته باشيم و بعدا با intrupt  ها ، mouse  را کنترل کنيم . چون محيط اجازه کار با موس را راحت نمي دهد ، برنامه نويس بايد با  lintrupt اين کار را پياده کند . ولي همين c و pascal  در ويندوز به علت وجود توابع و امکانات os  اجازه کار با موس به راحتي امکان پذير مي سازد.
اگر پاسکال در محيط ويندوز اجرا شود ( زبان Delphi) کار راحتتر است و با mouse  مي توان کار کرد .
بنابراين محيط در feature هايي که مي تواند در اختيار قرار دهد تاثير گذار است ، مثلا در سيستمهاي قديمي که main frame بودند  batch proccessing  داشتند .
batch proccessing:
وقتي برنامه اي را براي اجرا مي فرستيم در صفي قرار مي گيرد تا نوبت به آن برسد . در آن وقت چند برنامه در صف قرار مي گيرند و ميتوانند با هم کار کنند . د ر آن وقت شروع به کار مي کنند ، از زمانيکه در صف قرار مي کيرند تا زمانيکه اجرا شود.userهيچ دخل و تصرفي نمي تواند به آن داشته باشد . برنامه براي اجرا فرستاده مي شود و ديگر منتظر نمي ايستد که کاربر data اي را وارد کند ( توسط کي برد ) يا مثلا اطلاعاتي را روي صفحه ببينيم . بنا براين حالت interaction بين user  و برنامه وجود ندارد . چون محيط اينطور است زبانهايي که تحت اين محيط طراحي و پياده سازي مي شوند ، featureهايي مثل demo کارهاي mouse  و کارهايي که حالت interaction  بين user  و برنامه باشد ديده نمي شود . ( ارتباط بر قرار کردن و رد و بدل کردن اطلاعات : interaction  ) . ولي در عوض بدليل اينکه کار با دستگاههاي جانبي مثل ديسکها و tape  ها و کارتخوان و ... بيشر نياز است ، featureهايي که بتواند با آنها کار کند بيشتر شده است .( مثل cobol  در Dosvs)  .
o    يعني محيط بسيار در طراحي زبان و feature هايي که آن زبان مي تواند در اختيار کاربر بگذارد موثر است .
در بعضي سيستمها ممکن است feature هايي لازم باشد که محيط نمي دهد ، زبان برنامه سازي بايد آنرا شبيه سازي software simulation  کند .
براي طراحي و پياده سازي زبان اولين کاري که بايد بکنيم اين است که چون مي دانيم محيط روي زبان موثر است ، محيطي را که با اين زبان قرار است کامپايل شود روي آن و يا محيطي که اين زبان بايد روي آن اجرا شود شناسايي کنيم .
پس شناسايي اينکه روي چه دستگاهي عمليات کامپايل انجام شود و برنامه روي چه دستگاهي اجرا مي شود اهميت دارد..معمولا روي همان دستگاه که برنامه کامپايل مي شود روي همان اجرا مي شود .
 پس بايد تا حدودي معماري کار را بشناسيم که چه اتفاقاتي مي افتد داخلي ترين لايه Actual Computer است که همانن سخت افزار است و به تنهايي قابل استفاده نيست و براي قابل استفاده شدن به لايه هاي نرم افزاري روي آن نياز است .
شکل Virtual Computer:
يک لايه نازک نرم افزاري به اسم Bios که روي لايه Actual comp. قرار ميگيرد .  يک سري سرويسهاي اوليه مربوط به ورودي و خروجي در آن قرار گرفته .


اين نما سطوح Virtuality
 را نمايش ميدهد.



وقتي کامپيوتر را روشن مي کنيم قبل از اينکه سيستم عامل بالا بيايد Keyboard و Ram   گراقيک روشن ميشوند و hard چشمک مي زند ، اين سرويسها مربوط به bios است.
يک لايه ديگر روي bios  قرار ميگيرد به نام os . اين لايه يک سري امکانات بيشتر با خودش ميآورد و از لايه زيرين (bios) يک سري امکانات را مي گيرد و به لايه بالايي ميدهد و خودش هم يکسري امکانات اضافه ميکند .همين os مجموعه اي از managerها است ، بخاطر اينکه resurceها در اين لايه محدود است .
Cpu   وI/O device ها همگي resurce هستند ، منابعي که برنامه ها از آن استفاده ميکنند براي اينکه هرج و مرج رخ ندهد ، نياز به برنامه اي است که کنترل کند و مديريت resurce ها را انجام دهد .بنابراين لازم است os يک سري سرويسها از لايه هاي پايين گرفته و به لايه بالايي دهد و يک سري هم خودش( برنامه اي مانند storage management  ) را اضافه کند .
لايه بالاتر  لايه programming language  يا زبانهاي برنامه سازي است . اين لايه اي است که ما روي آن بحث مي کنيم . اين لايه سرويسهاي لايه زيرين را گرفته و ضمن اينکه اگر نقاط ضعفي در لايه هاي پايينتر وجود دارد سعي مي کند آن نقاط ضعف را برطرف نمايد و سرويسها را به لايه هاي بالاتر منتقل مي کند .
لايه بالاتر ، لايه application program است که شامل برنامه هايي که مي نويسيم ،است .مجموعه اي از لايه هاي زيرين ممکن است که مستقيما سرويسها را از لايه پايينتر نگيرد بلکه از لايه هاي زيرين بگيرد ( چند لايه پايينتر) .مثل اينکه در لايه application program مستقيما با يک پورت کار کند . يعني مستقيما با يک پورت کار کند .يعني مستقيما با لايه actual computer در ارتباط است. يا در يک application program از intrupt bios يا intropt os استفاده کنيم و يا از زباني استفاده کنيم که خودش مي داند چه کار بکند مثل توابع کتابخانه اي  sin،sqrt ، که اينجا از لايه programming lang. استفاده کرديم.
Actual comp. اي که اطرافش لايه هاي نرم افزاري است که سرويس دهي را بيشتر ميکند تشکيل دهنده virtual comp. است .زمانيکه بخواهيم زباني را طراحي کنيم بايد بدانيم روي چه virtual comp.  اي طراحي را انجام ميدهيم .فقط actual comp.  به تنهايي کفايت نميکند"،بايد بدانيم تحت چه سيستم عاملي است .اگر c++ را تحت dos روي ibm compatible پياده سازي کنيم ، با زمانيکه تحت ويندوز پياده سازي ميکنيم متفاوت است.
محيط روي feature هاي زبان تاثير ميگذارد. لايه هاي نرم افزاري واقعي نيستند .به همين دليل به آن virtual comp.    ميگوييم و به لايه هاي آن virtuality levels مي گوييم .
بنابراين در زمان طراحي و پياده سازي لازم است بدانيم virtual comp. مورد نظر چيست .
ممکن است سطوح هاي computer  virtual مستقيما feature را در اختيار زبان برنامه نويسي قرار ندهد . در آن وقت زبان برنامه نويسي سرويس ها را بايد soft ware simulation  کند .
مثال :در کامپوتر هاي قديمي 80286 ، 80386 ، sx 80486 ،8086 ،actual computer  نمي توانست پردازشهاي floating point را انجام دهد و زبانهايي که طراحي ميشدند نمي توانستند محاسبات اعشاري را انجام دهند پس از software simulation استفاده مي شد .
مثلا : اگر با fortran  برنامه اي که floating point processing  داشت نوشتيم بنابر اين به assemble code  اش نگاه مي کرديم از يک طرف function call استفاده شده بود که اين function نرم افزاري ، اين کار را انجام مي دهد . (software simulation  ) .
بسته به computer  virtual اي که زبان برنامه نويسي روي آن قرار گرفته سرويس داده مي شود و هر چه قدر قوي باشد امکانات را از سطوح زيرين مي گيرد و در اختيار سطوح بالاتر مي گذارد و امکاناتي را که سطوح زيرين نمي دهد را program language  همه سرويس ها را software simulation  مي کند .
اگر بخواهيم زباني را طراحي و پياده سازي کنيم بايد بدانيم لايه هاي زيرين آن چه feature  هايي دارند و ما از کداميک از آنها مي توانيم استفاده کنيم و نياز لايه بالايي را از feature هاي لايه پايين و بعلاوه software simulation    برطرف مي کنيم .

Program language  :
زبانهاي برنامه سازي داراي سطوح مختلف دارند :
زبانهاي سطح پايين مثل machin code ، اسمبلي ، macro
زبانهاي سطح بالا مثل pascal  ، basic  ، PLI ، cobol  
زبانهاي سطح مياني مثل C
زبانهاي سطح خيلي بالا مثل SQL ، mathlab
1.    translator  (مترجم )
2.    interpreter (مفسر )
translater : با استفاده از يک سري روش ها و زبان ماشين پردازشي را روي زبان مبدأ با ساختار هايي که دارد به زبان مقصد با ساختارهاي جديد انجام شود را translater مي گويند . (زبان مقصد : زبان ماشين )
مترجم ها چند گروهند :
1.    compiler  : زبانهاي سطح بالا را تبديل به زبان ماشين مي کنند .
2.    assembler  : زبانهاي سطح پايين را تبديل به زبان ماشين مي کنند .
فرق اسمبلر و کامپايلر : در اسمبلر تناظر يک به يک بين دستور العمل ها و machine code  است ، يعني اگر بخواهيم فعاليتي انجام دهيم assembly code  است که ميشود چندين خط در خط يک دستور العمل يک ماشين کد نوشت و تناظر يک به چند است .
نحوه عمل translate :






در اسمبلر تناظر يک به يک بين target  ، source  است يعني يک دستور العمل source    مستقيما يک دستور العمل target  مي شود . (machine code       دستورالعمل اسمبلي)
در صورتيکه در کامپايلر ها فعاليتها نسبت به اسمبلر خيلي بيشتر است . (تناظر يک به چند است .) يک دستررالعمل در source به چندين دستور العمل در target  که اسمبلي يا ماشين کد است تبديل مي شود .
کار کامپايلر ترجمه است يعني يک ساختار ديگر تبديل مي شود ، بدون در نظر گرفتن اينکه منطق پشت قضيه چيست ؟! يک ساختار ميگيرد ساختار ديگر مي دهد .
لازم نيست که به اسمبلي تبديل شود و از اسمبلي به ماشين کد يک شکل اند. بوجود آمدن اسمبلي از آنجايي است که ماشين کد بوده در ابتداکه  صفر و يک بود ، براي هر دستور کد صفر و يک بود،
ولي حالا به جاي صفر و يک آن را نمادين کردند . هر چه به زبان ماشين نزديک مي شويم قدرت برنامه نويسي بالا مي رود و سهولت پايين مي آيد .
-    خيلي جاها به خاطر اينکه لايه اي زبان قرار مي دهد،نمي توان از تمام feature  ها استفاده كرد،محيور هستيم مستقيما سراغ کد برويم . مثلا در داخل کد C  از اسمبلي کد به صورت  embed  استفاده کنيم يا 10 خط پاسکال بنويسيم که سه خط آن اسمبلي باشد .
در صفحه 55 روي کامپايلر ها يعني زبانهايي مثل C و پاسکال و نمودارش کشيده شده که به چه شکل عمل مي شود . نحوه عملکردش مشخص است . يک source کدي داريم و به کامپا يلر مي دهيم . کامپا يلر يک فاز کامپايل روي آن مي گذارند اين فاز کامپايل باعث مي شود يک کد target اي براي ما توليد شود که به آن object code  مي گوييم ، که همان زبان ماشين است . پس اينجا source code  را مي گيرد و کامپا يلر translate مي کند .
زبان source را مي گيرد ( پاسکال و C و PLI  و بيسيک و ... ) و تبديل به يک فاز خروجي با زبان ماشين کد که اين object  از روي source code   ساخته شده ، حالا اگر source code  از يک سري توابعي استفاده کرده باشد که source code   آنرا ما ننوشتيم مثل Sqrt ، Sin ، Cout  ،  اينها توابعي است که از  قبل تعريف شده و ما در برنامه از آن استفاده کرده ايم .

جلسه سوم :
Binding  : (انقياد ، قيد گذاري )
هر متغيري يک سري attribute هايي دارد از جمله :
اسم متغير ،vocation، data type ، data type  sizeو مقدار مجاز
هر زمان که به attribute هاي يک موجوديت مقدار برديم و به آن مقدار محدودش کنيم عمل binding انجام شده است .


مثال :  a=10 ;    
atribiute ،  value يک موجوديت را به مقدار 10 ,   set ميکنيم و اين binding،  value است .(در زمان run time)
مثال:    int k ;
 اين تعريف نشان دهنده موجوديتي به نام  kاست . پس binding انجام شده و data type اين متغير  integer است .(در زمان  compile  )
Classes of binding time  :
Binding ها ممکن است در زمانهاي مختلف انجام شوند .
1.    binding در زمان تعريف و طراحي يک زبان :language definition time)   )
به طور مثال : تعريف مي کنند زباني را که support را object onented  کند و class را داشته باشد data type از نوع  integer و يا حلقه هاي تکرار و امکانات ديگري که مي خواهيم داشته باشد و از اين طريق محدوديت تعريف زبان را مشخص مي کند و نتيجه مي گيريم binding  يک زبان de fenition است .
2.    binding در زمان  implementation ( language implementation time )
به طور مثال : integer  را مطرح مي کنيم که مي تواند 16 بيتي ، 32 بيتي يا 64 بيتي ، طراحي pointer  ، refrence  بر اساس pointer ، پياده سازي آرايه دو بعدي بر اساس آرايه اي از آرايه ها که اين ترتيب پياده سازي را مشخص و محدود مي کنيم .
اين دومورد تازمانيکه زبان برنامه سازي طراحي شود و پس از توليد زبان دو مرحله binding  ديگري وجود دارد .
3.    (compile time ) transaction time  :
در مرحله compile ، binding انجام مي شود .
به طور مثال : ; k      int
که يک declaration  است که در زمان compile انجام مي شود .
4.    (run time  )  Execution time  :
به طور مثال : مقدار دهي يک متغير ( چون در زمان run time است که مقدار دهي انجام مي شود .)
سئوال:Binding تعريف روبرو چيست؟
static     int      a=10 ;



Location  اين متغير در زمان run time مشخص مي شود که کدام قسمت حافظه را اشغال مي کند .چون در زمان run time کد برنامه توسط loader از ديسک برداشته مي شود و در حافظه  گذاشته مي شود .  ( location هم يکي از attribute هاي يک  data object است .)
توجه: به اين گونه مقدار دهي initialize مي گويند .
static variable ها در انتهاي کد يا بين دو کد قرار مي گيرند بنابراين جايش به صورت logic  اي مشخص است .
فرض کنيد پس از اين تعريف a = 5  قرار دهيم ، برايش کد تعريف نشده است ولي براي دستور بالا کد تعريف شده است .
پس تعريف       static   int  a=10; ، 10 در يک location قرار مي گيرد و زمانيکه به خط ; a = 5 مي رسد 10 تبديل به 5 مي شود و به اين ترتيب ; a = 5  در زمان  run time  است.
فرض کنيد تعريف بالا را به صورت   int  a=10;  بنويسيم در اين صورت اين خط در زمان run time  اجرا مي شود ( توسط f7 ، f8 ) زيرا متغير هايي که به صورت static تعريف نمي شوند ، معلوم نيست کجاي حافظه قرار مي گيرد وتا زمانيکه حافظه اي را نگرفته اند مقدار دهي اوليه هم نمي شوند و در زمان run time  مقداري حافظه گرفته مي شود و a به آن تخصيص داده مي شود و مقدار دهي مي شود مثلا با مقدار 10. (فرق بين  variable   static ، dynamic variable )
زبانهايي که بيشتر عمليات binding  شان را در مرحله compile انجام مي دهند زبانهاي early binding  مي گويند مانند : " compiler "
زبانهايي که بيشتر عمليات binding شان را در مرحله اجرا مي دهند زبانهاي  binding late مي گويند
مانند :  interpreter
- البته بعضي از فعاليتها در مرحله compile و بعضي از فعاليتها در مرحله run time انجام ميشود .
Run time                 mov   ax , 2
Compile                   static    int    a=2



ترجمه زبان :
تعريف تر جمه :
يک ساختار را به عنوان ورودي گرفته و به ساختار ديگر با vocab  ديگر تبديل شود.
براي تشخيص در ستي مسئله syntax عنوان مي شود .
تعريف syntax: چيدمان عناصر اجرا تشکيل دهنده يک زبان در کنار هم که ساختار درست و تعريف شده اي داشته باشد . ( ساختار شناخته شده در زبان مورد نظر داشته باشد .)
تعريف semantic : از لحاظ معنايي ساختار جمله بررسي مي شود .
مثال: در زبان فارسي ساختار جمله که تشکيل شده از اعضاي زير (فعل، فاعل، مفعول)
علي حسن را زد.                 syntax√
                 X    Semantic  

از لحاظ  Syntax عبارت حسن علي را رفت ، درست است  ولي از لحاظ Semantic خير.
مثال :
A+(B*C)
(A+B)*C

معيارهايي براي خوب بودن syntax :
1. raedability:  قابليت خواندن خوانايي
Syntax اين خوب است که ساختارهاي پيچيده نداشته باشد و زماني که کدي به آن زبان syntax نوشته مي شود بعدا به راحتي آنرا بتوان خواند .
2) writeability : توانايي نوشتاري
توانايي نوشتاري بالا باشد و برنامه نويس به راحتي و بدون دردسر بتواند کد نويسي کند .
writeability و readability با هم رابطه متضادي دارند .
مثلا پاسکال يک زبان readability است.
C "          "          writeability است .
 يعني کدي را مي توان با C نوشت و يک برنامه نويس حرفه اي هم بتواند اين کد را write کند حسن هاي writeability :
Redundant را کم مي کند ،يعني اگر قابليت نوشتاري بالا باشد مي توان با ترکيب ساختارها ، ساختار جديدي داشته باشيم که نيازها را برطرف مي کند .
مثال: در c داخل for مي توان همه کار کرد ولي در پاسکال به خاطر محدود بودن syntax مجبور هستيم براي يک کار تعداد خطوط بيشتري بنويسيم .
redundant code  يعني کدهاي تکراريو وقتي که writabilty بالا باشد ، کدهاي تکراري کم مي شود .
راحتي verifying (تعيين صحت برنامه): يعني هر چه برنامه readable باشد ،راحتي verifying وجود دارد . کدي داريم که اشکال زدايي مي کنيم و با وجود readability اشکال زدايي راحتر مي شود .ولي در صورتيکه readable و  writeable با هم باندازه اي بايد داشته باشيم که همه writeableباشند و تعداد خطوط کمتر باشد و هم readableباشد که پيچيدگي خيلي زياد نداشته باشد .پسverifying هم با readability  و هم با writeability در ارتباط است .
ease of translation : راحتي ترجمه
کامپايلر راحتر بتواند زبان syntax را ترجمه کند و اين زماني است که ساختار ساده باشد  و تعداد ساختار کمي داشته باشد.
-    کامپايلر پاسکال سريعتر از  c است .
مثال : در c  يک اپراتوري بشکل روبرو داريم (conditional  operator)   که اگر در چند خط استفاده شود ، ساختار پيچيده اي را بوجود مي آورد و براي کامپايل زمان زيادي را ميبرد براي تشخيص فعاليتي که انجام دهد و اطلاعات را نگهدارد و تشخيص دهد که کدام براي بخش if و کدام براي بخش  else است .
Syntax  زبان cobol  نزديک به زبان انسان است و کار کامپايلر سخت مي شود زيرا هرچه زبان نزديک به زبان ماشين باشد کار کامپايلر راحتر است .مانند زبان اسمبلي .زيرا به ازاي هر دستور اسمبلي يک دستور machine code داريم .
فقدان ابهام (lake of ombiguity):
Syntaxاي خوب است که ابهام نداشته باشد .

مثال : در زبان  fortran :                
                  مي توان 2 تعبير از عبارت داشت  (i,j) A
-    ماتريس A با انديس  i  و j
-    function ،A با پارامترi  و  j
که در c و پاسکال   اين مسئله حل شده که اگر ماتريس با شد از [ ] و اگر  function باشد از  ( ) استفاده مي شود .
 عناصر تشکيل دهنده يک syntax :
chracter set :يعني در  syntax چه کاراکترها و کدهايي valid هستند .
مثال: $ در c کاربرد ندارد ولي در pl1 بعنوان جزئي از اسم identifier استفاده مي شود .
identifiers : يعني شناسه ها چه هستند
identifier :
اسامي متغيرها
اسامي lable ها
اسامي function
اسامي constant
 و مشخص باشد که ساختار ID چه باشد و با چه شروع مي شود ،اجزاء Syntax را تشکيل مي دهد.
operator symbols : نمادها
مثال: در زباني equal را با =  set کند.
در زباني equal را با  :eg: set    کند مانند fortran
keywords and reservedwords :
keywords کلماتي هستند که توسط کامپايلر شناسايي شده هستند ولي بعنئان identifier هم مي توان استفاده کرد .
مثال :    key word       if,for              در زبان pl1
 در زبان c    ، keyword  نداريم و همه reserved word هستند.
Reservedwords : کلمات کليدي هستند که کامپايلر مي تواند بشناسدو فقط و فقط از آنها استفاده کند و ما نمي توانيم به آن نام identifier داشته باشيم.
noise words : کلماتي هستند که در دستورالعملها استفاده مي شوند که خوانايي بالا مي رود و عبارت شکيلتر مي شود .
go lable           در زبان cobol
Go to lable
 وجود يا عدم وجود to در code تاثير ندارد ولي شکيلتر ميشود و به زبان انسان نزديکتر است .
comments : توضيحات داخل برنامه که توسط برنامه نويس براي خوانايي بيشتر کد نوشته ميشود و کامپايلر روي توضيحات هيچ action ندارد و از ديد کامپايلر کاملا by pass است.
blanks(space) : براي خوانايي syntax به شرطي که در جاي مناسب استفاده شود .
مثال : بين ++ ،  blank  استفاده نکنيد.
8.    delimiters and brackets : که  tokenها (عناصر اتمي syntax مانند  if,then,for, که تجزيه ناپذيرند)را از هم جدا مي کنند .
                                A  (  j  ,  I  )
                                
                                delimiter
9.    free and fixed field format: syntax هايي هستند که در آنها دستورالعمل ها از يک ستون خاص شروع و تا يک ستون خاص ديگر تمام شود .
•    در يک خط نميتوان بيش از يک دستورالعمل بکار برد .
•    يک دستورالعمل را نميتوان در چند خط نوشت .
مانند fortran و اسمبلي که يکنوع fixed fit format هستند .
 c  و پاسکال free fix format هستند يعني هر دستورالعمل در چند خط و در يک خط بيش از يک دستورالعمل.
10.    expression & statements : دستورالعملي که state ماشين را تغيير مي دهد و کاري انجام ميدهد ولي مقداري را برنمي گرداند را statement گويند .مانند procedure
مثال :  if statement ،  for statement  ،  assignment statement
دستورالعملي که مقدار برمي گرداند را expression مي گويند . مانند  function
 مثال : a مقدار بر نمي گرداند    assignment statement ( در پاسکال)       a=b;
                    Assignment expression ( در c )                  a=b;
 a مقدار برميگرداند                   a=b=c=2;

Overall program subprogram structure (ديد کلي روي ساختار برنامه و زير برنامه )

گروهبندي برنامه ها و زيربرنامه ها از لحاظ syntax :
1. separate subprogram definition : زير برنامه ها بصورت مجزا از هم تعريف مي شوند مانند c و  fortran.
Syntax اجازه بدهد که برنامه ها را در داخل فايلهاي مختلف بريزيم و جدا از هم کامپايل کنيم و سپس با هم ادغام کنيم(link) .
حسن اين روش اين است که اگر برنامه اي يک خطش دست بخورد فقط اين فايل  recompile مي شود و بقيه نيازي نيست دوباره کامپايل شود .
2. separate data definition : بخش تعريف  data جدا از بخش برنامه باشد .

زبانهايي که abstract data type را support مي کنند ، اجازه ميدهند که برنامه نويس  data type تعريف کند .مانند  c++ ،  java ،که data type  ها در فايلهاي جداگانه اي نوشته شوند .و اين برنامه بتواند از اينها استفاده کند .
مثال: برنامه نويس يک  data type ،  link list و يا  stack مي نويسد که برنامه ديگر ميتواند آن استفاده کند که اين مفهوم . separate data definition را ميرساند.
3.  nested subprogram definition : زير برنامه ها بصورت تودرتو داخل هم تعريف مي شوند مانند پاسکال.

    : يعني ميتوان متغير تعريف کرد .
خود تعريف شدن زير برنامه ها در داخل هم ، مسئله scope
(ميدان ديد )را بوجود مي آورد و زير برنامه اي که در داخل
 زير برنامه ديگر تعريف شده است  از بيرون قابل رويت و
Call کردن نيست .(اين مسئله non-local ،  local وglobal
را بوجود مي آورد)
- c  کاملا separate subprogram indef. است و زير برنامه ها کاملا مجزا از هم هستند .
4.  separate interfact definitions :
فايل  unit ها ساختار دو بخشي دارند:
•    Interface
•    Implementation
 کدي را مينويسيم بطور مثال 100 عدد  function در بخش  implementation نوشته مي شود و بخواهيم از اين 100 عدد ، 5 عدد آنرا همه ببينند .5 عدد از prototype هاي function هايي را که مي خواهيم همه ببينند در  interface مي گذاريم . interface مانند روابط عمومي سازمان مي ماند (رابط با محيط خارجي)







انجام پایان نامه

انجام پایان نامه کامپیوتر، انجام پایان نامه ارشد کامپیوتر، انجام پایان نامه، پایان نامه

برای دیدن ادامه مطلب از لینک زیر استفاده نمایید

  دانلود مقاله | انجام پایان نامه

سفارش پایان نامه