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

مشاهدة النسخة كاملة : تعلم ++c مع مية هلا


mss cool
02-05-2008, 10:17 AM
بسم الله الرحمن الرحيم
ابدء اليوم بهذه المادة لأني وعدتكم بها بتاريخ 8/2/2008 ولكن لن استطيع بذلك التاريخ التواجد على المنتدى على الأغلب ولذلك هذا أول درس بالمادة
مادة c++
لغة من لغات البرمجة تعتمد على مترجم compiler الذي ينفذ النص البرمجي على انه برنامج تطبيقي _x.exe _ وتعتمد على الخورازميات .
وسندرس الأقسام التالية :
قسم النظري
قسم العملي
__________________
قسم النظري
أولا:التحولات والأنماط
*التمحولVARIABLE: هو عبارة عن حجم من الذاكرة فارغ في قيمته الأفتراضية _ لم يسند له قيمة ابتدائية _ ولكل متحول نمط معين من القيم *جدول اللأنماط DATA TYPE:

اسم النوع يستعمل لتخزين الحجم byte الدقة أمثلة عن القيم
char أحرف 1 ________ 'a' , '3' , '?'
Short ارقام صحيحة قصيرة 2 ________ 38 , 68-
int ارقام صحيحة عادية 2مع نظام 16 بت
4 مع نظام 32 بت ________ 255 , 800-
long ارقام صحيحة طويلة 4 ________ 2456588
5864515-
float ارقام حقيقية قصيرة 4 5 أعداد 3.6 , 15.5-
double ارقام حقيقية عادية 8 15 عدد 865454.54
45845.689-
Long double ارقام حقيقية طويلة 10 19 عدد 214687545378878 مثال:________________________________________ _
Int n=5; Double d=5.31; Flout x=3.2; Char y;
char m='k';
تفسير السطور
مثال
السطر الأول : المتحول المسمى (n) من النمط (int) متحول لا يقبل إلا يكون قيمة صحيحة قواعد لكتابة سطر المتحول تستخدم الأحرف الأنكليزية لتسمية المتحولات وذلك حسب القاعدة التالية ; المتحول مسافة المتحول وأما أن يسند أو أن يترك المتحول دون اسناد لقيمة ابتدائية على ان يسند ضمن البرنامج نقصد بالأسناد أي جعل قيمة خانة الذاكرة التي حجزت باسم متحول تساوي القيمة وذلك بواسطة معامل اسناد (=) ويجب مراعاة الشروط التالية ترك مسافة بين المتحول و النمط جعل اشارة (,) بعد كل متحول عند اسناده لنمط واحد أو اسناد كل منها على حدا

مثال:
Int z,x,n,m;
أو Int z; Int x; Int n; Int m;
قواعد لإدخال متحول : لا يمكن تعريف متحولين بنفس الأسم لغة سي بلس بلس حساسة لحالة الأحرف (MARK غير mark ) ولو كان حرف واحد يجب أن لا يحوي المتجول على الكلمات المحجوزة هي صغيرة حصرا (IF) يجب أن لا يحتوي المتحول على فراغ (MARK+) يمكن أن يسمى المتحول بأحرف كبيرة وصغيرة أما الكلمان المحجوزة والأنماط بأحرف صغيرة
ملاحظة هامة جداجداااااااااااااااااا:
المتحولات نوعان
متحول عام : متحول معرف من قبل جسم الوظيفة الرئيسية التوجيهية main يحجز له مكان دائم في الذاكرة وإذا لم يعطى قيمة يأخذ قيمة الصفر
متحول محلي :
هو متحول معرف في أي مكان عدا مكان المتحول العام يحجز له مكان مؤقت في الذاكرة ويحجز له مكان بالذاكرة عند دخوله في مجال تعريفه ويحرر عند انتهاء هذا المجال ويأخذ قيمة عشوائية إن لم يعطى قيمة

http://www.100hla.com/up/uploads/2288466524.bmp (http://www.100hla.com/up)

متحول العام m/c
متحول محلي دونهما
كلما كان المتحول محلي أكثر كان يعرف المتحولات الأعلى
____________________________________

ثانيا :المعاملات
* معامل الأسناد = ونسند فيه المتحولات والعمليات Int m=8;
*معاملات:

