مفهوم حلقه در برنامه نویسی چیست؟! و چه کاربردی دارد؟!

مفهوم حلقه در برنامه نویسی چیست؟! و چه کاربردی دارد؟!

مفهوم حلقه در برنامه نویسی چیست؟! و چه کاربردی دارد؟!


در برنامه‌نویسی، مفهومی به نام لوپ (Loop) وجود دارد که در ترجمه‌ی فارسی، به عنوان حلقه به کار برده می‌شود. که البته منظور، حلقه‌ی انگشت یا حلقه‌ی ازدواج نیست! 😀 چرا که آن حلقه، با واژه‌ی Ring در انگلیسی مشخص می‌شود.

تعریف Loop
شکلی که توسط یک منحنی ساخته شده باشد و خمیدگی آن در اطراف، از خودش عبور کرده باشد! از جمله Ring و یا …

حلقه در برنامه نویسی

در برنامه‌نویسی، ممکن است بخواهیم بخشی از کد پس از یک بار اجرا، دوباره اجرا شود! در این مواقع، شاید بگویید آن بخش از کد را دوباره می‌نویسیم؛ و یا کد را داخل تابعی نوشته و سپس آن تابع را پشت سرهم فراخوانی می‌کنیم! اما واضح است که نوشتن دوباره‌ی کد، منطقی نبوده و به جز زیاد شدن حجم کد، ویرایش و نگهداری آن را در آینده دشوار می‌سازد؛ و همچنین  ایجاد توابعی جدید، برای هر بخش از کدی که بخواهیم بارها و بارها اجرا شود نیز منطقی نبوده و اصلا شاید بخواهیم یک بخش از کدمان نه یک بار و نه ده بار، بلکه بی‌نهایت بار اجرا شود؛ خب نمی‌توانیم که بی‌نهایت بار یک تابع را صدا بزنیم!

بنابراین در چنین مواقعی، نیاز جدیدی حس می‌شود! و در اینجاست که مفهوم حلقه در برنامه‌نویسی شکل می‌گیرد!
البته قبل از مفهوم حلقه، مفهوم دیگری نیز به نام goto وجود دارد؛ که البته در اکثر زبان‌های برنامه‌نویسی، کلیدواژه‌ی آن وجود نداشته و در مواردی هم که وجود دارد، توصیه به استفاده نکردن از آن شده است! در واقع goto، برای پرش از یک خط از کد، به خط دیگر کد استفاده می‌شود؛ برای مثال از خط 10، دوباره به خط 1 پریده و کد را اجرا کنیم! اما احتمالا بدلیل سخت بودن خواندن کدهایی که از goto استفاده میشده یا مشکلاتی که به وجود می‌آورد، مفهوم جدیدی به نام حلقه شکل گرفته است.

همانطور که می‌دانید، یک حلقه، از یک نقطه شروع شده و در پایان، به همان نقطه‌ی اول می‌رسد! و از اینرو، به هنگام نوشتن کد، اگر آن بخش از کد در یک حلقه قرار گیرد، در نهایت به ابتدای خود خواهد رسید و دوباره از اول اجرا خواهد شد! که البته برنامه‌نویس می‌تواند دفعات اجرای حلقه را مشخص کرده و حتی هرجا که بخواهد، یک یا چند دور از چرخش حلقه را حساب نکند؛ و در نتیجه، به دور بعدی رفته (continue) و یا آن‌که حلقه را بشکند (break).

عموما در زبان‌های برنامه‌نویسی دو نوع حلقه وجود دارد. حلقه‌ی for و حلقه‌ی while! و به فرآیند تکرار حلقه iteration گفته می‌شود.

از حلقه‌ها در برنامه‌نویسی کاربردی، استفاده‌های زیادی می‌شود؛ از جمله اینکه بخواهیم یک کار مشترک را به ازای هر عضو یک آرایه انجام دهیم! به این عمل iterate آرایه می‌گویند؛ که توسط حلقه‌ها صورت گرفته و معمولا حلقه for بدین منظور استفاده می‌شود.

حلقه while

