المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تعلم C++ منهج جامعه


الصفحات : [1] 2 3

THE LEGEND
22-03-2003, 06:32 AM
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته
اما بعد
لقد حلمت كثيراً بجعل فرع من المنتدى يناقش ويهتم ببرامج البرمجه الكثيرة والممتعه والمفيده ايضاً ولنتبادل فيه خبراتنا وليكون مرجعنا في لغات البرمجه . واتمنى ان يتحقق هذا الحلم ولذلك قمت بكتابه اول موضوع يحكي عن لغة البرمجه visual C++ وهو عباره عن شرح موجز عن برنامج C++، وهذا الشرح هو عبارة عن تلخيص عن مادرسته في الجامعه وارجوا الاستفاده للجميع كما سأقوم بعد ذلك بشرح برنامج visaul Basic والـ Delphi ومن باب اخر سأقوم بطرح شرح خطوة بخطوه لتعليم 3d studio max وتعلم الـفلاش بحرافه و photoshop ايضا ولكني اعلم ايضا ان هذا المشروع سيأخذ وقت طويلا لإعداده واتمنى من الجميع المساعدة بما يستطيعون .
وفي البدايه ياأخواني ارجوا التركيز على الملاحظات التي تكتب فهي ضرورية جدا ، سنبداء الشرح مع كيفيه التعامل مع الاوامر وكيفية كتابتها ثم سنطلع على غالبية الاوامر وبعض المسائل الحسابيه .

قم بفتح البرنامج ثم إذهب إلى file New ثم اختار اول تبويب من اليسار ثم قم بإختيار C++ file resource
ثم اختار اسما للملف بحيث يكون امتداده *.cpp

ملاحظه: // هذه العلامه والذي يأتي بعدها لا يساوي شيئاً وهي تستخدم للتعليق فقط .
في البدايه لابد من حفظ صيغ معينه للبرنامج وسأبداء بالصيغه الاولى والاسهل

#include<iostream.h>
main( )
{
//هنا ستكون اوامر البرنامج
return 0;
}
تعتبر هذه صيغه اساسيه ولابد من حفظها
فكلمه #include تعتبر من الاساسيات
ثم بعدها <iostream.h> هذا متغير على حسب البرنامج وهنا نستخدمه لان به وظائف مثل العرض او الادخال وسوف تتعرف على خصائصه لاحقاً عندما نبداء بكتابه برنامج
ثم يأتي main( )وتعتبر ايضاً من الاساسيات
وهذه العلامه { تعني انه قد تم فتح (باب على سبيل المثال) وبداخله ستكون الاوامر مع ضروره إغلاقه بعد الانتهاء بعلامة الاغلاق هذه }
ثم تأتي return 0 وهذه تعتبر مكمله البرنامج حيث لابد من وجودها ليتم ترصد جميع الاخطاء التي تنتج عند كتابه اي امر عن طريق الخطاء .
ثم تأتي بعدها ; وهي تعني توقف عن قراءة هذا السطر وانتقل إلى السطر الاخر

ملاحظه : لابد ان تكتب جميع الاوامر بحروف صغيره small latter
وقبل البدء بكتابه اي برنامج لابد من تحليل وظائفه اي لابد ان تكون هناك فكره للبرنامج ثم بعد ذلك البدء بكتابه البرنامج .

1- وحدة الاخراج او العرض OUTPUT

مثال 1: قم بكتابة برنامج يقوم بعرض رساله ترحيبيه للمستخدم ؟
الجواب التحليلي
1- لدينا فقط output 1
2- ، يعني مطلوب منا ان نقوم بعرض رساله (اي مخرج واحد وهو الرسالة الترحيبيه) .

كود البرنامج :
#include<iostream.h>
main ( )
{
cout <<”welcome to C++ programming” ;
return 0;
}
اعرف انه الان لديك اسئله كثيره حول هذا البرنامج دعني اوضح لك
هل تذكر عندما قلت لك اني سأقوم بشرح وظائف <iostream.h> ، الان سوف تتعرف على احدى وظائفها وهو امر الاخراج او العرض وهو cout .
وعندما نقوم بكتابته يكون على هذا النحو cout<<
ثم كل مايكتب بين " " يتم عرضه على الشاشه
ثم لاتنسي وضع ; لانهاء تقود البرنامج لانهاء قراءة السطر الحالي والانتقال إلي السطر التالي .

ملاحظه : لكي نقوم بتشغيل البرنامج نذهب إلى امر compiler ليتم الكشف عن اخطاء الكتابه او الاوامر ، من ثم بعد ذلك نقوم بالضغط على run او من لوحة المفاتيح نضغط على Ctrl + F9 كما اود ان اعلمكم بأن البرنامج لن يعمل بحالة وجود اي خطا صغير في البرنامج .

مثال 2-قم بكتابة برنامج يقوم بعرض رسالتين ترحيبيتين بحيث تكون كل رساله في سطر خاص بها ؟
الجواب التحليلي
1- لدينا 2 outputs
2- المطلوب عرض مخرجين وهما الرساله الترحيبيه الاولى والرسالة الترحيبيه الثانيه .

كود البرنامج
#include<iostream.h>
main ( )
{
cout<<”welcome to AhmedMask1 C++ \n”;
cout<<”welcome to AhmedMask2 C++”;
return 0;
}
في هذا المثال قمنا بإضافة \n وهي تعني إضافه سطر جديد ولاحظ انه لابد من كتابة \n بداخل " "

ملاحظه : توجد هناك اكثر من طريقه لكتابة برامج C++ فمثال رقم 2 يمكن ان يكتب بهذه الطريقه ايضاً
#include<iostream.h>
main ( )
{
cout<<”Welcome to AhmedMask1 C++\n Welcome to AhmedMask2”;
return 0;
}


بفهم هذين المثالين تكون قد اصبحت قادراً على عمل اي رساله تود عرضها للمستخدم من خلال برنامج C++


2- وحدة الادخال INPUT