العملية الرياضية العملية الرياضية في c++
+ +
- -
÷ /
× *
+1 ++
-1 --
A= A+X A+=X أو أي عملية
العملية المقارنة العملية المقارنة c++
أصغر <
أكبر >
أصغرأو يساوي <=
أكبر أو يساوي >=
العملية المنطقية العملية المنطقية c++
OR ||
AND &&
NOT !!
باقي القسمة %
لا يساوي =!
يساوي = =



ترتيب حسب الأولوية :
من الأعلى لأدنى وفي المجال الواحد من اليسار لليمين
( )
%...../......*
-..............+
!=..........= =.........>=......<=......>......<
!!......||......&&
=

حالات معاملات الزيادة و النقصان:
int a = 4, b ;
b =a++ ;
cout << "a=" << a << "\n";
cout << "b=" << b<< "\n";

نتيجة :
a=4
b=5
press any key to contniue


int a = 4, b ;
b =++a ;
cout << "a=" << a << "\n";
cout << "b=" << b<< "\n";

نتيجة :
a=4
b=5
press any key to contniue
فمالفرق بين الكودين السابقين :
b =a++ ;
b =++a ;
الأول : اسند a لقيمة 4 ثم اجعل b يساوي a ثم زده واحد
a=4.........b=a=4........b=4+1.........b=5
الثاني :اسند a لقيمة 4 ثم اجعل b يساوي a بعد زيادة a واحد
a=4......... a=4+1.........b=a=5



معاملات الهروب :
فراغا ت أفقية \t مؤشر بداية سطر جديد \r
ادراج سطر جديد\n
اصدار صوت تنبيه\a
حذف خلفي \b
ملاحظة:
تكتب معاملات الهروب ضمن
' \t '

دائما عندما نريد ادارج حرف يكون ضمن اشارات فردية ' ' أما عندما يكون حرفين فأكثر فإن بيئة c++ لا تعامل معها إلا إذا كانت ضمن إشارات مزدوجة " "


ثالثا: آلية التفكير :

خوارزمية كود بسيط :
الخوارزمية عبارة عن منهجية تفكيرمتسلسلة منطقيا توفر علينا أخطاء ممكن ارتكابها أثناء كتابة الكود

قواعد مهمة
1-جميع الفروع في التعليمات نجعل لها ازاحة أثناء كتابة الكود
2-النصوص الحرفية متل كلمة ناجح يجب وضعها ضمن " " حتى يفهمها المترجم أنها نص


جمع عددين :
_ احجز مكان بالذاكرة بإسم X
_ احجز مكان بالذاكرة بإسم Y
_ ادخل قيمة إلى X
_ ادخل قيمة إلى Y
_ اجمع قيمة موجودة في X إلى Y
_ اطبع ناتج الجمع
_ احجز مكان بالذاكرة بإسم result
_ result = X+Yحساب مساحة دائرة :
_احجز مكان بالذاكرة بإسم r
_ادخل قيمة إ لى r
_احجز مكان بالذاكرة بإسم result
result = r*r*Π
اطبع result
وإلا
اطبع " القيمة المدخلة سالبة "

تحديد العدد إن كان فردي أم زوجي :
_ احجز مكان بالذاكرة بإسم x
_ ادخل قيمة إلى x
_إذ كان باقي قسمة x على 2 يساوي الصفر
اطبع " العدد زوجي "
وإلا
اطبع " العدد فردي "

حساب متوسط ثلاث أعداد:
_احجز أماكن بالذاكرة بإسم x , y , z
_ ادخل قيم إلى x ,y ,z
_ اطبع x+y+z)/3)

ويمكن كتابة الكود السابق بالطرق التالية :
۞
_احجز أماكن بالذاكرة بإسم sum=0, x , y , z
_ ادخل قيم إلى x ,y ,z
_ sum= x+y+z
_ اطبعsum/3

۞
_احجز مكان بالذاكرة بإسم x
_احجز مكان بالذاكرة بإسم y
_احجز مكان بالذاكرة بإسم z
_ ادخل قيمة إلى x
_ ادخل قيمة إلى y
_ ادخل قيمة إلى z
_ اطبع x+y+z)/3)

