نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

انواع الگوریتم ها نوع خطی الگوریتم ها

برنامه نویسی نوشتن چیزی با استفاده از زبان ناآشنا شخص دیگری است. با توسعه این حوزه از دانش، توسعه دهندگان حتی فراتر رفتند و یاد گرفتند که "چیزی" را بدون اینکه بفهمند به زبان روسی چگونه به نظر می رسد، بنویسند. مبتدیان یاد می‌گیرند که مستقیماً در C++ یا PHP کد بنویسند و از کتابخانه‌های زیادی استفاده می‌کنند و حتی واقعاً نمی‌دانند که آنچه را که در زبان خود صدا می‌سازند چگونه است. زبان مادری. الگوریتم سازی با توضیح و قابل فهم کردن این «چیزی» سر و کار دارد.

الگوریتم سازی

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

مزیت این روش عمدتاً این است که توسعه دهنده تنها 25٪ از زمان خود را صرف ترجمه می کند، در حالی که هنگام نوشتن یک برنامه به زبان جدید، 100٪ را صرف کار با یک زبان ناآشنا می کند. در این صورت او خود را در شرایط تنگ می بیند و نمی تواند انجام دهد چک خوببرای خطاها و بازنگری پروژه

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

مفهوم الگوریتم

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

بدیهی است که او برای حل معادلات درجه دوم نیاز به آموزش دارد. این بر اساس طرح زیر اتفاق می افتد:

  1. راه حلی را انتخاب کنید.
  2. تمام جزئیات روش انتخاب شده را مطالعه کنید.
  3. دو نکته اول را به زبانی که او می فهمد برای مجری آینده توضیح دهید.

سپس این امکان وجود خواهد داشت که به مجری وظایفی برای حل یک معادله درجه دوم داده شود. و اگر دو مرحله اول ساده و قابل درک باشد - تمام روش های راه حل در ادبیات مربوطه توضیح داده شده است، مرحله سوم دشوار است.

چگونه می‌توانید اطمینان حاصل کنید که ایده‌هایی که برای حل یک مشکل استفاده می‌شوند، به همان شکلی که شما آنها را درک می‌کنید، توسط مجری درک می‌شوند؟ در اینجا به مفهوم الگوریتم نزدیک می شویم. تجربه نشان می دهد که برای توضیح درست چیزی، کسی باید دنبال کند مراحل بعدی:

  • تعیین داده های اولیه (متغیر و ضرایب معادله درجه دوم)؛
  • فرآیند حل را به اجزای کاملاً شناخته شده برای اجراکننده تقسیم کنید (فرمول های متمایز و ریشه).
  • ترتیب انجام مراحل را مشخص کنید (ابتدا تفکیک کننده و سپس ریشه ها را محاسبه کنید).
  • شرایطی را تعیین کنید که در آن راه حل کامل در نظر گرفته شود (ریشه های یافت شده را با جایگزین کردن آنها در معادله به جای متغیرها بررسی کنید).
  • نشان می دهد که دقیقاً نتیجه راه حل باید چه باشد (ریشه ها متعلق به مجموعه اعداد واقعی هستند).

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

ویژگی های اساسی الگوریتم

گسسته. فرآیند حل یک مشکل همیشه شامل اقدامات کاملاً جدا شده به نام مراحل است که دارای ترتیب اجرای مشخصی هستند.

یقین - اطمینان - قطعیت. هر مرحله باید هم از نظر معنی و هم در کلید عملی که باید انجام شود، واضح و بدون ابهام باشد.

بهره وری. الگوریتم باید نتیجه بدهد. علاوه بر این، تعداد مراحل می تواند هزاران یا میلیون ها باشد، اما همیشه باید به نتیجه منجر شود.

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

قابلیت های کامپیوتری

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

اعداد ثابت به معنای همه اعداد است: 3.15، 100، 10 5، ویژگی آنها این است که در کل عملیات برنامه بدون تغییر باقی می مانند. متغیرها در طول اجرای کد معنی خود را تغییر می دهند و معمولاً با حروف x، y، max، min و غیره مشخص می شوند.

متغیرهای متنی، مانند متغیرهای عددی، می توانند ثابت یا متغیر باشند. در حالت اول، فقط متن است: "خوب"، "الف و ب" و غیره. در مورد دوم، این همان علامت نمادین متغیرهای عددی است: نام، شهر و غیره. تفاوت بین آنها عمدتاً نهفته است. در حافظه اختصاص داده شده رایانه برای ذخیره چنین متغیری.

عملیاتی که یک کامپیوتر می تواند انجام دهد:

  1. خواندن داده ها از دستگاه های ورودی (صفحه کلید، ماوس، فایل ها).
  2. محاسبه مقادیر با استفاده از توابع ریاضی: جمع، تفریق، sin، cos، ln و غیره - هر زبان برنامه نویسی مجموعه ای از توابع داخلی خود را دارد.
  3. خروجی داده (روی صفحه، روی کاغذ، در رابط شبکه).
  4. انتقال بین مراحل اجرای برنامه
  5. مقایسه دو کمیت (بزرگ، کمتر، مساوی).