من هنا ستتدرج بنا الصعوبات إلى الاعلى وارجوا التركيز أكثر
سنقوم بإستخدام امر int وهذا الامر عباره عن متغير وهو اختار لكلمه integer وتعني المتغير وضيفه هذا الامر هو اتاحه الفرصه لنا لكي نقوم بإضافة قيم وحروف وهذه القيم والحروف ستكون عباره عن فراغات في الذاكره وظيفتها حفظ هذا المتغير ويلزم ان لا تكون في بداية هذه المتغيرات ارقام فمثلا نستطيع إضافه اي متغير بعد كلمة int بهذا الشكل
int ahmed1
ولا نستطيع ان نضيفه بهذا الشكل
int 1ahmed
ففي المثال الاول كان المتغير يحتوي على رقم ولكنه لم يبداء به وفي المثال الثاني بداء بالرقم وذلك خطا .

مثال 1: قم بكتابة برنامج يتيح لك ادخال اي اسم او رقم ثم قم بعرض المدخل هذا ؟
التحليل :
1- عدد المدخلات : 1
2- عدد المخرجات :1
3- عرض الناتج .

كود البرنامج :
#include<iostream.h>
main ( )
{
int NM;
cout<<”pls enter any name or any number”;
cin>>NM
cout<<”your name or number is “ ;
cout<<NM;
return 0;
}
وفي هذا المثال قمنا بإضافة متغير بإسم NM
ملاحظه : ليس من الضرورة إضافة المتغير NM فتستطيع كتابة اي متغير اخر اي حروف اخرى او اي جمله قصيره ، ولكن كما قلنا سابقا لابد ان تبداء بحرف وليس برقم .
ثم بعد ذلك قمنا بعرض رسالة تحتوي على التالي : فضلا ادخل اسماً او رقماً
ثم بعد ذلك استخدمنا امر جديد وهو الامر الادخال cin
ويكتب بهذه الصيغه cin>> حيث ان المتغير يكتب مباشرة بعده بدون هذين الاقواس “ “ سواء في الـ cin او cout وطبعا مع ملاحظه كتابة بعد الامر ; لتدل على انك اكملت الامر الحالي وللأنتقال إلى الامر التالي .
ثم بعد ذلك قمنا بعرض جمله تقول : الاسم او الرقم هو : ثم تقوم بعرض المدخل الذي ادخله المستخدم

طريقة اخرى لكود البرنامج : نستطيع ان نستغنى عن الـcout الثانية وذلك بإضافه ما بعدها إلى السطر الي قبلها هكذا .
cout<<”your name or number is”<<NM;
وكلاهما صحيح .


مثال 2- قم بكتابة برنامج يقوم بقراءة رقمين ثم بعد قرائتهما يقوم بجمعهما ؟
(سنقوم بحله بعدة طرق)
التحليل :
1- عدد المدخلات : 2
2- عدد المخرجات : 1
3- العمليات الحسابيه : جمع المدخلين
4- عرض الناتج.

كود البرنامج :
#include<iostream.h>
main ( )
{
int N1,N2,N3;
cout<<"pls enter two numbers";
cin>>N1;
cin>>N2;
N3=N1+N2;
cout<<"the result after summation is " ;
cout<<N3;
return 0;
}



حيث قمنا بإضافه ثلاثة متغيرات وهي N1 , N2 , N3 وكما نلاحظ لابد من وجود العلامه هذه ( , ) تفصل بين كل متغير .
ثم بعد ذلك ننتقل إلى السطر الثاني وفيه يتم عرض رساله تحتوي على : فضلا قم بإدخال رقمين . ننتقل بعد ذلك ونلاحظ امر الادخال cin وفيه المتغير الاول N1 ثم بعد ذلك يأتي امر الادخال الثاني وفيه N2
بعد ذلك قمنا بعمل المعادله الحسابيه وهي جمع العددين او المدخلين الاول مع الثاني .
بعد ذلك عرض النتيجه والتي ستكون في المتغير الثالث N3. ويمكن حل ذلك بطرق اخرى منها

#include<iostream.h>
main ( )
{
int N1,N2,N3;
cout<<"pls enter two numbers";
cin>>N1>>N2;
N3=N1+N2;
cout<<"the result after summation is " <<N3;
return 0;
}
وهذه الطريقة تعتبر مختصره بالنسبه للطريقة الاولى وكلاهما صحيح .

ملاحظه : نستطيع تبديل علامة الجمع بأي علامه اخرى كالطرح والضرب والقسمه ، كما يمكننا زياده المتغيرات على حسب مطلوب البرنامج . وكما ذكرت لكم في السابق المتغيرات هذه عباره عن فراغ يتم حجزه في الذاكره . فمثلا في المثال السابق عندما عرفنا ثلاثة متغيرات N1,N2,N3 تكون لدينا ثلاثه مساحات فارغه
وعندما يقراء المستخدم عبارة (فضلا ادخل رقمين) وعلى فرض انه ادخل الرقم الاول 4 فسوف تتحول مساحه الـN1 إلى رقم 4 وذلك داخل برنامج C++ طبعاً وعلى فرض انه ادخل الرقم الثاني 5 فسوف يتحول فراغ او مساحة الـN2 إلى الرقم 5 وعند ذلك وبعد العملية الحسابية سيكون الناتج هو رقم 9.


مثال 3 – قم بكتابة برنامج يمكنك على ادخال ثواني ويحسب كم تساوي ساعات ودقائق وثواني ؟
التحليل :
1- لدينا مدخل واحد وهو الثواني
2- تحويل الثواني إلى ساعات وذلك يتم عند قسمه الساعات على 3600 لان الساعه الواحدة عبارة عن 3600 ثانيه (مع ملاحظة ان القسمه هذه بدون باقي ونستخدم لها هذا الرمز / وليس هذا %)
3- بعد ذلك تحويل الباقي من الثواني إلى دقائق وذلك بقسمة / الثواني على 3600 ثم قسمة الباقي % على 60 لان الساعه عبارة عن 60 دقيقه
4- بعد ذلك نقوم بقسمه باقي الدقائق %60 على باقي الساعات %3600 .
5- عرض الناتج .

كود البرنامج : (نستطيع اختصار البرنامج بهذه الطريقه (كما يمكننا انا نحلها بأكثر من طريقه))