while یعنی تا «زمانی که»! و بدین منظور، نیاز به وجود یک شرط در اینجا احساس می‌شود؛ و در حلقه‌های while، ابتدا یک شرط بررسی شده و تا زمانی که آن شرط درست باشد، حلقه مدام اجرا خواهد شد. بنابراین هربار دوباره شرط بررسی شده و در صورت درست بودن، حلقه اجرا می‌شود؛ و این امر تا زمان صحیح بودن شرط ادامه خواهد داشت! همچنین اگر بخواهیم یک while نامحدود بنویسیم، شرط آن را همیشه true تعریف می‌کنیم که به while true نیز معروفند. (البته داخل حلقه می‌توانیم آن را شکسته و از حلقه خارج شویم که به break معروف است.

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

حلقه for

for یعنی «برای»! و این نوع حلقه، برخلاف while، هرشرطی را بررسی نمی‌کند و شرط آن براساس یک شمارنده مشخص می‌شود! به این صورت که متغیری را تعریف کرده و می‌گوییم که درهربار اجرای حلقه، مقدار این متغیر چقدر کم یا زیاد شود و سپس برای آن متغیر شرطی را نوشته (مثلا از یک مقدار کم یا زیاد باشد) و در صورت درست بودن آن شرط، بار دیگر حلقه اجرا خواهد شد.

البته while و for را می‌توان به جای یکدیگر استفاده کرد! برای مثال، متغیر شمارنده‌ی موجود در for را برای while، در خارج از حلقه تعریف کرد. اما از آن جهت که  این دو حلقه از جنبه‌های دیگری نیز ممکن است در زبان‌های برنامه‌نویسی مختلف تفاوت‌ها و ویژگی‌های جدیدی داشته باشند، تنها به تعاریف عمومی آن‌ها پرداختیم.

حالا به نظرتان با این تعریف for و شمارنده، چگونه می‌شود یک آرایه را طبق چیزی که در بالا گفتیم، itterete کرد؟! بله، درست است! با استفاده از شمارنده‌ی حلقه که به عنوان index در نظر گرفته شده و مقدار 0 تا طول آرایه را به آن اختصاص می‌دهیم و مشخص می‌کنیم که هربار 1 واحد افزایش یابد. (که اگر بخواهیم از خانه آخر به اول برگردیم، بایستی مشخص کنیم که هربار یک واحد کم شود.)

در اکثر زبان‌های برنامه‌نویسی، حلقه‌ای به عنوان foreach وجود دارد؛ که به معنای «برای هر» بوده و از آن جهت iterate کردن ساده‌ی اعظای آرایه‌ها استفاده می‌شود! چرا که در زمان استفاده از foreach، نیازی به تعریف یک شمارنده به عنوان index نخواهد بود و foreach هرعضو را در قالب یک متغیر به ما می‌دهد.

مفهوم continue در حلقه‌ها

معمولا در زبان‌های برنامه‌نویسی، مفهوم continue در بدنه‌ی حلقه‌ها تعریف شده است که با استفاده از آن می‌توان کاری کرد تا حلقه آن دور از اجرای خود را به انتها نرسانده و به دور بعدی برود! یعنی از اول اجرا شود. (البته توجه داشته باشید که در صورت استفاده از for، شمارنده تغییر خواهد کرد. همچنین در foreach نیز به مقدار بعدی آرایه خواهد رفت.

مفهوم break در حلقه‌ها

علاوه برا continue، مفهوم دیگری نیز در بدنه‌ی حلقه‌ها وجود دارد که با استفاده از آن، می‌توان حلقه را شکست! برای مثال، هربار مجموعه‌ای از دستورات اجرا می‌شوند و در این بین ممکن است شرطی وجود داشته باشد که یک سری اطلاعات را بررسی کرده اگر آن اطلاعات صحیح بودند، دیگر حلقه اجرا نشود! در این صورت از break  در داخل آن شرط استفاده کرده و آن حلقه را پاره می‌کنیم! بنابراین ادامه‌ی کدی که در خارج از حلقه و پشت سر آن نوشته شده است اجرا می‌شود.

مفهوم حلقه بی‌نهایت

اگر شرط حلقه طوری باشد که تا بی‌‎نهایت اجرا شود و در این حالت چنانچه بدنه‌ی آن به گونه‌ای باشد که کارایی (Performance) خوبی نداشته باشد؛ کد حلقه در نهایت به افت فشار سیستم دچار شده و پس از اجرای 100 یا 1000 و … خطا رخ خواهد داد. 😀

 

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

cp-codfk

نظرات ثبت شده 3 دیدگاه

توضیحات پیشنهادی نظرات اشتراک