![]() |
![]() |
![]() |
![]() |
![]() |
|
|
![]() |
![]() |
![]() |
||||||||||||
| الواجهة الرئيسة | رسائل SMS | أعلن معنا |
|
|
|||||||||||||||||||
|
|||||||||||||||||||||
|
|
#1 |
![]() |
[align=center]
قبل البداية.. نذكر بأن الموضوع الأصلي اللذي يحتوي على كل الدروس هنا على الرابط http://forum.ma3ali.net/showthread.php?t=168213 .... والآن نأتي للواجبات .. المشاركين الإيجابيين اللى قاموا بحل الواجبات : Programmer مبدع وسائط أرياف g@v@_girl بريق أمل المفكر العبقري الصريحة أما أصحاب الواجبات الصحيحة ( الحاصين على 10 من 10 ) Programmer أرياف g@v@_girl بريق أمل المفكر العبقري وكذلك واجب الأخت صريحة كان تمام ولكنها قامت بجزئية واحدة في السؤال الثاني ، حيث من المفترض أن يقوم البرنامج بالتحويل من الإنش إلى السم والعكس أي يحول من السم إلى الإنش حسب ما يطلب المستخدم . أما أستاذ مبدع فلم يحل غير السؤال الأول فقط ( 3 من 10 ) الآن .. دعونا نستعرض الواجب : السؤال الأول يطلب عمل برنامج يقوم باستقبال أي عدد من المستخدم ثم يضربه في نفسه ( مربعه ) .. نستعرض هنا حل الأخت g@v@_girl كود:
/////////////////////////////////
//Author: Java_girl
//www.ma3ali.net
//HW#2
//////////////////////////////////
#include <iostream>
using namespace std;
void main()
{
int n;
cout<<"Enter N to get its square^_^ :";
cin>>n;
cout<<"The square of "<< n << "is "<<n*n<<endl;
}
شرح الحل .. قمنا بفتح الملف أو المكتبة iostream اللتي تحتوي على أداتي الإدخال والإخراج .. (( لكن لماذا لم نضع .h واللتي تشير إلى ملفات الهيدر كما في كل برنامج )) الجواب يكمن في السطر الثاني .. كما ذكرنا في أحد ردود الدرس الأول .. أنه يمكن الإستعاضة عن .h بكتابة العبارة كود:
using namespace std; ثم بعد ذلك قمنا بكتابة بقية البرنامج .. من بعد الأقواس السطر الأول : عرفنا المتغير n وهو المكان الذي سنحفظ فيه العدد الذي يدخله المستخدم . السطر الثاني : طبعنا على الشاشة عبارة تفيد المستخدم بأن المطلوب منه إدخال عدد لكي يحصل على مربعه . السطر الثالث : سيسمح للمستخدم بإدخال العدد عن طريق أداة الإدخال cin . السطر الأخير : سيقوم بطياعة عبارة " مربع العدد " ثم يضع العدد اللذي أدخله المستخدم ثم يطبع كلمة " هو " ثم يقوم بضرب العدد في نفسه ويطبع الناتج .. وبذلك قمنا بعمل برنامج يحسب مربع العدد .. طيب ماذا لو أردنا عمل برنامج يقوم بحساب أي أس لأي عدد ، يعني مثلاً يخرج ناتج 6 أس 3 ؟؟ حينها سنستخدم دالة موجودة في لغة السي بلس بلس اسمها pow وسيكون السطر البرمجي على هذا النحو : كود:
cout << pow ( 6 , 3 ) ; حيث يضع البرنامج في الخانة الأولى العدد ، والخانة الثانية عبارة عن الأس أو القوى المرفوع إليها العدد .. وبالتالي كان من الممكن كتابة السطر الأخير في الواجب الأول على هذا النحو كود:
Cot << pow ( N , 2 ) حيث سيخرج ناتج العدد N أس 2 . ولكن حتى نستخدم دالة الأس هذه ينبغي أن نفتح مكتبة أول ملف في بداية البرنامج ، مثلما كنا نفتح ملف iostream.h لكي نحصل على أداتي cin و cout . وحتى نستخدم دالة pow علينا أن نفتح ملف أو مكتبة الرياضيات .. بالشكل التالي : كود:
# include < math.h > الواجب الثاني : كان يطلب عمل برنامج يقوم بالتحويل من الإنش إلى السم والعكس ، أي يحول من سم إلى إنش أيضاً .. وذلك حسب ما يطلب المستخدم .. ومن الواضح قبل عمل البرنامج أننا سنستخدم قاعدة if ، وهذا منطقي في أي برنامج يحتوي على أكثر من خيار أو أكثر من حالة .. دعونا نستعرض برنامج الأخ المفكر العبقري .. كود:
# include <iostream.h>
void main ()
{
int x;
float e;
cout << "Do you want to convert cms -> inches or inches -> cms\n\nto convert cms -> inches enter 1\nto convert inches -> cms enter 2\n\n";
cin >> x;
if (x == 1)
{
cout << "Enter value in cms: \n";
cin >> e;
cout << "The value in inches = " << e/2.54 << " inches\n";
}
if (x == 2)
{
cout << "Enter value in inch: \n";
cin >> e;
cout << "The value in cms = " << e*2.54 << " cms\n";
}
}
الآن .. لاحظ الآتي : في أول سطرين : قمنا بتعريف عددين ، العدد x ، والعدد e ، (( لماذا عددان ، ونحن سنطلب من المستخدم إدخال عدد واحد فقط )) لقد استخدمنا العدد الأول x لتحديد الخيار اللذي سيختاره المستخدم هل سيختار التحويل من الإنش إلى سم أم العكس ؟؟؟ أما العدد الثاني فهو العدد الذي سيدخله المستخدم والذي يرغب بتحويله . السطر الثالث : قمنا بطباعة عبارة يفهم منها المستخدم أنه لو أرد التحويل من السم إلى الإنش يضغط الرقم واحد ، وإذا أرد التحويل من إنش إلى السم يضغط الرقم 2 . السطر الرابع : استخدمنا أداة الإدخال cin ليتمكن المستخدم من إدخال رقم 1 أو 2 حسب ما يريد .. الآن نأتي للب الموضوع بعد ذلك كتبنا جملة if وحددنا الشرط بأنه لو كان العدد الذي أدخله المستخدم x يساوي 1 يعني يريد التحويل من سم إلى إنش سيقوم البرنامج بتنفيذ الثلاث جمل اللى بعد if الأولى .. وعند هذه النقطة تتبادر إلى الأذهان عدة أسئلة .. (( لماذا وضعنا علامة اليساوي المزدوجة ولم نضع علامة = واحدة ؟؟ )) راجع ما قلناه في الدرس الثاني عن الفرق بينهما ولاحظ أنه هنا لا نريد وضع قيمة 1 في المتغير x بل نريد معرفة ما إذا كان العدد اللذي بداخل الـ x يساوي الواحد أم لا . (( لماذا قام البرنامج بتنفيذ الثلاث جمل الأولى فقط بعد جملة if في حال تحقق الشرط ، ولم ينفذ أياً من تلك الجمل إذا لم يتحقق الشرط )) أيضاً راجع ما قلناه عن جملة if ولاحظ أننا وضعنا أقواس حول الثلاث جمل مما يتيح لنا جعلها كشيء واحد أو كتلة واحدة مع بعضها . وبعد ذلك أعدنا كتابة تلك الخطوات ولكن عندما تساوي x رقم 2 أي عندما يريد المستخدم التحويل من الإنش إلى السم .. وكذلك وضعنا الأقواس .. ثم أغلقنا البرنامج .. وبذلك قمنا بعمل برنامج يقوم بالتحويل ، ومثل هذا البرنامج يفيد كثيراً العاملين في مجال القياسات حيث يسهل عليهم عمليتا الضرب والقسمة اليدوية .. ملاحظة على البرنامج السابق : كان من الأفضل أن نستخدم else بدلاً من جملة if الثانية .. لأنه لو تحقق شرط جملة if الأولى .. فلن يلتفت البرنامج إلى ما بعد else أما إذا وضعنا if ثانية ، فحتى لو تحقق شرط جملة if الأولى فسيقرأ البرنامج جملة if الثانية ثم يكتشف أنها لا تحقق الشرط ، وهذا بالتأكيد يقلل من سرعة البرنامج .. ولكن في هذه الطريقة عيب خطير .. وهو أنه لو أدخل المستخدم أي عدد غير 1 أو 2 فسيفهم البرنامج أن المستخدم يريد التحويل من الإنش إلى السم ، لأن else عمومية يعني تحقق أي شيء إلى رقم واحد .. وهذه هي المشكلة .. دعونا نقوم أيضاً باستعراض برنامج الأخت بريق أمل لأنه يحتوي على عدة ميزات .. كود:
#include <iostream>
using namespace std;
int main()
{
int ch;
float num;
cout<<"enter the number\n";
cin>>num;
cout<<"do u want to convert :\n"
<<"1.inches to cm\n"
<<"or\n"<<"2.cm to inches?\n";
cin>>ch;
if(ch==1)
cout<<num<<"in cm="<<num/2.54 <<endl;
if(ch==2)
cout<<num<<"in inches="<<num*2.54 <<endl;
else
cout<<"wrong choice\n"
<<"try again\n";
return 0;
}
من مميزات هذا البرنامج .. • لاحظوا لم نستخدم سطر طويل كما في برنامج الأخ المفكر العبقري ، بل قمنا بتقسيم الجملة الواحدة إلى 3 أسطر .. وذلك بواسطة عدم وضع الفاصلة المنقوطة ; في آخر السطر ، واللتي تعني أن كل الأسطر قبلها هي عبارة عن جملة واحدة . • الميزة الثاني : وضعنا else في جملة if الثانية .. وهذه ستحل المشكلة في برنامجنا السابق حيث لو أدخل المستخدم أي عدد غير 1 أو 2 سيطبع له البرنامج رسالة خطأ تفيد بأن القيمة المدخلة لا تتوافق مع البرنامج .. لكي يتضح الفرق أكثر وأكثر .. جرب البرنامج الأول مرة والبرنامج الثاني مرة وأدخل في كلا المرتين العدد 3 عندما يسألك البرنامج عن الخيار اللذي تريده التحويل من إنش إلى سم أم العكس ، وسترى بنفسك النتيجة . ======== الدرس لم يكتمل بعد ======== |
|
|
|
|
|
#2 |
![]() |
[frame="1 80"]
الدرس الثالث [/frame]إستخدام الـ ( LOOP ) : اللوب .. باختصار .. هو عملية التكرار .. عند الحاجة إلى تكرار سطر معين من سطور البرنامج لعمل شيء يتكرر مثل كتابة برنامج يقوم بجمع الأعداد الزوجية ، وهو يوفر الكثير من الجهد والوقت .سندرس 3 أوامر من أوامر اللوب في لغة C++ وهي : for … statement while … statement Do … while … statement أولاً : جملة for تكون جملة الـ for بالشكل التالي : ![]() • الخطوة رقم 1 تنفذ في البداية فقط ، يعني تنفذ مرة واحدة فقط عندما يبدأ البرنامج بقرائة جملة for . • يتم بعد ذلك تنفيذ الخطوة 2 ثم 3 ثم 4 على التوالي . • الخطوة رقم 2 هي جملة الشرط .. ويتوقف البرنامج عندما يعطي الشرط 2 نتيجة خاطئة False . ثانياً : استخدام while وهذا مثال مبسط عن كيفية استخدام جملة while كود:
i = 100 ;
while ( i <= 10 )
{ cout << i ;
i ++ ;
}
ثالثاً : استخدام do … while وهذا مثال مبسط عن كيفية استخدام جملة do … while كود:
i = 100 ;
do
{ cout << i ;
i ++ ; }
whil ( i <= 10 ) ;
لاحظ .. الفرق بين while و do while : لا يوجد ; بعد جملة الـ while بينما توجد بعد جملة do whil . كما أنه في جملة while إذا تحقق الشرط ( ما بعد while ) يتم تنفيذ بقية الجمل ، أما في do while فإن الجمل قبل while تُنفذ قبل سؤال الشرط ، ثم بعد ذلك ينظر البرنامج في الشرط فإن تحقق أُخرجت نواتج الجمل وإلا لا . ======== الدرس لم يكتمل بعد ======== |
|
|
|
|
|
#3 |
![]() |
أمثلة تطبيقية نريد كتابة برنامج يقوم بجمع الأعداد الزوجية من 1 وحتى 20 . كود:
# include < iostream . h >
void main ( void )
{
int I , sum = 0 ;
for ( I = 2 ; I <= 20 ; I = I + 2 )
{ sum = sum + I ;
cout << "\n " << sum ; }
cout << " \n\n\n Summation = " << sum ;
}
الشرح : بعد الأقواس : الجملة الأولى : قمنا بتعريف متغيرين I و sum ووضعنا في صفر في المتغير sum . الجملة الثانية : جملة الـ for الجزء الأول : وضعنا قيمة 2 في المتغير I ( لماذا ؟ ) لأن أول عدد زوجي سيمر علينا هو 2 . الجزء الثاني : وضعنا الشرط .. يجب أن تكون قيمة I أصغر من أو تساوي 20 لأن المطلوب مجموع الأعداد الزوجية من صفر و حتى 20 . الجزء الثالث : حددنا مقدار الزيادة والنقصان بزيادة 2 ، لأننا نريد أن يزيد البرنامج في كل مرة 2 ، لأننا سنجمع الأعداد الزوجية فقط . وبذلك انتهت جزئيات جملة for . ثم سنأتي للجملة اللتي بعد جملة for وهي ما سينفذه البرنامج في كل مرة يقرأ فيها حلقة for ما دام الشرط متحققاً . > راجع الصورة في بداية الدرس < . كتبنا جملتين بعد حلقة for واستخدمنا الأقواس لجعلها ككتلة واحدة يتم تنفيذها إذا تحقق شرط جملة for " الجزئية الثانية " . السطر الأخير : سيطبع عبارة " المجموع = " ثم سيطبع ناتج العمليات السابقة وهي مجموع الأعداد الزوجية من 2 وحتى 20 . وبذلك انتهى البرنامج .. ملاحظة / ممكن أن تضع أكثر من متغير للتكرار و أكثر من شرط و أكثر من عملية على متغيرات التكرار.. بحيث تضيف فاصلة فقط ( , ) في كل قسم لكي تضيف متحول آخر أو عملية أخرى .. بينما في القسم الثاني تضيف && أو || لكي نضيف أكثر من شرط ( لفهم هذه الملاحظة راجع قاعدة " و – أو" في الدرس الثاني ) مثال / كود:
for( i=1, j=5; i!=j || j >=0; i++, j-- ) استخدام أمر الإنتقال goto أمر الإنتقال go to يسهل علينا الإنتقال بين أسطر البرنامج المختلفة أثناء تنفيذ البرنامج ، وسنوضح كيفية استخدامه في الصورة التالية : ![]() لاحظ : المثال في الصورة .. في حالة تحقق شرط if سينتقل البرنامج عدة أسطر للأعلى وسيتكرر حتى تحدث حالة عدم تحقق شرط if ، وحينها لن يقرأ أمر الإنتقال goto وبالتالي سيكمل بقية أسطر البرنامج ، وبذلك أنشانا حلقة تكرارية مثل حلقة for . وبذلك نصل إلى نهاية درسنا تلاحظون هذا الدرس قصير نوعاً ما ولكنه مركز ، وينبغي فهمه جيداً واللى مفهمش حاجة يسأل . الدرس القادم بإذن الله سيكون عبارة أمثلة تطبيقية مفعلة لكل ما تم أخذه في الثلاثة دروس ، وسنتعلم خلال الأمثلة بعض الإضافات والأدوات الجديدة اللتي لم نستخدمها . وعلى فكرة أبشركم .. اللى فهم الثلاثة دروس دية كويس .. يبقى تعدى مرحلة مهمة من البرمجة .. نراكم بإذن الله في الدرس القادم .. آه صحيح .. الواجب : السؤال الأول : اكتب برنامج يقوم بحساب مضروب أو عاملي N من الأرقام ، حسب ما يدخل المستخدم . مع العلم أن مضروب العدد هو ضرب العدد في جميع الأعداد اللتي قبله حتى يصل إلى الواحد .. يعني مثلاً .. مضروب 7 = 7 × 6 × 5 × 4 × 3 × 2 × 1 مضروب 3 = 3 × 2 × 1 ......... وهكذا .. نريد كتابة برنامج يقوم بحساب تلك العملية لأي عدد . السؤال الثاني : اكتب برنامج يخرج الشكل التالي : كود PHP:
ولا أعني بذلك .. كتابة برنامج بيديني الشكل اللى فوق .. لكن أنا عاوز برنامج ينفذ عملية معينة بحيث تكون المخرجات على الشكل بالأعلى . الواجب المرة دي صعب حبتين بس لازم نفكر لا تنسونا من دعائكم ========= نهاية الدرس الثالث ======== |
|
|
|
|
|
#4 |
![]() |
::::: ::: : ... يجزاك ربي بالخير .. تسجيل حضور .. كما يمكن أن يكون تسجيل اعجاب .. ![]() يعطيك العافية ![]() ... : ::: ::::: |
|
|
|
|
|
#5 | |
![]() |
جزيتم خيرا.. سؤال.. بالنسبة للأرقام في العمود الأول.. هل يقوم المستخدم بإدخالها.. ولا نطبعها تلقائيا.. بوركت جهودك أخي الفاضل دمت على خير وطاعة |
|
|
|
|
|
|
#6 |
![]() |
...
وإياكم أبو ريماس .. ومرسي إلك على تسجيل تشريف الموضوع !! والله يعافيك ،، ========== أختنا بريق أمل .. لأ .. المطلوب برنامج لا يعتمد على المستخدم في حاجة .. يعني من غير استخدام السي إن .. أتمنى أن يكون الأمر قد اتضح .. تحياتي لك .. =========== ايه فين بقية المبرمجين والمتعلمين ![]() ما توقعتش الواجب صعب للدرجة دي ![]() لو فيه أي سؤال .. جاهزين ![]() تحياتي لكم |
|
|
|
|
|
#7 |
![]() |
جزاك الله خير
|
|
|
|
|
|
#8 | |
![]() |
عدنا بعد الانقطاع لعلك تعذرنا يا استاذ مسلم معاون انشغلنا في الاختبارات نسأل الله التوفيق فرحت كثير بالتغيرات الي طرأت على الدروس واشكر من اعماق قلبي الاستاذ مسلم معاون+ابو ريماس على الجهد المبذول وهذا هو الواجب لا صعب ولا شي اصلا صعوبته تخف مع روعة شرحك يالله عاد بشرنا بالنتيجة |
|
|
|
|
|
|
#9 |
![]() |
عذرا
وين الواجب محاولة ثانية |
|
|
|
|
|
|
|
|
#10 |
![]() |
أرجو المعذره على التأخير
و هذا هو الواجب |
|
|
|
|
|
|
|
|
#11 |
![]() |
..
جزانا وإياكم خيراً أختي الصريحة .. أسأل الله أن يبشركم بنتائج طيبة في امتحاناتكم .. ======== programmer وعليكم السلام ورحمة الله وبركاته .. مبروك إنك خلصت إمتحانات .. والتغييرات اللى على الدروس عشان تكون الطريقة أسهل .. وبما إنك خلصت إمتحانات وبقيت فاضي .. جهز نفسك عشان انت اللى هتكمل الدورة بعد الدرس القادم .. ابدأ جهز الدروس يلا ![]() تحياتي لك .. |
|
|
|
|
|
#12 |
![]() |
مشكووووووووووور
|
|
|
|
|
|
#13 |
![]() |
العفو أخوي جريح العين ..
ونفسنا نشوف مشاركتك معانا ![]() ====== يلا يا جماعة .. الدرس الرابع قرب ولحد دلوقتي مفيش غير 2 بس حلوا الواجبات .. يعني 2 بس فهموا ![]() تحياتي لكم ![]() |
|
|
|
|
|
#14 |
![]() |
نعتذر عن التأخير.. بالبداية نسيته.. بعدها عيا لا يتحمل ضمن المرفقات.. فاضطريت أرفعه على مركز تحميل تفضلوا الحل.. جزاكم ربي خيرا دمتم على خير وطاعة لـ تصفح المجلة.. اضغط هنا |
|
|
|
|
|
#15 |
![]() |
..
الرابط خطأ أختي بريق أمل .. أتمنى التأكد .. ============ والله كويس .. المنتدى بعد التطوير بيسمح لنا نعرف مين اللى حمل الملفات ![]() عشان نعرف بالظبط مين اللى غاشش الواجب بتاعه ..![]() |
|
|
|
|
|
#16 |
![]() |
غريبة ..
تمكنت من تحميل الملف .. ولكن عن طريق الرسالة اللى وصلتني على الإيميل .. لكن .. ما قدرتش أحمله من الموضوع هنا ؟؟؟؟؟؟ عموماً .. الواجب وصل خلاص .. |
|
|
|