• 0
بركان

تمارين في الجافا

سؤال

المقدّمة

بسم الله والصلاة على رسول الله صلى الله عليه وسلم

أملك كتاب ورقي بعنوان "تمارين في الجافا" (بالفرنسية) يحتوي على 144 تمرين مع الحلول موزّعة على 14 فصل حول البرمجة بجافا j2se، بداية من المستوى الإبتدائي حتي استعمال الswing والملفات.

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

http://www.arabteam2000-forum.com/index.php?showtopic=49569 للأخ مجدي محمود مشرف قسم j2me جزاه الله عنا كل خير، رأيت أنه من الممكن أن أضع كل يوم أو يومين (على حسب الوقت الذي أملك) تمرين وبعد ما نناقش الحلول أضع حل الكاتب، ونمر إلى التمرين التالي. هكذا نكون قد ضربنا عصفوران بحجر واحد: نترجم الكتاب للعربية (في نهاية المطاف سنحصل على الكتاب بالعربية)، وثانيا نستفيد جميعنا خاصة المبتدئين منّا.

لكن هناك مشكلة. نحن في المغرب العربي لدينا مشكلة اللغة، فمستوى اللغة العربية عندنا ضعيف، فإما نتكلّم بالأجنبيّة (الفرنسية) وإما بالهمجية (الدارجة). لذى أتمنى ان تعذروني ونناقش المصطلحات التي سنستعملها (وتصححولي أخطائي اللغوية) :-)

والله ولي التوفيق.

0

شارك هذا الرد


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

19 إجابة على هذا السؤال .

  • 0

الفصل الأول: العمليات والتعبيرات (Les operateurs et les expressions)

تمرين 1. أولويات العمليات الحسابية والأقواس.

تمرين 2. التحويلات الضمنية.

تمرين 3. استثناءات الأعداد الحقيقية والIEEE754

تمرين 4. النوع char

تمرين 5. العمليات المنطقية في "دارة قصيرة"

تمرين 6. أولويات العمليات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

المعرفة اللازمة للفصل الأول:

• كتابة برنامج اساسي، أي متكون من كلاس تحتوي على طريقة وحيدة تسمى main

• قوانين عامة للكتابة: الكلمات المحجوزة، الفواصل، التعليقات ...

• الأنواع الأولية: الصحيحة (byte, short, int, long)، الحقيقية (float, double)، الأحرف (char) والمنطقية (bolean).

• تصريح المتغيّرات من نوع أولي؛ أنواع التهيئة، دور final، فكرة تعبير الثوابت.

• عرض المعلومات باستعمال System.out.print و System.out.println

• العمليات الحسابية، التحويلات الضمنية؛ سلوك في حالة الاستثاء؛ وجود قيم لانهائية و NAN

• العمليات العلائقية؛

• العمليات المنطقية؛ الحالات الخاصة للعمليات التي تسمى "دارت قصيرة short circuit" && و ||

• عمليات الزيادة incrementation والنقصان decrementation

• عمليات الcast

تمرين 1. أولويات العمليات الحسابية والأقواس

احذف الأقوس الزائدة في التعبيرات التالية (ترتيب الحسابات يجب أن يبقى نفسه):

(a+b) – (2*c)   // expression 1
(2*x) / (y*z)      //expresión 2
(x+3)*(n%p)    // expresión 3
(-a) / (-(b + c))  // expresión 4
(x/y)%(-z)   // expresión 5
x/(y%(-z))   // expresión 6

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

استمر اخي بارك الله فيك

سلام

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيكما إخوتي علاء الدين وIngm على تشجيعكما، لكني وضعت هذه التمارين لنشارك الكل في حلّها.

أعذر الإخوة فمنهم من لديه امتحانات... :)

هذا هو حل التمرين الأول :

a + b – 2 * c   // expression 1
2 * x / (y * z)   // expression 2
//نستطيع كتابة هذه الجملة
2*x/y/z
لكن ترتيب الحسابات سيكون مختلف، وهذا قد يغيّر النتيجة في بعض الحالات.

(x + 3) * (n % p)  // expression 3
//هنا لا نسطيع حذف أي قوس لأنّ * و% لهما نفس الأولوية؛ وحذف القوسين الأخيرين يؤدي إلى جملة تكافئ ما يلى:
((x+3)*n)%p

-a / -(b + c)   // expression 4

//لا تنسى أنّ العملية الأحادية  "-"  لها الأولوية على كل العمليات الحسابية ذات عاملين.

x / y % -z   // expression 5
x / (y % z)   // expression 6  

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تمرين 2 : التحويلات الضمنية

لتكن التصريحات التالية:

byte b1 = 10, b2 = 20;
short p = 200;
int n = 500;
long q = 100;
float x = 2.5f;
double y = 5.25;

ما هو نوع و نتائج العبارات الحسابية التالية:
b1 + b2;   //1
p + b1;   //2
b1 * b2;  //3
q + p + (b1 + b2);   //4
x + q * n;   //5
b1 * q / x   //6
b1* q * 2. / x   //7
b1 * q * 2.f / x   //8

أتمنى أن تكون هناك مشاركة هذه المرّة. <_<

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

احجزولي مكان عند مكيف الفصل :D ....

بارك الله فيك اخوي يسعدني الانظمام اليكم و لكن يفضل

تأخير البدء في هذا العمل على الاقل اسبوع واحد ، فهذه الفتره ايام اختبارات

و الاخوه عقولهم مشوشه من مراجعها لدروس :wacko: !

وجهة نظر ..

نسيت ارفاق محاولتي

1 int
2 int
3 int
4 long
5 float
6 float
7 double or float
8 double or float

تم تعديل بواسطه - a l t -
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أهلا بك الأخ -alt-

