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

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


لوحة مفاتيح عربية

العودة   منتدى القرية الإلكترونية > القسم الالكتروني > منتدى الإلكترونيات
التسجيل       اجعل كافة المشاركات مقروءة

منتدى الإلكترونيات قسم الالكترونكس لمناقشة الافكار والمعلومات المتعلقة بالهندسة الالكترونية للمبتدئين والهواة والفنيين - Electronics

رد
 
أدوات الموضوع
قديم 29-01-2014, 08:34 PM   #1
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 332
افتراضي الانتقال من الإلكترونيات إلى البرمجة بلعة السى بسهولة

دروس البرمجة بلغة السى - 1- مقدمة C Programming


المرجع :

http://fathallaabdelaziz.forumarabia.com

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

الشروع فى العمل مع لغة البرمجة C :من أجل تشغيل برنامج لغة السى ، تحتاج إلى مترجم compiler . المترجم يحول كود المصدر source code ( الكود المكتوب بواسطة المبرمج) إلى كود الهدف object code ( الكود الذى يفهمه الكومبيوتر) وينشىء الملف القابل للتنفيذ . هناك العديد من المترجمات المحترفة المتاحة مجانا .

المترجم Dev-C++ :
رابط الموقع :

http://www.bloodshed.net/devcpp.html
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
اعلانات
قديم 29-01-2014, 08:36 PM   #2
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 332
افتراضي

البرمجة بلغة السى – 2- الكلمات الخاصة Keywords و المعرفات Identifier :

مجموعة الحروف :

مجموعة الحروف هى مجموعة من الحروف الأبجدية ، وبعض الحروف الخاصة والتى هى صالحة فى لغة السى .

الحروف الأبجدية :



Uppercase: A B C .................................... X Y Z
Lowercase: a b c ...................................... x y z


الأرقام :


كود:
(0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 )



الحروف الخاصة فى لغة السى :



, < > . _ ( ) ; $ : % [ ] # ?
' & { } " ^ ! * / | - \ ~ +

حروف المسافة البيضاء (الفارغة) :

المسافة الفارغة blank space ، والسطر الجديد new line ، ومسافة التبويب الأفقى horizontal tab ، وعودة العربة (العودة أول السطر) carriage return ، ونموذج التغذية form feed .

الكلمات الرئيسية (المحجوزة) Keyword :
الكلمات الرئيسية هى كلمات محجوزة تستخدم فى البرمجة . كل كلمة من هذه الكلمات لها معنى ثابت ولا يمكن تغيره بواسطة المستخدم . على سبيل المثال :


كود:
int money;

هنا ، int هى كلمة محجوزة والتى تشير إلى أن المتغير money من نوع العدد الصحيح integer .
ونظرا لأن البرمجة بلغة السى حساسة لحالة الحرف ، فإن كافة الكلمات المحجوزة يجب أن تكتب بالحروف الصغيرة (المنخفضة) .

فيما يلى قائمة بجميع الكلمات المحجوزة والمعرفة مسبقا بواسطة لغة السى :


auto double int struct
break else long switch
case enum register typedef
char extern return union
continue for signed void
do if static while
default goto sizeof volatile
const float short unsigned


المعرفات Identifiers :

فى لغة السى ، "المعرفات" هى أسماء تعطى لكائنات لغة السى ، مثل المتغيرات ، والدوال ، والهياكل وغيرها. يتم إنشاء المعرف لإعطاء اسم فريد (وحيد – لانظير له) لكائنات لغة السى للتعرف عليها أثناء تنفيذ البرنامج . على سبيل المثال :


كود:
int money;
int mango_tree;


هنا ، الاسم money هى معرف والذى يدل على متغير من نوع العدد الصحيح . بالمثل ، الاسم mango_tree هو معرف آخر ، والذى يدل على متغير آخر من نوع العدد الصحيح .

قواعد كتابة المعرف :

1- يمكن أن يتكون المعرف فقط من الحروف letters ( الحروف الصغيرة والحروف الكبيرة على حد سواء) ، والأرقام digits ، والشرطة التحتية ' _ ' .
2- الحرف الأول من المعرف يجحب أن يكون إما حرف أو الشرطة التحتية . ولكن ، لا نشجع على بدء اسم المعرف بالشرطة التحتية على الرغن من أن ذلك قانونى . وذلك لأن المعرف الذى الذى يبدأ بالشرطة التحتية يمكن أن يتعارض مع أسماء النظام . فى مثل هذه الحالات ، فإن المترجم سوف يحتج عليها .
3- لا توجد قاعدة لطول المعرف . لكن ، يتم تمييز الحروف الواحد والثلاثون الأولى بواسطة المترجم . لذلك ينبغى أن تكون الواحد وثلاثون حرف الأولى لمعرفين فى البرنامج مختلفة .

