ورود

نسخه کامل مشاهده نسخه کامل : اموزش ++C/C از ابتدا تا ...



p d
16-06-2011, 16:44
سلام!
ميخوام اطلاعاتی را که در طی این مدت بدست اوردم و به اشتراك بذارم.
به شرطي كه استقبال بشه. ميتونيد از tnx ويا نظر سنجي استفاده كنيد
اگه كسي نظري يا پيشنهادي هم داره بگه.

p d
22-06-2011, 11:46
مطالب از خودمه . استفاده از مطالب با ذكر منبع مجاز ميباشد.

lمقدمه :

قبل از بوجود اومدن سيستم عامل هاو پيش رفت زبانهاي برنامه نويسي سيستم هاي simple batch system بودن كه از طريق cr و cpu و ram و طprinter با هم كار ميكردن . اطلاعات از كارت ريدر ها وارد ميشد و خروجي چاپ ميشد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

كارت ريدر
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

كارت منگنه/سوراخ يا هرچي(الان ترجمه ديگه اي به ذهنم نميرسه) همون punched card
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

در اينجا 1 برنامه نويس وجود داشت كه با consol كار ميكرد و در واقع كار سيستم عامل ها را انجام ميداد. اين oprator كارهايي كه شيبه هم بودن 1job تهيه ميكرد و به سيستم ميداد اونم بعد از گذشت زمان طولاني (گاهي چند روز) جواب ميداد.


با گذشت زمان، پيش رفت سريعي در تكنولوژي بوجود اومد و سخت افزارها و نرم افزار هاي جديد تري بوجود اومدن و زبان برنامه نويسي شروع به تكامل كردن.

اطلاعات بيشتر

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خب اين گذشته سيستم هاي پيشرفته امروزي بوود.

اين و گفتم كه بدونيد از اول اينطوري نبودش كه همه كارا نرم افزاري باشه. در واقع جد زبان هاي برنامه نويسي همين كارت هاي پانچ هستن. بهد از اون زبان هاي برنامه سطح پايين و مياني و بالا و در حال حاضر شي گرايي و تعريفات جديدي بوجود اومده كه مار برنامه نويسي و اسان تر ميكنه و نياز به دونستن اطلاعات سطح پايين نداره. اين كار شايد باعث راحتر شدن برنامه نويسي بشه ولي 1 مشكلي داره، اونم زياد شدن حجم برنامه هاس.
وقتي با asm برنامه مينويسيد شايد برنامه شمت در حد kb باشه ولي 1 پروژه يc# و بدون اضافه كردن دستور به خودي خود چندن برابر حجم دارن.
براي شروع و داشتن 1 ديد كلي اينا رو گفتم . اينا مقدمه بود.
براي اخرين مطلب 1 عكس كه سير و تولد زبان هاي برنامه نويسي و نشون ميده ميذارم.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

p d
22-06-2011, 12:43
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

خب ......

