یوشا آل ایوب

وبگاه دست نوشته ها و تجربیات شخصی

یوشا آل ایوب

وبگاه دست نوشته ها و تجربیات شخصی

یوشا آل ایوب

دکتر مصطفی چمران: می گویند تقوا از تخصص لازمتر است، آنرا می پذیرم، اما می گویم: آنکس که تخصص ندارد و کاری را می پذیرد، بی تقواست!

تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران
بایگانی

آموزش ++C

۹۱/۰۲/۳۰

مقدمه ای کوتاه:

 

  • زبان C (سی)

C یک زبان برنامه نویسی کامپیوتری هست که در سال 1972 توسط Dennis Ritchie برای سیستم عامل Unix نوشته شد.

C تکامل یافته زبان برنامه نویسی B می باشد و نامگذاری C که بعد از B بوجود آمد همین است.

C یک زبان برنامه نویسی سطح میانی و ساخت یافته می باشد. در علوم کامپوتری، سطوح زبانهای برنامه نویسی را به سه دسته اصلی تقسیم می کنند:
1- سطح بالا.
2- سطح میانی(C و C++).
3- سطح پایین.
زبان C جزو دسته دوم می باشد. به این دلیل که قادر است مانند زبان اسمبلی مستقیماً با حافظه(بیت، بایت، آدرس و...) کار کند و از طرف دیگر نوشتن و خواندنش راحت می باشد(مانند زبان Pascal).

از جمله ویژگی های زبان C می توان به:
قابلیت انعطاف، زبان سیستمی، سطح میانی، قابل حمل، کامل و کوچک، سبک، سریع و قدرتمند بودنش اشاره کرد.

 

  • زبان C++ (سی پلاس پلاس)

در سالهای بین 1979 و 1983، زبان C توسط Stroustrup تکامل یافت. توانایی و قدرت این زبان چند برابر شد و زبان C جدید و بعد C کلاسدار و سپس C++ بوجود آمد. که اولین نگارش C++ در سال 1985 روانه بازار شد. http://en.wikipedia.org/wiki/C%2B%2B

زبان C++ یک زبان برنامه‌نویسی کامپیوتری همه منظوره، شی گرا، سطح بالا و چندرگه، عمومی و با قابلیت‌های سطح بالا و سطح پایین می‌باشد.

ساختار این زبان شامل: دستورات پیش پردازنده(Preprocessor)، اعلانات سراسری(توابع، ماکروها، متغیر ها، ثوابت و...)(Global declaration)، تابع main() و توابع تعریفی کاربر(user-defined function) می باشد.

 

 

  • ساختار و معماری

اولین باری که به یک برنامه C++ نگاه می کنید، بنظر پیچیده می آید. شکل گرامری زبان C++ مختصر می باشد و همین مختصر بودن دلیل قدرت و انعطاف این زبان می باشد.

شکل گرامری مختصر در واقع وقت بیشتری برای طراحی منطق های برنامه به ما می دهد و باعث می شود زمان کمتری برای نوشتن و خواندن دستورات صرف کنیم.

تمام برنامه های C++ از ساختار کلی/اساسی یکسانی پیروی می کنند. یعنی ساختار یک نرم افزار بزرگ و پیچیده برابر ساختار یک برنامه کوچک و ساده می باشد. که این اصل رو خودتون هم متوجه خواهید شد.

یک برنامه C/C++:
1- دستورات پیش پردازنده: شرطها، ضمیمه ها(include)، ماکروها...
2- اعلانات سراسری: متغیر ها، توابع، ثوابت...
3- main()
4- توابع تعریفی کاربر/برنامه نویس

برای درک بهتر این مسله به مثال زیر توجه کنید(تمامی دستورات بعداً مفصل توضیح داده می شود):

// Test comment.
#ifndef _MyDefine_H
    #define _MyMacro_H
#else
    #define _MyMacro2_H
#endif

#if !defined _MyDefine2_H
    #define _MyMacro3_H
#endif

#include <CompileHeader.h>
#include <PlatformHeader.h>
#include "MyHeader.h"

#define FALSE -1
#define NUMBER 5
#define NUMBER2 10
#define TEST_STRING "test"
#define sum NUMBER + NUMBER2
#define myTestMacro(myParameter) testFunction * 22
//////////////////////////////////////////////////
int i= 0, j= 1000;
char c;
float f = 1;