نصائج لممارسة البرمجة بشكل جيد :

يمكن للمبرمج اختيار المعرف كيفما شاء . لكن ، إذا اختار المبرمج اسم ذات معنى للمعرف ، فسوف يكون من السهل فهمه والعمل عليه ، خاصة فى حالة البرنامج الكبير .
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  
قديم 29-01-2014, 08:38 PM   #3
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 332
افتراضي

البرمجة بلغة السى –3- المتغيرات والثوابت

المتغيرات Variables :

المتغيرات هى مواقع (أماكن) بذاكرة الكومبيوتر لتخزين البيانات . للإشارة إلى موقع ذاكرة ، فإن كل متغير يجب أن يعطى اسم فريد يسمى "المعرف" . أسماء المتغيرات هى مجرد تمثيل رمزى لمواقع الذاكرة . أمثلة لاسم متغير sum , car_no , count , … .


كود:
int num;


هنا ، num هو متغير من نوع عدد صحيح .

قواعد كتابة اسم المتغير فى لغة السى :

1- اسم المتغير يمكن أن يتكون فقط من توليفة من الحروف ( الكبيرة والصغيرة) ، والأرقام ، والشرطة التحتية .
2- الحرف الأول من المتغير يجب أن يكو إما حرف أو شرطة تحتية ، لكن لا نشجع على بدء اسم المتغير بالشرطة التحتية على الرغم من أن ذلك قانونى . وذلك لأن اسم المتغير الذى يبدأ بالشرطة التحتية يمكن أن يتعارض مع أسماء النظام وقد يعترض المترجم .
3- لا توجد قاعدة لطول المتغير . لكن يتم تمييز الأحرف الواحد والثلاثون الأولى للمتغير من قبل المترجم ، لذلك ينبغى أن تكون الحروف الواحد والثلاثون الأولى فى متغيرين بالبرنامج أن تكون مختلفة .
فى البرمجة بلغة السى ، ينبغى أن تعلن (تعرف) المتغير قبل استخدامه فى البرنامج .

الثوابت Constants :

الثوابت هى الأشياء التى لا يمكن أن تتغير أثناء تنفيذ البرنامج . على سبيل المثال : 1 و 2.5 و "Programming is easy" وغيرها . فى لغة السى ، يمكن تصنيف الثوابت إلى :

ثوابت الأعداد الصحيحة Integers:

ثوابت الأعداد الصحيحة هى الثوابت العددية ( الثابت المرتبط بعدد ) بدون أى جزء كسرى أو جزء أسى . هناك ثلاثة أنواع من ثوابت العدد الصحيح فى لغة السى : الثوابت العشرية ( بالأساس 10) ، والثوابت الثمانية (بالأساس 8 ) ، والثوابت السداسية عشر ( بالاساس 16) .
الأرقام العشرية :


كود:
0 1 2 3 4 5 6 7 8 9


الأرقام الثمانية :



كود:
0 1 2 3 4 5 6 7


الأرقام السداسية عشر :


كود:
0 1 2 3 4 5 6 7 8 9 A B C D E F



أمثلة :
ثوابت عشرية : 0 , -9 , 22 , …
ثوابت ثمانية : 021 , 077 . 033 , …..
ثوابت سداسية عشر : 0x7f , 0x2a , 0x521 , …..

ملاحظات :

1- يمكك استخدام الحروف الصغيرة a,b,c,d,e,f بدلا من الحروف الكبيرة عند كتابة الثابت السدلسى عشر .
2- كل ثابت ثمانى يبدأ بالصفر "0" وكل ثابت سداسى عشر يبدأ بالتسلسل "0x" عند البرمج بلغة السى .
توابت الأعداد الحقيقية float :
ثوابت الأعداد الحقيقية هى الأعداد الثابتة والتى بها شكل من إما كسر أو أس . على سبيل المثال :


كود:
-2.0
0.0000234
-0.22E-5