حالا با شخصيت اقاي دنيس ريچي اشنا ميشيم.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ايشون كسي بود كه زبان c را توسعه داد.
همون طور كه در تصوير اخر پست قبلي مشاهده كرديد:
cpl->bcpl->b->c
اين درخت زبان c بوده و هست. شايد جالب باشه كه بدونيد زبان a هم داريم.a-> b-> c
هربرت شليد اينگونه مينويسد
زبان c دنياي كامپوتر را متحول كرد.
اين زبان وقتي بوجود اومد (چون 1 زبان general purpose است ، بسياري از نياز هاي اون دوره رو ارضا ميكرد و به خاطر همين حتي تا الان ازش براي برنامه ها سييستمي و... استفاده ميشه. اين زبان ويژگي هاي بسياري داره كه از بهترينش شايد به انعطاف پذيريش (هم سطح پاييين هم مياني) اشاره كرد. با اين زبان هم ميشه با سخت افزار (تا حدي البته) كار كرد هم كارهاي سطح بالا كرد.بنظرم، سرعت و انعطاف پذيري و كم حجم بودن برنامه ها براي برنامه نويسان حرفه اي كافي باشه تا ب سراغ اين زبان بيايند.
البته همون طور كه ميدونيد هيچيز مطلق نيست و همه چي مشكلات خاص خودش و داره.

-------------------
سي پلاس پلاس:

هربرت شليد اينگونه مينويسد(البته ترجمه !)
++c حاصل سال ها تجربه در زبان هاي برنامه نويسي است. با اين وجود، دقيقا زبان هاي جديد و بهتري در اينده ارايه خواهد شد ولي ++c اوج هنر زبان هاي برنامه نويسي در حال حاضر است.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Bjarne Stroustrup
Born December 30, 1950 (age 60)
Aarhus, Denmark
Occupation College of Engineering Chair in Computer Science Professor, Texas A&M University
ايشون پديد اورنده زبان c++ هستن.
خب 1سوال :
اگه زبان c واقعا قدرت مند هست چرا زبان ++C بوجود امده است ؟
جواب ساده است.
انسان هاموجوداتي راحت طلب هستن . وقتي ميتوان كاري را از راهي اسانتر انجام داد چرا نبايد اينكار ار كرد ؟!
بله ++c ويژگي جديدي را پشتيباني ميكرد كه C اينكار را نميكرد و اين ويژگي سبب راحتتر شدن برنامه نويسي ميشود و اين َشي گراييست. شي گرايي در واقع بوجود امد تا برنامه هاي بزرگ تر را راحتر مديريت كرد و اكنون به جايي رسيديم كه اشياي گرافيكي وجود دارد كه كار برنامه نويسي فقط انتخاب كردن و كنار هم چيدن انها بدون دانستن اين كه در واقع اين شي چطوري كار ميكند . اينگونه انتظار ميرود كه بجايي برسسيم كه فقط برنامه اي كه ميخواهيم بنويسيم را انتخاب كنيم تا برايمان نوشته شود.

اطلاعات بيشتر :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

p d
22-06-2011, 17:21
من به 1 چيزي اتقاد دارم اونم اينه كه كسي نميتونه به كسي برنامه نويسي ياد بده.
برنامه نويسي حفظ كردن 1سري دستور و تكرار چيزايي كه حفظ قبلا نوشني نيست. برنامه نويسي يعني تجزيه و تحليل 1 سيستم و پياده سازي 1 الگوريتم. البته + كد زدن. شايد باور نكنيد كه كد زدن ساده ترين بخش كار 1 برنامه نويس هست و تجزيه تحليل سخترين قسمت كار.
برنامه نويسي بايد ديد تحليلي نسبت به سيستم داشته باشه و سيستم و به 1سري الگوريتم هاي تكراري و ساده تجزيه كنه و سپس كد زدن شروع ميشه.
-----
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
براي نوشتن برنامه ها ، نياز به محيطي داريم كه برنامه هايي كخ مينويسيم و كامپايل كنه و به زبان سطح پايين تبديل كنه تا براي cpu قابل فهم باشه .
شما ميتونيد از لينك زير دانلودش كنيد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
-----
هر چيزي ساختاري داره . برنامه در ++C از 1 سري توابع تشكيل ميشه. يعني شما 1 سري قطعه كد بايد ايجاد كنيد و با كنار هم قرار دادن اينا برنامه رو به وجود بياريد. و اينم در نظر بگيريد كه برنامه جسم فيزيكي نيست كه بخواد ساخته بشه. برنامه جزيي منطقي هست كه بسط داده ميشه.
بدنه ي برنامه ما تابع main هست. به صورت زير تعريف ميشه :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برنامه هاي ما ازين تابع شروع ميشن ؛ بطور پيش فرض.
خب بياين بدنه ي برنامه خودمون و كامل كنيم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب اينا يعني چي؟
در حال حاضر فقط در همين حد بدونيم كافي ؛ اينها بدنه ي برنامه ي مارو تشكيل ميدهند.
هرتابعي 1 يا چند ورودي و فقط 1 خروجي داره.
int main يعني خروجي اين تابع از نوع int هست. int براي متغييرهاي عددي استفاده ميشه. پس اين يعني اين تابع 1 عدد برميگرداند.
سوال : اين تابع چه عددي و چرا و به كي/چي برميگرداند؟
جواب : تابع main اين عدد را سيستم عامل برميگرداند. اين عدد 0 است و با دستور return 0 مشخص شده.
و برگشت داده ميشود هنگامي كه برنامه به اين دستور برسد و رسيدن به اين دستور يعني اجراي كامل برنامه. پس برنامه ما مشكلي نداشته كه كامل اجرا شده . پس ما اين مقدار را به سيستم عامل برميگردانيم تا مشخص شود برنامه با موفقيت اجرا شده.
---
خب شما اولين برنامه خودتون و نوشتيد. برنامه اي كه هيچ كاري (البته به ظاهر ) انجام نداده.

p d
22-06-2011, 22:51
قبل از دامه دادن به كد نويسي بايد 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 سري اشكال گرافيكي هست كه براي درك بهتر الگوريتم بوجود اومده. لزومي نداره كه بلد باشيد و ضرري هم نداره :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

p d
23-06-2011, 10:52
خوشبختانه علوم كامپيوتري با سرعتي باور نكردني در حال پيشرفت . كي ميتونست باور كنه كه از اينجا :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

به اينجا

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برسيم؟ روزي كامپوترهاي غول پيكر كه پر از مدار و سيم بودن و در انحصار ارتش امريكا بودن الان تو خونه همه البته بسيار پيشرفته تر يافت ميشن ! كامپيوتر هاي اوليه برنامه نويسي نميشدند،درواقع نياز به تغيير مدار و سيم كشي و كلي داستان براي هر بار تغيير نياز داشتن.

----------
خب قرار شد اولين برنامه اي كه اجرا ميشه رو در اين تاپيك بياريم.
بهتره با محيط dev اشنا بشيم.(در حد نياز البته)
بعد از باز كردن، طبق شكل زير :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

خب اين محيط برنامه نويسي شماست. 1 محيط ساده .
معمولا رسم شده كه اولين برنامه اي كه اجرا ميكنيد خروجي HEllo World رو نمايش بده. خب ما هم به اين رسم احترام ميذاريم.
طبق قوانيين زبان ++C عمل كنيد:
برنامه ,داخل تابع main بنويسيد.
انتهاي هر دستور از ; استفاده كنيد.
براي نمايش هر چيزي بر مانيتور از cout>> استفاده كنيد.
تبصره : براي نمايش متن(رشته) اون و بايد داخل " " قرار بدهيد . مثلا : "hi"
خب ساده شد ديگه . شروع ميكنيم. بدنه ي اصلي تابع:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

قرار شده خروجي بر مانيتور نشون بديم پس :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فعلا اينطوري فكر كنيد كه :
خب گفتيم كه كامپيوتر موجودي خنگ هست. cout براش معني نداره.
براي اينكه براش معني دار بشه از عبارت زير استفاده ميكينم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

پس همه ي قسمت هاي برنامه اي كه نوشتيم ثابت فرض كنيد جز:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

پس برنامه ما به شكل زير در مياد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خب با F9 برنامه رو اجرا كنيد.
حتما ميگيد 1 جاي كار ايراد داره . نه همه چيزي درسته !!!
شما به برنامه گفتيد چاپ كن اين عبارت و؛ بهش نگفتيد منتظر من بمون تا ببينم !
خب براي اينكه شما بتونيد خروجي رو ببنيد ، به برنامه ميگيد بعد از نمايش خروجي منتظر باش تا من بهت 1 ورودي بدم. بعد بسته شو. به اين شكل:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب اومديم 1 متغيير عددي تعريف كرديم ،و بعد از نمايش خروجي گفتم اين و بگيره . پس منتظر ميمونه.
اجراش كنيدو بايد شكل زير و نمايش بده :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

elendil
23-06-2011, 22:56
خواستین ما هم یه چیزای کوچیکی بلدیم : )) کمک خواستین بگین ( البته به جز بیوگرافی و تاریخچه زبون : )) )