۞
_احجز أماكن بالذاكرة بإسم sum=0, number
_
ادخل قيمة إلى number
Sum = number + sum
ادخل قيمة إلى number
Sum = number + sum
ادخل قيمة إلى number
Sum = number + sum
_ اطبعsum/3

۞
احجز أماكن بالذاكرة بإسم sum=0, number
_كرر بعدد مساوي لـ 3
ادخل قيمة إلى number
Sum = number + sum
_ اطبعsum/3

۞
احجز أماكن بالذاكرة بإسم counter=0 ,sum=0, number
_كرر طالما counter أصغر من 3
ادخل قيمة إلى number
Sum = number + sum
Counter=counter+1
_ اطبعsum/3
رابعا :تعليمات أساسية :

من الخوارزميات السايقة أن جميع الكودات تبدأ بأدخال بيانات بأمر " ادخل " ونظهر النتائج بأمر " اطبع "
وفي المترجم أثناء كتابة الكود يكون البديل
تعليمة الأدخال :

cin >> x ; يعني السطر السابق ادخل قيمة إلى Xوتبقى قيمته عشوائية حتى يسند له قيمة

cin >> x = 5 ; يعني السطر السابق ادخل قيمة إلى X واجعل قيمة المتحول تساوي 5


تعليمة الأخراج :

cout <<x ; يعني السطر السابق اطبع قيمة المتحول X

cout <<x =5 ;

يعني السطر السابق اطبع قيمة المتحول الذي يساوي 5

cout << "x" ; يعني السطر السابق اطبع حرف X

cout << "x"<<endl ;

يعني السطر السابق اطبع حرف X وأنزل مؤشر المترجم سطر
http://www.100hla.com/up/uploads/b3c58e217a.bmp (http://www.100hla.com/up)

آلية تشكيل الكود:

كود بسيط :
برنامج يقوم بإضافة 3 للعد المدخل ثم يطبعه
احجز مكان بالذاكرة بإسم x ...........
int x ;
ادخل قيمة إلى x ........................
cin <<x ;
قيمة x = x +3 ..........................
x = x + 3 ;
اطبع قيمة x ..............................
cout <<x ;

ولكن حتى يحجز ويخرج ويعالج المترجم البيانات يجد اسناد هذه التعليمات إلى مكتبة خاصة بهما
http://www.100hla.com/up/uploads/d65f8aed88.bmp (http://www.100hla.com/up)

ويكتب الكود كما يلي :
الأظهار:
بحالة أدخل المستثمر 2 يكون الأظهار
http://www.100hla.com/up/uploads/8f4af159ec.bmp (http://www.100hla.com/up)


رابعا :كلمات محجوزة


if_if /eles
while_ do....while
break_countinue
switch
for
functions
arrays

وسندرسها بالتفصيل:
بنى الشرطية If.... if /eles:
أولا:تعليمة الشرطية IF:

if ()
{
if_ body
}


مثال:ولنفرض أننا نريد معرفة اذا كان معدل طالب ناجح أم راسب
نقول إن كان المعدل فوق 60 بهذه المادة كان نا جحا

نقاش المثال
المستثمر : 45
البرنامج : ينفذ انهاء

المستثمر : 66
البرنامج : يطبع ناجح

المستثمر :59.5
البرنامج : ينفذ انهاء

الخورازمية الكود :

_احجز مكان بالذاكرة باسم X
_ضع فيه قيمة X
_اذا كان X أكبر أو يساوي 60
اطبع " ناجح "
_ انهي البرنامج

ترجمة تعليمة السابقة :
1- اذا كان X أكبر أو يساوي 60 = شرط
2- اطبع " ناجح " = جسم الشرط ينفذ بحالة كان الشرط محقق

فلوشارت الكود :

ملاحظة :
تعليمات الفلوشارات الرئيسية هي
http://www.100hla.com/up/uploads/e83a16d854.bmp (http://www.100hla.com/up)
الفرعية تعليمة الشرطية
http://www.100hla.com/up/uploads/d4913efc27.bmp (http://www.100hla.com/up)

بنى الشرطية If.... if /eles:
أولا:تعليمة الشرطية IF....ELES:

if ()
{
if_ body
}
eles
{
eles_body
}


