برنامه نویسی

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

فرض میکنیم شما فردی هستید که از برنامه نویسی هیچ اطلاعی ندارید پس با نام خدا مفاهیم را از ابتدا توضیح میدهم. در ابتدا باید بگویم که یکی از مهمترین خصوصیات Computer برنامه پذیر بودن آن است یعنی به خودی خود قادر به انجام کاری نمی باشد . بنابراین نیاز به این دارد که دستوراتی را از طرف ما دریافت کند ، این دستورات به کامپیوتر می گویند چگونه از سخت افزار (CPU , RAM و ...) خود در جهت هدفی معین که ما تعیین کرده ایم استفاده کند. مجموعه این دستورات همان برنامه ها هستند.

کامپیوتر زبان خاص خود را دارد که این زبان مجموعه ای از صفرها و یک ها است مثلا 11100111 می تواند یک دستور قابل فهم برای Computer باشد. البته مجموعه ای از این کدها تشکیل یک برنامه را می دهند که از Computer در خواست انجام کاری را می کند. به عمل نوشتن کدها برنامه نویسی (Programing) و به فردی که این کدها را می نویسد برنامه نویس (Programer) گفته می شود.

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

پیدایش زبان های برنامه نویسی :

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

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

آشنایی با زبان های برنامه نویسی امروزی :

یکی از قویترین زبانهای برنامه نویسی که امروزه وجود دارد و از نظر دشواری تقریبا بعد از 0و1 قرار دارد ، اسمبلی است. آموختن این زبان به مراتب از 0و1 سهل تر است ولی در مقایسه با زبانهای جدیدتر به مراتب مشکل تر است . دیگر زبانی که در عین داشتن قدرت به زبان انگلیسی نزدیکتر است C نام دارد که برگرفته شده از زبان B می باشد و تقریبا تمام سیستم عامل ها (مثلا Windows) و حتی بعضی زبان های برنامه نویسی با این زبان نوشته شده اند. زبانهای دیگری نیز نظیر Java,Pascal,Fortran,HTML,ASP,JSP,Basic,Delphi و ... وجود دارند که هر کدام کاربردهای خاص خود را دارند.

زبانهای شئ گرا ؟

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

اما امروزه کارتهای گرافیکی قویی ساخته شده اند که امکان کار با تعداد رنگهای زیادی را فراهم میکنند. بنابراین نمیتوان گفت که در این سیستم عامل از گرافیک باا نمیتوان بهره برد چون با برنامهنویسی (که البته نوشتن این برنامه ها چندان کار ساده ای نیست) میتوان نرم افزارهای گرافیکی جالبی خلق کرد. ولی بحث برسر سرعت، کیفیت، سهولت است. که با روی کار آمدن سیستم عامل سری Windows و دیگر سیستم عامل های گرافیکی این سه فاکتور فراهم گشته و با ظهور این سیستم عامل های گرافیکی نسل جدیدی از زبانهای برنامه نویسی روی کار آمدند که به آنها زبانه ای برنامه نویسی شئ گرا (Object Oriented یا Visual) می گویند.

نرم افزارهای این زبان های برنامه نویسی ، محیط خوبی را فراهم می کنند که برنامه نویس لاقل برای نوشتن نرم افزارهای خدماتی از دغدغه گرافیک برنامه خلاصی یابد، به عنوان مثال یک برنامه ماشین حساب از تعدادی دکمه تشکیل شده است (مانند Calculator در Windows)، طراحی این دکمه ها برای برنامه نویس در یک سیستم عاملی مانند Dos کار وقتگیری است. که در زبانهای شئ گرا با یک کلیک موشواره (Mouse) این امر میسر می گردد. بعلاوه اگر شما خواهان استفاده از موشواره باشید باید تمام حرکات آن را کنترل کنید تا با اشکال مواجه نشوید، اما در زبان های شئ گرا استفاده از موشواره به یک روال عادی تبدیل شده و برنامه نویس اصلا به آن فکر نم یکند.

برای برنامه نویسی از کجا باید شروع کرد؟

برای برنامه نویس شدن از کجا باید شروع کرد؟

برای شروع ، پس از آشنایی کلی با برنامه نویسی که امیدوارم در قسمتهای قبلی این آشنایی به دست آمده باشد می بایست آشنایی مختصری با مفاهیمی از قبیل متغییر (Variable) ، تابع (Function) ، رویه (Procedure) ، حلقه (Loop) و ... پیدا کنید.

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

این پیشنهاد به این علت است که این زبان نسبت به زبانهای دیگر از قید و بند کمتری برخوردار است بنابراین برای شروع مناسب است. البته در آینده با یاد گرفتن زبانهای قویتر خودتان بیشتر متوجه این مطلب می شوید. نکته دیگری که لازم میدانم متذکر شوم اینست که زبانهای امروزی دارای دونسخه تحت ِDOS و تحت Windows هستند. اگر برنامه نویسی را عمقی فرابگیرید یقینا باید از نسخه تحت DOS زبان انتخابی خود شروع کنید (یا لااقل از حالت غیر ویژوال آن استفاده کنید) تا در نسخه Windows آن تسلط و تبحر بیشتری داشته باشید. بعلاوه در برنامه نویسی تحت DOS اصول برنامه نویسی مشهودتر است، بنابراین آموختن دیگر زبان ها برای شما آسانتر می گردد.

