جدیدترین مطالب

مطالب ویژه مجله اینترنتی رایامگ

پیوندها

محبوب ترین مطالب رایامگ

یادگیری اصول برنامه نویسی - بخش اول

یادگیری اصول برنامه نویسی - بخش اول

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

یادگیری اصول برنامه نویسی - بخش اول

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

برنامه نویسی چیست؟

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

حل کردن مسئله

یادگیری اصول برنامه نویسی - بخش اول

بیشتر بخوانید: 0تا 100 یادگیری سیستم عامل - بخش اول

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

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

اما حل مسئله ابعادی گسترده تر از تصمیم گیری دارد. دانش حل مسئله با طرح نقش های، ما را از مبدأ به مقصد هدایت میکند. مهمترین سؤالی که در برخورد با هر مسئله در ذهن نقش میبندد شناخت و چگونگی حل مسئله آن است.

الگوریتم چیست؟

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

الگوریتم، روشی گام به گام برای حل مسئله است. که این گام ها به ترتیب در این مراحل قرار می گیرند:

- هر الگوریتم دارای شروع و پایان است و پس از تعداد محدودی گام یا مرحله خاتمه مییابد. هرچند ممکن است تعداد این مراحل بسیار زیاد باشد.

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

- الگوریتم شامل هیچ یا چندین ورودی  Inputاست.

- الگوریتم یک یا چندین خروجی  Outputدارد.

- الگوریتم باید با توجه به محدودیت های مجری آن طراحی شود تا قابل انجام باشد.

کاربرد روندنما (فلوچارت)

یادگیری اصول برنامه نویسی - بخش اول

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

روش های مختلف برنامه نویسی

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

برنامه نویسی دستوری (Imperative Programing):

یکی از شیوه های برنامه نویسی است که در آن مراحل اجرای یک برنامه کامپیوتری قدم به قدم توسط برنامه نویس بیان میشود. به عنوان مثال اگر قصد باز کردن دربی را داشته باشیم و با زبان دستوری قصد بیان آن را داشته باشیم خواهیم گفت بلند شو، به طرف درب نزدیک شو، دستگیره را بگیر و درب را به طرف بیرون هل بده. زبان ماشین، FORTAN، ALGOL، COBOL، BASIC، PASCAL و C از روش برنامه نویسی دستوری استفاده میکنند.

برنامه نویسی تابعی (Functional Programing):

در برنامه نویسی تابعی مراحل اجرای برنامه در قالب ترکیب توابع و فراخوانی آنها توسط برنامه نویس بیان میشود. برخلاف زبان هاImperative ، در زبان های Functional توابع نوع دادهای اولیه هستند و این بدین معنی است که در زبان های Functional ما میتوانیم از توابع به عنوان مقادیر (مانند متغیرها در زبان های Imperative) استفاده کنیم و آنها را به عنوان پارامتر برای یک تابع دیگر ارسال کنیم و یا به عنوان مقدار بازگشتی یک تابع از آنها استفاده کنیم.زبانهای Lisp وWolfram ،Clojure ،Scheme ،APL ، IPLازجمله زبان های برنامه نویسی تابعی هستند.

برنامه نویسی اعلانی (Declarative Programing):

در برنامه نویسی اعلانی منطق و هدف محاسبات بدون شرح چگونگی انجام آنها بیان میشود . این روش مطابقت کامل و واضح با منطق ریاضیات دارد. برخلاف زبانهای دستوری، زبان های اعلانی به جای تأکید بر چگونگی انجام یک عمل (how)  روی اینکه چه کاری را میخواهیم انجام دهیم (what)  تأکید میکنیم. مثل SQL که فقط با queryها میگوییم که چه میخواهیم ولی چگونگی انجام این عمل بیان نمیشود. زبان های برنامه نویسی اعلانی شامل، DASL Programming، Prolog ، SQL است.

برنامه نویسی رویه ای (Procedural Programing):

این روش بر پایه مفهوم فراخوانی زیر روال (تابع) است. هر تابع میتواند در هر نقطهای در طول اجرای برنامه فرا خوانده شود. بیشتر زبان های برنامهنویسی رویه ای از نوع برنامه نویسی دستوری نیز هستند. زبان های C وPascal ،BASIC،COBOL ،ALGOL ،FORTRAN  از روش برنامه نویسی رویه ای استفاده میکنند.

یادگیری اصول برنامه نویسی - بخش اول

برنامه نویسی شی گرایی (Object Oriented Programing):

یک شیوه برنامه نویسی است که ساختار اصلی آن، شیء میباشد. به این معنا که داده ها و توابع، در قالبی به نام شیء درکنار یکدیگر قرارگرفته و یک واحد را تشکیل میدهند. امروزه اکثر زبان های دستوری برنامه نویسی از فنون شی گرایی پشتیبانی میکنند. زبان هایی مانند,C# , Python , PHP Ruby, Perl, Java، ++ Cو  Delphi از جمله زبان های برنامه نویسی شی گرا می باشند.

برنامه نویسی منطقی (Logic Programing):

برنامه نویسی منطقی کاربرد منطق ریاضی در برنامه نویسی رایانه است. یک برنامه منطقی دارای ویژگی های قانون و منطق است. Answer set، Prolog زبان هایی مانند از جمله مشهورترین Datalog و Programming (ASP) زبان های منطقی است.

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

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

اصول Solid

یادگیری اصول برنامه نویسی - بخش اول

اصول Solid شامل 5 اصل است که شما را در مسیر حرفه ای شدن قرار می‌دهد و اگر از این اصول در کدهای تان استفاده کنید می‌توانید کدهایتان را قابل درک تر و انعطاف پذیر کنید و همینطور نگهداری از کدهاتون خیلی ساده تر از قبل می شود.

- اصل اول (Single Responsibility Principle):

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

- اصل دوم (Open Closed Principle):

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

- اصل سوم (Liskov Substituation Principle):

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

- اصل چهارم (Interface Segregation Principle):

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

- اصل پنجم (Dependency Inversion Principle):

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

الگوهای طراحی (Design Pattern)

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

تمرکز اصلی الگوی طراحی روی مفاهیم و اصول مهندسی نرم افزار و برنامه نویسی است. پس به جای اینکه فقط کدنویسی کنید به دنبال یادگیری مفاهیم برنامه نویسی باشید. الگوهای طراحی توسط گروهی از افراد به نام Gang Of Four به 3 دسته تقسیم می شوند:

الگوهای طراحی سازنده (Creational):

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

الگوهای طراحی ساختاری (Structural):

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

الگوهای طراحی رفتاری (Behavioral):

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

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

دیدگاه

دیدگاه خود را وارد نمایید

جدیدترین مطالب مجله اینترنتی رایامگ

خبر نامه مجله اینترنتی رایا مگ

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