×
زرون یک بیت در دنیای رسانه 09178459003 Email Me
  • ۱۳۹۸/۰۷/۰۴
  • ۰
آموزش برنامه نویسی C(قسمت سوم)

تعریف ثوابت

ثوابت مقادیری هستند که در برنامه وجود دارند ولی قابل تغییر نیستند. برای تعریف ثوابت به دو روش عمل می شود: ۱. استفاده از دستور #define و ۲. استفاده از دستور const. برای تعریف ثوابت از طریق دستور #define به صورت زیر عمل می شود:

#define  < نام ثابت >  < مقدار >

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

*  مثال ۵ – ۱

تعریف ثوابت PI و M با دستور #define. دستور اول، مقدار M را برابر با ۱۰۰ و دستور دوم مقدار PI را برابر با ۳/۱۴ تعیین می کند.

#define  M  100

#define  PI  3.14

برای تعریف ثوابت با دستور const به صورت زیر عمل می شود:

const <نوع داده>  <نام ثابت>  = <مقدار>

در این شکل کلی،نوع داده، یکی از انواع موجود در جدول مربوط به نوع داده هاست. نام ثابت مثل نام متغیرها انتخاب می شود که مقدار ثابت با علامت = در آن قرار می گیرد.

*  مثال ۶ – ۱

تعیین ثوابت n و const از نوع int و با مقادیر ۱۰۰ و ۵۰، و ثابت x از نوع char singed و با مقدار ‘x’.

;const int n = 100 , int count = 50

;’const singed char  x = ‘a

اگر پس از تعریف ثوابت، در ادامه برنامه سعی کنید مقادیر آنها را عوض کنید، کامپایلر خطایی را به شما اعلان خواهد کرد. لذا با توجه به تعاریف مثال ۶ -۱ ، دستورات زیر نادرست اند.

;n = 150

;’x = ‘b

;count = 200

کاربرد ثوابت در برنامه، از امتیازات خاصی برخوردار است. به عنوان مثال، اگر بخواهید در هر بار اجرای برنامه، مقدار n را کخ در مثال ۶-۱ آمده است را عوض کنید، لازم نیست، کلیه دستورات برنامه را که با n سروکار دارند تغییر دهید، بلکه کافی است، مقدار n را در دستور const به مقدار مورد نظر تغییر دهید.

عملگرها

عملگرها نمادهایی هستند که اعمال خاصی را انجام می دهند. به عنوان مثال، نماد ‘+’ عملگری است که دو مقدار را با هم جمع می کند. (عمل جمع را انجام می دهد). پس از تعریف متغیرها و مقدار دادن به آنها باید بتوان عملیاتی را روی آنها انجام داد. برای این عملیات باید از عملگرها استفاده کرد. عملگرها در زبان C به چند دسته تقسیم می شوند:

  1. عملگرهای محاسباتی
  2. عملگرهای رابطه ای
  3. عملگرهای منطقی
  4. عملگرهای بیتی

عملگرها بر روی یک یا دو مقدار عمل می کنند. مقادیری را که عملگرها بر روی آنها عمل می کنند، عملوند گویند. به عنوان مثال، در a + 5، متغیر a و مقدار ۵ عملوندهای عملگر + گویند.

عملگرهای محاسباتی

عملگرهای محاسباتی، عملگرهایی هستند که اعمال محاسباتی را روی عملوندها انجام می دهند. این عملگرها در جدول پایین مشاهده می شوند. هر یک از عملگرهای -،+،*،/ تقریبا در همه زبانها وجود دارد. عملگر % برای محاسبه باقیمانده تقسیم به کار می رود. این عملگر، عملوند اول را  بر عملوند دوم تقسیم می کند (تقسیم صحبح) و باقیمانده را برمی گرداند. عملگر کاهش(–) یک واحد از عملوندش کم می کند و نتیجه را در آن عملوند قرار می دهد و عملگر افزیش(++) یک واحد به عملوندش اضافه کرده و نتیجه را در آن عملوند قرار می دهد. دستورات زیر را در نظر بگیرید:

;Int  x = 10,  m = 10

;X++

;++m

متغیرهای x و m با مقدار اولیه ۱۰ تعریف می شوند. دستور x++; یک واحد به x اضافه می کند و نتیجه را در x قرار می دهد و دستور++m;  یک واحد به m اضافه کرده نتیجه را در m قرار می دهد. بنابراین در این نوع دستورات، عملگر افزایش (یا کاهش) چه قبل از عملوند باشند و چه بعد از آن، عملکرد آنها یکسان است. اما عملکرد آنها در عبارات محاسباتی با هم متفاوت است.