ملحوظة :
هنا "E-5" ثمثل عشرة أس ناقص خمسة . ومن ثم فإن -0.22E-5 = -0.0000022
الثوابت الحرفية Character :
الثوابت الحرفية هى الثوابت التى تستخدم علامة اقتباس فردية حول الحرف . على سبيل المثال : 'a' , 'l' , 'm' , 'F' وهكذا .

تسلسل الهروب Escape :

أحيانا ، يكون من الضرورى استخدام سطر جديد new-line ، فاصل أو تبويب tab ، علامة اقتباس ، وغيرها فى البرنامج والتى لا يمكن كتابتها أو ليس لها معنى خاص فى البرمجة بلغة السى . فى مثل هذه الحالات يتم استخدام تسلسل الهروب . على سبيل المثال : التسلسل "\n" يستخدم للسطر الجديد (يشبه الضغط على مفتاح enter ) . الشرط المائلة "\" تتسبب فى "الهروب" من الطريقة العادية التى يتم بها تفسير الحروف بمعرفة المترجم .

تتابعات الهروب :




Escape Sequences Character
\b Backspace
\f Form feed
\n Newline
\r Return
\t Horizontal tab
\v Vertical tab
\\ Backslash
\' Single quotation mark
\" Double quotation mark
\? Question mark
\0 Null character


ثوابت السلسلة النصية String :


ثوابت السلسلة النصية هى الثوابت التى تحاط بعلامتى اقتباس مزدوجة . على سبيل المثال :


كود:
"good"                  //string constant
""                     //null string constant
"      "               //string constant of six white space
"x"                    //string constant having single character.
"Earth is round\n"         //prints string with newline


ثوابت القوائم Enumeration :

تستخدم الكلمة المحجوزة enum لإعلان أنواع القوائم . على سبيل المثال :


كود:
enum color {yellow, green, black, white};


هنا ، اسم المتغير هو color و كل من yellow , green , black , white هى ثوابت القائمة وتمتلك القيم 0,1,2,3 على الترتيب كوضع افتراضى .
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 29-01-2014, 08:40 PM   #4
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 332
افتراضي


البرمجة بلغة السى –4- أنواع البيانات

فى لغة السى المتغير (البيانات data ) يجب أن يتم إعلانه قبل أن يمكن استخدامه فى البرنامج . نوع البيانات هى "الكلمات المحجوزة" ، التى تستخدم من أجل تعيين نوع لمتغير .

أنواع البيانات فى لغة السى :

1- الأنواع الأساسية للبيانات :

• أنواع العدد الصحيح Integer .
• أنواع العدد الحقيقى Floating .
• أنواع الحرف Character .
2- أنواع البيانات المشتقة .
• المصفوفات Arrays .
• المؤشرات Pointers .
• الهياكل Structures .
• القوائم Enumeration .

صيغة إعلان المتغير :


كود:
data_type variable_name;


البيانات نوع العدد الصحيح :

تستخدم الكلمة المحجوزة "int" من أجل إعلان المتغير من نوع العدد الصحيح . على سبيل المثال :


كود:
int var1;


هنا ، var1 هو متغير من نوع العدد الصحيح .
حجم المتغير من نوع العدد الصحيح إما أن يكون 2 بايت (16 بت، فى الكومبيوتر القديم) أو 4 بايت (32 بت).

المتغيرات نوع العدد الحقيقى :

المتغيرات نوع العدد الحقيقى يمكن أن تخزن قيم حقيقية (أعداد) مثل : 2.34 , -9.382 , …. . أى من الكلمات المحجوزة float أو double تستخدم من أجل إعلان المتغير من نوع العدد الحقيقى . على سبيل المثال :


كود:
float var2;
double var3;


هنا ، كل من var2 و var3 متغيرات نوع العدد الحقيقى .

فى لغة السى ، قيم الأعداد الحقيقية يمكن تمثيلها فى الشكل الأسى أيضا . على سبيل المثال :


كود:
float var3=22.442e2


الفرق بين نوع float ونوع double :

عامة يكون حجم نوع float ( بيانات نوع float بدقة مفردة ) 4 بايت ، ويكون حجم نوع double ( بيانات نوع float بدقة مزدوجة) 8 بايت . المتغيرات نوع float تمتلك دقة لستة أرقام فى حين تكون دقة نوع double لأربعة عشر رقم .

ملاحظة :

الدقة Precision : تصف عدد أماكن الكسر الكشرى التى تحملها قيم العدد الحقيقى .

بيانات نوع الحرف Character :

تستخدم الكلمة الخاصة "char" من أجل المتغير نوع الحرف . على سبيل المثال :


كود:
char var4='h';


هنا ، var4 هو متغير من نوع الحرف والذى يخزن الحرف 'h' .

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


كود:
For, 'a', value =97
For, 'b', value=98
For, 'A', value=65
For, '&', value=33
For, '2', value=49


المؤهلات Qualifiers :

المؤهلات تغير المقصود من أنواع البيانات الأساسية للحصول على نوع بيانات جديد .

مؤهلات الحجم Size :

مؤهلات الحجم تغير حجم نوع البيانات الأساسى . الكلمة المحجوزة long والكلمة المحجوزة short هى مؤهلات للحجم . على سبيل المثال :


كود:
long int i;


حجم int أمل 2 بايت أو 4 بايت ، ولكن عند استخدام الكلمة long ، فإن هذا المتغير سوف يكون إما 4 بايت أو 8 بايت . إذا لم تكن هناك حاجة لحجم أطول للمتغير عندئذ يمكن استخدام الكلمة short .

مؤهلات الإشارة :

يتم تحديد ما إذا كان المتغير يمكن أن يخزن قيمة موجبة أو كل من القيم الموجبة والسالبة بواسطة مؤهلات الإشارة . الكلمة المحجوزة signed والكلمة المحجوزة unsigned تستخدم كمؤهلات إشارة .


كود:
unsigned int a;
// unsigned variable can hold zero and positive values only


ليس من الضرورى تعريف متغير باستخدام كلمة "يإشارة" signed لأن المتغير يكون بإشارة بشكل افتراضى. مؤهل الإشارة يمكن تطبيقه فقط على البيانات نوع الأعداد الصحيحة int ونوع الحرف char .

مؤهلات الثابت Constant :

يمكن إعلان مؤهلات الثابت بالكلمة الخاصة "const" . الكائن المعلن بواسطة const لا يمكن تعديله .
const int p=20;
قيمة "p" لا يمكن تغييرها فى البرنامج .
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 29-01-2014, 08:42 PM   #5
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 332
افتراضي

البرمجة بلغة السى – 5 - المدخلات والمخرجات :

المواصفات القياسية ANSI بها تعريف للعديد من دوال الدخل والخرج للغة السى . الدوال prinf() و scanf() هى الأكثر استخداما لعرض المخرجات وأخذ المدخلات على الترتيب .
مثال :


كود:
#include <stdio.h>      //This is needed to run printf() function.
int main()
{
   printf("C Programming");  //displays the content inside quotation
   return 0;
}


الخرج :


كود:
C Programming


شرح كيف يعمل هذا البرنامج :

1- كل برنامج يبدأ من الدالة main() .
2- الدالة printf() هى دالة مكتبة لعرض المخرجات والتى تعمل فقط إذا تم تضمين الصيغة #include<stdio.h> عند البداية .
3- هنا ، stdio.h هو ملف رأس ( ملف رأس الدخلات والمخرجات القياسية) و #include هى أمر للصق الكود من ملف الرأس عند الضرورة . عندما يواجه المترجم الدالة printf() ولا يجد ملف الرأس stdio.h فإن المترجم يظهر خطأ .
4- العبارة return 0; يشير إلى نهاية البرنامج . يمكنك تجاهل هذه العبارة ولكن استخدامها يكون من قبيل ممارسة البرمجة بشكل جيد .

المدخلات والمخرجات للأعداد الصحيحة بلغة السى :


كود:

#include<stdio.h>
int main()
{
   int c=5;
   printf("Number=%d",c);
   return 0;
}


الخرج :


كود:
Number=5


داخل علامتى التنصيص للدالة printf يوجد سلسلة تنسيق التحويل بالصيغة "%d" ( للعدد الصحيح) . إذا تطابقت سلسة تنسيق التحويل مع البالرامتر الباقى وهو "c" فى هذه الحالة ، عندئذ يتم عرض قيمة "c" .


كود:
#include<stdio.h>
int main()
{
   int c;
   printf("Enter a number\n");
   scanf("%d",&c);  
   printf("Number=%d",c);
   return 0;
}


الخرج :


كود:
Enter a number
4
Number=4


تستخدم الدالة scanf() لأخذ المدخلات من المستخدم . فى هذا البرنامج ، يتم سؤال المستخدم لإدخال قيمة ويتم تخزين القيمة فى المتغير "c" . لاحظ الحرف '&' قبل "c" . التسلسل &c تدل على عنوان المتغير c ويتم تخزين القيمة فى هذا العنوان .
المدخلات والمخرجات للأعداد الحقيقية :


كود:
#include <stdio.h>
int main(){
   float a;
   printf("Enter value: ");
   scanf("%f",&a);
   printf("Value=%f",a);    //%f is used for floats instead of %d
   return 0;
}


الخرج :


كود:
Enter value: 23.45
Value=23.450000


تستخدم سلسلة تنسيق التحويل "%f" من أجل الأعداد الحقيقية لأخذ المدخلات ولعرض قيمة عدد حقيقى لمتغير .
مدخلات ومخرجات الحروف وكود أسكى :


كود:
#include <stdio.h>
int main(){
   char var1;
   printf("Enter character: ");
   scanf("%c",&var1);     
   printf("You entered %c.",var1);  
   return 0;
}


الخرج :


كود:
Enter character: g
You entered g.


تستخدم سلسلة تحويل التنسيق "%c" فى حالة الحروف .

كود أسكى ASCII :

عندما يتم كتابة حرف فى البرنامج أعلاه ، فإنه لا يتم تسجيل الحرف نفسه ولكن يتم تخزين قيمة عددية (قيمة أسكى) . وعندما نعرض هذه القيمة باستخدام التنسيق "%c" ، يتم عرض هذا الحرف .


كود:
#include <stdio.h>
int main(){
   char var1;
   printf("Enter character: ");
   scanf("%c",&var1);     
   printf("You entered %c.\n",var1);  
/* \n prints the next line(performs work of enter). */
   printf("ASCII value of %d",var1);  
   return 0;
}


الخرج :


كود:
Enter character:
g
103


عندما يتم إدخال الحرف 'g' يتم تخزين قيمة أسكى له وهى 103 بدلا من 'g' .
يمكنك عرض حرف إذا كنت تعرف قيمة كود اسكى له كما يلى :



كود:
#include <stdio.h>
int main(){
   int var1=69;
   printf("Character of ASCII value 69: %c",var1);
   return 0;
}


الخرج :


كود:
Character of ASCII value 69: E


قيمة أسكى للحرف 'A' هى 65 وللحرف 'B' هى 66 وهكذا حتى حرف 'Z' فهى 99 . بالمثل قيمة أسكى للحرف 'a' هى 97 وللحرف 'b' هى 98 وهكذا حتى حرف 'z' فهى 122 .
المزيد حول المدخلات والمخرجات للعدد الحقيقة وللعدد الصحيح :
الاختلاف فى المخرجات للأعداد الصحيحة والأعداد الحقيقية :
يمكن عرض الأعاداد الصحيحة والأعداد الحقيقية بأشكال مختلفة فى لغة السى كما يلى :


كود:
#include<stdio.h>
int main(){
   printf("Case 1:%6d\n",9876);      
/*  Prints the number right justified within 6 columns  */
   printf("Case 2:%3d\n",9876);      
/* Prints the number to be right justified to 3 columns but, there are 4 digits so number is not right justified  */
   printf("Case 3:%.2f\n",987.6543);
/* Prints the number rounded to two decimal places */
   printf("Case 4:%.f\n",987.6543);
/* Prints the number rounded to 0 decimal place, i.e, rounded to integer */
   printf("Case 5:%e\n",987.6543);
/* Prints the number in exponential notation(scientific notation) */
   return 0;
}


الخرج :


كود:
Case 1:  9876
Case 2:9876
Case 3:987.65
Case 4:988
Case 5:9.876543e+002


الاختلاف فى المدخلات للأعداد الصحيحة والاعداد الحقيقية :


كود:

#include <stdio.h>
int main(){
   int a,b;
   float c,d;
   printf("Enter two intgers: ");
/*Two integers can be taken from user at once as below*/
   scanf("%d%d",&a,&b);
   printf("Enter intger and floating point numbers: ");
/*Integer and floating point number can be taken at once from user as below*/
   scanf("%d%f",&a,&c);
   return 0;
}


بالمثل يمكن أخذ أى عدد من المدخلات دفعة واحدة من المستخدم .
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 29-01-2014, 08:44 PM   #6
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 332
افتراضي


البرمجة بلغة السى – 6 - العوامل (المؤثرات) Operators

العوامل (المؤثرات) هى الرموز التى تعمل (تؤثر) على القيم أو المتغيرات . على سبيل المثال : الرمز '+' هو عامل (مؤثر) لتنفيذ عملية الجمع .
لغة السى بها مدى واسع من العوامل لتنفيذ العمليات المختلفة . لفهم العوامل بشكل جيد يمكن تصنيف هذه العوامل كما يلى :
• عوامل حسابية .
• عوامل التزايد والتناقص .
• عوامل التخصيص .
• عوامل المقارنة .
• عوامل منطقية .
• عوامل الشرط .
• عوامل موجهة لتعامل مع البت المفردة .
• عوامل خاصة .

العوامل الحسابية Arithmetic Operators :

• العامل '+' للجمع .
• العامل '-' للطرح .
• العامل '*' للضرب .
• العامل '/' للقسمة .
• العامل '%' لباقى خارج القسمة .

مثال على عمل العوامل الحسابية :


كود:
/* Program to demonstrate the working of arithmetic operators in C.  */
#include <stdio.h>
int main(){
   int a=9,b=4,c;
   c=a+b;
   printf("a+b=%d\n",c);
   c=a-b;
   printf("a-b=%d\n",c);
   c=a*b;
   printf("a*b=%d\n",c);
   c=a/b;
   printf("a/b=%d\n",c);
   c=a%b;
   printf("Remainder when a divided by b=%d\n",c);
   return 0;
}


الخرج :


كود:
a+b=13
a-b=5
a*b=36
a/b=2
Remainder when a divided by b=1


الشرح :

هنا : العوامل (+ , - , *) تنفذ بشكل عادى كما تتوقع . فى الحساب العادى 9/4 = 2.25 . ولكن فى هذا البرنامج الخرج يكون "2" والسبب كل من a و b أعداد صحيحة ، لذلك يكون الخرج عدد صحيح ويهمل المترجم ما بعد العلامة العشرية ويظهر النتيجة "2" بدلا من "2.25' . وأخيرا ، نتيجة a%b تكون "1" ، بمعنى أنه عندما يكون a = 9 ويتم قسمتها على b = 4 فإن باقى عملية القسمة يكون "1' .
مثال :


كود:
Suppose a=5.0, b=2.0, c=5 and d=2
In C programming,
a/b=2.5    
a/d=2.5
c/b=2.5      
c/d=2


ملحوظة :
العامل % يمكن أن يستخدم مع الأعداد الصحيحة فقط .

عوامل التزايد Increment والتناقص Decrement :

فى لغة السى تسمى الرموز (++) و (--) بعوامل التزايد والتناقص على الترتيب . كل منهما يكون عامل "أحادى" أى يستخدم معامل operand فردى . عامل التزايد (++) يضيف (يجمع) واحد (1) إلى المعامل ، وعامل التناقص (--) يطرح واحد (1) من المعامل . على سبيل المثال :


كود:
Let a=5 and b=10
a++;  //a becomes 6
a--;  //a becomes 5
++a;  //a becomes 6
--a;  //a becomes 5


الفرق بين العامل (++) والعامل (--) كسابقة أو كلاحقة :

عند استخدام عامل التزايد (++) كسابقة ، مثل ++var ، فسوف يتم تزايد قيمة المتغير var ثم إعادته ، ولكن إذا تم استخدام عامل التزايد (++) كلاحقة ، مثل var++ ، فسوف يتم إعادة قيمة المتغير (المعامل) أولا ثم يتم تزايده . يمكن توضيح ذلك بواسطة المثال التالى :

كود:

#include <stdio.h>
int main(){
   int c=2,d=2;
   printf("%d\n",c++); //this statement displays 2 then, only c incremented by 1 to 3.
   printf("%d",++c);   //this statement increments 1 to c then, only c is displayed. 
   return 0;
}


الخرج :


كود:
2
4


عوامل التخصيص Assignment Operators :

عامل التخصيص الأكثر شيوعا هو ( = ) . هذا العامل يخصص القيمة الموجودة بالجانب الأيمن لما هو موجود بالجانب الأيسر . على سبيل المثال :


كود:
var=5  //5 is assigned to var
a=c;   //value of c is assigned to a
5=c;   // Error! 5 is a constant.
Operator Example Same as
= a=b a=b
+= a+=b a=a+b
-= a-=b a=a-b
*= a*=b a=a*b
/= a/=b a=a/b
%= a%=b a=a%b


عوامل المقارنة Relational Operators :

