مفهوم الـ Power
في مادة الرياضيات الكلمات Index - Exponent - Power لهم نفس المعنى.
كلمة Power تعني مضاعفة العدد. و مضاغفة عدد ما, تعني كم مرة نريد أن نضرب العدد بنفسه.
عندما تريد أن تضاعف أي عدد, يجب أن يكون هناك عددين, العدد الأول يسمى Base و الثاني يسمى Power.
الـ Base هو العدد الذي نريده أن يتضاعف.
الـ Power هو العدد الذي يحدد كما مرة سيتم مضاعفة الـ Base.
مثال
أمثلة توضح طريقة مضاعفة العدد في مادة الرياضيات
طريقة الحصول على القيمة المضاعفة للعدد في البرمجة
يمكننا أن نضرب العدد بنفسه مباشرةً, أو نستخدم حلقة من خلالها نقوم بضرب العدد بنفسه كما في الجدول التالي.
تمارين شاملة حول الـ Power
التمرين الأول
المطلوب
أكتب برنامج يطلب من المستخدم إدخال عددين, العدد الأول يعتبر الـ Base و العدد الثاني يعتبر الـ Power.
بعدها يعرض له ناتج القيمة المضاعفة للأعداد التي قام بإدخالها.
إرشادات
العدد الأول الذي سيدخله المستخدم سنخزنه في المتغير
a
.العدد الثاني الذي سيدخله المستخدم سنخزنه في المتغير
b
.جواب الـ Power سنخزنه في المتغير
P
.بما أن المتغير
P
سيحتوي على ناتج ضرب المتغيرa
بنفسه في كل دورة, قمنا بإعطائه القيمة 1 كقيمة أولية لأن القيمة 1 لن تؤثر في عملية الضرب.
كود الجافا
import java.util.Scanner; public class Power { public static void main (String[] args) { Scanner input = new Scanner(System.in); int a; int b; int P = 1; System.out.print("Enter the base number: "); a = input.nextInt(); System.out.print("Enter the power number: "); b = input.nextInt(); for (int i=1; i <=b; i++) { P = P * a; } System.out.print(a+ "^" +b+ " = " +P+ "\n"); } }
شرح الكود
int a; int b; int P = 1;
هنا قمنا بتجهيز المتغير a
لتخزين أول رقم سيدخله المستخدم و الذي سيمثل العدد الـ Base.
و المتغير b
لتخزين ثاني رقم سيدخله المستخدم و الذي سيمثل العدد الـ power.
و المتغير P
لتخزين الناتج النهائي.
System.out.print("Enter the base number: "); a = input.nextInt(); System.out.print("Enter the power number: "); b = input.nextInt();
هنا طلبنا من المستخدم إدخال العدد الذي يمثل الـ Base, ثم وضعناه في المتغير a
.
و طلبنا منه إدخال العدد الذي يمثل الـ Power, ثم وضعناه في المتغير b
.
for (int i=1; i <=b; i++) { P = P * a; }
بعد إدخال العدد الثاني الذي يمثل الـ Power, سيتم إنشاء حلقة من 1 إلى هذا العدد.
في كل دورة في هذه الحلقة سيتم ضرب قيمة المتغير a
بقيمة المتغير P
القديمة. ثم تخزين الناتج في المتغير P
من جديد.
عند إنتهاء الحلقة سيكون المتغير P
قد إحتوى على جميع قيم المتغير a
مضروبة ببعضها نسبة لقيمة المتغير b
, أي سيحتوي على القيمة المضاعفة للمتغير a
.
System.out.print(a+ "^" +b+ " = " +P+ "\n");
في الأخير سيتم عرض ناتج القيمة المضاعفة للمتغير a
نسبة للمتغير b
المخزنة في المتغير P
.
المطلوب
أكتب برنامج يطلب من المستخدم إعطائه عدد صحيح و يخزنه في المتغير N
.
بعدها يعرض له ناتج القيمة المضاعفة للأعداد التي قام بإدخالها.
إرشادات
المتغير
S
هو المتغير الذي سيحتوي على مجموع كل الأرقام الموجودة من 1 إلىN
.الـ
i
هو المتغير ( العداد ) الذي يزيد واحد في كل دورة.الـ
N
هو المتغير الذي يخزن العدد الذي سيدخله المستخدم و الذي تتوقف عنده الحلقة.الحلقة تبدأ من 1 و تتوقف عند
N
, أي عند العدد الذي أدخله المستخدم.في كل دورة سيتم إعتبار قيمة العداد
i
هي الـ Base و لها Power يساوي 2 , أي ستضاعف مرتين.
كود الجافا
import java.util.Scanner; public class Power { public static void main (String[] args) { Scanner input = new Scanner(System.in); int N; double S = 0; System.out.print("Enter a number for N: "); N = input.nextInt(); for (int i=1; i <=N; i++) { S = S + (i*i); } System.out.print("S = " +S+ "\n"); } }
شرح الكود
int N; double S = 0;
هنا قمنا بإنشاء المتغير N
لتخزين الرقم الذي سيدخله المستخدم.
و المتغير S
لتخزين المجموع.
System.out.print("Enter a number for N: "); N = input.nextInt();
هنا طلبنا من المستخدم إدخال عدد, ثم وضعناه في المتغير N
.
for (int i=1; i <=N; i++) { S = S + (i*i); }
بعد إدخال العدد, سيقوم البرنامج بإنشاء حلقة من 1 إلى هذا العدد.
في كل دورة من دورات هذه الحلقة, سيتم ضرب قيمة العداد i
بنفسها, أي سيتم مضاعفتها. و الناتج من عملية المضاعفة سيتم إضافته على قيمة المتغير S
.
System.out.print("S = " +S+ "\n");
في الأخير سيعرض نتيجة جمع جميع الأرقام المضاعفة المخزنة في المتغير S
.
التمرين الثالث
المطلوب
أكتب نفس البرنامج السابق بطريقة أخرى, أي أكتب برنامج يطلب من المستخدم إعطائه عدد صحيح و يخزنه في المتغير N
.
بعدها يعرض له ناتج القيمة المضاعفة للأعداد التي قام بإدخالها.
إرشادات
المتغير
S
هو المتغير الذي سيحتوي على مجموع كل الأرقام الموجودة من 1 إلىN
.الـ
i
هو المتغير ( العداد ) الذي يزيد واحد في كل دورة.الـ
N
هو المتغير الذي يخزن العدد الذي سيدخله المستخدم و الذي تتوقف عنده الحلقة.الحلقة تبدأ من 1 و تتوقف عند
N
, أي عند العدد الذي أدخله المستخدم.في كل دورة سيتم إعتبار قيمة العداد
i
هي الـ Base , و سنحصل على Power لها من خلال الحلقةk
.سنحتاج إلى المتغير
P
لتخزين ناتج ضرب المتغيرi
بنفسه في كل دورة بداخل الحلقةk
قبل إضافته على قيمة المتغيرS
.
ملاحظة
الأسلوب الذي اتبعناه في هذا التمرين للحصول على القيمة المضاعفة سنحتاجه في التمارين التالية.
كود الجافا
import java.util.Scanner; public class Power { public static void main (String[] args) { Scanner input = new Scanner(System.in); int N; int P; int S = 0; System.out.print("Enter a number for N: "); N = input.nextInt(); for (int i=1; i <=N; i++) { P = 1; for (int k=1; k <=2; k++) { P = P * i; } S = S + P; } System.out.print("S = " +S+ "\n"); } }
شرح الكود
int N; int P; int S = 0;
هنا قمنا بإنشاء المتغير N
لتخزين الرقم الذي سيدخله المستخدم.
و المتغير P
لتخزين القيمة المضاعفة لكل قيمة من قيم العداد i
الذي سنستخدمه في الحلقة.
و المتغير S
لتخزين المجموع.
System.out.print("Enter a number for N: "); N = input.nextInt();
هنا طلبنا من المستخدم إدخال عدد, ثم وضعناه في المتغير N
.
for (int i=1; i <=N; i++) { P = 1; for (int k=1; k <=2; k++) { P = P * i; } S = S + P; }
هنا في كل دورة من دورات الحلقة i
سيحدث التالي:
سيتم وضع القيمة 1 كقيمة أولية للمتغير
P
قبل إستخدامه في الحلقةK
لأن القيمة 1 لا تؤثر في عملية الضرب.الحلقة
k
جعلناها تعيد تنفيذ الكود الموجود فيها مرتين فقط لأنها تبدأ من 1 إلى 2في كل دورة من دورات الحلقة
k
سيتم ضرب قيمة العدادi
بقيمة المتغيرP
القديمة, ثم تخزين الناتج في المتغيرP
من جديد.
    و هكذا في كل مرة تتوقف فيها الحلقةk