void myFunction(void);
int myFunction2(int myParameter);
//////////////////////////////////////////////////
main()
{
    //...
    myFunction();
    #undef TEST_STRING
    //...
    return;
}
//////////////////////////////////////////////////
void myFunction()
{
    //...
    return;
}

/* Test comment.
Test comment. */
int myFunction2(int MyParameter)
{
    //...
    return myParameter;
}

خط 1 توضیحات/نظرات می باشد. که در مورد برنامه/خط بعدی مطالبی رو مطرح می کند. توضیحات اجباری نمی باشد و هیچگونه کار و عملیات برنامه نویسی انجام نمی دهند. فقط برای درک کدها و یادآوری استفاده می شوند.

در هر برنامه C/C++ اولین قسمتی که کار/عملیات انجام می دهد، دستورات پیش پردازنده می باشد. که با علامت # شروع می شوند.

1- دستورات پیش پردازنده
از خط 2 تا 10 دستورات ضمیمه شرطی(منطقی)(Conditional inclusion directive) قرار دارند. که همان پیش پردازنده ها هستند. دستور  ndef و دستور !defined هر دو یکی هستند. این دستورات قبل از انجام کامپایل، بررسی و اعمال می شوند. وظیفشون این هست که موضوعاتی رو چندین بار اعلام می کنند و یا از اعلام مجدد موضوعات جلوگیری می کنند. علامت ! به معنای Not منطقی می باشد و در صورت لزوم در عبارات استفاده می شود.

خط 12 و 13 شامل فایل های Header(سورس) ضمیمه شده می باشد که به کامپایلر(Compiler) می گوید قبل از شروع کامپایل آنرا در برنامه ضمیمه کن. فایل های Header معمولاً شامل توابع تعریفی کاربر، تعاریف ماکروها و API ها می باشد. هر دستور include باعث یک توقف/Pause برای کامپایلر می شود تا زمانی که محتوای فایل ضمیمه شده بدقت خوانده و پردازش شود.

خط 15 تا 18 شامل تعاریف ماکرو های ثابت و خط 19 و 20 شامل تعاریف ماکروهای تابع می باشند. هر کجا که فراخوانی شوند، محتوای ماکرو جایگزین نام ماکرو در محل فراخوانی می شود.

2- اعلانات سراسری
خط 22 تا 27 شامل اعلانات سراسری می باشند. خط 22 تا 24 اعلانات متغیر های سراسری(Global) می باشد که در سرتاسر برنامه قابل دسترسی هستند(استفاده از متغیر های سراسری پیشنهاد نمی شود).
خط 26 و 27 هم شامل اعلانات توابع سراسری می باشد که در سرتاسر برنامه قابل دسترسی هستند. تابع اولی هیچ(void) مقداری را نمی گرداند و هیچ آرماگونی را هم نمی گیرد. ولی تابع دومی(myFunction2) مقدار عددی صحیح برمیگرداند و آرماگون عددی بلند هم می گیرد.
کامپایلر ار اطلاعاتی در اعلان تابع استفاده می کند تا درستی فراخوانی(اعلان)های تابع را کنترل نماید. بعد از اینکه آنها را Pass کرد، آنهارا فراخوانی می کند تا صحت نوع داده ها را مشخص کند. همچنین آرماگونها و مقدار اولیه و خروجی رو هم بررسی می کند.

3- main()
سومین قسمت اصلی هر برنامه، تابع main() است(در همه برنامه ها وجود دارد). اجرای برنامه از این تابع شروع می شود و معمولاً در همین تابع هم پایان می یابد(خط 29).
برخی برنامه ها ممکن است فقط یک تابع main() داشته باشند و این چیز طبیعیست. این تابع می تواند شامل فراخوانی ها، دستورات، شرط ها، حلقه ها، API ها و هر چیز ممکن در C++ باشد. در خط 33 همین تابع، یک دستور #undef قرار دارد. این دستور می تواند ماکروی تعریف شده را خنثی/نابود سازد.

4- توابع تعریفی کاربر
چهارمین قسمت اصلی هر برنامه، توابع تعریفی کاربر(user-defined function) می باشد. این توابع می توانند شامل هر دستوری باشد(مانند تابع main()) و هر کاری انجام دهد. در این مثال از خط 36 به بعد شامل این توابع می باشد. ابتدا نوع برگشتی(return) تابع مشخص می شود. بعد نام تابع مشخص می شود. و بدنبالش آرماگون ها و آخر بدنه تابع مشخص می شود(میان دو آکولاد {}).

۹۱/۰۲/۳۰
یوشا آل ایوب

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">