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

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


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

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

إن شاء الله موعدنا اليوم مع الدرس الخامس
وسنكمل موضوعنا عن الجمل الشرطية الإختيارية والتكرارية "conditional statements" وسنبدأ بأخر جملة فى الجمل الشرطية الإختيارية " selection " وهى جملة ال " switch " ثم نتحدث عن الجمل الشرطية التكرارية " loops "

أولا : switch
وتكتب هكذا

switch ( متغير )
{
case حالة 1 :
// مجموعة الأوامر التى ستنفذ عندما يساوى المتغير الحالة 1
break;
case حالة 2 :
//مجموعة الأوامر التى ستنفذ عندما يساوى المتغير الحالة2
break;
default :
// مجموعة الأوامر التى ستنفذ عندما لا يساوى المتغير أى حاله
}

و لننظر المثال التالى ونفهمه سويا
وهو يعتبر تقريبا نفس المثال السابق ولكن إستخدمنا ال switch بدلا من ال if

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

public class Switchexample
{
public static void main(String[] args)
{
int x,y,z;
int choice;
x = Integer.parseInt(JOptionPane.showInputDialog("enter x"));
y= Integer.parseInt(JOptionPane.showInputDialog("enter y"));
choice = Integer.parseInt(JOptionPane.showInputDialog("enter 1 for addition 2 for substraction 3 for multiplication 4 for division "));

switch (choice)
{
case 1:
z=x+y;
JOptionPane.showMessageDialog(null,"the addition result is "+ z);
break;

case 2:
z=x-y;
JOptionPane.showMessageDialog(null,"the substraction result is "+ z);
break;

case 3:
z=x*y;
JOptionPane.showMessageDialog(null,"the multiplication result is "+ z);
break;

case 4:
z=x/y;
JOptionPane.showMessageDialog(null,"the division result is "+ z);
break;

default :
JOptionPane.showMessageDialog(null," you didn't choose any valid option ");
}

System.exit(0);
}
}

ولنشرح المثال الأن :
إذا أمعنا النظر سنجد أنه نفس المثال المستخدم فى الدرس السابق ولكن قمنا ببعض التعديل فجعلنا المستخدم يدخل رقما يدل على العملية المراد إتمامها بدلا من إختصار لإسم العملية ولنشرح ال switch حيث أننا قمنا بشرح الأوامر السابقه لها فى الدرس السابق
لقد وضعنا إسم المتغير فى الswitch لنجرى عليه الإختبارات فى الحالات cases
عند السطر case 1 يتم إختبار المتغير إذا ما كان يساوى 1 أم لا فإذا كان ما يساوى 1 فإنة يتم تنفيذ ما يليه حيث يتم جمع المتغيرين x,y ثم طبع النتيجة فى رسالة على الشاشه ثم يتم تنفيذ الbreake حيث يتم تنفيذ ما بعد ال switch أى الخروج من ال switch أما إذا لم يساوى المتغير 1 فإنه يتم إختبار ما إذا كان يساوى 2 أم لا فإذا كان ما يساوى2 فإنة يتم تنفيذ ما يليه حيث يتم طرح المتغيرين x,y ثم طبع النتيجة فى رسالة على الشاشه ثم يتم تنفيذ الbreake حيث يتم تنفيذ ما بعد ال switch أى الخروج من ال switch أما إذا لم يساوى المتغير 2 فإنه يتم إختبار ما إذا كان يساوى 3 أم لا وهكذا حتى نصل إلى أن المتغير لا يساوى أى خيار من الخيارات المتاحه وعندها يتم تنفيذ الكود الخاص بال default حيث تخرج رسالة إلى المستخدم تخبره بأنه إختار رقم لايحقق أى عملية

ملحوظة : ما هى فائدة الbreake ؟؟؟
عند عدم إستخدام ال breake يتم تنفيذ ما يحقق الشرط وما يلى هذه ال case مثلا إذا قام المستخدم بإدخال رقم 2 فإنه سيتم تنفيذ الحالة الخاصة بالرقم 2 وما يليها أى الخاصة ب 3،4 وكذلك ال default وهو ما لا نريده ولذا نستخدم الbreake

