دورة في الــــ
C++.NET Programming
المحاضرة السادسة بعنوان :
الـ While Loop
الـ Arrays
---------------------
قبل أن أخوض في التفاصيل هذه المحاضرة, أحببت أن أوضح نقطة, أنه إلى هنا نحن نتحدث عن الأساسيات, أو قل البديهيات.. لذلك تراني أسرع في هذا الجزء من الدورة.
وسنستمر على هذا المنوال إلى أن نصل إلى المحاضر الثامنة أو التاسعة..
ومن بعدها ..
سندخل بأمور أكثر متعه.. وهي البرمجة الكائنية, ذلك المصطلح الذي يظن البعض أنه جاء من الفضاء, أو أنه من الصعوبة ما لا يفهمه إلا بروفوسور أو دكتور في الجامعة, نعم سنكشف في هذه الدورة أن (ليس كل ما يلمع ذهب)...
------------------
الـ While Loop
تكلمنا في الدرس الماضي عن الـ for , وهي زميلة الـ while فكلاهما يعتبر من الجمل التكرارية,
تستخدم هذه الجملة عندما لا نعرف عدد المرات التكرار.
يعني على سبيل المثال أريد من البرنامج أن يستمر في عدد غير محدد من التكرارت ويقف عندما أضغط على الرقم صفر. في هذه الحالة نستخدم الـ while ,
يعني على سبيل المثال, إذا أردنا عمل برنامج يبدأ بي قائمة وفيها, إضغط على الرقم 1 لتشغيل الضوء, إضغط على الرقم 0 لإطفاء الضوء, إطفاء الضوء يعني الخروج من البرنامج, فسيكون كالتالي:
C++.NET Programming
المحاضرة السادسة بعنوان :
الـ While Loop
الـ Arrays
---------------------
قبل أن أخوض في التفاصيل هذه المحاضرة, أحببت أن أوضح نقطة, أنه إلى هنا نحن نتحدث عن الأساسيات, أو قل البديهيات.. لذلك تراني أسرع في هذا الجزء من الدورة.
وسنستمر على هذا المنوال إلى أن نصل إلى المحاضر الثامنة أو التاسعة..
ومن بعدها ..
سندخل بأمور أكثر متعه.. وهي البرمجة الكائنية, ذلك المصطلح الذي يظن البعض أنه جاء من الفضاء, أو أنه من الصعوبة ما لا يفهمه إلا بروفوسور أو دكتور في الجامعة, نعم سنكشف في هذه الدورة أن (ليس كل ما يلمع ذهب)...
------------------
الـ While Loop
تكلمنا في الدرس الماضي عن الـ for , وهي زميلة الـ while فكلاهما يعتبر من الجمل التكرارية,
تستخدم هذه الجملة عندما لا نعرف عدد المرات التكرار.
يعني على سبيل المثال أريد من البرنامج أن يستمر في عدد غير محدد من التكرارت ويقف عندما أضغط على الرقم صفر. في هذه الحالة نستخدم الـ while ,
يعني على سبيل المثال, إذا أردنا عمل برنامج يبدأ بي قائمة وفيها, إضغط على الرقم 1 لتشغيل الضوء, إضغط على الرقم 0 لإطفاء الضوء, إطفاء الضوء يعني الخروج من البرنامج, فسيكون كالتالي:
كود:
#include
using namespace std;
int main()
{
int enter = 0;
bool light = false;
while (!light)
{
cout << "Enter 0 For Off the light, Enter 1 for on the light: ";
cin >> enter;
if (enter == 1)
{
cout << "Light On" << endl;
}
else if (enter == 0)
{
cout << "Light Off" << endl;
light = true;
}
else
{
cout << "Enter 1 or 0" << endl;
}
}
}
using namespace std;
int main()
{
int enter = 0;
bool light = false;
while (!light)
{
cout << "Enter 0 For Off the light, Enter 1 for on the light: ";
cin >> enter;
if (enter == 1)
{
cout << "Light On" << endl;
}
else if (enter == 0)
{
cout << "Light Off" << endl;
light = true;
}
else
{
cout << "Enter 1 or 0" << endl;
}
}
}
نلاحظ من الكود:
قمنا بالبداية بي تعريف المتغير enter وهو الذي يمثل الرقم الذي يدخلة المستخدم.
ومن ثم المتغير light وهو من نوع الـ Boolean أي أنه يأخذ قيمتين إما true والمتمثلة ب الرقم 1 وإما false والمتمثلة بي الرقم 0, ونلاحظ بأننا قمنا بإعطائة القيمة false وذلك لأننا لا تريد الخروج من الحلقة التكرارية أزل ما يعمل البرنامج..
وبعدها وبداخل القوسين في الجملة while والتي تمثل ((الشرط)) قمنا بإدخال المتغير light بها, وجعلنه يأخذ القيمة false أي أننا نستطيع كتابة هذه الجملة أيضاُ بالشكل التالي
قمنا بالبداية بي تعريف المتغير enter وهو الذي يمثل الرقم الذي يدخلة المستخدم.
ومن ثم المتغير light وهو من نوع الـ Boolean أي أنه يأخذ قيمتين إما true والمتمثلة ب الرقم 1 وإما false والمتمثلة بي الرقم 0, ونلاحظ بأننا قمنا بإعطائة القيمة false وذلك لأننا لا تريد الخروج من الحلقة التكرارية أزل ما يعمل البرنامج..
وبعدها وبداخل القوسين في الجملة while والتي تمثل ((الشرط)) قمنا بإدخال المتغير light بها, وجعلنه يأخذ القيمة false أي أننا نستطيع كتابة هذه الجملة أيضاُ بالشكل التالي
كود:
while (light == false)
إلى هنا قمت بإغلاق الحلاقة, وسيستمر البرنامج بالدوران إلى أن يصل إلى جملة الخروج وهي :
كود:
light = true;
عندها سيخرج البرنامج من حلقة الـ while .
نلاحظ في هذاالبرنامج, أننا لا نعلم متى سيضغط المستخدم على الرقم صفر من أجل الخروج لذلك إستخدمنا الـ while , حيث اننا لا نستطيع عمل هذا بي الـ for
وأيضاً بواسطة جملة الـ while نستطيع عمل برامج نعرف متى نهايتها, يعني أنها تعمل مثل جملة الـ for إليك هذا البرنامج يطبع من الصفر إلى 9 .
نلاحظ في هذاالبرنامج, أننا لا نعلم متى سيضغط المستخدم على الرقم صفر من أجل الخروج لذلك إستخدمنا الـ while , حيث اننا لا نستطيع عمل هذا بي الـ for
وأيضاً بواسطة جملة الـ while نستطيع عمل برامج نعرف متى نهايتها, يعني أنها تعمل مثل جملة الـ for إليك هذا البرنامج يطبع من الصفر إلى 9 .
كود:
#include
using namespace std;
int main()
{
int a = 0;
while (a<=9)
{
cout << a;
a++;
}
}
using namespace std;
int main()
{
int a = 0;
while (a<=9)
{
cout << a;
a++;
}
}
--------------------------------------
لنأخذ هذا البرنامج الأخير..
وهو عبارة عن Nesting Loops أي أنه جملة تكرارية بداخل جملة آخرى, سيكون البرنامج كالتالي:
سيطبع الأرقام من 1 إلى 10, وبعدها يسأل المستخدم إذا كنت تريد طباعتها مرة آخري فضغط على الحرف Y , أما إذا كنت لا تريد فضغط على الحرف N ,
ضغتك على الحرف N سيعني بالضرورة خروجك من البرنامج ..
أول ما نفكر به هو عمل الحلقة التكرارية .. while , لماذا إخترتها .. لأننا كما قنا تستخدم عند عدم معرفة عدد مرات التكرار التي سيجريها المستخدم. فأنا لا أعلم متى يريد هو الخروج من البرنامج.
يمثل هذا حجر الأساس.
لنأخذ هذا البرنامج الأخير..
وهو عبارة عن Nesting Loops أي أنه جملة تكرارية بداخل جملة آخرى, سيكون البرنامج كالتالي:
سيطبع الأرقام من 1 إلى 10, وبعدها يسأل المستخدم إذا كنت تريد طباعتها مرة آخري فضغط على الحرف Y , أما إذا كنت لا تريد فضغط على الحرف N ,
ضغتك على الحرف N سيعني بالضرورة خروجك من البرنامج ..
أول ما نفكر به هو عمل الحلقة التكرارية .. while , لماذا إخترتها .. لأننا كما قنا تستخدم عند عدم معرفة عدد مرات التكرار التي سيجريها المستخدم. فأنا لا أعلم متى يريد هو الخروج من البرنامج.
يمثل هذا حجر الأساس.
كود:
#include
using namespace std;
int main()
{
bool quite =false;
while (!quite)
{
}
}
using namespace std;
int main()
{
bool quite =false;
while (!quite)
{
}
}
وبعدها ,, طلبنا من البرنامج أنه عند الضغط على y أو Y سيقوم بالطباعة الأرقام, وإلا فإنه سيخرج من البرنامج.
كود:
#include
using namespace std;
int main()
{
bool quite =false;
char enter = '0';
while (!quite)
{
cout << "Print the number for 1 to 10" << endl;
cout << "Enter Y for Yes, Enter N for No: ";
cin >> enter;
if (enter == 'Y' || enter == 'y')
{
for (int i =0;i<= 10;i++)
{
cout << i << " " << endl;
}
}
else
{
cout << "Exting..." << endl;
quite = true;
}
}
}
using namespace std;
int main()
{
bool quite =false;
char enter = '0';
while (!quite)
{
cout << "Print the number for 1 to 10" << endl;
cout << "Enter Y for Yes, Enter N for No: ";
cin >> enter;
if (enter == 'Y' || enter == 'y')
{
for (int i =0;i<= 10;i++)
{
cout << i << " " << endl;
}
}
else
{
cout << "Exting..." << endl;
quite = true;
}
}
}
الـ Arrays (المصفوفات)
وجدت لتحل لنا عدة مشاكل من بينها, لنفرض أني أريد حجر 100 متغير, ففي الوضع الطبيعي سيكون هذا العمل كالتالي:
Int x1
Int x2
Int x3
Int x4
….
….
Int x100
كما نلاحظ بأن هذا الأمر غير منطقي. وأيضاً في حال أردت ترتيب هذه العناصر أو معاملتها كقطعة واحدة فلت أستطيع ذلك إلا بإستخدام المصفوفة.
أقصد بي جملة معاملتها كقصطهة واحدة, لأنه في حالة التصريح عن مصفوفة فإن المترجم يقوم بحجز مكان واحد بحجم المصفوفة, ويكون توضع هذه العناصر بجاننب بعضهات البعض.
وجدت لتحل لنا عدة مشاكل من بينها, لنفرض أني أريد حجر 100 متغير, ففي الوضع الطبيعي سيكون هذا العمل كالتالي:
Int x1
Int x2
Int x3
Int x4
….
….
Int x100
كما نلاحظ بأن هذا الأمر غير منطقي. وأيضاً في حال أردت ترتيب هذه العناصر أو معاملتها كقطعة واحدة فلت أستطيع ذلك إلا بإستخدام المصفوفة.
أقصد بي جملة معاملتها كقصطهة واحدة, لأنه في حالة التصريح عن مصفوفة فإن المترجم يقوم بحجز مكان واحد بحجم المصفوفة, ويكون توضع هذه العناصر بجاننب بعضهات البعض.
كود:
float arr[100];
لنأخذ مثال لطباعة خمسة أرقام بداخل المصفوفة ..
كود:
#include
using namespace std;
int main()
{
float arr[5] = {10,20,30,40,50};
for (int i =0;i< 5;i ++)
{
cout << arr[i] << " " << endl;
}
}
using namespace std;
int main()
{
float arr[5] = {10,20,30,40,50};
for (int i =0;i< 5;i ++)
{
cout << arr[i] << " " << endl;
}
}
نلاحظ في المثال, حددنا حجم المصفوفة بي الرقم (5) , ومن ثم صرحنا بخمسة أرقام هم 10 , 20 , 30, 49, 50 , ومن أجل طباعة هذه الأرقام الخمس, قمنا بوضعها بداخل جملة تكرارية وهي الـ for
لنأخذ الآن مثال آخر وهو عن جمع مصفوفتين .
لنأخذ الآن مثال آخر وهو عن جمع مصفوفتين .
كود:
#include
using namespace std;
int main()
{
float arr1[5] = {4,20,22,53,5};
float arr2[5] = {3,6,91,3,11};
for (int i =0;i< 5;i ++)
{
cout << arr1[i] + arr2[i] << " " << endl;
}
}
using namespace std;
int main()
{
float arr1[5] = {4,20,22,53,5};
float arr2[5] = {3,6,91,3,11};
for (int i =0;i< 5;i ++)
{
cout << arr1[i] + arr2[i] << " " << endl;
}
}
--------------
هناك نوع آخر من المصفوفات يسمونه Multidimensional Arrays
وموضوعة بسيط, يستخدم بكثرة عند التعامل مع الـ Martix ,
هناك نوع آخر من المصفوفات يسمونه Multidimensional Arrays
وموضوعة بسيط, يستخدم بكثرة عند التعامل مع الـ Martix ,
كود:
#include
using namespace std;
int main()
{
int matrix[3][4] =
{
{1,2,3,4},
{5,6,7,8},
{9,1,2,3}
};
//Row
for (int i =0;i< 3;i ++)
{
//Column
for (int j =0;j < 4;j++)
{
cout << matrix[i][j] << " " ;
}
cout << endl;
}
}
using namespace std;
int main()
{
int matrix[3][4] =
{
{1,2,3,4},
{5,6,7,8},
{9,1,2,3}
};
//Row
for (int i =0;i< 3;i ++)
{
//Column
for (int j =0;j < 4;j++)
{
cout << matrix[i][j] << " " ;
}
cout << endl;
}
}
نلاخظ بأن المدى الأول وهو الرقم 3 يمثل عدد الصفوف, والثاني وهو العدد 4 يمثل عدد الأعمدة.
ومن أجل طباعة هذه المصفوفة نقوم بعمل جملتان للـ for الأولي تتولي أمر الصفوف والأخرى للأعمدة.
--------------------------
نأتي إلى الأسئلة:
الأول:
أكتب برنامج, يسال المستخدم بأن يضغط على الرقم 1 لكتابة إسمة, والرقم 0 للخروج من البرنامج .. أنظر إلى الشكل بالأسفل.
الثاني:
أكتب برنامج يقوم بسؤال المستخدم كم عدد الأرقام التي يريد أن يدخلها , ومن ثم يقوم بحساب المتوسط الحسابي لهذه الأرقام...
قانون: المتوسط الحسابي: مجموع الأرقام / عددها.
أنظر إلي الشكل بالأسفل.
الثالث:
أكتب برنامج يقوم بجمع two matrix وهم
ومن أجل طباعة هذه المصفوفة نقوم بعمل جملتان للـ for الأولي تتولي أمر الصفوف والأخرى للأعمدة.
--------------------------
نأتي إلى الأسئلة:
الأول:
أكتب برنامج, يسال المستخدم بأن يضغط على الرقم 1 لكتابة إسمة, والرقم 0 للخروج من البرنامج .. أنظر إلى الشكل بالأسفل.
الثاني:
أكتب برنامج يقوم بسؤال المستخدم كم عدد الأرقام التي يريد أن يدخلها , ومن ثم يقوم بحساب المتوسط الحسابي لهذه الأرقام...
قانون: المتوسط الحسابي: مجموع الأرقام / عددها.
أنظر إلي الشكل بالأسفل.
الثالث:
أكتب برنامج يقوم بجمع two matrix وهم
كود:
A = 3 4 5
5 3 6
5 3 6
كود:
B = 9 7 2
1 4 7
1 4 7
يعني ستكون 9 + 3
و الـ 4 + 7
والـ 5 + 6
وهكذا...
الرابع:
أطلب من المستخدم إدخال عشرة أرقام ومن ثم رتب هذه الأرقام مرة تصاعدي ومرة تنازلي.
حاول أن تحل هذه الأسئلة بشتى الطرق, أن أعرف بأن بعضها لم أشرحة ولأكن تستطيع مع المحاولات أن تقترب من الحل.
وصدقني بأن السي بلس بلس تريد الكثير من التطبيق لكي تتعلمها, فلذلك حاول وحاول, وأي غموض سأوضحة لك.
إنتهينا ...
و الـ 4 + 7
والـ 5 + 6
وهكذا...
الرابع:
أطلب من المستخدم إدخال عشرة أرقام ومن ثم رتب هذه الأرقام مرة تصاعدي ومرة تنازلي.
حاول أن تحل هذه الأسئلة بشتى الطرق, أن أعرف بأن بعضها لم أشرحة ولأكن تستطيع مع المحاولات أن تقترب من الحل.
وصدقني بأن السي بلس بلس تريد الكثير من التطبيق لكي تتعلمها, فلذلك حاول وحاول, وأي غموض سأوضحة لك.
إنتهينا ...