m.m.m5651
24-06-2011, 18:43
من از آموزش های این سایت استفاده کردم فوق الاعادست:
thenewboston.com

p d
26-06-2011, 10:51
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

بعنوان پيش نياز اين و ببنيد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حالا اونايي كه بكارتون مياد و ازش مثال ميزنيمو توضيح ميديمشون.

+ براي جمع دو عدد مثال 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 لطفي بكنيد ؛ وسط كار اسكي نريد !

koohsar62
10-07-2011, 18:09
سلام
اطلاعات ارائه شده جالب و مفیدن اگه بتونید در مورد برنامه نویسی اسمبلی هم همین طور راهنمایی کنید عالیه من تو اسمبلی خیلی مشکل دارم.

MaSoUd555
11-07-2011, 00:43
سلام
دوست عزیز ار کار خوبتون ممنون
بعدش من فقط یه سوال دارم با اینهمه کتاب خوب و کامل در مورد زبان C و C++ چه لزومی به توضیح دوباره مطالب است؟
اونم از پایه؟

امیدوارم ازین سوال بنده ناراحت نشید،قصد جسارت ندارم،اما لازم نمیدونم همه چی از پایه شروع شه

بعدش یه خواهش دیگه دارم اگه میتونید عکسارو به صورت کد بذارید(البته اگه تعدادشون در یک صفحه زیاده)چون خیلی سنگین میشه صفحه