مثال:ولنفرض أننا نريد معرفة اذا كان معدل طالب ناجح أم راسب
نقول إن كان المعدل فوق 60 بهذه المادة كان نا جحا وإلا راسب

نقاش المثال
المستثمر : 45
البرنامج : يطبع راسب

المستثمر : 66
البرنامج : يطبع ناجح

المستثمر :59.5
البرنامج : يطبع راسب

الخورازمية الكود :

_احجز مكان بالذاكرة باسم X
_ضع فيه قيمة X
_اذا كان X أكبر أو يساوي 60
اطبع " ناجح "
إلا
اطبع " راسب "
_ انهي البرنامج

فلوشارت الكود :
http://www.100hla.com/up/uploads/b996d4ab89.bmp (http://www.100hla.com/up)

بنى التكرارية for:

For (1 ; 2 ; 3)
{
for_body
}

معاني الترقيم السابق:
1- تعني نقطة بداية التي ينطلق منها البرنامج بالترقيم
2- تعني شرط الذي يحدد امكانية استمرار بالتكرارجسم الـFOR
3- تعني مقدار التكرار بكل عدة

فلوشارت الحلقة التكرارية :

http://www.100hla.com/up/uploads/387e393823.bmp (http://www.100hla.com/up)

مثال :طباعة جملة _ mss cool _ خمس وعشرون مرة مع طباعة الرقم الموافق للعبارة المطبوعة

#include<iostrem.h>
main()
{
for(int i =1 ; i <= 25 ; i++)
{
cout << i << " MSS COOL" << endl;
}
}

ترجمة الكود السابق :

كرر جسم الحلقة تكرارية من القيمة 1 حتى القيمة 25 وذلك وفق المنهجية التالية
أول قيمة 1 أصغر أو تساوي 25 نفذ الجسم _ يطبع mss cool _ويزيد i واحد
--- صار i=2
ويستمر في الطباعة ثم زيادة i حتى تصبح القيمة 26 ينكسر شرط الحلقة فينهي البرنامج الحلقة

نقاش حالات for۞
for(int i=0 ; i<3 ; i++ )
{
cout << "Mss cool "<<endl;
}

نتيجة :
Mss cool
Mss cool
Mss cool
press any key to contniue

۞
for(int i=0 ; i<3 ; i+2 )
{
cout << "Mss cool "<<endl;
}

نتيجة :
Mss cool
Mss cool
press any key to contniue

۞
for(int i=3 ; i<0 ; i--)
{
cout << "Mss cool "<<endl;
}

نتيجة :لا ينفذ لتنقاض البيانات


۞
for(int i=3 ; i>0 ; i--)
{
cout << "Mss cool "<<endl;
}

نتيجة :
Mss cool
Mss cool
Mss cool
press any key to contniue

۞
int i=0;
for(; i<3 ;)
{
cout << "Mss cool "<<endl;
i+2;
}

نتيجة : لا يوجد فرق
Mss cool
Mss cool
press any key to contniue

mss cool
02-18-2008, 09:41 AM
بسم الله الرحمن الرحيم
نكمل بعون الرحمن الجزء الثاني من الموضوع بعد إعطاء الوقت الكافي للأطلاع على الجزء الأول والأستفسار عنه
طبعا أخواني مهندسي الشبكات والحواسيب ما دخلتوا بالجو بشكل كامل بس نصيجة تدرسوا الموضوع قبل حضور العملي
ولدينا القائمة التالية التي سنكملها لنصل لمستوى متوسط بالبرمجة

while_ do....while
break_countinue
switch
arrays
وثم القسم العملي
البنية التكرارية while

While(condition)
{
While_body
}