عوامل المقارنة تختبر العلاقة بين معاملين . إذا كانت العلاقة صواب true فإنها ترجع القيمة واحد (1) وإذا كانت العلاقة خطأ false فإنها ترجع القيمة صفر (0) . على سبيل المثال :
a>b
هنا ، الرمز (>) هو عامل مقارنة ، فإذا كان (a) أكبر من (b) فإن العبارة a>b ترجع الواحد (1) ، وإن لم تكن عندئذ فإنها ترجع الصفر (0) .
فى لغة السى ، تستخدم عوامل المقارنة فى اتخاذ القرار وفى الحلقات .


كود:
Operator Meaning of Operator Example
== Equal to 5==3 returns false (0)
> Greater than 5>3 returns true (1)
< Less than 5<3 returns false (0)
!= Not equal to 5!=3 returns true(1)
>= Greater than or equal to 5>=3 returns true (1)
<= Less than or equal to 5<=3 return false (0)


العوامل المنطقية Logical Operators :

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


كود:
Operator Meaning of Operator Example
&& Logial AND If c=5 and d=2 then,((c==5) && (d>5)) returns false.
|| Logical OR If c=5 and d=2 then, ((c==5) || (d>5)) returns true.
! Logical NOT If c=5 then, !(c==5) returns false.


الشرح :

من أجل أن يكون التعبير ((c==5)&&(d>5)) صواب true ، يجب أن يكون "كل من" التعبيرين c==5 و d>5 صواب ، ولكن (d>5) خطأ ، فى المثال المعطى . لذلك فإن التعبير الكلى يكون خطأ .
من أجل أن يكون التعبير ((c==5) ||(d>5)) صواب ، يجب أن يكون "أى من" التعبيرين صواب . ونظرا لأن (c==5) صواب فإن التعبير الكلى يكون صواب . وحيث أن التعبير (c==5) صواب فإن التعبير !(c==5) يكون خطأ .

عوامل الشرط Conditional Operators :

عامل الشرط يأخذ 3 معاملات ويتكون من رمزين هما "?" و ":-" . فى لفة السى تستخدم عوامل الشرط فى اتخاذ القرار . على سبيل المثال :


كود:
c=(c>0)?10:-10;


إذا كانت c أكبر من "0" ، سوف تكون c بالقيمة "10" ، وغذا كانت ر أقل من "0" فإن c سوف تكون بالقيمة "-10" .

عوامل البت المفردة Bitwise Operators :

عامل البت المفردة يعمل على كل بت من البيانات . تستخجم هذه العوامل للبرمجة على مستوى البت .


كود:
Operators Meaning of operators
& Bitwise AND
| Bitwise OR
^ Bitwise exclusive OR
~ Bitwise complement
<< Shift left
>> Shift right


العوامل الأخرى :

عامل الفاصلة :

يستخدم عامل الفاصلة لربط التغبيرات المرتبطة ببعضها البعض معا . على سبيل المثال :


كود:
int a,c=5,d;


العامل sizeof :

هو عامل فردى والذى يستخدم فى إيجاد حجم نوع البيانات ، والثوابت ، والهياكل وغيرها . على سبيل المثال :


كود:
#include <stdio.h>
int main(){
   int a;
   float b;
   double c;
   char d;
   printf("Size of int=%d bytes\n",sizeof(a));
   printf("Size of float=%d bytes\n",sizeof(b));
   printf("Size of double=%d bytes\n",sizeof(c));
   printf("Size of char=%d byte\n",sizeof(d));
   return 0;
}


الخرج :


كود:
Size of int=4 bytes
Size of float=4 bytes
Size of double=8 bytes
Size of char=1 byte


عوامل الشرط ( ?: ) :

تستخدم عوامل الشرط الشرط فى اتخاذ القرار ، بمعنى تنفيذ عبارات مختلفة تبعا لاختبار شرط فى حالة كونه صواب true أو خطأ false .

صيغة عوامل الشرط :


كود:
conditional_expression?expression1:expression2


إذا كان اختبار الشرط صواب true ، يتم تنفيذ التعبير expression1 وإذا كان خطأ false يتم تنفيذ التعبير expression2 .
مثال على عامل الشرط :


كود:
#include <stdio.h>
int main(){
  char feb;
  int days;
  printf("Enter l if the year is leap year otherwise enter 0: ");
  scanf("%c",&feb);
  days=(feb=='l')?29:28;
  /*If test condition (feb=='l') is true, days will be equal to 29. */
  /*If test condition (feb=='l') is false, days will be equal to 28. */ 
  printf("Number of days in February = %d",days);
  return 0;
}


