حل اسئلة وتمارين بلغة جافا الجزء الثاني
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1 • شاطر
abushuber- ....
- تاريخ التسجيل : 29/09/2018
المساهمات : 57
النقاط : 81
التقيم : 0
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
أهلا بيك
السؤال الاول : يطلب إعطاء مثال لكل من :
1_Overloading : التعريف و المثال فى مقالة الاستاذة @زهراء على الرابط التالى :
2_protected Field أو الحقل المحمى باللغة العربية
تعرف الحقول Field فى لغة الجافا على انها المتغيرات التى يتم الاعلان عنها داخل الفئة أو الكلاس و خارج الدوال لاستخدامها فى فئات أخرى ....مثال الاعلان عن بعض المتغيرات فى الكلاس Employee
ويتم الوصول الي المتغيرات اعلاه فى الفئات الاخرى عن طريق ما يسمى محددات الوصول Access Modifiers التى تحدد طريقة الوصول اليها ...وتوفر لغة الجافا أربعة أنواع من معدّلات الوصول التى يمكن استخدامها على النحو التالى :
Default :وهو ما تم فعله فى المثال اعلاه حيث عند عدم تحديد أي مُعدل وصول - يُقال إنه يحتوي على معدِّل الوصول الافتراضي افتراضيًا ..و بالتالى لا يمكن الوصول و استخدام تلك المتغيرات إلا داخل الحزمة نفسها
Private :اذا سبق تلك المتغيرات الكملة Private يقال أن محدد الوصول خاص ... وبالتالى لا يمكن أستحدامها إلا ضمن الفئة التي يتم الإعلان عنها.أي فئة أخرى من نفس الحزمة لن تكون قادرة على الوصول إلى تلك المتغيرات
Protected ::اذا سبق تلك المتغيرات الكملة Protected يقال أن محدد الوصول محمي ...و بالتالى يمكن استخدام تلك المتغيرات داخل نفس الحزمة أو الفئات الفرعية في حزمة مختلفة فقط
Public :اذا سبق تلك المتغيرات الكملة Public يقال أن محدد الوصول عام ...أنه يمكن الوصول إلى تلك الحقول من خلال جميع الفئات في التطبيق الخاص بك
مثال توضحيى لكيفة اعلان كل نوع من الانواع السابقة :
المثال :تخزين اسم موظف فى حقل محمي باسم #name و طباعتة ....على النحو التالى :
3_ التهيئة الصريحة explicit initialization
و يقص بها أن يتم تعين قيم المتغيرات ....مثال توضيحيى :
لكن سؤالك يتطلب منك اعطاء مثال للتهيئة الصريحة و يقصد بها تعين القيم على النحو التالى :
وهذا هو المقصود بالتهئة الصريحة للمتغيرات explicit initialization
4_ إنشاء طريقة بمعاملات method with parameters
المثال : سنقوم بإنشاء طريقة باسم total لها عدد 2 عامل او بارميتر no1 و no2 لحساب مجموع عددين على النحو التالى :
و المثال بالكامل على النحو التالى :
5_ المعامل جديد new operator
المعامل New هى كلمة محجوزة فى لغة الجافا تقوم بإنشاء الكائنات object من الفئات وتعيينه لمتغير ....مثال :لو نظرت للمثال اعلاه ستجد أننا استخدمنا الكملة new لانشاء كائن فى الفئة JavaApplication1 ....المثال بطريقة اخرى:
السؤال الثاني : يطلب منك إنشاء كلاس باسم Author ...ويتم ذلك على النحو التالى :
على أن يحتوي هذا الكلاس على الحقول التالية :
حقل باسم name نوعة String...لتخزين الاسم
حقل باسم email نوعة String ... لتخزين البريد الالكترونى
حقل باسم gender نوعة char ...لخزين الجنس وهو يقبل حرف واحد فقط M ترمز للذكر أو F ترمز للانثي
ويتم ذلك على النحو التالى :
- على أن يحتوي الكلاس ايضا على المشيد أو constructor الخاص بالفئة بدون معاملات و يتم ذلك على النحو التالى :
_ كما يجب ان يحتوي الكلاس على الطرق التالية :
طريقة باسم getName من نوع String بدون معاملات لارجاع الاسم ويتم ذلك على النحو التالى :
طريقة باسم getEmail من نوع String بدون معاملات لارجاع البريد الالكتروني ويتم ذلك على النحو التالى :
طريقة باسم SetName بمعامل من نوع String لتخزين الاسم فية ويتم ذلك على النحو التالى :
طريقة باسم setEmail بمعامل من نوع String لتخزين البريد الالكترونى به ويتم ذلك على النحو التالى :
يمكن ملاحظة أن السؤال طلب منا انشاء حقل باسم gender ولم يتم استخدامة ولا اعلم لماذا لم يطلب فى السؤال انشاء طريقة لاستخدام الحقل gender
على اى حال تكون الفئة Author بالكامل على النحو التالى :
لكن السؤال لم يكتفي بذلك بل طلب منا انشاء كلاس اخر توجد بة الدالة main لتشغيل البرنامج و لذلك سنفترض أن اسم الكلاس الاخر المطلوب هو TestAuthor و بداخلة الدالة main يتم ذلك على النحو التالى :
السؤال الثالث : مكون من شقين
الشق الاول كتابة برنامج لحل المعادلة الرياضية التى بالصورة لكن للاسف كما اخبرتك سابقا هذه المعادلة الرياضية لم افهمها حتى استطيع كتابة البرنامج لها لذلك اعتذر عنها
أما الشق الثانى فمطلوب منك تعريف التالى :
1_Inheritance :بالعربية الوراثة وهي العملية التي يتم فيها توريث الخصائص والاساليب و الدوال من فئة الى أخرى ...الفئة التى يتم الوراثة منها تسمي الفئة الاساسية أو فئة الاصل أو بالانجليزية superclass ...و الفئة التى يتم الوراثة اليها تسمي فئة مشتقة و فئة تابعة أو بالانجليزية subclass و يتم استخدام الكلمة الأساسية "extends" لانشاء عملية الوراثة تلك بتمريرها الى الفئة المشتقة و ذلك على النحو التالى :
2_final
هى كلمة محجوزة فى لغة الجافا و يتم استخدامها في سياقات عديدة لتعريف كيان يمكن تعيينه مرة واحدة فقط...هذا الكيان قد يكون فئة class أو طريقة method أو متغيرات variables و سيتم بيانها على النحو التالى :
الفئات النهائية Final classes :
اذا تم استخدام الكلمة Final فائنها تصبح نهائية و بالتالى لا يمكن الوراثة منها ...مثال توضيحيى :
فى المثال اعلاه قمنا بانشاء الفئة MyClass و استخدما معها الكلمة المحجوزة final و بالتالى لا يمكن الوراثة منها كما اوضحنا فى الجزئية اعلاه ....على النحو التالى :
الطرق النهائية Final methods
اذا تم تعريف أو إنشاء الطريقة على انها نهائية فلا يمكن استخدامها فى الفئة الفرعية ....مثال توضيحيى /
نفترض ان لدينا الفئة Base بها عدد 2 طريقة ...طريقة منها معرفة على انها Final على النحو التالى :
عند عملية الوراثة يمكننا استخدام الطريقة m1 فى حين اننا لانستطيع استخدام الطريقة m2 لانها معرفة على انها final
المتغيرات النهائية Final variables
المتغير المعرف بـ final، لا يمكن إعطاءه قيمة جديدة من بعد أن ما تم إعطائه قيمة أولية. بمعنى آخر، لو لدينا متغير نصي من نوع local variable (أي داخل دالة) وقمنا بتعريفه كـ final:
فإنه لا يقبل إسناد قيمة له إلا مرة واحدة:
أو
السؤال الاول : يطلب إعطاء مثال لكل من :
1_Overloading : التعريف و المثال فى مقالة الاستاذة @زهراء على الرابط التالى :
2_protected Field أو الحقل المحمى باللغة العربية
تعرف الحقول Field فى لغة الجافا على انها المتغيرات التى يتم الاعلان عنها داخل الفئة أو الكلاس و خارج الدوال لاستخدامها فى فئات أخرى ....مثال الاعلان عن بعض المتغيرات فى الكلاس Employee
- الكود:
public class Employee {
String name ;
String position ;
int salary ;
Date hiredDate;
}
ويتم الوصول الي المتغيرات اعلاه فى الفئات الاخرى عن طريق ما يسمى محددات الوصول Access Modifiers التى تحدد طريقة الوصول اليها ...وتوفر لغة الجافا أربعة أنواع من معدّلات الوصول التى يمكن استخدامها على النحو التالى :
Default :وهو ما تم فعله فى المثال اعلاه حيث عند عدم تحديد أي مُعدل وصول - يُقال إنه يحتوي على معدِّل الوصول الافتراضي افتراضيًا ..و بالتالى لا يمكن الوصول و استخدام تلك المتغيرات إلا داخل الحزمة نفسها
Private :اذا سبق تلك المتغيرات الكملة Private يقال أن محدد الوصول خاص ... وبالتالى لا يمكن أستحدامها إلا ضمن الفئة التي يتم الإعلان عنها.أي فئة أخرى من نفس الحزمة لن تكون قادرة على الوصول إلى تلك المتغيرات
Protected ::اذا سبق تلك المتغيرات الكملة Protected يقال أن محدد الوصول محمي ...و بالتالى يمكن استخدام تلك المتغيرات داخل نفس الحزمة أو الفئات الفرعية في حزمة مختلفة فقط
Public :اذا سبق تلك المتغيرات الكملة Public يقال أن محدد الوصول عام ...أنه يمكن الوصول إلى تلك الحقول من خلال جميع الفئات في التطبيق الخاص بك
مثال توضحيى لكيفة اعلان كل نوع من الانواع السابقة :
- الكود:
public class Customer {
String position;
private String email;
protected String name;
public String city;
}
نرجع لمثالك المطلوب فية اعطاء مثال على حقل محمي protected Field
المثال :تخزين اسم موظف فى حقل محمي باسم #name و طباعتة ....على النحو التالى :
- الكود:
class JavaApplication1 {
protected String name;
public static void main(String[] args) {
new JavaApplication1().name="abushuber";
System.out.println("your name is "+name);
}
}
3_ التهيئة الصريحة explicit initialization
و يقص بها أن يتم تعين قيم المتغيرات ....مثال توضيحيى :
- الكود:
class SomeClass
{
static boolean b;
static byte by;
static char c;
static double d;
static float f;
static int i;
static long l;
static short s;
static String st;
}
الحقول السابقة لم يتم تعيين قيم لها.لذلك يتم تهيئتها بشكل ضمني و تكون النتائج على النحو التالى.
false
0
\u0000
0.0
0.0
0
0
0
null
لكن سؤالك يتطلب منك اعطاء مثال للتهيئة الصريحة و يقصد بها تعين القيم على النحو التالى :
- الكود:
class SomeClass
{
static boolean b = true;
static byte by = 1;
static char c = 'A';
static double d = 2.0;
static float f = 3.0f;
static int i = 4;
static long l = 5000000000L;
static short s = 20000;
static String st = "abc";
}
وهذا هو المقصود بالتهئة الصريحة للمتغيرات explicit initialization
4_ إنشاء طريقة بمعاملات method with parameters
المثال : سنقوم بإنشاء طريقة باسم total لها عدد 2 عامل او بارميتر no1 و no2 لحساب مجموع عددين على النحو التالى :
- الكود:
void total(int no1,int no2){
int sun = no1+no2;
System.out.println("Value= "+sun);
}
و المثال بالكامل على النحو التالى :
- الكود:
class JavaApplication1 {
void total(int no1,int no2){
int sun = no1+no2;
System.out.println("Value= "+sun);
}
public static void main(String[] args) {
new JavaApplication1().total(8, 10);
}
}
5_ المعامل جديد new operator
المعامل New هى كلمة محجوزة فى لغة الجافا تقوم بإنشاء الكائنات object من الفئات وتعيينه لمتغير ....مثال :لو نظرت للمثال اعلاه ستجد أننا استخدمنا الكملة new لانشاء كائن فى الفئة JavaApplication1 ....المثال بطريقة اخرى:
- الكود:
class JavaApplication1 {
void total(int no1,int no2){
int sun = no1+no2;
System.out.println("Value= "+sun);
}
public static void main(String[] args) {
JavaApplication1 b = new JavaApplication1();
b.total(8, 10);
}
}
السؤال الثاني : يطلب منك إنشاء كلاس باسم Author ...ويتم ذلك على النحو التالى :
- الكود:
class Author {
}
على أن يحتوي هذا الكلاس على الحقول التالية :
حقل باسم name نوعة String...لتخزين الاسم
حقل باسم email نوعة String ... لتخزين البريد الالكترونى
حقل باسم gender نوعة char ...لخزين الجنس وهو يقبل حرف واحد فقط M ترمز للذكر أو F ترمز للانثي
ويتم ذلك على النحو التالى :
- الكود:
class Author {
private String name;
private String email;
private char gender;
- على أن يحتوي الكلاس ايضا على المشيد أو constructor الخاص بالفئة بدون معاملات و يتم ذلك على النحو التالى :
- الكود:
class Author {
private String name;
private String email;
private char gender;
public Author() {
name=null;
email=null;
gender='F';
}
_ كما يجب ان يحتوي الكلاس على الطرق التالية :
طريقة باسم getName من نوع String بدون معاملات لارجاع الاسم ويتم ذلك على النحو التالى :
- الكود:
public String getName() {
return name;
}
طريقة باسم getEmail من نوع String بدون معاملات لارجاع البريد الالكتروني ويتم ذلك على النحو التالى :
- الكود:
public String getEmail() {
return email;
}
طريقة باسم SetName بمعامل من نوع String لتخزين الاسم فية ويتم ذلك على النحو التالى :
- الكود:
public void SetName(String name) {
this.name = name;
}
طريقة باسم setEmail بمعامل من نوع String لتخزين البريد الالكترونى به ويتم ذلك على النحو التالى :
- الكود:
public void setEmail(String email) {
this.email = email;
}
يمكن ملاحظة أن السؤال طلب منا انشاء حقل باسم gender ولم يتم استخدامة ولا اعلم لماذا لم يطلب فى السؤال انشاء طريقة لاستخدام الحقل gender
على اى حال تكون الفئة Author بالكامل على النحو التالى :
- الكود:
class Author {
private String name;
private String email;
private char gender;
public Author() {
name=null;
email=null;
gender='F';
}
public String getName() {
return name;
}
public void SetName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
لكن السؤال لم يكتفي بذلك بل طلب منا انشاء كلاس اخر توجد بة الدالة main لتشغيل البرنامج و لذلك سنفترض أن اسم الكلاس الاخر المطلوب هو TestAuthor و بداخلة الدالة main يتم ذلك على النحو التالى :
- الكود:
public class TestAuthor {
public static void main(String[] args) {
Author Test = new Author();
Test.SetName("ahmed");
Test.setEmail("Test@gmail.com");
System.out.println("your name is: " + Test.getName());
System.out.println("your email is: " + Test.getEmail());
}
}
المخرجات :
your name is: ahmed
your email is: Test@gmail.com
السؤال الثالث : مكون من شقين
الشق الاول كتابة برنامج لحل المعادلة الرياضية التى بالصورة لكن للاسف كما اخبرتك سابقا هذه المعادلة الرياضية لم افهمها حتى استطيع كتابة البرنامج لها لذلك اعتذر عنها
أما الشق الثانى فمطلوب منك تعريف التالى :
1_Inheritance :بالعربية الوراثة وهي العملية التي يتم فيها توريث الخصائص والاساليب و الدوال من فئة الى أخرى ...الفئة التى يتم الوراثة منها تسمي الفئة الاساسية أو فئة الاصل أو بالانجليزية superclass ...و الفئة التى يتم الوراثة اليها تسمي فئة مشتقة و فئة تابعة أو بالانجليزية subclass و يتم استخدام الكلمة الأساسية "extends" لانشاء عملية الوراثة تلك بتمريرها الى الفئة المشتقة و ذلك على النحو التالى :
- الكود:
class Super {
.....
.....
}
class Sub extends Super {
.....
.....
}
2_final
هى كلمة محجوزة فى لغة الجافا و يتم استخدامها في سياقات عديدة لتعريف كيان يمكن تعيينه مرة واحدة فقط...هذا الكيان قد يكون فئة class أو طريقة method أو متغيرات variables و سيتم بيانها على النحو التالى :
الفئات النهائية Final classes :
اذا تم استخدام الكلمة Final فائنها تصبح نهائية و بالتالى لا يمكن الوراثة منها ...مثال توضيحيى :
- الكود:
public final class MyClass {...}
فى المثال اعلاه قمنا بانشاء الفئة MyClass و استخدما معها الكلمة المحجوزة final و بالتالى لا يمكن الوراثة منها كما اوضحنا فى الجزئية اعلاه ....على النحو التالى :
- الكود:
public class ThisIsWrong extends MyFinalClass {...} // هذا مرفوض لان الفئة نهائية
الطرق النهائية Final methods
اذا تم تعريف أو إنشاء الطريقة على انها نهائية فلا يمكن استخدامها فى الفئة الفرعية ....مثال توضيحيى /
نفترض ان لدينا الفئة Base بها عدد 2 طريقة ...طريقة منها معرفة على انها Final على النحو التالى :
- الكود:
public class Base
{
public void m1() {...}
public final void m2() {...}
عند عملية الوراثة يمكننا استخدام الطريقة m1 فى حين اننا لانستطيع استخدام الطريقة m2 لانها معرفة على انها final
- الكود:
public class Derived extends Base
{
public void m1() {...} // مسموح,()
public void m2() {...} // غير مسموح
المتغيرات النهائية Final variables
المتغير المعرف بـ final، لا يمكن إعطاءه قيمة جديدة من بعد أن ما تم إعطائه قيمة أولية. بمعنى آخر، لو لدينا متغير نصي من نوع local variable (أي داخل دالة) وقمنا بتعريفه كـ final:
- الكود:
final String a;
فإنه لا يقبل إسناد قيمة له إلا مرة واحدة:
- الكود:
final String a;
a = "test";
a = "test2"; // ERROR
أو
- الكود:
final String a = "test";
a = "test2"; // ERROR
والى هنا ننتهى من السؤال الاول و الثاني و الثالث ....ولى معاك لقاء اخر
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
أهلا بيك
السؤال الرابع : يطلب منك إنشاء عدد 2 فئة أو كلاس على النحو التالى :
a_الكلاس الاول : أن يكون باسم Animal
b_أن يحتوى على الحقول التالية :
ويتم ذلك على النحو التالى :
c-أن يتم بناء المشيد constructor الخاص بالفئة بمعاملات وذلك على النحو التالى :
d_أن يحتوى على الطرق التالية :
اذن الكلاس بناء على تلك البيانات اعلاه سيكون على النحو التالى :
الكلاس الثاني :
a_ أن يكون باسم Cat سيكون على النحو التالى :
لكن السؤال طلب Inheritance أى ان يرث هذا الكلاس او الفئة دوال و طرق الكلاس الاول Animal لذلك سيتم استخدام الكلمة extends لتمديد الكلاس Cat ليرث من الكلاس Animal و يتم ذلك على النحو التالى :
b_ أن يحتوى على الحقول التالية :
وبما أننا قمنا بانشاء الحقول الثلاثة الاولى فى الكلاس الاول Animal و الذى قمنا بالوراثة منه فى الكلاس الثاني Cat ...فلا داعى للاعلان عنها مرة اخرى و سنتكتفى فقط بالاعلان عن الحقل الاخير الا وهو الحقل color على النحو التالى :
C-أن يحتوي على الطرق التالية :
الطرق من رقم 1 الى الرقم 6 تم انشائها فى الكلاس الاول Animal و الذى يرث منه الكلاس Cat لذلك لا داعى لانشائها مرة اخري و سنكتفي فقط بانشاء الطريقة getColor و الطريقة setColor على النحو التالى :
d_أن يتم بناء المشيد constructor الخاص بالفئة بمعاملات وذلك على النحو التالى :
أخير سنقوم بانشاء كلاس ثالث و ليكن باسم AnimalInheritanceTest لتشغيل الكود على النحو التالى :
و أخيرا المخرجات
السؤال الرابع : يطلب منك إنشاء عدد 2 فئة أو كلاس على النحو التالى :
a_الكلاس الاول : أن يكون باسم Animal
- الكود:
public class Animal {
}
b_أن يحتوى على الحقول التالية :
- حقل باسم vegetarian نوعة boolean
- حقل باسم eats نوعة String
- حقل باسم noOfLegs نوعة int
ويتم ذلك على النحو التالى :
- الكود:
public class Animal {
private boolean vegetarian;
private String eats;
private int noOfLegs;
}
c-أن يتم بناء المشيد constructor الخاص بالفئة بمعاملات وذلك على النحو التالى :
- الكود:
public Animal(boolean veg, String food, int legs){
this.vegetarian = veg;
this.eats = food;
this.noOfLegs = legs;
}
d_أن يحتوى على الطرق التالية :
- طريقة باسم isVegetarian نوعها boolean
- طريقة باسم setVegetarian بمعامل باسم veg من نوع boolean
- طريقة باسم getEats من نوع String
- طريقة باسم setEats بمعامل باسم eats من نوع String
- طريقة باسم getNoOfLegs من نوع int
- طريقة باسم setNoOfLegs بمعامل باسم noOfLegs من نوع int
اذن الكلاس بناء على تلك البيانات اعلاه سيكون على النحو التالى :
- الكود:
public class Animal {
private boolean vegetarian;
private String eats;
private int noOfLegs;
public Animal(){}
public Animal(boolean veg, String food, int legs){
this.vegetarian = veg;
this.eats = food;
this.noOfLegs = legs;
}
public boolean isVegetarian() {
return vegetarian;
}
public void setVegetarian(boolean vegetarian) {
this.vegetarian = vegetarian;
}
public String getEats() {
return eats;
}
public void setEats(String eats) {
this.eats = eats;
}
public int getNoOfLegs() {
return noOfLegs;
}
public void setNoOfLegs(int noOfLegs) {
this.noOfLegs = noOfLegs;
}
}
اذن الكلاس الاول الذى يسمي Animal كاملا سيكون على النحو التالى :
- الكود:
public class Animal {
private boolean vegetarian;
private String eats;
private int noOfLegs;
public Animal(){}
public Animal(boolean veg, String food, int legs){
this.vegetarian = veg;
this.eats = food;
this.noOfLegs = legs;
}
public boolean isVegetarian() {
return vegetarian;
}
public void setVegetarian(boolean vegetarian) {
this.vegetarian = vegetarian;
}
public String getEats() {
return eats;
}
public void setEats(String eats) {
this.eats = eats;
}
public int getNoOfLegs() {
return noOfLegs;
}
public void setNoOfLegs(int noOfLegs) {
this.noOfLegs = noOfLegs;
}
}
الكلاس الثاني :
a_ أن يكون باسم Cat سيكون على النحو التالى :
- الكود:
public class Cat{
}
لكن السؤال طلب Inheritance أى ان يرث هذا الكلاس او الفئة دوال و طرق الكلاس الاول Animal لذلك سيتم استخدام الكلمة extends لتمديد الكلاس Cat ليرث من الكلاس Animal و يتم ذلك على النحو التالى :
- الكود:
public class Cat extends Animal{
}
b_ أن يحتوى على الحقول التالية :
- حقل باسم vegetarian نوعة boolean
- حقل باسم eats نوعة String
- حقل باسم noOfLegs نوعة int
- حقل باسم color نوعة String
وبما أننا قمنا بانشاء الحقول الثلاثة الاولى فى الكلاس الاول Animal و الذى قمنا بالوراثة منه فى الكلاس الثاني Cat ...فلا داعى للاعلان عنها مرة اخرى و سنتكتفى فقط بالاعلان عن الحقل الاخير الا وهو الحقل color على النحو التالى :
- الكود:
public class Cat extends Animal{
private String color;
C-أن يحتوي على الطرق التالية :
- طريقة باسم isVegetarian نوعها boolean
- طريقة باسم setVegetarian بمعامل باسم veg من نوع boolean
- طريقة باسم getEats من نوع String
- طريقة باسم setEats بمعامل باسم eats من نوع String
- طريقة باسم getNoOfLegs من نوع int
- طريقة باسم setNoOfLegs بمعامل باسم noOfLegs من نوع int
- طريقة باسم getColor من نوع String
- طريقة باسم setColor بمعامل باسم color من نوع String
الطرق من رقم 1 الى الرقم 6 تم انشائها فى الكلاس الاول Animal و الذى يرث منه الكلاس Cat لذلك لا داعى لانشائها مرة اخري و سنكتفي فقط بانشاء الطريقة getColor و الطريقة setColor على النحو التالى :
- الكود:
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
d_أن يتم بناء المشيد constructor الخاص بالفئة بمعاملات وذلك على النحو التالى :
- الكود:
public Cat(boolean veg, String food, int legs) {
super(veg, food, legs);
this.color="White";
}
public Cat(boolean veg, String food, int legs,String color){
super(veg, food, legs);
this.color=color;
}
اذن الكلاس الثاني Cat بالكامل على النحو التالى :
- الكود:
public class Cat extends Animal{
private String color;
public Cat(boolean veg, String food, int legs) {
super(veg, food, legs);
this.color="White";
}
public Cat(boolean veg, String food, int legs,String color){
super(veg, food, legs);
this.color=color;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
أخير سنقوم بانشاء كلاس ثالث و ليكن باسم AnimalInheritanceTest لتشغيل الكود على النحو التالى :
- الكود:
public class AnimalInheritanceTest {
public static void main(String[] args) {
Cat cat = new Cat(false, "milk", 4, "black");
System.out.println("Cat is Vegetarian?" + cat.isVegetarian());
System.out.println("Cat eats " + cat.getEats());
System.out.println("Cat has " + cat.getNoOfLegs() + " legs.");
System.out.println("Cat color is " + cat.getColor());
}
}
و أخيرا المخرجات
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
كل الشكر لك استاذ احمد ربي ينور دربك...بالنسبة للسؤال الثالث فرع A هو عبارة عن متسلسلة حسابية..يريد فيها ايجاد علاقة جمع بين i الذي يبدأ من بواحد وينتهي بn
حيث ان ( 1 ) مرفوع للاس 1+!2 حيث ان (! ) هو مضروب (دالة fator) ..مقسوم على مضروب ال2....يعني انشاء دالة power ودالة factor...هذا مافهمته رياضيا لكن برمجيا لااعرف كيف نترجم هذه المعطيات...ونفس الشئ بالنسبة للاسئلة التي قبلها...
حيث ان ( 1 ) مرفوع للاس 1+!2 حيث ان (! ) هو مضروب (دالة fator) ..مقسوم على مضروب ال2....يعني انشاء دالة power ودالة factor...هذا مافهمته رياضيا لكن برمجيا لااعرف كيف نترجم هذه المعطيات...ونفس الشئ بالنسبة للاسئلة التي قبلها...
abushuber- ....
- تاريخ التسجيل : 29/09/2018
المساهمات : 57
النقاط : 81
التقيم : 0
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
abushuber كتب:كل الشكر لك استاذ احمد ربي ينور دربك...بالنسبة للسؤال الثالث فرع A هو عبارة عن متسلسلة حسابية..يريد فيها ايجاد علاقة جمع بين i الذي يبدأ من بواحد وينتهي بn
حيث ان ( 1 ) مرفوع للاس 1+!2 حيث ان (! ) هو مضروب (دالة fator) ..مقسوم على مضروب ال2....يعني انشاء دالة power ودالة factor...هذا مافهمته رياضيا لكن برمجيا لااعرف كيف نترجم هذه المعطيات...ونفس الشئ بالنسبة للاسئلة التي قبلها...
أهلا بيك اخى
بعد البحث عن الرموز الرياضة بالمعادلة و بناء على بعض المعلومات منك اتضح لى الاتى :
الرمز Σ سيجما sigma هو حاصل جمع عناصر المجموعه من 1=i الى n ...وبنا أن السؤال لم يحدد قيمة n اذن سنفترض انها 5 أذن :
s=Σ 1:5
و بالتالى فان s=Σ 1:5
s=1+2+3+4+5
s=15
و الحل البرمجي على البرمجى على النحو التالى :
- الكود:
public class TestAuthor {
public static void main(String[] args) {
int n = 5;
System.out.println(factorsum(n));
}
static int factorsum(int n)
{
int sum = 0;
for (int i = 1; i <= n; i++)
sum += (i);
return sum;
}
}
و كانت المخرجات على النحو التالى :
وهى نفس النتيجة التى تم الحصول عليها فى الحل الرياضى
لكن السؤال لم يكتفي بذلك بل كان التعبير الرياضى أكثر تعيقدا كان على النحو التالى :
s =sigma(i^2*i) / (!*i
_ الصيغة الرياضية الاولى وهى (i^2*i) ...تم تحليلها رياضيا على النحو التالى :
=(1 ^ 2 * 1 )+(2^2*2)+(3^2*3)+(4^2*4)+(5^2*5)
=(1)+(+(27)+(64)+(125)
=225
_مقسومة على الصيغة الرياضية (!*i)
=(1*1)+(2*2)+(3*3)+(4*4)+(5*5)
=(1)+(4)+(9)+(16)+(25)
=55
أذن : s=225/55
=4.090
ملحوظة : هذا هو الحل الرياضى للمسالة الثالثة فى مسائل الجزء الاول التى بالصورة التالية :
أما المسالة التى بالجزء الثاني فبياناتها غير واضحة بالمرة ...لذلك ارجوا كتابتها على هيئة تعبير رياضى و سأحاول ان شاء الله على ما فهمت كتابة برنامج لكيهما ....لى معك لقاء اخر فى ذلك
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
كل الشكر لك استاذ...بالنسبة للحل الرياضي ما نختلف علي...لكن الحل البرمجي هو المشكلة...ع العموم...هذه نسخة لكل من السؤالين...اذا تسنى لك الوقت ...فانني بانتظار اجابتك دوما......بالنسبة لفكرة الحل اعتقد بالبداية ننشئ دالة powerودالةfactor...ثم يتم انشاء كائن بجزء الmain...ويتم استدعاء هذين الدالتين وفق المعادلة المذكورة...ومن ثم طباعتها
abushuber- ....
- تاريخ التسجيل : 29/09/2018
المساهمات : 57
النقاط : 81
التقيم : 0
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
أهلا بيك اخى :
بالنسبة للمسالة الرياضية فى الجزء الاول وبعد التحليل الرياضى فى المشاركة السابقة استطيع ان اكتب لك البرنامج على النحو التالى :
_ سنقوم بكتابة طريقة وليكن باسم factorsum لايجاد اجمالى المعاملات للسلسة الصيغة الرياضية التالية :
و التى تعنى العملية الحسابية التالية :
(1 * 1) + (2 * 2) + (3 * 3) + (4 * 4) + (5 * 5)
=55
وذلك من خلال حلقة تكرارية للحصول على القيم بين العددين i الى n ...ثم بعد ذلك ضرب كل قيمة فى المعاملة للقيمة ! و ايجاد مجموعهم على النحو التالى :
سنقوم بكتابة طريقة وليكن باسم power لايجاد الصيغة الرياضية التالية :
المخرجات
بالنسبة للمسالة الرياضية فى الجزء الاول وبعد التحليل الرياضى فى المشاركة السابقة استطيع ان اكتب لك البرنامج على النحو التالى :
_ سنقوم بكتابة طريقة وليكن باسم factorsum لايجاد اجمالى المعاملات للسلسة الصيغة الرياضية التالية :
(!*i)
و التى تعنى العملية الحسابية التالية :
(1 * 1) + (2 * 2) + (3 * 3) + (4 * 4) + (5 * 5)
=55
وذلك من خلال حلقة تكرارية للحصول على القيم بين العددين i الى n ...ثم بعد ذلك ضرب كل قيمة فى المعاملة للقيمة ! و ايجاد مجموعهم على النحو التالى :
- الكود:
static int factorsum(int n)
{
int res =0;
for (int i = 1; i <= n; i++)
res += (i * i);
return res;
}
سنقوم بكتابة طريقة وليكن باسم power لايجاد الصيغة الرياضية التالية :
(i^2*i)
وهى تعنى (1 ^ 2 * 1 ) +(2 ^ 2 * 2 )+(3 ^ 2 * 3 )+(4^2*4)+(5^2*5)
أذن تساوى ((1^2)*1)+((2^2)*2)+((3^2)*3)+((4^2)*4)+((5^2)*5)
اذن تساوى (1*1)+(4*2)+(9*3)+(16*4)+(25*5)
= (1)+(+(27)+(64)+(125)
=225
ويتم ذلك برمجيا من خلال حلقة تكرار للحصول على القيم من i الى n ...ثم الحصول على مربع كل قيمة باستخدام الدالة Math.pow مضروبة فى قيمة العنصر نفسة i ثم قسمته على الصيغة الرياضة التى تم الحصول عليها فى الكلاس factorsum وذلك على النحو التالى :
- الكود:
static double power(int n)
{
double sum = 0;
for (int i = 1; i <= n; i++)
sum += Math.pow(i,2)*i/factorsum(n);
return sum;
}
اذن البرنامج بالكامل سيكون على النحو التالى :
- الكود:
public class Test {
public static void main(String[] args) {
int n = 5;
System.out.println(power(n));
}
static int factorsum(int n)
{
int res =0;
for (int i = 1; i <= n; i++)
res += (i * i);
return res;
}
static double power(int n)
{
double sum = 0;
for (int i = 1; i <= n; i++)
sum += Math.pow(i,2)*i/factorsum(n);
return sum;
}
}
المخرجات
وهى نفس النتيجة التى تم الحصول عليها رياضيا
s =sigma(i^2*i) / (!*i
= 225/55
=4.090
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
تم حل المعادلة الاولى فى المساهمة اعلاه قبل قراءة مساهمتك بالبيانات الجديدة لذلك ساوافيك بالتعديل
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
بالنسبة للسؤال التالى :
التعبير الرياضى سيكون على النحو التالى :
وعند النظر لتلك الصيفة فالذى تغير هى الصيغة الرياضية الاولى الى :
(1)^2*1+(2)^2*2 +.....(j)^*!
اما المعادلة الثانية لم تتغير الا فى اسم المتغير i الى j
و بالتالى فالحل البرمجى على النحو التالى :
التعبير الرياضى سيكون على النحو التالى :
s =sigma(j)^2*! / (!*j
وعند النظر لتلك الصيفة فالذى تغير هى الصيغة الرياضية الاولى الى :
(1)^2*1+(2)^2*2 +.....(j)^*!
اما المعادلة الثانية لم تتغير الا فى اسم المتغير i الى j
و بالتالى فالحل البرمجى على النحو التالى :
- الكود:
public class TestAuthor {
public static void main(String[] args) {
int n = 5;
System.out.println(power(n));
}
static int factor(int n)
{
int res =0;
for (int j = 1; j <= n; j++)
res += (j * j);
return res;
}
static double power(int n)
{
double sum = 0;
for (int j = 1; j <= n; j++)
sum += Math.pow(j,2*j)/factor(n);
return sum;
}
}
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
أما السؤال
الحل البرمجي :
المخرجات :
الحل الرياضى للتاكد من المعادلة :
ناخذ الصيغة الاولى : sigma(i)^2*!+1
أذن : ((1)^2*1+1) + ((2)^2*2+1) +((3)^2*3+1)+((4)^2*4+1)+((5)^2*5+1)
= (1^3)+(2^5)+(3^7)+(4^9)+(5^11)
= (1)+(32)+(2187)+(262144)+(48828125)
=49092489
و عند تشغيل الدالة power التى تقوم بحساب الصيغة الرياضية السابقة :
الصيغة الرياضية التانية 2*!
أذن = (2*1)+(2*2)+(2*3)+(2*4)+(2*5)
=(2)+(4)+(6)+(+(10)
=24
و عند تشغيل الدالة factor التى تقوم بحساب الصيغة الرياضية السابقة كانت النتيجة هكذا
وهى مختلفة عن الحل الرياضى ولا اعلم السبب لذلك فان الناتج الرياضى النهائى سيختلف عن البرمجي وصدقنى بذلت كل ما فى وسعى ولكن لم استطيع ان يكون الحلان واحد ...ربما يكون فهمى الرياضى خطأ
تحياتى لك
الحل البرمجي :
- الكود:
public class TestAuthor {
public static void main(String[] args) {
int n = 5;
System.out.println(power(n));
}
static int factor(int n)
{
int res =0;
for (int j = 1; j <= n; j++)
res += (2 * j);
return res;
}
static double power(int n)
{
double sum = 0;
for (int j = 1; j <= n; j++)
{
int s =2*j+1;
sum += Math.pow(j,s)/factor(n);
}
return sum;
}
}
المخرجات :
الحل الرياضى للتاكد من المعادلة :
التعبير الرياضى s =sigma(i)^2*!+1 / (!*2
ناخذ الصيغة الاولى : sigma(i)^2*!+1
أذن : ((1)^2*1+1) + ((2)^2*2+1) +((3)^2*3+1)+((4)^2*4+1)+((5)^2*5+1)
= (1^3)+(2^5)+(3^7)+(4^9)+(5^11)
= (1)+(32)+(2187)+(262144)+(48828125)
=49092489
و عند تشغيل الدالة power التى تقوم بحساب الصيغة الرياضية السابقة :
وهو يساوى الحل الرياضى
الصيغة الرياضية التانية 2*!
أذن = (2*1)+(2*2)+(2*3)+(2*4)+(2*5)
=(2)+(4)+(6)+(+(10)
=24
و عند تشغيل الدالة factor التى تقوم بحساب الصيغة الرياضية السابقة كانت النتيجة هكذا
وهى مختلفة عن الحل الرياضى ولا اعلم السبب لذلك فان الناتج الرياضى النهائى سيختلف عن البرمجي وصدقنى بذلت كل ما فى وسعى ولكن لم استطيع ان يكون الحلان واحد ...ربما يكون فهمى الرياضى خطأ
تحياتى لك
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
أحمد مناع كتب:بالنسبة للسؤال التالى :
التعبير الرياضى سيكون على النحو التالى :s =sigma(j)^2*! / (!*j
وعند النظر لتلك الصيفة فالذى تغير هى الصيغة الرياضية الاولى الى :
(1)^2*1+(2)^2*2 +.....(j)^*!
اما المعادلة الثانية لم تتغير الا فى اسم المتغير i الى j
و بالتالى فالحل البرمجى على النحو التالى :
- الكود:
public class TestAuthor {
public static void main(String[] args) {
int n = 5;
System.out.println(power(n));
}
static int factor(int n)
{
int res =0;
for (int j = 1; j <= n; j++)
res += (j * j);
return res;
}
static double power(int n)
{
double sum = 0;
for (int j = 1; j <= n; j++)
sum += Math.pow(j,2*j)/factor(n);
return sum;
}
}
تحياتى لك يا استاذ @أحمد مناع على مجهودك الثمين ذلك ...لكن قيمة J فى السؤال هى -1 و ليس 1 و بالتالى فان الطريقة factor ستكون على النحو التالى :
- الكود:
static int factor(int n)
{
int res =0;
for (int j =-1; j <= n-1; j++)
res += (j * j);
return res;
}
و المخرجات = 31
للتاكد من الحل رياضيا
=(-1*-1)+(1*1)+(2*2)+(3*3)+(4*4)
=(1)+(1)+(4)+(9)+(16)
=31
و ايضا الطريقة power ستكون على النحو التالى :
- الكود:
static double power(int n)
{
double sum = 0;
for (int j = -1; j <= n-1; j++)
sum += Math.pow(j,2*j)/factor(n);
return sum;
}
و الكود بالكامل على النحو التالى بعد التعديل :
- الكود:
public class TestAuthor {
public static void main(String[] args) {
int n = 5;
System.out.println(power(n));
}
static int factor(int n)
{
int res =0;
for (int j =-1; j <= n-1; j++)
res += (j * j);
return res;
}
static double power(int n)
{
double sum = 0;
for (int j = -1; j <= n-1; j++)
sum += Math.pow(j,2*j)/factor(n);
return sum;
}
}
نتيجة المعادلة :
= 2138.193
تحياتى لك
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
وهى مختلفة عن الحل الرياضى ولا اعلم السبب لذلك فان الناتج الرياضى النهائى سيختلف عن البرمجي وصدقنى بذلت كل ما فى وسعى ولكن لم استطيع ان يكون الحلان واحد ...ربما يكون فهمى الرياضى خطأ
أستاذ @أحمد مناع ....الحل الرياضي بيساوى ايضا 30 و ليس 24 وهى نفس النتيجة التى قامت الدالة factor بحسابها ....
أذن = (2*1)+(2*2)+(2*3)+(2*4)+(2*5)
=(2)+(4)+(6)+ 8 +(10)
=30 و ليس 24
تحياتى @أحمد مناع
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
شابوووه @زهراء ....ارفع لك القبعة على ذكائك الفذ و صدقني يتشرف المنتدى باسمك فى كل مساهمة
وأرجوا المعذرة أخى @abushuber على هذا السهو وعدم التركيز
وأرجوا المعذرة أخى @abushuber على هذا السهو وعدم التركيز
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
والله ياجماعة...لا ادري مااقول لكما....كل الامتنان والشكر وع المجهود والوقت المبذول من قبلكم لمساعدة من هو محتاج للمساعدة....حفظكم الله من كل سوء ونش الله في ميزان حسناتكم لكن ياريت توضيح مايلي حتى افهمه بشكل كامل..زهراء كتب:ارفع لك القبعة على ذكائك الفذ و صدقني يتشرف المنتدى باسمك فى كل مساهمة
1-لماذا كتابة الكود بهذه الطريقة...يعني مثلا ماذا تقصد ب(res += (j * j علما ان j التي في البسط مرفوعة للاس 2 ضرب factor (!) وليس ضرب j او (i) كما ضربتها حضرتك وحضرتك قلت
(sum += Math.pow(j,2*j)/factor(n وكذلك بالنسبة (res += (i*i فالذي اعرفه انا ان للpowerمتغيرين (اس واساس) مثلا(n,k) وللfactor اساس فقد مثلا(n)...
2-لماذا لم تكتب الطرق (power& factor) بجزء الكلاس ومن ثم تستطيع استدعائها بانشاء كائن بجزء الmain .
3-لماذا استخدمت static لانشاء الطريقتين.
يعني قصدي ممكن كتابة الحل بكود ابسط من هذا لكلا المثالين ...بالطريقة اللي يعرفها المبتدين....او مايصير ياريت توضيح من حضرتك
abushuber- ....
- تاريخ التسجيل : 29/09/2018
المساهمات : 57
النقاط : 81
التقيم : 0
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
أهلا بيك أخى
بالنسبة لاستفسارك رقم 1
المعادلة تطلب مجموع الاعداد من -1 الى n وهى مكونة من جزئيين :
الجزء الاعلى = j مرفوع لاس 2 ...هذا الاس مضروب فى !
حيث أن :
j = هو قيمة العدد هى -1 و 1 و 2 و 3 و4 .....و n
أما حرف التعجب ! هو معامل الرقم لكل قيمة اعلاه -1 و 1 و 2 ....و لما تم حسابها بالالة الحاسبة ظهرت هكذا لذلك اعتقدنا ان معامل الرقم هو نفسة وتم الحساب على ذلك
و بالتالى فان الجزء الاعلى = j مرفوعة للاس 2 * j ...طالما ان ! هى معامل الرقم و التى تساوي قيمة نفسها
و بعد ذلك استخدمنا الدالة power لايجاد قيمة j مرفوعة للاس 2 ....لكن الاس 2 يجب زيادة كما طلب المثال بانه يساى 2*! ...و بالتالى فكل رقم من j سيتم رفعة للاس 2 مضروب فى فى المعامل ! الذى اعتقدنا يساونى نفس الرقم
و بالتالى فالرقم 4 مثلا ستكون على النحو التالى :Math.pow(4,2*4 = Math.pow(j,2*j)
Math.pow(4,
=4^8
=65536
وهكذا بالنسبة باقى ارقام المجموعة N حتى يتم الانتهاء من باقى المجموعة و تخزين النتائج فى المتغير sum
أما بالنسبة للجزء الثاني من المعادلة هى !j و بالتالى فهى برمجيا = (j*j ) و ذلك لاعتقادنا أن معامل الرقم ! هى نفس قيمة الرقم ...وهى كما حسابنها على الالة الحاسبة فاذا كتب رقم 1 على الالة ثم وضعت الحرف ! ستظهر النتيجة 1 ...و ايضا الرقم 2 ستظهر النتيجة 2 ...ولذلك اعتدقنا ان معامل الرقم هو نفسة ...لكن اذا استمر فى الحساب على الالة الحاسبة ووضع الرقم 3 ستظهر النتجة 6 ...و الرقم 4 ستظهر النتيجة 24 ...و بالتالى فاعتقداى بان معامل الرقم أو حرف التعجب ! لا يساوى نفس الرقم ....وهذا الخطا قد وقعت فية بعد حل الاسئلة و لم اكتشفة الا بعد سؤالك هذا
بالنسبة لاستفسارك رقم 2
انا فعلا قمت باشاء الطرق (power& factor) بداخل الكلاس الذى يحتوى على الدالة main ....الا اذا كنت تريد انشاء كلاس اخر يحتوى على تلك الطرق ....أما لماذا لم يتم استدعاها عن طريق كائن جديد ...ٍيتم لإضاحة فى الجزئية التالية
بالنسبة لاستفسارك رقم 3
قمت باستخدام static لاستدعاء الدالة دون إنشاء كائن جديد منها اختصارا للكود ...فبدلا من ان يتم ساتدعائها كهذا بدون static
فكان اوفر لى كتابة الكود ان يتم وضع static للطريقة لاستدعاها مباشرة دون الحاجة الى انشاء كائن جديد من فئتها ثم استدعاها خصوصا لم يحدد السؤال كيفية انشاء الطرق و كان لنا الحرية فى ذلك
ساوافيك باتعديل بعد عملى أن ! ليست هى قيمة الرقم نفسة ...ربما بعد صلاة الجمعة او بالمساء
نرجوا المعذرة @abushuber
بالنسبة لاستفسارك رقم 1
المعادلة تطلب مجموع الاعداد من -1 الى n وهى مكونة من جزئيين :
الجزء الاعلى = j مرفوع لاس 2 ...هذا الاس مضروب فى !
حيث أن :
j = هو قيمة العدد هى -1 و 1 و 2 و 3 و4 .....و n
أما حرف التعجب ! هو معامل الرقم لكل قيمة اعلاه -1 و 1 و 2 ....و لما تم حسابها بالالة الحاسبة ظهرت هكذا لذلك اعتقدنا ان معامل الرقم هو نفسة وتم الحساب على ذلك
و بالتالى فان الجزء الاعلى = j مرفوعة للاس 2 * j ...طالما ان ! هى معامل الرقم و التى تساوي قيمة نفسها
و بعد ذلك استخدمنا الدالة power لايجاد قيمة j مرفوعة للاس 2 ....لكن الاس 2 يجب زيادة كما طلب المثال بانه يساى 2*! ...و بالتالى فكل رقم من j سيتم رفعة للاس 2 مضروب فى فى المعامل ! الذى اعتقدنا يساونى نفس الرقم
و بالتالى فالرقم 4 مثلا ستكون على النحو التالى :Math.pow(4,2*4 = Math.pow(j,2*j)
Math.pow(4,
=4^8
=65536
وهكذا بالنسبة باقى ارقام المجموعة N حتى يتم الانتهاء من باقى المجموعة و تخزين النتائج فى المتغير sum
أما بالنسبة للجزء الثاني من المعادلة هى !j و بالتالى فهى برمجيا = (j*j ) و ذلك لاعتقادنا أن معامل الرقم ! هى نفس قيمة الرقم ...وهى كما حسابنها على الالة الحاسبة فاذا كتب رقم 1 على الالة ثم وضعت الحرف ! ستظهر النتيجة 1 ...و ايضا الرقم 2 ستظهر النتيجة 2 ...ولذلك اعتدقنا ان معامل الرقم هو نفسة ...لكن اذا استمر فى الحساب على الالة الحاسبة ووضع الرقم 3 ستظهر النتجة 6 ...و الرقم 4 ستظهر النتيجة 24 ...و بالتالى فاعتقداى بان معامل الرقم أو حرف التعجب ! لا يساوى نفس الرقم ....وهذا الخطا قد وقعت فية بعد حل الاسئلة و لم اكتشفة الا بعد سؤالك هذا
بالنسبة لاستفسارك رقم 2
- الكود:
لماذا لم تكتب الطرق (power& factor) بجزء الكلاس ومن ثم تستطيع استدعائها بانشاء كائن بجزء الmain .
انا فعلا قمت باشاء الطرق (power& factor) بداخل الكلاس الذى يحتوى على الدالة main ....الا اذا كنت تريد انشاء كلاس اخر يحتوى على تلك الطرق ....أما لماذا لم يتم استدعاها عن طريق كائن جديد ...ٍيتم لإضاحة فى الجزئية التالية
بالنسبة لاستفسارك رقم 3
- الكود:
3-لماذا استخدمت static لانشاء الطريقتين.
قمت باستخدام static لاستدعاء الدالة دون إنشاء كائن جديد منها اختصارا للكود ...فبدلا من ان يتم ساتدعائها كهذا بدون static
- الكود:
public class TestAuthor {
public static void main(String[] args) {
int n = 5;
TestAuthor p = new TestAuthor();
System.out.println(p.power(n));
}
فكان اوفر لى كتابة الكود ان يتم وضع static للطريقة لاستدعاها مباشرة دون الحاجة الى انشاء كائن جديد من فئتها ثم استدعاها خصوصا لم يحدد السؤال كيفية انشاء الطرق و كان لنا الحرية فى ذلك
ساوافيك باتعديل بعد عملى أن ! ليست هى قيمة الرقم نفسة ...ربما بعد صلاة الجمعة او بالمساء
نرجوا المعذرة @abushuber
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
abushuber- ....
- تاريخ التسجيل : 29/09/2018
المساهمات : 57
النقاط : 81
التقيم : 0
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
مضروب العدد Factorial فى الرياضيات هو نتيجة عملية ضرب كميتين اثنتين من الأعداد الصحيحة الموجبة n و يرمز له بالرمز ! ثم يكتب الرقم بعده , فمثلا 5! هو 120 حيث يتم حسابه على النحو التالى :
أذن لايجاد مضروب ! للرقم n برمجيا على النحو التالى :
1_قمنا بالاعلان عن المتغير res لتخزين قيمة مضروب الرقم n فية ...بما أن المتغير res سيحتوي على ضرب جميع الأرقام, يجب إعطائه رقم 1 كقيمة أولية لأن الرقم 1 لا يؤثر في عملية الضرب
2_انشأنا حلقة تكرار من 1 الى القيمة n ...فى دورة من حلقة التكرار نقوم بضرب قيمة العداد بقيمة المتغير res ثم نضع الناتج فى المتغير res من جديد من خلال معامل الاسناد *= ....وهكذا نحصل على مضروب ! الرقم n
اذن قيمة ! استطعنا الحصول عليها من الطريقة السابقة ....فلنأتى لحساب المعادلة
1_قمنا بالاعلان عن المتغير sum لتخزين قيمة إجمالى المعادلة بالكامل
المعادلة من شقين ....بسط و مقام
البسط =j مرفوع للاس 2...اس 2 هذا مضروب فى ! ....لذلك استخدمت حلقة تكرار للحصول على قيمة كل رقم فى المجموعة n و تمريرة للطريقة factor للحصول على مضروبة ...بعد ذلك قمت بضربة فى للاس 2 ...و استخدمت الدالة Math.pow و تمرير الاساس لها هو j مرفوعا للاس الجديد 2*factor(j)
المقام = j * مضروب الرقم !
=j*factor(j)
و الحل الكامل هكذا
و ارجوا المعذرة على فهمى أن مضروب الرقم يساوى الرقم نفسة كما كنت اعتقد
أذن لايجاد مضروب ! للرقم n برمجيا على النحو التالى :
- الكود:
static int factor(int n)
{
int res = 1 ;
for (int i=1; i<=n; i++)
res *= i;
return res;
}
1_قمنا بالاعلان عن المتغير res لتخزين قيمة مضروب الرقم n فية ...بما أن المتغير res سيحتوي على ضرب جميع الأرقام, يجب إعطائه رقم 1 كقيمة أولية لأن الرقم 1 لا يؤثر في عملية الضرب
2_انشأنا حلقة تكرار من 1 الى القيمة n ...فى دورة من حلقة التكرار نقوم بضرب قيمة العداد بقيمة المتغير res ثم نضع الناتج فى المتغير res من جديد من خلال معامل الاسناد *= ....وهكذا نحصل على مضروب ! الرقم n
اذن قيمة ! استطعنا الحصول عليها من الطريقة السابقة ....فلنأتى لحساب المعادلة
- الكود:
static double power(int n)
{
double sum = 0;
for (int j = 1; j <= n; j++)
sum += Math.pow(j,2*factor(j))/j*factor(j);
return sum;
}
1_قمنا بالاعلان عن المتغير sum لتخزين قيمة إجمالى المعادلة بالكامل
المعادلة من شقين ....بسط و مقام
البسط =j مرفوع للاس 2...اس 2 هذا مضروب فى ! ....لذلك استخدمت حلقة تكرار للحصول على قيمة كل رقم فى المجموعة n و تمريرة للطريقة factor للحصول على مضروبة ...بعد ذلك قمت بضربة فى للاس 2 ...و استخدمت الدالة Math.pow و تمرير الاساس لها هو j مرفوعا للاس الجديد 2*factor(j)
المقام = j * مضروب الرقم !
=j*factor(j)
و الحل الكامل هكذا
- الكود:
public class TestAuthor {
public static void main(String[] args) {
int n = 5;
System.out.println(power(n));
}
static int factor(int n)
{
int res = 1 ;
for (int i=1; i<=n; i++)
res *= i;
return res;
}
static double power(int n)
{
double sum = 0;
for (int j = 1; j <= n; j++)
sum += Math.pow(j,2*factor(j))/j*factor(j);
return sum;
}
}
و ارجوا المعذرة على فهمى أن مضروب الرقم يساوى الرقم نفسة كما كنت اعتقد
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
تم وضع المساهمة قبل قراءة مساهتمك ....ساقرء حلك الرياضى ساوافيك ربما الليلة او غدا على الاكثر....لكن بدى افهم شيء
اذا كان السؤال الاول j مرفوعة للاس 2 *!....لماذا وضعت مثلا الرقم 3 مرفوعة لاس 2 فقط ....فمن المفترض أن 3مرفوعة للاس 12.... لان مضروب الرقم 3 =6 ....وبما ان الرقم مرفوع للاس 2 أذن الاس الجديد 12
هذا كما فهمت من سؤالك j اس 2*!....ارجوا التوضيح
اذا كان السؤال الاول j مرفوعة للاس 2 *!....لماذا وضعت مثلا الرقم 3 مرفوعة لاس 2 فقط ....فمن المفترض أن 3مرفوعة للاس 12.... لان مضروب الرقم 3 =6 ....وبما ان الرقم مرفوع للاس 2 أذن الاس الجديد 12
هذا كما فهمت من سؤالك j اس 2*!....ارجوا التوضيح
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
شكرا لك استاذي العزيز...ساوضح لك المقصود بالنسبة للبسط الj مرفوعة الى اس (مضروب ال2) يعني هذا الاس هو ثابت مهما كانت قيمة j وهذا الاس يقرء (مضروب ال2) وليس قيمة الـj التي نأخذ مضروبها فمثلا الرقم 3 مرفوع لاس مضروب ال2 وبما ان مضروب ال2 هو 2 , اذن تصبح 2^3...فتصبح 9 وليس 12...وهكذا في بقية الاعداد...هذا اولا..ااما في المقام فيختلف الوضع حيث كان المراد من السؤال...مضروب الj يعني مثلا كان الj يساوي 3...فان مضروبه يكون 6...واذا كان الjيساوي 4 فان مضروبه يكون 24...وهكذا...فالبسط يختاف عن المقاام ان كلاهما يحتوي مضروب لكن مضروب البسط محدد ومقيد با2 فقط...اما مضروب المقام...يتغير بتغير قيمة ال j , ارجو ان قد اوصلت لك الفكرة انظر الى المثالأحمد مناع كتب:تم وضع المساهمة قبل قراءة مساهتمك ....ساقرء حلك الرياضى ساوافيك ربما الليلة او غدا على الاكثر....لكن بدى افهم شيء
اذا كان السؤال الاول j مرفوعة للاس 2 *!....لماذا وضعت مثلا الرقم 3 مرفوعة لاس 2 فقط ....فمن المفترض أن 3مرفوعة للاس 12.... لان مضروب الرقم 3 =6 ....وبما ان الرقم مرفوع للاس 2 أذن الاس الجديد 12
هذا كما فهمت من سؤالك j اس 2*!....ارجوا التوضيح
abushuber- ....
- تاريخ التسجيل : 29/09/2018
المساهمات : 57
النقاط : 81
التقيم : 0
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
فهمتك أخير ....لانى اساسا انا فاشل فى الرياضيات وكنت اعتقد أن J مرفوعة للاس 2 ثم نضرب هذا الاس فى ! ...لكن بعد شرحك فهمت أن J مرفوعة للاس مضروب 2! ....اللى هو اساسا بيساوى 2
حل المعادلة الاولى على النحو التالى :
ان شاء الله تعالى سيكون هذا هو الحل للمعادلة لكن بدون استخدام الاشارة السالبة ...وهتركة للاستاذة @زهراء ....فى استخدام السالب هنا لانى لما استخدمت طريقتها ظهرت لى رسالة خطأ
المعادلة الثانية
المخرجات :
حل المعادلة الاولى على النحو التالى :
- الكود:
public class TestAuthor {
public static void main(String[] args) {
int n = 5;
System.out.println(power(n));
}
static int factor(int n)
{
int res = 1 ;
for (int i=1; i<=n; i++)
res *= i;
return res;
}
static double power(int n)
{
double sum = 0;
for (int j = 1; j <= n; j++)
{
sum += Math.pow(j,factor(2))/factor(j);
}
return sum;
}
}
المخرجات
5.375
ان شاء الله تعالى سيكون هذا هو الحل للمعادلة لكن بدون استخدام الاشارة السالبة ...وهتركة للاستاذة @زهراء ....فى استخدام السالب هنا لانى لما استخدمت طريقتها ظهرت لى رسالة خطأ
المعادلة الثانية
- الكود:
public class TestAuthor {
public static void main(String[] args) {
int n = 5;
System.out.println(power(n));
}
static int factor(int n)
{
int res = 1 ;
for (int i=1; i<=n; i++)
res *= i;
return res;
}
static double power(int n)
{
double sum = 0;
for (int j = 1; j <= n; j++)
{
sum += Math.pow(j,factor(2)+1)/factor(2);
}
return sum;
}
}
المخرجات :
112.5
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: حل اسئلة وتمارين بلغة جافا الجزء الثاني
هههههههههههههههه...كل الشكر لك استاذ ع وقتك ومجهودك....الحمد لله تم الامتحان....ونش الله خير....واستفدت من المعلومات اللي حضرتك قدمتها بالشرح بشكل كبير جدا....وساضع اسئلة الامتحان كجزء ثالث للموضوع....واتمنى اجابتك عليها....حتى نعرف اخطائنا وين بالضبط...وبنفس الوقت للفائدة العامة
abushuber- ....
- تاريخ التسجيل : 29/09/2018
المساهمات : 57
النقاط : 81
التقيم : 0
الدولة :
الجنس :
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: نقاش و أستفسارات الاعضاء
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 12:41 am من طرف marketing118
» شركة تنظيف ستائر بالرياض
الأحد مارس 17, 2024 10:46 pm من طرف moslema_r
» خيام ملكيه من الداخل
الأحد مارس 17, 2024 8:13 pm من طرف marketing118
» شركة نقل عفش بالطائف
الأحد مارس 17, 2024 6:34 pm من طرف marketing118
» كهربائي منازل بالرياض
الأحد مارس 17, 2024 1:52 pm من طرف رانيا حماد
» افضل شركة نقل عفش بالرياض نقل باكستاني 40% خصم | موقع الانوار
الأحد مارس 17, 2024 1:25 pm من طرف رانيا حماد
» افضل معلم جبس بالرياض تركيب جبس بورد بالرياض 20% خصم اتصل الآن
الأحد مارس 17, 2024 1:09 pm من طرف رانيا حماد
» شراء اثاث مستعمل بالكويت بخصم 30%
الأحد مارس 17, 2024 12:54 pm من طرف رانيا حماد
» افضل فني كهربائي منازل بالرياض جودة 100% | اتصل الآن
الأحد مارس 17, 2024 12:36 pm من طرف رانيا حماد
» أفضل فني سباك بالرياض ممتاز بالرياض | اتصل الآن
الأحد مارس 17, 2024 12:25 pm من طرف رانيا حماد