Noor-Book.com لغة c أصبحت سهلة باللغة العربية 3 .pdf
- 3. - 2 -
الكتاب مع مرفقة وجودها عدم حالة في بالكتاب الخاصة الاكواد رابط
easy
-
made
-
language
-
hussein/c
-
https://github.com/mo7amed
- 5. - 4 -
Table of Contents
م
قدمة .................................................................................................................................................................................................. - 7 -
االدوات
المستخدمة ............................................................................................................................................................................. - 8 -
ما
قبل Hello World......................................................................................................................................................................... - 8 -
الدالة
االساسية main function :......................................................................................................................................................... - 9 -
الطباعة
علي
الشاشة Hello World ....................................................................................................................................................... - 9 -
-
طباعة
علي
اكثر
من
سطر ................................................................................................................................................................ - 12 -
-
الـ escape sequences............................................................................................................................................................... - 13 -
الخوارزمياتAlgorithms................................................................................................................................................................ - 13 -
الخالصة........................................................................................................................................................................................ - 15 -
-
سؤال
وجواب ................................................................................................................................................................................ - 16 -
المتغيرات........................................................................................................................................................................................... - 19 -
الذاكرة Memory........................................................................................................................................................................... - 19 -
وحدات
التخزين Storage units........................................................................................................................................................ - 20 -
المتغيراتVariables ..................................................................................................................................................................... - 20 -
متغيرات
االعداد
الصحيحة Integers variable..................................................................................................................................... - 21 -
متغيرات
االعداد
الحقيقية floating-point variables ............................................................................................................................ - 24 -
متغير
الحروف characters ............................................................................................................................................................ - 25 -
الثوابتconstants ......................................................................................................................................................................... - 28 -
-
العمليات
الحسابية arithmetic operators ..................................................................................................................................... - 29 -
-
سؤال
وجواب ................................................................................................................................................................................ - 30 -
الرموزoperators ............................................................................................................................................................................. - 33 -
رموز
العمليات
الحسابية arithmetic operators: ............................................................................................................................... - 33 -
رموز
العمليات
العالقية relational operators:................................................................................................................................... - 33 -
رموز
ال
عمليات
المنطقية logical operators........................................................................................................................................ - 34 -
مؤثرات
الزيادة
والنقصان increment and decrement operators...................................................................................................... - 36 -
رموز
خاصة
بالبتات bitwise operators............................................................................................................................................ - 37 -
مؤثرات
تعين
القيم assignment operators....................................................................................................................................... - 38 -
مؤثر
التحويل
من
نوع
الخر cast operator: ....................................................................................................................................... - 39 -
الـعبارة
الجبرية expressions............................................................................................................................................................ - 39 -
االسبقية
في
حساب
قيمة
الـ expression .............................................................................................................................................. - 40 -
استخدامات
المؤثرات
الخاصة
بالبتات ..................................................................................................................................................... - 40 -
الخالصة........................................................................................................................................................................................ - 45 -
سؤال
وجواب .................................................................................................................................................................................. - 45 -
- 6. - 5 -
التحكم
البرنامج سير في ......................................................................................................................................................................... - 48 -
الـstatement block.................................................................................................................................................................... - 48 -
التحكم
في
سير
البرنامج program control.......................................................................................................................................... - 48 -
-
جملة
الشرط if ............................................................................................................................................................................ - 48 -
جملة
الشرط switch ....................................................................................................................................................................... - 58 -
-
تعديل
الحلقات
باستخدام break & continue ..................................................................................................................................... - 69 -
الخالصة........................................................................................................................................................................................ - 73 -
سؤال
وجواب .................................................................................................................................................................................. - 74 -
امثلة
عملية ................................................................................................................................................................................... - 77 -
سؤال
وجواب ................................................................................................................................................................................ - 105 -
المؤشراتpointers......................................................................................................................................................................... - 107 -
الخالصة...................................................................................................................................................................................... - 116 -
- الدوال functions........................................................................................................................................................................... - 118 -
-
مجال
المتغيرات variable scope ...................................................................................................................................................... - 124 -
الخالصة ......................................................................................................................................................................................... - 136 -
التعامل
الملفات مع .............................................................................................................................................................................. - 150 -
-
انواع
الملفات .................................................................................................................................................................................. - 162 -
الخالصة.......................................................................................................................................................................................... - 168 -
التوجيهاتPreprocessor.................................................................................................................................................................. - 170 -
الخالصة.......................................................................................................................................................................................... - 179 -
الدوال
المتقدمة والمؤشرات ................................................................................................................................................................... - 181 -
-
البنية
ذاتية
المرجعية self-referential structure ................................................................................................................................ - 194 -
الخالصة.......................................................................................................................................................................................... - 194 -
امثلة
عملية ........................................................................................................................................................................... - 196 -
المراجع........................................................................................................................................................................................... - 200 -
- 8. - 7 -
يقذيخ
اعشالاؾ مخػذدة لؿت هي ي الس لؿت
general-purpose
ال ًم مػحن لىىع مىحهت ليعذ ار ,
بىظام اسجباؾها ًم الشؾم غلي َورل , خؿبيهاث
اليىهٌغ
UNIX
املترحماثجؿىيش في حعخخذم النها الاهظمت بشمجت بلؿت ايػا وحعمي , ي الس بلؿت به الخاضت امجرالب ومػظم الىظامجؿىيش جم خيث
يك ان يشيذ مارا اليػشف ًم يخػلمها ي الس لؿت ان " نيل ونذيما , وؾحرها الدشؿيل واهظمت
" ػل
هما لها ظابهخحن لؿخحن ًم حاء ي الس لؿت جؿىس ان,
BCPL
و
B
,
BCPL
ظىت جؿىيشها جم
1967
سيدشاسد ًماسج بىاظؿت
Martin Richards
في ,
1970
نجىمعى يحن نام
KenThompson
لؿتبخؿىيش
B
في يىهٌغ هظام ًم الاوليت اليسخت لٌخابت واظخخذمها
Bell Laboratories
ا ًلخا ,
ظميذ ولزا للبياهاث اهىاع بهما ًٌي لم للؿخحن
“typeless”
خيث
البياهاث فيغىطش ًل يشؿل
2
. الزايشة في بايذ
ي السجؿىيش جم
بػذ
لؿت
B
ي سيدص ي دييس بىاظؿت
DennisRitchie
الاظخخذام شائػت اللؿت اضبدذ , ياخش وظماث للبياهاث اهىاع اغاقت جم خيث
مٌخباثجؿىيش الي َرل وادي
الهياظيت اليسخت حػشيل جم لزا بػػها مؼ مخىاقهت ًٌج لم اللؿت ًم اليسخ َوجل ي الس لؿت ًم مخخلكت ليسخ ُودوا
اللؿت ًم
ANSIc
ظىت
1989
للمػايش الامشيٍي املػهذ بىاظؿت
American NationalStandards Institute
غام في ,
1999
اليسخت جدذيث جم
وجىظيؼ جدعحن جم خيث الهياظيت
اليسخت َجل وحعمي الخطائظ بػؼ
C99
بحن نبالخػاو الػالم اهداء حميؼ في اللؿت اؾالم جم َرل بػذ ,
واملللمػايش الامشيٍي املػهذ
ى
ـب وظميذللمػايش الػامليت ظمت
ISO c
" يخاب ي الس لؿت احؼشم اهم ًم ,
TheC Programming Language
للمؤلكان "
يشهيؿان وبشيان ي حصس دييغ
Brian W. Kernighanand Dennis M. Ritchie
ي سيدص ي دييس
- 9. - 8 -
انًسزخذيخ االدواد
هي الٌخاب هزا في املعخخذمت الاداة
Code Blocks
يعمي الادواث ًم الىىع وهزا
IDE
الخؿىيش بيئت
ًم الاداة هزه غلي ُالخطى ًٌويم ياخش وادواث ومترحم اًىاد مدشس غلي يجدخى خيث املخٍاملت
بها الخاص املىنؼ
http://www.codeblocks.org
مشل ياخش ادواث اظخخذام ًٌويم
eclipse
او
Pellse c
او
visual studio
.ؾحرهااو
قجم يب
Hello World
ــب جبذا البرمجت لؿاث حػليم يخب اؾلب
HelloWorld
ً بؿباغت يهىم والزي
لمت
HelloWorld
غلي
بخؿىة َرل نبل ظيبذا ولٌىىا الشاشت
emptyworld
: ًالخالي ,
نائمت ًم حذيذ مششوع باوشاء نم
File
واختر
Project
منهااختر هاقزة َلظخظهش
Console Application
اختر
C
الهائمت ًم
املششوع اظم بٌخابت نم
Project title
حشاء يما
انهاء اغؿـ
finish
ملل باوشاء البرهامج ظيهىم
main.c
جدذ
sources ,
قاسؽ ليطبذ مدخىياجه وخزف امللل بكخذ نم
blankfile
للبرهامج بىاء بػمل َرل بػذ ونم ,
build
في باالظكل الخؿأ هزا ظخجذ
Build messages
undefined referenceto`WinMain@16
error:ldreturned 1exitstatus
الخؿأ
ان هىا الخؿأ , الخؿا هكغويظهش املششوع لهزا ياخش وملكاث الاًىاد ًمالاظؿش اثشغش هػيل ان ًٌاملم ًقم قاسؽ امللل ان ليغ هىا
ــب حعمي والتي البرهامج جىكيز غىذها يبذا والتي الاظاظيت الذالت غلي ياليدخى امللل
entrypoint
ال اشان , مشوهت بٍل الخؿأ سظائل مؼ حػامل
حىحل فيهى يما غىه بالبدث نم ئ لص جطل لم وارا الخؿا ظبب لخػشف حيذا خؿأ
جيعاه ًل ؾالبا , الخؿأ سظائل ًم ظدخػلمه ما
يخؿئ الجميؼ مدترفاو مبخذئ يىذ ظىاء مشة ُاو ًم اخؿاء بال ًىد جٌخب ان جخىنؼ ال
- 10. - 9 -
االسبسيخ انذانخ
main function :
ي الس بلؿت مٌخىب بشهامج لٍل
اظاظيت دالت
main function
بلؿت خاضت ليعذ الاظاظيت الذالت قٌشة ان وللخىغيذ البرهامج جىكيز غىذها يبذا والتي
سئعيت دالت يالاخش هي لذيها شاسب ي والس الجاقا مشل يالاخش قاللؿاث , قهـ ي الس
ًالخالي ليطبذ العابو امللل غلي بالخػذيل نم
int main()
{
return0;
}
01 - intro01.c
ـلا هاقزةوجظهش , اخؿاء نبذو يػمل اهه ظخجذ البرهامج بدشؿيل نم
Console
غلي ييدخى قهـهى مكيذ ئ ش بػمل يهىم ال قػليا البرهامج هزا ,
و يؤدي بشهامج يخابت في هبذأ لٍي اهىا حػشقه ان اسيذى ما ًٌول الخها ُالذوا ششح الي مظيخؿش , الاظاظيت الذالت
الخاضت الاًىاد ظىػؼ مػيىت ظيكت
الانىاط َجل بحن
{}
curlybrackets
انشبشخ عهي انطجبعخ
Hello World
ــلا شاشت غلي للؿباغت بشهامج بٌخابت ظىهىم الان
Console
حملت
Hello World
الخالي الٍىد بٌخابت نم,
#include<stdio.h>
int main()
{
printf("HelloWorld");
return0;
}
HelloWorld
01 - intro02.c
- 11. - 10 -
ُالاو ًظؿشي في الا ظابهه ًغ اليخخلل البرهامج
#include<stdio.h>
امللل باغاقتالعؿش هزا يهىم
stdio.h
اظيتشال امللكاث حعمي امللكاث هزا, املششوع الي
Headerfiles
زىابذ غلي يوجدخى,
وهمارج
prototypes
ُدوا
؟ جدذيذا امللل هزا ًغ مارا , ) الخها لهزا مظيخؿش ( الٍىد في اليها هدخاج
stdio
ــلاخخطاس هي
Standardinput andoutput
هزا ان اي
ًل ييدى امللل
همارج
الخاضت ُالذوا
والخشج بالذخل
وظيكت.
#include<>
الٍىد الي اظيتشال امللكاث اغاقت هي
الشاوي
printf("Hello World");
امللل ًغم املىحىدة ُالذوا اخذ هي الذالت هزا
stdio.h
ــلاخخطاس وهي الخشجاو الشاشت غلي الؿباغت هي ووظيكتها
Printformat
ؾباغت اي
الشاشت غلي " "الانخباط مابحن بؿباغت يهىم الزي ابعؿها وهزا الخها اهرظج اظخخذام ًمايتر ولها, الشاشت غلي مػحن جيعيو
هزه
: اءضاح زالزت ًم نجخٍى الذالت
الذالت اظم
printf
جدخاج ال ُدوا هجذ ان ًٌيم وظائـ الي الذالت جدخاج ان ششؾا وليغ, , الذالت جدخاحها التي الىظائـ ُالظخهبا وحعخخذم )( الانىاط
ُللذوا ممحزة قهي, الانىاط ًغ الاظخؿىاء ًٌيم ال ًٌول, وظائـ الي
الهيم وهي الىظائـ
ؾباغخه ادشامل الىظ خالخىا في مهمتها الداه الذالت اليها جدخاج التي
املىهىؾت الكاضلت
semicolon ;
ي الس فيالعؿشاو الخػليمت نهايت حػني وهي
statementend
حذيذظؿش باغاقت جهىم الذالت هلهى بالؿباغت الخاضت ُبالذوا املهمت الاشياء ًم
newline
ال ؾباغت بػذ
قمشال ال الذالت َجل خالت في, ال ام ىظ
ياخش بؿشيهت يخابخه ًٌيم العابو الٍىد
- 12. - 11 -
#include<stdio.h>
int main()
{
printf("Hello ");
printf("World");
return0;
}
HelloWorld
01 - intro03.c
-
حػليمت ًمايثر يخابت ًٌيم
statement
بشالعؿش هكغ في
قاضلت ــب بينها الكطل شؽ
,
مىهىؾت قاضلتاو
;
printf("Hello "),printf("World");
او
printf("Hello ");printf("World");
-
اغاقت الي ظىدىخاج ًٌولظؿش ًمايثر غلي جٌخب ان الىاخذة للخػليمت ًٌيم ايػا
anti-slash
" "الانخباط غالمتي بحن الكطل جم ارا
printf("Hello
World");
-
انزعهيقبد
Comments
:
يؤدي ييلاو الٍىد هزا يػمل ييل حػشف ان اخخجذ الاظباب ًم ظبب الي ًالضم ًم قترة وبػذ , مػيىت وظيكت يؤدي بشهامجا يخبذ َاه لىكترع
الا غلي اثشبالػشاظؿش ًغ هخدذر ًهد باالغلي يخبىاه الزي البعيـ البرهامج ًم َدغ , وظيكخه
ال بالؿبؼ ونتها الٍىد يػمل ييل ظخكهم هل, نل
خاضت يىما الاًىاد اخذ ضادقذ َلػل, الٍىد يكهم ان ظبب اليالاخشهى اخخاج الزي َاضذنائ الخذ اسظلخه , الٍىد يخابت بػذ َاه لىكترع
open
source
واضر الٍىد لجػل, الخػليهاث اهميت جاحي هىا ًوم , يػمل ييل جكهم ولم
/*
author : mohamed hussein
date: 1/9/2017, 10:10:00pm
description: hello world program
*/
- 13. - 12 -
#include<stdio.h>//includeheaderfile
int main()
{
//print helloword statement
//usingprintffunction
printf("HelloWorld");
return0;
}
HelloWorld
01 - intro04.c
البرهامج بىاء ازىاء ججاهلها يخم الخػليهاث ان ارا , هي يما ظدبهي البرهامج هديجت
build
مخػذدة الىطىص اوال الخػليهاث ًم هىغحن اظخخذمىا هىا,
بحن جىغؼ ان يجب والتيالاظؿش
/* */
يعبهه والزي الىاخذبالعؿش الخػليو زاهيا ,
//
ال ًٌول الخػليهاث وغؼ غلي نيىد يىحذ ال,
بديث منهاجٌثر
. الاًىاد بػؼ وبها حػليهاث ًانلى يما الٍىديبذو
-
: سطش ٍي اكثش عهي طجبعخ
ًلمت ؾباغت اسدهالى مارا
ABC
الذالت هكغ باظخخذام َرل قػل يمٌىىا , مىكطلظؿش في خشف ًل مخكشنت
printf
الشمض اغاقت مؼ,
(n)
n
هي
اخخطاس
new line
حذيذظؿش ــل
#include<stdio.h>
int main()
{
//usingntoaddnewline
printf("AnBnC");
return0;
}
A
B
C
01 - intro06.c
- 14. - 13 -
-
انـ
escape sequences
( بػالمت يبذا منها يال الخشوف ًم مجمىغت
مػحن مػني منها وللٍل )
الخالي ُالجذوا في يما
n
حذيذظؿش
?
؟ حػني
t
مكخاح غلي الػؿـ مشل اقهيت معاقت
Tab
b
غاديت معاقت
حػني
v
مشل اظيتس معاقت
Tab
ي اسس بشٍل ًٌول مكخاح
„
حػني
‘
ooo
الشماوي بالىظام سنم
”
" حػني
xhh
غشش ي العذاس بالىظام سنم
f
حعمي
formfeed
r
حعمي
Carriage return
ـلا جهىم
t
معاق باغاقت
مكخاح غلي للػؿـ معاويت اقهيت ت
Tab
name : mohamed
printf("name : t mohamed n");
حعخخذم
,„ ,”,?
جليها التي الخشوف لؿباغت
name : mohamed
printf("name : mohamed n");
name : ‘mohamed„
printf("name : ' mohamed ' n");
name : “mohamed”
printf("name : " mohamed " n");
how areyou ?
printf("how are you ? n");
ال ُاملشا في يما ,هى يما يبهي املػني ًٌول مىكطل يدشفاو الىطىص داخل جىغؼ الاظاط في هي , قهـ الؿباغت في حعخخذم ال هي وللخىغيذ
خالي
الهادم الكطل ًم بذايت اثراملخؿح ظيششح
char *msg = "OKrf";
char ch = '"';
انخىاسصييبد
Algorithms
املىاظب الخل ايجاد في وششع َرل وبػذ حيذا قهمها ًم اوال البذ ما مشٍلت اي لخل , ما ملشٍلت خل هي بخؿىيشها ههىم التي امجرالب اؾلب
وهزا ,
التي الخؿىاث مجمىغت ايجادهى واهما الٍىد يخابتهى ليغ الخل
حاءث هىا ًوم املعخخذمت البرمجت لؿت ًغالىظش بطشف املشٍلت لخل ظخدبؼ
ما مشٍلت خل لٌخابت ؾشيهخحن وهىاى ما مشٍلت لخل املخبػت والخؿىاث اءثشالاح ًم مجمىغت بانها حػشف والتي مياثصالخىاس قٌشة
1
-
يلضامل الٍىد
Pseudocode
الاهجلحزياو ًالػشبيت لؿت باي الخل خؿىاث جٌخب :
خؿىاث شٍل غلي مشجبت نوجٍى مشال ت
ومدذدة واضخت
2
-
الخذقو مخؿـ
Flowchart
الخالي ُبالجذو واملىضخت مشٍلت اي خل لخىضيل غليه املخػاسف الهىذظيت ُالاشٍا ًم مجمىغت :
- 16. - 15 -
الخؿىاث: ُمشا
الؿشيو لػبىس املخبػت
1
-
ابذا
2
-
غى نل
الؿشيو خاقت ذ
3
-
نادمت اثسظيا وحىد غذم يم للخايذواليعاس لليمحناهظش
4
-
العابهت الخؿىة يشس , خاليؾحر الؿشيو ًان ارا
5
-
الؿشيواغبر خالي الؿشيو ًان ارا
6
-
اهخهي
1- Start
2- Stop attheedge ofthestreet
3- Lookleftandrightfor any coming cars
4- If street isn„t clear , repeat previous step
5- If street is clear , crossthe road
6- end
الؿشيو غبىس خؿىاث
انخالطخ
الاظاظيت الذالت ًم ي الس في البرهامج جىكيز يبذا
قهـ واخذة اظاظيت دالت غلي ييدخى ان ي س بشهامج الي البذ
الذالت حعخخذم
printf
الشاشت غلي للؿباغت
حذا هامت الخػليهاث
َرل بػذ البرهامج قهم غلي حعاغذ قهي ,
الخل ولخؿىاث , للمشٍلت واضر جطىس لذيىا نيٍى ان الاًىاد يخابت في البذا نبل يجب
- 17. - 16 -
-
وخىاة سؤال
1
-
يخابت ًٌيم هل
Main
ًم بذال
main
#include<stdio.h>
intMain()
{
printf("HelloWorld");
return0;
}
-
بالؿبؼ
الاخشف لخالت خعاظت ي الس لؿت الن َرل ًٌيم ال
casesensitive
ــق
Main
ًغ جخخلل
main
ظيظهش البرهامج هزا بدشؿيل نمىاولى
الاظاظيت الذالت غلي ياليدخى البرهامج بان ظابها لىاظهش الزي الخؿأ
2
-
مشة ًمايثر الاظاظيت الذالت بٌخابت نمىا ارا ظيدذر مارا
#include<stdio.h>
int main()
{
printf("HelloWorld");
return0;
}
int main()
{
printf("HelloWorld");
return0;
}
-
( خؿأوظيظهش البرهامج يػمل ًل
redefinition of main
الذالت يلشبخػ نمىا اهىا يػني والزي )
main
ار ي الس في به معمىحؾحر وهزا مشة ًمايثر
ا
ؾحرها وال ي الس في ال واخذ حػشيل في حميػا الذالت حػشيكاث دمج امٍاهيت لذيىا وليغ ,الاظاظيت الذالتظخػخبر قايهما َرل خذرلى
- 18. - 17 -
3
-
اظيتشال امللكاث باغاقت الخاصالعؿش خزقىا ارا ظيدذر مارا
#include<stdio.h>
int main()
{
printf("HelloWorld");
return0;
}
-
جدزيش سظالتظخظهش ًٌول , البرهامج ظيػمل
warning
اظخخذامىا ًم الخدهو يعخؿؼ لم املترحم ان خالضتها ًٌولالخش مترحم ًم جخخلل
للذالت
printf
الىمىرج يجذ لم الهه
prototype
ان ظيكترع وبالخالي , )الخها (ظىػشقه بها الخاص
الىظائـ ًممخؿحر غذد جدخاج الذالت َجل
,
مالكش وظخػشف الخالي الٍىد حشب
int main()
{
printf(22);
return0;
}
- 20. - 19 -
انًزغيشاد
الاظاظيت الكٌشة جبني
الالي للخاظب
البياهاث ًم مجمىغت لذيىا اهىا غلي
Data
مػالجت بػمل ههىم
Processing
مشٍلت ًل خعب ما بؿشيهت لها
مػل الي وجدىيلها
ىماث
Information
لها مػاحت بػمل ويهىم الاغذاد وهي املعخخذم ًم بياهاث ياخز اهه ظىجذ ُيمشا الخاظبت الالت بشهامج لىاخز ,
الىديجت ويػؿي الهعمتاو الػشباو الؿشحاو الجمؼ ــي
يا بديث, الشنمحن حمؼ هديجت ويػؿي سنمحن املعخخذم ًم ياخز بشهامج يخابت هشيذ اهىا لىىكترع
الخالي الشٍل خذ
- pleaseinsertthe firstnumber: 12
- pleaseinsertthe secondnumber: 14
- theresultof 12+14is 26
ه رايشة لذيه الخاظب قانالبشش ًهد مشلىا جماما خعىا ؟ الجمؼ غمليت اءشاح لخحن والشاوي ُالاو الشنم بهيمت ظىدخكظ ًاي هىا ُالعؤا
الاخشى
اهىاغها اخخالف غلي
انزاكشح
Memory
: منها هىغحن ويىحذ البياهاث ًلخخضي مٍان هي الزايشة
الػشىائيت الزايشة
random access memory RAM
:
مخؿايشة رايشة بانها حػشف
Volatilememory
بمجشد مدخىياتها جكهذ انها اي
وا منها اءةشباله حعمذ ولٌنهاالخياس اههؿاع
غليها لٌخابت
قهـ اءةشاله رايشة
read onlymemory ROM
:
مخؿايشةؾحر رايشة بانهاجخمحز
non-volatilememory
ختي بمدخىياتها جدخكظ انها اي
الخياس اههؿاع غىذ
والٌخابت اءةشباله حعمذ اهىاع جىحذ الان ًٌول قهـ منها اءةشباله حعمذ الاظميشحر وخيث الاضل في وهي
جخٍى
الخالي الشٍل في يما , اليهيشحر )غشش ي (بالعذاس غىىان له بايذ ًل , البايخاث ًم مجمىغت ًم رايشة ًل ن
ًوالػىاوي الزايشة
- 21. - 20 -
ٍانزخضي وحذاد
Storage units
ا في اما امشوالج امشالٌيلىح يهاط والىصن, وهٌزاوالعىديمترباملتر يهاط ُقالؿى ؾحره ًغ جمحزه وخذة ئ ش لٍل
البذ هي وخذةاضؿش قان لخاظب
Bit
غلي ييدخى اماوهى ومٌشل اوعخىسشج ًغ غباسة داخليا نيٍى والزي
1
او
0
وًل
8
وًل بايذ نجٍى بذ
1024
يما وهٌزا ييلىبايذ نجٍى بايذ
الخالي ُالجذوا في
الىخذة
الىضل
البذ
Bit
واخذاوضكش اما
البايذ
Byte
8
بذ
الٍلمت
Word
2
, بايذ
16
بذ
الٌيلىبايذ
Kilobyte KB
1024
بايذ
امليجابايذ
MegabyteMB
1024
ييلىبايذ
الجيجابايذ
Gigabyte GB
1024
ميجابايذ
ابايذرالخح
Terabyte TB
1024
حيجابايذ
انًزغيشاد
Variables
وج , البياهاث ًجخضي في اظخخذامها لؿشع الزايشة في حجضها يخم ًاماي هي
الدجم في خخلل
Size
قلذيىاالخشمخؿحر ًم
1
و بايذ
2
و بايذ
4
و بايذ
8
و بايذ
10
الاسنام مؼ يخػامل الزي ًغ يخخلل الصخيدت الاسنام مؼ يخػامل قالزي مػها للخػامل اثراملخؿح ًم هىع البياهاث ًم هىع ولٍل , بايذ
لهممحز اظممخؿحر لٍل انواخحر, الخهيهيت
Identifier
يخم
. مىه اءةشللهاو غليه للٌخابت ظىاء به اليه الاشاسة
-
غىه باالغالن ههىم انمخؿحر اي اظخخذام نبل البذ
Variabledeclaration
يخابت ُخال ًم َرل ويخم , الزايشة في اوال له مٍانحجضاخش بمػنياو
مباو مباششة نيمت اغؿيىاه ُخا في نيمخه زماملخؿحر اظم زماملخؿحر هىع
. َرل ويكػل ذئيت
مخؿحر ًغ الاغالن ؾشيهت
-
الاخشف لخالت خعاظت لؿت ي الس
casesensitive
ــق
a
ًغ جخخلل
A
.
-
) = ( يالدعاوسمض ُخال ًمللمخؿحر نيمت اغؿاء يخم
assignment
-
قهـ اظمه يخابت يخممخؿحر اي يمدخى اءةشله
identifier
- 22. - 21 -
-
نيٍى ان يجباملخؿحر اظم
الششوؽ هزا ًغم
مشل بشنم يبذا ال
2num
معاقاث غلي ييدخى ال
first num
سمىص غلي ييدخى ال
$,%,# @
) _ ( غذا ما وهٌزا
underscore
معبها معخػمل نيٍى ال
مشل راتها بالؿت الخاضت الٍلماث وهي ي للس املذجىصة الٍلماث ًم نيٍى ال
int, float,struct,char
الظ امشلت
اثرمخؿح ماء
اظماء
صخيدت
خاؾئت اظماء
int number ;
int 5num;//start with number
char _ch;
char #ch;//start with symbol #
float result;
float first num ;//contain space
انظحيحخ االعذاد يزغيشاد
Integers variable
الصخيدت الاغذاد مؼ جخػامل التي اثراملخؿح
هي
املخؿحر
الدجم
مالخظاث
int
ؾالبا
4
بايذ
short
2
بايذ
ــلاخخطاس
short int
long
8
بايذ
ــلاخخطاس
long int
خذودمخؿحر لٍل
limits
مػها يخػامل التي للهيم
مخؿحر اي خذود ولخدذيذ الخؿبيو خعب حجم ًمايتر يىحذ لزا ,
الاغ مؼ اليخػاملاملخؿحر ًان ارا
العالبت ذاد
Unsignednumbers
( الطيؿت َجل وعخخذم نيمت ي وانصالطكش هي نيمت انل قان
2n
-1
)
خيث
n
البخاث غذدهى
bits
هىع ًماملخؿحر قمشال
short
ُا غذد
bits
* البايخاث غذد ييعاو
8
اي
2
*
8
ييعاو
16
و بذ
216
يحعاو
65536
نيمت ي انص جطبذ واخذ وؾشح
65535
ال ًان ارا
العالبت الاسنام مؼ يخػامل شنم
signed numbers
نيمت انل قان
( -2n-1
)
املخؿحر قمشال نيمت ي وانص
( 2n-1
-1)
هىع ًماملخؿحر قمشال
هي نيمت انل
-
32768
هي نيمت ي وانص
32767
-
الشىائي الىظام في الهه العالبت الاغذاد خالت في البخاث غذد ًم واخذ بؿشح نمىا
binary system
اليعاس حهت ًم بذاخش جخطيظ يخم
least
significantbit
لالشاسة
0
و مىحب حػني
1
ظالب حػني
- 23. - 22 -
صخيدت اغذاد اثرمخؿح ًغ لالغالن امشلت
int average ;
short min = 33 ;
long sum ;
الىاجج وؾباغت سنمحن حمؼ هديجت بدعاب يهىم بشهامج ظىٌخب : ُمشا
//first number to be added
short firstNumber = 12 ;
//second number to be added
short secondNumber = 14 ;
//result of addition
short sum = firstNumber + secondNumber ;
//print addition result
printf("sum is %d n",sum);
sumis 26
اراملخؿح باظخخذام سنمحن حمؼ بشهامج
ث
[02 - var&aritm01.c]
-
َرل بػذظؿش ًل ًوم البرهامج ًم الؿشع جىضر معبها غشقىا يما الخػليهاث
short firstNumber =12 ;
short secondNumber = 14 ;
-
هىع ًم اثرمخؿح ًغ باالغالن نمىا
short
الؿش وظيؤدي ضؿحرة مػها حػاملىا التي الاسنام الن الىىع هزا واظخخذمىا
يالاخش الاهىاع بالؿبؼ , ع
يحذو بال الزايشةتهذس ال ختي قهـ َاخخياحاج يىاظب الزي الىىعجخخاس ان َغلي يجب لٌىىا , صخيدت
- 24. - 23 -
-
firstNumber, secondNumber
) = ( يالدعاو غالمت باظخخذام َورلمخؿحر لٍل مباششة نيم باغؿاء نمىا , اثراملخؿح َجل اظماء هي
assignment operator
ماملخؿحر نيمت الغؿاء يعخخذم الزي
short sum =firstNumber +secondNumber ;
-
يعمي يالدعاو غالمت يمحن غلي الجضء , الشنمحن حمؼ هاجج ًلخخضيمخؿحر ًغ اغلىا
expression
املخؿحر يمدخى بجمؼ يهىم والزي
firstNumber
واملخؿحر
secondNumber
الجمؼ غالمت ُخال ًم
ي الس في الخعابيت بالػملياث الخاضت الػالماث اخذي وهي
printf("sum is %d n",sum);
-
الؿباغت دالت اظخخذمىا
printf
الشمض وحىد وهالخظ
%d
املخؿحر يبمدخىالشمض َجل مٍان ُحعدبذ ان الذالتيخبر الزي
sum
هزا واظخخذمىا ,
ص اغذاد مؼ هخػامل الهىا جدذيذاالشمض
خيث خيدت
d
حػني
decimal
ــب اظدبذالها ًٌويم
%i
حػني والتي
integer
-
املخؿحر اغكىا
sum
مٍان اظدبذاله ليخم الذالت زاوي ًىظيـ
%d
-
%d , %i
حعمي هىع ًل خعب الخها يظجر يما وؾحرها
conversionspecifier
ج لػذد يمعاو وظيـ ُاو بػذ الىظائـ غذد نيٍى ان ويجب
َل
هىع ًل خعب الترجيب وبىكغ الشمىص
الخالي يخابت قيمٌىىا الىىع هكغ ًم مباششة نيمتاومخؿحر نيٍى ان ًٌيم والىظيـ ,
printf("sum of %d+ %d =%d n",firstNumber ,secondNumber , sum);
Sumof 12+ 14=26
ـي مباششة نيم جاخز ان الذالت َلخل ًٌويم
12
ا في
ُملشا
العابهت الىديجت هكغ
printf("sum of %d+ %d =%d n",12 ,secondNumber ,sum);
-
واخذظؿش في الىىع هكغ ًممخؿحر ًمايثر ًغ بالغالن ههىم ان ًٌيم
intfirst ,second= 44, third,forth;
- 25. - 24 -
-
ان ظبو الزياملخؿحر اظم يٌخبمخؿحر اي يمدخىلخؿحر
ياخذ انللمخؿحر ًٌيم يما , له حػينها ادشامل الهيمت زم ) = ( غالمت زم الزايشة في له حجضها
اخشمخؿحر نيمت
first = 22;
second= 56;
third =first;
انحقيقيخ االعذاد يزغيشاد
floating-point variables
-
هي الخهيهيت الاغذاد مؼ جخػامل التي اثراملخؿح
املخؿحر
ال
دجم
مالخظاث
float
4
بايذ
double
8
بايذ
-
الزايشة في مخخلكت بؿشيهت ينهاضجخ يخم الخهيهت الاغذاد الن ؟ الخهيهت الاغذاد مؼ للخػامل مخخلل هىع يىحذ ملارا هىا ُالعؤا
الىاجج وؾباغت خهيهحن سنمحن غشب خاضل بايجاد يهىم بشهامج ظىٌخب ُمشا
float firstNum , secondNum , result;
//assign value to each variable
firstNum = 2.4 ;
secondNum = 2.0 ;
//calculate result
result = firstNum * secondNum ;
//print result
printf("result is %f n",result);
result is 4.800000
[ 02 - var&aritm02.c]
-
ي يخخلل ال البرهامج
هىع ًم اثرمخؿح باظخخذام هىا نمىا , الصخيدت الاغذاد اثرمخؿح باظخخذام الجمؼ بشهامج ًغ ارشح
float
مؼ هخػامل الهىا
خهيهيت اغذاد
- 26. - 25 -
-
ي الس في الخعابيت الػملياث اءشالح الػالماث اخذ ايػا وهي , الػشب غمليت اءشالح ) * ( غالمت هىا اظخخذمىا
-
الشمض باظخخذام نمىا
%f
ال
هىع ًم الخهيهيت الاغذاد ؾباغت في يعخخذم زي
float
-
ــق الخهيهيت والاغذاد الصخيدت الاغذاد بحنللخمحز ) . ( الػششيت الكاضلت حعخخذم ي الس
2.0
ؾحر
2
انحشوف يزغيش
characters
ًلمت باظخخذام غىه الاغالن يخم
char
اثراملخؿح في هىعاضؿشوهى ,
1
ًم , قهـ بايذ
0
الي
255
ًم , قهـ املىحبت الهيم خالت في
-
128
الي
127
في
املعخ الؿشيهت بىكغ الزايشة في داخليا جخضيىه يخم الىىع هزا الن ؟ واملىحبت العالبت باالغذاد الخشوف غالنت وما العالبت الهيم خالت
في خذمت
الصخيدت الاغذاد اثرمخؿح ًم اهه غلي مػه الخػامل ًٌقيم الصخيدت الاغذاد
ايػا
ًلمت بؿباغت يهىم بشهامج : ُمشا
Hello
الخشوفمخؿحر باظخخذام
char ch1 = 'H' , ch2 = 'e' , ch3 = 'l' , ch4 = 'l' ,ch5 = 'o' ;
//print char variables content
printf("%c%c%c%c%c n", ch1 , ch2 , ch3 , ch4 , ch5 );
Hello
[ 02 - var&aritm03.c ]
-
ًغ باالغالن نمىا
5
هىع ًم اثرمخؿح
char
مباششة نيمتمخؿحر ًل واغؿيىا
انخباط غالمتي بحن جىغؼ ي الس في الخشوف
(
‘ „
,)
الشمض اظخخذمىا
%c
ي الس في الخشوف بؿباغت الخاص
-
الخشوفمخؿحر باظخخذام سنمحن حمؼ بشهامج ُمشا
//first number to be added
char firstNumber = 12 ;
//second number to be added
char secondNumber = 14 ;
//result of addition
char sum = firstNumber + secondNumber ;
//print addition result
printf("sum is %d n",sum);
sumis 26
[ 02 - var&aritm04.c ]
- 27. - 26 -
-
ا الجمؼ بشهامج غلي بالخػذيل نمىا
مخؿحر ًل واظدبذلىا لعابو
short
ــب
char
جخؿحر لم الىديجت ,
-
الشمض اظخخذمىا اهىا هالخظ
%d
الشمض وعخخذم ولممخؿحر يمدخى لؿباغت
%c
جخػامل ان الذالت ًم هشيذ الهىا
interpret
مخؿحر اهه غلياملخؿحر مؼ
صخيدت اغذاد
-
الشمض اظخخذمىالى
%c
ا الهيمت ؾباغت ظيخم
ملهابلت
ــل
26
)الخها اليه م(ظىؿش الاظٍي ُحذو ًم
( وهي
→
)
printf("sumis%cn",sum);
→
sumis
-
اثراملخؿح ؾباغت جيعيو غلي امشلت
-
باظخخذام لالسنام غذد انل جدذيذ مؼ صخيذ سنم ؾباغت
%2d , %3d%4d
وهٌزا
intfirstStd = 120;
intsecondStd= 90;
printf("weight is%3d KGn",firstStd);
printf("weight is%3d KGn",secondStd);
weightis120KG
weightis 90KG
-
لالسنام غذد انل خذدها
3
للشنم معاقت اغاقت نخم ,
90
ليطبذ
3
اسنام
digits
- 28. - 27 -
-
الػششيت الػالمت بػذ الاسنام غذد جدذيذ مؼ خهيهي سنم ؾباغت
float first =34.567;
float second = 7844.3215;
printf("degree is%.2f n",first);
printf("degree is%.3f n",second);
degree is34.57
degree is7844.321
-
الشمىص باظخخذام الشماوي والىظامغشش ي العذاس بالىظام نيمت ؾباغت
%o,%x
الترجيب غلي
int value= 127;
printf("value is%xinhexadecimaln",value);
printf("value is%oin octal n",value);
valueis7fin hexadecimal
valueis177in octal
-
انسبنجخ االعذاد و انًىخجخ االعذاد
:
ال ُخال ًم ال ام ظالبت اغذاد مؼ ظيخػاملاملخؿحر ًان ارا جدذيذ يخم
ٍلمخحن
unsigned
او قهـ املىحبت لالغذاد
signed
والعالبت املىحبت لالغذاد
اي والعالبت املىحبت الاغذاد مؼ جخػامل انها الصخيدت الاغذاد اثرملخؿح اغيترالاقت الخالت ,
signed
الخالي ُاملشا في يما
- 29. - 28 -
signed intfirst = -127;
unsignedint second= 12;
intthird= -140;
printf("value is%d n",first);
printf("value is%d n",second);
printf("value is%d n",third);
valueis -127
valueis12
valueis -140
انثىاثذ
constants
جاخ ان بمجشد انها اثراملخؿح ًغ جخخلل ولٌنها اهىاغهاو منها الؿشع في اثراملخؿح مشل الشىابذ
زابذ مدخىاها ان اي حؿحرها ًٌيم ال مػيىت نيمت ز
الشىابذ ًغ لالغالن ؾشيهخحن ويىحذ غنها الاغالن غىذ مباششة نيمتها جاخز قهي ولزا
املذجىصة الٍلمت باظخخذام
const
غىه الاغالن فياملخؿحر هىع نبل
الٍلمت باظخخذام
#define
الٍلمت باظخخذام
const
الٍلم باظخخذام
ت
#define
حعمي الشاهيت اما , الشابذ لهزا الزايشة في مٍانبذجض جهىم الاولي ان الؿشيهخحن بحن مالكش
string replacement
الشابذ اظم اي ُاظدبذا يخم خيث
البرهامج جشحمت نبل َورل بهيمخه البرهامج داخل
يبحرة خشوف الشىابذ اظماء نجٍى ان الػشف يحش
capitalletters
ورل
زىابذ ًغ لالغالن امشلت , الاًىاد داخل اثراملخؿح ًغ جمحزها ليخم َ
- 30. - 29 -
#defin MAX 20
#define SIZE 100
const int LIMIT = 33 ;
const char CH = 'A';
ُمشا
//define max constant
#define MAX 20
int main()
{
//define another constant
const int num = 80 ;
printf("MAX value is %d n",MAX );
printf("num value is %d n ",num);
return 0;
}
MAXvalueis 20
numvalueis 80
[ 02 - var&aritm05.c]
ُالاو الشابذ غشقىا
MAX
باظخخذام
#define
الهيمت واغؿيىاه
20
نها في مىهىؾت قاضلت وحىد غذم وهالخظ
ليعذ الؿشيهت هزا الن يلشالخػ يت
الخىحيهاث اخذ هي اهما البرهامج حػليماث اخذي
directives
البرهامج جشحمت نبل جىكيزها يخم التي
#define MAX 20
الٍلمت وباظخخذام اثراملخؿح ًغ الاغالن بالؿشيهتاخش زابذ غشقىا
const
الهيمت واغؿيىاه
80
const int num = 80 ;
ب نمىا
الذالت باظخخذام الشابخحن ؿباغت
printf
زابذ نيمتحؿحر ُهداو اهىا خؿا سظالتوظخظهش البرهامج يػمل ًل الشىابذ اخذ نيمتحؿحر خاولىا ارا
read-onlyvariable
-
انحسبثيخ انعًهيبد
arithmetic operators
:
, + ــي سمىص باظخخذام ي الس في الخعابيت الػملياث جخم
-
, *,
ـب حػشف والتي % , /
arithmeticoperators
الشمض
الىظيكت
+
الجمؼ
-
الؿشح
- 31. - 30 -
*
الػشب
/
الهعمت
%
الهعمت باقي
الشمىص َجل اظخخذام يىضر بشهامج ُمشا
//operands
int firstNumber = 100, secondNumber = 3 ;
printf("addition result is %d n",firstNumber + secondNumber );
printf("subtraction result is %d n",firstNumber - secondNumber );
printf("multiplication result is %d n",firstNumber *secondNumber );
printf("division result is %d n",firstNumber / secondNumber );
printf("remainder result is %d n",firstNumber % secondNumber );
additionresultis 103
subtractionresultis97
multiplication result is 300
divisionresultis33
remainderresult is 1
[ 02 - var&aritm06.c]
-
وخىاة سؤال
-
؟ غىه ًوػل ان نبلمخؿحر اظخخذام ًٌيم هل
int main()
{
printf("valueis%d n",num);
return0;
}
املخؿحر انوهى , خؿأ ظيدذر , ًٌاليم
num
معبها غىه الاغالن يخم لم
undeclared
- 32. - 31 -
-
اخش؟ هىع ًمملخؿحر مشابه باظماملخؿحر حعميت ًٌيم هل
int num;
float num;
املخؿحر هىع في حػاسع يعمي هزا , َرل ًٌيم ال
conflictingtypes
اخذهما الاظم هكغ ,
int
والاخش
float
-
؟ له مباششةاو مبذئيت نيمت اغؿاء نبلمخؿحر اظخخذام ًٌيم هل
int main()
{
int num;
printf("value of num is %d n",num);
return 0;
}
ال لخجىب َورل غنها الاغالن غىذ اثرللمخؿح مبذئيت نيمت باغؿاء يىصر ولزا مخىنػتؾحراملخؿحر نيمت ًٌول اخؿاء نبذو ظيػمل الٍىد هىا
الؿحر هيم
.مخىنػت
- 34. - 33 -
انشيىص
operators
بػؼ غلي ي الس يجدخى
الشمىص
الػم , الخعابيت الػملياث في حعخخذم التي
املىؿهيت لياث
ًاالحي وهي وؾحرها املهاسهت وغملياث
انحسبثيخ انعًهيبد سيىص
arithmetic operators
:
ظ ونذ وخالقه والؿشح الجمؼ ــي الخعابيت الػملياث اءشباح الخاضت الشمىص هي
ب
العابو الكطل في مػها الخػامل ملا و
انعالقيخ انعًهيبد سيىص
relational operators
:
ال هي
( صخيدت اما الػملياث َجل وهديجت الهيم بحن املهاسهت غملياث اءشباح الخاضت شمىص
1
( خاؾئتاو )
0
)
الػالنيت الػملياث
الرمز
الوظيفة
a > b
هل
a
ًمايبر
b
ال ام
a >=b
هل
a
يحعاواو ًمايبر
b
ال ام
a <b
هل
a
ًماضؿش
b
ال ام
a < =b
هل
a
او ًماضؿش
يحعاو
b
ال ام
a ==b
هل
a
يحعاو
b
ال ام
a != b
هل
a
يحعاو ال
b
ال ام
َرل بػذ يظجر يما مػحن ششؽ ًم للخدهو ؾالبا الشمىص َجل حعخخذم
الشمىص َجل اظخخذام يىضر بشهامج ُمشا
- 35. - 34 -
printf("12 > 10 = %d n", 12 >10 );
printf("10 >= 12 = %d n", 10 >= 12);
printf("10 >= 10 = %d n", 10 >= 10);
printf("44 < 55 = %d n", 44 < 55);
printf("44 <= 22 = %d n", 44 <= 22);
printf("44 <= 44 = %d n", 44 <= 44);
printf("10 == 55 = %d n", 10 == 55);
printf("10 == 10 = %d n", 10 == 10);
printf("10 != 10 = %d n", 10 != 10);
printf("10 != 44 = %d n", 10 != 44);
12
>
1
=
1
10
=>
12
=
0
10
=>
10
=
1
44
<
55
=
1
44
=<
22
=
0
44
=<
44
=
1
10
==
55
=
0
10
==
10
=
1
10
=!
10
=
0
10
=!
44
=
1
[ 03 - operators01.c]
انًُطقيخ انعًهيبد سيىص
logical operators
:
:وهي ششؽ ًمايثر بحن للجمؼ الػالنيت الػملياث سمىص مؼ حعخخذم
حػؿي )و ( بمػني &&
true
الؿشقحن ًان ارا
true
حػؿي َرلؾحر ,
false
وحػؿي )(او بمػني ||
true
ًليهمااو الؿشقحن اخذ ًان ارا
true
وحػؿي,
false
خالت في
الؿشقحن ًان ارا واخذة
false
ًم الىديجت بػٌغ جهىم !
true
الي
false
والػٌغ
الاخؿاء ولخجىب للىغىح ششؽ ًل ُخى الانىاط اظخخذام يكػل
- 36. - 35 -
! املىؿهيت الػمليت
||و && املىؿهيت الػملياث
الػمليت وهديجت الػمليت ؾشفي اخخماالث ًل يىضر منها غمليت لٍل الخهيهت ُحذو
وليغ ششؽ ًمايثر غلي الػملياث َجل اءشاح ًٌيم, خالت ًل في
قهـ ششؾحن
&&
||
!
املىؿهيت الػملياث اظخخذام يىضر بشهامج ُمشا
printf("(12 >10) && (12 > 11) = %d n", (12 >10) && (12 > 11) );
printf("(14 >10) && (12 != 11) = %d nn", (14 >10) && (12 != 11)
);
printf("(12 >10) || (12 > 11) = %d n", (12 >10) || (12 > 11) );
printf("(14 >10) || (12 != 11) = %d nn", (14 >10) || (12 != 11)
);
printf("!(12 >10) = %d n", !(12 >10) );
printf("!(14 >10) = %d n", !(14 >16) );
(
12
>
10
( && )
12
>
11
= )
1
(
14
>
10
( && )
12
=!
11
= )
1
(
12
>
10
( || )
12
>
11
= )
1
(
14
>
10
( || )
12
=!
11
= )
1
(!
12
>
10
= )
0
(!
14
>
10
= )
1
[ 03 - operators02.c ]
- 37. - 36 -
ٌوانُقظب انضيبدح يؤثشاد
increment and decrement operators
:
ه مىه ويىحذ , اسيتشٌالخ الخلهاث مؼ بٌثرة حعخخذم التي الشمىص اخذ , واخذبهذاس اههاضهاو واخذبهذاساملخؿحر نيمت لضيادة حعخخذم
ىغحن
Pre
مشلاملخؿحر نبلالشمض يىضر
++num, --count
Post
الشمض يىغؼ
املخؿحرمشل بػذ
num++ ,coun--
قاخشملخؿحر الهيمت َجل بخػحن نمىا ارايظهش مالكش , خخما ظيدذر الىهطاناو الضيادةرجازح راجهاملخؿحر غلي يخخلل ال بينهما مالكش
مشال
int num= 4;
int x= ++num;
املخؿحر هىا
num
ظيطبذ
5
املخؿحر اما ,
x
ظيطبذ
4
ام
5
خالت في
اظخخذام
pre
الٍىد ان ايللمخؿحر الهيمت حػحن زم اوال جدطل الضيادة قان
الخالي للٍىد يمعاو باالغلي
املخؿحر ,
x
ييعاو
5
int num= 4;
num= num +1;
int x= num ;
ُخا في اما
post
الضيادة زم اوال يدذر الهيمت حػحن قان
int num= 4;
int x= num++;
نيمت
num
يحعاو
5
ونيمت
x
يحعاو
4
ــل يمعاو الٍىد هزا,
int num= 4;
int x= num ;
num= num +1;
. الىهطانملؤزش باليعبت ي الص وهكغ
- 38. - 37 -
ثبنجزبد خبطخ سيىص
bitwise operators
:
وهي البذ يمعخى غلي الهيمتاواملخؿحر مؼ جخػامل الشمىص َجل
الرمز
املعني
&
And
|
Or
^
Xor
>>
Rightshift
لليمحن اختصالا
<<
Left shift
لليعاس اختصالا
~
Not
غٌغ
, ^, | , & غملياث
~
واليعاس اليمحن حهت اختصالا غملياث
- 39. - 38 -
يعمي والزي اليمحن حهت بذ ُقاوالطكش ًم يبذا البخاث جشجيب ان وػشف ان الهام ًم
Leastsignificantbit
جشجيب
سنم يليه والزيضكش سنم ه
1
وهٌزا
: للخىغيذ ُمشا
char firstNum = 4 ;//binary= 00000100
char secondNum =10 ;//binary= 00001010
char andResult =firstNum &secondNum ;// (00000100) & (00001010) = 00000000
char orResult =firstNum |secondNum; // (00000100) | (00001010) = 00001110
char xorResult =firstNum ^secondNum; // (00000100) & (00001010) = 00001110
char notResult =~firstNum ;// ~(00000100) = 11111011
char rightShiftResult =firstNum >> 2; //(00000100) = 00000001
char leftshiftResult =firstNum << 2; //(00000100) = 00010000
غلي الهعمت يحعاو لليمحن اختصالا ان هىا الهامت املالخظاث اخذ ًٌول , اثشاملؤز َلخل الػمليت الاظخخذاماث ظىػشف الخها
2
الاصاخت اثشم غذد *
في الػشب يحعاولليعاس اختصالا َويزل
2
ًالخالي اختصالا اثشم غذد *
4 >> 2 = 1;//00000100>> 2 = 00000001which equal 4 / (2*2)
4 << 1 = 8;//00000100<< 1 = 00001000 whhichequal4* 2 * 1
انقيى ٍرعي يؤثشاد
assignment operators
:
( هٌخب ان ًم قبذال الٍىد يخابت في حعهل انهاؾحر الىظيكيت الىاخيت ًم حذيذا ئ ش جكػل ال اثشاملؤز هزه
x= x+3
( هٌخب ان ًٌيم )
x+= 3
)
ًالخالي
x+= 3 ; //equaltox = x+3
x-= 3 ; //equaltox = x -3
x*= 3 ; //equaltox = x* 3
x/= 3 ; //equalto x=x / 3
- 40. - 39 -
x%= 3 ; //equalto x=x %3
x&= 3 ; //equalto x = x& 3
x|= 3 ; // equaltox = x| 3
x^= 3 ; //equalto x= x^ 3
x>>= 3 ; //equalto x= x>>3
x<<= 3 ; //equalto x= x<<3
الخش َىع ٍي انزحىيم يؤثش
cast operator
:
ــلباالخش هىع ًم البياهاثاواملخؿحر جدىيل غمليه حعمي
casting
: هىغحن ويىحذ
غمني جدىيل
implicit
ايػا وحعمي راجه املترحم بها يهىم
promotion
نيمت لخعاب اهه خيث ,
expression
حميؼ نجٍى ان يجب
لز الىىع هكغ ًم الخذود
الاغلي الىىع الي الىىع في املخخلكت الخذود بخدىيل املترحم يهىم ا
ضشيذ جدىيل
explicit
الاجيه الطيؿت ُخال ًم َورلالخش مػحن هىع لخدىيل املبرمج به يهىم
intfirst =12;
float second = 23.8;
float total =first +second ;
املخؿحر بخدىيل املترحم ظيهىم هىا
first
الي
float
مدخىاه ليطبذ
12.0
ــلا نويٍى
expression
ًغ غباسة
23.8+ 12.0
الػمني الخدىيلهى وهزا
intfirst =12;
float second = 23.8;
float third= (float)first;
float total =first +third;
املخؿحر بخدىيل نمىا
first
ًم
int
الي
float
ضشيذ بشٍل
الان الىىع هكغ ًم الخذود الن جدىيل اي اءشاح الي املترحم يدخاج ًل وبالخالي ,
جدىيل مشل انل هىع الي اغلي هىع جدىيل ان مالخظت يجب
int
الي
char
البياهاث في قهذ الي يؤدي
truncate
اندجشيخ انـعجبسح
expressions
:
- 41. - 40 -
با املىحىد الشمىص اخذ بينها الخذود ًم مجمىغت هي
الاحي مشل الشياغيت باملػادلت اشبه وهي مباششة نيماو اثرمخؿح اما الخذود وهزا , ي لس
h = x+y *z ;
g = x/ 3 -4 +t ;
l = x>4||y <6 ;
يعمي )=( غالمت يمحن غليهى ما ًل
expression
ـلبا يعميو
rvalue(rightvalue)
و قهـ )=( غالمت يمحن غلي ياحي اهه اي
غلي ياحي ان ًٌيم ال
اما ,اليعاس
lvalue(left value)
الزايشة في غىىان النهايت في يمشل الزيمخؿحر ًغ غباسة وهي ايػا ًاليم غلي جاحي ان ًٌويماليعاس غلي جاحي التي قهي
انـ قيًخ حسبة في االسجقيخ
expression
:
املػادلت في خذ ًل نيمت خعاب جشجيب اي لخدذيذ نىاغذ هىاى
( لذيىاقلى
2
+
4
*
5
الىديجت هل )
22
ام
30
الىديجت الاظبهيت لهىاغذ باليعبت ,
22
زم + زم % زم / زم * زم )( هي الخعابيت الػملياث في الاظبهيت
-
الاخؿاء ولخجىب وغىخاايثر املػادلت لجػل )( اظخخذام ًمهٌثر ان والاقػل ,
هشيذه الزي بالترجيب الخذود نيمت خعاب وليخم
حذو
الترجيب ُ
ثبنجزبد انخبطخ انًؤثشاد اسزخذايبد
مػحن بذ نيمتجطكحر
reset
باظخخذام َرل ويخم
&
هل مػحن بذ نيمت ًم الخدهو
1
او
0
باظخخذام َرل ويخم
&
مػحن بذ نيمت وغؼ
set
ـب
1
جبذيل
مػحن بذ نيمت
Toggle
ًم ارا
1
الي
0
باظخخذام َورل والػٌغ
^
معين بت قيمةثصفير
reset
حػؿي
&
الهيمت
1
ـــب الهيمخحن ًاهذ ارا
1
ــب اخذهما ًان ارا اما
0
دائما قالىديجت
0
ــب مػحن بذ نيمت هػؼ ان اسدها ارا لزا ,
0
بػمل ههىم
&
َلخل
بها ياخش نيمت مؼ الهيمت
0
و جطكحره ادشامل البذ مٍان
1
ا ًٌيم َجل يالاخش الهيمت ولخدذيذ , يالاخش ًالاماي في
الىكيمؤشش مؼ اختصالا وعخخذم ن
يلي يما باهكعىا مباششة الهيمت هدذداو
- 42. - 41 -
ـب الشاوي البذ نيمت وغؼ
0
ُمشا
//value
unsigned short value = 0b1000110;
//generate the second value
unsigned short reset = ~ (1<< 2);
//before
printf("value before is 0x%x n",value);
//apply reset
value &= reset ;
//after
printf("value after is 0x%x n",value);
valuebefore is 0x46
valueafter is 0x42
[ 03 - operators03.c ]
( باظخخذام َورل الشىائي بالىظام نيمت واغؿيىاه صخيذمخؿحر حجضها
0b
ال الهيمت اليجاد زم, الهيمت نبل )
غمل ظيخم تي
&
لخطكحر َورل مػها
الىكي مؼاليعاس حهت اختصالا اظخخذمىا الشاوي البذ
unsigned short reset = ~ (1<< 2);
خيث
2
للشنم اختصا اءشباح اوال نمىا اهىا هىا خذر ما , جطكحره ادشامل البذ سنم هي
1
اختصالا هاجج غٌغ زم جطكحر ادشامل البذ بشنماليعاس حهت
ورل
بىاخذ الشنم وبهيت الىاخذ مٍانضكش لىضر َ
(1<< 2) = (0000 0001) << 2 = (0000 0100)
~(1<< 2) = ~ (0000 0100) = (1111 1011)
املخؿحر قان َوبزل
reset
الهيمت يظيدى
(1111 1011)
,
لٌنها والىكي اختصالا اظخخذام ًم بذال مباششة الهيمت َجل له هػؼ ان ًٌيم وًان
اظهل
املخؿحر نيمت مؼ الاضليت للهيمت & بػمل َرل بػذ نمىا , بٌشحر
reset
الاضليت الهيمت مٍان الىاجج ًوجخضي
value &= reset ;
- 43. - 42 -
value = 0 1 0 0 0 1 1 0
&
reset = 1 1 1 1 1 0 1 1
-------------------------
value = 0 1 0 0 0 0 1 0
ي العذاس بالىظام الهيم ؾبؼ وجم
غشش
مػحن بذ نيمت ًم الخدهو
ا والباقي مىه الخدهو ادشامل البذ مٍان واخذ ًم الهيمت َجل نجخٍى ان بششؽ للخدهو ياخش نيمت مؼ الاضليت للهيمت لهزا & بػمل َرل يخم
, ضكاس
لجملت يششؽ ويعخخذم
if
بالشٍل يما , )الخها اليها م(ظيخؿش
ابؼشال البذ نيمت ًم الخدهو
ُمشا
unsigned short value = 0b1010110;
//generate the check value
unsigned short check = (1<< 4);//bit number is 4
if( (value & check ) == check )
{
printf("bit value is 1n");
}
else
{
printf("bit value is 0n");
}
bitvalue is 1
[ 03 - operators04.c ]
-
اختصالا اظخخذمىا
(1<< 4)
( الهيمت نقعخٍى , ابؼشال البذ ًم للخدهو , بها الخدهو ظيخم التي الهيمت اليجاد
0001 000
وغؼ ًٌيم وًان )
غمل غىذ , اختصالا اظخخذام ًم بذال مباششة الهيمت َجل
&
ـب البذ نيمت ًاهذ ارا الاضليت والهيمت الهيمت َجل بحن
1
هكغهى الىاجج نظيٍى
نيمت
ـب البذ نيمت ًاهذ ارا اما الخدهو
0
الىاجج نظيٍى
0
الخدهو لهيمت يمعاو الػمليت هاجج ًان قارا , الىاجج ًم للخدهو الششؽ حملت اظخخذمىا ,
البذ نيمت قان
1
قهي والا
0
check = (1<< 4) = (0001 0000)
- 44. - 43 -
value = 0 1 0 1 0 1 1 0
&
check = 0 0 0 1 0 0 0 0
------------------------
(0 0 0 1 0 0 0 0) == check => true ,printf("bit value is 1n");
مػحن بذ نيمت وغؼ
set
حػؿي النها َورل | وعخخذم هىا ًٌول & باظخخذام البذجطكحر مشل جماما
1
نيمخه ًليهااو البخحن اخذ ًان ارا
1
بها نيمت مؼ | بػمل ظىهىم لزا ,
1
مٍان في
ـب وغػه ادشامل البذ
1
ـب الخامغ البذ وغؼ
1
ُمشا
unsigned short value = 0b1010110;
//generate the set value
unsigned short set = ( 1<< 5 );
//before
printf("value before is 0x%x n",value);
//apply set
value |= set ;
//after
printf("value after is 0x%x n",value);
valuebefore is 0x56
valueafter is 0x76
[ 03 - operators05.c ]
ال نيمت وغؼ في ظدعخخذم التي الهيمت لخدذيذ اختصالا اظخخذمىا , الشىائي بالىظام مباششة نيمت واغؿاءه الاضليت للهيمتمخؿحرحجض بػذ
الهىا , بذ
بػمل نمىا الخامغ البذ نيمت وغؼ هشيذ
بمهذاس اختصا
5
( الهيمت نظخٍى َوبزل ,
0010 0000
والهيمت الهيمت َجل بحن | بػمل بػذها نمىا , )
الاضليت الهيمت مٍان في الىاجج ًوجخضي الاضليت
value |= set ;
- 45. - 44 -
set = (1<< 5) = (0000 0001) << 5 = (0010 0000)
value = 0 1 0 1 0 1 1 0
|
set = 0 0 1 0 0 0 0 0
-------------------------
value = 0 1 1 1 0 1 1 0
جبذيل
مػحن بذ نيمت
Toggle
ـب ^ غمل جم ارا اهه خيث , ^ الخبذيل في حعخخذم
1
الهيمت َجل ًاهذ قارا ياخش نيمت مؼ
0
الىاجج نظيٍى
1
ًاهذ وارا
1
الىاجج نظيٍى
0
َوبزل
الهيمت َجل بدبذبل نمىا
س البذ جبذيل
نم
1
ُمشا
//value
unsigned short value = 0b1010110;
//generate the set value
unsigned short toggle = ( 1<< 1 );
//before
printf("value before is 0x%x n",value);
//apply reset
value ^= toggle ;
//after
printf("value after is 0x%x n",value);
valuebefore is 0x56
valueafter is 0x54
[03 - operators06.c]
بهذاس هىا اختصالا , الخبذيل في العخخذمت الهيمت اليجاد ايػا اختصالا اظخخذمىا
1
سنم البذ جبذيل هشيذ الهىا
1
َجل بحن | بػمل بػذها نمىا , ,
الاضليت الهيمت مٍان في الىاجج ًوجخضي الاضليت والهيمت الهيمت
value ^= toggle ;
- 46. - 45 -
toggle = (1<< 1) = (0000 0001) << 1 = (0000 0010)
value = 0 1 0 1 0 1 1 0
^
toggle = 0 0 0 0 0 0 1 0
-------------------------
value = 0 1 0 1 0 1 0 0
انخالطخ
واملىؿهيت الخعابيت الػملياث اءشالح الشمىص ًم مجمىغت غلي ي الس يجدخى
وؾحرها والػالنيت
جدىيل مشل انل هىع الي اغلي هىع جدىيل ان
int
الي
char
البياهاث في قهذ الي يؤدي
truncate
يخابت غىذ الػملياث في الاظبهيت اغاةشم يجب
expressions
وللىغىح لالخؿاء ججىبا الانىاط اظخخذام ويكػل
اثشاملؤز حعخخذم
bitwise
البذ يمعخى غلي لخػامل
سؤال
وخىاة
-
الخاليت؟ الػمليت هديجت ما
(12 && -44)
هي الىديجت
1
الطكشحػخبر ي الس الن
false
اخش غذد واي
true
-
؟ الاجيت الؿباغت هديجت
int num= 12;
printf("%dn", num++);
الهيمت ؾباغت هي الىديجت
12
ظخطبذاملخؿحر ونيمت ,
13
- 49. - 48 -
-
انــ
statement
:
( مىهىؾت بكاضلت ييخهي مٌخملامش هي
;
)
مػادلتاو دالت نيٍى ان واما
expression
ًالخالي مىهىؾت بكاضلت جيخهي ان املهم
h = x+y *z ;
y = 2;
printf("helloworld");
return 0;
l = x>4||y <6 ;
يػخبرظؿش ًل
statement
ب ييخهي الهه
مىهىؾت كاضلت
انـ
statement block
:
ًم مجمىغت
statement
ــب جبذا التي
}
ــب وجيخهي
{
الشئعيت الذالت في املىحىدة َجل مشل ,
main function
ـلا داخل بىا الخاضت الاًىاد هٌخب ًقىد ,
block
الذالت َبخل الخاص
Block of code
انجشَبيح سيش في انزحكى
program control
:
اثشم غذه جىكيزهاو مػحن ششؽ غلي بىاء البرهامج ًم حضء جىكيز الي هدخاج قهذ , البرهامج جىكيز خالله ًم ظيخم الزي الترجيب جدذيذهى
-
انششط خًهخ
if
:
اسشاله ًغيخػبحر حعخخذم
decision
مػحن ششؽ غلي بىاء الخػليماث جىكيز خاللها ًم يخم خيث ,
جىكي ًٌويم ,
َجل جٌخب خيث واخذة حػليمت ز
جكيز ُخا في اما , بػذها مباششة الخػليمت
block
الانىاط اظخخذام ًم قالبذ الخػليماث ًم
{}
بالشٍل يما
- 50. - 49 -
حملت
if
ششؽ غلي بىاء مخخلكخحن حملخحن بؿباغت يهىم بشهامج ُمشا
int num = 30 ;
if( num > 0)
{
printf("number is positiven");
}
if( num < 0)
{
printf("number is negativen");
}
numberispositive
[ 04 - programControl01.c ]
الػالنيت اثشاملؤز اظخخذمىا هىا
relationaloperator
ُالاو الششؽ ,الطكش ًم انل ًان ارااو ,ضكش ًمايبر الشنم ًان ارا , الششؽ ًم للخدهو
هى
به الخاضت الخػليماث ججاهل جم وبالخالي يخدهولى الشاوي الششؽ ما جدهو الزي
- 51. - 50 -
-
انششط خًهخ
if else
:
الششؽ يخدهو لم ارا ياخش حػليماث وجىكيز الششؽ جدهو ارا مػيىت حػليماث جىكيز يخم هىا
ـب الخاص الجضء ,
else
ان ششؾا ليغ ياخخياس
مؼ يعخخذم
if
.
الششؽ حملت
ifelse
باظخخذام العابو البرهامج غلي حػذيل ُمشا
else
int num = -11 ;
if( num > 0)
{
printf("number is positiven");
}
else
{
printf("number is negativen");
}
numberisnegative
- 52. - 51 -
[ 04 - programControl02.c ]
وبالخ يخدهو لم ي الاظاس الششؽ
ــب الخاضت الخػليماث ججاهل جم الي
if
ـب الخاضت َجل جىكيز وجم
else
-
انششط خًهخ
else if
:
اظخخذام ًٌويم , به الخاضت الخػليماث ششؽ لٍل , مىه للخدهو ششؽ ًمايثر لذيىا هىا
else
ششؽ اي جدهو غذم خالت في ايػا
الششؽ حملت
elseif
int num = -11 ;
if( num == 0)
{
}
else if( num > 0)
{
printf("number is positiven");
}
else
{
printf("number is negativen");
}
numberisnegative
[ 04 - programControl03.c ]
- 53. - 52 -
ـب الخاضت الخػليماث جىكيز نخم يخدهو لم الشاوي وايػا يخدهو لم ُالاو الششؽ هىا
else
ُمشا
قشدي ام صوجي الشنم ًم بالخدهو يهىم بشهامج :
int num = 13 ;
if( (num % 2) == 0)
{
printf("number is evenn");
}
else
{
printf("number is oddn");
}
numberisodd
[ 04 - programControl04.c]
الضو الاسنام ان خيث , راجه الخدهو ششؽ في هىا الكٌشة
غلي الهعمت جهبل التي َجل هي حيت
2
غلي الهعمت باقي اناخش اوبمػني
2
وما ,ضكش ييعاو
ياخش بؿشيهت الششؽ يخابت ًٌويم قشديت اسنام َرل غذا
if(!(num% 2))
{
printf("numberisevenn");
}
else
{
printf("numberisoddn");
}
الطكشحػخبر ي الس ان خيث
false
اخش سنم واي
non zero
حػخبره
true