الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه بركان في 4 يونيو 2005 · 19 رد · 14,054 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

المقدّمة

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

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

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

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

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

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

#2

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

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

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

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

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

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

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

#3

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

• كتابة برنامج اساسي، أي متكون من كلاس تحتوي على طريقة وحيدة تسمى 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
#4

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

توكل على الله يا اخ بركان بارك الله فيك و سدد خطاك و نفع بك المسلمين

:D

اقترب للناس حســــابهم و هم فى غفلة معرضون

#5

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

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

سلام

حكمتي الدائمة.....................................................

ان ما عند الله لا يطلب الا بطاعته

.....................................................................

?who is Ingm

Name: Hasan Adel Hasan

Education: BCs in IS from Faculty of computers & information systems

Mansoura University- 2003

E-mail: hsn_3004@yahoo.com

#6

بارك الله فيكما إخوتي علاء الدين و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
#7

تمرين 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

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

#8

احجزولي مكان عند مكيف الفصل :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 - في 5 يونيو 2005 في 16:30

11_03_06_12_48_57_1142110137Image(_66).jpg

#9

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

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

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

:rolleyes:

#10

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

اسف سوف اقطعك من كتابة الكود، ادخل هنا لدقيقتين فقط

http://www.shbab1.com/2minutes.htm

#11

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

لا إله إلا الله العظيم الحليم,لا إله إلا الله رب العرش العظيم,لا إله إلا الله رب السموات ورب الأرض ورب العرش الكريم.

#12

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

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

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

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

#13

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

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#14

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

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

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

#15
بركان كتب:
ها أنا عدت مرّة أخرى  (h)

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

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

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

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

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

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

:)

11_03_06_12_48_57_1142110137Image(_66).jpg

#16

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

#17

السلام عليكم

هذا هو حل التمرين الثاني (أدري أني تأخرت قليلا :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.

إنتهى.

#18

تمرين 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);      
	}   
}
#19

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

#20

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

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

هذا الموضوع مغلق.

مواضيع مشابهة