مفهوم الـ 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.