الواجب الخاص بالswitch هو تنفيذ الواجب الخاص بالدرس السابق بإستخدام الswitch

إن شاء الله سنبدأ الأن بشرح الجمل الشرطية التكرارية "loops" والمقصود بالتكراريه هو أنها تقوم بتنفيذ مجموعة من الأوامر عدة مرات عند تحقق شرط ما أو عدم تحققه وسنرى معنى ذلك فى الأمثلة ولنبدأ بإذن الله

أولا : جملة ال for
وهى تكتب كالتالى

For (int i=0;condition;i++)
{
// الأوامر التى ستنفذ هنا
}

إذا قمنا بكتابة ال for بهذه الطريقة فإن الكود سينفذذ منذ أن يكون المتغير يساوى صفراً وحتى يتحقق الشرط ويزداد المتغير بواحد عند نهاية الكود فى كل مرة ينفذ فيها ولنرى سويا المثال التالى على هذه الطريقة

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

public class forexample
{
public static void main ( String args[])
{
int x,result;
result = 1;
x =Integer.parseInt(JOptionPane.showInputDialog("enter x" ));

for(int j=1;j<=x;j++)
result = result * j;

JOptionPane.showMessageDialog(null,"the factorial result = " + result);
System.exit(0);
}
}

يقوم المثال بحساب المضروب للرقم الذى يدخله المستخدم والمضروب "factorial " هو ضرب الأعداد من واحد وحتى الرقم المدخل من قبل المستخدم فمثلا مضروب 4 يساوى 24 ( 1*2*3*4) وهكذا
واللبرنامج كما هو واضح سهل وبسيط ولننظر سويا إلى إلى البرنامج ولنبدأ الشرح سويا قمنا بتعريف متغيرين هما x و result وسنستخدم الأول لنضع به الرقم المدخل من المستخدم والأخر لنضع به النتيجه النهائيه ووضعنا له قيمة مبدئيه تساوى واحد
وقمنا بإستخدام الfor لعملية الضرب التكراريه
حيث عرفنا متغير j ووضعنا قيمة مبدئية له تساوى 1 وقارنا ال j بال x فإذا كان يساويه أو أقل منه فإننا نضرب ال result فى ال j ثم نضع النتيجة فى result مرة أخرى ثم تزداد قيمة ال j بواحد وتتم المقارنة مرة أخرى وهكذا حتى يصبح الj أكبر من ال x وهنا لايتم تنفيذ ال for ويتم ظهور رسالة بها نتيجة العملية الحسابية

الواجب الخاص بال for هو عمل برنامج يقوم بحساب رقم أس رقم أخر
مثال 3 أس 2 = 3*3 =9


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

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

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

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

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

بارك الله فيك على الشرح الرائع

لكن لدي سؤال قبل بداية حل الواجب

هل يكون صحيح أن أعرّف choice على أنها string

وأستقبل من المستخدم الكلمات div على هيئة string وهكذا مثل المثال السابق

بدل من تدخيل الأرقام وتحويلها ل string ؟

loayy
01-14-2006, 09:34 AM
بسم الله الرحمن الرحيم

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

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

أليس كذلك ؟

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

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

بارك الله فيك أخي الفاضل وصحيح أهم حــاجة التجربة

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

فهذا يدعوني إلى مراجعتها والتركيز عليها أكثر

وبالفعل هي بتقبل int و chr

بالنسبة للواجب إن شاء الله حله كالتالي :

السؤال الأول :

يكون نفس الكود مع إضافة average كما في الحل السابق

يدخل المستخدم قيمة x,y فتظهر له هذه الرسالة

http://www.almoso3h.com/up/uploading/5switch.bmp

ويكون الناتج

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

السؤال الثاني :

