منوی دسته بندی

آموزش زبان C

مقدمه

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

زبان c

استفاده‌ های زبان C

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

مزیت های زبان C

زبان برنامه‌ نویسی C به دلیل ویژگی‌های متعدد و انعطاف‌پذیری‌اش، یکی از زبان‌های محبوب و پرکاربرد در صنعت برنامه‌نویسی است.

1- کاربرد گسترده: زبان C در مختلف حوزه‌های برنامه‌ نویسی استفاده می‌شود از جمله سیستم‌عامل‌ها، درایورها، برنامه‌های سخت‌افزاری و به خصوص در برنامه ‌نویسی میکروکنترلرها.

2- سرعت اجرا: زبان C به دلیل نزدیکی به زبان ماشین و کنترل دقیق بر روی سخت‌افزار، اجرای سریع و بهینه را فراهم می‌کند.

3- انعطاف‌پذیری: برنامه ‌نویسان در زبان C انعطاف زیادی دارند و قادرند کنترل دقیقی بر روی منابع سیستمی خود داشته باشند. و به آنها این امکان را می‌دهد که به‌ صورت دقیقتر و بهینه ‌تر برنامه ‌نویسی کنند.

4- قابلیت نزدیکی به سخت‌افزار: زبان C به برنامه‌نویسان این امکان را می‌دهد تا به طور مستقیم با سخت‌افزار ارتباط برقرار کنند. این ویژگی به ویژه در برنامه‌نویسی میکروکنترلرها و سیستم‌های سخت‌افزاری مفید است.

5- کتابخانه‌های گسترده: زبان C دارای کتابخانه‌های بسیار گسترده‌ای است که برنامه ‌نویسان می‌توانند از آنها در پروژه‌های خود استفاده کنند و این امر باعث سهولت در توسعه برنامه‌ها می‌شود.

6- انتقال‌پذیری: برنامه‌های نوشته شده به زبان C معمولاً قابلیت اجرا بر روی سیستم‌های مختلف را دارند، بدون نیاز به تغییرات گسترده در کد.

7- آموزش آسان: زبان C دارای نحوه نوشتن ساده و آموزش قابل فهمی است که به افرادی که در حال یادگیری برنامه ‌نویسی هستند کمک زیادی می‌کند.

8- پشتیبانی گسترده: زبان C از لحاظ ابزارها و محیط‌ های توسعه دارای پشتیبانی گسترده‌ای است که برنامه ‌نویسان می‌توانند از آنها برای توسعه و اجرای پروژه‌های خود استفاده کنند.

این مزایا باعث محبوبیت و استفاده گسترده زبان C در صنعت برنامه ‌نویسی شده‌اند.

ارتباط با میکروکنترلرها

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

ساختار زبان C

زبان C دارای ساختار ساده و بهینه است که به برنامه ‌نویسان این امکان را می‌دهد که کنترل دقیقی بر روی منابع سیستمی داشته باشند. ساختار اصولی این زبان شامل انواع داده، کنترل جریان (شرطی و حلقه‌ها)، توابع و آرایه‌هاست.

ساختار کلی برنامه‌های نوشته شده به زبان C برای میکروکنترلرها به طور کلی شامل موارد زیر است:

اضافه کردن کتابخانه ها به برنامه

تعریف توابع استفاده شده در برنامه

تعریف و مقداردهی اولیه به متغیرها

 حلقه اصلی (main loop)

توابع کمکی

مثال:

متغییرها در زبان C

تعريف متغير يعني انتخاب نام دلخواه براي مكاني از حافظه جهت ذخیره داده

فرم تعريف متغير

مثال:

انواع متغییرها

زبان برنامه‌نویسی C انواع مختلفی از متغیرها را پشتیبانی می‌کند.

1- متغیرهای عدد صحیح (Integer Variables):

 متغیرهایی که اعداد صحیح (بدون اعشار) را در خود نگه میدارند.

 نمونه:

2- متغیرهای اعشاری (Floating-Point Variables):

برای نمایش اعداد با اعشار.

نمونه:

3- متغیرهای حرفی (Character Variables):

برای ذخیره کاراکترها (یک حرف یا یک عدد کوچک).

