آموزش مقدماتی جاوا
فصل اول : دستورات متداول در جاوا



پیش نیاز : آموزش مقدماتی جاوا – فصل صفر

در ابتدا از کلیه دوستانی که به تاپیک قبل لطف داشتند تشکر می کنم. امیدوارم که این مطالب
کارگشای بعضی نیازهای دوستان باشد.

در این فصل به مروری کلی در مورد دستورات متداول در جاوا می پردازیم. همانگونه که مطلع هستید دستورات زبانهای برنامه نویسی را می توان به سه دسته کلی تقسیم نمود. این دستورات شامل دستورات :
۱- انتساب و تعریف متغیر
۲- دستورات شرطی
۳- دستورات حلقه و تکرار

دستورات جاوا بسیار شبیه به دستورات زبان C می باشد. در ابتدا و قبل از بررسی دستورات جاوا لازم است که با بعضی از عملگر های این زبان آشنا شویم. عملگر های جاوا را می توان به دو دسته عملگر های محاسباتی و عملگر های منطقی تقسیم بندی کرد.
عملگر های منطقی عملگر هایی هستند که حاصل آنها یک مقدار بولین (boolean) می باشد. عملوند های این عملگر ها می توانند محاسباتی یا منطقی باشند. این عملگر های معمولا برای بررسی شرط ها و در دستورات دیگر این زبان استفاده می شوند. این عملگر ها را در زیر مشاهده می کنید.
== تساوی
!= عدم تساوی
> بزرگتر از
>= بزرگر یا مساوی با
< کوچکتر از
<= کوچکتر یا مساوی با
&& عملگر و منطقی (AND)
|| عملگر یای منطقی (OR)
?: شرط . در ادامه توضیح داده خواهد شد.
! نقیض (NOT)
^ یای اختصاصی (XOR)

عملگر های محاسباتی به دو دسته کلی تقسیم می شوند. عملگر های تک عملوندی و دو عملوندی.
عملگر های تک عملوندی شامل موارد زیر می باشند.
+ نشانگر اعداد مثبت
- نشانگر اعداد منفی
++ یک واحد به مقدار متغیر اضافه می کند
-- یک واحد از مقدار متغیر می کاهد

