القائمة الرئيسية

الصفحات

الشروط والحلقات والدوال في جافا

مفهوم الشروط في جافا

الشروط ( conditions ) تستخدم لتحديد طريقة عمل البرنامج نسبةً للمتغيرات التي تطرأ على الكود.
كمثال بسيط, يمكنك بناء برنامج لمشاهدة الأفلام, عند الدخول إليه يطلب من المستخدم في البداية أن يدخل عمره لكي يقوم بعرض أقلام تناسب عمره.

يمكنك وضع العدد الذي تريده من الشروط في البرنامج الواحد, و تستطيع وضع الشروط بداخل بعضها البعض أيضاً.

أنواع جمل الشرط في جافا

إسم الجملة دواعي الإستخدام
if - else - else if statements نستخدمهم إذا كنا نريد تنفيذ كود معين في حال تحقق الشرط أو مجموعة من الشروط التي وضعناها.
تابع القراءة »
switch statement نستخدمها إذا كنا نريد إختبار قيمة متغير معين مع لائحة من الإحتمالات نقوم نحن بوضعها, و إذا تساوت هذه القيمة مع أي إحتمال وضعناه ستتنفذ الأوامر التي وضعناها في هذا الإحتمال فقط.
تابع القراءة »

أفكار و أساليب أخرى لوضع الشروط في جافا

طرق وضع الشروط عديدة و متنوعة, و يمكننا وضع شروط بداخل بعضها و يسمى ذلك Nested Conditional.
كما يمكننا وضع أكثر من شرط بداخل جمل الشرط if أو else if باستخدام العوامل المنطقية.


هنا وضعنا أمثلة تعلمك طريقة وضع أكثر من شرط في الجملة if أو else if باستخدام الـ Relational Operators.

شاهد الأمثلة »


هنا وضعنا مثال يعلمك طريقة وضع الشروط بداخل بعضها.

شاهد المثال »

Javaجمل الشرط في جافا

جمل الشرط بشكل عام

طريقة كتابتهم Syntax :

if ( condition )
{
    // إذا كان الشرط صحيحاً نفذ هذا الكود
}

else if ( condition )
{
    // إذا كان الشرط صحيحاً نفذ هذا الكود
}

else
{
    // نفذ هذا الكود في حال لم يتم التعرف على الكود في أي شرط
}

ملاحظة

لست بحاجة إلى إستخدام الجمل الثلاثة في كل شرط تضعه في البرنامج, و لكنك مجبر على إستخدام جملة الشرط if مع أي شرط.
تابع كل الدرس حتى تتعرف على جميع طرق وضع الشروط.

جملة الشرط if

if في اللغة العربية تعني " إذا ". و هي تستخدم فقط في حال كنت تريد تنفيذ كود معين حسب شرط معين.


المثال الأول

إذا كانت قيمة المتغير S أكبر من 5 سيتم طباعة الجملة:   S is bigger than 5.

Main.java
                    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.

Main.java
                    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.

Main.java
                    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.

Main.java
                    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.

Main.java
                    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.


طريقة تعريفها

يمكننا تعريفها بعدة أشكال, الشكل الأساسي هو التالي:

switch(expression) {

    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.

سنضع عدة حالات و كل حالة تطبع شيء معين.

Main.java
                    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.

سنضع عدة حالات و كل حالة تطبع شيء معين.

Main.java
                    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.

سنضع ثلاث حالات ينفذون نفس الأوامر.

Main.java
                    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.

Main.java
                    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.

Main.java
                    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.

Main.java
                    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.

Main.java
                    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 دورات.


طريقة إستخدامها

for( initialisation; condition; increment أو decrement )
{
    // statements
}

  • initialisation:   هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
    في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ) و نضع بعده ;.


  • condition:   هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة.
    في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في كل دورة يتم التأكد أولاً إذا تحقق هذا الشرط أم لا, و نضع بعده ;.
    هنا طالما أن نتيجة الشرط تساوي true سيعيد تكرار الكود.


  • statements:   هي الخطوة الثالثة, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.
    بعد أن تتنفذ جميع الأوامر سيصعد إلى الخطوة الأخيرة التي تحدث في نهاية كل دورة و هي إما زيادة قيمة العداد أو إنقاصها.


  • decrement أو increment:   هي الخطوة الرابعة و الأخيرة, و هي تتنفذ في كل دورة.
    هنا نحدد كيف تزداد أو تنقص قيمة العداد, و لا نضع بعده ;.


تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.

 الحلقة while في جافا

