You are on page 1of 91

Fundamentals Of Programming with C++

Fundamentals Of Programming With C++ ‫ملخص كورس‬

A lot of thanks to Osama Elzero


Created By: Fady Alamir

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


#001 - Important Introduction About The Course
1. Before the journey
‫ اترك كل شء ف وقته‬-1
‫ عند تعلم شء ف الكورس ابحث عنه وزود من معلوماتك عنه‬-2
‫ عندما ال تفهم شء ال رتتكه وتتدخل عىل الىل بعده عيد الفيديو ولو‬-3
‫مفهمتش بردك اسأل وطبيع إنك متفهمش من اول مرة‬
‫ اسمع كالم مدرب الكورس لو قلك اتفرج عىل فديو معي اتفرج عليه‬-4
)‫التمجة‬
‫ (ما ه إال اداة لتعلم ر‬C++ ‫ أنت داخل تتعلم برمجة وليس لغة‬-5
‫ خليك شخص ر‬-6
‫محتف أبدع وابتكر ونفذ اي فكرة من دماغك‬
1. What can you do with C++?
1- Gaming 2- Desktop Apps
3- OS 4- Web Browsers
5- Servers Management
3. Course Content
1- Fundamentals of Programming with C++
2- Object Oriented Programming (OOP)
3- Algorithms 4- Data Structure
5- Problem Solving
4. What you need to start?
1- A Reason to start: ‫هدف يخليك تكمل وتواجه الصعوبات‬
2- Before programming playlist
3- Be Patient & Calm
4- Every time we will add extensions and tools to help us

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


#002 - Why C++ Language
1- Widely Used 2- Very Fast
3- Has Pointers
‫ يمكن تشغيلها عىل ر‬OS
4- Portable “Cross Platform”: ‫اكت من‬
5- Closer to Hardware
6- Strong language + Covers what you need
7- Support procedural programming and object oriented
programming
8- Universities 9- References + Resources + Community
10- Only C++? 11- Will I work with C++?
#003 - Install VSC Editor, Compiler And Debugger
Done
#004 - Install Visual Studio And Answer Questions
Done
#005 - How The C++ Works
‫ نستدعيها‬Functions ‫ ه مكتبة جاهزة بها مجموعة من ال ـ‬:Libraries ‫ المكتبات‬-1
.‫ الموجودة بها ف الملف‬Functions ‫لنستخدم ال ـ‬
.‫ هو الملف الذي نقوم داخله بكتابة الكود‬:Source file ‫ ال ـ‬-2
.‫ هو الكود المكتوب داخل الملف‬:Source code ‫ ال ـ‬-3
‫ بمعن معالجة لفكرة‬preprocessor statement ‫ عبارة عن‬:)#( Hashtag sign ‫ ال ـ‬-4
.‫ للغة الكمبيوتر‬Compile ‫" قبل عملية ترجمة الكود الـ‬pre" ‫معينة قبل‬
‫ تستعمل لتضمي الملف أي مبدأ الـ‬preprocessor directive ‫ ه‬:include ‫ ال ـ‬-5
.‫ أي نحض محتوي المكتبة كاملة داخل المشوع الخاص بنا‬File inclusion
‫ نحتاج ال‬Functions ‫ بداخله مجموعة من الـ‬file ‫ هو عبارة عن‬:iostream -6
.‫ بداخله ف الملف الخاص بنا‬functions ‫استخدام مجموعة من الـ‬
‫ دالة برمجية بها مجموعة من الخطوات تتم خطوة بخطوة أو خطوة‬:Function ‫ ال ـ‬-7
.‫واحدة‬
Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir
‫‪ -8‬يتم تنفيذ الكود ف التنامج ‪ line by line‬ر‬
‫بالتتيب وبالتحكم ف الـ ‪flow, stream‬‬ ‫ر‬
‫ستقرر من الذي ي ـ ‪ Run‬األول‪.‬‬
‫‪ :int -9‬نوع من أنواع البيانات يسم ‪ integer‬ونوع بياناته أرقام بحيث أن ‪function‬‬
‫ال ـ ‪ int‬مثل ) ( ‪ int main‬يقوم بإرجاع رقم ;)‪.return(0‬‬
‫‪#006 - Preprocessing, Compiling And Linking‬‬
‫‪ -1‬الملف ‪ iostream‬نقوم باستدعائه ويسم ‪ header file‬امتداده يكون ‪ .h‬أو‬
‫امتدادات أخري ومن الممكن أال يكون له امتداد‪.‬‬
‫‪ -2‬لغة ‪ C++‬ليس لها عالقة باالمتداد وال الملفات الـ ‪ files‬عبارة عن ‪ containers‬بها‬
‫مجموعة من الكلمات نعطيها لل ـ ‪ compiler‬حيث أن الكود او المحتوي هو األهم‪.‬‬

‫‪ -3‬انشاء ملف الـ ‪ Translation Unite‬سوف يكون بداخله محتوي الـ ‪ Library‬مع‬
‫التنامج الخاص بك سوف ر‬
‫يأت الـ ‪ Compile‬ويقوم ربتجمته للغة اآللة حيث أن هذه‬ ‫ر‬
‫ر‬
‫التجمة تتم ف ‪ Object file‬يكون امتداده ‪.obj‬‬

‫الـ ‪ object file‬هو الذي يستطيع الكمبيوتر فهمه وهو ليس برنامج يمكن تشغيله هو‬
‫ملف ينتظر الـ ‪ Linker‬منك حيث يقوم ب ـ ‪ link‬كل الـ ‪ objects‬ليخرج الـ ‪ exe file‬النهات‬
‫التنامج من خالله‪.‬‬
‫الذي نقوم بتشغيل ر‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪#007 - C++ Language Syntax‬‬
‫التمجية وبنية اللغة لينتج‬
‫الن تحكم استخدام األسطر ر‬‫‪ -1‬ال ـ ‪ :Syntax‬مجموعة القواعد ر‬
‫ما تريده اللغة بالضبط وال يحدث أي ‪.error‬‬
‫الن تحتوي عىل ‪Block of‬‬ ‫‪ -2‬ال ـ ‪ Curly Braces‬الـ } {‪ :‬هما الـ ‪ containers‬أي الحاوية ر‬
‫‪ code‬صندوق األكواد‪.‬‬
‫برمج ينته ب ـ ; أي ‪semicolon‬‬
‫‪ -3‬كل سطر ر‬
‫‪ -4‬هذه العالمة ‪ :‬تسم ‪ colon‬وعندما تكون ‪ ::‬تسم ‪double colon‬‬
‫‪ :cout -5‬اختصار لـ ‪character output‬‬
‫‪ :Input -7‬المدخالت‬ ‫‪ :Output -6‬المخرجات‬
‫ُ‬
‫‪ -8‬كل حرف او عالمة يسم ‪ character‬ف الـ ‪ code‬والـ ‪ space‬المسافة الفارغة تسم‬
‫‪character‬‬
‫‪ stream insertion operator  << -9‬حيث أن هذا الـ ‪ operator‬مسؤول عن‬
‫االدخال يرسل البيانات ر‬
‫الن تليه للـ ‪ function‬لتخرج للـ ‪stream‬‬
‫‪ :Syntax highlighter -10‬يقوم بتمت كل كود بلونه الممت‪.‬‬
‫‪  "Line\n" -11‬نوع من البيانات يسم ‪ string‬ويضاف داخل الـ ‪double quotes‬‬
‫‪ -12‬أي شء ر‬
‫يأت بعد الـ \ أي ‪ backslash end‬يسم ‪ special character‬أي يقوم‬
‫بعمل شء ممت مثل ‪ \n‬مسؤول عىل أن يقوم بعمل ‪new line‬‬
‫مج ما شكله وما‬
‫الت ر‬
‫‪ -13‬ال يهم الـ ‪ compiler‬كيف الكود مكتوب لكن له عالقة بالسطر ر‬
‫المكتوب به‪.‬‬
‫‪#008 - Comments And Use Cases‬‬
‫‪ -1‬ال ـ ‪ :comment‬عبارة عن ‪ Note‬أو وصف للكود الذي قمت بكتابته‪ ،‬ويكتب الـ‬
‫‪ comment‬بعد ‪// - double forward slash‬‬
‫يسم ‪single line comment‬‬ ‫وهذا ال ـ ‪comment‬‬
‫‪Multiple line comment -2‬‬

‫ويمكن استخدامه كـ ‪single line comment‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪ -3‬ال ـ ‪ Comment‬ال يستخدم لوصف الكود فقط ولكن يستخدم لمنع السطر من الـ‬
‫‪ compile‬عندما تقوم بعمل ‪ run‬للكود‬
‫‪ -4‬من ‪ Ctrl + /‬يمكن عمل ‪ comment or uncomment‬للسطر أو لعدة أسطر بعد‬
‫تحديدهم‬
‫‪#009 - Variables Basic Knowledge‬‬
‫‪ -1‬المتغت‪ :‬عبارة عن ‪ Data container‬حاوية للبيانات بحيث نخزن هذه البيانات ف‬
‫الذاكرة ‪Memory‬‬
‫‪ -2‬أي شء داخل الـ ‪ Double Quotes‬أي ‪ rapped in double quotes‬سوف تطبع‬
‫كما ه بدون تطبيق العمليات الحسابية أو أي شء اخر هكذا‬

‫‪ :Declare a variable -3‬انشاء متغت أو التضيـ ــح عن وجود متغت جديد أو اإلعالن عن‬
‫وجود متغت جديد‪.‬‬
‫‪ -4‬نوع المتغت ‪ :int‬أي ‪ Integer‬وهو رقم عدد صحيح فقط‪.‬‬
‫‪ -5‬يمكن عمل ‪ update‬لـ ‪ value‬المتغت هكذا‬

‫‪ -6‬يمكن أال نقوم بكتابة الـ ‪ namespace‬كل مرة وهو الـ ‪ std::‬هكذا‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#010 - Variables Naming Rules And Best Practices
‫ عندما نقوم بإنشاء متغت جديد يجب أن نتبع قواني معينة ف‬:Naming Rules -1
.‫اختيار اسم المتغت‬
‫ أحسن الممارسات ر‬:Best Practices -2
‫الن يقوم باستخدامها األخرين عند اختيار اسم‬
.‫المتغت‬
- Naming Rules
--- Must Be Unique
--- Case Sensitive
--- Cannot Start With Numbers
--- Nums Or Letters Or Underscore
--- No White Space Or Special Characters
--- Reserverd Keywords "Class, Public"

- Best Practices
--- Related Names
--- Writing Style

.‫ بحيث ال يمكن تسمية متغتين بنفس االسم ف الكود‬:Must Be Unique .1


price ‫ الحروف حساسة ف الكود مثل عندما نقوم بتسمية متغت‬:Case Sensitive .2
‫ ألنهم مختلفي‬error ‫ ال يحدث‬Price ‫ومتغت أخر‬
‫ ال يمكن بدء اسم المتغت ب ـ رقم‬:Cannot Start With Numbers .3

‫ يمكن وضع األرقام والحروف اإلنجلتية والـ‬:Nums Or Letters Or Underscore .4


.errors ‫ بدون وجود‬variable ‫ ف المنتصف أو ف أخر اسم الـ‬underscore
.‫ ايضا‬error ‫ بدون‬variable ‫ يمكن وضعها ف بداية اسم الـ‬underscore ‫والـ‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ ف اسم‬white space ‫ عند استعمال‬:No White Space Or Special Characters .5
.error ‫يعتتوا كلمتي لذا يحدث‬
‫ ر‬Identifier ‫أي‬

‫ ف أي مكان ف اسم المتغت ممنوعة‬special character ‫الـ‬

‫ يوجد كلمات محجوزة ف اللغة ال يمكن‬:Reserved Keywords “Class, Public” .6


variable ‫استخدامها ف تسمية الـ‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


error ‫ بأي اسم من هذه األسماء يحدث‬variable ‫وعند تسمية الـ‬

:Writing Styles .7

.‫معت عن المتغت يكون مفهوم‬


‫ أسم ر‬:Related Names .8
#011 - Variables Advanced Knowledge
Variables Advanced Knowledge
- Declare Variable Without Value + Change Later
- Declare Multiaple Variables Without Value +
Change Later
- Decalre Multiaple Variables With Same Value

.‫ يمكن اإلعالن عن المتغت فقط بدون إعطائه قيمة‬-1


‫ يمكن اإلعالن عن ر‬-2
.‫أكت من متغت معا‬
int b, c, d;
b = 10, c = 20, d = 30;
cout << b + c + d; // 60 => [10 + 20 + 30]

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ يمكن اإلعالن عن عدة متغتات واعطائهم نفس القيمة‬-3
int h, i, j;
// h = 10, i = 10, j = 10;
h = i = j = 10;
cout << h + i + j;

#012 - Variables Scope


Variables Scope
- Global Variable
- Local Variable

‫ ه ر‬:Global Variable -1
functions ‫الن يمكن استدعاءها من قبل جميع الـ‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ ه ر‬:Local Variable -2
‫ واحدة معينة وال يستطيع أي‬function ‫الن توجد داخل‬
‫ عليه‬access ‫ أخر أن ي ـ‬function

#013 – Constant Variable


Constant Variable
- Read Only Value
- Can't Declare Without Value

.‫ هو متغت ثابت للقراءة فقط ال يمكن تغته او التعديل عليه‬:const int -1

‫ ال يمكن اإلعالن عن متغت ثابت دون قيمة ألنه ال يمكن التعديل عىل هذه القيمة مرة‬-2
const int x .‫اخري‬

preprocessor directive ‫ يوجد طريقة أخري ألنشاء متغت ثابت منها بواسطة‬-3

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


#014 – Calculate Your Age Application
‫تعت عن المدخالت‬
‫ ر‬cin ‫التنامج لكن‬
‫ تستخدم لإلعالن عن المخرجات من ر‬cout

#015 - Escape Sequences Characters


Escape Sequances Characters
--- Special Non Printing Characters
--- Control Printing Behaviour
--- Start With Back Slash "\"
--- Can Be Inserted In Any Position
- \n
- \\
- \"
- \'
- \t => Tab Equal 8 Spaces
- \b
- \a => Alert => Play Beep During Execution
- \r => Carriage Return

‫ يوجد بعض الحروف الممتة ر‬:Escape Sequences Characters


‫الن من خاللها‬
.‫نستطيع أن نتحكم ف السلوك الخاص بالطباعة‬
\n ‫ أحرف ممتة ال تطبع مثل الـ‬:Special Non Printing Characters -1
‫ نتحكم ف سلوك الطباعة‬:Control Printing Behavior -2
skip ‫ وبت ـ‬back slash \ ‫ تبدأ ب ـ‬characters ‫ جميع الـ‬:Start with Back Slash “\” -3
.‫ الىل بعده‬characters ‫ال ـ‬

.‫ يمكن استعمالها ف أي مكان ف الكود‬:Can Be Interested In Any Position -4

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ هكذا حيث يقوم بعمل‬double back slash \\ ‫ نستخدم‬stream ‫ لطباعة \ ف الـ‬-5
.‫ للذي بعده‬skip

‫ ال يمكن اضافتها هكذا‬stream ‫ ف الـ‬double quotes ‫ لطباعة‬-6

‫ برمجيا وليس كأنها مكتوبة للطباعة‬double quotes ‫ تعامل مع الـ‬compiler ‫ألن الـ‬
‫ خارجهم لذا يحدث‬4 ‫ والـ‬closing quote ‫ وبعدها‬start quote ‫ قبلها‬Line ‫بحيث أن‬
back ‫ ويمكن حل هذه المشكلة هكذا بوضع‬4 ‫ بعد الـ‬semi colon ; ‫ ويحتاج إل‬error
.closing quote ‫ والـ‬start quote ‫ قبل كل من الـ‬slash

.‫ أيضا‬single quote ‫ للـ‬back slash ‫ تستخدم الـ‬-7


special ‫\ وتسم‬t ‫ وتطبع عن طريق‬8 white space ‫ وه عبارة عن‬tab ‫ الـ‬-8
IDE ‫ أو الـ‬text editor ‫ من الـ‬spaces ‫ ويمكن تغت الـ‬skipping character

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


white space ‫ أي يقوم بمسح الذي قبله إذا كان حرف او‬back space ‫\ وه الـ‬b -9

stream ‫ تظهر عند الطباعة ف الـ‬Bel ‫ أو‬Beep ‫\ ه‬a -10


Carriage Return ‫\ الـ‬r -11

ً
‫ تقوم بإرجاع الـ‬Carriage Ruturn ‫ ثم الـ‬Fady ‫ تقوم أوال بطباعة‬Fady\rAlamir ‫مثل‬
\r ‫ ويطبع ما بعد الـ‬Fady ‫ عىل‬override ‫ ثم يقوم بعمل‬F ‫ عند حرف الـ‬mouse cursor
‫مكانها‬
#016 - Data Types - What Is Data?
Data Types
- What Is Data?
- Data Examples In Real Life
--- Integer => 5000, 10, -100
--- Srting => "Elzero Web School", "Osama Elzero",
"100A"
--- Boolean => true, false OR yes, no OR 1, 0 OR on,
off
--- Float => 18.5, 1900.50
--- Array => ["Osama", "Ahmed", "Sayed", "Mahmoud"]
- Why We Choose Data?
--- Size
--- Operation

What Is Operand?
- The Part Of an Instruction Representing The Data
Manipulated by The Operator

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫برمج إلدارة مدرسة وهو عبارة عن ‪Data ،Code‬‬
‫ر‬ ‫‪ -1‬البيانات ‪ :Data‬مثل تطبيق‬
‫ر ُ‬
‫التمجية عىل‬
‫الن تعط للكمبيوتر لتنفيذ الفكرة ر‬ ‫الـ ‪ :Code‬هو مجموعة التعليمات‬
‫البيانات‬
‫الـ ‪ :Data‬أسماء الطالب والمدرسي وبياناتهم‬
‫‪ -2‬أنواع البيانات ‪:Data Types‬‬
‫‪ :Integer .1‬العدد الصحيح بدون كسور مثل ‪ salary‬المدرس ورقم المكتب‬
‫المدرس واسم الفصل‬‫‪ :String .2‬النصوص مثل اسم المدرسة واسم ُ‬

‫‪ :Boolean .3‬ر‬
‫تعت عن أي إجابة بها ‪ Yes, No‬أو أي ‪ switch‬به ‪ On, Off‬أو ‪0 ، 1‬‬
‫أو ‪True, False‬‬
‫‪Float (floating point number) OR Double .4‬‬
‫األرقام ر‬
‫الن بها كسور‬
‫‪ :Array .5‬وضع مجموعة من األسماء او االرقام ف قائمة‬
‫‪ -3‬لماذا نقوم بتحديد أنواع البيانات‪:‬‬
‫‪ .1‬ألن كل نوع من أنواع البيانات له حجم ف ذاكرة الكمبيوتر‬

‫‪ :Operation .2‬كل نوع من أنواع البيانات نختاره عىل أساس العمليات المناسبة‬
‫له‪ ،‬ال ينفع أن تقوم بقسمة رقم عىل ‪string‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫ ر‬Data ‫التمجة يمثل الـ‬
‫الن يتم التعامل‬ ‫ هو جزء من التعليمات ر‬:Operand .3
.‫معها‬
#017 - Data Types, Sizes And Memory
‫ ذاكرة الكمبيوتر بها مجموعة من‬:)[R]andom [A]ccess [M]emory( Ram -1
.‫األماكن نخزن بها البيانات‬

:‫ – أحجام البيانات‬Data Sizes -2


.‫ فقط‬1, 0 ‫ أصغر وحدة تخزين ُيخزن بها الـ‬:Bit - [Bi]nary Digi[t] .1
.‫ويخزن به حرف واحد‬ ُ
8bits ‫ عبارة عن مجموعة مكونة من‬:Byte .2
Tera Byte => 1024 Gigabytes .3
Giga Byte => 1024 Megabytes .4
Mega Byte => 1024 Kilobytes .5
Kilo Byte => 1024 Byte .6

:‫ – أنواع البيانات وأحجامها‬Data Types With Size -3


int => 2 Or 4 Bytes => Will Cover Later Way .1
float => 4 Bytes [18.5656565656] .2
double => 8 Bytes [18.5656565656] .3
.‫ =< أي الجزء الذي بعد الكش ُيسم مكون الكش‬Number . Fractional Number -
Float & Double ‫ الفرق بي‬-
‫ أرقام كـ كسور‬7 ‫ يمكن استخدام‬:Float .1
Double the float ‫ رقم كـ كسور أي‬15 ‫ يمكن استخدام‬:Double .2
char => 1 Byte => "A" "X" "9" .4
boolean => 1 Byte => true, false .5

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ -4‬القصة ر‬
‫الن تحدث وراء انشاء المتغت "خلف الكواليس"‬
‫‪ -1‬اإلعالن عن متغت – ‪Declare A Variable‬‬
‫‪ -2‬إخبار الكمبيوتر بأن يقوم حجز عدد معي من الـ ‪ Bytes‬ف الـ ‪ً Memory‬‬
‫بناء‬
‫عىل نوع البيانات ثم يقوم بوضع القيمة ر‬
‫الن سوف تقوم بوضعها ف المكان الذي‬
‫قمت بتحديده ف الـ ‪.Memory‬‬
‫‪ -3‬يمنع إضافة أي نوع من البيانات األخرى غت ر‬
‫الن قمت بتحديدها‪.‬‬

‫‪ -5‬يمكن أن تجعل الـ ‪ compiler‬يقوم باستنتاج نوع المتغت من القيمة ر‬


‫الن اعطتها‬
‫للمتغت عن طريق وضع كلمة ‪ auto‬قبل أسم الـ ‪.variable‬‬

‫ولكن عندما ال تقوم بإعطاء قيمة لها سوف يحدث ‪ error‬ألنه لن يكون قادر عن تحديد‬
‫نوع المتغت‬

‫ر‬
‫وحن إن قمت بتعديل القيمة لن يفهمها الـ ‪.compiler‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪ -6‬يمكن معرفة الـ ‪ Memory Location‬عن طريق وضع & ‪ Ampersand -‬قبل أسم‬
‫المتغت بعد ‪ cout‬وجعل الـ ‪ compiler‬يقوم بطباعة موقع المتغت ف الذاكرة‪.‬‬

‫‪#018 - Data Types – Integer‬‬


‫‪ – Primitive Data Types -1‬أنواع البيانات األولية‬
‫‪ :Integer .1‬العدد الصحيح مثل الـ )‪(100, -500, 0‬‬
‫‪ .2‬عند وضع ‪ true‬أو ‪ false‬لـ ‪ Int‬يعط ‪ 1‬لقيمة الـ ‪ true‬وصفر للـ ‪false‬‬

‫ً‬
‫‪ .3‬ال يمكن طباعة حروف او ‪ characters‬او أي نوع اخر مع ‪ int‬بدال من االعداد‬
‫الصحيحة‪.‬‬

‫‪ .4‬محدد ف اللغة ر‬
‫أكت عدد موجب يمكن وضعه ف المتغت ‪ int‬وأصغر عدد سالب‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪ .5‬يوجد ‪ header file‬يسم ‪ limits.h‬يوجد بداخله الـ ‪ INT_MIN‬والـ ‪INT_MAX‬‬
‫‪ .6‬أحجام أنواع البيانات‬

‫‪ .7‬عند وضع عدد صحيح لمتغت نوعه ‪ int‬يقوم بتجاهل ‪fractional number‬‬

‫‪ .8‬الـ = تسم ‪ Assignment Operator‬أي تقوم ب ـ ‪ assign‬الـ ‪ value‬للمتغت‬


‫‪ num_one‬أي تعيي القيمة للمتغت‪.‬‬

‫‪#019 - Data Types - Float And Double‬‬


‫‪ -1‬نقوم باختيار نوع البيانات وال نقوم بوضعها ف أي نوع من البيانات بسبب ال ـ‬
‫‪ Performance‬وحجم الـ ‪ Bytes‬المحددة ف الـ ‪.Memory‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪ -2‬من الممكن وضع عدد صحيح ف ‪ double‬لالحتساب إذا قمنا بالتعديل عليه وجعله‬
‫كسور‬

‫‪ -3‬لنقوم بجعل الـ ‪ compiler‬يتعامل مع األرقام عىل أنها ‪ float‬نقوم بوضع ‪ f‬بعد الرقم‬

‫ً‬
‫ونقوم بجعل ال ـ ‪ compiler‬عىل التعامل مع هذه األرقام عىل أنها ‪ float‬بدال من الـ‬
‫‪ double‬ألنه لو تعامل معها عىل أنها ‪ double‬ستكون أبطأ من لو تعامل معها عىل انها‬
‫‪float‬‬

‫‪ -4‬وعند وضع الـ ‪ f‬بعد الرقم مع نوع المتغت ‪ auto‬يجعلها ‪ float‬ايضا‬

‫‪#020 - Data Types - Char And ASCII‬‬


‫‪ :Character Data Type -1‬ال ـ ‪ character‬نقوم بتخزين حرف واحد فيه فقط ويحجز‬
‫‪ 1 Byte‬من الرام والقيمة توضع داخل ‪single quotes‬‬
‫‪ :Type Casting -2‬نقوم بوضع )’‪ int (‘%‬وينتج لنا الـ ‪ ASCII Number‬لعالمة ‪%‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫وعندما نقوم بوضع ‪ double quotes‬يحدث ‪ error‬ألن ‪array of characters to int‬‬
‫ال ينفع‪.‬‬
‫‪ -3‬يمكن انتاج الحرف باللغة اإلنجلتي عن طريق رقمه ف الـ ‪ ASCII Table‬هكذا‬

‫‪#021 - Data Types - Bool And Void‬‬


‫‪:Boolean -1‬‬
‫‪ .1‬قيم الـ ‪ Boolean‬عبارة عن ‪ ture, false‬جميع الحروف ‪ small‬ألن الحروف‬
‫‪ sensitive‬أو أي إجابة بها ‪ Yes, No‬أو أي ‪ switch‬به ‪ On, Off‬أو ‪0 ، 1‬‬
‫‪ .2‬نستخدم ‪ true, false‬وال نقوم باستخدام ‪ 1, 0‬ألن الـ ‪ Boolean‬لل ـ ‪true‬‬
‫‪ , false‬تقوم بحجز ‪ 1 Byte‬فقط لكن الـ ‪ 1, 0‬عبارة عن ‪ integer‬تقوم بحجز‬
‫‪ 4 Byte‬لذا سوف يكون الـ ‪ Performance‬أقل إذا استخدمنا الـ ‪.1, 0‬‬

‫‪ .3‬ال نستخدم ف الـ ‪ Boolean‬الـ ‪ true, false‬فقط ولكن من الممكن أن نقوم‬


‫باستخدام معادالت او معادلة او عملية معينة وينتج منها قيمة‪.‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪ .4‬عند وضع قيمة للـ ‪ Boolean‬يكون الناتج ‪ True‬أي ‪ 1‬وعندما ال نضع قيمة‬
‫يكون الناتج ‪ False‬أي ‪0‬‬

‫‪ :Void -2‬أي قيمته قيمة فارغة‬


‫وه عبارة عن ‪ Function‬تقوم بدور معي لكن ال تقوم بإرجاع قيمة بحيث تقوم‬
‫بفعل معي ف التطبيق تربط شء بشء لكن ال تقوم بإرجاع قيمة لك‪ ،‬وال تحتاج‬
‫أن تقوم بعمل ;‪ return 0‬ف نهاية الـ ‪.function‬‬

‫‪#022 - Data Types - Modifiers And Type Alias‬‬


‫‪ -1‬نقوم باستخدام ‪ short int‬عندما ال نحتاج للـ ‪ max int‬مثل العمر حيث أن العمر لن‬
‫وتقليل حجم الـ ‪ Bytes‬المحجوزة ف الرام‬ ‫يصل إل هذا الرقم‬
‫التنامج‪.‬‬
‫من ‪ 4 Bytes‬ل ـ ‪ 2 Bytes‬مما يزيد من ‪ performance‬ر‬
‫ال ـ ‪ short int‬هو ‪ integer‬أقض من الـ ‪ integer‬الطبيع‪.‬‬

‫ويمكن كتابة ‪ short‬فقط بدون ‪ int‬هكذا‬

‫والن ممكن ان تكتب ‪ long‬فقط‪ ،‬ف نظام الـ ‪ windows‬والـ ‪vs compiler‬‬ ‫‪ :long int -2‬ر‬
‫تقوم بحجز ‪ 4 Bytes‬ف الرام مثل الـ ‪ int‬األساش ولكن ف بعض األجهزة والـ ‪compilers‬‬
‫األخرى يقوم بحجز ‪.8 Bytes‬‬
‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬
‫ يمكنك من استخدام رقم بهذا الحجم‬:long long -3
modifier ‫لذا يمكننا التحكم ف الـ‬
‫ يمكننا التحكم به إما أن يكون رقم صغت أو يكون رقم‬integer ‫ مثل الـ‬:modifier -4
.‫كبت‬
‫ عن طريقه ر‬:Signed [int, char] -5
‫ بأن نخزن أرقام موجبة وسالبة‬compiler ‫نخت الـ‬
integer, character ‫ لل ـ‬Default ‫وصفر وهذا الوضع الطبيع الـ‬
characters ‫نعت به عن الـ‬
‫ أي لها أرقام "النظام الذي ر‬ASCII Value ‫ ألن لها‬char ‫والـ‬
"‫بأرقام‬
ُ
‫ يخزن بها أرقام موجبة فقط‬:Unsigned [int, char] -6

using, typedef ‫ الموجود مسبقا باستخدام‬Type ‫ أسم مستعار لل ـ‬:Type Alias -7

#023 - Data Types - Modifiers And Type Alias


Data Types
- Type Conversion
--- Convert Data of One Type To Another

- Implicit Conversion
--- Conversion Is Done Automatically By The Compiler

- Explicit Conversion AKA Type Casting


--- Conversion Is Done By The Programmer

- Data Loss
--- When Larger Type Is Converted To Smaller Type

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ – Type Conversion -1‬تحويل أنواع البيانات‪:‬‬
‫أي تحويل البيانات من نوع لنوع أخر‪ ،‬ويوجد نوعي من التحويل‬
‫‪ – Implicit Conversion .1‬التحويل الضمن‪:‬‬
‫التحويل يتم تلقائيا عن طريق الـ ‪compiler‬‬
‫‪Ex:‬‬

‫ملحوظة‪ :‬عندما نقوم بجمع رقمي صحيح وكش سوف يقوم الـ ‪ compiler‬بفرض ال ـ‬
‫‪ double‬عىل العملية لذا سوف نقوم باستخدام ال ـ ‪Explicit Conversion‬‬

‫‪ – Explicit Conversion .2‬التحويل الضيـ ــح‪:‬‬


‫التحويل يتم عن طريق الـ ‪ programmer‬وتسم هذه العملية احيانا‬
‫بال ـ ‪Type Casting‬‬
‫‪Ex:‬‬

‫والطريقة الثانية للـ ‪ Type Casting‬هنا ف المثال السابق تسم ‪function like‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫ر‬
‫منطق‬ ‫ وهذا‬،‫ عند تحويل نوع من أنواع البيانات يحدث فقدان للبيانات‬:‫ملحوظة‬
ً
‫ من الطبيع ان‬short int ‫ إل‬long long ‫وطبيع ألن عندما نقوم بتحويل مثال من‬
.‫يحدث لهذه البيانات فقدان أي الرقم هيصغر‬

#024 - Operators - Arithmetic Operators


Operators & Operands
"Symbols To Operate On Data"

- Arithmetic Operators
"For Mathematical Operators"

--- + => Addition


--- - => Subtraction
--- * => Multiplication
--- / => Division
--- % => Modulo => Reminder After Division

What Is Operand?
- The Part Of an Instruction Representing The Data
Manipulated by The Operator

‫ ه عبارة عن الرموز ر‬:Operators -1


.‫الن تقوم بعمل عمليات معينة عىل البيانات‬
‫ ه البيانات الخاصة بنا الموجودة ر‬:Operands -2
‫ كل‬operator ‫الن يتعامل معها الـ‬
.‫منهم يكمل بعض‬
.‫ الخاصة بالعمليات الحسابية‬operators ‫ ال ـ‬:Arithmetic Operators -3
:Addition .1

:Subtraction .2

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪:Multiplication .3‬‬

‫‪:Division .4‬‬

‫ملحوظة‪ :‬يجب وضع ‪ .f‬رلتمز عن الـ ‪ float‬لك ينتج القيمة بالكش الن ناتج قسمة‬
‫‪ int/int‬ينتج ‪ int‬أي عدد صحيح‪.‬‬
‫وأيضا لو فيه رقم واحد فيهم ‪ float‬يكون الناتج بالكش أي ‪float‬‬

‫ر‬
‫‪ :Modulus/Modulo .5‬هو باف القسمة أي الرقم الذي نأخذه من الرقم الىل‬
‫حن يكون عدد صحيح ُيقسم عىل الرقم اآلخر‪.‬‬
‫معانا ر‬

‫ملحوظة‪ :‬الـ ‪ Modulus‬ال يتعامل إال مع ‪integer‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#025 - Operators - Assignment Operators
Operators & Operands
"Symbols To Operate On Data"

- Assignment Operators
"For Assigning Operators"

--- = Assign
--- += Addition
--- -= Subtraction
--- *= Multiplication
--- /= Division
--- %= Modulo => Remainder After Division

‫ ر‬value ‫ لل ـ‬assign ‫الن تقوم بعمل‬


‫الن عىل اليسار‬ ‫ ه ر‬:Assignment Operators -
‫ ر‬variable ‫للـ‬
.‫الن عىل اليمي‬
‫ هكذا‬variable ‫الن نستخدمها لوضع قيمة ف‬ ‫ ه عالمة الـ = ر‬:Assign -1
‫ ويجمع‬variable ‫ يقوم باستخدام الـ‬compiler ‫ معناها ان الـ‬:Addition -2
‫القيمة ر‬
‫ هكذا‬variable ‫ عىل قيمة الـ‬+= ‫الن بعد الـ‬

‫ ويطرح‬variable ‫ يقوم باستخدام الـ‬compiler ‫ معناها ان الـ‬:Subtraction -3


‫القيمة ر‬
‫ هكذا‬variable ‫ من قيمة الـ‬-= ‫الن بعد ال ـ‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ :Multiplication -4‬معناها ان الـ ‪ compiler‬يقوم باستخدام الـ ‪variable‬‬
‫ويضب القيمة ر‬
‫الن بعد الـ =* ف قيمة الـ ‪ variable‬هكذا‬

‫‪ :Division -5‬معناها ان الـ ‪ compiler‬يقوم باستخدام الـ ‪ variable‬ويقسمه عىل‬


‫القيمة ر‬
‫الن بعد الـ =‪ /‬هكذا‬

‫‪ :Modulus -6‬معناها ان الـ ‪ compiler‬يقوم باستخدام الـ ‪ variable‬ويقسمه عىل‬


‫ر‬ ‫القيمة ر‬
‫الن بعد الـ =‪ %‬وينتج الباف ف الـ ‪ stream‬هكذا‬

‫‪#026 - Operators - Increment And Decrement Operators‬‬


‫‪ :Increment and Decrement Operators -‬العوامل المسؤولة عن الزيادة‬
‫والنقصان‬
‫‪ :Pre -1‬شء يحدث قبل عملية الـ ‪execute‬‬

‫هذا يسم ‪ Pre Increment‬بحيث يزود الـ ‪ 1‬وبعدها يقوم بطباعة الـ ‪1‬‬
‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬
execute ‫ شء يحدث بعد عملية الـ‬:Post -2

‫ عليها‬1 ‫ وبعدها يقوم بزيادة‬0 ‫ بحيث يطبع الـ‬Post Increment ‫هذا يسم‬
1 ‫ وبعدها يقوم بطرح‬0 ‫ يقوم بطباعة الـ‬:Post Decrement -3
-1 ‫ وبعدها يقوم بطباعة الـ‬1 ‫ يقوم بطرح‬:Pre Decrement -4

#027 – Operators – Comparison Operators


- Comparison Operators
"For Comparing Values"

--- == Equal
--- != Not Equal
--- > Greater Than
--- < Less Than
--- >= Greater Than Or Equal
--- <= Less Than Or Equal

‫ المسؤولة عن المقارنة لمقارنة القيم‬Operators ‫ الـ‬:Comparison Operators -


‫الن تجعلك تري‬‫ ر‬Operators ‫ أي الـ‬Relational Operators ‫ببعض واحيانا تسم الـ‬
.‫عالقة القيم ببعضها البعض‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ :)==( Equal -1‬تستخدم لمقارنة قيمتي ببعض‪.‬‬

‫‪ :)!=(Not Equal -2‬لمقارنة القيمتي وسؤال الـ ‪ compiler‬هل هذه القيمة ال تساوي‬
‫القيمة األخرى‪.‬‬

‫‪ :)>(Greater Than -3‬للسؤال هل قيمة ر‬


‫أكت من قيمة أخري‬

‫‪ :)<(Less Than -4‬للسؤال هل قيمة أصغر من قيمة أخري‬

‫‪ :)>=(Greater Than Or Equal -5‬للسؤال هل قيمة ر‬


‫أكت من او يساوي قيمة أخري‬
‫وعند تحقق شط من الشطي ينتج ‪True‬‬

‫‪ :)<=(Less Than Or Equal -6‬للسؤال هل قيمة أصغر من أو يساوي قيمة أخري وعند‬
‫تحقق شط من الشطي ينتج ‪True‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪#028 - Operators - Logical Operators‬‬
‫‪- Logical Operators‬‬
‫"‪"For Logic Between Values‬‬

‫‪--- && And‬‬


‫‪--- || Or‬‬
‫‪--- ! Not‬‬

‫‪ :Logical Operators‬ه الـ ‪ Operators‬ر‬


‫الن من خاللها نستطيع أن نفحص المنطق‬
‫بي القيم الخاصة بنا "نطلب ر‬
‫أكت من طلب"‪.‬‬
‫‪ :)&&(And .1‬هذا الـ ‪ Operator‬يتكون من عالمتي ‪ Ampersand‬أو تسم "و"‬
‫العطف ومعناها ‪ and‬نستخدمها لطلب طلبي أو ر‬
‫أكت من طلب ف سطر واحد‬
‫ويجب تحقق جميع الطلبات‪.‬‬

‫‪ :)||(Or .2‬هذا الـ ‪ Operator‬يتكون من عالمتي ‪ Pipe‬معناهم "أو" وتستخدم‬


‫أكت من طلب ف سطر واحد وإذا تحقق أي طلب من المطالب‬‫لطلب طلب أو ر‬
‫ينتج ‪True‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪ :)!(Not .3‬تقوم بعكس الحاجة أي "نق النق ‪ ‬أثبات"‬

‫‪#029 - Operators – Precedence‬‬


‫‪- Operators Precedence‬‬
‫"‪"Which One Has Higher Precedence‬‬

‫‪Reference‬‬
‫‪--- Operators Precedence Table‬‬

‫‪Training‬‬
‫‪- Try Operators Yourself Before Browsing References‬‬

‫‪ :Operators Precedence -1‬أي أن ‪ Operator‬له األولية أن يعمل قبل ‪Operator‬‬


‫أخر إذا تواجدوا جميعهم ف نفس السطر أو نفس العملية‪ ،‬وبعض الـ ‪ Operators‬لهم‬
‫نفس األولوية ف العمل عند إذ يقوم الـ ‪ compiler‬ربتجمة الكود من الشمال لليمي‬
‫ر‬
‫بالتتيب الطبيع‪.‬‬
‫مثل هذا المثال‪ Operator :‬الضب له األولوية ف العمل قبل ‪ Operator‬الجمع والطرح‬

‫مثال‪ :2‬الـ ‪ Operator‬الخاص بالضب والـ ‪ Operator‬الخاص بالقسمة لهم نفس‬


‫األولوية لذا سوف تست العملية من الشمال لليمي كالطبيع‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫مثال‪ :3‬الـ ‪ Operator‬الخاص بالضب والـ ‪ Operator‬الخاص بالقسمة االثني لهم نفس‬
‫ً‬
‫األولوية ف العمل قبل الجمع لذا سوف تتم عملية الضب والقسمة أوال من الشمال‬
‫لليمي ومن ثم عملية الجمع‬

‫ملحوظة‪ :‬إذا أردت ان تتم العملية من الشمال لليمي بدون ترتيب األوليات للـ‬
‫‪ Operators‬يجب أن تقوم بعزل عملية الجمع أو الطرح بوضعها ف أقواس‬
‫"‪ "parentheses‬هكذا‬

‫‪#030 - Control Flow - If Condition Introduction‬‬


‫مج‪.‬‬ ‫‪ :Control Flow‬هو التحكم ف تدفق البيانات الموجودة ف التطبيق أو الكود ر‬
‫الت ر‬
‫‪ :if .1‬الـ ‪ Syntax‬الخاص بها‬
‫)‪if (Condition Is True‬‬
‫{‬
‫‪// Do Something‬‬
‫}‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#031 - Control Flow – If, Else If, Else
‫ر‬ ُ
else if, else ‫ هو الشط األول عند تحققه ينفذ وال ينظر لباف الشوط‬:If -1

ُ
if ‫ يتحقق وينفذ عندما لم يتحقق الشط األول‬:else if -2

ً ُ
if, else if ‫ يتحقق وينفذ عندما لما يتحقق كال من الشطي‬:else -3

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪#032 - Control Flow - Nested If Conditions‬‬
‫‪ :Nested If Conditions‬أي حاالت شط ‪ Conditions‬متداخلة أي ‪ condition‬داخل‬
‫‪ condition‬أخري‪ ،‬تستخدم لعمل ‪ filtration‬لمجموعة من البيانات أي تـ ‪ filter‬من‬
‫هذه البيانات حيث أول شط نقوم بعمل ‪ filter‬لبيانات معينة ومن ثم نبدأ التعامل مع‬
‫البيانات المتبقية بسهولة عن طريق الشوط الداخلة ‪ Nested Conditions‬الموجودة‬
‫داخل الشط األساش الذي قمنا من خالله بعمل ‪ filter‬للبيانات‪.‬‬
‫مثل هذا المثال‪ :‬أول شط قمنا بعمل ‪ filter‬لألشخاص الذي ذو سن أصغر من ‪ 18‬سنة‬
‫ومن ثم ر‬
‫يتبق مجموعة من البيانات نتعامل معها بواسطة ‪Nested Conditions‬‬

‫‪#033 - Control Flow - Ternary Conditional Operator‬‬


‫‪ :Ternary Operator‬هو عبارة عن الـ ‪ If Condition‬المختضة‬
‫‪Syntax‬‬
‫;‪(Condition Is True) ? True : False‬‬

‫ومن الممكن ان نقوم بعمل ‪ assign‬للقيمة الناتجة من هذا الشط لمتغت معي‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#034 - Control Flow - Nested Ternary Operator
Control Flow
- Nested Ternary Operator
- Alternate Syntax For If Condition

Syntax
(Condition Is True) ? True : False;

‫ يطبع الناتج المكتوب‬True ‫ كتابة الشط وف حالة الـ‬:Nested Ternary Operator -1


Code ‫ف الـ‬
‫ شط أخر‬Nested Condition ‫ عبارة عن‬False ‫ تكون الـ‬False ‫ ف حالة الـ‬else ‫وف الـ‬
‫وليس طباعة كلمة فقط‬

True ‫ أو الـ‬False ‫ ف الـ‬Nested Ternary Operator ‫ويمكن إضافة الـ‬

‫ هكذا فال‬one line ‫ عبارة عن‬Conditions ‫ ف الـ‬Block of Code ‫ عندما يكون الـ‬-2
Curly Brackets ‫تحتاج إل كتابة الـ‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


error ‫ يحدث‬Curly Brackets ‫ولكن إذا تكون من سطرين هكذا بدون الـ‬

#035 - Condition Trainings - Create Four Application


‫ المدخالت ر‬cin ‫ من الممكن ف ال ـ‬-1
‫ ان نقوم‬cout ‫ والمخرجات‬user ‫الن تطلب من ال ـ‬
‫ متغتات بجانب بعض بهذه الطريقة‬3 ‫بإضافة‬
Done Applications
#036 - Control Flow - Switch Case
‫ معناها التحويل أو التبديل بي شء وش أخر‬:Switch -
:Syntax ‫ ال ـ‬-

switch ، if ‫ الفرق بي‬-

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ -‬طريقة عملها أو ال ـ ‪ Cycle‬الخاصة بال ـ ‪day‬‬
‫بالتتيب لو الشخص كتب ‪ 1‬يبدأ ينفذ ال ـ ‪ block of code‬الىل بعده بعد‬ ‫يمش ر‬
‫كدا ال ـ ‪ break‬بتطلع برا ال ـ ‪ block of code‬تعمل ‪ terminate‬أي انهاء لل ـ‬
‫‪ switch‬وتنه ال ـ ‪ cycle‬ف هذا الجزء وإذا لم يكن ال ـ ‪ case‬هو ‪ 1‬يبدأ‬
‫يدخل عىل ‪ case 2‬وإذا لم يكن ‪ 2‬أو ‪ 3‬يرجع لل ـ ‪default‬‬
‫‪ -‬كملة ;‪ break‬اختيارية من الممكن أن ال نقوم بكتابتها ولكن ف بعض األمثلة لكن‬
‫ال تنفع ف المثال السابق‬

‫‪ -‬من الممكن دمج الحالتي مع بعضهم البعض‬

‫‪ -‬ال ـ ‪ switch‬ال يقبل نوع بيانات غت ‪integer, character‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#037 - Switch Training - Create Three Application
‫ يقوم بإستدعاء المتغت الثابت‬switch ‫ ف‬default ‫ عندما ال نقوم بوضع ال ـ‬:‫ملحوظة‬

#038 - Array - What Is Array

Arrays
- What is Array?
--- Collection Of Elements Of The Same
Type
--- Placed in Contiguous Memory
Locations
--- Referenced By Index Started From 0
- Why We Need Array?
- Creating Array Syntax
- Check Array Size
- Create Array Without Size

:Array ‫ المصفوفة‬-
‫ مجموعة من البيانات من نفس النوع‬Collection ‫ عبارة عن‬-1

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ -2‬هذه العنارص توضع ف أماكن متجاورة ف ال ـ ‪Memory‬‬
‫‪ -3‬كل عنض من العنارص نصل إليه عن طريق ال ـ ‪ Index‬الخاص به وال ـ ‪ Array‬ه‬
‫"‪ "0 based indexing‬أي أن العنض األول ف ال ـ ‪ Array‬ال ـ ‪ index‬الخاص‬
‫به رقمه صفر‬
‫‪ -‬استخدام ال ـ ‪:Array‬‬
‫تستخدم لوضع العديد من البيانات كاألسماء واألرقام ف مصفوفة واحدة‬
‫ً‬
‫بدال من وضع كل اسم أو رقم ف متغت معي‪.‬‬ ‫ون ـ ‪ Access‬عىل جميعهم مع بعض‬
‫‪Syntax of Array -‬‬

‫‪ -‬حجم الـمصفوفة ‪:Array Size‬‬


‫يكون عىل حسب نوع البيانات ويكون حاصل رصب عدد البيانات*حجم نوع‬
‫البيانات بال ـ ‪Bytes‬‬

‫ملحوظة‪ :‬من الممكن عدم كتابة عدد عنارص ال ـ ‪ Array‬ويقوم ال ـ ‪ Compiler‬بإستنتاج‬


‫عدد عنارص ال ـ ‪ Array‬تلقائيا‬

‫ملحوظة‪ :2‬ومن الممكن أيضا كتابة ‪ Syntax‬ال ـ ‪ Array‬بدون عالمة = بدون أي ‪error‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#039 - Array - Access Elements & Memory Location

Arrays
- Access Array Elements
- Check Element Location

Array ‫ يكون عن طريق أسم الـ‬Array ‫ عىل عنض من عنارص ال ـ‬access ‫ لنقوم بعمل‬-1
‫ للعنض‬index ‫وال ـ‬

‫ عن طريق‬Array ‫ لعنض من عنارص ال ـ‬Memory Location ‫ يمكن الحصول عىل ال ـ‬-2


Array[index] ‫ "&" نضعها قبل أسم ال ـ‬and ‫عالمة ال ـ‬

#040 - Array - Add And Update Elements

Arrays
- Declare Empty Array
- Add Elements To Array
- Update Array Elements
- Get Length Of Array With Sizeof

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


Declare Empty Array & Add Elements To Array & Update Array Elements -1

:‫مالحظات‬
‫ ر‬indexes ‫ ال يلزم تعديل قيم ال ـ‬-1
‫بالتتيب‬
‫ رقم‬Terminal ‫ فارغ ينتج ف ال ـ‬Index ‫ عندما ال نقوم بإعطاء قيمة ويكون ال ـ‬-2
Random

‫ الرقم‬Terminal ‫ للمرة الثانية عند استخراجه ينتج ف ال ـ‬Index ‫ عند تحديث ال ـ‬-3
‫الجديد بعد التحديث‬

Get Length Of Array With Sizeof -2

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


#041 - Array - Two Dimensional Array

Arrays
- Two Dimensional Arrays AKA [2D
Array]

Search For
- Matrix Operations
- 3D Array

‫ ر‬:Two Dimensional Array -


‫ أي جدول به‬Table with rows and columns ‫تعتت‬
.‫صفوف وأعمدة‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ ر‬const ‫ ثابتي‬int rows ، columns ‫ يجب ان يكون ال ـ‬:‫ملحوظة‬
error ‫حن ال يحدث‬
‫ وال ينفع حدوث هذا‬Array ‫ألن إذا لم يكونوا ثابتي فيمكن تحديث صفوف وأعمدة ال ـ‬

#042 - Array - Class Array


Array ‫ طريقة أخري ألنشاء ال ـ‬-1
Syntax: Template<Type, Size> Identifier;

.size() ‫ نقوم باستخدام‬Array ‫ لمعرفة حجم ال ـ‬-2

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


.fill -3
‫ بنفس القيمة‬Array ‫ الموجود ف ال ـ‬indexes ‫تستخدم لجعل جميع ال ـ‬

ASCII value ‫ ينتج ال ـ‬char ‫ مثل ال ـ‬.fill ‫ عند وضع نوع أخر من البيانات ف‬:‫ملحوظة‬

2 ‫ رقم‬False ‫ ولل ـ‬1 ‫ رقم‬True ‫ ينتج لل ـ‬Boolean value ‫وعند وضع‬

#043 - Array - Methods Discussions


.front() -1
Array ‫تقوم باستدعاء أول عنض ف ال ـ‬

.back() -2
Array ‫تقوم باستدعاء أخر عنض ف ال ـ‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


.at(element) -3
‫ الخاص‬index ‫ معي ف المصفوفة من خالل رقم ال ـ‬element ‫تقوم باستدعاء‬
.‫به‬

.size() -4
‫ الموجودة بالمصفوفة‬elements ‫تعط عدد ال ـ‬

.empty() -5
Boolean ‫للكشف عن المصفوفة إذا كانت فارغة أم ال وتعط القيمة‬

#044 - Array Trainings - Guess The Number Game


Done
#045 - String - What Is A String
)Full name – ‫ هو أي شء عبارة عن بيانات كنصوص مكتوبة مثل (االسم‬:String ‫ ال ـ‬-1
Address ‫ ال ـ‬،About ‫ ال ـ‬،Email ‫ ال ـ‬،User name ،
Characters ‫ مجموعة من ال ـ‬Array Of Characters ‫ عبارة عن‬String ‫ ال ـ‬:‫ملحوظة‬
Array ‫داخل ال ـ‬

\0 ‫ تنته ب ـ‬string ‫ حرف الن ال ـ‬12 ‫وتكون متكونة من‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ <= \0‬تقوم ب ـ ‪ Terminate‬ال ـ ‪ string‬أي انهائها‬

‫‪ array of characters -2‬بطريقة ال ـ ‪ array‬الطبيعية وال يوجد بها اختالف بينها وبي‬
‫الطريقة األول‪.‬‬

‫‪ -3‬انشاء ال ـ ‪ string‬عن طريق ال ـ ‪ class‬وهذه الطريقة ال تختلف عن البنية األساسية وهو‬


‫ايضا يقوم بعمل ‪ array of characters‬ولكن الفرق ف ال ـ ‪ class‬يوجد ‪options,‬‬
‫‪ properties‬تستخدم مع ال ـ ‪ string‬ذو أهمية‪.‬‬
‫ملحوظة‪ :‬االختالف الوحيد هو التخزين وسعته ف ال ـ ‪RAM‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


VS Code, Visual Studio ‫ أيضا بي ال ـ‬RAM ‫ وتختلف سعة التخزين ف ال ـ‬-4

#046 - String – Concatenating

String
- Concatenating Strings
--- Normal Way
--- strcat => Include string.h
--- With +
--- append

‫ ببعضها‬strings ‫ ف علوم الكمبيوتر ه نظرية ربط ال ـ‬:Concatenating Strings -1


.‫ ببعضها‬variables ‫البعض أو نظرية ربط ال ـ‬
‫ بالطريقة المعتادة‬concatenate ‫ويمكن عمل ال ـ‬

"include <cstring>" ‫" أو‬string.h" ‫" بإضافة‬strcat" ‫ هكذا‬methods ‫أو بال ـ‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫أو عن طريق ال ـ ‪+‬‬

‫أو عن طريق ‪ .append‬أي اللحاق ال ـ ‪ string‬بال ـ ‪ string‬األخرى‬

‫‪#047 - Loop With For‬‬

‫‪Loop‬‬
‫‪- Loop With For‬‬
‫‪- Loop On Array‬‬

‫‪ -‬ال ـ ‪ Loop‬أو التكرار‪ :‬عن طريق نستطيع أن نقوم بتكرار ‪ Block of code‬أي عدد من‬
‫المرات عىل حسب الفكرة‬
‫‪ Syntax -‬ال ـ ‪:Loop With For‬‬

‫أول مرحلة ف ال ـ ‪ loop‬ال ـ ‪ i = 0‬ثم هل ال ـ ‪ i < 6‬إذن يقوم بطبعها وبعدها يقوم بزيادة‬
‫حن يصل إل ال ـ ‪ 5‬ويقوم بطباعتها ويقوم بزيادة ‪1‬‬‫قيمتها ‪ 1‬ثم يقوم بطباعة ‪ 1‬وهكذا ر‬
‫ومن ثم الـ ‪ 6‬ليست أصغر من ال ـ ‪ 6‬إذن ال يقوم بطباعتها وتقف هنا ال ـ ‪loop‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫ لفهم الفكرة‬loop ‫شكل مبسط لل ـ‬

Array ‫ تستخدم ايضا لطباعة عنارص ال ـ‬-

#048 - Loop With For - Advanced Syntax


‫ هكذا‬Array ‫يمكن طباعة عنارص ال ـ‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ مثل‬curly brackets ‫ ف سطر واحد من الممكن إزالة ال ـ‬Block of code ‫ لو ال ـ‬:‫ملحوظة‬
if condition ‫ال ـ‬

for ‫ داخل ال ـ‬initialize, condition, update ‫ من الممكن عدم كتابة ال ـ‬:2‫ملحوظة‬


.‫وكتابتهم ف مكان أخر‬
1- Initialize

2- Update

3- Condition
loop ‫ لل ـ‬terminate ‫ لعمل‬break; ‫نقوم باستخدام‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ يجب مراعاة ترتيبهم الصحيح‬:3‫ملحوظة‬

#049 - Loop With For - Advanced Trainings


index ‫ زوجيا بال ـ‬Loop ‫ بواسطة ال ـ‬Array ‫ طريقتي لطباعة بعض األرقام من ال ـ‬-

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ طريقتي لطباعة العنارص تنازليا‬-

for ‫ خارج ال ـ‬update ‫ وال ـ‬condition ‫ وال ـ‬initialize ‫ لوضع ال ـ‬-3

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


#050 - Loop With For - Nested Loop
If condition ‫ أخر مثل ال ـ‬loop ‫ بداخله‬loop ‫ هو‬:Nested loop ‫ ال ـ‬-

#051 - Loop With While


While ‫ ال ـ‬Syntax -

while (Condition Is True)


{

‫ لكن لها استخدامات مختلفة‬loop ‫ تشبه ال ـ‬while ‫ يدل عىل أن ال ـ‬:‫ مثال‬-

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


while ‫ وان نقوم بقطع شط ال ـ‬while ‫ داخل‬if ‫ ونستطيع استخدام‬-
‫ وبتغيت ر‬-
Terminal ‫التتيب تتغت النتيجة ف ال ـ‬

#052 - Loop With Do While


ً
‫ أوال ثم التأكد من صحة الشط‬Block of code ‫ هو أن تقوم بتنفيذ ال ـ‬:Do While ‫ ال ـ‬-1
ً
.Block of code ‫ أوال ثم تنفيذ ال ـ‬Condition ‫ ال ـ‬while ‫عكس ال ـ‬
Do While ‫ ال ـ‬Syntax -

do
{

} while (Condition is True)

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫مثالي لـل ـ ‪while‬‬

‫مثالي لل ـ ‪do while‬‬

‫‪#053 - Loop - Break, Continue‬‬


‫‪ :Continue -1‬هو أن تقوم بعمل ‪ skip‬ل ـ ‪ Element‬داخل ال ـ ‪ Array‬عند عمل ‪for‬‬
‫‪ loop‬لل ـ ‪Array‬‬

‫ولكن إذا قمنا بعمل ال ـ ‪ skip‬بعد ال ـ ‪ cout‬لن يحدث شء ألن الفعل سوف يكون حدث‬
‫وقام بطباعتها بالفعل قبل ان يقوم بعمل ال ـ ‪ skip‬لها‪.‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫والدليل إذا قمنا بوضع ‪ cout‬ال ـ ‪ After‬بعد ال ـ ‪ Continue‬سيقوم بطباعة رقم ‪ 20‬ولن‬
‫يقوم بطباعة ال ـ ‪ After‬ألنه قام بعمل ‪ skip‬لل ـ ‪ iteration‬وهيا ال ـ ‪After‬‬

‫ملحوظة‪ :‬عند وجود رقمي ‪ 20‬ف ال ـ ‪ Array‬سوف يقوم بعمل له ‪ skip‬أيضا ألنه عبارة‬
‫عن ‪ iteration‬بي ال ـ ‪ iterations‬الباقيي الموجودين ف ال ـ ‪Array‬‬

‫‪ :break -2‬هو ان يقوم بالوقوف عند ‪ element‬معي ف المصفوفة وتقف ال ـ ‪iteration‬‬


‫عند هذا ال ـ ‪element‬‬

‫وإذا كان ال ـ ‪ break‬بعد ال ـ ‪ cout‬وليس قبلها سوف يقوم بطباعة ال ـ ‪ element‬ثم يقوم‬
‫بوقف ال ـ ‪ iteration‬من بعده‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#054 - Loop Training Create Three Apps

Loop
- Compare
--- For => Specific Number Of Loops
--- While => Loop As Long Condition Is
True
--- Do While => Always Execute Once

Create Three Apps


--- Count Positive & Even Numbers Only
--- Guess The Number
--- Reversed Elements From User

‫ تعرفه أي معروف‬iterations ‫ تستخدم عندم يوجد لديك عدد معي من ال ـ‬:For -1


‫عددهم‬
‫ سوف يستمر‬true ‫ عندما يكون لدينا شط اثناء ما الشط صحيح أي اجابته‬:While -2
false ‫حن يكون الشط خطأ‬ ‫ ر‬loop ‫ف ال ـ‬

‫ لكن تنفذ شء ف البداية‬While ‫ مثل ال ـ‬:Do While -3

- Create Three Apps


1- Count Positive & Even Numbers Only

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


2- Guess The Number

3- Reversed Elements From User

#055 - Function - Introduction

Function
- DRY - Don't Repeat Yourself
- User Defined and Built-In
- Syntax
- Example
- Why We Use Functions
- Declare A Function And Call It
Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir
‫‪ :Function -‬ه ‪ Block of Code‬أي مجموعة من األسطر ا رلتمجية ننفذ بها مهمة‬
‫معينة (‪ )Task‬أو ر‬
‫أكت من مهمة‬
‫‪ -1‬ه تطبيق لمبدأ ‪DRY – Don't Repeat Yourself‬‬
‫‪ -2‬يوجد نوعي من ال ـ ‪ Function‬هما‬
‫‪ :Built-In Function .1‬وتسم ‪ Standard Function‬ايضا وه‬
‫موجودة ف اللغة جاهزة ونقوم باستخدامها مباشة‪.‬‬
‫‪ :User Defined Function .2‬ه ال ـ ‪ Function‬ر‬
‫الن نقوم بإنشائها‬
‫ونقوم بتسميتها االسم الذي نريده ونقوم من خاللها بإرجاع نوع‬
‫البيانات الذي نريده ونجعلها تقوم بتنفيذ المهمة الذي نريد تنفيذها‪.‬‬
‫‪Syntax -3‬‬
‫)‪returnDataType functionname(Param1, Param2, Param3‬‬
‫{‬
‫‪// Function Body Contain Block Of Code‬‬
‫}‬
‫ملحوظة‪ :‬ال ـ ‪ Parameter‬هو معامل التجربة‬
‫‪Declare A Function And Call It -4‬‬

‫ملحوظة‪ void :2‬معناها فراغ أو فارغ‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#056 - Function With Parameter
‫ نقوم‬function ‫ وعند استدعاء ال ـ‬square brackets ‫ يوضع بي ال ـ‬parameter ‫ ال ـ‬-
square brackets ‫ ف ال ـ‬parameter ‫بذكر اسم ال ـ‬

‫ ولكن الذي يكتب عند عمل‬parameter ‫ يسم‬function ‫ الذي يكتب ف ال ـ‬:‫ملحوظة‬


‫ هو ال ـ‬parameter ‫يعتت ال ـ‬
‫ حيث ر‬argument ‫ يسم‬function ‫ لل ـ‬call/invoke
variable ‫ لل ـ‬value ‫ هو ال ـ‬argument ‫ وال ـ‬variable

‫ أو ر‬2 parameters ‫ عند وضع‬:2‫ملحوظة‬


‫أكت يجب أن تكتب كل قيمة من قيم ال ـ‬
.‫ من نفس النوع‬arguments ‫ ف ال ـ‬parameters

‫ نفس عدد ال ـ‬function ‫ عند استدعاء ال ـ‬arguments ‫ يجب ان يكون عدد ال ـ‬:3‫ملحوظة‬
function ‫ المكتوبي ف ال ـ‬parameters

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


#057 - Function With Parameter Training
:1‫مثال‬

2 parameter ‫ واحد ولكن الذي عىل اليمي بواسطة‬parameter ‫الذي عىل اليسار‬
:2‫مثال‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


#058 - Function Parameter Default Value
‫ر‬
‫ أي عندما ال‬parameter ‫االفتاضية لل ـ‬ ‫ هو القيمة‬:Parameter Default Value -
‫ر‬
‫ يأخذ القيمة من القيمة االفتاضية‬function ‫ عند استدعاء ال ـ‬parameter ‫يجد قيمة لـل ـ‬

error ‫ الثات لن يحدث‬parameter ‫ لل ـ‬Default Value ‫ عند وضع‬:1‫ملحوظة‬

Default ‫ األول وعدم وضع‬parameter ‫ لل ـ‬Default Value ‫ عند وضع‬:2‫ملحوظة‬


error ‫ الثات يحدث‬parameter ‫ لل ـ‬Value

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


#059 - Passing Array As Parameter
‫ ر‬:Passing Array As a Parameter -
‫ أي ثابتة‬static ‫ ك ـ‬function ‫حن ال نجعل ال ـ‬
‫ لك نجعل‬Array ‫حيث نقوم بالتعديل والجمع عند زيادة كل رقم هكذا لذا نستخدم ال ـ‬
Dynamic ‫ ك ـ‬Function ‫ال ـ‬

Array ‫ بواسطة ال ـ‬Dynamic ‫ ال ـ‬Function ‫ ال ـ‬-

#060 - Function - Return Statement + Void


void ‫ فقط وهيا ال ـ‬system ‫ معي ف ال ـ‬action ‫ تقوم بعمل‬:No Return Function -1
function
‫ مباشة‬Terminal ‫ ولكن يقوم بطبع القيمة ف ال ـ‬،‫ ال يقوم بإرجاع قيمة‬:‫مثل هذا المثال‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ملحوظة‪ :‬ال يمكن ان نقوم بعمل ‪ assign‬لقيمة ال ـ ‪ void function‬داخل ‪variable‬‬
‫ينتج خطأ من ال ـ ‪compiler‬‬
‫)"‪(a value of type "void" cannot be used to initialize an entity of type "int‬‬

‫حيث هنا نقوم بعمل متغت ‪ int‬ونريد أن نضع بداخله قيمة وهذه القيمة لم تقوم‬
‫ر‬
‫باالستجاع ‪return‬‬

‫‪ :Return Function -2‬مثل اآللة الحاسبة نقوم بكتابة رقم ونجمع عليه رقم أخر ثم‬
‫نضغط = يقوم بإعادة قيمة لنا ومن الممكن أن نقوم بأخذ هذه القيمة وعمل له عملية‬
‫أخري حيث يوجد قيمة حقيقة نتعامل معها‪.‬‬
‫مثال‪ :‬عىل اليسار عند استدعاء ال ـ ‪ function‬ينتج ال ـ ‪ cout‬ف ال ـ ‪ terminal‬دون تأثت‬
‫وعىل اليمي ال ـ ‪ function‬تطبع قيمة ولكنها تقوم بإرجاع قيمة تقوم باستخدامها كما‬
‫تشاء‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫ملحوظة‪ :‬ال ـ ‪ main function‬يجب ان يكون نوعها ‪ int‬وال ينفع أن يكون ‪void‬‬

‫‪ :Nothing After Return -3‬أي عملية او طباعة بعد ال ـ ‪ return‬لن تنفذ حيث أن ال ـ‬
‫‪ compiler‬عندما يصل إل ال ـ ‪ return‬يقوم بالعودة ألعىل لتجع شء من ال ـ ‪function‬‬
‫وال يكمل بعد ال ـ ‪return‬‬

‫‪ :Void With Return -4‬ال يمكن ان نقوم بإرجاع قيمة ‪ integer‬داخل ‪void‬‬
‫‪ function‬حيث ان القيمة عدد وال ـ ‪ function‬فارغة‪.‬‬

‫تعتت ‪ void‬أي فارغة ونقوم بعمل ال ـ‬


‫لكن عند وضع ;‪ return‬فقط لن يحدث ‪ error‬ألنها ر‬
‫;‪ return‬ألنها تقوم بعمل ال ـ ;‪ break‬أي قم بإنهاء ال ـ ‪ function‬هنا‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#061 - Function - Forward Declaration
‫ عن‬Declaration - ‫ قبل اإلعالن‬function ‫ لل ـ‬call/invoke ‫ ال يجب عمل‬-1
function ‫ال ـ‬

‫ قبل أن يتم عمل‬function ‫ أي التسبيق باإلعالن عن ال ـ‬:Forward Declaration -2


‫ ولكن ف‬،‫ من األساس ومن الممكن تكون ف نفس الملف‬function ‫ لل ـ‬define/declare
‫األسفل أو ف ملف أخر‬

‫المثال الذي عىل اليسار لتصحيح الخطأ‬


‫ لن يؤثر إذا كان ال ـ‬Forward Declaration ‫لكن الذي عىل اليمي لتوضيح أن ال ـ‬
function ‫ قبل استدعاء ال ـ‬function ‫ لل ـ‬declare

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


call/invoke ‫ مرتي قبل أن نقوم بعمل‬function ‫ لكن ال يمكن اإلعالن عن ال ـ‬:‫ملحوظة‬
redefinition ‫ وهو‬error ‫له ومرة أخري بعده سوف يحدث‬

#062 - Built-In Functions - Math Functions

- Math Functions
--- pow
--- fmod
--- ceil
--- floor
--- round
--- trunc

power function ‫ وه األس أي‬:pow -1

‫ر‬
modulus function ‫ وه باف القسمة أي‬:fmod -2

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ملحوظة‪ :‬ال يمكن استخدام ال ـ ‪ modulus operator‬مع رقم او رقمي ‪ float‬لذا‬
‫نستخدم ‪ modulus function‬وهنا تكمن أهمية ال ـ ‪function‬‬

‫‪ :ceil -3‬بمعن سقف وه ‪ function‬لتقريب الرقم العشي وتحويله لعدد صحيح‬


‫األكت‬
‫ر‬ ‫وألنها بمعن سقف سوف يقوم بتقريبها للرقم‬

‫‪ :floor -4‬بمعن األرض وه ‪ function‬لتقريب الرقم العشي وتحويله لعدد صحيح‬


‫وألنها بمعن أرض سوف يقوم بتقريبها للرقم األصغر‬

‫كت أو األقل حيث يختلف عن‬‫‪ :round -5‬يقوم بالتقريب حسب الرقم قريب من الرقم األ ر‬
‫لألكت أو األقل‬
‫ر‬ ‫ال ـ ‪ ceil, floor‬مهما كانت الكسور سوف يقوموا بالتقريب‬

‫األكت ولكن إذا كان الرقم أقل‬


‫ر‬ ‫ملحوظة‪ :‬إذا كان الرقم ‪ 0.5‬أو أعىل من النص يقرب للرقم‬
‫من النص يقرب للرقم األصغر‬

‫‪ :trunc -6‬وه إزالة الكسور نهائيا وه بمعن ‪ truncate‬أي اقتطاع‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#063 - Built-In Functions - Training - Create 2 Apps

Function
- Built-In Functions
--- cctype Functions
------ tolower()
------ toupper()
------ isupper()
------ islower()
------ isspace()

- Create 2 Applications
--- Swap Case App
--- Remove Spaces App

.‫ الخاصة به‬ascii value ‫ ولكن ينتج قيمة ال ـ‬small ‫ لجعل الحرف‬:tolower() -1

.‫ الخاصة به‬ascii value ‫ ولكن ينتج قيمة ال ـ‬capital ‫ لجعل الحرف‬:toupper() -2

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ تسأل إذا كان الحرف‬Boolean Expression ‫ كما ف ال ـ‬is ‫ للسؤال ب ـ‬:isupper() -3
Capital
small ‫ تسأل إذا كان الحرف‬:islower() -4
Swap Case App :‫مثال‬

tab ‫ إلزالة جميع المسافات بما بينهم مسافة السطر الجديد وال ـ‬:isspace() -5

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


#064 - Built-In Functions - Training - Create 3 Apps

Function
- Built-In Functions
--- Algorithm Header
------ min
------ max
------ count

- Create 3 Applications
--- Find Minimum Number
--- Find Maximum Number
--- Count Number Occurance

‫ أو‬Array of Numbers ‫ أو مجموعة من األرقام‬Contain ‫ للمقارنة بي رقمي‬:min -1


‫ أقل‬ASCII Value ‫الحروف واستخراج الرقم األصغر او الحرف الذي له‬

‫ أو‬Array of Numbers ‫ أو مجموعة من األرقام‬Contain ‫ للمقارنة بي رقمي‬:max -2


‫أكت‬
‫ ر‬ASCII Value ‫األكت او الحرف الذي له‬
‫ر‬ ‫الحروف واستخراج الرقم‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


Find Minimum Number App -3

Find Maximum Number App -4

Count Number Occurrence App -5

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪#065 - Function Overloading‬‬
‫‪ :Function Overloading -1‬وهو أن تقوم بعمل ر‬
‫أكت من ‪ function‬بنفس األسم‬
‫ولكن بإختالف ال ـ ‪ parameters‬أو بإختالف ال ـ ‪ types‬أو االثني معا‪.‬‬

‫لن يحدث ‪ error‬ألن هذه ال ـ ‪ function‬األخرى تسم ‪ overloaded function‬أي‬


‫بنفس األسم لكن عدد ال ـ ‪ parameters‬مختلف‬

‫ويختك بأن قومت‬


‫ر‬ ‫ملحوظة‪ :‬يحدث ‪ error‬عندما يكونوا نفس عدد ال ـ ‪parameters‬‬
‫بعمل ‪ redeclare‬لل ـ ‪function‬‬

‫ملحوظة‪ :2‬وعند استدعاء ال ـ ‪ function‬يبدأ بال ـ ‪ function‬األول وعند وضع عدد‬


‫‪ parameters‬ال ـ ‪ function‬الثانية يقوم باستدعائها‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


parameters ‫ ال ـ‬type ‫ مع تغت‬function overloading -2

#066 - Function Recursion


‫ ت ـ‬function ‫ من خالله نجعل ال ـ‬technique ‫ هو عبارة عن‬:Function Recursion -
‫ نفسها‬call/invoke

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪#067 - Vector - What Is Vector‬‬

‫‪ :Vector -1‬عبارة عن ‪ Container‬او حاوية نضيف بداخلها مجموعة من البيانات‬


‫المتشابهة‪ ،‬مجموعة من األرقام أو ال ـ ‪ characters‬أو ال ـ ‪ strings‬وهكذا‪..‬‬
‫‪ -2‬ال ـ ‪ Vector‬عبارة عن ‪ Dynamic Array‬أي نستطيع عمل ‪ Resize‬لها بعد انشاءها أي‬
‫نستطيع ان نقوم بزيادة او نقص عنض عىل عكس ال ـ ‪ Array‬بعد انشاءها تكون ‪ Fixed‬ال‬
‫نستطيع عمل ‪ Resize‬لها‬
‫‪ -3‬ال ـ ‪ Vector‬عبارة عن ‪ Class‬وه مخصصة مع ال ـ ‪OOP‬‬
‫‪vector<type> VariableName‬‬ ‫‪ -4‬ال ـ ‪ Syntax‬لل ـ ‪Vector‬‬
‫قمنا بتحديد ال ـ ‪ size‬لكن نستطيع‬ ‫ملحوظة‪ :‬ف هذا المثال‬
‫ايضا ان نقوم بعمل ‪ Resize‬لها حيث أن ال ـ ‪ 4‬ه ال ـ ‪ size‬أي ‪ 4‬عنارص وال ـ ‪ 50‬أول قيمة ف‬
‫ال ـ ‪Vector‬‬
‫يحدث ‪ error‬إذا قمنا باضافته لل ـ ]‪index[4‬‬

‫ملحوظة‪ :2‬تظهر خصائص ال ـ ‪ class‬بعد ال ـ ‪dot‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


Loop on Elements -5

‫الن ال نستطيع التعديل عليها ر‬


‫الن ب ـ‬ ‫ ر‬vector ‫ يمكن تعديل عنض ف ال ـ‬:3‫ملحوظة‬
‫ هكذا‬at ‫ بواسطة‬parentheses
push_back ‫ وه ال ـ‬class ‫واضافة عنض اضاف بواسطة خاصية ال ـ‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪#067 - Vector Versus Array‬‬

‫‪Vector Versus Array‬‬


‫‪Vector‬‬ ‫‪Array‬‬
‫يحتاج إل ال ـ ‪Standard Header File‬‬ ‫مكون من مكونات اللغة ‪Language Construct‬‬ ‫‪1‬‬
‫>‪#include <vector‬‬ ‫ال يحتاج إل ‪header file‬‬
‫بعد انشائه نستطيع إضافة‪/‬حذف عنض‬ ‫ال نستطيع إضافة او حذف أي عنض‬ ‫‪2‬‬
‫ألنه ‪ Dynamic‬ونستطيع ان نقوم بعمل ‪ Resize‬له‬ ‫أي ال نستطيع ان نقوم بعملية ال ـ ‪Resize‬‬
‫العنارص نستطيع ان ن ـ ‪ access‬عليها عن طريق‬ ‫العنارص ف ال ـ ‪ Array‬ه ‪Index Based‬‬ ‫‪3‬‬
‫ال ـ ‪ Iterator‬فقط ألن عنارص ال ـ ‪vector not index‬‬ ‫ون ـ ‪ access‬عىل العنارص عن طريق ال ـ ‪index‬‬
‫‪based‬‬
‫ال ـ ‪ Vector‬ألنه ‪ Dynamic‬فإن الدخول عىل العنارص‬ ‫ال ـ ‪ Array‬أشع من ال ـ ‪Vectors‬‬ ‫‪4‬‬
‫يكون أبطأ من ال ـ ‪Array‬‬
‫أكت ف ال ـ ‪Memory‬‬
‫ال ـ ‪ Vector‬يقوم بحجز مساحة ر‬ ‫ال ـ ‪ Array‬تقوم بحجز مساحة أقل ف ال ـ ‪Memory‬‬ ‫‪5‬‬
‫من ال ـ ‪Array‬‬ ‫من ال ـ ‪Vector‬‬
‫ال ـ ‪ Vector‬موجود ف لغة ال ـ ‪ C++‬فقط‬ ‫ال ـ ‪ Array‬توجد ف لغة ال ـ ‪C & C++‬‬ ‫‪6‬‬

‫ملحوظة‪ :1‬عندما ال نعرف حجم البيانات الذي سوف نقوم بإضافتها نستخدم ال ـ‬
‫‪Vector‬‬
‫مثل‪ :‬مجموعة من المهارات يقوم باضافتها المستخدم وال نعرف عددها لذا نستخدم ال ـ‬
‫‪ vector‬لوجود سهولة ف إضافة البيانات او حذفها‬
‫ملحوظة‪ :2‬عندما نحتاج إل الشعة واألداء نقوم باستخدام ال ـ ‪Array‬‬
‫ملحوظة‪ :3‬نستطيع ان ننش ‪ Dynamic Array‬لكن ال ـ ‪ Vector‬أفضل‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫ملحوظة‪ :4‬عندما نقوم بإضافة عنض إل ال ـ ‪ Array‬يحدث ‪ error‬الن عدد العنارص‬
‫محدد‬

‫لكن عندما نحدد عدد ال ـ ‪ elements‬داخل ال ـ ‪ Array‬لن يحدث ‪error‬‬

‫ملحوظة‪ :5‬وعند انشاء ال ـ ‪ Array‬بهذه الطريقة ايضا يحدث ‪error‬‬

‫وعندما نحدد عدد ال ـ ‪ elements‬داخل ال ـ ‪ Array‬لن يحدث ‪error‬‬

‫‪Function With Vector Instead of Array -‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#069 - Vector - Access, Add, Update And Delete

‫ من األفضل ان‬vector ‫ من عنارص ال ـ‬element ‫ عندما نريد ان نستدع‬:Access -1


‫ عندما نقوم باستدعاء عنض غت‬square brackets ‫ ألن ال ـ‬.at() ‫نقوم باستخدام‬
‫ ال نستطيع االعتماد عليها او تركها ف‬garbage value ‫ تعطينا‬vector ‫موجود ف ال ـ‬
‫التطبيق‬

out of the range ‫ وهو‬error ‫ تنتج‬.at() ‫لكن ال ـ‬

vector ‫ الضافة عنض ف نهاية ال ـ‬:push_back -2

.at() ‫ عن طريقة ال ـ‬vector ‫ ف ال ـ‬element ‫ يمكن تحديث قيمة‬:Update -3

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ :pop_back -4‬تقوم بإزالة أخر عنض من ال ـ ‪vector‬‬

‫‪#070 - Vector – Functions‬‬

‫‪ :size() -1‬عدد عنارص ال ـ ‪ vector‬الحال‬

‫‪ :max_size() -2‬عدد العنارص ر‬


‫الن تسطيع أن تقوم بإضافتها ف ال ـ ‪vector‬‬

‫‪ :capacity() -3‬ال ـ ‪ storage‬المحجوزة لعنارص ال ـ ‪ vector‬واحيانا عددها يكون ر‬


‫اكت من‬
‫عدد العنارص ألنها تعطينا ال ـ ‪ storage‬وليس عدد العنارص‬

‫‪ :front() -4‬تعط أول عنض ف ال ـ ‪vector‬‬

‫‪ :back() -5‬تعط أخر عنض ف ال ـ ‪vector‬‬

‫ملحوظة‪ :‬ونستطيع عن طريق ال ـ )(‪ at‬استخراج العنض األول واألخت أيضا‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪ :clear() -6‬من خاللها نقوم بإزالة جميع عنارص ال ـ ‪vector‬‬

‫‪ :empty() -7‬تستخدم مع ال ـ ‪ condition‬لنقوم بعمل ‪ check‬إذا كان ال ـ ‪ vector‬فارغ أم‬


‫ال‬

‫‪#071 - Vector - Iterator And Why To Use‬‬

‫‪ :Iterator -‬نستخدمه لنشت عنوان الذاكرة ‪ Memory Address‬الخاص بال ـ‬


‫‪container‬‬
‫‪ -‬لماذا نستخدم ال ـ ‪:Iterator‬‬
‫‪ -1‬يقوم بعمل ‪ simplify‬أي تبسيط للكود وال نحتاج أن نري ال ـ ‪ Iterations‬كاملة‬
‫الخاصة بال ـ ‪Container‬‬
‫أكت من ‪ Algorithm‬مثل البحث او عمل ‪ Sorting‬والبحث عن البيانات‬ ‫‪ -2‬يدعم ر‬

‫‪ -3‬نستطيع أن نتعامل مع العنض من دون نحتاج أن نقوم بعمل ‪ load‬لجميع‬


‫البيانات‬
‫‪ -4‬نستطيع أن نعمل بال ـ ‪ Iterator‬بنفس الطريقة مع كل ال ـ ‪containers‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪ -5‬يقلل نسبة التعقيد ووقت التنفيذ الخاص بال ـ ‪Application‬‬
‫‪(Container<Type>::iterator IteratorName;) :Syntax -‬‬
‫مثال‪:‬‬
‫وليس‬ ‫‪ nums.begin‬تشت إل أول رقم ف ال ـ ‪vector‬‬
‫مجرد طباعة أي من بعد أن نشت له نستطيع أن نقوم بـأشياء كثتة مثل أحضار العنض‬
‫الذي بعده بعنضين او حذف مجموعة العنارص الذي تليه لذا عندما يشت له يكون لل ـ‬
‫‪ iterator‬دور فعال‪.‬‬

‫‪ -‬طريقة أخري إلنشاء ال ـ ‪ iterator‬مباشة‪:‬‬

‫ملحوظة‪ :‬عندما نريد طباعة ما يشت إليه ال ـ ‪ Iterator‬نضع قبله عالمة ال ـ ]*[ ‪asterisk‬‬
‫هذه النجمة تقوم بعمل شء يسم ‪ Dereference‬للوصول إل القيمة أو الكائن‬
‫الموجود ف موقع الذاكرة المخزن ف مؤش‪.‬‬

‫ملحوظة‪ :2‬وعندنا نعطيه )‪ nums.erase(0, 3‬بالعنارص يعطينا ‪ error‬ألنه يريد ال ـ‬


‫‪iterator‬‬

‫لذا سوف نقوم بإعطائه ال ـ ‪ iterator‬هكذا‬

‫ملحوظة‪ :3‬أخر عنض ‪but not including‬‬


‫لذا يقوم بحذف أول عنضين فقط‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫‪#072 - Vector - Traversing With Iterator‬‬

‫‪ -‬التنقل بي العنارص عن طريق ال ـ ‪Iterator‬‬

‫ملحوظة‪ :‬يجب أن يكون النوع ف ال ـ ‪ Iterator‬مثل نوع ال ـ ‪ vector‬وعدم وجود اختالف‬


‫ر‬
‫حن ال يحدث ‪error‬‬

‫‪begin() -1‬‬

‫‪last() -2‬‬

‫حن يشت إل العنض الذي يسبقه ف ال ـ ‪vector‬‬ ‫ملحوظة‪ :2‬يجب وضع ‪ pranetheses‬ر‬
‫وال يقوم بطرح واحد من الرقم األخت بعد ان يشت إليه كما ف المثال السابق‬

‫‪ :advance -3‬بمعن يتقدم وهو ان تقوم بالتقديم من عنض لعنض أخر داخل ال ـ‬
‫‪ vector‬لألمام أو للخلف‪.‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#073 - Vector - Loop With Iterator And Ranged Loop

:Loop With Iterator -1

nums.end() ‫ من الممكن جعلها أصغر من‬:‫ملحوظة‬


Not Equal ‫أو‬
‫ ألنها أشع ألنها ال تقوم بعمل‬pre increment ‫ من األفضل ان نقوم بعمل‬:2‫ملحوظة‬
‫ وترجعه مباشة‬object ‫ لـل ـ‬copy
‫ ولكنه أبطأ‬post increment ‫ومن الممكن أن نقوم بعمل‬

:Ranged Loop With For -2

#074 - Vector - Use Iterator To Count, Sort & Reverse

ً
algorithm ‫ الخاص بال ـ‬Header File ‫ يجب أوال ان نقوم باستدعاء ال ـ‬:‫ملحوظة‬
‫لنستخدمهم‬

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ :Count -1‬ه ‪ function‬تقوم بحساب عدد مرات تكرار رقم ف ال ـ ‪vector‬‬

‫ملحوظة‪ :2‬من المفضل أن نقوم بوضع عالمة ‪ [%] and‬هنا ألنها تقوم بعمل ‪access‬‬
‫عىل القيمة مباشة لذا فإنها أشع‬

‫األكت‬
‫ر‬ ‫‪ :sort -2‬ه ‪ function‬تقوم ربتتيب عنارص ال ـ ‪ vector‬من القيمة األصغر للقيمة‬

‫‪ :reverse -3‬ه ‪ function‬تقوم بعكس ترتيب عنارص ال ـ ‪vector‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


#075 - Pointers - What Are Pointers?

ُ
Memory Address ‫ يخزن قيمة ال ـ‬Variable ‫ معناها مؤش وهو عبارة عن‬:Pointers -
.‫ أخر‬Object ‫ أو‬Variable ‫الخاص ب ـ‬
Reference ‫الن تسم‬ ‫ ]&[ قبل اسم المتغت ر‬and ‫ نقوم بوضع عالمة ال ـ‬:‫ملحوظة‬
Address Of ‫ أو‬Operator
Memory ‫ يساوي‬pointer ‫ بأن هذا ال ـ‬compiler ‫ نقوم بأخبار ال ـ‬:‫مثل هذا المثال‬
Address of "num"

‫ نقوم باستخدام ال ـ‬Address ‫ ولك نصل إل القيمة الموجودة ف هذا ال ـ‬:2‫ملحوظة‬


Deference Operator [*]

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫‪ -‬لك نصل للعنض ونغت القيمة الموجود داخل ال ـ ‪ Memory Address‬نقوم بالتعديل‬
‫عىل ال ـ ‪Deference Operator Of Memory Address‬‬
‫ولن يتغت ال ـ ‪ Memory Address‬لكن تتغت القيمة‬

‫‪#076 - Pointers - Pointing To Array‬‬


‫‪ :Pointing To Array -‬أن نشت إل عنض ف ال ـ ‪ Array‬عن طريق ال ـ ‪pointer‬‬

‫ملحوظة‪ :‬ف العنض الثات والثالث نقوم بوضع ال ـ ‪ pointer‬دخل ‪ prantheses‬ألننا‬


‫نخته بأن يذهب لل ـ ‪ Memory Address‬الذي يليه ثم‬
‫عندما نقوم بعمل )‪ (ptr + 1‬ر‬
‫ُ‬
‫نقوم باستخدام ال ـ ‪ [*] deference operator‬عىل القوس بالكامل لك يحض القيمة‬
‫الموجودة ف هذا ال ـ ‪Memory Address‬‬
‫ملحوظة‪ :2‬نوع البيانات ‪ integer‬وال ـ ‪ size of‬لل ـ ‪ integer‬يكون ‪4 Bytes‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


2 Bytes ‫ إل‬4 Bytes ‫ تتحول من‬short ‫ عندما نقوم بوضع‬:3‫ملحوظة‬

#077 - Pointers - Void And Wild Pointer And Null


‫ خاصة بمتغت‬Memory Address ‫ الذي ال يشت ل ـ‬pointer ‫ هو ال ـ‬:Wild Pointer -1
‫أخر‬
‫ مثل عندما‬Garbage Value ‫ ينتج‬Wild Pointer ‫ عندنا نحاول طباعة ال ـ‬:‫ملحوظة‬
‫ننش متغت وال نعطيه قيمة‬

‫ أو‬NULL ‫ نقوم بوضع‬Garbage Value ‫ وعندما ال نريد أن يعطينا قيمة‬:2‫ملحوظة‬


0 ‫ ف القيمة ومن ثم يعطينا القيمة‬nullptr

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir


‫ملحوظة‪ :3‬عندما نريد أن نوجه ال ـ ‪ pointer‬إل بيانات ال نعرف نوعها سوف نقوم‬
‫باستخدام ال ـ ‪Void Array‬‬
‫ولكن ال نستطيع أن نصل للقيمة عن طريق ال ـ ‪ Deference Operator‬سوف يعط‬
‫‪ error‬إذا حاولنا وذلك بسبب اختالف أنواع البيانات‬

‫وسوف نقوم بحل هذه المشكلة عن طريق ال ـ ‪ Cast‬لل ـ ‪ pointer‬لنوع البيانات المناسب‬
‫ويوجد نوعي من ال ـ ‪:Casting‬‬
‫‪C-Style -1‬‬

‫‪Modern -2‬‬

‫‪#078 - Pointers - Arithmetic And Array‬‬

‫ملحوظة‪ :‬عندما نقوم بإنشاء ‪ Array‬ومحاولة طباعتها سوف يعطينا ال ـ ‪Memory‬‬


‫‪ Address‬ألول ‪ element‬ف ال ـ ‪Array‬‬

‫‪Facebook: fadyalamir77‬‬ ‫|‬ ‫‪LinkedIn: fady-alamir77‬‬ ‫|‬ ‫‪GitHub: fadyalamir‬‬


‫ نقوم‬Array ‫ األول والثات ف ال ـ‬element ‫ عندما نريد طباعة ال ـ‬:Pointer Arithmetic -
dereference operator ‫ أو ال ـ‬square brackets ‫باستخدام ال ـ‬

Arithmetic Operator With Pointer -

Facebook: fadyalamir77 | LinkedIn: fady-alamir77 | GitHub: fadyalamir

You might also like