عن التنفيذ, سيكون المتغيرP
يحتوي على قيمة العدادi
المضاعفة.بعد أن أصبحت القيمة المضاعفة للعداد
i
مخزنة في المتغيرP
, سيتم إضافتها على قيمة المتغيرS
.
System.out.print("S = " +S+ "\n");
في الأخير سيعرض نتيجة جمع جميع الأرقام المضاعفة المخزنة في المتغير S
.
التمرين الرابع
المطلوب
أكتب برنامج يطلب من المستخدم إعطائه عدد صحيح و يخزنه في المتغير N
.
بعدها يعرض له ناتج القيمة المضاعفة للأعداد التي قام بإدخالها.
إرشادات
المتغير
S
هو المتغير الذي سيحتوي على مجموع كل الأرقام الموجودة من 1 إلىN
.الـ
i
هو المتغير ( العداد ) الذي يزيد واحد في كل دورة.الـ
N
هو المتغير الذي يخزن العدد الذي سيدخله المستخدم و الذي تتوقف عنده الحلقة.الحلقة تبدأ من 1 و تتوقف عند
N
, أي عند العدد الذي أدخله المستخدم.في كل دورة سيتم إعتبار قيمة العداد
i
هي الـ Base و الـ Power, و سنحصل على Power لها من خلال الحلقةk
.سنحتاج إلى المتغير
P
لتخزين ناتج ضرب المتغيرi
بنفسه في كل دورة بداخل الحلقةk
قبل إضافته على قيمة المتغيرS
.
إنتبه: يجب تعريف المتغيرين S
و P
كـ double
لأنه عند إجراء عمليات المضاعفة قد يصل الناتج إلى أعداد كبيرة جداً.
كود الجافا
import java.util.Scanner; public class Power { public static void main (String[] args) { Scanner input = new Scanner(System.in); int N; double P; double S = 0; System.out.print("Enter a number for N: "); N = input.nextInt(); for (int i=1; i <=N; i++) { P = 1; for (int k=1; k <=i; k++) { P = P * i; } S = S + P; } System.out.print("S = " +S+ "\n"); } }
شرح الكود
الهدف من هذا السؤال جعل قيمة الـ Base تساوي قيمة الـ Power.
int N; double P; double S = 0;
هنا قمنا بإنشاء المتغير N
لتخزين الرقم الذي سيدخله المستخدم.
و المتغير P
لتخزين القيمة المضاعفة لكل قيمة من قيم العداد i
الذي سنستخدمه في الحلقة.
و المتغير S
لتخزين المجموع.
System.out.print("Enter a number for N: "); N = input.nextInt();
هنا طلبنا من المستخدم إدخال عدد, ثم وضعناه في المتغير N
.
for (int i=1; i <=N; i++) { P = 1; for (int k=1; k <=i; k++) { P = P * i; } S = S + P; }
هنا في كل دورة من دورات الحلقة i
سيحدث التالي:
سيتم وضع القيمة 1 كقيمة أولية للمتغير
P
قبل إستخدامه في الحلقةK
لأن القيمة 1 لا تؤثر في عملية الضرب.بعدها سيتم إنشاء الحلقة
k
التي تبدأ من 1 إلىi
.
    إذاً, عدد دورات الحلقةk