مفاهیم اساسی برنامه نویسی:

متغیر(Variable) :

یکی از مهمترین و کلیدی ترین مفاهیم برنامه نویسی متغیرها هستند. متغیرها در واقع حکم یک ابزار خوب را برای برنامه نویس دارند. یک متغیر دارای یک اسم منحصر به فرد میباشد که آن را از بقیه متغیرها متمایز می کند، احتمالا با متغیرها در ریاضی برخورد کردید. مثلا در فرمول w=mg ، سه حرف w,m,g هر سه متغیر هستند منظور از متغییر یعنی چیزی که مقدار ثابتی ندارد مثلا در همین مثال m (جرم) مقدار ثابتی ندارد، چون جرم اجسام مختلف با هم فرق دارد. شاید بگویید g (شدت میدان گرانش) مقدار ثابتی دارد، ولی عملا اینطور نیست ما گاهی اوقات آن را 10 و گاهی 9/8 می گیریم، بنابراین وقتی mوg متغیر باشند پس حاصل ضرب آن ها نیز چون نمی تواند مقدار ثابتی باشد پس متغیر است.

اما در رComputer متغیرها مانند ظرفهایی هستند که هر کدام نامی دارند. درون این ظرفها مقادیری قرار می گیرند، که ما در متغیر می ریزیم. به عنوان مثال Sum=2 عدد 2 را درون ظرفی به نام SUM می ریزد، این ظرف از مقدار خود (منظور عدد 2 است) حفاظت می کند تا ما هر زمان که نیاز داشتیم بتوانیم به آن عدد دسترسی پیدا کنیم.

حال ممکن است این سوال به ذهن شما خطور کند که این ظرف ها در کجا قرار دارند؟ در جواب باید بگویم که محل این ظرفها در حافظه (RAM) است و مقادیر متغیرها به همان صورت 0و1 در حافظه قرار دارند. مثالی که زدم یک مقدار عددی بود ولی متغیر ها می توانند نوع های مختلفی از مقادیر مانند اعداد حقیقی (Real) ،صحیح(Integer) ،بولی(Boolean) و حتی رشته ها را در خود جای دهند.

علت تفکیک این انواع از یکدیگر این است که رایانه هر کدام از این انواع را به صورتی متمایز از بقیه در حافظه ذخیره می کند. مثلا مقادیر رشته ای حاوی نام یک شخص و یا حتی یک متن می توانند باشند و آن ها را نمی توان مثلا با عدد 2 جمع کرد. یا متغیرهای بولی که حاوی یکی از دوحالت درست (True) و غلط (False) هستند را نمی توان بر اعداد اعشاری ضرب کرد.

در تقریبا تمام زبان های برنامه نویسی نام متغیرها از قواعد خاصی باید پیروی کند که بدین صورت است:

اولین کاراکتر نام متغیر نمی تواند عدد باشد مثلا 123G پذیرفته نیست.

فاصله تنها به صورت زیرخط (Under Line) مجاز می باشد، مثلاSUM_Var.

تعداد کاراکترهای نام متغیر از مقدار مشخصی نمی تواند بیشتر باشد که این مقدار مشخص در هر زبانی متفاوت است.

در اینجا دو نکته را لازم میدانم ذکر کنم:

نکته اول: نامی که ما در داخل یک برنامه برای متغیر انتخاب می کنیم در واقع نام داخلی آن متغیر است. یعنی این نام تنها در داخل برنامه ما شناخته شده است.

نکته دوم: پیشنهادی که من در نام گذاری متغیرها میتوانم بکنم اینست که برای تفکیک کلمات در یک نام حرف اول هر کلمه را بزرگ و سایر حروف آن را کوچک بنویسید، مثلا MyVariable یا SumValue.

تابع(Function):

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

Sin(Alpha) که حتما با آن آشنایی دارید یک تابع است که در تمام زبان های برنامه نویسی وجود دارد اما کار آن چیست؟. می دانید که این تابع از مقدار داخل آرگومان (پرانتز) سینوس میگیرد، پس ahpla (زاویه، مثلا90) می شود مقدار ورودی و Sin، عملیات انجام شده و درنهایت مقدار سینوس ahpla ، نتیجه کار می باشد.

اما مسولیت توابع خیلی بیشتر از سینوس گرفتن است. توابع در برنامه نویسی امروزی حکم اجزای تشکیل دهنده یک برنامه را دارند. به عنوان مثال یک برنامه ماشین حساب را فرض کنید: این برنامه می تواند محاسبات ریاضی را انجام دهد، مثل Sqr,Tan,Cos و سایر اعمال ریاضی ساده و دشوار. هرکدام از این اعمال می توانند یک تابع باشند که مجموعه آن ها برنامه ماشین حساب را می سازند.

نوع مقادیری که ما به توابع می دهیم همان انواع متغیرها است که در مبحث قبلی ذکر شد.

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