تعريف الحلقة while

نستخدم الحلقة while إذا كنا نريد تنفيذ الكود عدة مرات, ولكننا لا نعرف كم مرة بالتحديد لأننا نريد إيقاف التنفيذ إذا تحقق شرط معين.
هذه الحلقة تتوقف عن تكرار نفسها إذا تحقق الشرط الذي وضعناه لها.

هنا كأننا نقول: " طالما أن الشرط لم يتحقق إستمر في تكرار الكود ".


طريقة إستخدامها

initialisation;

while( condition )
{
    // statements

    increment أو decrement;
}

  • initialisation:   هي أول خطوة تتنفذ في الحلقة و هي تتنفذ مرة واحدة فقط على عكس جميع العناصر الموجودة في الحلقة.
    في هذه الخطوة نقوم بتعريف متغير ( يسمى عداد ).


  • condition:   هي ثاني خطوة تتنفذ في الحلقة و هي تتنفذ في كل دورة.
    في هذه الخطوة نقوم بوضع شرط يحدد متى تتوقف الحلقة, في كل دورة يتم التأكد أولاً إذا تحقق هذا الشرط أم لا.
    هنا طالما أن نتيجة الشرط تساوي true سيعيد تكرار الكود.


  • statements:   هي الخطوة الثالثة, و تعني تنفيذ جميع الأوامر الموجودة في الحلقة و هي تتنفذ في كل دورة.


  • decrement أو increment:   هي الخطوة الرابعة و الأخيرة, و هي تتنفذ في كل دورة.
    هنا نحدد كيف تزداد أو تنقص قيمة العداد.


تذكر فقط أن جميع هذه الخطوات تتكرر في كل دورة ما عدا أول خطوة, و السبب أننا لا نحتاج إلى تعريف عداد جديد في كل دورة, بل نستعمل العداد القديم و الذي من خلاله نعرف في أي دورة أصبحنا.

 الحلقة do while في جافا

تعريف الحلقة do while

نستخدم الحلقة do while إذا كنا نريد تنفيذ الكود عدة مرات, ولكننا لا نعرف كم مرة بالتحديد لأننا نريد إيقاف التنفيذ إذا تحقق شرط معين.
هذه الحلقة تتوقف عن تكرار نفسها إذا تحقق الشرط الذي وضعناه لها.

الفرق الوحيد بينها و بين الحلقة while أنها تتنفذ مرة واحدة على الأقل لأنها تتأكد من الشرط بعد تنفيذ الأوامر و ليس قبلهم.

هنا كأننا نقول: " طالما أن الشرط لم يتحقق إستمر في تكرار الكود ".


طريقة إستخدامها

initialisation;

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.

مثال

Main.java
                      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.

المثال الأول

Main.java
                      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 عبارة عن عدد مزدوج.

المثال الثاني

Main.java
                      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();
	  

بناء الدوال في جافا

عند تعريف أي دالة في جافا عليك إتباع الشكل التالي:

modifier returnType methodName(Parameter List){
      // Method Body
}

•✓ modifier: يحدد طريقة الوصول للدالة, ستفهم معنى هذه الكلمة في دروس لاحقة.
 ✓returnType: يحدد النوع الذي سترجعه الدالة عندما تنتهي أو إذا كانت لن ترجع أي قيمة.
 ✓methodName: يمثل الإسم الذي نعطيه للدالة, و الذي من خلاله يمكننا استدعاءها.
•✓ Parameter List: المقصود بها الباراميترات ( وضع الباراميترات إختياري ).
 ✓Method Body: تعني جسم الدالة, و المقصود بها الأوامر التي نضعها في الدالة.


الـ returnType في الدالة يمكن أن يكون أي نوع من أنواع البيانات الموجودة في جافا ( int - double - boolean - String إلخ.. ).
و يمكن وضع إسم لكلاس معين, و هنا يكون القصد أن الدالة ترجع كائن من هذا الكلاس ( لا تقلق ستتعلم هذا في دروس لاحقة ).

في حال كانت الدالة لا ترجع أي قيمة, يجب وضع الكلمة void مكان الكلمة returnType.

أمثلة حول تعريف دوال جديدة في جافا

في المثال التالي قمنا بتعريف دالة إسمها welcomeMessage, نوعها void, و تحتوي على أمر طباعة فقط.
بعدها قمنا باستدعائها في الدالة main() حتى يتم تنفيذ أمر الطباعة الموضوع فيها.

المثال الأول

Main.java
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().

المثال الثاني

Main.java
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