نمونه:

4- متغیرهای لاجیکی (Boolean Variables):

برای نمایش مقادیر منطقی صحیح یا غلط (true یا false).

نمونه:

5- متغیرهای مرجع (Reference Variables):

متغیرهایی که به یک مکان حافظه اشاره می‌کنند. (اشاره گرها)

نمونه:

6- متغیرهای ثابت (Constant Variables):

متغیرهایی که مقدار آنها در طول اجرای برنامه تغییر نمی‌کند.

نمونه:

7- متغیرهای بیتی (Bitwise Variables):

برای کنترل و مدیریت بیت‌ها در سطح پایین.

نمونه:

8- متغیرهای رشته (String Variables):

برای ذخیره و کار با رشته‌ها (ترکیبی از کاراکترها).

نمونه:

انواع داده ها

 RangeBits (Size)Type
0 , 11bit
-128 to 1278char
0 to 2558Unsigned char
-128  to  1278Signed char
-32768  to  3276716int
-32768  to  3276716Short int
0  to  6553516Unsigned int
-214783648  to  214748364732Long int
0  to  429496729532Unsigned long int
+/- 1.175e-38  to +/- 3.402e3832float
+/- 1.175e-38  to +/- 3.402e3832Double

انواع عملگرها

1- عملگرهای حسابی

نتیجهمثالعملکردعملگر
84 x 2ضربx
24 / 2تقسیم/
64 + 2جمع+
24 – 2تفریق
110 % 3باقی مانده%

2- عملگرهای بیتی

نتیجهمثالعملکردعملگر
0x000x05 & 0x00AND&
0x110x10 | 0x01OR|
0x010x01 ^ 0x00XOR^
0xF00x0Fمکمل یک~
0x0F0xF0 >> 4شیفت به راست<<
0xF00x0F << 4شیفت به چپ>>

3- عملگرهای یکانی

نتیجهمثالعملکردعملگر
C = C x -1-Cقرینه
C = C + 1C++افزایش یک واحد به متغییر++
C = C – 1C–کاهش یک واحد از متغییر

4- عملگرهای مقایسه

نتیجهمثالعملکردعملگر
False3<2بزرگتر
True3>2کوچکتر> 
True7=<7بزرگتر یا مساوی=<
True8=>4کوچکتر یا مساوی=>
False3==2مساوی==
True3!=2نامساوی!=

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

عملکردعملگر
AND  منطقی&&
OR منطقی||
نقیض!

6- عملگرهای انتسابی

نتیجهمثالعملکردعملگر
b => aa = bانتساب =
a = a * ba *= bضرب – انتساب*=
a = a + ba += bجمع – انتساب+=
a = a – ba -= bتفریق – انتساب-=
a = a / ba /= bتقسیم – انتساب/=
اگر مقدار val صحیح باشد متغییر a برابر x و در غیر
اینصورت برابر y میشود
انتساب شرطیa = (val)? x : y

دستورات زبان C

زبان C دارای دستورات متنوعی است که به برنامه‌ نویسان این امکان را می‌دهد تا عملیات مختلف را انجام دهند. به عنوان مثال، دستورات کنترل شرطی (if، else)، حلقه (for، while)، دستورات ورود و خروج، تعریف و فراخوانی توابع و … از جمله دستورات اصلی زبان C هستند.

لیستی از دستورات زبان C و رجیسترهای میکروکنترلرهای AVR

دستورات پایه:

#include: برای درج کتابخانه ها

#define: برای تعریف ثابت ها

typedef: برای تعریف نوع داده های جدید

volatile: برای تعریف متغیرهایی که توسط وقفه ها تغییر می کنند

main(): نقطه شروع برنامه

متغیرها:

char: برای ذخیره کاراکترها

int: برای ذخیره اعداد صحیح

float: برای ذخیره اعداد اعشاری

struct: برای تعریف ساختارهای داده

عملگرها:

+,-,*,/,: عملگرهای ریاضی

&&,||,!: عملگرهای منطقی

==,!=,<,>,<=,>=: عملگرهای مقایسه

++,–: عملگرهای افزایش و کاهش

