المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس السادس في دورة الجافا : الجمل التكرارية


loayy
01-18-2006, 08:23 AM
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

إخوانى الأعزاء أعضاء المنتدى أرجو أن تكونوا قد إستفدتم من الدروس السابقة

على العموم سنكمل اليوم فى الدرس السادس موضوعنا حول الجمل التكرارية loops

وسنكمل حديثنا عن ال for بذكر بعض الأشكال لها " أمثلة"

من 100 إلى 1 بإنقاص واحد
For (int i=100;i>=1;i--)
من 7 إلى 77 بزيادة 7
For (int i=7;i<=77;i+=7)
من 20 إلى 2 بإنقاص 2
For (int i=20;i>=2;i-=2)
من 2 إلى 20 بزيادة 3
For (int i=2;i<=20;i+=3)
من 99 إلى صفر بإنقاص
11 (0-11-22-33-44-55-66-77-88-99)
For (int i=99;i>=0;i-=11)

وهكذا نكون قد أوضحنا أشكالا مختلفة لل for

سنتحدث الأن عن ال While
ستختدم لتنفيذ بعض الأوامر عند تحقق شرط ما وعند الإنتهاء من تنفيذها إذا ظل الشرط متحققا يتم تنفيذها مرة أخرى وهكذا .....
وتكتب كالأتى
While (الشرط)
{
// الكود
}
ولنرى المثال


package courseexampels;
import ****x.swing.JOptionPane;

public class whileexample
{
public static void main(String[] args)
{
int x,power,result;
result =1;
x = Integer.parseInt(JOptionPane.showInputDialog("Enter The Number "));
power = Integer.parseInt(JOptionPane.showInputDialog("Enter The Power"));
int j=1;
while(j<=power)
{
result = result * x;
j++;
}
JOptionPane.showMessageDialog(null,"The Result = "+result);
System.exit(0);
}
}

ولنشرح المثال الأن :
البرنامج يقوم بحساب نتيجة رقم أس رقم أخر فمثلا 3 أس 2 =3*3 = 9
وهكذا فقمنا بتعريف ثلاث متغيرات هى x أس power تساوى result أى أن الرقم هو x والأس هو power والنتيجة هى result ووضعنا قيمة مبدئية لها 1
وحصلنا على كل من x و power من المستخدم وقمنا بتعريف متغير جديد هو j ووضعنا له قيمة مبدئية هى الواحد
ووضعنا فى شرط ال while أن ال j أقل من أو تساوى power
While(j<=power)
وطالما أن الشرط متحقق نقوم بضرب ال result فى ال x ونضع النتيجة فى الresult
Result = result * x;
ثم نزيد ال j بواحد
J++;

وهكذا نكون قد إنتهينا من الwhile

ال do while
هى مثل ال while تماما و لكن الفارق الوحيد هو عند التنفيذ لأول مرة ففى while يتم التأكد من صحة الشرط أولا ثم تنفذ أول مرة ولكن ال do while يتم تنفيذ أول مرة ثم يتم التحقق من الشرط بعد ذلك
وتكتب هكذا
Do
{
// الكود
}
while(الشرط);
ولنرى نفس المثال ولكن بإستخدام ال do while
package courseexampels;
import ****x.swing.JOptionPane;
public class dowhileexample
{
public static void main(String[] args)
{
int x,power,result;
result =1;
x = Integer.parseInt(JOptionPane.showInputDialog("Enter The Number "));
power = Integer.parseInt(JOptionPane.showInputDialog("Enter The Power"));
int j=1;
do
{
result = result * x;
j++;
}
while(j<power);
JOptionPane.showMessageDialog(null,"The Result = "+result);
System.exit(0);

}
}