عملگرهای محاسباتی

عملگر نام مثال
تفریق و منهای یکانی x – y یا –x
+ جمع x + y
* ضرب x * y
% باقیمانده تقسیم x % y
کاهش(decrement) x–یا –x
++ افزایش(increment) x++ یا ++x

عبارات محاسباتی

عبارات ترکیبی از متغیرها، ثوابت و عملگرها هستند. به عنوان مثال، x + y ، ۴ + x / 5، ۶ * ۲ / m  + ۴ همگی عبارات محاسباتی اند. اگر عملگرهای ++ و – در عبارات محاسباتی، قبل از عملوند قرار بگیرند، ابتدا این عملگرها عمل کرده، نتیجه آن در محاسبات شرکت می کند ولی اگر بعد از عملوند ظاهر شوند، مقدار فعلی عملوند مورد استفاده قرار گرفته سپس عملگر بر روی عملوند عمل می کند. دستورات زیر را در نظر بگیرید:

;int  x, y

;x = 10

;y = ++x

با اجرای دستور دوم مقدار ۱۰ در  x قرار می گیرد و با اجرای دستور سوم، ابتدا یک واحد به x اضافه می شود و سپس مقدار حاصل در متغیر y قرار می گیرد. لذا y برابر با ۱۱ خواهد شد. اکنون دستورات زیر را در نظر بگیرید:

;int x, y

;x = 10

;y = x++

با اجرای دستور دوم، مقدار ۱۰ درx قرار می گیرد و با اجرای دستور سوم، مقدار فعلی x در y قرار می گیرد و سپس یک واحد به x اضافه می شود. لذا، مقدار y برابر با ۱۰ ولی مقدار x برابر ۱۱ خواهد شد. برای آشنایی بیشتر با این عملگرها، دستورات زیر را در نظر بگیرید:

;int x, y, m

;x = 10

;y = 15

;m = ++x + y++

در اجرای دستور چهارم، ابتدا به مقدار فعلیx(10) یک واحد اضافه می شود تا به ۱۱ تبدیل شود. مقدار جدید x با مقدار فعلی y(15) جمع می شود و نتیجه آن، یعنی ۲۶ در m قرار می گیرد. در پایان، مقدار y برابر با ۱۶ خواهد شد.

تقدم عملگرها

وقتی در عبارتی، چندین عملگر وجود داته باشند، ترتیب اجرای عملگرها چگونه خواهد بود؟ برای پاسخ به این سئوال، باید تقدم عملگرها را مشخص کرد. برای پی بردن به این مسئله، دستورات زیر را در نظر بگیرید:

;int  m, x = 6, y = 10

;m = x + y / 2 * 3

به نظر شما، حاصل این عبارت چه خواهد بود؟ اگر ابتدا x با y جمع شود و حاصل آن بر ۲ تقسیم شود و نتیجه آن در ۳ ضرب شود، حاصل عبارت ۲۴ خواهد بود. اگر ابتدا y بر ۲ تقسیم شود و حاصل آن با x جمع شود و نتیجه آن در ۳ ضرب شود، حاصل آن ۳۳ خواهد بود. اگر ابتدا y بر ۲ تقسیم شود و نتیجه آن در ۳ ضرب شود، حاصل آن با x جمع شود، حاصل عبارت ۲۱ خواهد بود. کدام مقدار درست است؟ برای یافتن پاسخ درست، باید تقدم عملگرها را بدانیم. تقدم عملگرهای محاسباتی در جدول ۸-۱ آمده است. همانطور که در این جدول مشاهده می کنید، بالاترین تقدم مربوط به عملگرهای افزایش و کاهش و کمترین تقدم مربوط به عملگرهای + و – است. عملگرهایی که تقدم آنها یکسان است، مثل +،- یا %،*و / نسبت به هم تقدم مکانی دارند. یعنی، هر کدام که زودتر ظاهر شد، همان عملگر زودتر انجام می شود.

با توجه به مطالب گفته شده، در عبارت m = x + y / 2 * 3 ابتدا عملگر / و سپس عملگر * و در انتها عملگر + انجام می شود. به این ترتیب حاصل این عبارت برابر با ۲۱ است.