دستورات شرطی:

if: برای بررسی یک شرط

else: برای تعیین یک بلوک کد جایگزین

switch: برای انتخاب یک بلوک کد از بین چندین بلوک

حلقه ها:

for: برای تکرار یک بلوک کد برای تعداد مشخصی

while: برای تکرار یک بلوک کد تا زمانی که یک شرط برقرار باشد

do while: برای تکرار یک بلوک کد حداقل یک بار

توابع:

void: برای تعریف توابع بدون مقدار برگشتی

int: برای تعریف توابع با مقدار برگشتی

return: برای برگشت از یک تابع

call: برای فراخوانی یک تابع

دستورات ورودی/خروجی:

printf(): برای چاپ متن در کنسول

scanf(): برای خواندن ورودی از کاربر

DDRx, PORTx: برای تنظیم جهت و مقدار پورت های I/O

PINx: برای خواندن مقدار پین های I/O

وقفه ها:

ISR(vect): برای تعریف یک روال وقفه

sei(): برای فعال کردن وقفه ها

cli(): برای غیرفعال کردن وقفه ها

تایمرها:

TCNTx: برای خواندن مقدار تایمر

OCRnx: برای تنظیم مقدار مقایسه تایمر

TCCRnx: برای تنظیمات تایمر

مبدل آنالوگ به دیجیتال (ADC):

ADMUX: برای تنظیمات ADC

ADCSRA: برای کنترل ADC

ADCL, ADCH: برای خواندن مقدار دیجیتال تبدیل شده

مبدل دیجیتال به آنالوگ (DAC):

DACx: برای تنظیم مقدار خروجی DAC

توضیح برخی دستورات پر کاربرد زبان C

if (condition)

دستور if یکی از دستورات شرطی در زبان برنامه‌نویسی C است و برای اجرای بخش‌هایی از برنامه بر اساس یک شرط خاص استفاده می‌شود. ساختار کلی دستور if به صورت زیر است:

توضیحات:

Condition:  یک عبارت منطقی که مقدار بولین (صحیح یا غلط) دارد. اگر مقدار این عبارت صحیح باشد، بخش دستورات داخل if  اجرا می‌شود. در غیر این صورت، بخش دستورات داخل else (اگر وجود داشته باشد) اجرا می‌شود.

{}:  این بلوک‌ها برای تعیین محدوده دستوراتی که در صورت درست بودن شرط یا در صورت درست نبودن شرط اجرا می‌شوند، استفاده می‌شوند. این بلوک‌ها می‌توانند شامل یک دستور یا چندین دستور باشند.

مثال:

در این مثال، اگر number مثبت باشد، پیام “The number is positive.” چاپ می‌شود. اگر منفی باشد، پیام “The number is negative.” چاپ می‌شود. و اگر صفر باشد، پیام “The number is zero.” چاپ می‌شود.

while(condition)

دستور while یکی از حلقه‌های تکرار در زبان برنامه‌نویسی C است. این حلقه به شما امکان می‌دهد تا یک بلاک از دستورات را تا زمانی که یک شرط مشخص صحیح باشد، تکرار کنید. ساختار کلی while به صورت زیر است:

توضیحات:

condition: یک عبارت منطقی که مقدار بولین (صحیح یا غلط) دارد. اگر مقدار این عبارت صحیح باشد، بلاک دستورات داخل while اجرا می‌شود. در غیر این صورت، حلقه تکرار متوقف می‌شود و اجرای برنامه به دستور بعد از حلقه ادامه پیدا می‌کند.

{}: این بلوک‌ها برای تعیین محدوده دستوراتی که در صورت درست بودن شرط اجرا می‌شوند، استفاده می‌شوند. این بلوک‌ها می‌توانند شامل یک دستور یا چندین دستور باشند.

مثال:

در این مثال، حلقه while از ۱ تا ۵ اجرا می‌شود. هر بار که به انتهای حلقه می‌رسیم (i++ افزایش می‌یابد)، شرط i <= 5 بررسی می‌شود. اگر این شرط صحیح باشد، دستورات داخل حلقه اجرا می‌شوند. این پروسه تا زمانی که شرط صحیح باشد ادامه پیدا می‌کند و پس از آن اجرای برنامه به دستور بعد از حلقه ادامه می‌یابد.

