مفهوم الشروط في جافا
الشروط ( conditions ) تستخدم لتحديد طريقة عمل البرنامج نسبةً للمتغيرات التي تطرأ على الكود.
كمثال بسيط, يمكنك بناء برنامج لمشاهدة الأفلام, عند الدخول إليه يطلب من المستخدم في البداية أن يدخل عمره لكي يقوم بعرض أقلام تناسب عمره.
يمكنك وضع العدد الذي تريده من الشروط في البرنامج الواحد, و تستطيع وضع الشروط بداخل بعضها البعض أيضاً.
أنواع جمل الشرط في جافا
| إسم الجملة | دواعي الإستخدام |
|---|---|
| if - else - else if statements | نستخدمهم إذا كنا نريد تنفيذ كود معين في حال تحقق الشرط أو مجموعة من الشروط التي وضعناها. تابع القراءة » |
| switch statement | نستخدمها إذا كنا نريد إختبار قيمة متغير معين مع لائحة من الإحتمالات نقوم نحن بوضعها, و إذا تساوت هذه القيمة مع أي إحتمال وضعناه ستتنفذ الأوامر التي وضعناها في هذا الإحتمال فقط. تابع القراءة » |
أفكار و أساليب أخرى لوضع الشروط في جافا
طرق وضع الشروط عديدة و متنوعة, و يمكننا وضع شروط بداخل بعضها و يسمى ذلك Nested Conditional.
كما يمكننا وضع أكثر من شرط بداخل جمل الشرط if أو else if باستخدام العوامل المنطقية.
هنا وضعنا أمثلة تعلمك طريقة وضع أكثر من شرط في الجملة if أو else if باستخدام الـ Relational Operators.
هنا وضعنا مثال يعلمك طريقة وضع الشروط بداخل بعضها.
Javaجمل الشرط في جافا
جمل الشرط بشكل عام
طريقة كتابتهم Syntax :
{
// إذا كان الشرط صحيحاً نفذ هذا الكود
}
else if ( condition )
{
// إذا كان الشرط صحيحاً نفذ هذا الكود
}
else
{
// نفذ هذا الكود في حال لم يتم التعرف على الكود في أي شرط
}
ملاحظة
لست بحاجة إلى إستخدام الجمل الثلاثة في كل شرط تضعه في البرنامج, و لكنك مجبر على إستخدام جملة الشرط if مع أي شرط.
تابع كل الدرس حتى تتعرف على جميع طرق وضع الشروط.
جملة الشرط if
if في اللغة العربية تعني " إذا ". و هي تستخدم فقط في حال كنت تريد تنفيذ كود معين حسب شرط معين.
المثال الأول
•إذا كانت قيمة المتغير S أكبر من 5 سيتم طباعة الجملة: S is bigger than 5.
public class Main {
public static void main(String[] args) {
int S = 0;
if( S > 5 )
{
System.out.print("S is bigger than 5");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
•هنا سأل نفسه التالي: هل قيمة المتغير S أكبر من 5؟
فكان جواب الشرط كلا ( false ) , لذلك لم ينفذ أمر الطباعة الموجود في جملة الشرط.
المثال الثاني
•إذا كانت قيمة المتغير S أكبر من 5 سيتم طباعة الجملة: S is bigger than 5.
public class Main {
public static void main(String[] args) {
int S = 30;
if( S > 5 ) {
System.out.print("S is bigger than 5");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
S is bigger than 5
•هنا سأل نفسه التالي: هل قيمة المتغير S أكبر من 5؟
فكان جواب الشرط نعم (true), لذلك نفذ أمر الطباعة الموجود في جملة الشرط.
جملة الشرط else
else في اللغة العربية تعني " أي شيء آخر ". و هي تستخدم فقط في حال كنا نريد تنفيذ كود معين في حال كانت نتيجة جميع الشروط التي قبلها تساوي false.
يجب وضعها دائماً في الأخير, لأنها تستخدم في حال لم يتم تنفيذ أي جملة شرطية قبلها.
إذاً, إذا نفذ البرنامج الجملة if أو else if فإنه سيتجاهل الجملة else.
و إذا لم ينفذ أي جملة من الجمل if و else if فإنه سينفذ الجملة else.
المثال الأول
•إذا كانت قيمة المتغير S تساوي 5 سيتم طباعة الجملة: S is equal 5.
•إذا كانت قيمة المتغير S لا تساوي 5 سيتم طباعة الجملة: S is not equal 5.
public class Main {
public static void main(String[] args) {
int S = 5;
if( S == 5 ) {
System.out.print("S is equal 5");
}
else {
System.out.print("S is not equal 5");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
S is equal 5
•هنا سأل نفسه التالي: هل قيمة المتغير S تساوي 5؟
فكان جواب الشرط نعم ( true ) , لذلك نفذ أمر الطباعة الموجود في الجملة if.
المثال الثاني
•إذا كانت قيمة المتغير S تساوي 5 سيتم طباعة الجملة: S is equal 5.
•إذا كانت قيمة المتغير S لا تساوي 5 سيتم طباعة الجملة: S is not equal 5.
public class Main {
public static void main(String[] args) {
int S = 20;
if( S == 5 ) {
System.out.print("S is equal 5");
}
else {
System.out.print("S is not equal 5");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
S is not equal 5
•هنا سأل نفسه التالي: هل قيمة المتغير S تساوي 5؟
فكان جواب الشرط كلا ( false ) , لذلك نفذ أمر الطباعة الموجود في الجملة else.
جملة الشرط else if
جملة else if تستخدم إذا كنت تريد وضع أكثر من إحتمال ( أي أكثر من شرط ).
جملة أو جمل الـ else if يوضعون في الوسط, أي بين الجملتين if و else.
مثال
•إذا كانت قيمة المتغير number تساوي 1 سيتم طباعة الكلمة: one.
•إذا كانت قيمة المتغير number تساوي 2 سيتم طباعة الكلمة: two.
•إذا كانت قيمة المتغير number تساوي 3 سيتم طباعة الكلمة: three.
•إذا كانت قيمة المتغير number أكبر أو تساوي 4 سيتم طباعة الجملة: four or greater.
•إذا كانت قيمة المتغير number أصغر من 0 سيتم طباعة الجملة: negative number.
public class Main {
public static void main(String[] args) {
int number = 3;
if( number == 1 ) {
System.out.print("one");
}
else if( number == 2 ) {
System.out.print("two");
}
else if( number == 3 ) {
System.out.print("three");
}
else if( number >= 4 ) {
System.out.print("four or greater");
}
else {
System.out.print("negative number");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
three
•هنا سأل نفسه التالي: هل قيمة المتغير number تساوي 1؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الشرط الذي يليه.
•ثم سأل نفسه التالي: هل قيمة المتغير number تساوي 2؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الشرط الذي يليه.
•ثم سأل نفسه التالي: هل قيمة المتغير number تساوي 3؟
فكان جواب الشرط هذه المرة نعم ( true ) , فقام بتنفيذ أمر الطباعة الموجود في جملة الشرط الثالثة, ثم تجاوز جميع جمل الشرط التي أتت بعده.
Javaالجملة switch في جافا
تعريف الجملة switch
switch نستخدمها إذا كنا نريد إختبار قيمة متغير معين مع لائحة من الإحتمالات نقوم نحن بوضعها, و إذا تساوت هذه القيمة مع أي إحتمال وضعناه ستتنفذ الأوامر التي وضعناها في هذا الإحتمال فقط.
كل إحتمال نضعه يسمى case.
أنواع المتغيرات التي يمكن إختبار قيمتها باستخدام هذه الجملة هي:
int - byte - short - char - enum.
طريقة تعريفها
يمكننا تعريفها بعدة أشكال, الشكل الأساسي هو التالي:
case value:
// Statements
break;
case value:
// Statements
break;
default:
// Statements
break;
}
switch تعني إختبر قيمة المتغير الموضوع بين قوسين.
expression هنا يقصد بها المتغير الذي نريد إختبار قيمته.
نوع المتغير الذي يسمح لنا بإختباره:int-byte-short-char-enum.case تعني حالة, value تعني قيمة, و Statements تعني أوامر.
و يقصد من هذا كله, أنه في حال كانت قيمة الـ expression تساوي هذه القيمة سيقوم بتنفيذ الأوامر الموضوعة بعد النقطتين:.
الآن بعد تنفيذ جميع الأوامر الموضوعة بعد النقطتين, يجب وضعbreakلكي يخرج من الجملةswitchمباشرةً بدل أن ينتقل للـcaseالتالية الموجودة في الجملةswitch.
نستطيع وضع العدد الذي نريده من الـcaseبداخل الجملةswitch.
إنتبه: الـ expression و الـ value يجب أن يكونا من نفس النوع.defaultتعني إفتراضياً و هي نفس فكرة الجملةelse, و يمكننا أن لا نضعها أيضاً.
هذه الجملة تنفذ فقط في حال لم تنفذ أيcaseموجودة في الجملةswitchو لذلك نضعها بالآخر.
ملاحظة
لا حاجة لوضع break للحالة الأخيرة لأن البرنامج سيخرج من الجملة switch في جميع الأحوال.
ستفهم فكرة الجملة switch من خلال الأمثلة و سنريك كيف يمكنك أن تنفذ نفس الأوامر لأكثر من حالة, من خلال الأمثلة.
المثال الأول
•سنقوم باختبار قيمة المتغير x و الذي نوعه int.
•سنضع عدة حالات و كل حالة تطبع شيء معين.
public class Main {
public static void main(String[] args) {
int x = 2;
switch( x ) { // x إختبر قيمة المتغير
case 1: // في حال كانت تساوي 1 سيتم تنفيذ أمر الطباعة الموضوع فيها
System.out.println("x contain 1");
break;
case 2: // في حال كانت تساوي 2 سيتم تنفيذ أمر الطباعة الموضوع فيها
System.out.println("x contain 2");
break;
case 3: // في حال كانت تساوي 3 سيتم تنفيذ أمر الطباعة الموضوع فيها
System.out.println("x contain 3");
break;
default: // في حال كانت لا تساوي أي قيمة من القيم الموضوعة سيتم تنفيذ أمر الطباعة الموضوع فيها
System.out.println("x contain a different value");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
x contain 2
•نلاحظ أنه تم تنفيذ أمر الطباعة الموجود في الحالة الثانية لأن قيمة المتغير x تساوي 2.
•هنا سأل نفسه التالي: هل قيمة المتغير x تساوي 1؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الحالة التي تليه.
•ثم سأل نفسه التالي: هل قيمة المتغير x تساوي 2؟
فكان جواب الشرط نعم ( true ) , فقام بتنفيذ أمر الطباعة الموجود في هذه الحالة, و بعدها خرج من جملة الـ switch بأكملها بسبب الجملة break.
المثال الثاني
•سنقوم باختبار قيمة المتغير x و الذي نوعه int.
•سنضع عدة حالات و كل حالة تطبع شيء معين.
public class Main {
public static void main(String[] args) {
int x = 5;
switch( x ) { // x إختبر قيمة المتغير
case 1: // في حال كانت تساوي 1 سيتم تنفيذ أمر الطباعة الموضوع فيها
System.out.println("x contain 1");
break;
case 2: // في حال كانت تساوي 2 سيتم تنفيذ أمر الطباعة الموضوع فيها
System.out.println("x contain 2");
break;
case 3: // في حال كانت تساوي 3 سيتم تنفيذ أمر الطباعة الموضوع فيها
System.out.println("x contain 3");
break;
default: // في حال كانت لا تساوي أي قيمة من القيم الموضوعة سيتم تنفيذ أمر الطباعة الموضوع فيها
System.out.println("x contain a different value");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
x contain a different value
•نلاحظ أن تم تنفيذ أمر الطباعة الموجود في الحالة الإفتراضية لأن قيمة المتغير x لا تساوي أي قيمة من القيم الموضوعة في الحالات.
•هنا سأل نفسه التالي: هل قيمة المتغير x تساوي 1؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الحالة التي تليه.
•ثم سأل نفسه التالي: هل قيمة المتغير x تساوي 2؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الحالة التي تليه.
•ثم سأل نفسه التالي: هل قيمة المتغير x تساوي 3؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الحالة التي تليه.
•بما أنه لم يجد أي حالة تساوت فيها القيمة مع قيمة المتغير الذي يتم اختباره, قام بتنفيذ الأوامر الموجودة في الحالة الإفتراضية default, وعندما إنتهى من تنفيذ الأوامر خرج من جملة الـ switch بأكملها.
وضع نفس الأوامر لأكثر من حالة
إذا أردت وضع نفس الأوامر لأكثر من حالة, عليك وضع الحالات تحت بعضها, ثم كتابة الأوامر, ثم وضع break.
مثال
•سنقوم باختبار قيمة المتغير x و الذي نوعه int.
•سنضع ثلاث حالات ينفذون نفس الأوامر.
public class Main {
public static void main(String[] args) {
int x = 3;
switch( x ) { // x إختبر قيمة المتغير
case 1: // في حال كانت تساوي 1 أو 2 أو 3 سيتم تنفيذ أمر الطباعة
case 2:
case 3:
System.out.println("x contain 1 or 2 or 3");
break;
default: // في حال كانت لا تساوي أي قيمة من القيم الموضوعة سيتم تنفيذ أمر الطباعة الموضوع فيها
System.out.println("x contain a different value");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
x contain 1 or 2 or 3
•نلاحظ أنه تم تنفيذ أمر الطباعة الموضوع للحالات الثلاث الأولى لأن قيمة x تساوي 3.
•هنا سأل نفسه التالي: هل قيمة المتغير x تساوي 1 أو 2 أو 3؟
فكان جواب الشرط نعم ( true ) , فقام بتنفيذ أمر الطباعة الموضوع لهذه الحالات الثلاث, و بعدها خرج من جملة الـ switch بأكملها بسبب الجملة break.
وضع أكثر من شرط في الجملة if في جافا
بإمكانك أن تضع أكثر من شرط بداخل جملة الشرط باستخدام العامل && أو ||.
العامل && يستخدم في حال كنت تريد تنفيذ كود معين إذا كان جواب جميع الشروط الموضوعة يساوي true.
العامل || يستخدم في حال كنت تريد تنفيذ كود معين إذا كان جواب شرط واحد على الأقل يساوي true.
المثال الأول
•إذا كانت قيمة المتغير a بين 0 و 20 إطبع الجملة: acceptable number.
public class Main {
public static void main(String[] args) {
int a = 14;
if( a >= 0 && a <=20 ) {
System.out.println("acceptable number");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
acceptable number
•نلاحظ أنه قد تم تنفيذ أمر الطباعة لأن قيمة المتغير a بين 0 و 20
•هنا سأل نفسه سؤالين.
•السؤال الأول: هل قيمة المتغير a أكبر أو تساوي 0؟
فكان جواب الشرط الأول true.
•السؤال الثاني: هل قيمة المتغير a أصغر أو تساوي 20؟
فكان جواب الشرط الثاني أيضاً true.
•بما أن كلا الجوابين كانا true قام بتنفيذ أمر الطباعة.
المثال الثاني
•إذا كانت قيمة المتغير a بين 0 و 20 إطبع الجملة: acceptable number.
public class Main {
public static void main(String[] args) {
int a = 26;
if( a >= 0 && a <=20 ) {
System.out.println("acceptable number");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
•نلاحظ أنه لم يتم تنفيذ أمر الطباعة لأن قيمة المتغير a ليست بين 0 و 20
•هنا سأل نفسه سؤالين.
•السؤال الأول: هل قيمة المتغير a أكبر أو تساوي 0؟
فكان جواب الشرط الأول true.
•السؤال الثاني: هل قيمة المتغير a أصغر أو تساوي 20؟
فكان جواب الشرط الثاني false.
•بما أن واحداً من الجوابين لم يكن true لم ينفذ دالة الطباعة.
المثال الثالث
•إذا كانت قيمة المتغير a تساوي 1 أو 2 أو 3 إطبع الجملة: you choose a valid number.
public class Main {
public static void main(String[] args) {
int a = 2;
if( a == 1 || a == 2 || a == 3 ) {
System.out.println("'a' is a valid number");
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
'a' is a valid number
•نلاحظ أنه قام بتنفيذ أمر الطباعة لأن قيمة المتغير a تساوي 2
•هنا كان سيسأسل نفسه ثلاثة أسئلة لأنه يوجد ثلاث شروط, لكنه سأل نفسه سؤالين فقط.
•السؤال الأول: هل قيمة المتغير a تساوي 1؟
فكان جواب الشرط الأول false فانتقل للشرط الذي يليه.
•السؤال الثاني: هل قيمة المتغير a تساوي 2؟
فكان جواب الشرط الثاني true.
•بما أن واحداً من الأجوبة كان true نفذ مباشرةً أمر الطباعة و لم ينظر حتى للشرط الأخير.
وضع شرط بداخل شرط آخر في جافا
وضع شرط بداخل شرط
نستطيع وضع الشروط بداخل بعضها, و يمكننا وضع العدد الذي نريده من الشروط.
في البرامج الفعلية يقوم المبرمج بوضع العديد من الشروط بداخل بعضها, و ذلك حسب الفكرة التي يريد تنفيذها في برنامجه.
كمثال بسيط, لنفترض أننا نريد تحويل هذه الصورة إلى برنامج.
مثال
•هنا قمنا بتجهيز متغير يمثل نوع الجنس إسمه isMale و قلنا إذا كانت قيمته true فهذا يعني أن الشخص هو ذكر.
و إذا كانت تساوي false فهذا يعني أن الشخص هو أنثى.
• بالإضافة لمتغير يمثل العمر إسمه age.
public class Main {
public static void main(String[] args) {
boolean isMale = false;
int age = 14;
if(isMale == true)
{
System.out.println("Gender: male");
if( age <= 21 )
{
System.out.println("He is a young boy");
}
}
else
{
System.out.println("Gender: female");
if (age <= 21)
{
System.out.println("She is a young girl");
}
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
Gender: female She is a young girl
•هنا سأل نفسه التالي: هل قيمة المتغير isMale تساوي true؟
فكان جواب الشرط false , فانتقل إلى جملة الشرط الإفتراضية else لينفذ ما بداخلها.
•أولاً, قام بتنفيذ دالة الطباعة الموجودة فيها, فطبع الجملة Gender: female.
•ثم وجد شرطاً آخر بداخل الشرط الإفتراضي, فسأل نفسه التالي: هل قيمة المتغير age أصغر أو تساوي 21؟
فكان جواب الشرط true , فقام بتنفيذ دالة الطباعة الموجودة فيها, فطبع الجملة She is a young girl.
مفهوم الحلقات في جافا
نستخدم الحلقات ( Loops ) بهدف تكرار نفس الكود عدة مرات.
إذاً أي كود نريده أن يتنفذ عدة مرات, نقوم بكتابته داخل حلقة فتقوم هي بإعادة تنفيذ الكود قدر ما شئنا ضمن شروط معينة نقوم نحن بتحديدها.
طريقة تنفيذ الأوامر و الحلقات في الذاكرة
الأوامر في العادة تتنفذ بتسلسل وراء بعضها, و لكن الحلقات تجعل سهم تنفيذ الأوامر يقف عندها فيقوم بتنفيذ الأوامر التي بداخلها عدة مرات, و بعد أن يخرج من الحلقة يعود و يكمل تنفيذ باقي الأوامر الموجودة بعدها كالتالي.
عندما تتنفذ الحلقة فإن الأوامر الموضوعة فيها تنفذ بشكل منفصل عن باقي الأوامر الموجودة في البرنامج, أي يمكنك إعتبار أن جميع أوامر الحلقة توضع في مكان خاص في الذاكرة, هذا المكان يسمى scope.
بعد أن تتنفذ جميع أوامر الحلقة في هذا الـ scope, يتم مسح الـ scope كلياً من الذاكرة و هذه العملية تسمى Destroy.
أنواع الحلقات في جافا
| إسم الحلقة | دواعي الإستخدام |
|---|---|
| For Loop | تستخدم الحلقة for في حال كان عدد المرات التي سيعاد فيها تنفيذ الكود معروفاً.تابع القراءة » |
| While Loop | يفضل إستخدام الحلقة while في حال كان عدد المرات التي سيعاد فيها تنفيذ الكود غير معروف.تابع القراءة » |
| Do While Loop | يفضل إستخدام الحلقة do while في حال كان عدد المرات التي سيعاد فيها تنفيذ الكود غير معروف و بنفس الوقت يجب أن يتنفذ مرة واحدة على الأقل.تابع القراءة » |
جمل التحكم مع الحلقات في جافا
نستخدم جمل التحكم ( Control Statements ) للتحكم في سير تنفيذ الحلقات و مع جملة الشرط switch.
| جملة التحكم | تعريفها |
|---|---|
| Break Statement | تستخدم في الحلقات و في الجملة switch.بمجرد ان تنفذ الجملة break فإنها توقف الـ scope بأكمله و تخرج منه و تمسحه من الذاكرة ثم تنتقل للكود الذي يليه في البرنامج.تابع القراءة » |
| Continue Statement | تستخدم مع الحلقات فقط. نستخدمها لتجاوز تنفيذ كود معين في الحلقة, إذاً نستخدمها لتجاوز جزء من كود الـ scope. تابع القراءة » |
ملاحظة: سنشرح الجملة break مع الجملة switch في الدرس التالي.
الحلقة for في جافا
تعريف الحلقة for
نستخدم الحلقة for إذا كنا نريد تنفيذ الكود عدة مرات محددة, فمثلاً إذا كنا نريد تنفيذ كود معين 10 مرات, نضعه بداخل حلقة تعيد نفسها 10 دورات.
طريقة إستخدامها
{
// statements
}
initialisation: هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ) و نضع بعده;.condition: هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة.
في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في كل دورة يتم التأكد أولاً إذا تحقق هذا الشرط أم لا, و نضع بعده;.
هنا طالما أن نتيجة الشرط تساويtrueسيعيد تكرار الكود.statements: هي الخطوة الثالثة, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
بعد أن تتنفذ جميع الأوامر سيصعد إلى الخطوة الأخيرة التي تحدث في نهاية كل دورة و هي إما زيادة قيمة العداد أو إنقاصها.decrement أو increment: هي الخطوة الرابعة و الأخيرة, و هي تتنفذ في كل دورة.
هنا نحدد كيف تزداد أو تنقص قيمة العداد, و لا نضع بعده;.
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.
الحلقة while في جافا
تعريف الحلقة while
نستخدم الحلقة while إذا كنا نريد تنفيذ الكود عدة مرات, ولكننا لا نعرف كم مرة بالتحديد لأننا نريد إيقاف التنفيذ إذا تحقق شرط معين.
هذه الحلقة تتوقف عن تكرار نفسها إذا تحقق الشرط الذي وضعناه لها.
هنا كأننا نقول: " طالما أن الشرط لم يتحقق إستمر في تكرار الكود ".
طريقة إستخدامها
while( condition )
{
// statements
increment أو decrement;
}
initialisation: هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ).condition: هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة.
في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في كل دورة يتم التأكد أولاً إذا تحقق هذا الشرط أم لا.
هنا طالما أن نتيجة الشرط تساويtrueسيعيد تكرار الكود.statements: هي الخطوة الثالثة, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
decrement أو increment: هي الخطوة الرابعة و الأخيرة, و هي تتنفذ في كل دورة.
هنا نحدد كيف تزداد أو تنقص قيمة العداد.
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.
الحلقة do while في جافا
تعريف الحلقة do while
نستخدم الحلقة do while إذا كنا نريد تنفيذ الكود عدة مرات, ولكننا لا نعرف كم مرة بالتحديد لأننا نريد إيقاف التنفيذ إذا تحقق شرط معين.
هذه الحلقة تتوقف عن تكرار نفسها إذا تحقق الشرط الذي وضعناه لها.
الفرق الوحيد بينها و بين الحلقة while أنها تتنفذ مرة واحدة على الأقل لأنها تتأكد من الشرط بعد تنفيذ الأوامر و ليس قبلهم.
هنا كأننا نقول: " طالما أن الشرط لم يتحقق إستمر في تكرار الكود ".
طريقة إستخدامها
do{
// statements
increment أو decrement;
}
While( condition );
initialisation: هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ).statements: هي الخطوة الثانية, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
decrement أو increment: هي الخطوة الثالثة, و هي تتنفذ في كل دورة.
هنا نحدد كيف تزداد أو تنقص قيمة العداد.condition: هي الخطوة الرابعة و الأخيرة و هي تتنفذ في كل دورة.
في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في نهاية كل دورة يتم التأكد إذا تحقق الشرط أم لا.
هنا طالما أن نتيجة الشرط تساويtrueسيعيد تكرار الكود.
تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.
جملة التحكم break في جافا
تعريف الجملة break
الجملة break تستخدم في الحلقات و في الجملة switch.
بمجرد ان تنفذ الجملة break فإنها توقف الـ scope بأكمله و تخرج منه و تمسحه من الذاكرة ثم تنتقل للكود الذي يليه في البرنامج.
طريقة تعريفها
تتألف هذه الجملة من أمر واحد و يكتب على سطر منفرد.
break;
مثال حول جملة التحكم break
في المثال التالي قمنا بتعريف حلقة كانت ستطبع جميع الأرقام من 1 إلى 10 لولا أننا إستخدمنا الجملة break لجعل الحلقة تتوقف عندما تصبح قيمة العداد i تساوي 6.
مثال
public class Main {
public static void main(String[] args) {
// تتألف من 10 دورات. في كل دورة تطبع قيمة العداد المستخدم فيها for هنا قمنا بإنشاء حلقة
for( int i=1; i<=10; i++ )
{
// في كل دورة سيتم فحص قيمة العداد و بمجرد أن تصبح تساوي 6 سيتم إيقاف الحلقة نهائياً
if( i == 6 ) {
break;
}
System.out.println( i );
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
1 2 3 4 5
•إذاً الجملة break جعلت الحلقة تتوقف عندما أصبحت قيمة العداد i تساوي 6.
ملاحظة
هنا قمنا بتجربة الجملة break مع الحلقة for فقط, لكن المبدأ هو نفسه تماماً مع الحلقات while و do while.
تعريف الجملة continue
نستخدم الجملة continue لتجاوز تنفيذ كود معين في الحلقة, إذاً نستخدمها لتجاوز جزء من كود الـ scope.
و نستخدمها تحديداً لإيقاف الدورة الحالية و الإنتقال إلى الدورة التالية في الحلقة, لا تقلق ستفهم المقصود من المثال.
طريقة تعريفها
تتألف هذه الجملة من أمر واحد و يكتب على سطر منفرد.
continue;
أمثلة حول جملة التحكم continue
في المثال التالي قمنا بتعريف حلقة تطبع جميع الأرقام من 1 إلى 10 ما عدا الرقم 3.
إستخدمنا الجملة continue لجعل الحلقة تتجاوز الدورة الثالثة في الحلقة. أي لن يتم تنفيذ أمر الطباعة عندما تصبح قيمة العداد i تساوي 3.
المثال الأول
public class Main {
public static void main(String[] args) {
// تتألف من 10 دورات. في كل دورة تطبع قيمة العداد المستخدم فيها for هنا قمنا بإنشاء حلقة
for (int i=1; i<=10; i++)
{
// في كل دورة سيتم فحص قيمة العداد, عندما تصبح تساوي 3 سيتم الإنتقال إلى الدورة التالية في الحلقة بدون تنفيذ أمر الطباعة الموضوع بعدها
if (i == 3) {
continue;
}
System.out.println(i);
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
1 2 4 5 6 7 8 9 10
•إذاً الجملة continue جعلت الحلقة تتجاوز الدورة الثالثة, لذلك لم تطبع الرقم 3 لأنها لم تنفذ أمر الطباعة في الدورة الثالثة.
في المثال التالي قمنا بتعريف حلقة تطبع جميع الأرقام المفردة من 1 إلى 10.
إستخدمنا الجملة continue لجعل الحلقة تتجاوز كل دورة تكون فيها قيمة العداد i عبارة عن عدد مزدوج.
المثال الثاني
public class Main {
public static void main(String[] args) {
// تتألف من 10 دورات. في كل دورة تطبع قيمة العداد المستخدم فيها for هنا قمنا بإنشاء حلقة
for (int i=1; i<=10; i++)
{
// في كل دورة سيتم فحص قيمة العداد, في حال كانت مزدوجة سيتم الإنتقال إلى الدورة التالية في الحلقة بدون تنفيذ أمر الطباعة الموضوع بعدها
if (i%2 == 0) {
continue;
}
System.out.println(i);
}
}
}
•سنحصل على النتيجة التالية عند التشغيل.
1 3 5 7 9
•إذاً الجملة continue جعلت الحلقة تتجاوز كل دورة كانت فيها قيمة العداد عبارة عن عدد مفرد.
ملاحظة
هنا قمنا بتجربة الجملة continue مع الحلقة for فقط, لكن المبدأ هو نفسه تماماً مع الحلقات while و do while.
مفهوم الدوال في جافا
دالة: تعني Method او Function في اللغة الإنجليزية, و هي عبارة عن مجموعة أوامر مجمعة في مكان واحد و تتنفذ عندما نقوم باستدعائها.
كما أن جافا تحتوي على مجموعة كبيرة جداً من الدوال الجاهزة التي يمكنك إستعمالها مباشرةً و التي سنتعرف إليها في دروس لاحقة.
أمثلة حول الدوال الجاهزة
دوال الطباعة هي من الدوال الجاهزة في لغة جافا.
System.out.print();
System.out.println();
System.out.printf();
بناء الدوال في جافا
عند تعريف أي دالة في جافا عليك إتباع الشكل التالي:
// Method Body
}
•✓ modifier: يحدد طريقة الوصول للدالة, ستفهم معنى هذه الكلمة في دروس لاحقة.
• ✓returnType: يحدد النوع الذي سترجعه الدالة عندما تنتهي أو إذا كانت لن ترجع أي قيمة.
• ✓methodName: يمثل الإسم الذي نعطيه للدالة, و الذي من خلاله يمكننا استدعاءها.
•✓ Parameter List: المقصود بها الباراميترات ( وضع الباراميترات إختياري ).
• ✓Method Body: تعني جسم الدالة, و المقصود بها الأوامر التي نضعها في الدالة.
الـ returnType في الدالة يمكن أن يكون أي نوع من أنواع البيانات الموجودة في جافا ( int - double - boolean - String إلخ.. ).
و يمكن وضع إسم لكلاس معين, و هنا يكون القصد أن الدالة ترجع كائن من هذا الكلاس ( لا تقلق ستتعلم هذا في دروس لاحقة ).
في حال كانت الدالة لا ترجع أي قيمة, يجب وضع الكلمة void مكان الكلمة returnType.
أمثلة حول تعريف دوال جديدة في جافا
في المثال التالي قمنا بتعريف دالة إسمها welcomeMessage, نوعها void, و تحتوي على أمر طباعة فقط.
بعدها قمنا باستدعائها في الدالة main() حتى يتم تنفيذ أمر الطباعة الموضوع فيها.
المثال الأول
public class Main {
// عند إستدعاءها تطبع جملة للترحيب .welcomeMessage هنا قمنا بتعريف دالة إسمها
public static void welcomeMessage() {
System.out.println("Welcome to harmash.com");
}
public static void main(String[] args) {
// لطباعة جملة الترحيب الموضوعة فيها welcomeMessage هنا قمنا باستدعاء الدالة
welcomeMessage();
}
}
•سنحصل على النتيجة التالية عند التشغيل.
Welcome to harmash.com
في المثال التالي قمنا بتعريف دالة إسمها sum, عند إستدعاءها نعطيها عددين فترجع ناتج جمع هذين العددين.
بعدها قمنا باستدعائها في الدالة main().
المثال الثاني
public class Main {
// عند إستدعاءها نعطيها عددين فترجع ناتج جمع هذين العددين sum هنا قمنا بتعريف دالة إسمها
public static int sum(int a, int b) {
return a+b;
}
public static void main(String[] args) {
// لحساب ناتج جمع العددين 5 و 10 sum هنا قمنا باستدعاء الدالة
System.out.println( "5 + 10 = " + sum(10, 5) );
}
}
•سنحصل على النتيجة التالية عند التشغيل.
5 + 10 = 15