تلبية لرغبتك، وبالتأكيد رغبة الإخوة الطلبة و الطالبات، سيؤخر الموضوع اسبوع.

هذا يتركلي وقت لترجمة تمارين اخرى.

:rolleyes:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نحتاج الى هذا النوع من المشاركات كثيرا ... جزاك الله خير أخي بركان

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيكم إخوتي على تشجيعاتكم.

أخي -alt- كما وعدت، سننتظر الإخوة الطلبة حتى يكملوا امتحاناتهم ثم تبدأ المشاركات الساخنة ;-)

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

ثانيا: كيف ترون أن أعرض التمارين: هل أضع كل تمرين في موضوع جديد أم كل فصل؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا جزيلا لك .... و طبعا لا تقم بوضع كل تمرين بموضوع جديد لان هذا سوف يؤثر على الصفحة الرئيسية افضل ان تضعها هنا حتى اذا اراد ان يسترجعها احد بعد فترة تكون مرتبطة و مجمعة افضل ما يظل يجمع فيها

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ها أنا عدت مرّة أخرى (h)

هل الكل مستعدّ لاستئناف التمارين؟

أنتظر مشاركة فعّالة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ها أنا عدت مرّة أخرى  (h)

هل الكل مستعدّ لاستئناف التمارين؟

أنتظر مشاركة فعّالة.

حياك الله اخوي بركان

اقترح وضع كل فصل من الكتاب في موضوع مستقل ،

ووضع رقم للموضع مساويا للفصل،

ربط المواضيع بعضها البعض ، بارفاق رابط كل موضوع مع الموضوع السابق له

:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك أخي -atl- على اقتراحاتك وإن شاء الله هكذا سيكون الأمر.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

هذا هو حل التمرين الثاني (أدري أني تأخرت قليلا :rolleyes: )

b1 + b2 = 30 //1

العملية + تحوّل قيم b1 و b2 من النوع byte إلى النوع int. النتيجة هي من نوع int.

p + b1 = 210 //2

العملية + تقوم بترقية النوع short إلى int للعامل p ومن byte إلى int للعامل b1. نتيجة العملية من نوع int.

b1 * b2 = 200 //3

هنا أيضا، قبل القيام بعملية الضرب، قيم b1 و b2 تعرّضوا للترقّية الرّقمية من النوع byte إلى int. والنتيجة هي من نوع int.

q + p * (b1 + b2) = 6100 //4

أوّلا نقوم بالجمع s = b1 + b2، بتعريض قيم العددين للترقية الرَّقمِيَة من byte إلى int. قيمة s هي من نوع int. بعدها نجمع العددين q + p بتعريض العامل الثاني إلى تحويل من نوع short إلى long (نوع p). النتيجة من نوع long. والآن يجب ضربه ب s، يعني أنه سيتم عليه تحويل تعديلي من النوع int إلى long. والنتيجة النهائية ستكون من نوع long.

x + q * n = 50002.5 //5

نقيّم أوّلا الضرب q * n بتعريض n إلى تحويل تعديلي من النوع int إلى long. النتيجة من نوع long. كي نستطيع جمعه مع x، نعرّضه إلى تحويل تعديلي من النوع long إلى float. النتيجة من نوع float.

b1 * q / x = 400.0 //6

نقيّم أوّلا القسمة q / x بعد تحويل q من النوع long إلى float. النتيجة من نوع float. كي نستطيع إضافة له قيمة b1 نعرّض هذا الأخير إلى تحويل تعديلي من النوع byte إلى float ( أو، هي نفس العملية، تحويل من byte إلى int، ثم من int إلى float). النتيجة من نوع float.

b1 * q * 2. / x = 800.0 //7

نقيّم أولا الضرب q * 2، بتغيير نوع q من long إلى double (حذار، الثابت 2. هو من نوع double وليس من نوع float). النتيجة من نوع double. تقسّم على القيمة متحصّل عليها من تحويل نوع x من float إلى double. النتيجة، من نوع double تضرب في القيمة المتحصّلة من تحويل نوع b1 إلى double. النتيجة من نوع double.

b1 * q * 2.f / x = 800.0 //8

مماثلة للعبارة السابقة، أين 2. (من النوع double) أصبحت الآن 2.f من نوع float. نتّبع نفس الطريقة، بتغيير النوع float إلى النوع double. النتيجة من نوع float.

إنتهى.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تمرين 3. استثناءات الأعداد الحقيقية واصطلاحات IEEE754

ماهي النتائج التي سيظهرها البرنامج التالي؟

public class Excel
{
public static void main (String args[])  
{  
 double x1 = 1e200, x2 = 1e210;      
 double y, z;      
 y = x1 * x2;      
 System.out.println      (“قيمة   y “ + y);

 x2 = x1;      
 z = y/(x2-x1);      
 System.out.println( y       + “ قسمة  “ + (x2-x1) + “ = “ + z);
 y = 15;      
 z = y / (x2-x1);      
 System.out.println( y       + “ قسمة  “ + (x2-x1) + “ = “ + z);

 z = (x2 – x1) /  (x2 – x1);      
 System.out.println( (x2 – x1      ) + “ قسمة  “ + (x2-x1) + “ = “ + z);
 System.out.println( z + “+1 = “ + (z + 1));      
 
 x1 = Float.POSITIVE_INFINITY;      
 x2 = Double.NEGATIVE_INFINITY;      
 z = x1 / x2;      
 System.out.println( x1 + “ / “ + x2 + “ = “ + z);      
}  
}

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اسم الكلاس هو Excep وليس Excel (يستطيع أن يكون أي أسم تختاره، المهم ان يكون اسم الملف هو نفسه اسم الكلاس)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ننتظر منك المزيد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .