قائمة المدونات الإلكترونية

الجمعة، 29 أبريل 2011

عمليات التفرع - الانتقال والمصفوفات Branching & Arrays

عمليات التفرع باستخدام جملة iF 
- عمليات الانتقال أو الذهاب goto 
- المصفوفات arrays 



يرجي الاطلاع علي الجديد في هذه العمليات وارسال التعيق المناسب بعد الاتفاق مع زملائك في المجموعة
البحث عن حالات مختلفة لتنفيذ ذلك
حدد الأدوار الخاصة بكل طالب في المجموعة


10 التعليقات:

أحمد الدسوقى محمد الدسوقى الزعترى يقول...

المصفوفات Arrays
الإعلان عن المصفوفات:-
مثال عن استخدام المصفوفات:
السلاسل Strings
مكتبة دالات السلاسل
1/strlen( ):-
2/ strcpy( ):-
3/ strcat( ):-
4/ strcmp( ):-
تمرير المصفوفات كوسائط للدوال Passing Arrays to Functions
المصفوفات متعددة الأبعاد Multidimensional Arrays
المؤشرات Pointers
عوامل المؤشرات:-
1/ عامل العنوان &:-
2/ العامل * :
عامل المواربة indirection.
مؤشرات إلى void:-
المؤشرات في استدعاء الدوال
1- التمرير بالقيمة call-by-value .
2- التمرير بالمرجع call-by-reference .
3- التمرير بالمرجع مع مؤشر call by reference with pointer arguments
المؤشرات والمصفوفات
المؤشرات والسلاسل
استعمال العوامل الحسابية مع المؤشرات
إدارة الذاكرة باستعمال العوامل new و delete:-
العامل new:-
العامل delete:-
المؤشر This:

El Z3try

غير معرف يقول...

المصفوفات ( Arrays ) :
هذا الدرس يحكي عن المصفوفات في اللغة C++

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

مثال صغير: عندما تريد ان تتعامل مع علامات صف دراسي مكون من 40 طالب .. لا يعقل ان تنشيء اربعين متغير من النوع int و تسميها stu1 stu2 stu3 الخ و الا فستصاب بصدمة نفسية عند الخطأ في الطالب الذي يحمل رقم 32 ..

لذلك نحن نتعامل مع المصفوفات و التي يكون لها اسم واحد و انت تحدد الرقم الذي تريده في داخل المصفوفة ان اردت عن طريق متغير في داخل for loop و تسهل العملية على الكل.

طبعا هذا شرح اولي .. فان لم تستوعب كل ما قرأته لا تعود اليه لأنك ستستوعبه عن قريب ان شاء الله. و لكن قبل كل هذا لينا مراعاة التالي:
1. اسم المصفوفة هو مؤشر ثابت لأول عنصر فيها.
2. في الـ C++ يبدأ الترقيم دائما من الصفر.
3. يمكن للمصفوفات في الـ C++ ان تصل الى 7 ابعاد مع عدد غير محدد من المتغيرات.

.................................................. ...........................

الان .. كيف يمكننا ان ننشيء المصفوفة من بعد واحد من نوع int و تحوي 40 موقع مستقل في الذاكرة؟
int array[40]; // that's a 40 variable inside the array
و بكل بساطة نتبع الاسم الذي نريده بشيء يسمى brackets و هو [ ] .
و يكون في الداخل رقم يشير الى عدد المواقع التي نريد حجزها للمصفوفة.

هذه المصفوفات لها استخداماتها في مجالات الرياضيات و الرسم باستخدام الحاسوب و غير ذلك..

و لتسهيل شرحها.. فان ما ينطبق على بعد ينطبق على بعدين و ينطبق على ثلاثة و هكذا..

لحجز مصفوفة ذات بعدين الاول ذو 4 خانات و لكل منها 5 مواقع في البعد الثاني ( يعني مثل الجدول : صفوف و اعمدة)
نحتاج عندها لصنع مصفوفة ببعدين أحدهما 4 و الاخر 5 و لتكن العناصر كلها ارقام صحيحة:
int array2D [4] [5] ; // this is the array

و لحجز مصفوفة ثلاثية الابعاد يمكننا استخدام امر مثل:
int array3d [2][3][4]; // this is a 3D array

و للتعامل مع مثل هذه المصفوفات نستخدم تشكيلة من الجمل for متداخلة فيما بينها.