switch (expression)

دستور switch در زبان برنامه‌نویسی C یک دستور شرطی است که برای اجرای یکی از چندین بلوک کد متناظر با مقدار یک عبارت یا متغیر مورد استفاده قرار می‌گیرد. ساختار کلی switch به صورت زیر است:

توضیحات:

expression: یک عبارت که مقدار آن با یکی از مقادیر constant1, constant2, و … مقایسه می‌شود.

case constant1: بلوک کدی که اگر expression با constant1 برابر باشد، دستورات داخل این بلوک اجرا می‌شوند. هر case باید با یک break به پایان برسد تا اجرای بلوک‌های بعدی جلوگیری شود.

default: بلوک کدی که اگر هیچکدام از caseها با expression برابر نشود، دستورات داخل default اجرا می‌شوند. default اختیاری است.

مثال:

در این مثال، اگر day برابر با 3 باشد، پیام “Wednesday” چاپ می‌شود. اگر مقدار day با هیچکدام از caseها برابر نشود، بلوک دستورات داخل default اجرا می‌شود و پیام “Invalid day” چاپ می‌شود.

do-while

دستور do-while یکی از حلقه‌های تکرار در زبان برنامه‌نویسی C است. این حلقه به شکل زیر تعریف می‌شود:

در این حلقه، بلافاصله بعد از do بلوکی از دستورات اجرایی قرار دارد. این دستورات حتماً یک بار اجرا می‌شوند حتی اگر شرط درست نباشد. سپس شرط در while بررسی می‌شود. اگر شرط درست باشد، حلقه به بلوک do باز می‌گردد و دستورات دوباره اجرا می‌شوند. این فرآیند تا زمانی ادامه پیدا می‌کند که شرط درست نباشد.

مثال:

در این مثال، حلقه do-while از 1 تا 5 اجرا می‌شود و عبارت “Iteration” به همراه شماره تکرار چاپ می‌شود. حتی اگر شرط i <= 5 از ابتدا درست نباشد، حلقه یکبار حتماً اجرا می‌شود.

for (شرایط اولیه; شرط; عملیات پس از هر تکرار)

حلقه for یکی از حلقه‌های تکرار در زبان برنامه‌نویسی C است که برای اجرای تعداد مشخصی از تکرارها با استفاده از یک متغیر کنترلی و یک شرط مشخص می‌شود. ساختار کلی حلقه for به صورت زیر است:

توضیحات:

شرایط اولیه: عبارتی که در ابتدای حلقه اجرا می‌شود و معمولاً مقدار اولیه یک متغیر کنترلی را تعیین می‌کند.

شرط: یک عبارت منطقی که اگر درست باشد، حلقه ادامه پیدا می‌کند و اگر نادرست باشد، حلقه خاتمه می‌یابد.

عملیات پس از هر تکرار: عبارتی که بعد از اجرای بلوک دستورات اجرایی در هر تکرار اجرا می‌شود و معمولاً برای تغییر مقدار متغیر کنترلی استفاده می‌شود.

{}: بلوکی از دستورات که بر اساس شرایط for تکرار می‌شود.

مثال:

در این مثال، حلقه for از i=1 شروع می‌شود، تا زمانی که i کمتر یا مساوی 5 باشد ادامه پیدا می‌کند، و هر بار با افزایش i اجرای بلوک دستورات داخل حلقه انجام می‌شود. عبارت “Iteration” به همراه شماره تکرار چاپ می‌شود.

نتیجه‌گیری

زبان برنامه‌ نویسی C به دلیل قدرت، سرعت اجرا، و کنترل دقیق بر روی سخت‌افزار، همچنان یکی از زبان‌های محبوب در صنعت برنامه‌ نویسی است. ارتباط این زبان با میکروکنترلرها و ساختار اصولی آن باعث جذب برنامه ‌نویسان در حوزه‌ های مختلف و به ‌ویژه در حوزه الکترونیک و میکروکنترلرها شده است.

abolfazl وب‌سایت

دیدگاهتان را بنویسید