0% found this document useful (0 votes)
339 views

Fundamentals of Programming With C++

يقدم هذا المستند مقدمة عامة عن كورس برمجة السي++. يشرح المحتوى الأساسي للكورس مثل المبادئ الأساسية للبرمجة بالسي++ والبرمجة الكائنية وحل المشكلات. كما يوضح ما هي البيئة التطويرية والأدوات اللازمة لبدء تعلم البرمجة.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
339 views

Fundamentals of Programming With C++

يقدم هذا المستند مقدمة عامة عن كورس برمجة السي++. يشرح المحتوى الأساسي للكورس مثل المبادئ الأساسية للبرمجة بالسي++ والبرمجة الكائنية وحل المشكلات. كما يوضح ما هي البيئة التطويرية والأدوات اللازمة لبدء تعلم البرمجة.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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