اینها عملیات اساسی هستند که توسط اکثر زبان های برنامه نویسی قابل انجام هستند.

روش های توصیف الگوریتم ها

کلامی. این ساده ترین راه است. یک مثال می تواند باشد دستور آشپزی. استفاده از فرمول های ساده ریاضی مجاز است.

گرافیک. توضیحات با استفاده از نمودارها این یک روش خاص برای نوشتن الگوریتم ها با استفاده از یک نوع معمولی است زبان الگوریتمی- شکل ها و بلوک هایی که معنای خاصی دارند: یک مستطیل - یک عمل ساده، یک متوازی الاضلاع مایل - ورودی / خروجی، یک لوزی - یک شرط و غیره.

استفاده از زبان الگوریتمی شبیه به گرافیک، این نیز یک روش خاص برای نوشتن یک الگوریتم است. زبان های الگوریتمی زیادی وجود دارد. قوانین آنها سختگیرانه نیست وگرنه یک زبان برنامه نویسی خواهد بود. بیایید مثالی از الگوریتمی برای محاسبه دستمزد بسته به مدت خدمت که با استفاده از زبان الگوریتمی نوشته شده است را در نظر بگیریم.

alg حق الزحمه(int ST، ZP واقعی) arg ST res ZP شروع می شود اگر ST< 5 то zp = 150 иначе если ST <= 15 то ZP = 180 иначе ZP = 180 + (ST - 15)*10 конец

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

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

الگوریتم های بسیار متنوعی برای حل مسائل مختلف ایجاد شده اند. به عنوان مثال، هر کتاب درسی ریاضی بالاتر شامل صدها الگوریتم است: حل یک سیستم معادلات خطی، یافتن مادون های یک تابع، محاسبه انتگرال و غیره. اما با بررسی دقیق تر ساختار آنها، معلوم می شود که همه الگوریتم ها را می توان به دو دسته تقسیم کرد. چندین نوع بیایید با مثال هایی به این نوع الگوریتم ها نگاه کنیم.

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

اینها انواع اساسی هستند. همچنین شایان ذکر است که در برخی از ادبیات نوع چهارم نیز شناسایی شده است - بازگشتی. اما در نماد شماتیک تعیین خاصی ندارد و از طریق پایه ها پیاده سازی می شود.

هر الگوریتم محاسبه با مثال در زیر با جزئیات بیشتر مورد بحث قرار خواهد گرفت.

اصول الگوریتم سازی

  1. داده های اولیه را تعیین کنید.
  2. راه حلی را انتخاب کنید.
  3. روش انتخاب شده را بر اساس قابلیت های کامپیوتر (زبان برنامه نویسی) به مراحل تقسیم کنید.
  4. الگوریتم را در قالب یک نمودار اجرا کنید و ترتیب مشخصی از مراحل را مشخص کنید.
  5. خروجی نتایج محاسبات
  6. انتقال به خروجی مدار را نشان می دهد.

اشکال زدایی الگوریتم

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

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

الگوریتم های خطی

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

کلید حل این مشکل قفس دمای اضافی است که باید برای تعویض حیوانات استفاده شود.

الگوریتم های انشعاب

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

اجازه دهید مثالی از الگوریتمی برای حل مسئله پیدا کردن بزرگترین در بین سه عدد ارائه دهیم.

الگوریتم دور رابین

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

  1. اختصاص مقادیر اولیه به متغیرها بدون رعایت این شرط، حلقه احتمالاً از کار می افتد یا خطا می کند.
  2. بلوک برای محاسبه نتایج. این بدنه اصلی حلقه است.
  3. بررسی وضعیت نهایی فرآیند چرخه ای. اگر فراموش کنید که شرطی را که در آن حلقه باید به پایان برسد را مشخص کنید، الگوریتم برای همیشه اجرا خواهد شد.
  4. تغییر متغیرها این بلوک بعد از اینکه شرط پایان بررسی شود که آیا نادرست بوده است، اعمال می شود. اگر این بلوک را فراموش کنید، حلقه برای همیشه یک عمل را انجام می دهد و هرگز کامل نمی شود. بنابراین، مهم است که متغیرها در هر تکرار حلقه دچار نوعی تغییر شوند.

چندین نوع وجود دارد الگوریتم های چرخه ای: با شرط، پیش شرط و پارامتر.

بیایید با استفاده از مثال یافتن فاکتوریل عدد N یک الگوریتم چرخه ای بسازیم.

انواع دیگر الگوریتم ها