يساوي قيمة العدادi
و هكذا ستصبح قيمة الـ Base تساوي قيمة الـ Power.في كل دورة من دورات الحلقة
k
سيتم ضرب قيمة العدادi
بقيمة المتغيرP
القديمة, ثم تخزين الناتج في المتغيرP
من جديد.
    و هكذا في كل مرة تتوقف فيها الحلقةk
عن التنفيذ, سيكون المتغيرP
يحتوي على قيمة العدادi
المضاعفة.بعد أن أصبحت القيمة المضاعفة للعداد
i
مخزنة في المتغيرP
, سيتم إضافتها على قيمة المتغيرS
.
System.out.print("S = " +S+ "\n");
في الأخير سيعرض نتيجة جمع جميع الأرقام المضاعفة المخزنة في المتغير S
.
التمرين الخامس
المطلوب
أكتب برنامج يطلب من المستخدم إعطائه عدد صحيح و يخزنه في المتغير N
.
بعدها يعرض له ناتج القيمة المضاعفة للأعداد التي قام بإدخالها.
إرشادات
المتغير
S
هو المتغير الذي سيحتوي على مجموع كل الأرقام الموجودة من 1 إلىN
.الـ
i
هو المتغير ( العداد ) الذي يزيد واحد في كل دورة.الـ
N
هو المتغير الذي يخزن العدد الذي سيدخله المستخدم و الذي تتوقف عنده الحلقة.الحلقة تبدأ من 1 و تتوقف عند
N
, أي عند العدد الذي أدخله المستخدم.في كل دورة سيتم إعتبار قيمة العداد
i
هي الـ Base و الـ Power, و سنحصل على Power لها من خلال الحلقةk
.سنحتاج إلى المتغير
P
لتخزين ناتج ضرب المتغيرi
بنفسه في كل دورة بداخل الحلقةk
قبل إضافته على قيمة المتغيرS
.
إنتبه: يجب تعريف المتغيرين S
و F
كـ double
حتى لا نخسر أي رقم موجود بعد الفاصلة أثناء إجراء عمليات القسمة.
كود الجافا
import java.util.Scanner; public class Power_And_Factorial { public static void main (String[] args) { Scanner input = new Scanner(System.in); int N; double P; double F; double S = 0; System.out.print("Enter a number for N: "); N = input.nextInt(); for (int i=1; i <=N; i++) { if (i%2 == 1 ) { P = 1; for (int k=1; k <=i; k++) { P = P * i; } S = S + P; } else { F = 1; for (int k=1; k <=i; k++) { F = F * k; } S = S + ( 1/F ); } } System.out.print("S = " +S+ "\n"); } }
شرح الكود
int N; double P; double F; double S = 0;
هنا قمنا بإنشاء المتغير N
لتخزين الرقم الذي سيدخله المستخدم.
و المتغير P
لتخزين القيمة المضاعفة لكل قيمة مفردة من قيم العداد i
الذي سنستخدمه في الحلقة.
و المتغير F
لتخزين قيمة الـ Factorial لكل قيمة مزدوجة من قيم العداد i
الذي سنستخدمه في الحلقة.
و المتغير S
لتخزين المجموع.
System.out.print("Enter a number for N: "); N = input.nextInt();
هنا طلبنا من المستخدم إدخال عدد, ثم وضعناه في المتغير N
.
for (int i=1; i <=N; i++) { if (i%2 == 1 ) { P = 1; for (int k=1; k <=i; k++) { P = P * i; } S = S + P; } else { F = 1; for (int k=1; k <=i; k++) { F = F * k; } S = S + ( 1/F ); } }
هنا في كل دورة من دورات الحلقة i
سيتم فحص قيمة العداد i
لمعرفة إذا كانت قيمته مفردة أم مزدوجة.
إذا كانت قيمة العداد i
عبارة عن عدد مفرد سيحدث التالي:
سيتم إنشاء حلقة داخلية لحساب القيمة المضاعفة للعداد
i
.ناتج القيمة المضاعفة للعداد
i
سيتم تخزينه بشكل مؤقت في المتغيرP
حتى تتوقف الحلقة الداخلية عن التنفيذ.بعدها سيتم إضافة قيمة المتغير
P
على قيمة المتغيرS
.
إذا كانت قيمة العداد i
عبارة عن عدد مزدوج سيحدث التالي:
سيتم إنشاء حلقة داخلية لحساب قيمة الـ Factorial للعداد
i
.ناتج الـ Factorial للعداد
i
سيتم تخزينه بشكل مؤقت في المتغيرF
حتى تتوقف الحلقة الداخلية عن التنفيذ.بعدها سيتم إضافة 1 مقسوم على قيمة المتغير
F
على قيمة المتغيرS
.
System.out.print("S = " +S+ "\n");
في الأخير سيعرض نتيجة جمع جميع الأرقام المضاعفة المخزنة في المتغير S
.