مراجعة المفاهيم البرمجية الأساسية اللازمة للانتقال إلى برمجة Arduino.
بنهاية الوحدة، يُتوقع القدرة على:
Scope و #define.#include <iostream>
using namespace std;
int main()
{
cout << "Hello";
return 0;
}
يبدأ تنفيذ برنامج C++ من الدالة:
main()
#include <iostream>
إضافة مكتبة الإدخال والإخراج.
using namespace std;
يسمح باستخدام cout و cin.
return 0;
إنهاء البرنامج بصورة طبيعية.
اكتب برنامجًا يعرض:
Welcome to C++
#include <iostream>
using namespace std;
int main()
{
cout << "Welcome to C++";
return 0;
}
اكتب برنامجًا يعرض:
Arduino Programming
C++ Review
بحيث يظهر كل نص في سطر مستقل.
لطباعة نص:
cout << "Hello";
لطباعة متغير:
int age = 20;
cout << age;
لدمج النص مع المتغير:
cout << "Age = " << age;
cout << "Hello" << endl;
cout << "C++";
الناتج:
Hello
C++
int age;
cout << "Enter age: ";
cin >> age;
cout << "Age = " << age;
لقراءة أكثر من قيمة:
cin >> x >> y;
int number;
cout << "Enter number: ";
cin >> number;
cout << "Number = " << number;
اكتب برنامجًا يقرأ:
ثم يعرض القيمتين.
المتغير مكان في الذاكرة لتخزين قيمة.
int age = 20;
يمكن تغيير القيمة:
age = 25;
int // عدد صحيح
float // عدد عشري
double // عدد عشري بدقة أكبر
char // حرف
bool // true أو false
int age = 20;
float temperature = 25.5;
char grade = 'A';
bool isActive = true;
يستخدم const عندما لا نريد تغيير القيمة.
const int MAX_SCORE = 100;
لا يمكن لاحقًا كتابة:
MAX_SCORE = 200;
const float PI = 3.14;
float radius = 5;
float area = PI * radius * radius;
cout << area;
عرّف ثابتًا:
const int DAYS_IN_WEEK = 7;
ثم احسب عدد الأيام في 4 أسابيع.
+ جمع
- طرح
* ضرب
/ قسمة
% باقي القسمة
مثال:
int x = 10;
int y = 3;
x + y // 13
x - y // 7
x * y // 30
x / y // 3
x % y // 1
بدلًا من:
x = x + 5;
يمكن كتابة:
x += 5;
ومن المعاملات:
+=
-=
*=
/=
لزيادة المتغير بمقدار واحد:
x++;
لإنقاصه بمقدار واحد:
x--;
مثال:
int counter = 0;
counter++;
counter++;
تصبح القيمة:
2
اقرأ رقمين واحسب مجموعهما:
int x;
int y;
cin >> x >> y;
cout << x + y;
اكتب برنامجًا يقرأ:
length
width
ثم يحسب مساحة المستطيل.
== يساوي
!= لا يساوي
> أكبر من
< أصغر من
>= أكبر من أو يساوي
<= أصغر من أو يساوي
نتيجة المقارنة تكون true أو false.
&&
يجب تحقق الشرطين.
||
يكفي تحقق أحد الشرطين.
!
عكس النتيجة.
int age = 25;
if (age >= 18 && age <= 60)
{
cout << "Accepted";
}
اقرأ درجة طالب.
إذا كانت الدرجة بين 0 و 100 اعرض:
Valid Grade
if (temperature > 30)
{
cout << "Hot";
}
تنفذ التعليمات إذا تحقق الشرط.
if (grade >= 60)
{
cout << "Passed";
}
else
{
cout << "Failed";
}
if (grade >= 90)
{
cout << "Excellent";
}
else if (grade >= 80)
{
cout << "Very Good";
}
else
{
cout << "Good";
}
تستخدم عند مقارنة متغير بعدة قيم محددة.
switch (option)
{
case 1:
cout << "Start";
break;
case 2:
cout << "Stop";
break;
default:
cout << "Invalid";
}
اقرأ رقمًا.
إذا كان الرقم أكبر من أو يساوي صفرًا اعرض:
Positive
وإلا اعرض:
Negative
اكتب برنامجًا يقرأ رقمًا من 1 إلى 3.
باستخدام switch يعرض:
1 → Red
2 → Green
3 → Blue
تستخدم غالبًا عندما يكون عدد مرات التكرار معروفًا.
for (int i = 1; i <= 5; i++)
{
cout << i << endl;
}
for (int i = 0; i < 5; i++)
تتكون من:
int i = 0
القيمة الابتدائية.
i < 5
شرط الاستمرار.
i++
تغيير العداد.
int i = 1;
while (i <= 5)
{
cout << i << endl;
i++;
}
تستمر ما دام الشرط صحيحًا.
تنفذ التعليمات مرة واحدة على الأقل.
do
{
cin >> number;
}
while (number <= 0);
اعرض الأرقام من 1 إلى 10 باستخدام for.
for (int i = 1; i <= 10; i++)
{
cout << i << endl;
}
استخدم حلقة تكرار لعرض:
2
4
6
8
10
المصفوفة تخزن عدة قيم من النوع نفسه.
بدلًا من:
int score1 = 80;
int score2 = 90;
int score3 = 70;
نستخدم:
int scores[3] = {80, 90, 70};
يبدأ الفهرس من الصفر.
int numbers[3] = {10, 20, 30};
numbers[0] // 10
numbers[1] // 20
numbers[2] // 30
int numbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++)
{
cout << numbers[i] << endl;
}
إذا كانت:
int numbers[5];
فالفهارس الصحيحة:
0 1 2 3 4
استخدام:
numbers[5]
يتجاوز حدود المصفوفة.
حساب مجموع عناصر المصفوفة:
int numbers[4] = {10, 20, 30, 40};
int sum = 0;
for (int i = 0; i < 4; i++)
{
sum += numbers[i];
}
cout << sum;
لديك:
int values[5] = {5, 10, 15, 20, 25};
استخدم for من أجل:
تساعد الدوال على:
مثال:
void showMessage()
{
cout << "Welcome";
}
void printNumber(int number)
{
cout << number;
}
الاستدعاء:
printNumber(10);
int add(int x, int y)
{
return x + y;
}
الاستخدام:
int result = add(5, 3);
دالة تعيد مربع الرقم:
int square(int number)
{
return number * number;
}
الاستخدام:
cout << square(5);
الناتج:
25
اكتب دالة باسم:
multiply
تستقبل رقمين وتعيد حاصل ضربهما.
متغير محلي:
void test()
{
int x = 10;
}
يمكن استخدامه داخل الدالة فقط.
متغير عام:
int counter = 0;
يُعرّف خارج الدوال ويمكن الوصول إليه من عدة دوال.
if (true)
{
int value = 10;
}
لا يمكن استخدام value بعد نهاية { }.
ما الخطأ؟
if (true)
{
int value = 100;
}
cout << value;
value خارج نطاقها عند استخدامها.
أنشئ:
counter.#define LED_PIN 13
#define MAX_VALUE 100
يتم استبدال الاسم بالقيمة قبل عملية الترجمة.
لا نضع:
;
في نهاية #define.
const int LED_PIN = 13;
لها نوع بيانات.
بينما:
#define LED_PIN 13
يعالجها الـ Preprocessor.
في C++ يفضل غالبًا استخدام const للقيم الثابتة، لكن #define يظهر كثيرًا في أكواد Arduino.
#define MAX_SCORE 100
int score = 75;
cout << score << " / " << MAX_SCORE;
الناتج:
75 / 100
عرّف:
#define MIN_VALUE 0
#define MAX_VALUE 255
ثم اعرض القيمتين.
لتخزين حرف واحد:
char grade = 'A';
الفرق بين:
'A'
حرف.
وبين:
"A"
نص.
char name[] = "Ahmed";
cout << name;
يمكن استخدام مصفوفة من char لتخزين نص بسيط.
char command = 'A';
if (command == 'A')
{
cout << "Command A";
}
اقرأ حرفًا من المستخدم.
إذا كانت القيمة:
Y
اعرض:
Yes
وإلا اعرض:
No
int x = 5;
int y = 2;
float result = x / y;
الناتج:
2
لأن العملية تمت بين عددين صحيحين.
يمكن تحويل النوع:
float result = (float)x / y;
الناتج:
2.5
int a = 80;
int b = 90;
int c = 85;
float average =
(float)(a + b + c) / 3;
cout << average;
اقرأ رقمين صحيحين.
احسب ناتج قسمتهما بحيث تظهر النتيجة العشرية.
مثال:
5 / 2 = 2.5
تستخدم لتجميع بيانات مرتبطة معًا.
struct Student
{
int id;
float grade;
};
Student student1;
student1.id = 1;
student1.grade = 95.5;
نستخدم النقطة . للوصول إلى العناصر.
struct Sensor
{
int pin;
float value;
};
Sensor sensor1;
sensor1.pin = 2;
sensor1.value = 25.5;
أنشئ struct باسم:
Product
وتحتوي على:
id
price
ثم أنشئ متغيرًا منها واعرض بياناته.
اكتب برنامجًا:
درجة النجاح:
60
float calculateAverage(int grades[], int size)
{
int sum = 0;
for (int i = 0; i < size; i++)
{
sum += grades[i];
}
return (float)sum / size;
}
int grades[5] = {80, 70, 90, 60, 75};
float average =
calculateAverage(grades, 5);
cout << "Average = " << average << endl;
if (average >= 60)
{
cout << "Passed";
}
else
{
cout << "Failed";
}
اكتب برنامجًا يقرأ 5 أرقام ويخزنها في مصفوفة.
ثم يعرض:
اكتب دالة باسم:
isEven
تستقبل عددًا صحيحًا وتعيد:
true
إذا كان زوجيًا، وإلا تعيد:
false
اكتب برنامج آلة حاسبة بسيطة:
1- Add
2- Subtract
3- Multiply
4- Divide
اقرأ اختيار المستخدم ورقمين، ثم نفّذ العملية باستخدام switch.
;.= بدل ==.break في switch.; بعد #define.راجعنا:
#define.char.struct.