تعدادی الگوریتم دیگر وجود دارد که در طبقه بندی یا مبدا متفاوت هستند.

  • الگوریتم های مکانیکی به عنوان مثال، عملکرد یک موتور احتراق داخلی یا یک خط مونتاژ.
  • الگوریتم های احتمالی کار آنها بر اساس نظریه احتمالات و آمار ریاضی است.
  • الگوریتم های اکتشافی آنها در کار خود از ملاحظات عملی استفاده می کنند، بدون اینکه توجیه دقیق ریاضی داشته باشند.
  • الگوریتم های ژنتیک آنها ایده های بیولوژیکی را در کار خود به کار می برند.

الگوریتم ها می توانند ساده یا پیچیده باشند، اما همه آنها دارای ویژگی های مشترک هستند. بر اساس این ویژگی ها مرسوم است که سه نوع الگوریتم را تشخیص دهیم که با آنها آشنا می شویم.

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

به طور کلی، اجرای دستورات بر اساس یک الگوریتم تا حدودی یادآور بازی های رومیزی است که در آن شرکت کنندگان به نوبت تاس پرتاب می کنند و در زمین ها راه می روند. علاوه بر این، در حاشیه ممکن است نظراتی به این سبک وجود داشته باشد: "2 سلول به عقب برگرد" یا "5 سلول به جلو برو" (شکل 1).

برنج. 1. بازی رومیزی ()

یک مدل پیچیده تر برای اجرای الگوریتم، بازی معروف "انحصار" یا "مدیر" است (شکل 2).

برنج. 2. بازی "انحصار" ()

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

بسته به ترتیب اجرای دستور، سه نوع الگوریتم قابل تشخیص است:

الگوریتم های خطی؛

الگوریتم های انشعاب؛

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

"انحصار"

مونوپولی یکی از محبوب ترین بازی های رومیزی است. قوانین آن برای هر کسی که حداقل یک بار آن را بازی کرده است بسیار ساده و قابل درک است (شکل 4).

برنج. 4. بازی "انحصار" ()

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

به گفته منابع رسمی - شرکت برادران پارکر که از سال 1935 تا به امروز مونوپولی را تولید می کند - بازی تخته ای افسانه ای به شرح زیر متولد شد. در سال 1934، یک مهندس بیکار، چارلز دارو (شکل 5)، از دفتر فوق دعوت کرد تا بازی ای را که او در مورد تجارت املاک اختراع کرده بود، منتشر کند.

برنج. 5. چارلز دارو ()

برادران پارکر با کشف 52 خطای طراحی در بازی تخته، مخترع را رد کردند. با کارآفرینی ناب آمریکایی به چاپخانه رفت و 5 هزار نسخه از بازی را سفارش داد و خیلی سریع فروخت. برادران پارکر که متوجه شدند سود درست از زیر دماغشان درز می کند، با عجله حقوق مونوپولی را به دست آوردند و سال بعد به پرفروش ترین بازی رومیزی در ایالات متحده تبدیل شد و دارو به تجسم زنده رویای آمریکایی تبدیل شد.

با این حال، در عین حال، بازی های قبلی نیز وجود دارند که به طرز چشمگیری یادآور Monopoly هستند. معلوم می شود که دارو به سادگی اولین کسی بود که وارد شد و حق ثبت اختراع برای سرگرمی "عامیانه" دریافت کرد؟ بله و خیر. تحقیقات در سال های اخیر معمای منشأ مونوپولی را روشن کرده است.

در نیمه دوم قرن قبل از گذشته، هنری جورج، اقتصاددان سیاسی در ایالات متحده زندگی و کار می کرد. او پیشنهاد جایگزینی همه مالیات ها را با یک مالیات واحد - بر روی زمین، داد. مگی آغشته به ایده‌های خود، در ژانویه 1904 حق امتیاز بازی تخته‌ای The Landlord’s Game را دریافت کرد که هم از نظر قوانین و هم از نظر ظاهری شبیه به انحصار فعلی بود. اعتقاد بر این است که "بازی صاحبخانه" دو نسخه از قوانین داشت: بازیکنان پس از انجام یک بازی تحت قوانین مالیاتی فعلی، به مدل پیشنهادی جورج روی آوردند - و ظاهراً از مزایای ضروری آن متقاعد شدند. بنابراین، بازی سرگرمی نبود، بلکه ابزار مبارزه ایدئولوژیک بود.

این بازی به تولید انبوه نرسید، اما The Landlord’s Game به تدریج در سراسر آمریکای شمالی در نسخه‌های هنری پخش شد. موجی از علاقه به بازی تخته ای در طول سال های رکود بزرگ رخ داد: هزاران نفر از افراد بیکار خوشحال بودند که حداقل در سر میز بازی خود را به عنوان کیسه پول تصور می کردند. ظهور مردی مبتکر مانند چارلز دارو چند ماه طول کشید - و او ظاهر شد و شکوه مخترع انحصاری را برای چندین دهه به خود اختصاص داد.