نلاحظ أن الشرط بمكن تركه كما هو أو أن نقوم بتغييرة إلى أقل من فقط ولكن فى المثال الأول لم نكن نستطيع تغييرة لماذا؟؟؟؟؟
لنأخذ الحالة التى من الممكن أن تسبب مشكلة
وهى عندما يكون power تساوى 1
** إذا إستخدمنا البرنامج الأول كما هو ستكون النتيجة هى x
** إذا إستخدمنا البرنامج الثانى كما هو ستكون النتيجة هى x
** إذا إستخدمنا البرنامج الأول وقمنا بتعيل الشرط إلى أقل من ستكون النتيجة هى 1
ونرى جيدا أنها نتيجة خاطئة

وهكذا نكون إنتهينا من الجمل التكرارية

الواجب:
حاول تجيب فكرة برنامج وتنفيذ عليه كل مادرسناه حتى الأن

انتهى الموضوع الذي كتبه أخي في الله / حسين جزاه الله كل خير

لا تنسونا من صالح دعائكم

أخوكم في الله / لؤي (أبو العبد)

فجر الإيمان
01-18-2006, 10:09 AM
السلام عليكم ورحمة الله وبركاته

بارك الله فيك وأثابك وأخانا حسين على هذا الشرح

ولي سؤال هل سيكون الواجب يشتمل على ما عرض هنا في الدرس فقط

أم كل الدروس السابقة ؟

جزاك الله خيرا

محمد
01-18-2006, 10:42 PM
اسال نفس سؤال الاخت شهد وفقها الله
وبارك الله بك اخي الرائع
دورة طيبة من اخ طيب وفقه الله
وصلى الله على سيدنا محمد وعلى اله وصحبه اجمعين

loayy
01-19-2006, 06:48 AM
بسم الله الرحمن الرحيم

وعليكم السلام ورحمة الله وبركاته

بالنسبة للواجب إخواني شهد ومحمد يشمل جميع ما تعلمناه وليس هذا الدرس فقط

جزاكم الله كل خير على حسن الرد والأدعية الجميلة

لا تنسوا أخي في الله / حسين شريكي في هذه الدورة من صالح دعائكم

أخوكم المحب لكم في الله / لؤي (أبو العبد)

فجر الإيمان
01-20-2006, 06:06 PM
السلام عليكم ورحمة الله وبركاته


الواجب حله إن شاء الله عبارة عن تطبيق بسيط عمله كالتالي


يقوم البرنامج بحساب معدل علامات الطلاب المدخلة في مادة ما


ويحدد عدد الطلاب الحاصلين على درجة امتياز أو جيد جدا وهكذا


وذلك بأن يقوم المستخدم بإدخال علامات الطلاب باستمرار


عن طريق هذه الرسالة


http://www.almoso3h.com/up/uploading/grade.bmp


ويستمر في ادخال العلامات المطلوبة


ولإنهاء عملية الإدخال ما عليه سوى ادخال الرقم -1


http://www.almoso3h.com/up/uploading/-1%20to%20exit.bmp


فينهي البرنامج عمله وتظهر النتائج كهذه الرسالة


http://www.almoso3h.com/up/uploading/class%20average.bmp

وكود البرنامج





import ****x.swing.JOptionPane;
public class Test
{
public static void main(String args[])
{
int total;
int gradeNum;
double average;
int A ,B,C,D,E;
A=B=C=D=E=0;
int grade = Integer.parseInt(JOptionPane.showInputDialog("Enter Grade of Student OR -1 to Exit "));
total = 0;
gradeNum = 0;
while(grade!= -1)
{
if (grade >=85 && grade <=100)
A = A + 1;
else
if (grade >=75 && grade <85)
B = B + 1;
else
if (grade >=65&& grade <75)
C = C +1;
else
if (grade >=55 && grade <65)
D = D +1;
else
if (grade >=0 && grade <55)
E = E +1;

total = total + grade ;
gradeNum = gradeNum + 1;
grade = Integer.parseInt(JOptionPane.showInputDialog("Enter Grade of Next Student OR -1 to Exit "));

}
if (gradeNum !=0)
{
average = (double)total / gradeNum;

JOptionPane.showMessageDialog(null,"Class average is " + average + "\n" + A + " get Excellent grade"
+ "\n" + B + " get VGood grade" + "\n" + C + " get Good grade" + "\n" + D + " Accepted "
+ "\n" + E + " Failed" );
}
else
JOptionPane.showMessageDialog(null,"No grades were entered ");

System.exit(0);
}
}