#include<iostream.h>
main()
{
int sec1;
cout<<"Enter whate you have in second\n";
cin>>sec1;
cout<<"the time in hour min sec is"<<(sec1/3600)<<":"<<(sec1%3600)/60<<":"<<((sec1%3600)%60);
return 0;
}
وهنا قمنا بإدخال متغير واحد وهو الثواني ، ثم قنما بعرض شاشه تنص على "ادخل مالديك بالثواني" ثم امر الادخال cin مع المتغير sec1 ، ثم قمنا بعرض جملة (الوقت هو بالساعات : بالدقائق : بالثواني هو) ثم العمليات الحسابيه .
مع ملاحظة وجود هذا النص ":" وهو ليتم فصل الساعات والدقائق والثواني ولكي يتم عرضها على سبيل المثال بهذا الشكل 1:55:15

مثال (واجب عليكم هذا انتم حلوه ) ههههههههههههه يالله سوف اساعدكم فيه قليل
قم بعمل برنامج يقول يإدخال رقمين ثم يقسم الاول على الثاني ثم اعرض الناتج؟
بسيط صح
التحليل :
1- المدخلات 2
2- العملية الحسابيه القسمه : قسمة العدد الاول على الثاني
3- عرض الناتج
كود البرنامج
#include<iostream.h>
main ( )
{
int N1,N2,N3;
cout<<"pls enter two numbers";
cin>>N1>>N2;
N3=N1/N2;
cout<<"the result after Division is " <<N3;
return 0;
}

طبعاً إذا قمنا بكتابة البرنامج بهذه الطريقة سوف يكون الناتج خطأ ؟؟
حتى إذا استبدلنا علامه القمسة العادية / إلى باقي القسمه هذه % .
ساقول لكم لماذا سيكون الناتج خطا ، لاننا إذا ادخل الرقم الاول 5 والرقم الثاني 2 مفروض انه يعطينا الناتج 2.5
طيب قم بتطبيق البرنامج الان وقل لي هل الناتج 2.5 ؟؟ بالتأكيد لا . فالناتج طلع 2 فقط . وهنا نحتاج ان نتعامل مع متغير اخر غير متغير int ؟ وهو float وهذه مقارنه بين الاوامر التي يمكننا استخدامها بدلا عن int
مع ملاحظه اننا غالبا سوف نقوم بإستخدام الـint و الـfloat .
ارجوا التركيز على هذه القائمه .
int = 2 bytes في الخانه الواحده
مثلا
int N1
N1=2 bytes اي المتغير الذي بداخل الانتجر يحتوي على خانتين

float = 4 bytes
double = 8 bytes
char = 1 byte وهو خاص بالاحرف وليس بالارقام

والحل الصحيح في هذه الحاله سيكون هو :
#include<iostream.h>
main ( )
{
float N1,N2,N3;
cout<<"pls enter two numbers";
cin>>N1>>N2;
N3=N1/N2;
cout<<"the result after Division is " <<N3;
return 0;
}

ارجوا ان يكون الشرح كامل ومفيد ، وهذا كان درس اليوم ترقبوا المزيد غداً بإذن الله تعالى
كما اتمنى التعقيب على الموضوع

أخوكم أحمد

THE LEGEND
22-03-2003, 06:34 AM
ملاحظه اخيره
ارجوا تحويل البرامج المكتوبه باللغه الانجليزية بحيث تكون من اليسار إلى اليمين

الصمود
22-03-2003, 10:46 AM
بارك الله فيك وجزاك الله كل خير

حيث وأعرف زملاء يحتاجون للتعرف أكثر عن هذه اللغه

وسأنصحهم بذلك إن شاء الله

بنت الشمس
24-03-2003, 04:54 PM
الاخ الكريم من نظرتي للموضوع اللي كتبته اعتقد انك دارس للبرمجة واكيد عندك فكره عن الاكسس access
اللي هو بمعني قواعد البيانات وفي في برمجة الاكسس برامج مثل الدليت والاب ديت
والسيف .......الخ (delet .save update.colose) ,وعلي ما اعتقد انها ست برامج فلو تعرف اساسياتها رجاء اكتبلي البرامج هذي اقصد اكتبلي هذه البرامج
مع التحيه

ahmadsoroor
25-03-2003, 06:41 AM
شكراً THE LEGEND
إن الاقتراح جميل بأن يكون هناك قسم لتعليم البرامج وطرحها والاستفادة منها .
وتعليم البرامج من البداية حتى النهاية من صغيرها حتى كبيرها .
أرجو من المشرفين والمشاركين والأعضاء أن يناقشوا القضية .
والسلام عليكم ورحمة الله وبركاته

THE LEGEND
25-03-2003, 06:48 AM
السلام عليكم ورحمة الله وبركاته
اولا مشكورين اخواني الاعزاء على التفاعل والمشاركه
ثانيا اختي بنت الشمس للأسف اني لا اتعامل مع برنامج ACCESS بشكل احترافي ولكن سوف احاول تلخيص ما طلبتي مني في اقرب وقت .
ثالثاً والاهم سامحوني لاني تأخرت عن كتابه الجزء الثاني من الدرس
وان شاء الله سوف يكون جاهز في خلال اليوم او بكره
تحياتي

Super Linx
25-03-2003, 01:30 PM
شكرا والله وماقصرت وجزاك الله الف خير