البته کسانی بودند که ربودن یک قطعه از صاحبان حق چاپ را ضروری می دانستند. انحصارهای غیرمجاز چین را پر کرده است. و در کشور ما ردیف های منظمی از کلون ها تولید شده و می شود - "کارگزار"، "تعاون"، "مدیر" (شکل 6) ...

برنج. 6. بازی "مدیر" ()

با توجه به بازنگری اخیر در نقش Darrow در ایجاد انحصار و انقضای حق چاپ، از چنین شرکت هایی شکایت نخواهد شد. حتی اگر فرض کنیم که الیزابت مگی در جهان وجود نداشته است، قوانین مونوپولی مدت هاست که به مالکیت عمومی رسیده است. با این حال، Hasbro هنوز هم بخشی از حق ثبت اختراع را برای خود نگه می دارد: طراحی تراشه ها، طراحی گرافیکی، توالی سلول ها در زمین بازی.

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

برنج. 3. لامپ ()

به عنوان مثال، الگوریتم زیر برای جایگزینی لامپ سوخته خطی است (شکل 3):

1. سوئیچ چراغ را خاموش کنید.

2. لامپ سوخته را باز کنید.

3. یک لامپ جدید را پیچ کنید.

4. سوئیچ را روشن کنید تا بررسی کنید که چراغ روشن است.

با استفاده از بلوک دیاگرام، این الگوریتم را می توان به صورت زیر نشان داد:

(بلوک دیاگرام (شکل 7.) در پایان خلاصه را ببینید)

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

منطق تصمیم گیری را می توان به صورت زیر توصیف کرد:

اگر<условие>، آن<действия 1>,

در غیر این صورت<действия 2>

اگر پول داری پس نان بخر وگرنه نخر.

اگر امروز در مرکز هستید، پس با من تماس بگیرید، در غیر این صورت با من تماس نگیرید.

اگر درس های خود را آموخته اید، پس پیاده روی کنید، در غیر این صورت دروس خود را مطالعه کنید.

در بعضی موارد<действия 2>ممکن است غایب باشد این ممکن است هم به دلیل بدیهی بودن آن باشد (مثلاً در مثال اول - واضح است که اگر پول ندارید ، به سادگی نمی توانید نان بخرید) و هم به دلیل عدم نیاز به آن.

اگر<условие>، آن<действия 1>

اگر خود را قارچ شیری می نامید، پس وارد پشت شوید.

اگر می خواهید سالم باشید، پس خود را سخت کنید.

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

بیایید در قالب یک نمودار جریان، دنباله اقدامات یک دانش آموز کلاس ششم را که کلیدهای آپارتمان را فراموش کرده است، به تصویر بکشیم، که او اینگونه تصور می کند: "اگر مامان در خانه است، پس من می آیم و می نشینم تا انجام دهم. تکالیفم. اگه مامانم خونه نباشه با دوستام برم فوتبال بازی کنم تا مامانم بیاد. اگر دوستی بیرون نباشد، تا مادرم بیاید سوار تاب خواهم شد.»

(بلوک دیاگرام (شکل 8.) در پایان خلاصه را ببینید)

شرایط لازم و کافی

ما قبلاً با شما صحبت کرده ایم که شرایط لازم و کافی وجود دارد.

یک مثال از یک شرط ضروری خواهد بود:

برای اینکه پزشک شوید، باید تحصیلات پزشکی داشته باشید.

شرط داشتن تحصیلات پزشکی برای کار به عنوان پزشک ضروری است اما کافی نیست. در واقع، همه فارغ التحصیلان دانشکده پزشکی پزشک نمی شوند.

یک مثال از یک شرط کافی خواهد بود:

برای خنک تر کردن آن، فقط تهویه مطبوع را روشن کنید.

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

البته شرایط لازم و کافی در عین حال وجود دارد (به این شرایط می گویند معادل). مثلا:

برای آمدن تابستان لازم و کافی است که بهار تمام شود.

همانا اگر بهار تمام شد تابستان می آید و اگر بهار تمام نشد تابستان نمی آید. یعنی شرایط پایان بهار و ابتدای تابستان برابر است.

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

در عمل، اغلب مشکلاتی وجود دارد که در آن یک یا چند عمل باید چندین بار تکرار شوند تا زمانی که برخی از شرایط از پیش تعیین شده برآورده شوند.

به عنوان مثال، اگر باید یک جعبه سیب را مرتب کنید تا سیب های پوسیده را از سیب های رسیده جدا کنید، باید مراحل زیر را تکرار کنیم:

1. یک سیب بردارید.

2. ببینید پوسیده است یا خیر.

3. اگر پوسیده است آن را دور بیندازید و اگر نه در جعبه دیگری بگذارید.

این مجموعه اقدامات باید تا زمانی که سیب های داخل جعبه تمام شوند انجام شود.