عملگر های دو عملوند موجود در جاوا را در زیر مشاهده می کنید.
= انتساب
+ عملگر جمع
- عملگر تفریق
* عملگر ضرب
/ عملگر تقسیم
% عملگر باقی مانده (باقیمانده تقسیم دو عدد را نشان می دهد


بعد از معرفی عملگر ها در جاوا، به معرفی دستورات این زبان می پردازیم.

دستور انتساب و تعریف متغییر
در جاوا برای تعریف متغییر کافی است در هر قسمت از برنامه که هستید در ابتدا نوع متغیر و سپس اسم متغیر را وارد کنید. در پایان مانند تمامی دستورات در جاوا لازم است که از سمیکولن (;) استفاده نمایید. به عنوان مثال برای تعریف یک متغیر عددی از نوع صحیح (INTEGER) کد زیر را وارد نمایید.
int a;

دستور بالا یک متغیر از نوع صحیح به نمام a خواهد ساخت.
برای انتساب مقدار به متغیر از عملگر = استفاده می شود. برای انساب مقدار ۲ به متغیر a از دستور زیر استفاده می شود.
a=2;

در جاوا در هنگام تعریف متغیر نیز می توان به آن مقداری را انتساب داد. دستور زیر کار دو دستور بالا را همزمان انجام می دهد.
int a=2;


دستورات شرطی
دستورات شرطی در جاوا به ۴ دسته دستور تقسیم می شوند:
if statement
if then else statement
switch case statement
(?:) statement


دستور شرطی if به صورت زیر تعریف می شود.
if (condition_statement){
statements;
}

که در آن شرط دستور حتما باید درون پرانتز باشد و بعد از دستور if فقط یک دستور اجرا می شود. برای اینکه بیشتر از یک دستور را اجرا نماییم باید از بلاک استفاده کنیم. در جاوا بلاک ها با { شروع می شوند و با } خاتمه می یابند.
در بعضی مواقع ما برای نوشتن کدمان نیاز به دستوری داریم که بتوانیم عدم وقوع شرط را هم بررسی کنیم. در چنین حالتی باید از دستور شرطی زیر استفاده نماییم.
if (Condition){
statements;
}
else{
statements;
}

در این حالت اگر شرط درست باشد دستورات بدنه if اجرا می شود و اگر شرط علت باشد، دستورات بدنه else اجرا می شود. به عنوان مثال برای تشخیص زوج یا فرد بودن یک عدد از کد زیر استفاده می شود.
if (number % 2 == 0){
// number is even
}
else
{
// number is odd.
}

توجه داشته باشید که خود دستور if یک statement است که می تواند در بدنه خودش نیز بکار رود. مثال :
if (num>3){
statements;
}
else{
if(num<0){
statements;
}
else{
statements;
}
}

در حالتی که تعداد این دستورات تو در توی if زیاد باشد به دلیل اینکه از خوانایی برنامه می کاهد می توان از دستور switch استفده نمود. قالب این دستور به شکل زیر است.
switch (variable){
case value1:
statements;
break;
case value2:
statements;
break;
case value3:
statements;
break;
default:
statements;
break;
}

این دستور مقدار دقیق یک متغیر را بررسی می کند. اگر متغیر برابر با مقدار value1 باشد دستورات زیر خط case value1: را اجرا می کند و سپس خارج می شود. اگر مقدار متغییر برابر value2 باشد دستورات زیر خط case value2: را اجرا می کند و خارج می شود و به همین ترتیب اگر هیچ مقداری را برابر متغیر دستور switch پیدا نکند دستورات زیر خط default را اجرا می کند.
این دستور با اینکه در بسیاری از موارد کارگشا است اما محدودیت هایی هم دارد. یکی از این محدودیت ها این این که شما یک بازه مقدار را نمی توانید برای یک متغبر تعریف کنید و فقط باید مقادیر ثابت را برای آن متغیر چک نمایید. همچنین این دستور فقط برای مقادیر عددی صحیح (integer) و مقادیر کاراکتری (char) کاربرد دارد.

آخرین دستور شرطی در جاوا عملگری است که می تواند به جای دستور if else تک دستوری قرار بگیرد. شکل کلی این دستور به صورت زیر است.
Return value = (condition ? true_value : false_value);

در این دستور اگر شرط برقرار باشد مقدار true_value و اگر شرط برقرار نباشد مقدار false_value برگردانده می شود. به عنوان مثال:
int num;
num=3;
int result = (num==3 ? 1: 2);

در کد بالا چون شرط که برابری متغیر num با ۳ است درست می باشد مقدار ۱ درون متغییر result قرار می گیرد.

دستورات حلقه و تکرار
دستورات حلقه و تکرار در جاوا به سه دستور کلی تبدیل می شوند.
While statement
for statement
do while statement


شکل کلی دستور while به این صورت می باشد.
while(condition){
statements;
}

مادامی که شرط صحیح باشد دستورات درون حلقه اجرا می شوند.
مثال : مجموع اعداد یک تا ۲۰ :
int sum=0;
int i=1
while (i<= 20){
sum=sum+i;
i=i+1;
}

متغیر i بیانگر اعداد می باشد و مجموع درون متغیر sum نگهداری می شود.
برای پیاده سازی حلقه ها با تکرار ثابت می توان از دستور for نیز استفاده نمود. شکل کلی آن بصورت زیر است.
for (initial_counter ; condition ; increment_counter){
statements;
}

در این دستور initial_counter یک مقدار اولیه برای شمارنده حلقه تعریف می کند. می تواند تغریف متغیر شمارنده نیز در این قسمت قرار گیرد. Condition شرط اتمام کار حلقه می باشد و increment_counter میزان پرش متغیر شمارنده را مشخص می کند. به عنوان مثال حل مثال قبل با حلقه for را در زیر می بینید.
int sum=0;
for(int i=0; i<=20 ; i=i+1){
sum=sum+i;
}

در کل تفاوت زیادی بین حلقه های for و while در جاوا وجود ندارد. شکل کلی دستور for را با while در زیر می بینیم.
initial_counter;
while(condition){
statements;
increment_counter;
}

آخرین نوع دستورات تکرار در جاوا دستور do while می باشد. شکل کلی آن بصورت زیر است.
do{
statements;
while(condition);

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

به عنوان مثال برنامه محاسبه و نمایش تمامی اعداد اول کوچکتر از ۱۰۰۰ را در زیر می بینید.

 


public static void main(String[] args) {
int num=2;
while(num<=1000){
boolean prime=true;

for(int i=2;i<=num/2;i++){
if(num%i==0){
prime=false;
}

}

if (prime){
System.out.println(num);
}
num++;

}
}


توضیحات:
می دانیم که عددی اول است که هیچ مقسوم الیهی بزرگتر از ۱ و کوچکتر از خودش نداشته باشد.
همچنین قابل اثبات است که اگر عددی بخواهد مقسوم الیهی داشته باشد، این مقسوم الیه باید کوچکتر از ریشه دوم عدد باشد.
و همچنین می توان اثبات کرد که ریشه دوم اعداد بزرگتر از ۲ همواره کوچکتر از نصف آنهاست. بر این اساس اگر ما برای هر عدد تا نصف آن بگردیم و مقسوم الیهی پیدا نکنیم می توانیم بگوییم که آن عدد اول است. این برنامه بر همین اساس نوشته شده است.
برای اجرای دستور زیر یک پروژه در netbeans درست کنید و تابع بالا را درون آن قرار دهید. سپس آن را اجرا کنید.
موفق باشید و پیروز.