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

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

و إذا أدخل عدد مزدوج, ستتوقف الحلقة عند

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