تقدم عملگرهای محاسباتی

بالاترین تقدم پایین ترین تقدم
++  — -(منهای یکانی)  *  /  %   +  –

عملگرهای رابطه ای

عملگرهای رابطه ای، ارتباط بین عملوندها را مشخص می کنند. اعمالی مثل تساوی دو مقدار، کوچکتر یا بزرگتر بودن، مقایسه با صفر و غیره توسط عملگرهای رابطه ای مشخص می شود. عملگرهای رابطه ای در جدول زیر آمده اند. در مورد عملگرهای رابطه ای، شاید با عملگر == آشنایی نداشته باشید. این عملگر در دستورات شرطی برای مقایسه دو مقدار مورد استفاده قرار می گیرد. به عنوان مثال، دستور مقایسه دو مقدار x و y، باید به صورت آیا x == y است نوشته شود.

عملگرهای رابطه ای.

عملگر نام مثال
بزرگتر x > y
>= بزرگتر یا مساوی x >= y
کوچکتر x < y
<= کوچکتر یا مساوی x <= y
== متساوی x == y
!= نامساوی x != y

عملگرهای منطقی

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

عملگرهای منطقی به ترتیب تقدم  
عملگر نام مثال
! نقیض(not) !x
&& و (and) x > y && m < p
| | یا (or) x > y | | m < p

نتیجه عملگر ! وقتی درست است که عملوند آن دارای ارزش نادرستی باشد. نتیجه عملگر && وقتی درست است که هر دو عملوند ارزش درستی داشته باشند و نتیجه عملگر | | وقتی نادرست است که هر دو عملوند ارزش نادرستی داشته باشند (در بقیه موارد نتیجه آن ارزش درستی دارد). به عنوان مثال، دستورات زیر را در نظر بگیرید:

;int x, y, m, p, q

;x = 0

;y = 1

;m = x && y

;p = x | | y

;q = !x

با اجرای دستور چهارم، ارزش دارای m برابر با نادرستی خواهد بود، زیرا x دارای ارزش نادرستی و y دارای ارزش درستی است و حاصل بر && بر روی آنها نادرستی است. با اجرای دستور پنجم، p ارزش درستی خواهد شد، زیرا قرار x دارای ارزش نادرستی است و y دارای ارزش درستی است و عملگر | | روی آنها عمل می کند و ارزش درستی را بر می گرداند. چون x ارزش نادرستی دارد، !x دارای ارزش درستی خواهد بود که نتیجه آن در q قرار می گیرد.

چون اغلب، عملگرهای منطقی و رابطه ای با هم مورد استفاده قرار می گیرند درک تقدم آنها از اهمیت ویژه ای برخوردار است.

تقدم عملگرهای منطقی و رابطه ای  
بالاترین تقدم   ! >  >=  <  <= == != &&
پائیین ترین تقدم | |  

عملگرهای ترکیبی

از ترکیب عملگرهای محاسباتی و علامت =، مجموعه دیگری از عملگرها ایجاد می شود که عمل محاسباتی و انتساب را انجام دهند. این عملگرها در جدول زیر آمده اند. تقدم این عملگرها پایین تر از سایر عملگرها است.

عملگرهای رابطه ای  
عملگر نام مثال معادل
+= انتساب جمع x += y x = x + y
-= انتساب تفریق x -= y x = x – y
*= انتساب ضرب x *= y x = x * y
/= انتساب تقسیم x /= y x = x % y
%= انتساب باقیمانده تقسیم x %= y x = x % y

انتشار مقاله:

لینک کپی شد





برچسپ ها

نظرات کاربران در مورد این پست

پاسخی بگذارید

شما هم نظرتون رو در مورد این پست بزارید

درباره زرون

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


تماس با ما
جهت ارتباط مستقیم با تیم زرون برای مشاوره و پشتیبانی
ایمیل: admin@zerone.com تماس با ما: 09178459003 کانال در تلگرام: @zeroneir

ما را دنبال کنید با عضویت در خبرنامه از اخرین اخبار ما اگاه بایشید


حقوق مادی و معنوی تمامی آثار و محتویات عرضه شده در این وب سایت، متعلق به شرکت « علم سازان جنوب» و پدیدآورندگان آثار بوده و حسب مورد دارای مجوز از مراجع ذی صلاح می باشد. کپی برداری از مطالب این سایت حتی با ذکر منبع جایز نیست.

با ساخته شده برای زرون