الكود باستخدام switch لا أدري إذا كان أفضل حل لكن أنا طبقته

وكانت النتائج مطابقة للحل السابق


import ****x.swing.JOptionPane;
public class t {
public static void main(String args[])
{
int i;
int x = Integer.parseInt(JOptionPane.showInputDialog("Enter the mark of student Please"));
for ( i=0;i<=4;i++)
switch (i)
{
case 0:
if (x>=85 && x<=100)
{
JOptionPane.showMessageDialog(null,"The Student is Excellent");
}
break;

case 1:
if (x>=75 && x<85)
{
JOptionPane.showMessageDialog(null,"The Student is VGood");
}
break;

case 2:
if (x>=65&& x<75)
{
JOptionPane.showMessageDialog(null,"The Student is Good");
}
break;

case 3:
if (x>=55 && x<65)
{
JOptionPane.showMessageDialog(null,"The Student is Accepted");
}
break;

case 4:
if (x>=0 && x<55)
{
JOptionPane.showMessageDialog(null,"The Student is Failed");
}
break;

default :
JOptionPane.showMessageDialog(null," you didn't choose any valid option ");
}
System.exit(0);
}
}

فجر الإيمان
01-16-2006, 11:38 AM
السؤال الثالث : تطبيق for


import ****x.swing.JOptionPane;
public class T3
{
public static void main ( String args[])
{
//evluate x ^ j
int x,result,j;
result = 1;
x =Integer.parseInt(JOptionPane.showInputDialog("To evalute x to the power j \n Enter x" ));
j=Integer.parseInt(JOptionPane.showInputDialog("Enter j" ));
for(int i=1;i<=j;i++)
result = result * x;
JOptionPane.showMessageDialog(null,"The result = " + result);
System.exit(0);
}
}


بعد التطبيق يكون الناتج

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

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

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

إلى هنا وإن شاء الله تكون الإجابات صحيحة
والمعذرة لتأخر الحل بسبب انقطاع الكهرباء والنت ايضا أغلب يوم امس

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

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

صدقيني أختي في الله دون مجاملات لقد نشرت الدورة في أكثر من عشرين منتدى وصدقيني لم أر التزاما بحل الواجب مثل التزامك

أسأل الله لك التوفيق والسداد في الدارين ولا تنسينا من صالح دعائك

بقي على نهاية الدورة درسان هما الدرس السادس والسابع بعون الله

متى تطلبين أختي فإنني جاهز لنشر الدرس السادس

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

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

بارك الله فيك أخي الكريم

بالتأكيد لازم أهتم بهذه الدورة لأنها أساسيات الجافا وكل شئ سوف أدرسه الفصل القادم إن شاء الله

معتمد على فهمها ففرصتي الآن لا تعوض وأحمد الله على ذلك حمدا كثيرا وبالذات أني في إجازة الآن

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

وجعله الله في ميزان حسناتكما

والدرس القادم أنا مستعدة في أي وقت إن شاء الله

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

أختي في الله / شهد ، حفظك الله ورعاك

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

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

نسأل الله أن يكون ذلك في ميزان حسناتنا

فعلا يا أختي فرصة طيبة أن تتعلمي الجافا وبالتالي تبدعي فيها بمعنى أنك تستطيعين أن تركزي الآن على الأمور الصعبة في الجافا لأن ما قدمته وأخي حسين هو فقط بداية وإن شاء الله تبدعين في الجافا فهي لغة قوية

لي اقتراح أختي في الله

وهي أن تفكري منذ الآن بعمل دورة متقدمة في الجافا بمعنى أن ما تتعلمينه في الجامعة بعون الله تقدمينه هنا وبالتالي بعون الله تكتمل الدورة

لأني للأسف لا أستطيع أن أكمل للمراحل المتقدمة في الجافا

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

فأتمنى منك أن تكملي ما بدأت

ولا تسألي عن الفرحة التي يحسها المرء عندما يقدم شيئا في خدمة إخوانه المسلمين

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