آموزش حلقه for در C و C++ و آردوینو

در این آموزش، به کمک یک مثال یاد خواهید گرفت که چگونه از حلقه for استفاده کنید.
در برنامه نویسی ، یک حلقه به منظور تکرار یک بلوک کد استفاده می شود، تا زمانی که شرایط مشخص و از پیش تعیین شده ای رخ دهد.
برنامه نویسی C دارای سه نوع حلقه می باشد:
- For loop
- While loop
- Do … while loop
در این مقاله به بررسی حلقه ی for loop می پردازیم، در مقاله های آموزشی بعدی به بررسی دو مدل دیگر نیز می پردازیم.
از آنجا که در آردوینو ( Arduino ) نیز از زبان های C و C++ استفاده می شود، مطالبی که در ادامه بیان می شود عمومی هستند و برای میکروکنترلرها همینطور زمینه ی Embedded C کاربرد دارد.
حلقه for در زبان برنامه نویسی C
سینتکس مربوط به حلقه for به شکل ذیل می باشد.
for (startStep; testExpression; updateStep) { // statements inside the body of loop }
حلقه ی for چگونه کار می کند؟
- بخش startStep فقط یک بار اجرا می شود
- سپس، بخش testExpression که حاوی یک عبارت شرطی به منظور خاتمه یافتن حلقه است، ارزیابی می شود. در صورتی که شرایط ارزیابی شده، برقرار نباشد (نادرست)، حلقه ی for پایان می یابد.
- گرچه ، اگر نتیجه ی ارزیابی شده در بخش testExpression پس از ارزیابی برقرار باشد (صحیح باشد)، دستورات درون بدنه ی حلقه ی for اجرا می شود، سپس گام شمارنده ی حلقه توسط بخش updateStep به آپدیت و اعمال می شود.
- به منظور پیاده سازی بخش testExpression ، در یک مقاله ی جداگانه به بررسی عملگرهای منطقی و مقایسه ای خواهیم پرداخت.
فلوچارت حلقه for

مثال 1 : حلقه for
// Print numbers from 1 to 10 #include <stdio.h> int main() { int i; for (i = 1; i < 11; ++i) { printf("%d ", i); } return 0; }
نتیجه
1 2 3 4 5 6 7 8 9 10
- متغییر i با مقدار 1 ، مقدار دهی اولیه شده است.
- بخش testExpression که با عبارت i < 11 پیاده سازی شده است. از آنجایی که 1 کمتر از 11 یک گزاره صحیح می باشد و بدنه ی حلقه ی for اجرا می شود و این باعث می شود مقدار 1 در خروجی (به عنوان مقدار فعلی i) بر روی صفحه نمایش چاپ شود.
- بخش updateStep که به صورت ++i پیاده سازی شده است، اجرا می شود. حالا، مقدار i برابر دو می گردد. دوبارهو مجدد این testExpresstion (بخش دوم حلقه for) صحیح تشخیص داده می شود، به این ترتیب مجدد بدنه ی حلقه ی for اجرا می شود. این امر باعث چاپ شدن مقدار دو ( به عنوان مقدار فعلی i) بر روی صفحه نمایش می شود.
- دوباره، بخش updateStep اجرا شده و مقدار i یک واحد دیگر افزایش می یابد و هنوز مقدار جدید i که کمتر از 11 می باشد، در نتیجه شرط در بخش testExpression صحیحی بوده و موجب می شود دوباره بدنه ی for اجرا شده و عدد بعدی نیز چاچ شود.
- زمانی که متغییر i برابر مقدار 11 شود، شرط i < 11 برقرار نخواهد بود و نادرست تشخیص داده می شود، به این ترتیب حلقه ی for پایان می یابد.
مثال 2 : حلقه ی for
// Program to calculate the sum of first n natural numbers // Positive integers 1,2,3...n are known as natural numbers #include <stdio.h> int main() { int num, count, sum = 0; printf("Enter a positive integer: "); scanf("%d", &num); // for loop terminates when num is less than count for(count = 1; count <= num; ++count) { sum += count; } printf("Sum = %d", sum); return 0; }
نتیجه
Enter a positive integer: 10 Sum = 55
- مقدار وارد شده توسط کاربر در متغییر num ذخیره می شود. با فرض اینکه کاربر مقدار 10 را وارد کرده است.
- مقدار count با مقدار 1 ، مقدار دهی اولیه شده است. از آنجایی که عبارت شرطی count <= num (1 کمتر یا مساوی با 10) صحیح می باشد، بدنه ی حلقه ی for اجرا شده و مقدار sum برابر با مقدار 1 خواهد بود.
- سپس بخش updateStep که به صورت ++count پیاده سازی شده است، اجرا می شود و به این ترتیب مقدار جدید count برابر با 2 خواهد بود. دوباره شرط حلقه برقرار بوده ، چرا که مقدار 2 نیز کمتر از مقدار 10 می باشد. مجدد بدنه ی حلقه ی for اجرا می شود و موجب می شود مقدار جدید متغییر sum برابر با مقدار 3 گردد.
- ان فرایند ادامه خواهد یافت و مقدار sum محاسبه خواهد شد، تا زمانی که count برابر مقدار 11 گردد.
- زمانی که count برابر 11 می باشدو مقدار testExpression که شرط حلقه است، ارزیابی می شود و نتیجه 0 می باشد، یا به عبارت دیگر نادرست، به این ترتیب حلقه پایان می یابد.
- پس مقدار sum بر روی صفحه نمایش چاپ می شود.
منابع پیشنهادی جهت یادگیری بیشتر
لینک های مرتبط
جهت ارتقاء سطح و کیفیت آموزش ها نظرات خودتون رو راجع به این مطلب، از قسمت نظرات پایین همین صفحه، با ما در میان بگذارید.
درباره مرتضی زندی
خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.
نوشته های بیشتر از مرتضی زندیمطالب زیر را حتما مطالعه کنید
آموزش نصب و راه اندازی سیستم عامل Free RTOS برای آردوینو Arduino
آموزش نصب و راه اندازی سیستم عامل Free RTOS روی STM32
آموزش FreeRTOS نحوه استفاده از میوتکس Mutex
آموزش Free RTOS نحوه استفاده از سمافور Semaphore
آموزش STM32 راه اندازی وقفه خارجی EXTI
معرفی کتاب ARM
This site uses Akismet to reduce spam. Learn how your comment data is processed.
دیدگاهتان را بنویسید