شکلی از سازماندهی اقدامات که در آن توالی یکسانی از اقدامات تکرار می شود تا زمانی که شرایط از پیش تعیین شده برآورده شود. چرخه (تکرار).

وضعیتی که در آن یک حلقه هرگز تمام نمی شود نامیده می شود حلقه زدن.

باید الگوریتم هایی ایجاد شود که اجازه چنین موقعیت هایی را ندهند.

الگوریتم ساعت زنگ دار روی تلفن را در نظر بگیرید که باید ساعت 8 صبح زنگ بخورد و سپس هر 10 دقیقه یکبار زنگ بخورد تا خاموش شود.

در این مورد، بلوک دیاگرام آن به این صورت است: (به بلوک دیاگرام (شکل 9.) در انتهای خلاصه مراجعه کنید)

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

در درس بعدی در مورد الگوریتم های نوشتن در عمل بحث خواهیم کرد.

غربال اراتوستن

بیایید تعریف عدد طبیعی اول را به یاد بیاوریم.

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

نمونه هایی از اعداد اول: 2، 3، 5، 7.

نمونه هایی از اعداد مرکب: 4، 6، 8.

در قرن سوم قبل از میلاد، اراتوستن، ریاضیدان یونانی، الگوریتم زیر را برای یافتن تمام اعداد اول کوچکتر از یک عدد معین پیشنهاد کرد. پ:

1. تمام اعداد طبیعی را از 1 تا بنویسید n;

2. خط زدن 1;

3. زیر کوچکترین اعداد بدون علامت خط بکشید.

4. تمام اعدادی را که مضربی از اعداد خط کشی شده در مرحله قبل هستند خط بکشید.

5. اگر اعداد بدون علامت در لیست وجود دارد، سپس به مرحله 3 بروید، در غیر این صورت تمام اعداد خط دار اول هستند.

این یک الگوریتم چرخه ای است. هنگامی که اجرا می شود، مراحل 3-5 تکرار می شود تا زمانی که اعداد بدون علامت در لیست اصلی وجود داشته باشد.

بیایید نتیجه این الگوریتم را در نظر بگیریم. بیایید تمام اعداد اول از 1 تا 25 را یادداشت کنیم.

بیایید اعداد 1 تا 25 را یادداشت کنیم.

بیایید 1 را خط بکشیم. حالا بیایید زیر آن دو خط بکشیم. بیایید تمام اعداد زوج را خط بکشیم.

از آنجایی که همه اعداد علامت گذاری نشده اند، زیر 3 خط می زنیم. اکنون تمام اعدادی را که بر 3 بخش پذیر هستند خط می زنیم.

از آنجایی که همه اعداد علامت گذاری نشده اند، زیر 5 خط می زنیم. حالا عدد 25 را خط می زنیم.

از آنجایی که همه اعداد علامت گذاری نشده اند، بر 7 تأکید می کنیم.

شما نمی توانید چیزی را خط بکشید، اما همه اعداد علامت گذاری نشده اند، بنابراین ما زیر 11 خط می زنیم.

هیچ چیزی را نمی توان خط زد، اما همه اعداد علامت گذاری نمی شوند، بنابراین ما زیر 13 خط می زنیم.

اکنون تمام اعداد علامت گذاری شده اند.

اعداد اول را بدست می آوریم: 2، 3، 5، 7، 11، 13، 17، 19، 23.

برنج. 7.فلوچارت برای تعویض لامپ

برنج. 8. فلوچارت اقدامات برای دانش آموز کلاس ششم


برنج. 9. بلوک دیاگرام ساعت زنگ دار


کتابشناسی - فهرست کتب

1. Bosova L.L. علوم کامپیوتر و فناوری اطلاعات و ارتباطات: کتاب درسی پایه ششم. - M.: BINOM. آزمایشگاه دانش، 1391.

2. Bosova L.L. علوم کامپیوتر: کتاب کار کلاس ششم. - M.: BINOM. آزمایشگاه دانش، 1389.

3. Bosova L.L., Bosova A.Yu. دروس علوم کامپیوتر در کلاس های 5-6: کتابچه راهنمای روش. - M.: BINOM. آزمایشگاه دانش، 1389.

1. پورتال اینترنتی "شبکه ما" ()

2. پورتال اینترنتی "Hypermarket دانش" ()

3. پورتال اینترنتی "kaz.docdat.com" ()

مشق شب

1. §3.4 (Bosova L.L. Informatics and ICT: Textbook for 6th class).

2. صفحه 81 کار 2، 6 (Bosova L.L. Informatics and ICT: کتاب درسی برای کلاس ششم).

3. صفحه 82 تکلیف 9، 11، 13، 14 (Bosova L.L. Informatics and ICT: کتاب درسی برای کلاس ششم).

4. * صفحه 83 وظیفه 15 (Bosova L.L. Informatics and ICT: کتاب درسی کلاس ششم).