إن شاء الله أكون أديت المطلوب آمل ذلك

وبارك الله فيك

وأثابك على عملك الطيب هذا

loayy
01-21-2006, 07:39 AM
بسم الله الرحمن الرحيم

أخي/أختي في الله / فجر الإيمان

السلام عليكم ورحمة الله وبركاته

بالنسبة للواجب ممتاز وصحيح مائة بالمائة فجزاك الله كل خير

لكن لي ملاحظة على الرغم من أن البرنامج صحيح من الناحية البرمجية ولكن رغم ذلك

يجب التحكم أكثر في العلامات المدخلة بمعنى لو قام المستخدم بإدخال علامة أكثر من 100 أو علامة أقل من 0 (طبعا ما عدا ال سالب 1 لأن السالب واحد تعني إنهاء البرنامج) ما الذي سيحصل

أقول لك

الذي سيحصل بأن البرنامج سيقبل هذه المدخلات وبالتالي هذا خطأ

إذن ما هو الحل

الحل هو أن نضع شرطا يمنع المستخدم من إدخال علامات تقل عن 0 وتزيد عن 100

أي لو وضع المستخدم علامات خارج عن المدى المطلوب يجب أن تظهر له رسالة تخبره بأن هذه العلامة خارج عن المدى المطلوب يرجى أن تكون العلامة فقط ما بين 0 إلى 100

بعد ذلك بعون الله سيكون كل شيء كما يرام

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

وقيامك بحل الواجب في الدرس السادس والذي هو تطبيق لجميع الدروس يعني أنك فاهم الدورة وهذا شيء رائع جدا

فأحمد الله سبحانه وتعالى أن وفقني واستطعت وأخي في الله حسين من تقديم شيء مفيد لكم

بقي درس واحد بعون الله وتنهي الدورة

لا تنسونا من صالح دعائكم

أخوك في الله / لؤي (أبو العبد)

بـراءة
01-21-2006, 11:08 PM
عليكم السلام ورحمة الله وبركاته

أسجل حضوري بشكرالجزيل لكَ

أخي الكريم ولزميلك الاخر

على هذا الجهد الذي فوق الطيب منكَ

من أجل تعميم الفائده وافائده اخوانك واخواتك

في هذه الدورة

جزاكَ الله خيراً جعله الله في ميزان حسناتكَ

دامت عقولكم نيرة بالإيمان والحق.. وشعله للفكر والإبداع الخلاق

loayy
01-22-2006, 06:52 AM
بسم الله الرحمن الرحيم

جزاك الله أخي/أختي في الله براءة من الله على حسن الرد والدعاء

وما عملنا إلا الواجب

جمعنا الله وإياكم في جنان الخلد

أخوك في الله / لؤي (أبو العبد)

فجر الإيمان
01-22-2006, 09:31 AM
السلام عليكم ورحمة الله وبركاته


لكن لي ملاحظة على الرغم من أن البرنامج صحيح من الناحية البرمجية ولكن رغم ذلك
يجب التحكم أكثر في العلامات المدخلة بمعنى لو قام المستخدم بإدخال علامة أكثر من 100 أو علامة أقل من 0 (طبعا ما عدا ال سالب 1 لأن السالب واحد تعني إنهاء البرنامج) ما الذي سيحصل
أقول لك
الذي سيحصل بأن البرنامج سيقبل هذه المدخلات وبالتالي هذا خطأ
إذن ما هو الحل
الحل هو أن نضع شرطا يمنع المستخدم من إدخال علامات تقل عن 0 وتزيد عن 100
أي لو وضع المستخدم علامات خارج عن المدى المطلوب يجب أن تظهر له رسالة تخبره بأن هذه العلامة خارج عن المدى المطلوب يرجى أن تكون العلامة فقط ما بين 0 إلى 100
بعد ذلك بعون الله سيكون كل شيء كما يرام



