close
دانلود فیلم
سی

بررسی میزان محبوبیت زبانهای برنامه نویسی می تواند در انتخاب زبانی که روی آن سرمایه گذاری کنیم ، موثر باشد. سایتهای بسیاری هستند که با روشهای مختلفی (مانند بررسی میزان جستجوها، بررسی سوالات پرسیده شده در انجمنهای تخصصی، بررسی میزان جستجوی موقعیت های شغلی و غیره) زبان های برنامه نویسی مختلف دنیا ، میزان رشد یا کاهش محبوبیتشان را سالیانه و حتی ماهیانه اندازه می گیرند.

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

 



بهترین سایتی که برای این منظور یافته ام که اطلاعات به روز و نمودارهای مختلف مربوطه (مانند محبوبیت ماهیانه، سالیانه ، درازمدت ، گروه بندی زبانها و غیره) را دارد سایت تیوب است که لیست مقایسه زبانهای برنامه نویسی آنرا در این آدرس می توایند مشاهده کنید . ترتیب زبانهای برنامه نویسی این لیست از این قرار است :

1.جاوا
2.سی (C)
3.سی پلاس پلاس (++C)4.پیتون (Python)
5.پی اچ پی (PHP)
6.سی شارپ (C#)
7.ویژوال بیسیک
8.......

لیستی هم جدیداً در این آدرس مشاهده کردم که بر اساس میزان سوالات پرسیده شده در سایت معروف Stack Overflow زبانهای برنامه نویسی را مقایسه کرده است. در این مقایسه ، رتبه اول متعلق به سی شارپ، زبان دوم جاوا و زبان سوم پی اچ پی است.

 

برنامه ای بنویسید که به کاربر بگوید یک عدد بین 1 و 99 در نظر بگیرد. سپس از 50 شروع کرده و از کاربر سوال کند که بزرگتر از آن است یا کوچکتر یا مساوی تا به عدد مورد نظر برسد.(به کمکdo while)
ادامه مطلب...

متغيرهای محلی

متغيرهائی که درون تابع تعريف می شوند متغيرهای محلی (local variables) ناميده می شوند. محلی بر اين دلالت دارد که متغيرها تنها خاص تابع هستند و از متغيرهای هم نام در هر جای ديگر برنامه مجزا می باشند. تابع می تواند هر تغييری روی آنها بدهد بدون اينکه روی قسمت های ديگر برنامه اثر داشته باشد. متغيرهائی که خارج از هر بلاکی تعريف می شوند متغير های سراسری (global variables) ناميده می شوند و در کليه توابع قابل دسترسی هستند.


مثال. در برنامه زير متغير m سراسری است و توسط کليه توابع قابل دسترسی و تغيير است. درحاليکه دو متغير n از هم مستقل هستند و هرکدام تنها درون تابعی که اعلان شده اند تغيير می کنند.

#include <iostream.h>
int m;        // M is a global variable
int f(int n) {
   n++;
   return n;
}
int g() {
   m++;
   return m;
}
int main() {
   int n = 5;
   cout << "n = " << n << "n";
   cout << "f(n) = " << f(n) << "n";
   cout << "n = " << n << "n";
   m = 5;
   cout << "m = " << m << "n";
   cout << "g() = " << g() << "n";
   cout << "m = " << m << "n";
}

يک جمله (statement) يک خط منفرد از کد است که عملي را انجام مي دهد. در ++C معمولا هر جمله در يک خط نوشته می شود، البته بعضی از جملات به چند خط تقسیم می شوند.

جملات هميشه به يک سميکولن (;) ختم می شوند. (به استثنای راهنماهای کامپايلر مانند define# و include#).


مثال. چند جمله در C++.

int i_accnum;
i_accnum=55555;
i_accnum=i_accnum+5;


White space

خطوط خالی و فاصله ها در برنامه white space نام دارند. کامپايلرهای C++ نسبت به خطوط خالی حساس نيستند و وقتی کد برنامه را می خوانند در جستجوی کاراکترهای جمله و ختم شدن به سميکولن هستند و فاصله ها را نديده می گيرند (ثابت های رشته ای مستثنا هستند). White space امکان فرمت بندی کد برنامه با يک طرح استاندارد برای فاصله گذاری را می دهد که باعث می شود کد برنامه خواناتر شود بدون اينکه روی اجرای آن تاثير بگذارد. هر برنامه نويسی استيل خود را ممکن است داشته باشد مهم اين است که کد برنامه خوانا باشد.

White space ها در ثابت های رشته ای که بين علامت گيومه (") قرار می گيرند مجاز نيستند. اگر می خواهيد يک رشته را به دو خط بشکنيد بايد از کاراکتر () استفاده کنيد.


مثال. جملات زير با هم معادل هستند.

x=2+3;

x = 2 + 3;

x   =
2
+
3;

مثال. جمله زير زير درست است.

cout<<"Hello
world!";


جملات پوچ

يک سميکولن تنها در يک خط خالی يک جمله پوچ (null statement) را می سازد که عملی انجام نمی دهد. گاهی جملات پوچ می توانند مفيد باشند.

جملات ترکيبی

جمله ترکيبی (compound statement) که بلاک (block) هم ناميده می شود از يک يا چند جمله که بين آکولاد محصور شده اند تشيل شده است.

بلاک می تواند جايگزين هر جمله ای در برنامه بشود. برای شروع بهتر است آکولاد بلاک در خط جداگانه ای باشد تا تشخيص اينکه جا افتاده است آسان تر باشد.


مثال. يک بلاک از کد.

{
   cout<<"Hello, ";
   cout<<"world!";
}

 

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

اعلام متغير به فرم کلی زير است:

typename varname;

typename نوع متغير را مشخص می کند که بايد يکی از نوع های داده ای زبان C باشد. varname نام متغير است که بايد از قواعد گفته شده تبعيت کند.

می توان در يک خط چند متغير را از يک نوع تعريف کرد.


مثال. متغيرهای count، number و start از نوع int و متغيرهای percent و total از نوع float اعلان شده اند.

int count, number, start;   /* three integer variables */
float percent, total;          /* two float variables */


در بخش توابع درقسمت حوزه متغيرها درباره محل اعلان متغير در برنامه توضيح داده شده است. فعلا کليه متغيرها را در آغاز تابع ()main اعلان کنيد.


کلمه کليدی typedef

کلمه کليدی typedef برای ايجاد نامی جديد به نوع داده موجود بکار می رود و در واقع يک مترادف برای آن نوع توليد می کند.


مثال. عبارت زير برای نوع داده ای int مترادف integer را ايجاد می کند. بنابراين در برنامه می توان از کلمه integer برای اعلان متغيرهای از نوع int استفاده کرد.

typedef int integer;
integer count;


توجه داشته باشيد که typedef نوع داده جديدی را توليد نمی کند بلکه تنها به شما اجازه نامگذاری نوع داده ای که قبلا تعريف شده را می دهد. کاربرد زياد آن در نوع های داده ای ترکيبی است که در بخش ساختمان مطالعه خواهيد کرد.

دستورات چرخش رشته های بيتی را به صورت دايره ای حرکت می دهد اين دستورات مشابه شيفت عمل می کنند با اين تفاوت که بيتی که از يک طرف از داده خارج می شود به طور دوار از جهت ديگر وارد آن می شود. پردازنده 8086 چهار دستورالعمل چرخش (rol ، ror ، rcl و rcr) دارد.

ROL
ROR
RCL
RCR


ROL

دستورالعمل (rotate left) rol بيت های عملوند خود را به سمت چپ چرخش می دهد. فرم کلی آن به صورت زير است:

rol dest, count

دستورالعمل rol بيت های عملوند مقصد خود را به تعداد count به سمت چپ چرخش می دهد. بيتی که از سمت چپ خارج می شود از سمت راست وارد عملوند می شود.با ارزش ترين بيت عدد در فلگ carry کپی می شود.

عملوند اول عملوند مقصد است و عملوند دوم تعداد شيفت ها را مشخص می کند و می تواند عدد 1 يا برای تعداد بيشتر ثبات CL باشد. نوشتن عدد فوری بيشتر از 1 مستقيما در دستور غير مجاز است.

دستورالعمل rol به شکل های زير می تواند استفاده شود:

rol register, 1
rol memory, 1
rol register, CL
rol memory, CL

دستورالعمل rol بيت های فلگ را به صورت زير تغيير می دهد:

• فلگ carry حاوی آخرين با ارزش ترين بيت عملوند می شود.
• اگر تعداد چرخش يکبار باشد و علامت عدد بعد از چرخش تغيير کند فلگ overflow يک می شود. برای چرخش بيشتر از يکبار نامعين است.
• روی فلگ های Sign ، Zero ، Parity و Auxiliary carry تاثير ندارد. اگر نيازداريد مقدار اين فلگ ها را بعد از عمل چرخش بدانيد نتيجه را با صفر مقايسه کنيد تا اين فلگ ها تنظيم شوند.


مثال.

mov AX, C123h
mov CL,3
rol AX, CL    ;AX = 091Eh, CF = 0


ROR

دستورالعمل (rotate right) ror بيت های عملوند خود را به سمت راست چرخش می دهد. فرم کلی آن به صورت زير است:

ror dest, count

دستورالعمل ror بيت های عملوند مقصد خود را به تعداد count به سمت راست چرخش می دهد. بيتی که از سمت راست خارج می شود از سمت چپ وارد عملوند می شود.

مشابه دستورالعمل rol عملوند دستورالعمل ror می تواند ثبات يا حافظه باشد. تعداد چرخش عدد 1 يا ثبات CL است.

کم ارزش ترين بيت عملوند وارد فلگ carry می شود. بقيه فلگ ها مشابه دستورالعمل rol تاثير می پذيرند.


مثال.

mov AX, C123h
mov Cl,2
ror AX, CL     ;AX = F048h, CF = 1


RCL

دستورالعمل (rotate through carry left) rcl همانطور که از نامش پيدا است، بيت ها را از طريق فلگ carry به سمت چپ می چرخاند. شکل کلی آن به صورت زير است:

rcl dest, count

دستورالعمل rcl محتوای فلگ Carry را از سمت راست وارد عملوند مقصد می کند، سپس بيت های عملوند را به سمت چپ شيفت می دهد و آخرين بيت سمت چپ را وارد فلگ Carry می شود.

دستورالعمل rcl مشابه rol استفاده می شود و روی فلگ ها تاثير می گذارد.


RCR

دستورالعمل (rotate through carry right) rcr بيت های داده را از طريق فلگ carry به سمت راست می چرخاند. شکل کلی آن به صورت زير است:

rcr dest, count

دستورالعمل rcr محتوای فلگ Carry را از سمت چپ وارد عملوند مقصد می کند، سپس بيت های عملوند را به سمت راست شيفت می دهد و آخرين بيت سمت راست را وارد فلگ Carry می شود.

دستورالعمل rcr مشابه ror استفاده می شود و روی فلگ ها تاثير می گذارد.

 

آماده سازی منطق برنامه

قبل از نوشتن برنامه بايد مراحل حل مسئله را تعيين کنيد. ابتدا مشکل را شناخته، راه حل مربوط به آن را پيدا کنيد. سپس اقدام به نوشتن برنامه نمائيد.

تهيه کد برنامه

کد برنامه (source code) مجموعه عبارات يا دستوراتی است کامپيوتر را هدايت می کند تا عمل موردنظر شما انجام بپذيرد. از يک ويرايشگر متن برای وارد کردن کد برنامه استفاده کنيد. اغلب کامپايلرهای نظير Borland's Turbo C++ و Visual C/C++ همراه با يک محيط مجتمع (IDE) می آيند که اجازه تايپ، کامپايل و لينک برنامه را در يک محيط مناسب می دهند. در غيراينصورت از ويرايشگرهای متن ديگر مانند Edit، Notepad و Microsoft Windows می توانيد استفاده کنيد و برنامه خود را با فرمت ASCII روی ديسک ذخيره نمائيد.

کد برنامه را با پسوند cpp. ذخيره کنيد.

ترجمه کد برنامه

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

مثال. اگر Borland's Turbo C++ را استفاده می کنيد، برای ترجمه برنامه Hello.cpp فرمان زير را در خط فرمان سيستم عامل بايد وارد نمائيد:

bcc Hello.cpp

ترجمه برنامه در کامپايلرهای با محيط مجتمع (مانند Borland C++ 3.1) يا محيط گرافيکی (مانند Microsoft Visual C++) راحت تر صورت می گيرد. کافی است ازمنو گزينه Compile يا Run را انتخاب کنيد.

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

تهيه برنامه اجرائی

وقتی از توابع کتابخانه ای استفاده می کنيد، فايل مقصد توليد شده بايد با کد مقصد تابع کتابخانه ترکيب شود تا فايل اجرائی نهائی شکل بگيرد. اين فرآيند linking نام دارد که توسط برنامه لينکر (linker) انجام می گيرد. اگر لينکر در اين فرآيند با مشکلی مواجه نشود، يک برنامه اجرائی روی ديسک هم نام برنامه و با پسوند exe. ايجاد می شود.

اجرای برنامه

با توليد برنامه اجرائی، می توانيد آنرا اجرا کنيد. بايد برنامه را تست کنيد تا مطمئن شويد درست کار می کند. اگر نتايجی متفاوت از آنچه انتظار داشتيد دريافت کرديد بايد به قدم اول برگشته علت خطا را پيدا کنيد و کد برنامه را اصلاح کنيد و مجددا برنامه را ترجمه، لينک و اجرا کنيد.

در اکثر کامپايلرها امکان انجام مراحل ترجمه، لينک و اجرا در يک مرحله وجود دارد، گرچه در اينجا به عنوان مراحل جداگانه مطرح شد.


مثال. اگر برنامه Hello.cpp موفق ترجمه و لينک شود فايل های Hello.obj که شامل کد زبان ماشين برنامه و Hello.exe که برنامه اجرائی توليد شده است روی ديسک ايجاد می شود. با اجرای برنامه جمله Hello, World! روی صفحه مشاهده می شود.

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