توثيق الجزء السابق :
www.cocsis.com/academic/t1881.html


المصفوفات Arrays
الإعلان عن المصفوفات:-
مثال عن استخدام المصفوفات:
السلاسل Strings
مكتبة دالات السلاسل
1/strlen( ):-
2/ strcpy( ):-
3/ strcat( ):-
4/ strcmp( ):-
تمرير المصفوفات كوسائط للدوال Passing Arrays to Functions
المصفوفات متعددة الأبعاد Multidimensional Arrays

توثيق الجزء السابق :
www.farahat-library.com › الرئيسية › سي ++

شيماء البيلى أحمد البيلى
الفرقة الرابعة
شعبة إعداد معلم الحاسب الالى

غير معرف يقول...

المصفوفات:
البدابة
أدخل س(وهي القيمة المراد البحث عنها)

ص=صفر (عداد تكراري يبدا من أول قيمة في المصفوفة ويتحرك إلى نهاية المصفوفة)

ع=صفر (عدد مرات وجود تلك القيمة المختارة داخل المصفوفة)

إذا كان س يساوي العنصر الذي رقمه ص اجعل
ع=ع+1

ص=ص+1

إذا كان ص أقل من عدد عناصر المصفوفة إذهب إلى الخطوة خمسة

إذا كان ع =صفر
إطبع (قيمة س غير موجودة في المصفوفة)

إذا كان ع لايساوي صفر
إطبع (قيمة س موجودة في المصفوفة ع من المرات)

النهاية



