اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته، انني الان اتدرب على تمارينات الخوارزميات وتحليل البيانات على موقع، ولكن في اول اختبار كان المطلوب رسم شكل هندسي كما في الصورة التالية: 

ex-1.png.bd4c1bee98cb76b3e5899907b11fa862.png

وقمت انا بتحليل هذه الخوارزمية بهذا الشكل :

package TestingHarmsh;

public class One {

  public static void main(String[] args) {

    

    for (int i = 0; i < 1; i++) {
      System.out.println("*	");
      for (int a = 0; a < 1; a++) 
      System.out.println("*	*	");
      for (int b = 0; b < 1; b++) 
      System.out.println("*	*	*	");
      for (int c = 0; c < 1; c++) 
      System.out.println("*	*	*	*	");
      for (int d = 0; d < 1; d++) 
      System.out.println("*	*	*	*	*	");
    
    }
    
    
  }
}

ونتيجة كانت هي فعلا نفسها ولكن في الحل لذي في الموقع طالع الخوارزمية التالية:

package TestingHarmsh.corTesting;

import java.util.Scanner;


public class One {

  public static void main(String[] args) {
  
  Scanner input = new Scanner(System.in);
        int n;
        
        do {
            System.out.print("Enter the number of lines: ");
            n = input.nextInt();
        }
        while( n<=0 );
        
        for (int i=1; i<=n; i++)
        {
            for (int j=1; j<=i; j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }


  }

}

وهنا 

Scanner input = new Scanner(System.in);

قامة بطلب من المستخدم ادخال قيمة، ولكن فهمت كل شئ بالكود بإستثناء هذا الجزء:

do {
            System.out.print("Enter the number of lines: ");
            n = input.nextInt();
        }
        while( n<=0 );
        
