مفاهیم اولیه برنامه نویسی - یادداشت نخست (مفاهیم پایه)
میخواهم در یک سری سلسله یادداشت مروری داشته باشم بر مفاهیم اولیه برنامه نویسی، با دو هدف عمده. نخست اینکه بسیار میبینم برنامه های نوسته میشوند که برنامه نویس حتی مفاهیم اولیه را در نوشتن آنها بکار نگرفته و به خود نهیب میزنم که شاید خودم نیز در مواردی آن مفاهیم را فراموش کرده باشم. دوم، شاید بسیاری علاقه مندان به برنامه نویسی باشند که برای فهم مفاهیم اولیه با مشکل روبرو باشند و از انجایی که در اکثر کتب، خیلی از مفاهیم را بدیهی در نظر گرفته اند، منبع خوبی برای مرور این مفاهیم نیابند.
برنامه کامپیوتری چیست؟
یک برنامه کامپیوتری، توالی دستورات نوشته شده با استفاده از یک زبان برنامه نویسی برای انجام یک وظیفه خاص توسط کامپیوتر میباشد. یک برنامه کامپیوتری را یک نرم افزار مینامند که میتواند از یک یا چند میلیون خط کد تشکیل شده باشد. دستورات داخل برنامه را کد منبع برنامه مینامند.
الگوریتم چیست؟
از نقظه مشاهده برنامه نویسی، یک الگوریتم، یک رویه مرحله به مرحله برای حل یک مسئله میباشد. یک الگوریتم، یک روش موثر به عنوان یک مجموعه محدود دستورات تعریف شده میباشد. بنابراین، یک برنامه نویس تمامی مراحل مورد نیاز برای حل یک مسئله را برای نوشتن یک کد واقعی لیست میکند. به عنوان مثال به الگوریتم یافتن بزرگترین عدد از لیستی از اعداد ارایه شده، اشاره میکنم :
1- لیستی از اعداد M1 تا Mn را در نظر بگیرید
2- فرض کنید که اولین عدد، بزرگترین عدد باشد، بنابراین m1 = max
3- عدد بعدی را با اندیس از لیست به خاطر بیاوریدو مراحل بعدی را در موردش اجرا کنید
4- اگر بزرگترین عدد کمتر از Mi باشد، آنگاه max = Mi
5- اگر Mi آخرین عدد موجود در لیست است، مقدار max را چاپ کن
6-اگر شرط 5 محقق نشده بود، به مرحله 3 بازگرد
الگوریتم فوق، به صورت کاملا خام نوشته شده تا برای همگان قابل فهم باشد.
مفاهیم پایه
فرض بر این است که مطالعه کننده این سطور آشنایی کاملی با زبان انگلیسی دارد، چون پایه نگارش اکثر زبان های برنامه نویسی است، زبان انگلیسی گرامر مشخصی دارد که برای نگارش صحیح به این زبان باید مورد استفاده قرار گیرد، البته تمام زبانهای واسط انسانی (فارسی، غربی، آلمانی، اسپانیایی و …) عناصر مشابه به عنوان گرامر دارند، مشابه زبان های انسانی، زبانهای برنامهنویسی کامپیوتر نیز از عناصر گرامری تشکیل شدهاند. این عناصر عبارتند از :
-
محیط برنامه نویسی
-
گرامر پایه
-
انواع داده
-
متغییرها
-
کلمات کلیدی
-
عملگرهای پایه
-
تصمیمگیری
-
حلقهها
-
اعداد
-
کاراکترها
-
آرایهها
-
رشتهها
-
توابع
-
ورودی\خروجی
شرح هر یک از عناصر را در یادداشت های بعدی خواهم گفت.
نکته : شاید بهتر بود در ابتدای متن میگفتم اما هنوز هم دیر نشده، در این سلسله یادداشتهای از زبان های c و python استفاده خواهم کرد، اما از دیدگاه مفاهیم سایر زبان ها نیز مشابه بوده و تفاوت عمیقی ندارند.
محیط برنامه نویسی
اگر چه نصب محیط برنامه نویسی به یک عنصر زبان برنامهنویسی محسوب نمیشود، اما اولین مرحلهای است که برای شروع برنامه نویسی به آن نیاز است. زمانی که در مورد نصب محیط برنامهنویسی صحبت میکنیم، بدین معناست که نیازمندیم پایهای داشته باشیم که در آن برنامهنویسی را انجام دهیم، برای این موضوع لازم ایت موارد زیر را بر روی کامپیوتر خود نصب کنیم :
-
ویرایشگر متن
-
کامپایلر
-
مفسر
تذکر : در صورت عدم اطلاع از نحوه نصب نرمافزارهای فوق، حتما از افراد مطلع کمک بگیرید.
ویرایشگر متن چیست؟
ویرایشگر متن نرمافزاری است که برای ایجاد، نوشتن و ویرایش فایلهای متنیِ استفاده می شود و میتوانند برای تغییر کد منبعِ زبانهای برنامهنویسی مورد استفاده قرار گیرند. در کامپیوترهایی که از سیستم عامل خانواده ویندوز استفاده میکنند، نرمافزار NotePad به صورت پیشفرض در دسترس شما میباشد، در توزیعهای سیستم عامل گنو لینوکس نیز vi و برای کاربران Mac نیز نرم افزار TextEdit به صورت پیشفرض وجود دارد که شما میتوانید از آنها بره ببرید، علاوه بر موارد پیشفرض تعداد زیادی ویرایشگر متن به صورت رایگان و تجاری نیز وجود دارند کهدمعمولا دارای امکانات بیشتری در مقایسه با ویرایشگرهای ساده پیشفرض سیستم عاملها دارند و با نصب آنها میتوانید از قابلیتهای اضافه بهره مند شوید که این موضوع خارج از بحث این یادداشت بوده و احتمالا در یادداشتهای بعدب به ان خواهم پرداخت
کامپایلر چیست؟
کامپایلر به برنامه یا مجموعه برنامههایی گفته میشود که زبان های سطح بالا (نزدیک به زبان انسان - معمولا انگلیسی) را به زبان های سطح پایین (نزدیک به زبان ماشین) و در نهایت فایل اجرایی دو دویی تبدیل میکند.
بنابراین برای بسیاری از زبانها نیازمند کامپایلر میباشیم، در این سری از یادداشتها از زبان کامپایلری c استفاده میکنیم.
مفسر چیست؟
زبانهای برنامه نویسی وجود دارند که نیازمند کامپایل به قالب دودویی برای اجرا نیستند، زبان هایی مانند پایتون، phpو rubyو پرل با استفاده از مفسر که برنامهای برای اجرای برنامه های مفسری است، خوانده شده و خط به خط اجرا میشود.
## دستورات گرامری پایه اجازه دهید کار را با ابتداییترین دستورات تمام دورههای برنامه نویسی شروع کنیم، میخواهیم برنامهای بنویسیم که جمله Hello, World! را بر روی صفحه نمایش بنویسد.
#include<stdio.h>
main()
{
/* Prinff() function to write Hello, world! */
printf("Hello, world!");
}
این برنامه کوچک به ما در فهم مفاهیم پایه مختلف مرتبط با برنامه نویسی c کمک میکند.
خط نخست (include
هر برنامه c با main() شروع میشود که به عنوان تابع main شناخته میشود و سپس برنامه داخل یک براکت باز و بسته نوشته میشود. این بخش کد که داخل دو براکت قرار میگیرد، بدنه برنامه نامیده میشود. براکت باز میتواند در همان خط ابتدایی main (){ و یا در خط بعدی برنامه قرار گیرد
###توابع توابع کوچکترین واحد برنامه هستند و برای اجرای وظیفهای خاص بکار میروند. به عنوان نمونه در برنامه بالا د, تابع main() و printf() استفاده شده اند. اینجا تابع main() نقطه ورود به اجرای برنامه و تابع دیگر برای چاپ اطلاعات بر روی صفحه بکار میرود.
قابل ذکر است در برخی از زبان های برنامه نویسی از sub-routine بجای تابع استفاده میکنند اما کارکرد آنها مشابه هم میباشد.
نکته : یک برنامه c میتواند توضیحات داشته باشد که داخل /…/ نوشته میشود، این توضیحات برای ایجاد برنامه بصورت خوانا بکار میٰوند. توضیحات بصورت کامل از سوی کامپایلر و مفسر نادیده گرفته میشوند.
###فضای سفید white spaces یک دسته از کاراکترها هستند که بسیار استفاده خواهند شد اما در زمان کامپایل نادیده گرفته میشوند، این کاراکترها فضای خالی، تب، خطوط جدید میباشند که آنها را فضای سفید یا white spaces مینامیم.
نحوه نمایش | توضیحات | white spaces |
---|---|---|
\n | ایجاد خط جدید | new line |
\t | ایجاد تب | Tab |
empty space | ایجاد فضای خالی | space |
خطای گرامری Syntax Error
اگر قوانین تعریف شده در زبان برنامه نویسی را رعایت نکنیم در زمان کامپایل برنامه خطا گرامری ایجاد میشود و برنامه کامپایل نخواهد شد. اگر خطا حتی یک نقطه، کاما یا سمیکالن باشد کل برنامه اجرا نمیشود، لذا باید مراقب چنین خطاهای گرامری کوچک نیز باشیم، به عنوان نمونه در کد زیر از سمیکالن در انتهای دستور استفاده نشده :
#include<stdio.h>
main()
{
printf("Hello, world!")
}
برنامه بالا بعد از اجرا خروجی زیر را تولید میکند :
main.c : in function 'main':
main.c : 5 : 1 : error : expected ';' before '}' token
}
به خط پایانی اشاره میکند که اگر گرامر مناسب رعایت شده بود این خطا تولید نمیشد و پیش از کامپایل مجدد باید خطا رفع شود.
برنامه در زبان برنامه نویسی پایتون
برنامه زیر معادل برنامه پیشین در زبان برنامه نویسی پایتون میباشد :
#Print function to write Hello, World!
print "Hello, World!"
در زبان c ابتدا کامپایل انجام شده و سپس کد باینری ایجاد میشود اما در زبان پایتون کد مستقیم اجرا میشود، همانطور که پیشتر گفتیم زبان پایتون براساس مفسر است و در زبان پایتون به سمیکالون نیاز نیست، در عوض خط جدید دارای مفهوم بوده و به معنای پایان یافتن دستور است.