djsohrab2007
11-08-2011, 23:16
سلام
دست شما درد نکنه فقط این تاپیک وقتی جالب میشه که :
1) ادامه پیدا کنه
2) فرا تر از چیزی که در کتاب ها است بره

با تشکر از زحمات شما دوستان عزیز:10:

matin_blue
24-09-2011, 16:28
من از آموزش های این سایت استفاده کردم فوق الاعادست:
thenewboston.com

videoهای آموزشی سایت رو فیلتر کردن؟ من نمیتونم ببینم، چی کار کنم؟

p d
19-10-2011, 18:17
ه
2) فرا تر از چیزی که در کتاب ها است بره


پس ازین به بعد میریم سراغ گرافیک در سی . فک کنم این مطلب تو کتاب هایی که دیدم نبوده . خوبه؟
هر سری میام یه برنامه میذارم با ککمی توضیح ، کسی هم سوال داشت بگه ولی اسپم ندید.

p d
20-10-2011, 16:32
خب جلسه اولین گرافیک در سی رو شرووع میکنیم . امید ووارم که خوب پیش بره .
پست های دوستان باعث شد که سطح کاری و بالاببریم؛ پس دیگه در گیر جزییات نمیشیم . بنده کلیات و میگم ، سوالی بود بپرسید، در خدمت هستیم اگر سواد یاری کنه البته.
در ضمن عرض شود که این تاپیک با همراهی دوستان پیش خواهد رفت ، یعنی اگه پی گیری نکنید، کلا تخته میشه. علی کل حال
کامپایلر ما Turbo C++ 3.0 DOS هستش و حدودا 4mb هست. دانلود کنید خودتون دیگه.
-----
بر اساس عرف اولین مثال و خیلی ابتداییی میزنیم:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

p d
20-10-2011, 16:49
خب اینم برنامه دوم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برنامه بعدی و زمانی میگم که یکی بیاد این و تریس کنه، و بگه 4/3 چرا در عرض ضرب شده و چرا 4/3 و ....