        for (int i=1; i<=n; i++)
        {
            for (int j=1; j<=i; j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }

اود ان احصل على شرح مفصل وخاصة في الجزء 

while( n<=0 );
        
        for (int i=1; i<=n; i++)
        {
            for (int j=1; j<=i; j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }

وشكرا جزيلا لكم 

Recommended Posts

  • 0
نشر
بتاريخ منذ ساعة مضت قال الشيخ المختار الشنقيطس:

 


while( n<=0 );
        
        for (int i=1; i<=n; i++)
        {
            for (int j=1; j<=i; j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }

 

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

مثال : - 

do{
    // جملة برمجية تريد تنفذها 
   
}
While( الشرط );

و في البرنامج الخاص بك .  
 

        do {
          // تنفيذ الجملة البرمجة الخاصة بك 
            System.out.print("Enter the number of lines: ");
            n = input.nextInt();
        }
// الشرط أن يكون الرقم أكبر من صفر .  و اذا لم يتحقق الشرط يتم عمل التكرار و طلب إدخال رقم آخر 
        while( n<=0 );

        // هنا التكرار الخاص بالرسم. بعد  أن يتم تخزين الرقم المدخل من قبل المستخدم في الخطوة السابقة 
// بحيث
// n 
// هو هذا الرقم الذي أدخله المستخدم في حلقة التكرار الأولى 

//___________

//  و هنا التكرار الخاص بالرسم 
        for (int i=1; i<=n; i++)
        {
            for (int j=1; j<=i; j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }

شكراً لك 

  • 0
نشر

تحياتي

بالنسبة للكود الذي قمت بكتابته:

package TestingHarmsh;

public class One {

  public static void main(String[] args) {

    

    for (int i = 0; i < 1; i++) {
      System.out.println("*	");
      for (int a = 0; a < 1; a++) 
      System.out.println("*	*	");
      for (int b = 0; b < 1; b++) 
      System.out.println("*	*	*	");
      for (int c = 0; c < 1; c++) 
      System.out.println("*	*	*	*	");
      for (int d = 0; d < 1; d++) 
      System.out.println("*	*	*	*	*	");
    
    }
    
    
  }
}

الloops هنا أنت بغنى عنها لأنك تقوم بعمل العداد من صفر، ويتوقف إذا أصبح مساوي أو أكبر من الواحد، لذلك كل الأوامر بداخل الloop تنفذ مرة واحدة، ويمكنك الإستغناء عن الloop وكتابته كالآتي:

package TestingHarmsh;

public class One {

  public static void main(String[] args) {

      System.out.println("*	");
      System.out.println("*	*	");
      System.out.println("*	*	*	");
      System.out.println("*	*	*	*	");
      System.out.println("*	*	*	*	*	");    
    
    
  }
}

لاحظ أن بتلك الطريقة أنت لم تستغل البرمجة في شيئ، ولكنك قمت بكتابة الناتج بطريقة يدوية.

بالنسبة للجزء الذي ذكرته:

do {
            System.out.print("Enter the number of lines: ");
            n = input.nextInt();
        }
        while( n<=0 );
        
        for (int i=1; i<=n; i++)
        {
            for (int j=1; j<=i; j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }

تم فيه إستخدام do while loop، وهي أحدى الطرق الغير تقليدية في عمل اللوب، وهي تقوم بتنفيذ الأوامر بداخل اللوب على الأقل لمرة واحدة، بغض النظر عن تحقق الشرط أم لا.

فعلى سبيل المثال لاحظ أن الشرط 

while( n<=0 );

غير متحقق لأن الرقم المدخل رقم صحيح أكبر من الصفر وهو عدد السطور، ولكن تم تنفيذ جسد اللوب بغض النظر عن تحقق الشرط أم لا لأن الdo while loop تقوم بتنفيذ الأمر للمرة الأولى بغض النظر عن تحقق الشرط أم لا، ويتم التحقق من الشرط في المرات التالية.

لاحظ أن ما يمكن عمله بالdo while loop يمكن عمله بأي loop أخرى، وتلك الطريقة الغير تقليدية غير مرغوب فيها والأفضل إستبدالها بloop عادية أخرى.

بالنسبة لجسد اللوب نفسه:

for (int i=1; i<=n; i++)
{
    for (int j=1; j<=i; j++)
    {
        System.out.print("*");
    }
    System.out.println();
}

فيتم عمل عدد n من الأسطر،والمسؤؤل عن ذلك اللوب الخارجية ذات العداد i ، وبداخل كل سطر يتم طباعة عدد i من النجوم، لذلك في السطر الأول (i = 1 ) يتم طباعة عدد 1 من النجوم، وفي السطر الثاني يتم طباعة اثنان من النجوم وهكذا.

وهذه هي الطريقة البرمجية لعمل المطلوب بدلا من كتابته يدوياً.

شكراً لك وبالتوفيق.

  • 0
نشر

في بداية طريق تعلم لغة الجافا يكون التعامل مع شرح أول برنامج سطحيٌ جداً.

ولكن في هذه التدوينة ستتعلم كتابة أول برنامج لك بلغة الجافا، ليس بسطحية و إنما ستتعلم أيضاً المفاهيم الأساسية في لغة الجافا بتعمُّقٍ أكبر.

لأحفزك قليلاً..

ليس من البساطة أن تسمتع بما تفعل مالم يكن هناك دوافع، الدافع الجميل في البرمجة هو رؤية أفكارك و تلك التعقيدات يتم تنفيذها على شاشة الحاسب، حينها ستشعر بتلك المتعة الخاصة التي قلما تجدها في أماكن أُخرى – أن تجتهد و تحصد ثمرة جهدك سريعاً، خاصة و أن لغة جافا من أشهر لغات البرمجة.

أول برنامج بالجافا
في البداية فلتتعرف إلى الشفرة البرمجية (Code) كاملةً لأول برنامج لك


1
2
3
4
5
6
7
8
9
package firstproject;
public class MyFirstApp {
    public static void main(String args[]){
        System.out.println("مرحبا بك في مدونة علوم");
    }
}
بعد أن تعد نفسك، قم بفتح برنامج نتبينز أو أيٍ من البرامج المخصصة لكتابة و تنفيذ أكواد الجافا. سأستعرض معك. سنبدأ برحلتنا مع برنامجك الأول جزءاً جزءاً.بإستخدام public فإنك تقول أنك تريدأن تكون سماحية الوصول إلى مكونات هذا الـ class عامة، الـ class هو الهيكل الأساسي للبرنامج، و يماثل المنزل، في البداية ستقوم بإنشاء المنزل ثم بعد ذلك تبدأ تعمير و إنشاء و تأثيث الغرف، إذا إستخدمت المعرف public فإنك تجعل منزلك متاحاً للمشاركة.
بإستخدام Class فإنك أخبرت الـحاسب بأنك تريد إنشاء Class و كما ذكرت لك آنفاً فالـ Class مماثل للمنزل أو الهيكل الخارجي الذي لا فائدة له وحده دون مكونات داخلية.
MyFirstApp هو إسم قد إخترته بنفسي و بإمكانك إختيار إسم آخر مثل AhmedClass أو أي شي آخر، هذا يعني أنك تريد تسمية منزلك بهذا الإسم، فعندما يريد الناس الوصول إلى منزلك فسيقولون هيا لنذهب إلى منزل AhmedClass، كتابة هذا الإسم لها معايير يجب إتباعها لكن ليس بالضرورة ربما نتطرق لها لاحقاً. لكن من أهم المعايير هي أن يبدأ إسم الـ class بحرف capital.

  • 0
نشر
بتاريخ 13 ساعات قال ماجد قطوسة:

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

مثال : - 


do{
    // جملة برمجية تريد تنفذها 
   
}
While( الشرط );

و في البرنامج الخاص بك .  
 


        do {
          // تنفيذ الجملة البرمجة الخاصة بك 
            System.out.print("Enter the number of lines: ");
            n = input.nextInt();
        }
// الشرط أن يكون الرقم أكبر من صفر .  و اذا لم يتحقق الشرط يتم عمل التكرار و طلب إدخال رقم آخر 
        while( n<=0 );

        // هنا التكرار الخاص بالرسم. بعد  أن يتم تخزين الرقم المدخل من قبل المستخدم في الخطوة السابقة 
// بحيث
// n 
// هو هذا الرقم الذي أدخله المستخدم في حلقة التكرار الأولى 

//___________

//  و هنا التكرار الخاص بالرسم 
        for (int i=1; i<=n; i++)
        {
            for (int j=1; j<=i; j++)
            {
                System.out.print("*");
            }
            System.out.println();
        }

شكراً لك 

شكرا لك اخي على الشرح المميز 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...