اصلی خواصالگوریتم ها عبارتند از:

1.

2.

3.

4.

·خطی

انشعاب؛

· چرخه ای

خطی

انشعاب

چرخه ای

ساختار برنامه در پاسکال

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

برنامهنام برنامه؛
(در حروف انگلیسی یک کلمه. آیا می خواهید عمیق تر بروید؟ باید از قوانین برای نوشتن شناسه ها استفاده کنید)

استفاده می کندکتابخانه های افزونه (ماژول)؛
(ویژگی های اضافی، می توان آنها را در این خط به برنامه متصل کرد)

برچسبلیست برچسب ها؛
(از یک مکان در برنامه برای "پرش" به مکان دیگر)



CONSTبخش توضیحات ثابت؛
(مقادیر ثابت، قابل تغییر نیستند)

تایپ کنیدشرح انواع متغیر؛ (نوع)

VARتعریف متغیرهای جهانی؛
(توضیح همه متغیرهایی که می توانند در برنامه تغییر کنند)

تعریف رویه ها;

تعریف توابع;

بلوک اصلی برنامه

تقریباً بعد از هر خط یک علامت وجود دارد " ; ". این علامت نشان می دهد که خط تمام شده است. علامت " ; " بعد از یک کلمه تابع قرار نمی گیرد شروعو آخری پایان.(که به معنای پایان برنامه است) و سپس یک نقطه.

3. عملگر شرطی، عملگر انتخاب. عملیات منطقی در پاسکال، جداول صدق، قوانین اساسی جبر منطق.
اظهارات مشروط

IF [عبارت بولی] سپس [گزاره 1]; Else [بیانات 2];

دستور IF به این صورت عمل می کند: ابتدا نتیجه یک عبارت Boolean را بررسی می کند. اگر نتیجه درست باشد، سپس [statement_1] به دنبال کلمه تابع Then اجرا می‌شود و [statement_2] حذف می‌شود. اگر نتیجه FALSE باشد، [statement_1] نادیده گرفته می شود و [statement_2] اجرا می شود.

برای [loop_parameter] := [n_z_p_ts] برای [k_z_p_ts] انجام [اپراتور];

FOR، To، Do کلمات تابعی هستند. [cycle_parameter] – پارامتر چرخه. [n_z_p_ts] - مقدار اولیه پارامتر چرخه. [k_z_p_ts] - ارزش نهاییپارامتر چرخه [اپراتور] - اپراتور دلخواه.

پارامتر حلقه باید یک متغیر ترتیبی باشد. مقادیر شروع و پایان پارامتر حلقه باید از همان نوع پارامتر حلقه باشد.

WHILE [شرط] آیا [اپراتور];

WHILE, Do – عملکرد کلمات. [شرط] – بیان نوع منطقی. [اپراتور] – اپراتور معمولی.

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



REPEAT [cycle_body]؛ تا [شرط]؛

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

منطقی و عملیات

عملیات AND منطقی روی دو بیت انجام می شود که آنها را a و b می نامیم. نتیجه انجام عمل منطقی AND اگر a و b برابر با 1 باشند برابر با 1 خواهد بود و در بقیه موارد نتیجه برابر با 0 خواهد بود. جدول صدق عمل منطقی و.

آ ب a&b

انواع داده ها

ترتیبی:

کل؛ بازی فکری; شخصیت؛ فهرست پذیر؛ فاصله

واقعی:

ساختار یافته:

آرایه ها رشته های؛ مجموعه ها سوابق؛ فایل ها؛

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

6. آرایه ها. تعریف، توصیف، ذخیره سازی و استفاده.
آرایه یک نوع داده ساختار یافته است که از تعداد ثابتی از عناصر از همان نوع تشکیل شده است.

ویژگی:

همه عناصر آرایه از یک نوع هستند.

آرایه یک نام برای همه عناصر دارد.

یک عنصر آرایه خاص توسط شاخص (ها) قابل دسترسی است.

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

زیر برنامه این بخشی از برنامه است که به عنوان یک ساختار نحوی جداگانه طراحی شده و با یک نام ارائه شده است. "تلفن" یک زیربرنامه، یعنی. اجرای اقدامات مشخص شده در یک زیربرنامه در قالب دستورات می تواند در نقطه ای از برنامه با تعیین نام این زیربرنامه انجام شود. علاوه بر مشخص کردن یک دنباله از اقدامات، هر زیربرنامه می تواند شامل توصیف مجموعه خاصی از محلیاشیاء - ثابت ها، انواع، متغیرها و غیره. این اشیاء برای سازماندهی کنش‌ها در یک زیربرنامه در نظر گرفته شده‌اند و معنادار هستند (یعنی قابل دسترسی یا قابل مشاهده) فقط داخلاین زیربرنامه

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

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

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

