آموزش برنامه نویسی به زبان ساده برای مبتدیان
خوش اومدین به یکی از جلسات مهم و کاربردی برای شروع برنامه نویسی از وبسایت Mr. Ebi . این جلسه آموزش برنامه نویسی به زبان ساده است و ما قرار هست که در این جلسه با مفاهیم پایه برنامه نویسی آشنا بشیم و من میخام به سوالهای مهم افراد علاقه مند به برنامه نویسی پاسخ بدم. در همین حالت که داریم با مفاهیم برنامه نویسی آشنا میشیم، این مفاهیم و اصول رو توی سه زبان پرطرفدار c ، Java و Python بررسی میکنیم. این کار باعث میشه که شما علاوه بر یادگیری مفاهیم و مقدمات برنامه نویسی، با سبک برنامه نویسی و شباهت ها و تفاوتهای این سه زبان پرطرفدار دنیای برنامه نویسی هم آشنا بشید.
بعد از این جلسه شما درک بسیار زیادی از کدهای این سه زبان و درک بسیار خوبی از مفاهیم برنامه نویسی دارید و آماده اید که در یک زبان برنامه نویسی به صورت تخصصی شروع به یادگیری کنید.
هرچند مثالهای ما برای ۳ زبان سی، جاوا و پایتون هست ولی یادگیری این مفاهیم و کلیات و اصول که در این جلسه در موردشون صحبت میکنیم، برای تمامی زبان های برنامه نویسی لازم و ضروری هست.
آشنایی با برنامه نویسی
قبل از اینکه آموزش برنامه نویسی رو شروع کنیم، باید بدونیم برنامه های کامپیوتری و نرم افزارها چی هستن و چطوری کار میکنن!
یه برنامه کامپویتری در حقیقت دنباله ای از دستورالعمل هاست که به یک زبان برنامه نویسی نوشته شده تا یه کار خاصی رو انجام بده.
دقت کنید دو بخش مهم توی این تعریف بود
۱. دنباله ای از دستورالعمل ها(یا الگوریتم: جلوتر توضیح میدم کامل)
۲. زبان برنامه نویسی
قطعه کد زیر یک برنامه بسیار ساده به زبان برنامه نویسی پایتون هست:
print "Hello World!"
نتیجه این قطعه کد در حقیقت یک برنامه کامپیوتری خیلی خیلی ساده است. برنامه بالا که شامل یک کد خط هست عبارت Hello World! رو روی صفحه نمایش نشون میده.
چند نکته مهم در برنامه ها
- یه برنامه کامپیوتری که بهش نرم افزار یا اپلیکیشن هم میگیم، میتونه شامل یه خط کد یا میلیون ها خط کد باشه.
- به دستورالعمل های یه برنامه کامپیوتری، کد یا کدمنبع اون برنامه هم میگیم.
- ما میتونیم به برنامه نویسی کامپیوتری، کدنویسی کامپیوتر هم بگیم.
- نرم افزارها جزء جدانشدنی کامپیوتر هستند و در واقع نرم افزار به کامپیوتر جان میبخشه و سخت افزار ما رو قابل استفاده میکنه.
همونطور که ما انسانها برای برقراری ارتباط با همدیگه زبانهای زیادی رو بوجود اوردیم، دانشمندان علوم کامپیوتری هم برای ارتباط انسان با کامپیوتر زبانهای زیادی رو ساخته اند.
کاربرد نرم افزارها
نرم افزارها جزء جدانشدنی زندگی انسان امروزی هستن. بعید به نظر میرسه که زمینه ای رو بتونید پیدا کنید که نرم افزارها در اون نقش نداشته باشن. نرم افزارهای اداری، صنعتی، نظامی، سرگرمی، پزشکی، اطلاعات و…. یک لیست بی انتها که همه و همه از نرم افزارها استفاده میکنن. اگه شما الان این متن رو میخونید حاصل عملکرد صحیح دهها و صدها و بلکه هزاران نرم افزار است. این صفحه وب حاصل کدهای زیادی است. سروری که این صفحه وب را میزبانی میکند برای بقا به نرم افزارهای زیادی احتیاج داره و از طرفی دیوایس و دستگاهی که در اختیار شما هست و این متن را میخوانید نیز همین وضعیت رو داره و نرم افزارهای زیادی در حال فعالیت هستند تا شما بتوانید این متن رو بخونید.
مقدمه ای بر برنامه نویسی
حالا که به درک درستی از برنامه کامپیوتری رسیدیم باید بدونیم که زبانهای مختلفی این امکان رو به ما میدن که دستورات خودمون رو به کامپیوتر بدیم. زبانهای برنامه نویسی بسیار زیادی هستند که برخی از مهمترین اونها رو در پایین اسم میبرم:
- C
- ++C
- Java
- Python
- Java Scrit
- PHP
- …
به شخصی که با استفاده از زبانهای برنامه نویسی، یک برنامه را خلق کنه و بتونه با کدنویسی، برنامه ایجاد کنه، برنامه نویس میگیم.
الگوریتم چیست
الگوریتم در حقیقت همان دستورالعمل هایی است که برای ایجاد یک برنامه پشت سرهم قرار میگیرن.
بیایید یه مثال خیلی ساده از الگوریتم رو با همدیگه بنویسیم. فرض کنید که ما میخوایم سال تولد یک شخص رو از او بگیریم، سن اون رو محاسبه کنیم و نمایش بدیم. دستورالعمل هایی که برنامه ما باید انجام بده به این ترتیب هستند:
- سال تولد رو دریافت کن
- سال جاری رو دریافت کن
- سال جاری رو از سال تولد کم کن
- نتیجه رو نمایش بده
به همین راحتی ما یه الگوریتم ساده نوشتیم. توجه داشته باشید که این فقط یه مثال برای آشنایی شما با الگوریتم هست وگرنه برای همین برنامه هم باید جزپیات بیشتری رو به الگوریتم اضافه کنیم. هرچی جزپیات الگوریتم بیشتر باشه، امکان بروز خطا در اجرای برنامه هم کمتر میشه.
مفاهیم برنامه نویسی
ما میدونیم که تمام زبانهای دنیا از جمله همین زبان فارسی که به آن صحبت میکنیم، دارای دستورزبان هستند. همه انسانهایی که به یک زبان صحبت میکنند با استفاده از یک سری کلمات، جملات خود را میسازند. دستور زبان این زبانها شاامل اسمها، فعلها، قیدها، صفتها و… هستند.
زبان های برنامه نویسی هم دارای همچین حالتی هستن. یعنی هرکدوم از این زبان ها دستور زبان (گرامر یا syntax) مخصوص خودشون رو دارن و برای نوشتن دستورالعمل ها باید بر طبق این سینتکس عمل کنیم.
زبانهای برنامه نویسی مثل زبان های انسان چندین عنصر در دستور زبان خود دارند. در اینجا به برخی از این عناصر پایه و اساسی که تقریبا در تمامی زبان های برنامه نویسی مشترک هستند را میبینیم:
- دستور زبان
- انواع داده ها
- متغیرها
- کلمات کلیدی
- عملگرها
- حلقه های تکرار
- اعداد
- رشته ها
- کاراکترها
- آرایه ها
- توابع
- و…
ما در ادامه این درس با تک تک این اصطلاحات و مفاهیم آشنا میشیم.
مقدمات برنامه نویسی
برای شروع برنامه به چند نرم افزار نیاز داریم
- ویرایشگر متن
- کامپایلر و یا مفسر
ویرایشگر متن
یکی از نرم افزارها و ابزارهای ضروری برای برنامه نویسی، ویرایشگر متن (Text Editor) هست. ما دستورالعمل های خودمون رو داخل ویرایشگر متن مینویسیم. ما میتونیم از ویرایشگرهای متنی ساده مثل Notead توی ویندوز و یا ویرایشگرهای پیشرفته تر مثل Atom یا VSCode و… استفاده کنیم.
کامپایلر و مفسر
ما باید بدونیم که کدهایی که ما در زبانهای برنامه نویسی مینویسیم برای سخت افزار و کامپیوتر قابل فهم نیست. همونطور ه میدونید زبان اصلی کامپیوتر 0 و 1 هست. زبانهای برنامه نویسی مثل C ، Java یا Python و… زبانهای سطح بالا هستند یعنی به زبان انسان شباهت دارند تا برای ما انسانها قابل فهم باشند. حالا کدی که توسط ما انسانها به زبانهای برنامه نویسی مختلف سطح بالا نوشته میشه، باید تبدیل بشه تا برای کامپیوتر قابل فهم باشه.
اینجاست که ضرورت نیاز یک نرم افزار که این کار تبدیل رو انجام بده احساس میشه. این تبدیل کننده ها دو دسته هستن:
- کامپایلرها Compiler
- مفسرها Interpreter
کامپایلر و مفسر هر دو یک کار را انجام میدن و اون تبدیل کدهای قابل فهم برای انسان به کدهای قابل فهم برای کامپیوتر هست. تفاوت این دو در این است که کامپایلر یک بار برای همیشه کدهای ما رو ترجمه میکنه ولی مفسر در طول اجرای برنامه هم در حال ترجمه و اجرای برنامه است.
برای درک بهتر این موضوع یک مثال میزنم:
شما یک متن فارسی رو برای ترجمه به زبان انگلیسی، در اختیار مترجم قرار میدید و اون براتون ترجمه میکنه و پرینت میگیره و در اختیارتون قرار میده. این میشه کامپایلر (Compiler)
تو یه حالت دیگه شما شخصی رو همراه خودتون دارید تا در یک جلسه ای که شما به فارسی صحبت میکنید، مترجم همزمان صحبت های شما رو به انگلیسی ترجمه کنه. این میشه مفسر (Interpreter)
گرامر پایه زبان های برنامه نویسی
تا اینجای کار ما با مفاهیم پایه و تئوری آشنا شدیم. وقتشه که بریم سراغ برنامه نویسی و با گرامر زبان های برنامه نویسی بیشتر آشنا بشیم. هرچند که این گرامر در زبانهای مختلف، متفاوت هست ولی همه اونها از یک سری اصول تبعیت میکنن.
ابتدا یک برنامه ساده Hello World رو توی زبان های مختلف برنامه نویسی پیاده سازی کنیم و توضیحاتی رو در مورد سینتکس و گرامر این زبانها میگم.
قطعه کد زیر به زبان C نوشته شده که عبارت Hello World رو توی صفحه نمایش نشون میده:
#include <stdio.h>
int main() {
/*استفاده از تابع printf برای نمایش پیغام*/
printf( "Hello, World!" );
}
اجرای این برنامه باعث میشه که عبارت Hello World روی صفحه نمایش نمایش داده بشه. این برنامه کوچک جزپیاتی از سینتکس زبان C رو در اختیار ما قرار میده. بیایید خط به خط این کد رو بررسی کنیم:
در خط اول stdio.h فراخوانی شده و به فایل ما اضافه شده. اینکه این چه فایلی هست و چه کاری میکنه و یا بود و نبودش چه فرقی داره موضوع صحبت ما نیست(بعدا در دوره C با این موارد آشنا میشیم) ولی باید بدونیم که این بخش برای نوشتن کد به زبان C اجباری است.
در خط بعدی یک تابع به نام main داریم که جلوی اون دو تا پرانتز باز و بسته است و بعد از اسم این تابع دو یک آکولاد باز هست که در خط آخر بسته شده. این بخش هم در همه برنامه های C اجباری هست و جزء سینتکس اصلی است. شما نمیتونید بدون تابع main برنامه C بنویسید.
توابع
حالا شاید بپرسید اصلا تابع چی هست؟
تابع در حقیقت قطعه کدی هست که برای انجام کار خاصی استفاده میشه. در زبانهای برنامه نویسی مختلف برنامه را میتوان به توابع مختلف تقسیم کرد. یکی از شیوه های سنتی برنامه نویسی، برنامه نویسی تابعی هست. یعنی اینکه برنامه را به قطعه برنامه های کوچکتر تبدیل میکنیم و از کنار هم قرارگرفتن این قطعات(تابع ها) برنامه اصلی شکل میگیره. برای استفاده از تابع (فراخوانی تابع) کافیه که اسم تابع رو به همراه پرانتز باز و بسته در مقابلش بنویسیم.
در برنامه بالا ما دو تابع main و printf رو استفاده کردیم. همانطور که گفتم استفاده از تابع main برای برنامه C اجباری هست. این تابع بدنه اصلی برنامه رو شکل میده. همچنین با استفاده از تابع printf تونستیم مقدار Hello World رو روی صفه نمایش بدیم.
توی زبانهای برنامه نویسی دیگه ممکن هست تابع رو به اسم دیگه ای بشناسیم. مثلا متد، sub routine و…
کامنت ها (توضیحات)
همونطور که در خط ۴ میبینید متنی را در بین کاراکترهای /* …..*/ قرار دادیم. در زبان C متون بین دو علامت توسط کامپایر نادیده گرفته میشه و جزو برنامه بحساب نمیاد. ما میتونیم از این امکان برای نوشتن توضیحات و یا غیرفعال کردن بخشی از کد برنامه استفاده کنیم. با این روش که گفتیم میتونیم چندین خط رو به توضیحات تبدیل کنیم. اگه توضیحات ما در یک خط بود کافیه که ابتدای اون خط از دو کاراکتر // استفاده کنیم. به این ترتیب ادامه متن در اون خط به عنوان توضیحات در نظر گرفته میشه.
سمیکالن ;
توی بیشتر زبانهای برنامه نویسی از جمله C، همه دستورات با کاراکتر ; تموم میشه. به عنوان مثال توی در انتهای دستور printf از سمیکالن استفاده کردم.
همینطور پیشنهاد میکنم برای خوانایی بهتر برنامه هر دستوری رو توی یه خط جدا قرار بدید.
خطای گرامری
اگه خطای گرامری یا syntax داشته باشید، در هنگام کامپایل برنامه با خطا مواجه میشید. به عنوان مثال اگه توی برنامه ای که بالا نوشتیم فراموش کنید که بعد از printf از سمیکالن استفاده کنید در هنگام کامپایل با خطای زیر مواجه میشید:
main.c: In function 'main':
main.c:7:1: error: expected ';' before '}' token
}
^
حالا که بعضی از سینتکس ها در C آشنا شدیم وقتشه که همین برنامه رو توی دو زبان جاوا و پایتون هم ببینیم:
برنامه Hello World در جاوا
public class HelloWorld {
public static void main(String []args) {
System.out.println("Hello, World!");
}
}
همونطور که میبینید تفاوت های زیادی بین کدهایی که در C نوشتیم با کدهایی که اینجا در Java نوشتیم وجود داره.
برنامه Hello World در پایتون
print "Hello, World!"
خب اگه منتظر کد بیشتری برای این برنامه هستید باید ناامیدتون کنم. یکی از ویژگی های پایتون سادگی و کوتاهی کدهاشه. اگه قصد دارید برنامه نویسی رو شروع کنید، پایتون میتونه بهترین انتخاب شما باشه.
نکته مهم دیگه ای که وجود داره اینه که زبانهای C و Java کامپایلری هستند ولی زبان پایتون یه زبان مفسری هست و شما میتونید برنامه خودتون رو مستقیما و بدون کامپایل اجرا کنید.
انواع داده در زبانهای برنامه نویسی
در هر برنامه ای ما با داده های مختلفی سروکار داریم که قرار هست در برنامه ما پردازش بشن. این داده ها میتونن داده های ساده و اولیه مثل اعداد صحیح یا کاراکترها یا اعداد اعشاری و… باشند. داده های ما میتونن داده های پیچیده تری مثل لیست ها، کلاس ها و… باشن.
موقع نوشتن یه برنامه ما باید نوع داده های خودمون رو مشخص کنیم در غیراینصورت ممکن هست کامپایلر متوجه نوع مدنظر ما نشه و اینجاست که ما یا با خطا مواجه میشیم یا اینکه در بعضی از زبانها با خروجی نامناسب که مدنظر ما نبوده مواجه میشیم.
برای تعریف نوع داده در زبانهای برنامه نویسی مختلف، شیوه های متفاوتی وجود داره ولی مقادیر float, string, int و… در بیشتر زبانهای برنامه نویسی رایج هستن.
انواع داده در C و Java
C و جاوا تقریبا انواع داده مشابهی رو پشتیبانی میکنن. هرچند جاوا از نوع داده بیشتری پشتیبانی میکنه. من توی لیست زیر انواع داده های مشترک بین این دو زبان نوشتم:
محدوه مقدار | کلمه کلیدی | نوع |
۰ تا ۲۵۵ یا ۱۲۸- تا ۱۲۷ | char | کاراکتر |
۲,۱۴۷,۴۸۳,۶۴۷ تا ۲,۱۴۷,۴۸۳,۶۴۷- | int | اعداد صحیح |
۳۲,۷۶۷ تا ۳۲,۷۶۸- | short | اعداد صحیح کوچک |
۲,۱۴۷,۴۸۳,۶۴۷ تا ۲,۱۴۷,۴۸۳,۶۴۷- | long | اعداد صحیح بزرگ |
۱٫۲E-38 تا ۳٫۴E+38 | float | اعداد ممیزی شناور |
اینها انواع داده اولیه هستن و میشه با اینها انواع پیچیده تری رو ایجاد کرد. مثلا نوع داده رشته یا String توالی از کاراکترها است.
انواع داده در پایتون
پایتون ۵ نوع داده استاندارد دارد. بر خلاف زبان C که باید نوع داده را تعریف کنیم، پایتون نیازی به تعریف نوع داده نداره و بصورت هوشمند نوع داده رو تشخیص میده.
انواع داده در پایتون:
- اعداد (Number)
- رشته (String)
- لیست (List)
- تاپل (Tuple)
- دیکشنری (Dictionary)
نوع داده اعداد شامل همه نوع عددی (اعم از صحیح و اعشاری) میشه.
رشته هم که دنباله و توالی از کاراکترهاست.
تاپل و دیکشنری هم جزو داده های پیچیده پایتون هستند که در دوره پایتون در موردشون صحبت میکنیم.
متغیر ها در برنامه نویسی
متغیر در بخشی از حافظه است که برای نگهداری داده استفاده میشه. ما به این بخش از حافظه نامی اختصاص میدیم و در طول برنامه از مقدار ذخیره شده در اون حافظه استفاده میکنیم. ما میتونیم این مقدار رو در طول برنامه تغییر بدیم.
مثلا من قصد دارم عدد ۱۰ رو در داخل برنامه خودم ذخیره کنم و در طول برنامه ازش استفاده کنم. کافیه که نام دلخواه بهش اختصاص بدم و هر موقع که این مقدار رو لازم داشتم اون نام رو قرار بدم تا مقدار ۱۰ فراخوانی بشه.
نحوه ساخت متغیر
روش ساخت یه متغیر توی زبانهای مختلف برنامه نویسی، تقریبا یکسان هست. به عنوان مثال در زبان C اول نوع متغیر رو مینویسیم و بعد از اون نام متغیر رو قرار میدیم.
/* تعریف متغیر برای ذخیره داده از نوع long */
long a;
/* تعریف متغیر برای ذخیره داده از نوع float */
float b;
همینطور اگه من بخوام همزمان دو یا چند متغیر از یک نوع داده تعریف کنم، میتونم این کار رو بصورت زیر انجام بدم و بین نام های متغیرها از کاما استفاده کنم:
int a, b;
چند نکته مهم که موقع تعریف متغیر باید در نظر داشته باشیم:
- یه متغیر فقط میتونه یه نوع داده رو توی خودش ذخیره کنه.
- متغیر رو باید اول تعریف کنم و بعد از اون استفاده کنم. تعریف متغیر بعد از استفاده باعث ایجاد خطا میشه.
- ما نمیتونیم دو متغیر همنام تعریف کنم.
- اسم متغیر نمیتونه با عدد شروع بشه. ما فقط اجازه داره از حروف الفبا، اعداد و آندراسکور (ـ) برای نامگذاری متغیرها استفاده کنیم.
ذخیره داده در متغیر
برای اینکه یه مقداری رو داخل متغیر خودمون ذخیره کنیم باید از عملگرد = استفاده کنیم.
#include <stdio.h>
int main() {
int a;
int b;
a = 10;
b = 20;
}
دسترسی به مقدار متغیر
برای دسترسی به مقدار ذخیره شده داخل متغیر، کافیه که از نام متغیر استفاده کنیم:
#include <stdio.h>
int main() {
int a;
int b;
a = 10;
b = 20;
printf( "Value of a = %d\n", a );
printf( "Value of b = %d\n", b );
}
با اجرای قطعه برنامه بالا خروجی زیر رو خواهیم داشت:
Value of a = 10
Value of b = 20
متغیرها در جاوا
روش تعریف و استفاده از متغیر توی جاوا خیلی شبیه C هست.
توی برنامه زیر من دو تا متغیر تعریف کردم که مقدار اونها رو به همراه مقدار مجموع اون دو رو توی خروجی نمایش میدم:
public class DemoJava {
public static void main(String []args) {
int a;
int b;
a = 10;
b = 20;
System.out.println("Value of a = " + a);
System.out.println("Value of b = " + b);
System.out.println("Value of a = " + a + " and value of b = " + b);
}
}
خروجی این برنامه:
Value of a = 10
Value of b = 20
Value of a = 10 and value of b = 20
متغیر در پایتون
بالاتر گفتم که پایتون نیازی به تعریف نوع داده نداره و مفسر خودش نوع داده رو تشخیص میده. برنامه زیر رو ببینید:
a = 10
b = 20
print "Value of a = ", a
print "Value of b = ", b
print "Value of a = ", a, " and value of b = ", b
خروجی این برنامه پایتون رو در زیر ببینید:
کلمات کلیدی در برنامه نویسی
توی زبانهای برنامه نویسی مختلف، کلماتی وجود دارند که از قبل توسط خود برنامه رزرو شدن. ما اجازه استفاده از این کلمات رو برای نامگذاری توابع و متغیرها نداریم. در مثالهای قبلی با بعضی از این کلمات آشنا شدیم. مثلا نام نوع داده int ، String و… جزء کلمات کلیدی هستند. در اینجا لیست کلمات کلیدی و رزرو شده زبانهای C ، جاوا و پایتون رو میتونید ببینید:
کلمات کلیدی در زبان C
توی جدول زیر میتونید لیست کامل کلمات کلیدی زبان C رو ببینید:
کلمات کلیدی در زبان Java
در جدول زیر میتونید لیست کامل کلمات کلیدی زبان جاوا رو ببینید:
کلمات کلیدی در زبان پایتون
در جدول زیر میتونید لیست کامل کلمات کلیدی زبان پایتون رو ببینید:
هیچ ضرورتی نداره که این کلمات کلیدی رو حفظ کنید، در یادگیری هر زبان با این کلمات آشنا خواهید شد.
عملگرها در برنامه نویسی
عملگرها توی برنامه نویسی ، نمادها و علائمی هستند که اعمال محاسباتی(ریاضی)، انتسابی و مقایسه ای و منطقی رو روی دو یا چند تا مقدار انجام میدن.
ما قصد داریم با مفهوم و کاربرد عملگرها در این بخش آشنا بشیم.
در اینجا ما به بررسی سه گروه زیر از عملگرها میپردازیم:
- عملگرهای محاسباتی
- عملگرهای انتسابی و مقایسه ای
- عملگرهای منطقی
عملگرهای محاسباتی (ریاضی)
این عملگرها وظیفه انجام اعمال ریاضی و محاسبات رو به عهده دارند. میتونیم برنامه ای بنویسیم که از یک جمع ساده تا معادلات پیچیده چند درجه ای رو میتونیم با استفاده از این عملگرها برامون حل کنه.
عملگرها اعمال ریاضی رو روی مقادیر مختلف انجام میدن. به این مقادیر عملوند میگیم.
توی این لیست میتونید تعدادی از عملگرهای محاسباتی زبان C رو ببینید:
در مثالهای زیر متغیر A مقدار ۱۰ و متغیر B مقدار ۲۰ رو داره
عملگر | توضیحات | مثال |
+ | دو تا عملوند رو با هم جمع میکنه | A + B = 30 |
– | عملوند دوم رو از عملوند اول کم میکنه | A – B = -10 |
* | دو عملوند رو در هم ضرب میکنه | A * B = 200 |
/ | عملوند اول رو تقسیم بر عملوند دوم تقسیم میکنه | B / A = 2 |
% | باقیمانده تقسیم عملوند اول بر عملوند دوم رو برمیگردونه | B % A = 0 |
عملگرهای مقایسه ای
این دسته از عملگرها هم کاربرد خیلی زیادی توی برنامه نویسی دارند. وظیفه این عملگرها همونطور که از اسمشون معلوم هست مقایسه دو یا چند متغیر یا عملوند با همدیگه هست. نتیجه مقایسه با عبارت به صورت true یا false است.
در مثالهای زیر متغیر A مقدار ۱۰ و متغیر B مقدار ۲۰ رو داره
عملگر | توضیحات | مثال |
== | بررسی میکنه دو عملوند برابر هستند یا خیر | (A == B) نتیجه false |
=! | بررسی میکنه دو عملوند نابرابر هستند یا خیر | (A != B) نتیجه true |
> | بررسی میکنه مقدار عملوند سمت راست کوچکتر از عملوند سمت چپ هست یا خیر | (A < B) نتیجه true |
< | بررسی میکنه مقدار عملوند سمت راست بزرگتر از عملوند سمت چپ هست یا خیر | (A > B) نتیجه false |
=> | بررسی میکنه مقدار عملوند سمت راست کوچکتر یا مساوی عملوند سمت چپ هست یا خیر | (A <= B) نتیجه true |
=< | بررسی میکنه مقدار عملوند سمت راست بزرگتر یا مساوی عملوند سمت چپ هست یا خیر | (A >= B) نتیجه false |
عملگرهای منطقی
برای ترکیب چند شرط باید از عملگرهای منطقی استفاده کنیم. توی جدول زیر عملگرهای منطقی زبان C رو ببینید:
مقدار یا شرط A رو true و مقدار یا شرط B رو false در نظر بگیرین:
عملگر | توضیحات | مثال |
&& | عملگر and منطقی. اگه هر دو عملوند true باشن، true رو برمیگردونه | (A && B) نتیجه false |
|| | عملگر or منطقی. اگه حداقل یکی از عملوندها true باشه مقدار true رو برمیگردونه | (A || B) نتیجه true |
! | عملگر نقیض. نقیض مقدار یا شرط رو برمیگردونه | نتیجه A! مقدار false و نتیجه B! مقدار true |
عملگرهایی که در اینجا برای زبان C نام بردیم در جاوا و پایتون هم دقیقا همین عملکرد رو دارن.
دستورات شرطی در برنامه نویسی
در برنامه های کامپیوتری شرایط بسیار زیادی پیش میاد که باید تصمیم گیری انجام بشه. با توجه به شرایط باید تصمیم مناسب گرفته بشه. همه زبانهای برنامه نویسی امکاناتی رو برای کنترل این وضعیت برامون در نظر گرفتن. ما میتونیم با استفاده از دستورات شرطی تصمیم گیری های مختلف رو در برنامه بگیریم و پیاده سازی کنیم.
دستور if
دستور if پایه ای ترین و ابتدایی ترین نوع شرط در زبانهای برنامه نویسی است. ساختار کلی به این صورت است که یک شرطی رو تعریف میکنیم، حالا اگر این شرط درست بود کدهای مشخصی اجرا میشن و اگه شرطمون درست نبود اون کدها اجرا نمیشن.
مثال زیر که به زبان C نوشته شده رو ببینید:
#include <stdio.h>
int main() {
int x = 45;
if( x > 95) {
printf( "سطح دانش آموز خوب است");
}
if( x < 30) {
printf( "سطح دانش آموز ضعیف است");
}
if( x < 95 && x > 30 ) {
printf( "سطح دانش اموز متوسط است");
}
}
ما در برنامه بالا از ۳ شرط استفاده کردیم، چون مقدار ۴۵ بین مقادیر ۳۰ و ۹۵ هست فقط دستور if سوم اجرا میشه.
دستورات if…else
این نوع از دستورات شرطی شبیه به if هست با این تفاوت که اگه شرط ما درست نباشه بلوک دیگه ای به اسم else اجرا میشه.
قطعه کد زیر رو ببینید:
#include <stdio.h>
int main() {
int x = 45;
if( x > 95) {
printf( "سطح دانش آموز خوب است");
} else {
printf( "سطح دانش آموز خوب نیست");
}
}
دستورات if…elseif…else
این نوع دستور else هم میتونه یه شرط جدید رو بررسی کنه.
مثال زیر رو ببینید:
#include <stdio.h>
int main() {
int x = 45;
if( x > 95) {
printf( "سطح دانش آموز خوب است");
}
else if( x < 30) {
printf( "سطح دانش آموز ضعیف است");
}
else if( x < 95 && x > 30 ) {
printf( "سطح دانش آموزش متوسط است");
}
}
همینطور که میبینید اگه شرط اولی درست نباشه میاد و شرط دوم رو چک میکنه و همینطور در مرحله بعد به همین شکل هست.
دستور switch
از دستور switch برای بررسی یه مقدار با موارد (caseهای) مختلف استفاده میشه. اگه مقدار موردنظر با مقدار یکی از case ها برابر باشه کد اون قسمت اجرا میشه.
دستور break از ادامه مقایسه با سایر موارد جلوگیری میکنه و در آخر هم میتونیم از بلاک default استفاده کنیم که اگه مقدار ما با هیچکدوم از caseها برابر نبود این بخش اجرا بشه.
#include <stdio.h>
int main() {
int x = 2;
switch( x ){
case 1 :
printf( "یک");
break;
case 2 :
printf( "دو");
break;
case 3 :
printf( "سه");
break;
case 4 :
printf( "چهار");
break;
default :
printf( "هیچ کدام");
}
}
خروجی دستور switch بالا مقدار «دو» هست.
دستورات شرطی در Java
در برنامه زیر از دستورات شرطی if…elseif…else توی جاوا استفاده کردیم:
public class DemoJava {
public static void main(String []args) {
int x = 45;
if( x > 95) {
System.out.println( "سطح دانش آموزش خوب است");
}
else if( x < 30) {
System.out.println( "سطح دانش آموز ضعیف است");
}
else if( x < 95 && x > 30 ) {
System.out.println( "سطح دانش آموز متوسط است");
}
}
}
دستورات شرطی در Python
در برنامه زیر از دستورات شرطی if…elseif…else توی پایتون استفاده کردیم:
x = 45
if x > 95:
print "سطح دانش آموز خوب است"
elif x < 30:
print "سطح دانش آموز ضعیف است"
elif x < 95 and x > 30:
print "سطح دانش آموز متوسط است"
print "پایان"
حلقه های تکرار در برنامه نویسی
برای اینکه چند بار یه قطعه کد رو اجرا کنیم میتونیم اون رو درون یک حلقه قرار بدیم و مشخص کنیم که به تعداد مشخصی انجام اون کدها رو تکرار کنه. این کار توی همه زبان های برنامه نویسی عملی معمول هست و همه زبان های برنامه نویسی چندین حلقه تکرار دارند که ماهیتشون توی همه زبانها یکسانه.
حلقه for
ما با استفاده از حلقه for میتونیم با تعریف تعداد دفعات تکرار، یه قطعه کد رو تکرار کنیم. مثال زیر رو ببینید:
#include <stdio.h>
int main() {
for ( int i=0 ; i<5; i++ ) {
printf( "Hello, World!\n");
}
}
خروجی کد بالا اجرای ۵ بار نمایش عبارت Hello, World! روی صفحه نمایش هست.
حلقه for نیازمند یه شمارنده است که توی مثال بالا i این وظیفه رو به عهده داره. هر دور که حلقه میزنه یه دونه به عدد i اضافه میشه و طبق شرطی که ما تعریف کردیم تا زمانی که i کوچکتر از ۵ هست این حلقه تکرار میشه. در نتیجه ۵ بار این حلقه تکرار میشه.
بنابراین حلقه for ما دارای ۳ قسمت هست که با سمیکالن از همدیگه جدا میشن. بخش اول مقدار اولیه شمارنده – بخش دوم شرط حلقه و بخش سوم افزودن ۱ به شمارنده در هر دور اجرای حلقه
حلقه While
یکی دیگه از حلقه ها توی زبانهای برنامه نویسی حلقه While هست. این حلقه شباهت زیادی به for داره و با اون میتونیم به تعداد دفعات مشخص قطعه کدی رو اجرا کنیم. مثال زیر رو ببینید:
#include <stdio.h>
int main() {
int i = 0;
while ( i < 5 ) {
printf( "Hello, World!\n");
i = i + 1;
}
}
تا زمانی که شرط داخل پرانتز جلوی While درست باشه، این حلقه تکرار میشه.
حلقه do while
این حلقه تکرار هم مثل حلقه while هست با این تفاوت که این حلقه شرط رو در انتها چک میکنه. این باعث میشه که کدهای داخل حلقه حداقل یک بار اجرا بشن و اگه شرط انتهای حلقه درست بود تکرار ادامه پیدا میکنه.
#include <stdio.h>
int main() {
int i = 0;
do {
printf( "Hello, World!\n");
i = i + 1;
}
while ( i < 5 );
}
دستور break
در داخل حلقه ها هرگاه از دستور break استفاده کنیم، حلقه تموم میشه و از حلقه خارج میشیم.
دستور continue
این دستور برای متوقف کردن دور فعلی حلقه استفاده میشه و باعث میشه که به ابتدای دور بعدی حلقه بریم.
حلقه ها در زبان جاوا
زبان جاوا هم از سه حلقه for و while و do while پشتیبانی میکنه. نمونه ای از حلقه while در کد زیر رو ببینید:
public class DemoJava {
public static void main(String []args) {
int i = 0;
while ( i < 5 ) {
System.out.println("Hello, World!");
i = i + 1;
}
}
}
در جاوا دستورات break و continue هم کاربرد مشابه زبان C رو دارند.
حلقه ها در زبان پایتون
پایتون هم از سه حلقه ای که معرفی کردیم پشتیبانی میکنه.
تفاوتی که بین حلقه ها در پایتون با زبان های جاوا و C هست اینه که در پایتون از آکولادها استفاده نمیکنیم و از روش دندانه گذاری (Tab) بجاش استفاده میکنیم.نمونه ای از حلقه while توی پایتون رو میتونید توی کد زیر ببینید:
i = 0
while (i < 5):
print "Hello, World!"
i = i + 1
print "Loop ends"
در پایتون هم دستورات break و continue کاربرد مشابه زبان C رو دارند.
آرایه ها در برنامه نویسی
آرایه ها متغیرهایی هستن که میتونن چند داده هم نوع رو توی خودشون ذخیره کنن. فرض کنید من لازم دارم ۵ عدد رو ذخیره کنم. میتونم بیام ۵ تا متغیر عددی تعریف کنم و یا یک آرایه عددی تعریف کنم که ۵ تا خونه داشته باشه و توی هر خونه اون یه عدد رو ذخیره کنم.
طبیعتا اگه این تعداد متغیرها بیشتر بشه ضرورت استفاده از آرایه رو بیش از پیش درک میکنیم.
نحوه ساخت آرایه
در زبان C اگه بخوایم یه آرایه بسازیم کافیه ابتدا نوع داده ها رو مشخص کنیم و بعد اسم آرایه خودمون رو بنویسیم و در آخر از براکت [] استفاده کنیم. در داخل براکت میتونیم تعداد خانه های آرایه رو هم مشخص کنیم.
مثال زیر رو ببینید:
int number[10];
در خط بالا من یه آرایه از نوع int با ۱۰ خانه ایجاد کردم.
مقداردهی آرایه ها
برای مقداردهی به آرایه ها چند روش متفاوت وجود داره. یکی از روشها اینه که موقع تعریف آرایه از در داخل آکولاد مقادیر موردنظرم رو وارد کنم و با کاما اونها رو از هم جدا کنم. نمونه زیر رو ببینید:
int number[5] = {10, 20, 30, 40, 50};
روش دیگه این هست که من عناصر رو یکی یکی مقداردهی کنم. هر خانه از آرایه یک شماره منحصر بفرد داره که با استفاده از اون شماره میتونیم به محتویات اون دسترسی داشته باشیم. این شماره ها با صفر برای اولین خانه شروع میشه و تا آخر شماره گذاری میشه. من با نوشتن شماره اندیس یا همان شماره خانه در داخل براکت میتونم به اون خونه مقداردهی کنم. مثال زیر رو ببینید:
number[4] = 50;
من مقدار پنجمین خانه از آرایه number رو با مقدار ۵۰ مقداردهی کردم. دقت کنید با توجه به اینکه شماره اندیس خانه از صفر شروع میشه، شماره اندیس پنجمین خانه عدد ۴ میشه.
دسترسی به عناصر یا داده های آرایه
همونطور که گفتم ما با استفاده از اندیس هر عنصر از آرایه به اون خانه دسترسی پیدا کنیم.
برنامه زیر مثال جامعی از ایجاد، مقداردهی و دسترسی به عناصر آرایه با استفاده از حلقه های تکرار توی زبان C رو نشون میده:
#include <stdio.h>
int main () {
int number[10];
int i = 0;
while( i < 10 ) {
number[ i ] = i + 100;
i = i + 1;
}
i = 0;
while( i < 10 ) {
printf("number[%d] = %d\n", i, number[i] );
i = i + 1;
}
return 0;
}
آرایه ها در جاوا
نحوه تعریف آرایه ها توی جاوا کمی با زبان C متفاوته ولی شیوه دسترسی به عناصر دقیقا مثل C هست.
برای مثال برای ساخت آرایه توی جاوا از کلمه کلیدی new استفاده میکنیم. مثال زیر رو ببینید:
public class DemoJava {
public static void main(String []args) {
int[] number = new int[10];
int i = 0;
while( i < 10 ) {
number[ i ] = i + 100;
i = i + 1;
}
i = 0;
while( i < 10 ) {
System.out.format( "number[%d] = %d\n", i, number[i] );
i = i + 1;
}
}
}
آرایه ها (لیست) در پایتون
پایتون ساختمان داده ای به اسم آرایه نداره ولی از ساختمان داده ی دیگه ای به اسم list استفاده میکنه که شبیه آرایه هست.
مثال زیر نمونه ای از یک لیست در پایتون هست:
# Following defines an empty list.
number = []
i = 0
while i < 10:
# Appending elements in the list
number.append(i + 100)
i = i + 1
i = 0
while i < 10:
# Accessing elements from the list
print "number[", i, "] = ", number[ i ]
i = i + 1