سلام!
ميخوام اطلاعاتی را که در طی این مدت بدست اوردم و به اشتراك بذارم.
به شرطي كه استقبال بشه. ميتونيد از tnx ويا نظر سنجي استفاده كنيد
اگه كسي نظري يا پيشنهادي هم داره بگه.
سلام!
ميخوام اطلاعاتی را که در طی این مدت بدست اوردم و به اشتراك بذارم.
به شرطي كه استقبال بشه. ميتونيد از tnx ويا نظر سنجي استفاده كنيد
اگه كسي نظري يا پيشنهادي هم داره بگه.
Last edited by p d; 16-06-2011 at 16:47.
مطالب از خودمه . استفاده از مطالب با ذكر منبع مجاز ميباشد.
lمقدمه :
قبل از بوجود اومدن سيستم عامل هاو پيش رفت زبانهاي برنامه نويسي سيستم هاي simple batch system بودن كه از طريق cr و cpu و ram و طprinter با هم كار ميكردن . اطلاعات از كارت ريدر ها وارد ميشد و خروجي چاپ ميشد.
كارت ريدر
كارت منگنه/سوراخ يا هرچي(الان ترجمه ديگه اي به ذهنم نميرسه) همون punched card
در اينجا 1 برنامه نويس وجود داشت كه با consol كار ميكرد و در واقع كار سيستم عامل ها را انجام ميداد. اين oprator كارهايي كه شيبه هم بودن 1job تهيه ميكرد و به سيستم ميداد اونم بعد از گذشت زمان طولاني (گاهي چند روز) جواب ميداد.
با گذشت زمان، پيش رفت سريعي در تكنولوژي بوجود اومد و سخت افزارها و نرم افزار هاي جديد تري بوجود اومدن و زبان برنامه نويسي شروع به تكامل كردن.
اطلاعات بيشتر
خب اين گذشته سيستم هاي پيشرفته امروزي بوود.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اين و گفتم كه بدونيد از اول اينطوري نبودش كه همه كارا نرم افزاري باشه. در واقع جد زبان هاي برنامه نويسي همين كارت هاي پانچ هستن. بهد از اون زبان هاي برنامه سطح پايين و مياني و بالا و در حال حاضر شي گرايي و تعريفات جديدي بوجود اومده كه مار برنامه نويسي و اسان تر ميكنه و نياز به دونستن اطلاعات سطح پايين نداره. اين كار شايد باعث راحتر شدن برنامه نويسي بشه ولي 1 مشكلي داره، اونم زياد شدن حجم برنامه هاس.
وقتي با asm برنامه مينويسيد شايد برنامه شمت در حد kb باشه ولي 1 پروژه يc# و بدون اضافه كردن دستور به خودي خود چندن برابر حجم دارن.
براي شروع و داشتن 1 ديد كلي اينا رو گفتم . اينا مقدمه بود.
براي اخرين مطلب 1 عكس كه سير و تولد زبان هاي برنامه نويسي و نشون ميده ميذارم.
![]()
خب ......
حالا با شخصيت اقاي دنيس ريچي اشنا ميشيم.
ايشون كسي بود كه زبان c را توسعه داد.
همون طور كه در تصوير اخر پست قبلي مشاهده كرديد:
cpl->bcpl->b->c
اين درخت زبان c بوده و هست. شايد جالب باشه كه بدونيد زبان a هم داريم.a-> b-> c
هربرت شليد اينگونه مينويسد
زبان c دنياي كامپوتر را متحول كرد.
اين زبان وقتي بوجود اومد (چون 1 زبان general purpose است ، بسياري از نياز هاي اون دوره رو ارضا ميكرد و به خاطر همين حتي تا الان ازش براي برنامه ها سييستمي و... استفاده ميشه. اين زبان ويژگي هاي بسياري داره كه از بهترينش شايد به انعطاف پذيريش (هم سطح پاييين هم مياني) اشاره كرد. با اين زبان هم ميشه با سخت افزار (تا حدي البته) كار كرد هم كارهاي سطح بالا كرد.بنظرم، سرعت و انعطاف پذيري و كم حجم بودن برنامه ها براي برنامه نويسان حرفه اي كافي باشه تا ب سراغ اين زبان بيايند.
البته همون طور كه ميدونيد هيچيز مطلق نيست و همه چي مشكلات خاص خودش و داره.
-------------------
سي پلاس پلاس:
هربرت شليد اينگونه مينويسد(البته ترجمه !)
++c حاصل سال ها تجربه در زبان هاي برنامه نويسي است. با اين وجود، دقيقا زبان هاي جديد و بهتري در اينده ارايه خواهد شد ولي ++c اوج هنر زبان هاي برنامه نويسي در حال حاضر است.
Bjarne Stroustrupايشون پديد اورنده زبان c++ هستن.
Born December 30, 1950 (age 60)
Aarhus, Denmark
Occupation College of Engineering Chair in Computer Science Professor, Texas A&M University
خب 1سوال :
اگه زبان c واقعا قدرت مند هست چرا زبان ++C بوجود امده است ؟
جواب ساده است.
انسان هاموجوداتي راحت طلب هستن . وقتي ميتوان كاري را از راهي اسانتر انجام داد چرا نبايد اينكار ار كرد ؟!
بله ++c ويژگي جديدي را پشتيباني ميكرد كه C اينكار را نميكرد و اين ويژگي سبب راحتتر شدن برنامه نويسي ميشود و اين َشي گراييست. شي گرايي در واقع بوجود امد تا برنامه هاي بزرگ تر را راحتر مديريت كرد و اكنون به جايي رسيديم كه اشياي گرافيكي وجود دارد كه كار برنامه نويسي فقط انتخاب كردن و كنار هم چيدن انها بدون دانستن اين كه در واقع اين شي چطوري كار ميكند . اينگونه انتظار ميرود كه بجايي برسسيم كه فقط برنامه اي كه ميخواهيم بنويسيم را انتخاب كنيم تا برايمان نوشته شود.
اطلاعات بيشتر :
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Last edited by p d; 22-06-2011 at 12:45.
من به 1 چيزي اتقاد دارم اونم اينه كه كسي نميتونه به كسي برنامه نويسي ياد بده.
برنامه نويسي حفظ كردن 1سري دستور و تكرار چيزايي كه حفظ قبلا نوشني نيست. برنامه نويسي يعني تجزيه و تحليل 1 سيستم و پياده سازي 1 الگوريتم. البته + كد زدن. شايد باور نكنيد كه كد زدن ساده ترين بخش كار 1 برنامه نويس هست و تجزيه تحليل سخترين قسمت كار.
برنامه نويسي بايد ديد تحليلي نسبت به سيستم داشته باشه و سيستم و به 1سري الگوريتم هاي تكراري و ساده تجزيه كنه و سپس كد زدن شروع ميشه.
-----
براي نوشتن برنامه ها ، نياز به محيطي داريم كه برنامه هايي كخ مينويسيم و كامپايل كنه و به زبان سطح پايين تبديل كنه تا براي cpu قابل فهم باشه .
شما ميتونيد از لينك زير دانلودش كنيد:
-----کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
هر چيزي ساختاري داره . برنامه در ++C از 1 سري توابع تشكيل ميشه. يعني شما 1 سري قطعه كد بايد ايجاد كنيد و با كنار هم قرار دادن اينا برنامه رو به وجود بياريد. و اينم در نظر بگيريد كه برنامه جسم فيزيكي نيست كه بخواد ساخته بشه. برنامه جزيي منطقي هست كه بسط داده ميشه.
بدنه ي برنامه ما تابع main هست. به صورت زير تعريف ميشه :
برنامه هاي ما ازين تابع شروع ميشن ؛ بطور پيش فرض.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب بياين بدنه ي برنامه خودمون و كامل كنيم.
خب اينا يعني چي؟کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در حال حاضر فقط در همين حد بدونيم كافي ؛ اينها بدنه ي برنامه ي مارو تشكيل ميدهند.
هرتابعي 1 يا چند ورودي و فقط 1 خروجي داره.
int main يعني خروجي اين تابع از نوع int هست. int براي متغييرهاي عددي استفاده ميشه. پس اين يعني اين تابع 1 عدد برميگرداند.
سوال : اين تابع چه عددي و چرا و به كي/چي برميگرداند؟
جواب : تابع main اين عدد را سيستم عامل برميگرداند. اين عدد 0 است و با دستور return 0 مشخص شده.
و برگشت داده ميشود هنگامي كه برنامه به اين دستور برسد و رسيدن به اين دستور يعني اجراي كامل برنامه. پس برنامه ما مشكلي نداشته كه كامل اجرا شده . پس ما اين مقدار را به سيستم عامل برميگردانيم تا مشخص شود برنامه با موفقيت اجرا شده.
---
خب شما اولين برنامه خودتون و نوشتيد. برنامه اي كه هيچ كاري (البته به ظاهر ) انجام نداده.
قبل از دامه دادن به كد نويسي بايد 2تا مفهوم و بررسي كنيم.
الگوريتم و فلوچارت
متغيير
---
الگوريتم نويسي قسمت بزرگ كار شما رو تشكيل ميده،(شايد در ابتدا كد نويسي به نظر مشكل بياد ولي بعد از مدتي اين وضع تغيير ميكنه).
پس بهتر با الگوريتم و فلوچارت بيشتر اشنا بشيم.
كامپيوتر رو 1موجود خنگ ولي سريع در نظر بگيريد بطوري كه براي انجام كاري بايد تمام جزييات و براش شرح دهيم. اين يعني همون الگوريتم نوشتن.
متغيير : 1 ظرف در نظر بگيريد كه در حافظه ايجاد ميشه؛ داراي صفاتي هم چون نوع و اندازه است. مثلا وقتي ميخوايم 1 عدد از كاربر بگيريم بايد 1 متغيير از نوع عددي تعريف كنيم.
خب حالا الگوريتم جمع 2 عدد رو مينويسيم.
متغيير a را از نوع عددي در نظر بگير
متغيير b را از نوع عددي در نظر بگير
(در واقع حالا 2 تا خونه حافظه به نام a و b ايجاد كرديم)
عددي را از كيبرد از كاربر بگير و در داخل a بريز
عددي را از كيبرد از كاربر بگير و در داخل b بريز
a را با b جمع كن
و
حاصل را در a بريز
a را نمايش بده
اين 1 مثال ساده از نوشتن الگوريتم بود. حالا همين مثال رو به زبان كامپيوتر نزديك تر ميكنيم.
چند قرار داد:
حالا براي ايجاد متغيير از نوع عددي عبارت int استفاده ميكنيم.
وقتي خواستيم چيزي را روي مانيتور نمايش بديم از show .
از عبارت هاي جبري استفاده ميكنيم.
وقتي خواستيم از كيبرد عدد بگيريم از get .
حالا بهتر شد. اين قوانين ما بود . براي نوشتن برنامه بايد از قرارداد هاي خود زبان استفاده كنيم.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
قرار داد هاي زبان ++c:
در پايان هر دستور بايد از ';' استفاده كنيد.
وقتي خواستيم از كيبرد عدد بگيريم از <<cin و براي نمايش از >>cout استفاده ميكنيم.
هر برنامه اي براي اجرا از تابع main() شروع ميشود.
+قرار داد هاي قبلي:
اين برنامه ؛ برنامه جمع 2عدد شد. ولي اگه اين و كامپايل كنيد اجرا نميشه. اولين برنامه اجرا شدني و در پست بعدي ميگم انشاالله.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فلوچارت هم 1 سري اشكال گرافيكي هست كه براي درك بهتر الگوريتم بوجود اومده. لزومي نداره كه بلد باشيد و ضرري هم نداره :
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Last edited by p d; 23-06-2011 at 10:12.
خوشبختانه علوم كامپيوتري با سرعتي باور نكردني در حال پيشرفت . كي ميتونست باور كنه كه از اينجا :
به اينجا
برسيم؟ روزي كامپوترهاي غول پيكر كه پر از مدار و سيم بودن و در انحصار ارتش امريكا بودن الان تو خونه همه البته بسيار پيشرفته تر يافت ميشن ! كامپيوتر هاي اوليه برنامه نويسي نميشدند،درواقع نياز به تغيير مدار و سيم كشي و كلي داستان براي هر بار تغيير نياز داشتن.
----------
خب قرار شد اولين برنامه اي كه اجرا ميشه رو در اين تاپيك بياريم.
بهتره با محيط dev اشنا بشيم.(در حد نياز البته)
بعد از باز كردن، طبق شكل زير :
خب اين محيط برنامه نويسي شماست. 1 محيط ساده .
معمولا رسم شده كه اولين برنامه اي كه اجرا ميكنيد خروجي HEllo World رو نمايش بده. خب ما هم به اين رسم احترام ميذاريم.
طبق قوانيين زبان ++C عمل كنيد:
برنامه ,داخل تابع main بنويسيد.
انتهاي هر دستور از ; استفاده كنيد.
براي نمايش هر چيزي بر مانيتور از cout>> استفاده كنيد.
تبصره : براي نمايش متن(رشته) اون و بايد داخل " " قرار بدهيد . مثلا : "hi"
خب ساده شد ديگه . شروع ميكنيم. بدنه ي اصلي تابع:
قرار شده خروجي بر مانيتور نشون بديم پس :کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فعلا اينطوري فكر كنيد كه :کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب گفتيم كه كامپيوتر موجودي خنگ هست. cout براش معني نداره.
براي اينكه براش معني دار بشه از عبارت زير استفاده ميكينم:
پس همه ي قسمت هاي برنامه اي كه نوشتيم ثابت فرض كنيد جز:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پس برنامه ما به شكل زير در مياد :کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب با F9 برنامه رو اجرا كنيد.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حتما ميگيد 1 جاي كار ايراد داره . نه همه چيزي درسته !!!
شما به برنامه گفتيد چاپ كن اين عبارت و؛ بهش نگفتيد منتظر من بمون تا ببينم !
خب براي اينكه شما بتونيد خروجي رو ببنيد ، به برنامه ميگيد بعد از نمايش خروجي منتظر باش تا من بهت 1 ورودي بدم. بعد بسته شو. به اين شكل:
خب اومديم 1 متغيير عددي تعريف كرديم ،و بعد از نمايش خروجي گفتم اين و بگيره . پس منتظر ميمونه.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اجراش كنيدو بايد شكل زير و نمايش بده :
![]()
Last edited by p d; 23-06-2011 at 11:00.
خواستین ما هم یه چیزای کوچیکی بلدیم : )) کمک خواستین بگین ( البته به جز بیوگرافی و تاریخچه زبون : )) )
من از آموزش های این سایت استفاده کردم فوق الاعادست:
thenewboston.com
بعنوان پيش نياز اين و ببنيد:
حالا اونايي كه بكارتون مياد و ازش مثال ميزنيمو توضيح ميديمشون.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
+ براي جمع دو عدد مثال a=1+2=3
++ lمثال a++ و ++a كه كه برابر عبارت a=a+1 .
نكته : فرق ++ پيشوندي با پسوندي.
فرض كنيد كه براي خوندن كدها از چپ به راست حركت ميكنيم(دراينجا) .
a++ اول 1كي به a اضافه ميكنه ولي ++a در اخرين اولويت به a 1كي اضافه ميكنه.
مثال:
فرض a=2 و b=3 حالا جمع زير را حساب كنيد
بعد از اجراي كامل مقادير بصورت زير هستن:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
a=2 و b=4 ولي در اولي حاصل 6 ولي در دومي حاصل 5 است. چون همونطور كه گفتم پسوندي كمترين اولويت رو دارد.
يعني در اخرين مرحله بعد از جمع a+b به b اضافه ميشود.
- براي منها كردن مثل جمع. a-b
*ضرب a*b
/ تقسيم صحيح. 5/2=2
% باقي مانده 5%2=1
== عبارت مقايسه اي . a==b يعني ايا a مساوي b هست .
=! مقايسه اي . a!= b يعني ايا a نابرابر با b هس.
بزرگتر و كوچكتر و بزرگتر مساوي و كوچكتر مساوي بترتيب:
&& اند , || ار. تويه if ها توضيحش ميدم.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Subtracts ها
a+=1 يعني a=a+1
?: اين يعني if...then...else . تويه if توضيحش ميدم.
بقيشون هم به موقش.
1مطلب ديگه اولويت بين ايناست.
اين اولويت ها رو بايد بدونيد تا عبارت هاي محاسباتي طولاني خودتون و درست بنويسيد.
به نظر من باز لزومي نداره چيزي و ياد بگيريد كه بكارتون نمياد.
به كار نمياد چونكه اگه از پرانتز استفاده كنيد بر طبق اولويت كه شما طبق پرانتزها مشخص كرديد اجرا ميشه.
---
حاشيه:
جناب avardeh ، دوست عزيز 1 لطفي بكنيد ؛ وسط كار اسكي نريد !
Last edited by p d; 26-06-2011 at 10:59.
سلام
اطلاعات ارائه شده جالب و مفیدن اگه بتونید در مورد برنامه نویسی اسمبلی هم همین طور راهنمایی کنید عالیه من تو اسمبلی خیلی مشکل دارم.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)