روش ProcedureName(FormalParametersList);
برچسب
فهرست‌بندی برچسب‌ها در بدنه رویه
CONST
شرح ثابت های محلی
تایپ کنید
شرح انواع محلی
VAR
شرح متغیرهای محلی
شروع
بدنه رویه
پایان.

مفهوم الگوریتم خواص، روش های توصیف. انواع الگوریتم ها

یک الگوریتم یک دستورالعمل دقیق و قابل درک به یک مجری برای انجام دنباله ای از اقدامات با هدف حل یک مسئله معین است.

اصلی خواصالگوریتم ها عبارتند از:

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

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

3. شخصیت توده ای این ویژگی نشان می دهد که الگوریتم باید برای حل تمام مسائل از یک نوع معین مناسب باشد.

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

با همه الگوریتم های مختلف برای حل مسائل، سه نوع اصلی از فرآیندهای محاسباتی را می توان تشخیص داد:

·خطی

انشعاب؛

· چرخه ای

خطییک فرآیند محاسباتی است که در آن تمام مراحل حل یک مسئله به ترتیب طبیعی ثبت این مراحل انجام می شود.

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

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

هدف : آشنایی دانش آموزان با اصول الگوریتم سازی.

سوالات مطالعه:

1. الگوریتم و خواص آن. روش های نوشتن الگوریتم ها

2. انواع اصلی الگوریتم ها. بلوک دیاگرام الگوریتم های معمولی.

پس از مطالعه این موضوع، دانشجو باید:

بدانید:

· خواص الگوریتم.

· بلوک برای ساخت مدار.

· انواع اصلی الگوریتم ها.

قادر بودن به :

· ساخت الگوریتم با توجه به شرایط مسئله.

مفهوم الگوریتم

مفهوم الگوریتم یکی از مفاهیم بنیادی علوم کامپیوتر است که از نظر تاریخی در یک رشته مستقل "نظریه الگوریتم ها" نزدیک به رشته دیگری "منطق ریاضی" شکل گرفت. از سوی دیگر، رشته «نظریه الگوریتم‌ها» را می‌توان میان دو رشته ریاضی و علوم کامپیوتر مرتبط با بخش برنامه‌نویسی در نظر گرفت.

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

الگوریتم دنباله ای از عملیات حسابی، منطقی و سایر عملیات های لازم برای اجرا در رایانه است.

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

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

الگوریتم را می توان به روش های مختلفی ارائه کرد، به ویژه:

1) شفاهی (توصیف شفاهی)؛

2) جدولی؛

3) در قالب یک نمودار بلوکی؛

4) به زبان الگوریتمی.

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

برنامهضبط یک الگوریتم در یک زبان برنامه نویسی است که در تعداد محدودی از مراحل به نتیجه نهایی منجر می شود.

ترجیحاً قبل از نوشتن الگوریتم به زبان الگوریتمی در قالب فلوچارت ارائه شود. برای ساختن یک الگوریتم در قالب بلوک دیاگرام، باید هدف هر یک از بلوک ها را بدانید. جدول 13 انواع بلوک ها و هدف آنها را نشان می دهد.

جدول 13

هدف بلوک

یک نظر

(یک بلوک مربوط به یک اپراتور است)

شروع یا پایان

بلوک دیاگرام ها

ورودی یا خروجی داده

I/O

فرآیند (به طور خاص محاسباتی)

تکالیف

اصلاح کننده حلقه

5.2. انواع اصلی الگوریتم ها

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

الگوریتم های خطی

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

مثال : ارزیابی عملکرد z= (x-y)/x +y2.

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

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

شکل 8. الگوریتم خطی

هدف بلوک ها در نمودار شکل 8:

· بلوک 1 در مدار به عنوان یک شروع منطقی عمل می کند.

· بلوک 3 یک عملیات حسابی را نشان می دهد.

· بلوک 4 نتیجه را نشان می دهد.

· بلوک 5 در مدار به عنوان تکمیل منطقی مدار عمل می کند.

الگوریتم های انشعاب

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

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

مثال : وقتی شرط برقرار شد ایکس>0 تابع محاسبه می شود: z= لوگاریتم ایکس+ y، در غیر این صورت، یعنی چه زمانی x=0یا ایکس<0 ، تابع محاسبه می شود: z= ایکس+ y2 .

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

راه حل : شکل 9 یک الگوریتم انشعاب را نشان می دهد که بسته به شرایط، یکی از شاخه ها اجرا می شود. در بلوک دیاگرام ظاهر شد بلوک جدید 3 که وضعیت مشکل را بررسی می کند. بلوک های باقی مانده از الگوریتم خطی آشنا هستند.

https://pandia.ru/text/78/136/images/image008_57.gif" width="300" height="360 src=">

شکل 9. الگوریتم انشعاب