بارك الله فيك أخي الفاضل على هذا التوضيح

بالفعل أنا لم أنتبه عند كتابة البرنامج مع أنني عند وضعي للفكرة على الورقة كتبت هذا الشرط
وإن شاء الله أقوم اليوم بتعديله

وبانتظار الدرس الأخير من هذه الدورة الرائعة ولله الحمد

ملاحظة : فجر الإيمان == شهد

وجزاك الله خيرا

loayy
01-22-2006, 10:33 AM
بسم الله الرحمن الرحيم

بارك الله فيك أختي في الله شهد وجزاك الله كل خير على حسن الرد والتوضيح

إن شاء الله الدرس السابع بعون الله عند وضعك تعديل الحل في الدرس السادس لأني لا أريد أن أشكل عليك عبئا أو ضعطا

أخوك في الله / لؤي (أبو العبد)

فجر الإيمان
01-24-2006, 12:46 PM
السلام عليكم ورحمة الله وبركاته

تعديل البرنامج إن شاء الله على النحو التالي


import ****x.swing.JOptionPane;
public class Test4
{
public static void main(String args[])
{
int total;
int gradeNum;
double average;
int A ,B,C,D,E;
A=B=C=D=E=0;
int grade = Integer.parseInt(JOptionPane.showInputDialog("Enter Grade of Student OR -1 to Exit "));

total = 0;
gradeNum = 0;

while(grade!= -1)
{
if(grade >=-1&& grade <=100)
{
if (grade >=85 && grade <=100)
A = A + 1;
else
if (grade >=75 && grade <85)
B = B + 1;
else
if (grade >=65&& grade <75)
C = C +1;
else
if (grade >=55 && grade <65)
D = D +1;
else
if (grade >=0 && grade <55)
E = E +1;

total = total + grade ;
gradeNum = gradeNum + 1;
grade = Integer.parseInt(JOptionPane.showInputDialog("Enter Grade of Next Student OR -1 to Exit "));
}
else
JOptionPane.showMessageDialog(null,"No valid grades were entered \n grade should be between 0 and 100 ");
grade = Integer.parseInt(JOptionPane.showInputDialog("Enter Grade of Next Student OR -1 to Exit "));
}

if (gradeNum !=0)
{
average = (double)total / gradeNum;

JOptionPane.showMessageDialog(null,"Class average is " + average + "\n" + A + " get Excellent grade"
+ "\n" + B + " get VGood grade" + "\n" + C + " get Good grade" + "\n" + D + " Accepted "
+ "\n" + E + " Failed" );
}
else
JOptionPane.showMessageDialog(null,"No grades were entered ");

System.exit(0);
}
}


بحيث إذا قام المستخدم بإدخال قيمة غير صحيحة تظهر له هذا الرسالة

http://www.almoso3h.com/up/uploading/noooooo.bmp

ولكن يستمر ويظهر له مرة أخرى رسالة ادخال الدرجة

وإن كانت غير صحيحة تظهر ايضا مرة اخرى وهكذا

إن شاء الله يكون البرنامج الأن مكتمل

وأعتذر عن تقصيري في هذا الدرس

وبارك الله فيك

loayy
01-25-2006, 02:36 PM
بسم الله الرحمن الرحيم

إن شاء الله غدا أفحص الواجب لأنني في البيت ولا يوجد لدي جافا وبعون الله سأفحص الحل غدا إن شاء الله

لكني أتوقع لما وجدت من اجتهادك أي يكون حلا صحيحا مائة بالمائة

أخوك في الله / لؤي (أبو العبد)