THE LEGEND
26-03-2003, 12:05 PM
السلام عليكم
قبل ان نبداء بالاستمرار ومواصله الدرس لدي بعض الاضافات علي الدرس السابق
اولا IOSTREAM عن عبارة عن اختصار لكملة Input/Output Stream
وكما قلنا سابقاً ان الـCout عباره عن مخرج اي output
والـ cin عباره عن مدخل او input فلذلك نحتاج هذه الامرين عندما نكتب iostream.h
واكرر لكي تقوم بكتابه اي برنامج (قم بفتح البرنامج ثم من قائمه ملف اختار file ثم new وبعدين اختيار من اول يسار التبوين file اختار c++ sourse file.

ثانيا : هذه لسته بالاسماء التي ما نقدرش نستعملها كمتغرات للمتغير انتجر int وغيره
على سبيل المثال نعرف المتغير ممكن يكون كده
int num1,num2;
بس ما نقدرش نكتبه كده
int char;
حيث ان اختصار هذه الكلمه char هو اصلا عباره عن متغير ثاني مثله مثل int
وهذه اللسته بإختصارات المتغيرات التي لا يمكن استخدامها كمتغير

auto, break, case, catch, char, class, const, continue, default, delete, do, double, else, enum, extern, float, for, friend, goto, if, int, long, mutable, new, operator, private, protected, public, register, return, short, signed, sizeof, static, struct, switch, template, this, throw, typedef, union, unsigned, virtual, void, volatile, while

3- لإضافه سطر نستخدم امر \n ويكون في داخل النصوص
مثال cout<<"pls enter you name \n";
كما لاحظنا في المثال السابق انها كتبت في داخل النص اي داخل القوسين " "

4- لإضافه سطر جديد في داخل متغير نستخدم عباره endl
مثال cin>>num1>>endl;
او
مثال cin>>num1>>"\n";
وكلاهما صحيح .

5- \t وهي عباره عن tab اي بتعمل 8 فرغات ما بين الكلمتين
6- \b تمسح الحرف اللي قبلها

7- اخيرا إذا حبينا نستعمل ارقام حقيقيه مثل 2.5 نستخدم امر float بدلا من int.

مثال : قم بأنشاء برنامج يقوم بحساب مساحة مربع ؟
التحليل :
1- عدد المدخلات 2 الطول و العرض
2- العمليات الحسابيه وهي (مساحه المربع = الطول * العرض)
3- عرض الناتج

كود البرنامج
#include<iostream.h>
main()
{
int width, high, total;
cout<<"pls enter the width and the high value";
cin>>width>>high;
total=width*high;
cout<<"the total area of square is "<<total;
return 0;
}
مثال 2: قم بإنشاء برنامج يتيح لك إدخال الحرف الاول من اسمك ثم يقوم بعرضه؟
التحليل :
1- عدد المدخلات 1
2- عرض الناتج

كود البرنامج
#include <iostream.h>
main()
{
char FL;
cout<<"pls enter the first letter of your name :";
cin>>FL;
cout<<"the first letter of your name is "<<FL;

return 0;
}
في هذا المثال استخدمنا متغير جديد وهو متغير الحروف char وكما ذكرنا سابقا هذا المتغير لا يسمح إلا بعرض ( حرف )واحد فقط .


======= اخواني اخواتي إذا فهمتوا جميع الامثلة السابقة فهذا يعني انكم قطعتوا شوط كبير جدا======

اما الان سوف نأخذ متغير جديد وسوف يطول الامر معنا هنا شويه وسوف تتكثر الامثله ايضا ويتعبر هذا الدرس من الدروس المهمه جداً التي سنشرحها .
أداة الشرط if
والصيغه العامه لأداة الشرط if هي
#include<iostream.h>
main()
{
if (condition)
{
statement 1;
statement 2;
}
else

{
statement 3;
statement 4;
}

return 0;
}ملاحظه : لابد من حفظ هذه الصيغه
ونلاحظ ايضا ان مابعد اداة الشرط if لابد ان يكون محصوراً بين قوسين
ثم ارجوا التركيز هنا
مثال 1: قم بإنشاء برنامج بحيث إذا ادخلت فيه رقم معين يعطيك رساله ان الرقم الذي ادخلته إما أكبر او اصغر من 10؟

التحليل :
1- عدد المدخلات 1
2- العمليات الحسابيه (هنا سوف نستخدم ادة الشرط if) فتكون كالتالي
if (N <10) = الرقم أصغر من عشره
if (N >10)= الرقم أكبر من عشره
3- عرض الناتج

كود البرنامج
#include<iostream.h>
main()
{
int N;
cout<<"pls enter any number";
cin>>N;
if (N<10)
cout<<"the number is less than 10";
else
cout<<"the number is larg than 10";
return 0;
}
وهنا قمنا اولا بإضافه متغير واسميناه N ، ثم بعد ذلك قمنا بعرض رساله تقول "فضلا ادخل اي رقم"
ثم نلاحظ بعد ذلك ان ما بعد كلمة if لابد ان يكون محصوراً بين قوسين وهنا طلبنا من البرنامج انه إذا كان الرقم المدخل (المتغير N) اقل من العشره فسوف يتم عرض الرساله the number is less than 10 وتعني الرقم اقل من عشره . ثم بعد ذلك كلمه else وتتتدخل إذا لم يتحقق الشرط if ثم يتم تنفيذها ،وهنا else تقوم بعرض ماتحتها في حاله (فقط) إذا لم يتحقق شرط if اي فسوف يعرض ما تحت else وهو الرقم اكبر من العشره. وطبعا إذا حدث العكس فسوف يتم تجاهل if وسيعرض ما تحت else.


ملاحظه : هذا الجدول يبين لنا كيفيه استخدام الاوامر الحسابيه في اداة الشرط if
رموز المقارنه لدى أداة الشرط if
C++ طريقه كتابتها في الـ الاوامر الحسابيه العاديه
> أكبر من
< أصغر من
=> أكبر ويساوي
=< أصغر ويساوي
= = يساوي =
!= لا يساوي
&& ( و ) and
|| أو or وتكتب بالضغط على shift+\ مرتين
لابد من حفظ هذه الاختصارات ايضا.
ويلزم ايضا عدم تجاهلها والانتقال إلى الامثله الاخرى قبل حفظ جميغ الصيغ المذكورة اعلاه .

مثال 2- قم بإنشاء برنامج يقوم بقراءة رقمين ثم يعرض الرقم الاكبر وفي حالة تساوي الرقم الاول مع الرقم الثاني يقوم بعرض رساله "الرقم الاول يساوي الرقم الثاني".
التحليل :
1- عدد المدخلات 2
2- العمليات الحسابيه إذا كان الرقم الاول > الرقم الثاني ، الرقم الاول < الرقم الثاني
3- عرض الناتج

كود البرنامج
#include<iostream.h>
main()
{
int x,y;
cout<<"pls enter two numbers";
cin>>x>>y;
if (x==y)
cout<<"the numbers are equal";
else
if (x>y)
cout<<"the larger number is"<<x;
else
cout<<"the larger number is"<<y;
return 0;
}
في هذا المثال قمنا بتعريف متغيرين x,y وقمنا بعمل اول معادله وهي إذا تساوي المتغير الاول مع الثاني (مع ملاحظه كيفية كتابه =( اي إذا تساوى المتغيرين فسوف تعرض رساله تقول "ان الرقمين متساوين" وفي حاله عدم تحقق الشرط الاول نتتقل إلى else وداخلها شرط اخر وهو إذا كان المتغير الاول اكبر من المتغير الثاني يتم عرض رساله تقول فيها "ان الرقم الاكبر هو ويتم عرض الرقم" وفي حاله عدم تحقق الشرط الثاني يتم مباشرة عرض العكس في الاحتمال الاخير else وهو عرض المتغير y كما نرى في المثال .

لاننسى ان هناك عدة طرق لحل هذه المسائل .

مثال 3- قم بعمل برنامج يقول بقراءه درجات طلبه بحيث انه إذا تم ادخال درجه اقل من 50 يعطيك رساله"عفوا الطالب راسب" وإذا كانت الدرجه المدخله 50 او اكثر فسوف يكون الناتج "مبروك الطالب ناجح"

قبل ان ترى الحل حاول ان تحلها لوحدك ثم قارن الحل مع العلم ان يمكنك حلها بطريقه اخرى.

التحليل :
1- عدد المدخلات 1
2- العمليات الحسابيه إذا كان المتغير => 50 يتم عرض رساله مبروك الطالب ناجح وإذا كان الطالب غير ذلك يتم عرض عفوا الطالب راسب.

كود البرنامج
#include<iostream.h>
main()
{
int x;
cout<<"pls enter the degree of Student";
cin>>x;
if (x>=50)
cout<<"congratulation for success";
else
cout<<"Sorry, not success";
return 0;
}

سهله صح ؟ هل حليتها انت بنفس الطريقه ؟ وهل حلك كان بطريقه اقصر ام اطول من هذه الطريقه؟ ارجوا ان تعرض لنا طريقه حلك ؟ للمشاركه فقط.

مثال 4- قم بعمل برنامج يقراء عددين ثم إذا كان قيمه العدد الاول اكبر من الثاني يقوم بإعطاء قيمه العدد الاول للثاني وقيمة العدد الثاني للأول ؟
التحليل :

التحليل عليك ايها الدارس ارجوا ان يتم التحليل ............. كنوع من المشاركه

كود البرنامج
#include<iostream.h>
main()
{
int num1,num2,num3;
cout<<"pls enter two numbers";
cin>>num1>>num2;
if (num1>num2)
{
num3=num1;
num1=num2;
num2=num3;
}
cout<<num1<<endl;
cout<<num2<<endl;
return 0;
}

مثال 5-
قم بإنشاء برنامج بحيث إذا ادخلت له قيمه مقدارها 10 او اقل يقوم بـعرض رساله "الرقم المدخل هو 10 او اقل" وبحيث انك إذا ادخلت له قيمه اكثر من 10 يعرض لك رساله "الرقم المدخل هو اكثر من 10".

ارجوا من الدارسين حلها (بسيطه جدا لو انت فهمت الامثله السابقه ما بتستغرق معاك ثواني لحلها)


ملاحظه إلى هذه المرحله وبمجرد فهمك إلى هذه النقطه عن برنامج c++ تكون قد وضعت قدمك في اول خطوه لإحتراف C++. ومن ناحيه تكون قد اخذت اساسيات البرنامج ، واود الاحاطه علما انه سوف يكون هذا المثال الاخير من هذا النوع (سهل) فسوف نتدرج في الدرس القادم إلى حل مسائل معقده تماماً وطويله ايضا وسوف نستعمل متغيرات جديده. ولكن قبل ذلك اود ان اعرف هل الشرح الماضي مفهوم؟ وهل هو مفهوم بنسبه 100% ام أقل ؟؟ اعمل لي برنامج يقوم بهذه العمليه هههههههههههه.
فقط اريد ان اعرف هل هناك اي اسئله عن الدروس الماضيه ؟ واتمنى التعليق على الموضوع.
ولا تنسوا ايضا عليكم واجبين اولا التحليل حق مثال رقم 4 وثانيا حل مثال رقم 5.
استودعكم الله للدرس القادم شدوا حيلكم

تحياتي
أحمد ماسك2

saud_jj
28-03-2003, 04:05 PM
جزاك الله ألف خير على هذا الدروس وأتمنى أنك تستمر حتى يستطيع أي واحد تعلم هذي اللغه اللي تعتبر من أقوى لغات البرمجه وأحب أقولك أنا متابع معاك خطوه بخـطوه وماشي تمام ولله الحمد
بس عندي سؤال هل البرنامج اللي تستخده في البرمجه هو microsoft visual c++
او برنامج آخر
وعندي سؤال ثاني
انت قلت ان مثلا ً int ياخذ tow bytes يعني 16 bit وإذا أخذنا بالإعتبارالإشاره موجبه أوسالبه
هل هذا يعني أن أكبر عدد أقدر أستخدمه هو ثنين(2) أس 15 اللي يساوي 32768
وأذا كنت غلطان فياليت توضح لي

THE LEGEND
29-03-2003, 12:54 PM
السلام عليكم saud_jj

البرنامج طبعا microsoft visual c++
وبالنسبه للـ INT مادري وش تقصد سؤالك كان معقد شوي على العموم ان ممكن تجرب وتشوف البرنامج إلى كام ممكن يتحمل ارقام لانه انا فكرتي على 2 بايت هي مكانين فقط في الذاكره وكل مكان ممكن يتحمل اي عدد من الارقام
وانت لاتصعبها على نفسك
انا جالس اكمل الشرح وسأحاول نشره غدا ان شاء الله
وإلى الامام دوماً

أحمد

saud_jj
29-03-2003, 02:16 PM
int 2 بايت = 16 بت وياخذ الأعداد الحقيقيه من (32767+ إلى 32768- )
لقيته في أحدى اللملفات عندي
بس مشكور على كل حال وحنا في إنتظار الدرس الثالث

تويتى
30-03-2003, 05:08 PM
الى استطيع افيدكم فية اقراءو هالكتاب
how to program
من سلسلة ديتل
ورح تتعرفوا عل
++C
اوووووووووووووكى

THE LEGEND
01-04-2003, 11:33 AM
السلام عليكم ورحمة الله وبركاته
سوف نكمل اليوم إن شاء الله الدرس الثالث من برنامج c++
وكما ذكرنا سابقا سوف نتدرج إلى حل مسائل اكثر تعقيدا من السابق ونرجوا التركيز على الملاحظات وحفظ صيغ المعادلات .

حل مثال 5- من الدرس السابق
مثال 5-
قم بإنشاء برنامج بحيث إذا ادخلت له قيمه مقدارها 10 او اقل يقوم بـعرض رساله "الرقم المدخل هو 10 او اقل" وبحيث انك إذا ادخلت له قيمه اكثر من 10 يعرض لك رساله "الرقم المدخل هو اكثر من 10".

كود البرنامج
#include<iostream.h>
main()
{
int NB;
cout<<"pls enter any number";
cin>>NB;
if (NB<=10)
cout<<"the number you entered is less than or equal 10";
else
cout<<"the number you entered is larger than 10";
return 0;
}


مثال 6- قم بإنشاء برنامج بحيث إذا ادخل له حرف (انجليزي) كبير capital letter يقوم بعرض رساله الحرف الذي ادخل هو حرف كبير ، وإذا ادخلنا له حرف صغير small letter يقوم بعرض رساله الحرف المدخل هو حرف صغير .

كود البرنامج
#include<iostream.h>
main()
{
char me;
cout<<"pls enter any character";
cin>>me;
if (me >='A' && me<='Z')
cout<<"the character you entered is capital letter";
else
cout<<"the character you entered is small letter";
return 0;
}

وهنا قمنا بتعريف متغير الاحرف وهو char وهو لا يسمح إلا بإدخال حرف واحد فقط . ثم قمنا بعد ذلك بعرض رساله تطلب منا ادخال الحرف بعد ذلك استخدما اداه جديده وهي عباره عن حرف بين قوس ‘ ‘ وهذا يعني ان الحرف الواقع ما بين حاصرتين 'Z' هو عباره عن الحرف اللي(او الحرف الموجود) في لوحة المفاتيح وإذا كتب بدون الحاصرتين ' ' سوف يقوم البرنامج على تعريفه كمتغير مثل int Z .
وهنا قلنا للبرنامج ان اي حرف اكبر او يساوي A واصغر او يساوي Z يتم عرض رساله " الحرف الذي ادخل هو حرف كبير" وإذا كان المدخل غير ذلك يتم عرض رساله ان الحرف المدخل حرف صغير .

للعلم فقط : ان البرنامج يعطي كل حرف في لوحة المفاتيح قيمه معينه (على سبيل المثال فقط )
a = 1
b =2
c =3
d =4
e =5
الخ
A = 22
B = 23
C =24
D =25
E =26
الخ
ثم تأتي الاقام من 0-9

هذه الطريقة يستخدمها البرنامج لكي يميز بين الاحرف الصغيره والاحرف الكبيره الموجوده في لوحة المفاتيح.

مثال 7- قم بإنشاء برنامج يقوم بقراءة اربعه ارقام ثم يقوم بعرض الرقم الاصغر والرقم الاكبر فقط

كود البرنامج

#include<iostream.h>
main()
{
float n1,n2,n3,n4;
cout<<"pls enter four numbers";
cin>>n1>>n2>>n3>>n4;
if (n1 > n2 && n1 >n3 &&n1 >n4)
cout <<"the largest number is "<<n1;
if (n2 >n1 && n2 <n3 &&n2 >n4)
cout <<"the largest number is "<<n2;
if (n3 >n1 && n3 >n2 && n3 >n4)
cout<<"the largest number is "<<n3;
if (n4 >n1 && n4>n2 && n4>n3)
cout<<"the largest number is "<<n4;

if (n1 < n2 && n1 <n3 &&n1 <n4)
cout <<"the small number is "<<n1;
if (n2 <n1 && n2 <n3 &&n2 <n4)
cout <<"the small number is "<<n2;
if (n3 <n1 && n3 <n2 && n3 <n4)
cout<<"the small number is "<<n3;
if (n4 <n1 && n4<n2 && n4<n3)
cout<<"the small number is "<<n4;
return 0;
}

هذه طريقة مطوله جدا مع العلم انه يمكننا ان نحلها بطريقه متخصره جدا . ولكن لكي يفهم الجميع العملية التي تمت في البرنامج .


مثال 8- قم بإنشاء برنامج يقوم بعمل (اله حاسبه) ولكن بشكل مبسط بحيث يدعم على الاقل جمع او طرح او قسمة عددين.

كود البرنامج

#include<iostream.h>
main()
{
int nb1,nb2,result;
char op;
cout<<"give two numbers and one operator";
cin>>nb1>>op>>nb2;
if (op=='+')
{
result=nb1+nb2;
cout<<nb1<<op<<nb2<<"="<<result<<endl;
}
else
if (op=='-')
{
result=nb1-nb2;
cout<<nb1<<op<<nb2<<"="<<result<<endl;
}
else
if (op=='*')
{
result=nb1*nb2;
cout<<nb1<<op<<nb2<<"="<<result<<endl;
}
else
if (op=='/')
{
result=nb1/nb2;
cout<<nb1<<op<<nb2<<"="<<result<<endl;
}

return 0;
}

ونلاحظ في هذا المثال اننا قد ادخلنا ثلاثه دوال من نوع int وداله واحده من نوع char
وايضا لابد من وضع ‘+’ علامه الجمع والطرح بين قوسين ، وذلك لكي يتعامل معه على انه حرف موجود في لوحة المفاتيح وليس كمتغير .
ونسطيع ايضا حلها بدون ان نستخدم else
بهذه الطريقة وذلك للإختصار فقط وكلاهما صحيح
int num1,num2;
char op;
cout<<"pls enter two numbers";
cin>>num1>>op>>num2;
if (op=='+')
cout<<num1+num2;
if (op=='-')
cout<<num1-num2;
if (op=='*')
cout<<num1*num2;
if (op=='/')
cout<<num1/num2;
return 0;
}


مثال 9- قم بعمل برنامج يقوم بقراءة اي عدد ثم إذا كان العدد المدخل عباره عن عدد زوجي يتم عرض رساله ان العدد المدخل هو عدد زوجي وإذا كان العدد المدخل فردي يتم عرض رساله ان العدد المدخل فردي.

كود البرنامج

#include<iostream.h>
main()
{
int num;
cout<<"pls enter any number";
cin>>num;
if (num%2==0)
cout<<"the number you entered is doubles";
else
cout<<"the number you entered is Single";
return 0;
}
وهنا قمنا بقسمه باقي القمسه على 2 وإذا كان الناتج يساوي صفر إذا العدد زوجي وإذا كان غير ذلك فهو فردي
مثال إذا ادخلنا الرقم 4 (على سبيل المثال ) فهو سيحسب المسأله بهذا الشكل
4/2 =2 %2 = 0
فإذا كان الناتج = صفر سوف يتم عرض الرساله ان الرقم المدخل هو عدد زوجي
وفي حاله أننا ادخلنا رقم اخر مثل 5
5/2=3%2 != 0
فهنا اولا سيطلع لنا الناتج 3 وليس 2.5 لاننا نستخدم متغير int وليس float وفي النهاية العدد الناتج لا يساوي الصفر فسوف يقوم البرنامج بتجاهل ماتحت if وسيقوم بعرض ما تحت else وذلك لعدم تحقق شرط if.
وسيقوم بعرض رساله "الرقم المدخل هو عدد فردي" .

مثال 10- قم بإنشاء برنامج يتيح لك إدخال راتب (موظف) ، ثم إذا كان الراتب المدخل
1- أكثر من 30000 الف ، لابد ان يخصم من راتبه نسبه 30%
2- أقل او يساوي 30000الف و أكبر من 15000 الف يخصم من راتبه بنسبه 25%
3- اخيرا إذا كان الراتب المدخل اقل او يساوي 15000 لايتم خصم اي شئ .

أعتقد انني اعطيتكم الحل في معطيات السؤال نعم
فقط يلزمنا عملية الخصم فمثلا إذا كان معنا (على سبيل المثال) 100 درهم وقلنا نريد ان نخصم منها نسبه 25% فسيكون الباقي 75درهم ؟ طيب كيف عرفت الناتج ؟ ضروري من وجود عمليه انت اجريتها في رأسك ؟ اريدك ان تدلني عليها ؟
فلو قلنا 25-100 قد تكون متساويه مع الناتج 75
ولكن هذه العمليه لا تنطبق مع غيرها حيث لو كان الراتب مثلا 30000 ونريد ان نخصم 30% فهل نستطيع عمل عمليه الناقص هذه 30000-30=29970 هل هذا الناتج بعد الخصم 30%؟ اكيد لا
بكل بساطه العمليه التي لابد ان تجرى لعمل نسبه مئويه هي
X*30/100
هذا اولا حيث x عباره عن الرقم المدخل (متغير طبعا) و 30 عباره عن نسبه الخصم ونستطيع تغيرها على حسب السؤال . فلو عوضنا في المساله بان الرقم المدخل 100
100*30/100
فسيكون الناتج 30 وهذه هي المبلغ المخصوم او المبلغ الذي سيحذف من الراتب (اي لابد ان نقوم بعمليه اخرى إضافه لهذه العمليه لنطلع الباقي الذي سوف يستلمه الموظف)
X-Total
وهنا اكملنا العمليه بأن الرقم المدخل ناقص ناتج العمليه التي اجريناها سابقا ونعوض لكي نرى
100 – 30 = 70
ارجوا ان تكون واضحه

كود البرنامج

#include<iostream.h>
main()
{
float sal,n,r;
cout<<"Pls Enter the Salary";
cin>>sal;
if (sal>30000)
{
r=sal*30/100;
n=sal-r;
cout<<"the salary after dedocation is"<<n;
}
else
if (sal<=30000 && sal>15000)
{
r=sal*25/100;
n=sal-r;
cout<<"the salary after dedocation is"<<n;
}
else
if (sal<=15000)
cout<<"There is no dedocation on salary! the Salary is="<<sal;

return 0;

}
ونلاحظ هنا لابد من وجود فتح مجال تحت if { ومن ضرورة إغلاقه } فقد لايعمل البرنامج بشكل صحيح إذا تم الاستغناء عنهما .


ارجوا ان يكون درس اليوم مفيد ولو انه قصير شويه واهم شئ يكون مفهوم وسنقوم بشرح عدد اكبر من الامثله في الدرس القادم ان شاء الله


تحياتي
أحمد ماسك2

THE LEGEND
06-04-2003, 07:06 AM
السلام عليكم ورحمة الله وبركاته
اولا احب ان اشكر الاخ مشرف الكمبيوتر (الكوماندو) على اهتمامه بالموضوع واتمنى ان اكون على قد الثقه .
ثانيا وقبل ان نبداء بالشرح هل هناك اي سؤال على اللي مضى لاننا نريد الانتقال الان إلى مستويات اعلى ؟ فارجوا الرد ؟
تحياتي
أحمد ماسك2

الكوماندر
06-04-2003, 11:25 AM
السلام عليكم اخي THE LEGEND

والله غيبت يا خي على المجلس.
كنت منتظر باقي الشرح علشان احفظه عندي واستفيد منه بعدين.

يالله انا منتظر باقي الشرح والاخوه الاعضاء كمان.

تحياتي القلبيه لك عزيزي.

الصمود
06-04-2003, 01:03 PM
كما قلت من قبل

بارك الله فيك ووفقك وأعانك

وجعل أعمالك في ميزان حسناتك



واعذرني لأني لا أستخدم هذه اللغه ولكن يمكن أن أنقل المعلومات لمن يستفيدون بها


أشكرك مجددا ووفقك الله

الحزين2
06-04-2003, 10:01 PM
مشكور وما قصررت .
والله مشكوور

THE LEGEND
14-04-2003, 01:39 PM
السلام عليكم ورحمة الله وبركاته
في البدايه ارجوا المعذره على الانقطاع الطويل والذي كان لأسباب قاهره خارجه عن الاراده

-----------------------------------------------
سوف نكمل اليوم إن شاء الله الدرس الرابع من برنامج c++


سوف نأخذ اليوم الـswitch
الـswitch عباره عن اداه عملها نفس عمل الـ IF ولكنها تقوم بإختصار العمليه وتنظمه ايضا وخصوصا عندما يكون معنا برنامج طويل

والصيغه العامه لها هي
Switch (condition)
{
case Lebel;
Statement 1;
Break;
Defualt : statement ;
}

ويمكن إضافه اكثر من حاله واحده مثال
Switch (condition)
{
case Lebel1;
Statement 1;
Break;
case Lebel2;
Statement 2;
Break;
case Lebel3;
Statement 3;
Break;
Defualt
}
وسوف نتعرف كيف تعمل الصيغه عن طريق الامثله .

مثال 1- قم بإنشاء برنامج يقوم بقراءة معدل الطلبه على هيئه حروف A-B-C-D-F بحيث إذا ادخل له
1- الحرف a = ممتاز جدا
2- الحرف b = ممتاز
3- الحرف c= جيد جدا
4- الحرف d= مقبول
5- الحرف f= راسب
6- إذا ادخل حرف غير هذه الاحرف تعطي رساله تقول الحرف المدخل غير صحيح
وهنا نستطيع حلها بطريقتين الاولى عن طريق IF والثانيه عن طريق switch

الحل رقم واحد
عن طريق if
#include<iostream.h>
main()
{
char me;
cout<<"pls enter the degrees in character";
cin>>me;
if (me=='a'|| me=='A')
cout<<"excellent";
if (me=='b'||me=='B')
cout<<"very good";
if (me=='c'||me=='C')
cout<<"good";
if (me=='d'||me=='D')
cout<<"not bad";
if (me=='f'||me=='F')
cout<<"Fail";
else
cout<<"inviled degree character";
return 0;
}
والحل الثاني عن طريق الـswitch
#include<iostream.h>
main()
{
char me;
cout<<"pls enter the degrees in character";
cin>>me;
switch(me)
{
case 'a':
cout<<"excellent";
break;
case 'b':
cout<<"very good";
break;
case 'c':
cout<<"good";
break;
case 'd':
cout<<"not bad";
break;
case 'f':
cout<<"fail";
break;
default : cout<<"Inviled character degree";
}


}


وكلاهما صحيح ،
اولا قمنا بإضافه swtich وعرفنا المتغير me وبعدها قمنا بإستخدما case وهي تعني انها سوف تتعامل مع متغير switch وهو me وبعدها فصلنا بين الامرين بمقطع اسمه break لندل له اننا نريد الانتقال إلى امر اخر واخيراً default تعمل عمل else
..


مثال 2
قم بإنشاء برنامج يقوم بقراءه الايام والاشهر ثم يقوم بتحويل الاشهر من ارقام إلى حروف مثلا إذا ادخل له 1-1
يقوم بعرضه بهذه الطريقه 1-يناير .
الحل
#include<iostream.h>
main()
{
int date,month;
cout<<"Pls enter the date and month";
cin>>date>>month;

switch(month)
{
case 1:cout<<"january";
break;
case 2:cout<<"february";
break;
case 3:cout<<"march";
break;
case 4:cout<<"april";
break;
case 5:cout<<"may";
break;
case 6:cout<<"june";
break;
case 7:cout<<"july";
break;
case 8:cout<<"august";
break;
case 9:cout<<"september";
break;
case 10:cout<<"october";
break;
case 11:cout<<"november";
break;
case 12:cout<<"december";
break;
default : cout<<"inviled month";
}
cout<<date;
return 0;

}

ونلاحظ انه لابد من وجود فراغ او space بين الـ case والرقم اللي يليه

وطبعا إذا فهمت الـ if تستطيع فهم switch بكل سهوله

مثال :قم بإنشاء برنامج يقوم بعمليات الاله الحاسبه
الحل الاول

#include<iostream.h>
main()
{
int num1,num2;
char op;
cout<<"pls enter two numbers";
cin>>num1>>op>>num2;
if (op=='+')
cout<<num1+num2;
if (op=='-')
cout<<num1-num2;
if (op=='*')
cout<<num1*num2;
if
(op=='/')
cout<<num1/num2;
if (op=='%')
cout<<num1%num2;

return 0;
}

الحل الثاني بإستخدام switch
#include<iostream.h>
main()
{
int num1,num2;
char op;
cout<<"pls enter two numbers";
cin>>num1>>op>>num2;
switch (op)
{
case '+':
cout<<num1+num2;
break;
case '-':
cout<<num1-num2;
break;
case '*':
cout<<num1*num2;
break;
case'/':
cout<<num1/num2;
break;
case'%':
cout<<num1%num2;
}
}
ارجوا ان يكون درس الـ switch وكما قلنا سابقا انه يقوم بعمل if ولكنه يسهل البرنامج خصوصا إذا كان برنامج طويل
وقبل ان نختم درس اليوم
لدينا عمليات حسابيه لابد ان نفهما قبل البدء بدروس اخرى

وهي
#include<iostream.h>
main()
{
int m=5, k, x;
k = m++ *2+5;
x= m*2+5;
cout<<"k="<<k;
cout<<"x="<<x;
}
هل تعرف كم الناتج ؟
سيكون الناتج
15
17

هنا ++ تعني قم بإضافه واحد إلى المدخل M
فملا m = 5
M++ = 5+1
ملاحظه مهمه جدا عندما تأتي علامه ++ بعد الحرف هذا يعني انها تضيف الواحد في المساله اللي تليها وليس بالمساله الحاليه
ففي المثال السابق
M ++ =5*2+5= 15
ثم في المسأله الثانيه سنعوض الـ ++ يعني m = 6
6*2+5=17

ارجوا ان تكون المسأله واضحه

مثال اخر

#include<iostream.h>
main()
{
int m=5, k, x;
k = ++m *2+5;
x= m*2+5;
cout<<"k="<<k;
cout<<"x="<<x;
}
نلاحظ هنا انه يختلف عن المثال السابق بالعلامه الـ ++اللي قبل الحرف m
وهذا يعني قم بإضافه العدد واحد إلى المدخل m و استخدمه في نفس المسأله والمسأله التي تليها
يعني سيكون الناتج
17
17

وعمليه السالب تحسب بنفس الطريقه


اخواني اخواتي استودعكم الله ودرسنا الجاي سيكون عن الـloop
وإذا لديكم اي سؤال عن درس اليوم اتفضلوا
واعذروني مره اخرى عن الإنقطاع

أخوكم : أحمد

badie
16-04-2003, 04:41 PM
شكرا اخي THE LEGEND
على هذا المجهود العظيم واسال الله ان يجعله في ميزان حسناتك
طبعا ان متابع دروسك اول باول ولكن لأني معظم الاوقات مشغول لم استطع الرد
عليك بسرعه اشكرك فيه على هذا الموضوع
تحياتي..

THE LEGEND
19-04-2003, 11:50 AM
بارك الله فيك أخي badie
فقط اريد الاستفساراكثر هل الشرح مفهوم لاني الاحظ انني متجاهل اشياء كثيره في البرنامج

في الاخير شاكر تعاونكم معي
وان شاء الله سنبداء غدا بالـ WHILE
او الـ LOOP

أخوكم أحمد