مثال : حداکثر مقدار را از سه عدد صحیح مختلف وارد شده از صفحه کلید پیدا کنید. یک فلوچارت برای حل مسئله ترسیم کنید.

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

https://pandia.ru/text/78/136/images/image010_48.gif" width="492" height="456 src=">

برنج. 10. فلوچارت یافتن حداکثر

الگوریتم های چرخه ای

الگوریتم چرخه ای شامل تکرار یک عملیات یا چندین عملیات بسته به شرایط مسئله است.

دو نوع الگوریتم چرخه ای وجود دارد:

1) با تعداد چرخه معین یا با چرخه شمار.

2) تعداد چرخه ها ناشناخته است.

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

راه حل : در مثال، تعداد چرخه ها مشخص شده است. بر این اساس، الگوریتم چرخه های نوع اول انتخاب می شود. الگوریتم این کار در شکل نشان داده شده است. یازده

در بلوک دوم تعداد چرخه ها وارد می شود n و هر عدد صحیح ایکس, y .

یک بلوک جدید 3 در نمودار بلوک ظاهر شده است که در آن متغیر است من تعداد چرخه ها را می شمارد و بعد از هر چرخه یک عدد افزایش می یابد تا زمانی که شمارنده برابر شود i=n . در i=n آخرین چرخه اجرا خواهد شد.

بلوک سوم دامنه تغییرات در شمارنده چرخه (از i = 1قبل از i=n).

در بلوک چهارم، مقادیر متغیرها تغییر می کند: z, ایکس.

بلوک پنجم نتیجه را نشان می دهد. بلوک چهارم و پنجم در هر چرخه تکرار می شود.

شکل 11. الگوریتم چرخه ای با سیکل شمارنده

این نوع از الگوریتم‌های دور-رابین با توجه به تعداد دور ترجیح داده می‌شوند.

اگر تعداد چرخه ها ناشناخته باشد، بلوک دیاگرام های الگوریتم های چرخه ای را می توان در شکل های 12 و 13 ارائه کرد.

مثال : محاسبه y=y-ایکسخدا حافظ y> ایکس، اگر y=30 , ایکس=4. تعداد چرخه های تکمیل شده، مقدار نهایی متغیر را بشمارید در . مقدار یک متغیر را در یک حلقه خروجی بگیرید در, تعداد چرخه های تکمیل شده یک فلوچارت برای حل مسئله ترسیم کنید.

راه حل : در مثال، تعداد چرخه ها ناشناخته است. بر این اساس، الگوریتم چرخه های نوع دوم انتخاب می شود. الگوریتم این کار در شکل نشان داده شده است. 12.

وضعیت در ورودی حلقه بررسی می شود. بدنه حلقه دو بلوک را اجرا می کند:

1) y=y-x;من= من+1 ;

2) نمایش مقادیر متغیر من, y.

حلقه تا زمانی اجرا می شود که شرط برقرار باشد y>x. به شرطی که این متغیرها برابر باشند y=xیا y چرخه به پایان می رسد

الگوریتم ارائه شده در شکل 12 نامیده می شود الگوریتم چرخه ای با پیش شرط، از آنجایی که شرط در ابتدای حلقه یا در ورودی حلقه بررسی می شود. > ایکس در ورودی حلقه اگر شرط برآورده شد، به بلوک 4 و در غیر این صورت به بلوک 6 بروید.

در بلوک چهارم مقدار متغیر محاسبه می شود در من= من+1 .

بلوک پنجم نتیجه را نشان می دهد:

مقدار متغیر در,

من.

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

راه حل : در این حالت، شرط خروج از حلقه بررسی می شود: y<=x . در این شرایط، حلقه اجرا نمی شود. شرایط موجود در فلوچارت باید پس از چاپ به انتهای حلقه منتقل شود. حلقه تا زمانی اجرا می شود که شرط برقرار باشد y>x.

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

در بلوک دوم وارد می شوید y=30 , ایکس=4 .

بلوک سوم مقدار متغیر را محاسبه می کند در ، تعداد چرخه های تکمیل شده شمارش می شود من= من+1 .

بلوک چهارم نتیجه را نشان می دهد:

مقدار متغیر در,

تعداد چرخه های تکمیل شده من.

در بلوک پنجم شرایط بررسی می شود y <= ایکس برای خروج از چرخه اگر شرط برآورده شد، سپس به بلوک 6 بروید، در غیر این صورت به بلوک 3 بروید و چرخه تکرار می شود.

شکل 13. الگوریتم حلقه با شرط پس

کنترل سوالات

1. مفهوم الگوریتم.

2. انواع الگوریتم ها.

3. ساختارهای الگوریتمی پایه.

4. بلوک های اساسی الگوریتم گرافیکی.

5. ساختار الگوریتمی خطی. مثال.

6. انشعاب. مثال.

7. ساختارهای الگوریتمی چرخه ای. مثال.

بهترین مقالات در این زمینه