C-Free Pro 0.5 نرم افزار سی فری یک محیط برنامه نویسی رایگان و کم حجم تحت ویندوز، برای کسانی که دوست دارن کار برنامه نویسی را با زبان های C و ++C (سی و سی پلاس پلاس) در محیط کنسولی شروع کنند، می باشد.
این نرم افزار برنامه نویسی حرفه ای ، جامع و قابل اعتماد، محیطی جذاب و کاربر پسندی به همراه امکانات بی نظیر و عالی را در اختیار توسعه دهندگان این دو زبان قرار میدهد که لذت برنامه نویسی در ++C و C را چند برابر می کند. برنامه نویسان به کمک Cfree سی فری به راحتی می توانند به ساخت، ویرایش، اجرا و اشکالزدایی برنامه های خود، بدون هیچ پیچیدگی و سردرگمی بپردازند.
از آنجایی که C-Free از کامپایلر های مختلفی از قبیل:
Cygwin, Digital Mars C/C++, Ch Interpreter and Borland C++ Compiler پشتیبانی می کند، می توان از آن در C++ / C و هر فرآیند برنامه نویسی دیگر استفاده کرد. پنجره اصلی نرم افزار سی فری CFree کاربر پسند بوده و تقریبا شامل تمامی دستوراتی است که یک توسعه دهنده می تواند از آن استفاده کند، منوهای برنامه نیز به خوبی سازمان یافته و نوارهای ابزار تقسیم شده است.
رسپبری پای (به انگلیسی: Raspberry Pi) رایانهای کوچک (در اندازه یک کارت اعتباری) است که بنیاد رسپبری پای آن را ساخته است تا آموزش علوم رایانه را در مدرسهها تشویق کند. دو مدل از این رایانه ساخته شده که قیمتشان ۲۵ و ۳۵ دلار امریکا (به علاوهٔ مالیات محلی) است.
سرعت پردازنده اصلی این مینی کامپیوتر ۷۰۰ مگاهرتز است که در حالت توربو تا ۱ گیگاهرتز نیز قابل افزایش است. حافظه این رایانه در دو نسخه ۲۵۶ مگابایتی و ۵۱۲ مگابایتی عرضه شده است. این رایانه دارای دیسک سخت نیست ولی به کمک حافظه SD، خود را راه اندازی میکند.
این رایانه قادر است با سیستم عاملهای مختلفی راه اندازی شود. سیستم عامل اولیهای که با آن عرضه شد لینوکس نسخه دبیان بود ولی نسخههایی از اندروید نیز برای آن تهیه شده است و با کمک یک کابل میکرو یواس پی تغذیه میشود.
رسپبری پای قادر است به کمک یک کابل تصویر ویدئو و یک درگاه سوزنی، خروجی صدا و تصویر داشته و یا با کابل اچ دی ام آی(HDMI)، خروجی تصویری با دقت ویدیوی اچدی(HD) و صدایی استریو داشته باشد. دو درگاه یو اس بی(USB) نیز برای آن در نظر گرفته شده است که میتوان از آن برای ارتباطات مختلف استفاده کرد. از خروجیهای یو اس پی برای صفحه کلید، ماوس، شبکه بی سیم و کلیه دستگاههای مورد استفاده از درگاه فوق بهره برده میشود. به کمک هاب یو اس بی میتوان از پورتهای بیشتری استفاده کرد.
نسخه B این رایانه یک خروجی شبکه نیز دارد که به کمک آن میتوان به شبکههای محلی و یا اینترنت متصل شد. از خروجی اچ دی ام آی برای صدا، تصویر و کنترل آن باهم میتوان بهره جست. بدین ترتیب با کمک فقط یک نمایشگر لمسی قادر است تبدیل به یک تبلت شود.
تمام آموزش هایی که قرار است در این سری آموزش ها عنوان شود بر اساس نسخه B رسپبری پای خواهد بود. تفاوت دو مدل A و B در این است که مدل اول (A) با قیمت ۲۵ دلار و مدل دوم B) ۳۵) دلار به فروش میرسد. مدل اول (A) دارای یک پورت USB و ۲۵۶ مگابایت رم است و این در حالی است که مدل دوم (B) دارای دو پورت USB و یک پورت Ethernet و۵۱۲ مگابایت رم می باشد.
خروجی و پورت های مدل B به شرح زیر است :
1- پورت میکرو یو اس بی (Micro-USB) برای تأمین برق مورد نیاز دستگاه : این پورت با ولتاژ حدود 5 ولت تغذیه می شود. حداقل میزان جریان برای روشن کردن مدل B حدود 700mA میباشد. برای راه اندازی رسپبری پای می توانید از شارژر میکرو یو اس بی تلفن همراه خود نیز استفاده کنید. به عنوان مثال شخصاً از شارژر گوشی گلکسی نوت 2 برای روشن کردن دستگاه استفاده کردم.
2- خروجی HDMI برای انتقال تصاویر : برای اتصال رسپبری پای به مانیتور یا تلویزیون می توان از این خروجی کمک گرفت. از مزایای خروجی HDMI می توان به کیفیت بالای تصویر و انتقال همزمان صدا و تصویر اشاره کرد. البته اگر دسترسی به مانیتورهای HD ندارید می توانید از خروجی Video RCA تعبیه شده بر روی برد استفاده کنید.
3- پورت های یو اس بی : برای اتصال کیبورد و ماوس و یا سایر قطعات (مثل : یو اس بی هاب، دانگل وایرلس، هارد اکسترنال، حافظه فلش و…) می توانید از این دو پورت استفاده کنید. حتی می توان از کیبورد ها و ماوس هابی سیم هم استفاده کرد. برای افزایش تعداد پورت های یو اس بی از یو اس بی هاب های موجود در بازار استفاده کنید.
4- پورت اترنت (Ethernet) : رسپبری پای این امکان را به شما می دهد تا از طریق پورت اترنت به یک شبکه متصل شوید و حتی از اینترنت نیز استفاده نمایید.
5- پورت Video RCA برای خروجی تصویر : دوستانی که دسترسی به مانیتورها و تلویزیون های HD با خروجی HDMI ندارند، می توانند از این خروجی برای مشاهده تصاویر بر روی تلویزیون های قدیمی استفاده نمایند.
6- خروجی (جک) ۳/۵ میلیمتری صدا : از طریق این پورت می توان خروجی صداهای تولید شده توسط رسپبری پای را از طریق هدفون یا اسپیکر شنید.
7- اسلات کارت حافظه اس دی (SD) : چون رسپبری پای دارای حافظۀ ذخیره سازی نیست با کمک این درگاه می توانید سیستم عامل مورد نظرتان را بوت کنید.(هم می توان از رم های به اصطلاح SD استفاده کرد و هم می توان رم های میکرو اس دی Micro SD را با کمک تبدیل یا خشاب به آن متصل نمود.)
بهتر است از یک کارت حافظه با ظرفیت 4 گیگابایت یا بیشتر و با کلاس 10 استفاده کنید. (رم های موجود در بازار دارای کلاس های 4و6و10 هستند که هر چه کلاس یک رم بیشتر باشد سرعت خواندن و نوشتن بر روی کارت حافظه بیشتر است.)
پس برای راه اندازی رسپبری پای نیاز به یک شارژر میکرو یو اس بی، کابل HDMI ، ماوس، کیبورد و کارت حافظه SD خواهید داشت. (اگر دسترسی به تلویزیون HD ندارید باید از خروجی Video RCA استفاده کنید.)
قبلا یادآوری شد که اعضای یک کلاس اعم از داده ها یا توابع دارای 3 نوع سطح دسترسی می باشند که شامل دسترسی خصوصی private و دسترسی عمومی public و دسترسی حفاظت شده protected است .
اگر داده ها و توابع عضو یک کلاس از نوع private تعریف شوند فقط داده ها و توابع درونی آن کلاس در داخل همان کلاس می توانند به آنها دسترسی داشته باشند و هیچ جزء دیگری در بیرون از کلاس حتی شی ساخته شده از همان کلاس هم اجازه و توانایی دسترسی و کار با آنها را ندارند مگر تابعی را تعریف نماییم که در اصطلاح دوست(Friend) کلاس مورد بحث باشد .
پس تابع دوست یک کلاس، تابع ویژه ای است که می تواند به تمامی اعضای کلاس
حتی اعضای private نیز دسترسی داشته باشد. تفاوتی نمی کند که تابع دوست
کلاس را عمومی یا خصوصی تعریف نماییم. یک تابع دوست کلاس طبق الگوی زیر
تعریف می شود که باید از کلمه کلیدی friend در ابتدای آن استفاده نمود :
friend type FunctionName(Parameters List...) { Function Body... }
مثال) به اتفاق یکدیگر مثالی ابتدایی از تعریف تابع دوست کلاس و نحوه بکارگیری آن در کلاس را بررسی می نماییم :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class Accumulator { private: int m_nValue; public: Accumulator() { m_nValue = 0; } void Add(int nValue) { m_nValue += nValue; } // Make the Reset() function a friend of this class friend void Reset(Accumulator &cAccumulator); }; // Reset() is now a friend of the Accumulator class void Reset(Accumulator &cAccumulator) { // And can access the private data of Accumulator objects cAccumulator.m_nValue = 0; } |
همانطور که در ابتدای مجموعه آموزش برنامه نویسی C++ خدمت شما عزیزان عرض شد ما برنامه های خود را در محیط نرم افزار Borland C++ آموزش دادیم. متاسفانه این نسخه از کامپایلر C++ رشته ها را پشتیبانی نمی کند و برای کار با رشته ها مثل اسامی، جملات و ... ما مجبور به نوشتن کدهای فراوانی خواهیم بود و بدلیل اینکه از این به بعد مطالب سنگین تر و مفهومی خواهد شد لذا تصمیم گرفتم که این مشکل را با استفاده از تابع کتابخانه ای std که در دیگر نسخه های C++ پشتیبانی می شود را رفع نمایم .
در اینجا من 2 مثال را مورد بررسی قرار می دهم تا عزیزان بتوانند در مواردی که نمی توانند از کتابخانه std استفاده کنند از آرایه ای از کاراکترها برای دسترسی و کار با رشته ها و برنامه نویسی در محیط Borland C++ استفاده نمایند .
مثال1) کار با رشته ها بدون استفاده از فایل سرآیند یا کتابخانه std، به کمک آرایه ای از کاراکترها در برنامه نویسی C++ :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#include <iostream.h> #include <conio.h> class Employee { public: char m_strName[25]; int m_nID; double m_dWage; void SetInfo(char *strName, int nID, double dWage) { strncpy(m_strName, strName, 25); m_nID = nID; m_dWage = dWage; } void Print() { cout << "Name: " ; for(int i=0;m_strName[i];i++) { cout << m_strName[i]; } cout << " Id: " << m_nID << " Wage: $" << m_dWage << endl; } }; int main() { Employee cAlex; cAlex.SetInfo("Alex", 1, 25.00); Employee cJoe; cJoe.SetInfo("Joe", 2, 22.25); cAlex.Print(); cJoe.Print(); getch(); return 0; } |
Name: Alex Id: 1 Wage: $25.00 Name: Joe Id: 2 Wage: $2.25
مثال2) کار با رشته ها با استفاده از فایل سرآیند یا کتابخانه std، برای راحتی و سهولت در برنامه نویسی C++ :
اکنون وقت آن است که برنامه نویسی شی گرا را در عمل یاد گرفته و با اصول تعریف و بکارگیری آن بیشتر آشنا بشویم .
کلاس ها همان نوع داده تجریدی یا انتزاعی (Abstract) هستند. به عبارتی یک نوع داده هستند که توسط برنامه نویس برای کار با داده ها و توابع و رویدادهای مختلفی تعریف می شوند. برای تعریف کلاس از الگوی زیر پیروی می کنیم :
1 2 3 4 5 6 7 8 9 10 |
class className { // Define private variables & functions public: // Define public variables & functions private: // Define private variables & functions protected: // Define protected variables & functions } objectsame; // Declare Objects |
همانطور که در بالا آمد، برای تعریف یک کلاس از کلمه کلیدی class استفاده می کنیم و نامی را در ادامه برای آن تعیین می کنیم .
متغیرها و توابع مربوط به class در درون بلوک آکولاد قرار خواهند گرفت. فرض بر این است که دسترسی داده ها و توابع private است مگر اینکه نوع دسترسی صراحتا اعلام شود .
ما در ابتدای مطالب کلی در مورد C++ صحبت کردیم و گفتیم که بد ترکونده، نه برای اینکه 1 در صد از این زبان را بنده شاید بلد باشم. بلکه برای اینکه این جز حقیقت چیزی نیست .
تنها اختلاف بین زبان C و C++ مبحثی است بنام شی گرایی یا OOP(Object Oriented Programming) که همین مورد کافی است که دنیای نرم افزار شاهد تحول عظیمی در طراحی و پیاده سازی نزم افزارهای کنونی باشد .
بد نیست بدانید که اندیشه شی گرایی در زبان C++ آنقدر قوی است که به جرئت می توان گفت تمامی نرم افزارهای موجود مدیون این دید از برنامه نویسی هستند. اکثر سیستم عامل های رایج مانند Linux, Macintosh, ... بر گرفته از تفکر C++ هستند و Windows را صرفا با C++ و مبانی C نوشته اند .
نرم افزار های غولی مانند Office, Photoshop, Nero, ... را با این زبان طراحی و پیاده سازی کرده اند .
دوستان عزیز دقت داشته باشند که داریم کم کم از درب ورودی برنامه نویسی رد می شیم .
شاید پیش خودتون بگویید که پس مطالب قبلی چی بودند؟ باید عرض کنم که می شود گفت که اونا الفبای ابتدایی برنامه نویسی بودند. از این به بعد کم کم با مفاهیم اساسی برنامه نویسی روبرو خواهیم شد که درک هر چه بهتر این مفاهیم می تواند ما را در زمینه برنامه نویسی C++ یا هر برنامه نویسی استاندارد دیگری به برتری برساند. اصول و مفاهیم کلی برنامه نویسی یکیه اما در زبانهای مختلف، راهها و قوانین نگارشی متفاوتی برای پیاده سازی کدها وجود دارد .
از این به بعد باید مفاهیمی را درک کنیم که در برنامه نویسی نقش بسزایی را ایفا می کنند، پس سعی کنید که مطالب را با دقت پیگیری کرده و به مثال ها و نوشتن برنامه بپردازید تا که به این مفاهیم تسلط پیدا نمایید .
در مورد مزایای استفاده از اشاره گرها در C++ یا زبانهای برنامه نویسی دیگر همین قدر باید بگم که چیز خوبیه و سرعت، کارایی، دسترسی و ... را بالا می برد .