لتطبيق هذا الخوارزم بلغة C :#include "IOSTREAM.H"
void main (void)
{
int array[7];
int counter;
int value;
int isfound = 0;

for (counter = 0 ; counter < 7 ; counter ++)
{
cout << " array ["<< counter<<"]=";
cin >> array [counter];
}
cout << " nnENTER THE VALUE YOU WHONT TO SEARCH : ";
cin >> value ;
for (counter = 0 ; counter < 7 ; counter ++)
if ( value == array[counter])
{
cout << value << " FOUND "<
•مصفوفة السجلات :

لقد علمنا ان السجل نوع كأي نوع من انواع البيانات, لذلك من الممكن ان يكون السجل مصفوفة ايضاً و الطريقة سهله جداً كالتالي:


structure_name var[NUM] ;


فلو اخذنا السجل :


typedef struct
{
char name[30];
int age;
}data;


و اردنا ان نعرف مصفوفة من نوع data يسكون كالتالي:


data student[100] ;


طبعاً العدد 100 إختياري .
و نحن في السابق أخذنا نوع student من السجل data و سيكون سجل واحد و لكن هنا سيتضح اهمية السجلات فعندما عرفنا student كمصفوفة من نوع data أصبح كأنه لدينا 100 طالب و كل عنصر في المصفوفة عباره عن سجل بحد ذاته.
و للوصول إلى محتويات السجل نتبع الطريقة التاليه :

student[indix].name & student[indix].age

لكي نكتب برنامج يقوم بعمل محدد غالبا ما يتم استخدام أوامر التفرع التي تجعل المبرمج قادراً علي اتخاذ قرارات محددة وتؤدي أوامر التفرع والتكرار إلي تنفيذ برامج فرعية ويعتمد هذا التفرع أو التكرار عادة علي قيم محددة للمسجلات وذلك عن طريق بيارق الحالة Status Flags والتي تتأثر دائماً بآخر عملية تم تنفيذها.
سنقوم في هذا الفصل بتوضيح أوامر التفرع المختلفة وسنستخدمها في تمثيل عبارات التكرار والتفرع في اللغات العليا HIGH LEVEL LANGUAGE وذلك بإعادة كتابتها بلغة التجميع .
مثال للتفرع :
لتوضيح عمل أوامر التفرع سنبدأ بمثال يقوم بطباعة الحروف المستخدمة كلها وذلك عن طريق طباعة جدول الحروف ASCII Table كاملاً .
.Model Small
.Stack 100h
.Code
MAIN PROC
MOV AH , 2
MOV CX , 256
MOV DL , 0
Print_Loop:
INT 21h ;DL اطبع الحرف الموجود في المسجل
INC DL ; تجهيز الحرف التالي
DEC CX ; انقص العداد
JNZ PRINT_LOOP ; إذا لم ننتهي تفرع إلى العنوان المحدد
; DOS_EXIT
MOV AH , 4Ch
INT 21h
MAIN ENDP
END MAIN
يوجد لدينا عدد 256 حرف في IBM Character Set منها الحروف والأرقام والحروف الخاصة. لإظهار الحروف في الشاشة يتم استخدام الخدمة رقم 2 (إظهار حرف واحد فقط ) وذلك بوضع الرقم 2 في المسجل AH . تم استخدام المسجل DL ليحوى الحرف المطلوب طباعته لذلك تم وضع الرقم 0 فيه كقيمة ابتدائية وزيادته في كل مرة كما تم استخدام المسجل CX كعداد بقيمة ابتدائية 256 وإنقاصه في كل مرة حتى تصل قيمته إلي الصفر.
استخدم الأمر (Jump if Not Zero) JNZ وهو الأمر الذي يضبط الحلقة وذلك للتفرع إلى العنوان المحدد (Print-Loop) إذا تم إنقاص المسجل CX بواحد ولم تصل النتيجة إلى الصفر ويتم ذلك عن طريق استعمال بيرق الصفر ZF . فإذا كانت النتيجة لا تساوي صفر
(ZF= 0) يتم القفز إلى العنوان المحدد أما إذا كانت النتيجة تساوي الصفر (ZF= 1) يتم الاستمرار في البرنامج و العودة إلى نظام التشغيل باستخدام الخدمة رقم 4CH .
التفرع المشروط CONDITIONAL JUMP
الأمر JNZ السابق هو مثال لأوامر التفرع المشروط. و يكون أمر التفرع المشروط على الصورة
Jxxx destination-Label
فإذا تحقق الشرط المحدد يتم تفرع البرنامج إلى العنوان الموضح كمعامل للأمر، ويكون الأمر التالي هو الأمر الموجود في العنوان المحدد .أما إذا لم يتحقق الشرط يتم الاستمرار كالمعتاد إلى الأمر التالي مباشرة .
في حالة التفرع يجب أن يكون العنوان الذي سيتم التفرع عليه على بعد 126 قبل العنوان الحالي أو 127 بعد العنوان الحالي وسنرى فيما بعد كيفية التفرع إلى أماكن أبعد من هذا المدى .

التوثيق:
http://www.lessonsshare.com/blogs/ahmed-3/%C7%E1%CA%DD%D1%DA-%E6%CA%DA%E1%ED%E3%C7%CA-%D6%C8%D8-%C7%E1%C7%E4%D3%ED%C7%C8-flow-control-instructions-68/
تعليق:
سالى الدالى…

غير معرف يقول...

أوامر التفرع
الأمر IF……..Then…….
الشكل العام لعبارة If..Then… هو
IF condition is True then
Execute True branch statements
End_IF
أي إذا تحقق الشرط يتم تنفيذ الأوامر وإذا لم يتحقق لا يتم تنفيذ شيء
مثال استبدل محتويات المسجل AX بالقيمة المطلقة لها.
أي إذا كانت محتويات المسجل سالبه (اقل من صفر) استبدلها بالقيمة الموجبة.
IF AX < 0 then
Replace AX with –AX
End_IF
بلغة التجميع تصبح
CMP AX , 0
JNL END_IF
; Then
NEG AX
END_IF:
2 – عبارة IF…THEN…..ELSE…..ENDIF
وهي تكون علي الصورة
IF Condition is True then
Execute True_Branch statements
ELSE
Execute False_Branch statements
End_IF
إذا تحقق الشرط يتم تنفيذ مجموعة من الأوامر وإذا لم يتحقق يتم تنفيذ مجموعة أخرى من الأوامر
مثال:-
افترض أن BL,AL يحتويان حروف (ASCII CODE) ، قم بعرض الحرف الأول بالترتيب (ذو القيمة الأصغر)
IF AL < = BL THEN
DISPLAY AL
ELSE
DISPLAY BL
END_IF
(تصبح بلغة التجميع) كالآتي :-
MOV AH,2
CMP AL,BL
JNBE ELSE_
MOV DL,AL
JMP DISPLAY
ELSE_:
MOV DL,BL
DISPLAY:
INT 21H
3- عبارة CASE
في حالة عبارة CASE يوجد أكثر من مسار يمكن أن يتبعه البرنامج والشكل العام للأمر هو :
CASE EXPRESSION
VALUE_1 : STATEMENT_1
VALUE_2 : STATEMENT_2
:
VALUE_N : STATEMENT_N
END_CASE
مثال:
إذا كان المسجل AX يحتوى على رقم سالب ضع الرقم –1 في المسجل BX فإذا كان AX به صفر ضع الرقم 0 في المسجل BX أما إذا كان المسجل AX به رقم موجب ضع الرقم 1 في المسجل BX.
الحل:
CASE AX
< 0 : PUT –1 IN BX
= 0 : PUT 0 IN BX
> 0 : PUT 1 IN BX
END_CASE
في لغة التجميع :
CMP AX, 0 ; AX افحص
JL NEGATIVE ; AX < 0
JE ZERO ; AX = 0
JG POSITIVE ; AX > 0
; Otherwise (Else) part will be here
NEGATIVE :
MOV BX,-1
JMP END_CASE
ZERO :
MOV BX,0
JMP END_CASE
POSITIVE :
MOV BX,1
END_CASE:
لاحظ أننا نحتاج فقط لـ CMP واحدة لأن أوامر التفرع لاتؤثر علي البيارق.
مثال : إذا كانت محتويات المسجل AL هي الرقم 1 أو الرقم 3 أطبع "0" ،وإذا كانت محتويات
المسجل AL هي الرقم 2 أو الرقم 4 أطبع ‘E’.
الحل :
CASE AL of
1,3ISPLAY “0”
2,4ISPLAY “E”
END_CASE
بلغة التجميع
CMP AL , 1
JE ODD
CMP AL , 3
JE ODD
CMP AL , 2
JE EVEN
CMP AL , 4
JE EVEN
JMP END_CASE
ODD: MOV DL , ‘O’
JMP DISPLAY
EVEN: MOV DL , ‘E’
DISPLAY: MOV AH ,2
INT 21H
END_CASE:
التفرع بشروط مركبة Compound Conditions
في بعض الأحيان يتم استعمال شرط مركب لعملية التفرع مثل
IF condition1 AND condition2
IF condition1 OR condition2 أو
حيث في الحالة الأولي تم استخدام الشرط "و" AND وفي الحالة الثانية تم استخدام الشرط "أو" OR
التوثيق:
http://www.lessonsshare.com
تعليق:
سالى الدالى

حياه اسماعيل يقول...

ثانياً : التفريغ : لتنفيذ سطر أو عدة سطور طبقا لشرط معين .أى تفريغ بعنى تغير مسار البرنامج . والتفريغ إما يكون مشروط أو غير مشروط

1) التفريغ المشروط
* جملة الشرط IF : تستخدم كلمة IF لتنفيذ جملة أو أكثر حسب شرط معين ( اختبار منطقى )
الصورة العامة
if ( condition )
statement ;
معناه إذا تحقق الشرط ( condition ) نفذ الجملة التالية أما إذا لم يتحقق الشرط فلا تنفذ هذه الجملة وانتقل إلى التى تليها
ملاحظة إذا كان هناك أكثر من جملة تريد تنفيذها مع if لابد من فتح قوس { قبل مجموعة الجمل والقوس } فى أخر الجمل كما يلى :
if ( condition )
{
statement 1 ;
statement 2 ;
}

* جملة if الشرطية المتداخلة : يمكن أن تتداخل جمل if فتأخذ الشكل التالى :
if ( condition )
if ( condition )
if ( condition )
وهذا معناه إذا تحقق الشرط الأول انظر إلى الشرط الثانى …. وهكذا

* الجملة الشرطية if …else : تستخدم لتنفيذ أحد اختيارين وتأخذ الصورة التالية :
if ( condition )
{
statement 1
}
else
{
statement 2
}
ومعناها إذا كان الشرط ( condition ) صحيح true نفذ الجملة الأولى ( statement 1 ) وإلا نفذ الجملة الثانية ( statement 2 ) أى الجملة الشرطية if ….else تستخدم لتحديد اختبار واحد من اختيارين ولا يمكن تنفيذ الاختيارين معا .

* الجملة الشرطية if …. else if : لتنفيذ خيار من مجموعة خيارات كمقارنة رقمين
الطريقة الأولى : باستخدام ثلاث جمل IF وفى كل جملة نضع أحد الشروط الثلاثة كما يلى : -
i = 5 ;
if ( i < 5 ) ;
printf ( “ i less than 5 " ) ;
if ( i = 5 )
printf ( " i equal to 5 " ) ;
if ( i > 5 )
printf ( “ i greater than 5 “ ) ;
وهذه طريقة تستهلك وقتا فى اختبار جمل الشرط
الطريقة الثانية
if ( condition )
statement 1 ;
else if ( condition )
statement 2 ;
else if ( condition )
statement 3 ;


وتكون صيغة المثال السابق كآلاتى :
I = 5 ;
if ( i < 5 )
printf ( “ i less than 5 " ) ;
else if ( i = 5 )
printf ( “ i equal to 5 " ;
else if ( i > 5 )
printf ( " i greater than 5 " ) ;

برنلمج : اشرح وظيفة البرنامج مع إيجاد الناتج إذا كانت القيم 13و7على التوالى :-
# include < stdio.h >
main ( )
{
float num1 , num2 ;
char op ;
while (1)
{
printf ( “ type number , operator , number \ n " ) ;
scanf ( “ % f % c % f ) , & num 1 , & op , & num 2 ) ;
if ( op = = ' + ' )
printf ( “ = % f " , num1 + num2 ;
else if ( op = = ' – ' )
printf ( “ = % f “ , num1 – num2 ;
else if ( op = = ' * ' )
printf ( " % f " , num1 * num2 ;
else if ( op = = ' / ' )
printf (“ = % f " , num1 / num2 ;
printf ( " \ n \ n " ) ;
}
}


[CENTER]2 - التفريع Switch …. case[/CENTER]

تتسبب عبارة Switch فى اختبار مجموعة من عبارات معينة من عديد من المجموعات المتاحة للاستخدام . ويعتمد الاختبار على القيمة الحالية لتعيير موجود داخل عبارة Switch

تستخدم عبارة break فى انهاء دورات او الخروج من switch

3) التفريغ غير المشروط goto
معناه الانتقال الى مكان محدد داخل البرنامج بدون شرك
#include
main( )
{
char ss;
ss:
printf(“\t ALLAH”);
goto ss;
}
ملاحظات : - لا ننصح باستخدام جملة goto ويفضل استخدام الدوال لتغيير مسار تنفيذ البرنامج
- للخروج من البرنامج السابق أضغط CTRL+C

غير معرف يقول...

جملة الشرط IF : تستخدم كلمة IF لتنفيذ جملة أو أكثر حسب شرط معين ( اختبار منطقى )
الصورة العامة
if ( condition )
statement ;
معناه إذا تحقق الشرط ( condition ) نفذ الجملة التالية أما إذا لم يتحقق الشرط فلا تنفذ هذه الجملة وانتقل إلى التى تليها
ملاحظة إذا كان هناك أكثر من جملة تريد تنفيذها مع if لابد من فتح قوس { قبل مجموعة الجمل والقوس } فى أخر الجمل كما يلى :
if ( condition )
{
statement 1 ;
statement 2 ;
}

* جملة if الشرطية المتداخلة : يمكن أن تتداخل جمل if فتأخذ الشكل التالى :
if ( condition )
if ( condition )
if ( condition )
وهذا معناه إذا تحقق الشرط الأول انظر إلى الشرط الثانى …. وهكذا

* الجملة الشرطية if …else : تستخدم لتنفيذ أحد اختيارين وتأخذ الصورة التالية :
if ( condition )
{
statement 1
}
else
{
statement 2
}
.....
التوثيق:/
http://www.absba.org/showthread.php?t=180163
....
محمد جمال الدين محمود

غير معرف يقول...

يتم اضافة شرح مبسط لجمل الشروط لتوضيح كيفية استخدامها فى برنامج بلغة ال c:-
التفريع Branching :
التفريع يعني تغير مسار البرنامج. و التفريع إما أن يكون مشروط كجملة if أو غير مشروط كجملة goto .
•التفريع المشروط:
جملة الشرط if :
تستخدم كلمة if لتنفيذ جملة أو أكثر حسب شرط معين و أبسط صورة لجملة if هي:
if (condition)
statment;
و معناها إذا تحقق الشرط (condition) نفذ الجملة التالية أما إذا لم يتحقق الشرط فلا تنفذ هذه الجملة و انتقل إلى التي تليها.
ملاحظة: إذا كان هناك أكثر من جملة نريد تنفيذها مع لا بد من فتح قوس } قبل مجموعة الجمل و القوس { في آخر الجمل كما يلي:
if (condition)
{
statement1;
statement2;
}
جمل if الشرطية المتداخلة:
يمكن أن تتداخل جمل if فتأخذ الشكل التالي:
if (condition)
if (condition)
if (condition)
و هذا معناه إذا تحقق الشرط الأول انظر إلى الشرط الثاني.. وهكذا.

الجملة الشرطية if...else:
تستخدم لتنفيذ أحد اختياريين و تأخذ الصورة التالية:
if (condition)
{
statement1
}
else
{
statement2
}
و معناها إذا كان الشرط (condition) صحيح نفذ الجملة الأولى statment1 و إلاّ نفذ الجملة الثانية statment2
و هذا يعني أن تركيب if...else تستخدم لتحديد اختيار واحد من اختيارين و لا يمكن تنفيذ الاختيارين معاً كما يحدث مع جملة if وحدها.

الجملة الشرطية if...else if:
لتنفيذ خيار من مجموعة خيارات كمقارنة رقمين مثلاً حيث يكون الرقم الأول أكبر من أو يساوي أو أقل من الرقم الثاني. يوجد طريقتين، الطريقة الأولى استخدام ثلاث جمل if و في كل جملة نضع أحد الشروط الثلاثة كالآتي:
i=5;
if(i<5)
printf(“i less than 5”);
if(i=5)
printf(“i equal to 5”);
if(i>5)
printf(“i greater than 5”);
و يعيب تلك الطريقة أن البرنامج سيقوم باختبار شروط if الثلاثة حتى و إن كان الشرط قد تحقق في جملة if الثانية فهو لا بد أن يختبر جملة if الثالثة لأن كل جملة من جمل الشرط مستقلة بنفسها و يجري تنفيذها على حدة مما يستهلك وقتاً في اختبار جمل شرطية لا داعي لاختبارها حيث نفذت إحداها بالفعل.
و الطريقة الثانية تستخدم لتلافي ذلك العيب و فيها نستخدم الجملة الشرطية if...else if و صيغتها كالآتي:
if(condition)
statement1;
else if(condition)
statement2;
else if(condition)
statement3;
و هذا معناه تحديد اختيار من عدة اختيارات.
i=5;
if(i<5)
printf(“i less than 5”);
else if(i=5)
printf(“i equal to 5”);
else if(i>5)
printf(“i greater than 5”);

التفرع switch..case:
إن استخدام جملة if في حالة تعدد الاختيارات لأكثر من اختيارين يمثل عبئاً على المبرمج في تتبع خطوات البرنامج و يسبب بطئاً نسبياً في تنفيذ البرنامج لذا استخدمنا الجملة الشرطية if..else ifو يمكن استعمال التفريع switch..case كبديل لجملة if..else if و هي طريقة أسهل كما سنرى و تستخدم بالصيغة التالية:
ch=getch();
switch(ch)
{
case’1’:
staement1;
statement2:

break;
case’2’:
statement1;
statement2;

break;
default:
statement1;
statement2; …
}
المؤثر الشرطي Conditional operator:
هذا المؤثر يقوم مقام جملة if، و يأخذ الشكل التالي:
var=(condition)?exp1:exp2;
و معناه
if condition is true then var=exp1
if condition is false then var=exp2
مثال
Pay=(age>18)? 3.5:2.5
هذا الشرط يساوي الشرط التالي
if (age>18)
Pay=3.5;
else
Pay=2.5
•التفريع غير المشروط:
التفريع غير المشروط معناه الانتقال إلى مكان محدد داخل البرنامج بدون شرط و تقوم جملة goto بهذا الغرض و تأخذ الشكل العام التالي: goto Label

حيثLabel يشير إلى المكان المطلوب الانتقال إليه و لا ننصح باستخدام هذه الجملة لأنها تستخدم بكثرة مع اللغات الغير تركيبية مثل لغة بيسك أما في حالة اللغة التركيبية لغةC فيفضّل استخدام الدوال لتغير مسار تنفيذ البرنامج.

وبالتالى تم سرد جمل اتفريع والشروط بالشرح كما سبق ويتم الانتقال الى الجزء التالى لطرح بعض الأمثلة على الشروط للاستفادة والتطبيق
تعليق :- إيمان نصر - الفرقة الرابعة

غير معرف يقول...

لمصفوفات Arrays:
معنى المصفوفات
تعرف المصفوفة بأنها مجموعة من العناصر تنتمي إلى نوع واحد. ويخصص لها اسم واحد وتنقسم المصفوفات إلى مصفوفات ذات بعد واحد ومصفوفات ذات بعدين.
والمصفوفة ذات البعد الواحد مثل:
A= [3 4 5 7 9]
وتسمى مصفوفة ذات بعد واحد لأنها تتكون من صف واحد أو عمود واحد، وفيها حرف A هو اسم المصفوفة، والأرقام هي عناصر المصفوفة ويتم الإشارة إلى كل عنصر برقم العنصر أي بترتيبه داخل المصفوفة على أن يبدأ العد بالرقم صفر كما يلي:
العنصرA[0] يساوي 3 والعنصرA[1] يساوي4 و العنصر A [2] يساوي 5.

والمصفوفة ذات البعدين تأخذ الشكل التالي:
وتسمى المصفوفة 3x3 أي 3 صفوف و3 أعمدة ويتم الإشارة إلى عناصر المصفوفة برقم الصف ورقم العمود الذي يقع عندهما العنصر كما يلي:
العنصر C[0][0] يساوي 5
العنصر C[0][1] يساوي 4
العنصر C[0][2] يساوي 2
العنصر C[2][1] يساوي 9

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

إعطاء قيم ابتدائية لعناصر المصفوفة:
من الممكن الإعلان عن المتغير وإعطائه قيمة ابتدائية بالشكل التالي:int A=5 و هذا الإعلان عن متغير صحيح و في نفس الوقت إعطاءه قيمة ابتدائية.
و بنفس الأسلوب يمكن الإعلان عن المصفوفة وإعطائها قيم ابتدائية كما يلي:
int A [3] = {5,7,9};
char name [10] = {'c','b','t','r',----};

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

•المصفوفة غير محددة العدد:المقصود بها هو عدم تحديد عدد العناصر في حالة الإعلان و تأخذ الصورة التالية:
int A []= {3,4,5};
Char name [] ="abdef";

و تحديد عدد عناصر هذه المصفوفة في هذه الحالة يتم من خلال المترجم عن طريق عد العناصر في الطرف الأيمن و حجز مصفوفة بهذا العدد.
لا يصلح إلاّ إذا كنت ستعطي عناصر المصفوفة قيم ابتدائية و لكن لا يصح أن تعلن عن مصفوفة غير محددة العدد ثم تستعملها في استقبال قيم من المستخدم فمثلاً لا يصح أن تقول ثم تستقبل عناصر المصفوفة من المستخدم.

•المصفوفة ذات البعدين:
هي المصفوفة التي ترتب عناصرها في شكل صفوف و أعمدة و يتم الإعلان عنها بالشكل التالي:
int A [5] [10];

و هذا معناه أن المصفوفةA. مصفوفة ذات بعدين، 5 صفوف و 10 أعمدة و يتم الإشارة إلى العنصر برقم الصف و رقم العمود.
و يجب الانتباه إلى أنه عندما تستخدم مصفوفة لا بد من استعمال الدوارة for و يتضح ذلك من المثال الذي ذكرناه في المصفوفة ذات البعد الواحد و أما في حالة المصفوفة ذات البعدين فلا بد من استعمال ما يسمى بالدوارات المتداخلة Nested loops.
إعطاء قيم ابتدائية للمصفوفة ذات البعدين:كما يمكن إعطاء قيم ابتدائية للمصفوفة ذات البعد الواحد يمكن كذلك إعطاء قيم ابتدائية للمصفوفة ذات البعدين و يكون بالشكل التالي:
int A[3][4]={{4,5,7,8},{3,2,1,0},{12,10,7,88}};

تعليق :- إيمان نصر - الفرقة الرابعة

غير معرف يقول...

التفريع Branching :
التفريع يعني تغير مسار البرنامج. و التفريع إما أن يكون مشروط كجملة if أو غير مشروط كجملة goto .
•التفريع المشروط:
جملة الشرط if :
تستخدم كلمة if لتنفيذ جملة أو أكثر حسب شرط معين و أبسط صورة لجملة if هي:

if (condition)
statment;

و معناها إذا تحقق الشرط (condition) نفذ الجملة التالية أما إذا لم يتحقق الشرط فلا تنفذ هذه الجملة و انتقل إلى التي تليها.
ملاحظة: إذا كان هناك أكثر من جملة نريد تنفيذها مع لا بد من فتح قوس } قبل مجموعة الجمل و القوس { في آخر الجمل كما يلي:
if (condition)
{
statement1;
statement2;
}

جمل if الشرطية المتداخلة:
يمكن أن تتداخل جمل if فتأخذ الشكل التالي:

if (condition)
if (condition)
if (condition)

و هذا معناه إذا تحقق الشرط الأول انظر إلى الشرط الثاني.. وهكذا.

الجملة الشرطية if...else:
تستخدم لتنفيذ أحد اختياريين و تأخذ الصورة التالية:

if (condition)
{
statement1
}
else
{
statement2
}

و معناها إذا كان الشرط (condition) صحيح نفذ الجملة الأولى statment1 و إلاّ نفذ الجملة الثانية statment2
و هذا يعني أن تركيب if...else تستخدم لتحديد اختيار واحد من اختيارين و لا يمكن تنفيذ الاختيارين معاً كما يحدث مع جملة if وحدها.

الجملة الشرطية if...else if:
لتنفيذ خيار من مجموعة خيارات كمقارنة رقمين مثلاً حيث يكون الرقم الأول أكبر من أو يساوي أو أقل من الرقم الثاني. يوجد طريقتين، الطريقة الأولى استخدام ثلاث جمل if و في كل جملة نضع أحد الشروط الثلاثة كالآتي:

i=5;
if(i<5)
printf(“i less than 5”);
if(i=5)
printf(“i equal to 5”);
if(i>5)
printf(“i greater than 5”);

و يعيب تلك الطريقة أن البرنامج سيقوم باختبار شروط if الثلاثة حتى و إن كان الشرط قد تحقق في جملة if الثانية فهو لا بد أن يختبر جملة if الثالثة لأن كل جملة من جمل الشرط مستقلة بنفسها و يجري تنفيذها على حدة مما يستهلك وقتاً في اختبار جمل شرطية لا داعي لاختبارها حيث نفذت إحداها بالفعل.
و الطريقة الثانية تستخدم لتلافي ذلك العيب و فيها نستخدم الجملة الشرطية if...else if و صيغتها كالآتي:

if(condition)
statement1;
else if(condition)
statement2;
else if(condition)
statement3;

و هذا معناه تحديد اختيار من عدة اختيارات.

i=5;
if(i<5)
printf(“i less than 5”);
else if(i=5)
printf(“i equal to 5”);
else if(i>5)
printf(“i greater than 5”);
تعليق:-
هبة احمد السعيد امين

غير معرف يقول...

التفرع switch..case:إن استخدام جملة if في حالة تعدد الاختيارات لأكثر من اختيارين يمثل عبئاً على المبرمج في تتبع خطوات البرنامج و يسبب بطئاً نسبياً في تنفيذ البرنامج لذا استخدمنا الجملة الشرطية if..else ifو يمكن استعمال التفريع switch..case كبديل لجملة if..else if و هي طريقة أسهل كما سنرى و تستخدم بالصيغة التالية:

ch=getch();
switch(ch)
{
case’1’:
staement1;
statement2:

break;
case’2’:
statement1;
statement2;

break;
default:
statement1;
statement2;

}

المصفوفات Arrays:

معنى المصفوفات
تنقسم البيانات إلى بيانات حرفية(char) وبيانات رقمية(int) وبيانات حقيقية (float)وتسمى هذه الأنواع (int, float, char) بالأنواع الرئيسية للبيانات، حيث لا يمكن تجزئتها أقل من ذلك.
ولكن هناك أنواع أخرى من البيانات تسمى بالأنواع المشتقة (types Drived data) من هذه الأنواع المصفوفات Arrays. تعرف المصفوفة بأنها مجموعة من العناصر تنتمي إلى نوع واحد. ويخصص لها اسم واحد وتنقسم المصفوفات إلى مصفوفات ذات بعد واحد ومصفوفات ذات بعدين.
والمصفوفة ذات البعد الواحد مثل:
A= [3 4 5 7 9]
وتسمى مصفوفة ذات بعد واحد لأنها تتكون من صف واحد أو عمود واحد، وفيها حرف A هو اسم المصفوفة، والأرقام هي عناصر المصفوفة ويتم الإشارة إلى كل عنصر برقم العنصر أي بترتيبه داخل المصفوفة على أن يبدأ العد بالرقم صفر كما يلي:
العنصرA[0] يساوي 3 والعنصرA[1] يساوي4 و العنصر A [2] يساوي 5.
تعليق :-
هبة احمد السعيد امين
الفرقة الرابعة

إرسال تعليق