تسمح هذه البنية بتنفيذ مجموعة من التعليمات _ جسم _ طالما ان الشرط المرفق بتعليمة while محقق
ملاحطة:
وبحالة لم يكن محقق لا بنفذ ابدا أما بحالة ورود التعليمة بدون جسم ينتج عدم انتهاء التكرار
مثال:
احسب قيمة عاملي عدد موجب تماما يدخله المستثمر
خوارمية الحل:
_احجز مكان بالذاكرة بإسم 1n , i=1 , fact=
_اطبع " ادخل الرقم الذي تريد حساب العاملي له "
_ادخل قيمة لـ n
_كرر طالما ان العدد موجب تماما
Fact=fact*I
I++
_اطبع " النتيجة "
_اطبع fact
_ انهي البرنامج
ملاحظات حول الية التفكير:
1. نستخدم متحولات من بيئة السؤال :
اقصد بذلك n = number وكذلك fact = factorial لأن من سمات البرنامج الناجح ان يكون واضح
2. حجزت قيمة i تساوي الواحد لسبب رياضي ان علاقة العدد العاملي تحسب كما يلي
N! = 1*2*3*….*(n-2)*(n-1)*n } ={ أي كرر ضرب العدد ( (I بالتالي طالما ان( (I اصغر او يساوي العدد n
كود الحل:


#include <iostream.h>
Void main ()
{
Double n ,fact =0;
Cout <<" enter an positive number to find its factorial: ";
Cin >> n ;
Int i=1
While ( I <= n)
{
Fact = fact * I ;
I ++ ;
}
Cout << " the result :" << endl;
}

ملاحظات حول كتابة الكود :
1.اثناء كتابة الكود عدم اهمال الأقواي لأنها دليل المترجم لفهم الكود ويفضل بكتابة كل تعليمة فتح واغلاق الكود فورا وثم كتابة الجسم
2.تذكرة : يمكن كتابة
Fact *= I ; بدل fact = fact * I ; ولذلك لحفظ وقت المبرمج وسهولة الكتابة لا أكثر
3.في حالة كتب
Cout << " n! = "<< fact<<endl;
الأظهار:
N! = x

Cout << " n! =" << endl;
Cout<< fact << endl ;

Cout<< fact << endl ;
الأظهار:
N!=
x


Cout<< " n! =" ;
Cout << fact ;

Cout << fact ;
الأظهار:
N!=
X
هذه هي الفروقات بين الية اعطاء امر الطباعة وهي هامة في التعامل مع المستثمر
فلو شارت للكود :
http://www.100hla.com/up/uploads/a02b3fdadb.bmp (http://www.100hla.com/up)
البنية التكرارية do_ while :
تشبه هذه البنية البنية التكرارية while إلا أن الفرق while تتحقق من الشرط وثم تنفذ الجسم أما do_ while ينفذ الجسم مرة على الأقل قبل تنفيذ البرنامج
Do
{
Do while_ body
}
While(condition)

While(condition)
مثال توضيحي :
اطيع الرقم help بحالة ادخل المستخدم الرقم 1
بحالة while :

While ( n = 1 )
{
Cout << "help ";
}

بحالة do_while :

do
{
Cout << "help ";
}
While (n = 1)

بحالة ادخل المستثمر الرقم 4 يكون الإظهار:
بحالة اولى :لا شيء إذ يتوقف لعدم تحقق الشرط من البداية
بحالة تانية : يطبع help ثم يتوقف لأن الشرط لم يتحقق بعد تكرار الحلقة لمرة واحدة
و يمكن التوضيح أكثر بحالة فلو شارت :
http://www.100hla.com/up/uploads/391beb5543.bmp (http://www.100hla.com/up)
أما do_ while
http://www.100hla.com/up/uploads/e94ec979af.bmp (http://www.100hla.com/up)
مثال:برنلمج يقيس ضغط الدم للمريض ويطبع القيمة اذا كانت بالحد الطبيعي (18-8) ويطبع رسالة تحذير بحالة كان خارج الحد الطبيعي
خوارزمية الحل :
_احجز قيمة بالذاكرة بإسم ضغط الدم
_كرر
* اطبع " ادخل قيمة ضغط الدم "
*ادخل القيمة ضغط الدم
* اذا كانت أكبر من 8 واصغر من 18
**اطبع " الحد الطبيعي "
** وإلا اطبع " !!!!! "
بحالة كانت القيمة أكبر من 18 أصغر من 8
_انهي البرنامج
كود الحل:

#include<iostream.h>
Void main()
{
Int blood;
Do
{
Cout<<"enter the blood pre :"<<endl;
Cin >> blood;
If (blood>8 && blood <18)
{
Cout <<"nuturl value"<<endl;
}
Else
Cout << " !!!!! beep";
}
While(blood>8 && blood <18)
}


تذكرة :
تكرار نحدده حسب الشرط وألية التكرار ونوع التكرار المطلوب بالسؤال
For .... تكرر بشرط بيان العدد هو الذي يعد الشرط
While ... تكرار شرطي يكسره الشرط الذي ورد بالسؤال
Do_while ... تكرار شرطي يتحقق مرة وحدة وإن كسر الشرط الذي ورد بالسؤال

التعامل مع الحلقات بواسطة break_countinue :
الفرق بين التعليمتين
Break : ترجم بالحلقة حتى تصل لبريك ثم اخرج من الحلقة لتنفذ ما بعدها_ اكسر الحلقة عند بريك
Countinue : ترجم الحلقة وعندما تصل لكونتونيو انهي الحلقة وابدء بما بعدها
تعليمة switch :هي اجمل تعليمة تعلمتها من استاذي القدير محمود حيدر تتميز بسهولة التعامل وتقديم خيارات متعددة

Switch ( chois )
{
…….;
…….;
Break;
…….;
…….;
Break;
Default :
{
Default _ body;
}
}

فبدل كتابة أربع تعليمات شرطية وبتقديم المستثمر اختياره لتحدد التعليمة المطلوبة نستخدم تعليمة سويتش التي تستقبل اختيار المستثمر وتحدد من أربع فروع الجسم التعليمة المطلوبة وتنفذ
لتوضيح الفكرة نأخذ مثال آلة حاسبة تقدم أربع خيارات_ العمليات الأساسية بالحساب_ ويحدد المستثمر أحد الخيارات الموجودة فيقوم البرنامج بتنفيذه
http://www.100hla.com/up/uploads/96844201d0.bmp (http://www.100hla.com/up)
خوارزمية الحل :

_احجز مكان بالذاكرة بإسم x1 , x2 ,n
_اطبع " ادخل الرقم الأول "
_ادخل قيمة x1
_اطبع " ادخل الرقم التاني "
_ادخل قيمة x2
_اطبع "ادخل العملية التي تريد اجرائها "
_ادخل قيمة n
_
*بحالة كانت +
**اطبع " النتيجة"
**اطبع x1+x2
*بحالة كانت –
**اطبع " النتيجة"
**اطبع x1-x2
*بحالة كانت /
**اطبع "النتيجة"
**اطبع x1/x2
*بحالة كانت *
**اطبع " النتيجة "
**اطبع x1*x2
وإلا
*اطبع " عليك الأختيار ضمن العمليات الأربعة "
_انهي البرنامج
كود الحل :


#include<iostream.h>
Void main()
{
Int x1 , x2 ;
Char n ;
Cout <<" enter the first number"<<endl;
Cin>> x1;
Cout << " enter the second number "<<endl;
Cin>> x2 ;
Cout << " enter the operation that you want "<<endl;
Cin >>n;
Switch ( n )
{
Case '+' :
{
Cout << " the result "<<endl;
cout << x1 + x2 << endl;
break;
}
Case '-' :
{
Cout << " the result "<<endl;
cout << x1-x2<<endl;
break ;
}
Case ' / ' :
{
Cout << " the result "<<endl;
Cout << x1/ x2<< endl;
Break;
}
Case ' * ' :
{
Cout << " the result "<<endl;
Cout<< x1*x2;
Break;
}
Default :
{
Cout<<"you should enter one of the basic operation "<<endl;
}
}

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

gege
04-15-2008, 08:42 AM
يسلموا كتير أخت مس كول
أنا كنت مفكر حالي فهمان ++c
بس بجد الأساسيات مهمة جدا

بس عندي ملاحظة على موضوعك
أنت رافعة الصور bmp ياريت لو تحاولي ترفعيهون gif بكونو أصغر حجم وأسرع تحميل مشان يلي عم يتصفحوا الموقع على الـ dial up
شوي بطول الصفحة لتبين


تقبلي نقدي:cool:

mss cool
04-16-2008, 10:43 PM
بداية انا بدي اشكرك اخي جي جي على تفاعلك ...
أخي الموضوع كان بداية يفترض لتعاون اكبر بين طلاب في المجال البرمجي بكل احوال الموضوع رح يتم انعاشه من جديد لأي سؤال من قبل الطلاب