الإدخال والإخراج في C++

الإدخال والإخراج هما من أساسيات التعامل مع المستخدم في أي برنامج. في C++، يتم استخدام cin لإدخال البيانات و cout لعرض البيانات على الشاشة. كما يمكن استخدام endl و \n لتنسيق المخرجات. في هذا الدرس، سنتعرف على كيفية استخدام هذه الأدوات بشكل عملي.


1. الإخراج في C++ باستخدام cout

يستخدم cout (الذي يأتي من console output) لطباعة البيانات على الشاشة.

1.1 طباعة نصوص وأرقام

🔹 مثال:

#include <iostream>
using namespace std;

int main() {
    cout << "مرحبًا بك في C++!" << endl;
    cout << "هذا مثال على استخدام cout." << endl;
    return 0;
}

💡 النتيجة:

مرحبًا بك في C++!
هذا مثال على استخدام cout.

2. تنسيق المخرجات باستخدام endl و \n

عند طباعة البيانات، قد تحتاج إلى الانتقال إلى سطر جديد. هناك طريقتان لفعل ذلك:

1️⃣ استخدام endl: ينقل المؤشر إلى سطر جديد.
2️⃣ استخدام \n: يضيف سطرًا جديدًا داخل النص.

🔹 مثال باستخدام endl:

cout << "السطر الأول" << endl;
cout << "السطر الثاني" << endl;

💡 النتيجة:

السطر الأول
السطر الثاني

🔹 مثال باستخدام \n:

cout << "السطر الأول\n";
cout << "السطر الثاني\n";

💡 النتيجة:

السطر الأول
السطر الثاني

📌 الفرق:

  • endl يقوم بإضافة سطر جديد ولكنه يستهلك موارد أكثر لأنه يجبر النظام على تحديث الشاشة فورًا.
  • \n أسرع وأفضل للأداء، خاصة عند طباعة كميات كبيرة من البيانات.

3. إدخال البيانات باستخدام cin

يستخدم cin (الذي يأتي من console input) لقراءة البيانات من المستخدم.

3.1 إدخال عدد صحيح (int)

🔹 مثال:

#include <iostream>
using namespace std;

int main() {
    int age;
    cout << "أدخل عمرك: ";
    cin >> age;
    cout << "عمرك هو: " << age << " سنة" << endl;
    return 0;
}

💡 النتيجة (بعد إدخال المستخدم لقيمة مثل 25):

أدخل عمرك: 25
عمرك هو: 25 سنة

3.2 إدخال عدة قيم معًا

يمكن إدخال أكثر من قيمة باستخدام cin وفصلها بمسافة.

🔹 مثال:

int x, y;
cout << "أدخل رقمين: ";
cin >> x >> y;
cout << "الرقم الأول: " << x << ", الرقم الثاني: " << y << endl;

💡 النتيجة (إذا أدخل المستخدم 10 20):

أدخل رقمين: 10 20
الرقم الأول: 10, الرقم الثاني: 20

4. إدخال النصوص (string) في C++

4.1 استخدام cin مع النصوص

عند استخدام cin مع النصوص (string)، فإنه يأخذ كلمة واحدة فقط حتى المسافة الأولى.

🔹 مثال:

#include <iostream>
using namespace std;

int main() {
    string name;
    cout << "أدخل اسمك: ";
    cin >> name;
    cout << "مرحبًا، " << name << "!" << endl;
    return 0;
}

💡 النتيجة (إذا أدخل المستخدم محمد أحمد):

أدخل اسمك: محمد أحمد
مرحبًا، محمد!

📌 المشكلة: cin يأخذ فقط أول كلمة قبل المسافة. لحل هذه المشكلة، نستخدم getline().


4.2 إدخال نص كامل باستخدام getline()

إذا أردت إدخال جملة كاملة، استخدم getline(cin, variable).

🔹 مثال:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string fullName;
    cout << "أدخل اسمك الكامل: ";
    getline(cin, fullName);
    cout << "مرحبًا، " << fullName << "!" << endl;
    return 0;
}

💡 النتيجة (إذا أدخل المستخدم محمد أحمد):

أدخل اسمك الكامل: محمد أحمد
مرحبًا، محمد أحمد!

📌 ملاحظة: getline() يأخذ الجملة بالكامل حتى يتم الضغط على Enter.


5. تنسيق المخرجات باستخدام setw و setprecision

5.1 استخدام setw لتحديد عرض النصوص

يمكننا استخدام setw(n) من المكتبة <iomanip> لتحديد عرض النص.

🔹 مثال:

#include <iostream>
#include <iomanip>  // مكتبة تنسيق المخرجات
using namespace std;

int main() {
    cout << setw(10) << "اسم" << setw(10) << "عمر" << endl;
    cout << setw(10) << "أحمد" << setw(10) << 20 << endl;
    cout << setw(10) << "سارة" << setw(10) << 18 << endl;
    return 0;
}

💡 النتيجة:

      اسم       عمر
    أحمد       20
    سارة       18

📌 setw(10) يجعل كل عمود بعرض 10 مسافات، مما يجعل المخرجات منظمة.


5.2 التحكم بعدد الأرقام العشرية باستخدام setprecision

🔹 مثال:

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    double pi = 3.1415926535;
    cout << "القيمة الأصلية: " << pi << endl;
    cout << "القيمة المقربة لـ 2 منازل عشرية: " << fixed << setprecision(2) << pi << endl;
    return 0;
}

💡 النتيجة:

القيمة الأصلية: 3.1415926535
القيمة المقربة لـ 2 منازل عشرية: 3.14

📌 setprecision(n) يحدد عدد الأرقام بعد الفاصلة العشرية.


6. ملخص الدرس

الإخراج (cout): يستخدم لعرض البيانات على الشاشة.
الإدخال (cin): يستخدم لقراءة البيانات من المستخدم.
endl و \n: يستخدمان للانتقال إلى سطر جديد.
getline(): يستخدم لإدخال سطر كامل من النص.
setw(n): يستخدم لتنسيق الأعمدة عند الطباعة.
setprecision(n): يستخدم للتحكم بعدد الأرقام العشرية.


🎯 تمرين تطبيقي:

💡 اكتب برنامجًا يسأل المستخدم عن اسمه، عمره، ودرجته في مادة الرياضيات، ثم يعرضها بتنسيق منظم باستخدام setw و setprecision.

🔹 حاول تنفيذ التمرين بنفسك، وإذا احتجت مساعدة، أنا هنا دائمًا! 🚀


اكتشاف المزيد من كود التطور

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك رد

Scroll to Top