الخرج :


كود:
Enter l if the year is leap year otherwise enter n: l
Number of days in February = 29
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 29-01-2014, 08:46 PM   #7
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 332
افتراضي

البرمجة بلغة السى – 7 - اسبقية (أولوية) وارتباط العوامل :

أسبقية (أولوية) العوامل :

إذا تم إشراك أكثر من عامل فى تعبير عندئذ فإن لغة السى لها قاعدة محددة مسبقا فى أولوية العوامل . قاعدة أولوية العوامل هذه تسمى "أسبقية العامل" .

فى لغة السى تكون أسبقية العوامل الحسابية ( * , % , ? , + , - ) أعلى من عوامل المقارنة
( == , != , > , < , >= , <= ) وأسبقية عوامل المقارنة أعلى من العوامل المنطقية ( && , || , ! ) . على سبيل المثال التعبيرات التالية :


كود:
(a>b+c&&d)
This expression is equivalent to:
((a>(b+c))&&d)
i.e, (b+c) executes first
then, (a>(b+c)) executes
then, (a>(b+c))&&d) executes


إرتباط العوامل :

الارتباط يبين بأى ترتيب يتم تنفيذ عاملين لهما نفس الاسبقية . لنرى المثال التالى :


كود:
a==b!=c


هنا ، العامل == والعامل != لهما نفس الاسبقية . ارتباط كل من == و != يكون من اليسار إلى اليمين ، بمعنى أنه يتم تنفيذ التعبير الموجود باليسار أولا ويسير التنفيذ جهة اليمين . لذلك فإن a==b!=c تعادل :


كود:
(a==b)!=c


فيما يلى بيان بجميع العوامل فى لغة السى مع الأسبقية والارتباط :


كود:
Operator Meaning of operator Associativity
()
[]
->
. Functional call
Array element reference
Indirect member selection
Direct member selection Left to right
!
~
+
-
++
--
&
*
sizeof
(type) Logical negation
Bitwise(1 's) complement
Unary plus
Unary minus
Increment
Decrement
Dereference Operator(Address)
Pointer reference
Returns the size of an object
Type cast(conversion) Right to left
*
/
% Multiply
Divide
Remainder Left to right
+
- Binary plus(Addition)
Binary minus(subtraction) Left to right
<<
>> Left shift
Right shift Left to right
<
<=
>
>= Less than
Less than or equal
Greater than
Greater than or equal Left to right
==
!= Equal to
Not equal to Left to right
& Bitwise AND Left to right
^ Bitwise exclusive OR Left to right
| Bitwise OR Left to right
&& Logical AND Left to right
|| Logical OR Left to right
?: Conditional Operator Left to right
=
*=
/=
%=
-=
&=
^=
|=
<<=
>>= Simple assignment
Assign product
Assign quotient
Assign remainder
Assign sum
Assign difference
Assign bitwise AND
Assign bitwise XOR
Assign bitwise OR
Assign left shift
Assign right shift Right to left
, Separator of expressions Left to right
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
قديم 29-01-2014, 08:48 PM   #8
F.Abdelaziz
استاذ و مشرف قسم الالكترونيات
 
الصورة الرمزية F.Abdelaziz

المشاركات: 6,894
أحصائية الترشيح

عدد النقاط : 6483


النشاط

معدل تقييم المستوى: 332
افتراضي

البرمجة بلغة السى -7- أمثلة الجزء الأول - البرنامج الأول : طباعة جملة .

كود المصدر :


كود:
/* C Program to print a sentence. */
#include <stdio.h>
int main()
{
  printf("C Programming"); /* printf() prints the content inside quotation "" */
  return 0;
}


الخرج :


كود:
C Programming


الشرح :

كل برنامج بلغة السى يبدأ تنفيذ الكود من الدالة الرئيسية


كود:
main()


داخل الدالة الرئيسية يوجد الدالة


كود:
printf( )


والتى تطبع المحتويات الموجودة داخل علامتى الاقتباس وهى فى هذه الحالة العبارة "C Programming" .
F.Abdelaziz غير متواجد حالياً   رد مع اقتباس مشاركة محذوفة
رد

العلامات المرجعية

أدوات الموضوع

تعليمات المشاركة
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع إلى

الساعة الآن: 09:58 AM


Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025
Feedback Buttons provided by Advanced Post Thanks / Like (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
القرية الإلكترونية