مقدمه برنامه نویسی » آشنایی با الگوریتم و زبان برنامه نویسی
الگوریتم ها
برای کار کردن یک نرم افزار، مجموعه ای از داده نیاز است که بر روی آنها پردازش انجام بشود. نرم افزار ، این داده ها را میگیرد و به فرمی دیگر تبدیل می کند و ارائه میدهد. مثلا یک برنامه بانک اطلاعاتی ، اطلاعات مشتری ها را که به صورت 0 و 1 نوشته شده را میگیرد و آنها را در صفحه نمایش ، نشان میدهد. یا مثلا سرویس تلفن شما ، مدت زمان تماس های شما را ذخیره کرده و صورت حساب ها را بر اساس این اطلاعات تولید می نماید. ولی اساس فعالیت این نرم افزارها، الگوریتم آن ها می باشد. پیش از آن که بتوانید نرم افزاری بنویسید تا مساله ای را حل بکند، در آغاز باید آن را به چند مساله کوچک تر تقسیم بکنید و نحوه ی حل این مساله ها را به صورت گام به گام توضیح بدهید. الگوریتم برنامه ها کاملا مستقل از زبان برنامه نویسی که برای نوشتن برنامه از آن استفاده میکنید ، می باشد. پس میتونین الگوریتم یک برنامه را به هر صورتی که بهتون کمک میکنه تا مساله رو درک کنین ، بازگو کنید.برای مثال شما میتونین اون رو به زبانی که با اون صحبت میکنین برای خودتون توضیح بدهید ، یا اون رو با استفاده از شکلها (فلوچارت) رسم کنید. برای اطلاعات بیشتر درباره ی فلوچارت ، کلمه ی فلوچارت را در گوگل سرچ نمایید!!!
فرض کنین که برای یک شرکت خدمات تلفنی کار میکنین و می خواهید فاکتور مشترکان رو بر اساس تماس هایی که گرفته اند مشخص بکنین. الگوریتمی که برای حل مساله بالا میتونین به کار ببرین ، میتونه شبیه این الگوریتم باشه:
1) در آغاز هر ماه ، باید فاکتور هر کدام از مشترکان خودتون رو محاسبه بکنین
2) برای هر مشترک ، لیست تماس هایی که آن مشترک در ماه قبل گرفته است را دارید
3) مدت زمان هر تماس و همچنین ساعتی که آن تماس گرفته شده بود را میدونین و بر اساس این اطلاعات میتونین هزینه هر تماس رو مشخص بکنین.
4) برای هر مشترک ، فاکتور (صورت حساب) او برابر است با مجموع هزینه ی همه تماس هایی که داشته.
5) مالیات هر فاکتور را محاسبه میکنین.
6) پس از آن که فاکتور نهایی محاسبه شد ، باید اون رو چاپ بکنین.
این 6 مرحله، الگوریتم بخشی از نرم افزاری می باشد که هزینه ی ماهانه مشترکان یک مرکز خدمات تلفنی را محاسبه میکند. فرقی نمیکنه شما این نرم افزار رو با چه زبان برنامه نویسی می نویسین ، سی شارپ ، سی پلاس پلاس ، ویژوال بیسیک، پایتون ، java و یا هر زبان دیگری ، الگوریتم کلی برنامه تغییری نمی کند. (البته این 6 مرحله هم خیلی کلی می باشند و باید پیش از آن که توسط یک زبان برنامه نویسی نوشته بشوند به مرحله های کوچکتری شکسته بشوند و جزئیات بیش تری از اون شرح داده بشود.
برای کسانی که تازه وارد دنیای برنامه نویسی شده اند، یک خبر خوب و یک خبر بد دارم. خبر خوب این است که معمولا ایجاد یک الگوریتم برای برنامه های ساده و متوسط ، ساده است. مثلا در الگوریتم قبلی، فکر نکنم قسمتی به نظر شما گنگ باشد و واضح به نظر نرسد. معمولا الگوریتم ها از یک سری استدلال هایی پیروی میکنند که از نظر مردم عادی درست است. البته ممکنه که شما با الگوریتم هایی برخورد کنید که دارای فرمول های پیچیده ریاضی و یا فرمولهای دیگر علوم باشند و تصور کنید که این فرمول ها با استدلال های شما درست به نظر نمی رسند، اما خوب این فرمول ها هم از نظر افراد دیگری که آنها را میدانند درست به نظر میرسد. اما خبر بد این است کـه معمولا تبدیل یک الگوریتم به کد برنامه کار مشکلی است.پس باید بدونید چه طور یک الگوریتم را توسط یک زبان برنامه نویسی پیاده کنید و اگر خطایی هم رخ داد ، بتوانید آن خطا را برطرف کنید که به مرور زمان و با تمرین کردن ، در این کار انشاءالله حرفه ای می شوید.
زمانی که شما یک زبان برنامه نویسی را یاد گرفتید، اگر بخواهید پس از مدتی به زبان برنامه نویسی دیگری مهاجرت کنید می توانید از تجربه خود در الگوریتم ها و یا حتی کد زبان قبلی در زبان جدید نیز استفاده کرده و چندین زبان دیگر را هم مسلط بشوید که البته این کار رو من توصیه نمیکنم. شما یک زبان برنامه نویسی رو یاد بگیرید و تا آخرش رو بروید خیلی میتونه به نفعتون باشه و زمان زیادی رو میتونید صرفه جویی کنید. پس از همون اول با دقت انتخاب کنید.
یک زبان برنامه نویسی (programming language) چیست؟
میتونم بگوییم که یک زبان برنامه نویسی چیزی است که توانایی تصمیم گیری داشته باشد. رایانهها معمولا با سرعت زیاد و با دقت میتوانند تصمیم گیری بکنند. ولی در زمینه های بسیار ساده میتوانند این کار را انجام بدهند. به طور مثال “آیا این عدد بزرگتر از هفت است؟” و یا “آیا این ماشین قرمز است؟”
اگر بخواهید یک تصمیم گیری پیچیده را توسط رایانه انجام بدهید، باید اون رو به بخش های کوچک تری که توسط رایانه قابل فهم باشد ، تقسیم کنید. برای فهمیدن این که چگونه یک تصمیم گیری پیچیده رو به چند بخش ساده تقسیم کنید میتونید از الگوریتمها استفاده نمایید.
مثلا یک مساله که حل آن برای رایانه خیلی دشوار است، تشخیص چهره انسان ها می باشد. به نظرتون میتونید به یک رایانه بگویید که “آیا این عکس تصویری از علی رضا است؟” شما باید این مساله را به چند مساله کوچک تر که توسط رایانه قابل فهم باشه تقسیم کنین تا رایانه بتواند به آنها پاسخ صحیح بدهد.
سوال هایی که شما میتونید از رایانه ها بپرسین و بر اساس اون ها تصمیم گیری بکنید ، معمولا دارای جواب بله یا خیر هستند. این 2 پاسخ ، معمولا با عنوان درست و غلط و یا 1 و 0 هم در نظر گرفته می شوند.
ممکنه که فکر کنید تصمیم گیری فقط بر اساس بله و یا خیر یک محدودیت می باشد، ولی واقعاً این طور نیست. حتی در زندگی روزمره هم تصمیم هایی که می گیریم نوعی از بله و خیر است. موقعی که شما میخواهید درباره ی موردی تصمیم بگیرین ، یا اون را قبول میکنید (بله، درست و یا 1) یا اون را رد میکنید (نه، غلط یا 0 )
هر برنامه ای، با هر شکل و ظاهری که باشد و هر زبانی که نوشته شده باشد، از متدها (توابع و زیربرنامه ها: چندین خط کد که یک الگوریتم خاص را اجرا میکنند و) متغیرها (مکانی برای نگهداری و تغییر داده های برنامه ها ) تشکیل شده است.