عالم برمجةوتقنية الحاسوب C. P. W
769 subscribers
492 photos
53 videos
260 files
476 links
عالم الحاسوب برمجه وتقنيه وتطوير شرح كل ما يتطلب في مجال علوم الحاسوب والبرمجة
https://t.me/programming_C_w
قنات الجرافيكس @l_d_gh
#Digitalmarketing
#programming
#AI #CPA
#learn
التواصل معي @Eng_sharaf1
Download Telegram
خنجيب سؤال
برنامج يقوم بطباعة مجموع 10 اعداد يقوم بوضعها اليوزر

#include <iostream>
using namespace std;

int main() {
int sum = 0;
int number;

cout << "Enter 10 numbers:" << endl;

for (int i = 0; i < 10; i++) {
cin >> number;
sum += number;
}

cout << "Sum of the 10 numbers: " << sum << endl;
return 0;
}
يا الله نبدأ الفانكشنز اوووووو منا ورايح ما اريدكم تكولون فانكشنز عمي هاي كلمة قديمة انام مثقفين تكولون ميثودز الفانكشين سوالف مرحلة اولى بعد
لا اشاقة اكو فروق بين معنى الفانكشن والميثود بامور معينة راح اشرحها عن قريب بنهاية الشرح اولا لازم نعرف شني الميثود
هي مجموعة من التعليمات التي تُستخدم لِتنفيذ مهمة معينة. تُعتبر الميثود جزءًا أساسيًا من البرنامج لان انتَ وانتِ ماتكدر تشغل برنامج بلا ميثود اصلا هسة تكلي شون؟

اكلك تتذكر c++ جنا نكول الدالة (الفنكشن) الاساسية والدوال الاحتياطية؟
اي بالضبط حتى مثلا نكتب

#include<iostream>
using namespace std;

int main()
{
cout << "Hi!" << endl;
return 0;
}
main هي نفسها الدالة الاساسية اما الان بالجافا فالميثود الاساسي هي نفسها من نجي لهالمثال

public class Main {
public static void main(String[] args) {
System.out.println ("hi");
}
}
فهنا ايضًا الماين هي الميثود الاساسي زين مقتدى شني الفائدة من الميثود "باستثناء الاساسية"
سؤال جميل واجابته
مثل ما تعلمناه سابقا العام بالc++ لمن نريد نجري عمليه رياضية لعدة اعداد لاكثر من مرة ران نتطر نكتب العملية اكثر من مرة ولكن بالفنكشن الوضع مختلف فقط بكل مرة تحتاج العملية فقط تقوم باستدعاء الفنكشن اللي مهمتها هوَّ القيام بالعملية الحسابية اللي جاي تشتغل عليها التوضيح
#include <iostream>
using namespace std;
int fact (int No)
{
int f=1;
for (int i=1;i<=No; i++)
f=f*i;
return f;
}
int main()
{int num;
cout << "enter the number you want to find its Factorial" << endl;
cin >> num;
cout << "Factorial of: "<<num<<" is : "<< endl;
cout<<fact (num);
return 0;
}
هنا بc++استخدمنا دالة الfactorial علمود نجري عملية معينة واصلا هاي الدابة مو خلاص استدعيتها لعنصر واحد وفقط لا اكدر اعرف عناصر واسويلها قراءة عليه
int d =?;
cout<< fact (d);
بحيث تكدر تسوي مالا نهائي من العمليات على نفس الدالة بدون ماتكرر عملياتها اما بالجافا
import java.util.Scanner;

public class Muqtada {

public static int fact(int n) {
int r = 1;
for (int i = 1; i <= n; i++) {
r *= i;
}
return r;
}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter the number you want to find its factorial: ");
int num = sc.nextInt();
int result = fact(num);
System.out.println("Factorial of " + num + " is: " + result);
sc.close();
}
}
نفس الشغل تقريبا بنسبة 80% اللهم اكو فرق بعدة امور بسيطة
إليك برنامج بلغة C++ يغطي المتطلبات التي طلبتها. سأقوم أولاً بتعريف هيكل بيانات لتخزين معلومات الطلاب، ثم سأكتب الدوال المطلوبة لتنفيذ كل وظيفة.

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

struct Student {
string name;
float grade;
};

// دالة لطباعة كل الطلاب ودرجاتهم
void printAllStudents(const vector<Student>& students) {
cout << "قائمة الطلاب ودرجاتهم:\n";
for (const auto& student : students) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}

// دالة لطباعة الطلاب الناجحين فقط
void printPassingStudents(const vector<Student>& students, float passingGrade) {
cout << "\nالطلاب الناجحين:\n";
for (const auto& student : students) {
if (student.grade >= passingGrade) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
}

// دالة لطباعة الطلاب الراسبين
void printFailingStudents(const vector<Student>& students, float passingGrade) {
cout << "\nالطلاب الراسبين:\n";
for (const auto& student : students) {
if (student.grade < passingGrade) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
}

// دالة لطباعة الطالب الحاصل على أعلى درجة
void printTopStudent(const vector<Student>& students) {
if (students.empty()) return;
Student topStudent = students[0];

for (const auto& student : students) {
if (student.grade > topStudent.grade) {
topStudent = student;
}
}

cout << "\nالطالب الحاصل على أعلى درجة:\n";
cout << "الاسم: " << topStudent.name << " - الدرجة: " << topStudent.grade << endl;
}

// دالة لطباعة الطلاب الراسبين في القرآن (يمكن اعتبار أنهم راسبون إذا كانت درجتهم أقل من 60 مثلاً)
void printFailingInQuran(const vector<Student>& students) {
const float quranPassingGrade = 60.0; // فرضي
cout << "\nالطلاب الراسبين في القرآن:\n";
for (const auto& student : students) {
if (student.grade < quranPassingGrade) {
cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << endl;
}
}
}

// دالة لطباعة تقدير الطلاب بناءً على درجاتهم
void printGrades(const vector<Student>& students) {
cout << "\nتقدير الطلاب:\n";
for (const auto& student : students) {
string grade;
if (student.grade >= 90) grade = "ممتاز";
else if (student.grade >= 80) grade = "جيد جداً";
else if (student.grade >= 70) grade = "جيد";
else if (student.grade >= 60) grade = "مقبول";
else grade = "راسب";

cout << "الاسم: " << student.name << " - الدرجة: " << student.grade << " - التقدير: " << grade << endl;
}
}

int main() {
vector<Student> students = {
{"أحمد", 95},
{"مريم", 82},
{"علي", 58},
{"سارة", 76},
{"يوسف", 40},
{"فاطمة", 61}
};

printAllStudents(students);
printPassingStudents(students, 60.0);
printFailingStudents(students, 60.0);
printTopStudent(students);
printFailingInQuran(students);
printGrades(students);

return 0;
}


### ملاحظات حول البرنامج:
1. هيكل بيانات Student: يحتوي على الاسم والدرجة.
2. الدوال: تم تعريف دوال لكل من الوظائف المطلوبة مثل طباعة جميع الطلاب، الناجحين، الراسبين، الطالب الحاصل على أعلى درجة، والراسبين في القرآن.
3. تقدير الطلاب: يتم وضع شروط لتحديد تقدير كل طالب حسب درجته.
4. النقطة القابلة للتغيير: يمكنك تغيير درجة النجاح في وظيفة printFailingInQuran وفقًا للمعايير التي ترغب بها.


@yahfsh
2
إليك مثال على برنامج متكامل بلغة C++ يستخدم عدة هياكل بيانات (مركبات بنية) لتنظيم المعلومات حول الطلاب والفصول الدراسية. سنستخدم الهياكل والمصفوفات والقوائم لتكوين هذا البرنامج.

### 1. مخطط البرنامج
#### 1.1. الهياكل المستخدمة
- هيكل Student: يمثل بيانات الطالب.
- هيكل Course: يمثل بيانات الدورة الدراسية.
- هيكل School: ينظم الطلاب والدورات.

### 2. الكود
#include <iostream>
#include <vector>
#include <string>

using namespace std;

// تعريف هيكل الطالب
struct Student {
int id;
string name;
float gpa; // المعدل التراكمي للطالب
};

// تعريف هيكل الدورة
struct Course {
int code;
string title;
vector<Student> enrolledStudents; // الطلاب المسجلون في الدورة
};

// تعريف هيكل المدرسة
struct School {
vector<Course> courses;

void addCourse() {
Course newCourse;
cout << "أدخل رمز الدورة: ";
cin >> newCourse.code;
cout << "أدخل عنوان الدورة: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, newCourse.title);
courses.push_back(newCourse);
cout << "تم إضافة الدورة بنجاح!\n";
}

void enrollStudent() {
int courseIndex;
Student newStudent;
cout << "أدخل رقم الدورة للتسجيل: ";
cin >> courseIndex;

if (courseIndex < 0 || courseIndex >= courses.size()) {
cout << "رقم الدورة غير صحيح.\n";
return;
}

cout << "أدخل رقم معرف الطالب: ";
cin >> newStudent.id;
cout << "أدخل اسم الطالب: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, newStudent.name);
cout << "أدخل المعدل التراكمي: ";
cin >> newStudent.gpa;

courses[courseIndex].enrolledStudents.push_back(newStudent);
cout << "تم تسجيل الطالب في الدورة بنجاح!\n";
}

void displayCourses() {
cout << "\nقائمة الدورات:\n";
for (const auto& course : courses) {
cout << "رمز الدورة: " << course.code << ", العنوان: " << course.title << endl;

cout << "الطلاب المسجلون:\n";
for (const auto& student : course.enrolledStudents) {
cout << " معرف: " << student.id << ", الاسم: " << student.name << ", المعدل: " << student.gpa << endl;
}
}
}
};

int main() {
School school;
int choice;

do {
cout << "\n1. إضافة دورة\n2. تسجيل طالب في دورة\n3. عرض الدورات\n4. الخروج\n";
cout << "اختر خيارًا: ";
cin >> choice;

switch (choice) {
case 1:
school.addCourse();
break;
case 2:
school.enrollStudent();
break;
case 3:
school.displayCourses();
break;
case 4:
cout << "الخروج...\n";
break;
default:
cout << "خيار غير صالح. حاول مرة أخرى.\n";
}
} while (choice != 4);

return 0;
}


### 3. شرح الكود
- هيكل Student: يحتوي على معرف الطالب، الاسم، والمعدل التراكمي.
- هيكل Course: يحتوي على رمز الدورة، عنوانها، وقائمة الطلاب المسجلين فيها.
- هيكل School: يحتوي على قائمة الدورات، مع وظائف لإضافة الدورات، تسجيل الطلاب، وعرض المعلومات.

### 4. تجميع البرنامج
يمكنك تجميع البرنامج باستخدام أي مترجم C++ مثل GCC. احفظ الكود في ملف باسم school_management.cpp، ثم استخدم الأوامر التالية من سطر الأوامر:

g++ school_management.cpp -o school_management
./school_management


### 5. الخاتمة
هذا البرنامج يوضح كيفية استخدام المركبات البنائية (الهياكل) في C++ لتنظيم وإدارة بيانات متعددة. يمكنك توسيع البرنامج بإضافة ميزات إضافية مثل حذف الطلاب من الدورات أو تعديل بياناتهم.

إذا كان لديك أي استفسارات أو تحتاج إلى مزيد من المساعدة، فلا تتردد في طرحها!
يمكنك إنشاء برنامج بلغة C++ لإدارة بيانات الطلاب ودرجاتهم، يتضمن ما يلي: طباعة قائمة الطلاب مع درجاتهم، طباعة درجات مادة معينة، تصنيف الطلاب حسب أدائهم (راسب، نجاح، نجاح ممتاز) وحساب المجموع للدرجات. إليك كودًا يحقق ذلك:

### البرنامج
#include <iostream>
#include <vector>
#include <string>

using namespace std;

// تعريف هيكل الطالب
struct Student {
int id;
string name;
float grades[5]; // افتراض وجود خمس مواد
};

// دالة لطباعة جميع الطلاب ودرجاتهم
void printAllStudents(const vector<Student>& students) {
cout << "\nقائمة الطلاب ودرجاتهم:\n";
for (const auto& student : students) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name;
cout << ", الدرجات: ";
for (const auto& grade : student.grades) {
cout << grade << " ";
}
cout << endl;
}
}

// دالة لطباعة درجات مادة معينة (مادة القرآن)
void printQuranGrades(const vector<Student>& students) {
cout << "\nدرجات مادة القرآن:\n";
for (const auto& student : students) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name;
cout << ", درجة القرآن: " << student.grades[0] << endl; // افتراض أن درجة القرآن هي الأولى
}
}

// دالة لتصنيف الطلاب حسب أدائهم
void classifyStudents(const vector<Student>& students) {
cout << "\nتصنيف الطلاب:\n";
for (const auto& student : students) {
float average = 0;
for (const auto& grade : student.grades) {
average += grade;
}
average /= 5; // افتراض أن هناك خمس مواد

if (average < 60) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name << " - راسب\n";
} else if (average >= 60 && average < 75) {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name << " - نجاح\n";
} else {
cout << "معرف الطالب: " << student.id << ", الاسم: " << student.name << " - نجاح ممتاز\n";
}
}
}

// دالة لحساب مجموع درجات مادة القرآن
float calculateTotalQuranGrades(const vector<Student>& students) {
float total = 0;
for (const auto& student : students) {
total += student.grades[0]; // افتراض أن درجة القرآن هي الأولى
}
return total;
}

// البرنامج الرئيسي
int main() {
vector<Student> students;
int numberOfStudents;

cout << "أدخل عدد الطلاب: ";
cin >> numberOfStudents;

for (int i = 0; i < numberOfStudents; ++i) {
Student student;
cout << "أدخل معرف الطالب: ";
cin >> student.id;
cout << "أدخل اسم الطالب: ";
cin.ignore(); // تجاهل أي أحرف متبقية في الدفق
getline(cin, student.name);

cout << "أدخل درجات الطالب (5 درجات): ";
for (int j = 0; j < 5; ++j) {
cin >> student.grades[j];
}

students.push_back(student);
}

printAllStudents(students);
printQuranGrades(students);
classifyStudents(students);

float totalQuranGrades = calculateTotalQuranGrades(students);
cout << "مجموع درجات مادة القرآن: " << totalQuranGrades << endl;

return 0;
}

### شرح البرنامج
1. **الهيكل Student**: يحتوي على معرف الطالب، الاسم، ومصفوفة تحتوي على درجات الطالب في 5 مواد.
2. **الدالة printAllStudents**: تقوم بطباعة قائمة بجميع الطلاب ودرجاتهم.
3. **الدالة printQuranGrades**: تقوم بطباعة درجات مادة القرآن (افتراض أن هذه المادة هي الأولى).
4. **الدالة classifyStudents**: تقوم بتصنيف الطلاب إلى راسب، نجاح، ونجاح ممتاز بناءً على المتوسط.
5. **الدالة calculateTotalQuranGrades**: تقوم بحساب مجموع درجات مادة القرالبرنامج الرئيسي**البرنامج الرئيسي**: يستقبل عدد الطلاب وبياناتهم، ثم ينفذ الدوال المذكورة لطباعة المعلومات المطلوبة.

### كيفية التجميع والتنفيذ
يمكنك حفظ الكود في ملف باسم student_management.cpp، ثم استخدم الأوامر التالية من سطر الأوامر:

`bash
g++
السؤال الاول
١. اكتب برنامج عشان يحسب مجموع كل عمود في مصفوفة:
#include <iostream>
using namespace std;

int main() {
int rows = 3, cols = 3;
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int col = 0; col < cols; ++col) {
int sum = 0;
for (int row = 0; row < rows; ++row) {
sum += arr[row][col];
}
cout << "Sum of column " << col + 1 << " is: " << sum << endl;
}
return 0;
}
٢.اكتب برنامج للحصول على المصفوفة المتناظرة

#include <iostream>
using namespace std;

int main() {
int rows = 3, cols = 3;
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int transpose[3][3];
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
transpose[j][i] = matrix[i][j];
}
}
cout << "Transpose matrix:\n";
for (int i = 0; i < cols; ++i) {
for (int j = 0; j < rows; ++j) {
cout << transpose[i][j] << " ";
}
cout << endl;
}
return 0;
}
٣. برنامج لإيجاد أكبر رقم في القطر الرئيسي لمصفوفة 3×3
#include <iostream>
using namespace std;

int main() {
int matrix[3][3] = {{1, 5, 3}, {4, 10, 6}, {7, 8, 2}};
int maxDiagonal = matrix[0][0];
for (int i = 1; i < 3; ++i) {
if (matrix[i][i] > maxDiagonal) {
maxDiagonal = matrix[i][i];
}
}
cout << "Greatest number in the main diagonal is: " << maxDiagonal << endl;
return 0;
}
٤. اكتب برنامج عمله بيرتب مصفوفة 2×3 بترتيب تصاعدي
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
int arr[2][3] = {{5, 2, 9}, {1, 6, 3}};
int temp[6], index = 0;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 3; ++j)
temp[index++] = arr[i][j];

sort(temp, temp + 6);
index = 0;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 3; ++j)
arr[i][j] = temp[index++];

cout << "Sorted matrix:\n";
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}

٥.اكتب برنامج لحساب مجموع الأعداد الفردية في مصفوفة 2×3
#include <iostream>
using namespace std;

int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int sumOdd = 0;
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 3; ++j)
if (arr[i][j] % 2 != 0)
sumOdd += arr[i][j];

cout << "Sum of odd numbers: " << sumOdd << endl;
return 0;
}
٧.اكتب برنامج للبحث عن حرف معين في مصفوفة 2×3
#include <iostream>
using namespace std;

int main() {
char arr[2][3] = {{'a', 'b', 'c'}, {'d', 'e', 'f'}};
char target;
cout << "Enter a character to search for: ";
cin >> target;
bool found = false;

for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
if (arr[i][j] == target) {
cout << "Character found at position: [" << i << "][" << j << "]\n";
found = true;
}
}
}
if (!found) cout << "Character not found.\n";
return 0;
}

٧. اكتب برنامج لقراءة مصفوفة حروف وإيجاد B و C

#include <iostream>
using namespace std;

int main() {
int n;
cout << "Enter the size of the matrix: ";
cin >> n;
char A[n][n], B[n*n], C[n*n];
int bIndex = 0, cIndex = 0;

cout << "Enter characters for matrix A:\n";
for (int i = 0; i < n; ++i)
for (int j = 0; j < n; ++j)
cin >> A[i][j];

for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (isupper(A[i][j])) B[bIndex++] = A[i][j];
else if (islower(A[i][j])) C[cIndex++] = A[i][j];
}
}

cout << "B (Capital letters): ";
for (int i = 0; i < bIndex; ++i) cout << B[i] << " ";
cout << "\nC (Small letters): ";
for (int i = 0; i < cIndex; ++i) cout << C[i] << " ";
cout << endl;
return 0;
}
طيب ، شوفي ، اول برنامج معانا هو
١. برنامج لعد الأعداد الزوجية والفردية في مصفوفة

#include <iostream>
using namespace std;

int main() {
    int arr[] = {2, 5, 7, 10, 8};
    int evenCount = 0, oddCount = 0;
    for (int i = 0; i < 5; i++) {
        if (arr[i] % 2 == 0)
            evenCount++;
        else
            oddCount++;
    }
    cout << "عدد الأعداد الزوجية: " << evenCount << endl;
    cout << "عدد الأعداد الفردية: " << oddCount << endl;
    return 0;
}
احنا هنا بنعد كل الأعداد اللي في المصفوفة، لو العدد بيتقسم على 2 بدون باقي (يعني زوجي) بنزود الـ evenCount، ولو العكس بنزود الـ oddCount.
..........................................................
٢. برنامج لإيجاد أكبر عنصر في المصفوفة

#include <iostream>
using namespace std;

int main() {
    int arr[] = {3, 9, 1, 15, 7};
    int maxElement = arr[0];
    for (int i = 1; i < 5; i++) {
        if (arr[i] > maxElement)
            maxElement = arr[i];
    }
    cout << "أكبر عنصر في المصفوفة هو: " << maxElement << endl;
    return 0;
}
اخدنا أول عنصر على إنه أكبر عنصر، وبعدها بنقارن كل الأرقام اللي في المصفوفة لو لقينا رقم أكبر بنخليه هو الجديد
...........................................................
٣. برنامج لعكس عناصر المصفوفة

#include <iostream>
using namespace std;

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = 5;
    cout << "المصفوفة قبل العكس: ";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
   
    cout << "\nالمصفوفة بعد العكس: ";
    for (int i = n - 1; i >= 0; i--)
        cout << arr[i] << " ";
    cout << endl;
    return 0;
}
هنا طبعنا العناصر من آخر المصفوفة لأولها علشان نعمل عكس للترتيب.
...........................................................
٤ برنامج لعد الأعداد الزوجية والفردية في مصفوفة (مكرر)

الكود والشرح نفس البرنامج الأول
٥. برنامج للبحث عن عنصر في المصفوفة وطباعه مكانه
#include <iostream>
using namespace std;

int main() {
    int arr[] = {4, 7, 2, 9, 5};
    int target;
    cout << "ادخل العنصر اللي عايز تدور عليه: ";
    cin >> target;
    bool found = false;

    for (int i = 0; i < 5; i++) {
        if (arr[i] == target) {
            cout << "العنصر موجود في المكان رقم: " << i << endl;
            found = true;
            break;
        }
    }
    if (!found)
        cout << "العنصر مش موجود." << endl;
    return 0;
}

هنا احنا بنبحث في المصفوفة عن رقم معين، لو لقيناه بنطبع مكانه، ولو مش موجود بنقول للمستخدم
.........................................................
٦. برنامج لتقسيم مصفوفة 1D لحروف كبيرة وصغيرة
#include <iostream>
#include <cctype>
using namespace std;

int main() {
    char arr[] = {'A', 'b', 'C', 'd', 'E'};
    char upper[5], lower[5];
    int uIndex = 0, lIndex = 0;

    for (int i = 0; i < 5; i++) {
        if (isupper(arr[i]))
            upper[uIndex++] = arr[i];
        else if (islower(arr[i]))
            lower[lIndex++] = arr[i];
    }

    cout << "الحروف الكبيرة: ";
    for (int i = 0; i < uIndex; i++)
        cout << upper[i] << " ";
   
    cout << "\nالحروف الصغيرة: ";
    for (int i = 0; i < lIndex; i++)
        cout << lower[i] << " ";
    cout << endl;
    return 0;
}

في الكود دا احنا بنقرا كل حرف في المصفوفة، لو كبير بنضيفه في مصفوفة الحروف الكبيرة، ولو صغير بنضيفه في مصفوفة الحروف الصغيرة
14🔥2💯2
بعض لغات برمجة وأهداف كل منها ومع مثال بسيط

1. C:
- الهدف: لغة منخفضة المستوى تُستخدم لتطوير برمجيات ذات أداء عالي.
- مثال كود:

#include <stdio.h>

int main() {
printf("Hello, World!\n");
return 0;
}

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة. #include <stdio.h> يُدرج مكتبة الإدخال والإخراج القياسية، وprintf يستخدم لطباعة النص.

2. C++:
- الهدف: لغة برمجة كائنية التوجه تُستخدم لتطوير برامج ذات أداء عالي.
- مثال كود:

#include <iostream>

int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة باستخدام std::cout من مكتبة الإدخال والإخراج القياسية.

3. Java:
- الهدف: لغة متعددة الاستخدامات تُستخدم في تطبيقات الويب والمحمولة.
- مثال كود:

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة. System.out.println يُستخدم لطباعة النص.

4. Python:
- الهدف: لغة متعددة الأغراض تُستخدم في تطبيقات متنوعة مثل تطوير الويب وتحليل البيانات.
- مثال كود:

print("Hello, World!")

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة باستخدام دالة print.

5. JavaScript:
- الهدف: لغة تُستخدم في تطوير الويب وتفاعل المستخدم.
- مثال كود:

console.log("Hello, World!");

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" في وحدة التحكم الخاصة بالمتصفح.

6. Ruby:
- الهدف: لغة برمجة تُستخدم بشكل رئيسي في تطوير الويب.
- مثال كود:

puts "Hello, World!"

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة باستخدام دالة puts.

7. Swift:
- الهدف: لغة تُستخدم لتطوير تطبيقات iOS وmacOS.
- مثال كود:

import Swift

print("Hello, World!")

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة باستخدام دالة print.

8. PHP:
- الهدف: لغة تُستخدم في تطوير البرمجيات الجانبية للخادم على الويب.
- مثال كود:

<?php
echo "Hello, World!";
?>

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على صفحة الويب باستخدام دالة echo.

9. SQL:
- الهدف: لغة لإدارة قواعد البيانات العلائقية.
- مثال كود:

SELECT 'Hello, World!' AS Greeting;

- الشرح: يقوم هذا الاستعلام بإرجاع النص "Hello, World!" كعمود يسمى Greeting من قاعدة البيانات.

كل كود بسيط يعرض كيفية استخدام اللغة الأساسية لطباعة نص على الشاشة، وهو مثال جيد على كيفية بدء العمل مع كل لغة.https://t.me/explaincomputersoftware
بعض اكواد بالنتيجة واحدة ( نفسها)
-Python
rows = 10
for i in range(1, rows +1):
print('* ' * i)


-C++

#include <iostream>

int main() {
int rows = 10;
for (int i = 1; i <= rows; i++) {
for (int j = 0; j < i; j++) {
std::cout << "* ";
}
std::cout << std::endl;
}
return 0;
}


-C#
using System;

class Program
{
static void Main()
{
int rows = 10;
for (int i = 1; i <= rows; i++)
{
for (int j = 0; j < i; j++)
{
Console.Write("* ");
}
Console.WriteLine();
}
}
}


- C

#include <stdio.h>

int main() {
int rows = 10;
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= i; j++) {
printf("* ");
}
printf("\n");
}
return 0;
}



-Dart

void main() {
int rows = 10;
for (int i = 1; i <= rows; i++) {
print('* ' * i);
}
}
بعض لغات برمجة وأهداف كل منها ومع مثال بسيط

1. C:
- الهدف: لغة منخفضة المستوى تُستخدم لتطوير برمجيات ذات أداء عالي.
- مثال كود:

#include <stdio.h>

int main() {
printf("Hello, World!\n");
return 0;
}

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة. #include <stdio.h> يُدرج مكتبة الإدخال والإخراج القياسية، وprintf يستخدم لطباعة النص.

2. C++:
- الهدف: لغة برمجة كائنية التوجه تُستخدم لتطوير برامج ذات أداء عالي.
- مثال كود:

#include <iostream>

int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة باستخدام std::cout من مكتبة الإدخال والإخراج القياسية.

3. Java:
- الهدف: لغة متعددة الاستخدامات تُستخدم في تطبيقات الويب والمحمولة.
- مثال كود:

public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة. System.out.println يُستخدم لطباعة النص.

4. Python:
- الهدف: لغة متعددة الأغراض تُستخدم في تطبيقات متنوعة مثل تطوير الويب وتحليل البيانات.
- مثال كود:

print("Hello, World!")

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة باستخدام دالة print.

5. JavaScript:
- الهدف: لغة تُستخدم في تطوير الويب وتفاعل المستخدم.
- مثال كود:

console.log("Hello, World!");

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" في وحدة التحكم الخاصة بالمتصفح.

6. Ruby:
- الهدف: لغة برمجة تُستخدم بشكل رئيسي في تطوير الويب.
- مثال كود:

puts "Hello, World!"

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة باستخدام دالة puts.

7. Swift:
- الهدف: لغة تُستخدم لتطوير تطبيقات iOS وmacOS.
- مثال كود:

import Swift

print("Hello, World!")

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على الشاشة باستخدام دالة print.

8. PHP:
- الهدف: لغة تُستخدم في تطوير البرمجيات الجانبية للخادم على الويب.
- مثال كود:

<?php
echo "Hello, World!";
?>

- الشرح: يقوم هذا البرنامج بطباعة "Hello, World!" على صفحة الويب باستخدام دالة echo.

9. SQL:
- الهدف: لغة لإدارة قواعد البيانات العلائقية.
- مثال كود:

SELECT 'Hello, World!' AS Greeting;

- الشرح: يقوم هذا الاستعلام بإرجاع النص "Hello, World!" كعمود يسمى Greeting من قاعدة البيانات.

كل كود بسيط يعرض كيفية استخدام اللغة الأساسية لطباعة نص على الشاشة، وهو مثال جيد على كيفية بدء العمل مع كل لغة.
🔥1
إليك مجموعة متنوعة من البرامج المفيدة والمبتكرة التي يمكن استخدامها للتعلم والممارسة. سأبدأ بالبرامج التي طلبتها، ثم أضيف المزيد لتحقيق التنوع:


---

1. برنامج لحساب وطباعه المضروب باستخدام for loop

#include <iostream>
using namespace std;

int main() {
int n, factorial = 1;
cout << "أدخل عددًا لحساب المضروب: ";
cin >> n;

for (int i = 1; i <= n; i++) {
factorial *= i;
}

cout << "مضروب " << n << " هو: " << factorial << endl;
return 0;
}


---

2. برنامج لطباعه عناصر القطر الرئيس على شكل نجوم باستخدام while loop

#include <iostream>
using namespace std;

int main() {
int n;
cout << "أدخل حجم المصفوفة: ";
cin >> n;

int i = 0;
while (i < n) {
for (int j = 0; j < n; j++) {
if (i == j)
cout << "* ";
else
cout << " ";
}
cout << endl;
i++;
}
return 0;
}


---

3. برنامج لطباعه عناصر القطر الثانوي على شكل نجوم باستخدام while loop

#include <iostream>
using namespace std;

int main() {
int n;
cout << "أدخل حجم المصفوفة: ";
cin >> n;

int i = 0;
while (i < n) {
for (int j = 0; j < n; j++) {
if (i + j == n - 1)
cout << "* ";
else
cout << " ";
}
cout << endl;
i++;
}
return 0;
}


---

4. برنامج لطباعه مثلث معكوس على شكل نجوم باستخدام do while loop

#include <iostream>
using namespace std;

int main() {
int n;
cout << "أدخل عدد الأسطر: ";
cin >> n;

int i = n;
do {
int j = 1;
do {
cout << "* ";
j++;
} while (j <= i);
cout << endl;
i--;
} while (i > 0);

return 0;
}


---

5. برنامج لتحويل درجات الحرارة من فهرنهايت إلى مئوية

#include <iostream>
using namespace std;

int main() {
float fahrenheit, celsius;
cout << "أدخل درجة الحرارة بالفهرنهايت: ";
cin >> fahrenheit;

celsius = (fahrenheit - 32) * 5 / 9;
cout << "درجة الحرارة بالمئوية: " << celsius << endl;

return 0;
}


---

6. برنامج لحساب متوسط مجموعة أرقام باستخدام array

#include <iostream>
using namespace std;

int main() {
int n;
cout << "أدخل عدد الأرقام: ";
cin >> n;

int arr[n];
int sum = 0;

for (int i = 0; i < n; i++) {
cout << "أدخل الرقم " << i + 1 << ": ";
cin >> arr[i];
sum += arr[i];
}

float average = (float)sum / n;
cout << "المتوسط هو: " << average << endl;

return 0;
}


---

7. برنامج لطباعة الأعداد الأولية من 1 إلى N

#include <iostream>
using namespace std;

int main() {
int n;
cout << "أدخل العدد النهائي: ";
cin >> n;

for (int i = 2; i <= n; i++) {
bool isPrime = true;
for (int j = 2; j <= i / 2; j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime)
cout << i << " ";
}

return 0;
}


---

8. برنامج لطباعة معكوس عدد

#include <iostream>
using namespace std;

int main() {
int num, reversed = 0;
cout << "أدخل عددًا: ";
cin >> num;

while (num != 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}

cout << "العدد المعكوس هو: " << reversed << endl;

return 0;
}


---

9. برنامج لحساب مجموع أرقام عدد

#include <iostream>
using namespace std;

int main() {
int num, sum = 0;
cout << "أدخل عددًا: ";
cin >> num;

while (num != 0) {
sum += num % 10;
num /= 10;
}

cout << "مجموع الأرقام هو: " << sum << endl;

return 0;
}


---

10. برنامج لحساب الأعداد الفردية والزوجية في مصفوفة

#include <iostream>
using namespace std;

int main() {
int n;
cout << "أدخل حجم المصفوفة: ";
cin >> n;

int arr[n], oddCount = 0, evenCount = 0;

for (int i = 0; i < n; i++) {
cout << "أدخل العنصر " << i + 1 << ": ";
cin >> arr[i];
if (arr[i] % 2 == 0)
evenCount++;
else
oddCount++;
}
إليك مجموعة إضافية من البرامج لتوسيع معرفتك:


---

11. برنامج لرسم هرم من النجوم

#include <iostream>
using namespace std;

int main() {
int n;
cout << "أدخل عدد الأسطر: ";
cin >> n;

for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++)
cout << " ";
for (int k = 1; k <= (2 * i - 1); k++)
cout << "*";
cout << endl;
}

return 0;
}


---

12. برنامج لتحويل الأعداد العشرية إلى ثنائية

#include <iostream>
using namespace std;

int main() {
int decimal, binary = 0, base = 1;
cout << "أدخل عددًا عشريًا: ";
cin >> decimal;

while (decimal > 0) {
int remainder = decimal % 2;
binary += remainder * base;
decimal /= 2;
base *= 10;
}

cout << "العدد الثنائي: " << binary << endl;
return 0;
}


---

13. برنامج لإيجاد أكبر وأصغر رقم في مصفوفة

#include <iostream>
using namespace std;

int main() {
int n;
cout << "أدخل عدد العناصر: ";
cin >> n;

int arr[n];
for (int i = 0; i < n; i++) {
cout << "أدخل العنصر " << i + 1 << ": ";
cin >> arr[i];
}

int max = arr[0], min = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max)
max = arr[i];
if (arr[i] < min)
min = arr[i];
}

cout << "أكبر عدد: " << max << endl;
cout << "أصغر عدد: " << min << endl;

return 0;
}


---

14. برنامج لحساب المصفوفة المربعة (مجموع القطرين الرئيس والثانوي)

#include <iostream>
using namespace std;

int main() {
int n;
cout << "أدخل حجم المصفوفة المربعة: ";
cin >> n;

int matrix[n][n], primarySum = 0, secondarySum = 0;
cout << "أدخل عناصر المصفوفة:\n";
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
if (i == j)
primarySum += matrix[i][j];
if (i + j == n - 1)
secondarySum += matrix[i][j];
}
}

cout << "مجموع القطر الرئيسي: " << primarySum << endl;
cout << "مجموع القطر الثانوي: " << secondarySum << endl;

return 0;
}


---

15. برنامج لعد الأحرف والكلمات في جملة

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

int main() {
string sentence;
cout << "أدخل جملة: ";
getline(cin, sentence);

int charCount = 0, wordCount = 1;
for (char c : sentence) {
if (c != ' ')
charCount++;
else
wordCount++;
}

cout << "عدد الأحرف: " << charCount << endl;
cout << "عدد الكلمات: " << wordCount << endl;

return 0;
}


---

16. برنامج لحساب قوى العدد (Power) باستخدام دالة

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

int power(int base, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= base;
}
return result;
}

int main() {
int base, exponent;
cout << "أدخل الأساس: ";
cin >> base;
cout << "أدخل الأس: ";
cin >> exponent;

cout << "النتيجة: " << power(base, exponent) << endl;
return 0;
}


---

17. برنامج للتحقق من كون العدد palindrome

#include <iostream>
using namespace std;

int main() {
int num, reversed = 0, original;
cout << "أدخل عددًا: ";
cin >> num;

original = num;
while (num != 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}

if (original == reversed)
cout << "العدد palindrome" << endl;
else
cout << "العدد ليس palindrome" << endl;

return 0;
}


---

18. برنامج لحساب مجموع الأرقام الزوجية والفردية بين 1 و N

#include <iostream>
using namespace std;

int main() {
int n, evenSum = 0, oddSum = 0;
cout << "أدخل العدد النهائي: ";
cin >> n;

for (int i = 1; i <= n; i++) {
if (i % 2 == 0)
evenSum += i;
else
oddSum += i;
}

cout << "مجموع الأرقام الزوجية: " << evenSum << endl;
cout << "مجموع الأرقام الفردية: " << oddSum << endl;

return 0;
}


---

19. برنامج لطباعة جدول الضرب حتى 12

#include <iostream>
using namespace std;
👍1
هاذا الكود تابع للي فوق 👆👆👆👆 للبرنامج رقم 19
هاذا تابع له
int main() {
for (int i = 1; i <= 12; i++) {
for (int j = 1; j <= 12; j++) {
cout << i << " * " << j << " = " << i * j << "\t";
}
cout << endl;
}

return 0;
}


---

20. برنامج لتشفير النص باستخدام Caesar Cipher

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

int main() {
string text;
int shift;
cout << "أدخل النص المراد تشفيره: ";
getline(cin, text);
cout << "أدخل مقدار الإزاحة: ";
cin >> shift;

for (char &c : text) {
if (isalpha(c)) {
char base = islower(c) ? 'a' : 'A';
c = (c - base + shift) % 26 + base;
}
}

cout << "النص المشفر: " << text << endl;
return 0;
}


---

21. برنامج لحساب الأعداد الزوجية داخل مصفوفة ثنائية الأبعاد

#include <iostream>
using namespace std;

int main() {
int rows, cols, evenCount = 0;
cout << "أدخل عدد الصفوف والأعمدة: ";
cin >> rows >> cols;

int matrix[rows][cols];
cout << "أدخل عناصر المصفوفة:\n";
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cin >> matrix[i][j];
if (matrix[i][j] % 2 == 0)
evenCount++;
}
}

cout << "عدد الأعداد الزوجية: " << evenCount << endl;
return 0;
}


---

إذا أردت برامج إضافية في مجال معين (مثل الخوارزميات أو هياكل البيانات)، أخبرني!
بالتأكيد! إليك شرحًا حول أساسيات البرمجة بلغة C++، واحدة من لغات البرمجة الأكثر شيوعًا واستخدامًا في تطوير البرمجيات:

### 1. التركيب الأساسي للبرنامج في C++

كل برنامج C++ يتكون من دالة main()، والتي تعد نقطة البداية لتشغيل البرنامج. إليك مثال على برنامج بسيط:

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

int main() {
cout << "Hello, World!" << endl; // طباعة نص
return 0; // إنهاء البرنامج
}


### 2. المتغيرات وأنواع البيانات

تستخدم المتغيرات لتخزين البيانات. في C++، يمكن أن تكون لديك أنواع مختلفة من البيانات:

- int: للأعداد الصحيحة.
- float: للأعداد العشرية.
- double: للأعداد العشرية ذات الدقة العالية.
- char: لتخزين حرف واحد.
- string: لتخزين سلسلة من الأحرف.
- bool: لتخزين القيم المنطقية (true أو false).

مثال:

int age = 25; // متغير عددي
float height = 5.9; // متغير عشري
char initial = 'A'; // حرف
string name = "Ali"; // سلسلة نصية
bool isStudent = true; // قيمة منطقية


### 3. الجمل الشرطية

تستخدم الجمل الشرطية للتحكم في تدفق البرنامج بناءً على شروط معينة:

int x = 20;
if (x > 10) {
cout << "x أكبر من 10" << endl;
} else {
cout << "x 10 أو أقل" << endl;
}


### 4. الحلقات

تستخدم الحلقات لتكرار تنفيذ مجموعة من التعليمات. في C++، هناك نوعان شائعان:

- حلقة for:

for (int i = 0; i < 5; i++) {
cout << i << endl; // تطبع الأرقام من 0 إلى 4
}


- حلقة while:

int i = 0;
while (i < 5) {
cout << i << endl;
i++;
}


### 5. الدوال (Functions)

الدوال تُستخدم لتنفيذ كود معين ويمكن استدعاؤها من أماكن متكررة في البرنامج، مما يسهل إعادة الاستخدام ويحسن تنظيم الكود:

void greet(string name) {
cout << "Hello, " << name << "!" << endl;
}

int main() {
greet("Ali"); // استدعاء الدالة
return 0;
}


### 6. المصفوفات (Arrays)

المصفوفات تخزن مجموعة من العناصر من نفس النوع تحت اسم واحد، وتُمكنك من الوصول إلى العناصر باستخدام مؤشرات:

int numbers[5] = {1, 2, 3, 4, 5}; // مصفوفة تضم خمسة أعداد
cout << numbers[0]; // تطبع العنصر الأول (1)


### 7. الفئات (Classes)

C++ تدعم البرمجة الكائنية (Object-Oriented Programming) والتي تستخدم الفئات لإنشاء كائنات:

class Dog {
public:
void bark() {
cout << "Woof!" << endl; // دالة تصدر صوت الكلب
}
};

int main() {
Dog myDog; // إنشاء كائن من الفئة Dog
myDog.bark(); // استدعاء الدالة bark
return 0;
}


### 8. التعامل مع الأخطاء (Error Handling)

C++ يدعم معالجة الأخطاء باستخدام كتلة try-catch، مما يسمح لك بالتعامل مع الشوائب:

try {
int x = 10;
if (x == 10) throw runtime_error("خطأ: x لا يمكن أن يكون 10");
} catch (runtime_error &e) {
cout << e.what() << endl; // طباعة رسالة الخطأ
}


### 9. المكتبات (Libraries)

C++ يمكن أن تستخدم مكتبات خارجية مثل الـ STL (Standard Template Library) التي تقدم هياكل بيانات ودوال جاهزة.

### نصائح لتعلم C++:

- الممارسة: ابدأ بمشاريع بسيطة وتدرج إلى مشاريع أكثر تعقيدًا.
- الدروس والكتب: هناك العديد من الموارد على الإنترنت وكتب جيدة لتعلم C
عالم برمجةوتقنية الحاسوب C. P. W
مشروع تصميم صراف الي للبنك.cpp
تصحيح. الكود


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

// تعريف التركيب لحساب المستخدم
struct Account {
double balance;
int password;
};

// اسم الملف لتخزين بيانات الحساب
const char FILENAME[] = "account_data.txt";

// تحميل بيانات الحساب من الملف
void loadAccount(Account &acc) {
ifstream file(FILENAME);
if (file) {
file >> acc.balance >> acc.password;
} else {
// إذا لم يوجد ملف، يتم تعيين القيم الافتراضية
acc.balance = 1000.0;
acc.password = 1244;
}
file.close();
}

// حفظ بيانات الحساب إلى الملف
void saveAccount(const Account &acc) {
ofstream file(FILENAME);
file << acc.balance << " " << acc.password;
file.close();
}

// عرض القائمة
void showMenu() {
cout << "* قائمة الخيارات ****" << endl;
cout << "1: عرض الرصيد" << endl;
cout << "2: سحب المال" << endl;
cout << "3: إيداع المال" << endl;
cout << "4: تغيير كلمة المرور" << endl;
cout << "5: خروج" << endl;
cout << "*********" << endl;
}

// تنفيذ العمليات المصرفية
void process(Account &acc) {
int inputPass;
int choice;
int amount;

cout << "أدخل كلمة السر: ";
cin >> inputPass;

if (inputPass != acc.password) {
cout << "خطاءكلمت السر غير صحيحه يرجئ ادخال كلمة السر الصحيحه"<<endl;
return;
}

do {
showMenu();
cout << "اختر العملية: ";
cin >> choice;

switch (choice) {
case 1:
cout << "رصيدك الحالي: " << acc.balance << " ريال" << endl;
break;

case 2:
cout << "أدخل المبلغ الذي تريد سحبه: ";
cin >> amount;
if (amount > acc.balance) {
cout << "رصيدك غير كافٍ!" << endl;
} else {
acc.balance -= amount;
cout << "تم السحب بنجاح! رصيدك الآن: " << acc.balance << " ريال" << endl;
saveAccount(acc);
}
break;

case 3:
cout << "أدخل المبلغ الذي تريد إيداعه: ";
cin >> amount;
acc.balance += amount;
cout << "تم الإيداع بنجاح! رصيدك الآن: " << acc.balance << " ريال" << endl;
saveAccount(acc);
break;

case 4:
cout << "أدخل كلمة المرور الجديدة: ";
cin >> acc.password;
saveAccount(acc);
cout << "تم تغيير كلمة المرور بنجاح!" << endl;
break;

case 5:
cout << "🙋‍♂️شكرآ لإستخدامكم ** بنك جلال"<<endl;
break;

default:
cout << "خيار غير صحيح! حاول مرة أخرى." << endl;
}
} while (choice != 5);
}

int main() {
Account acc;
loadAccount(acc); // تحميل البيانات من الملف
process(acc); // بدء العمليات
return 0;
}
👍1
عالم برمجةوتقنية الحاسوب C. P. W
MERGE(A, p. q.r) 1 n_{1} = q - p + 1 2 n_{2} = r - q 3 let L[1.. n_{1} + 1 ] and R[1.. n_{2} + 1 ] be new arrays 4 for i = 1 to n_{1} 5 L[i] = A[p + i - 1] 6 for j = 1 to n_{2} 7 R[j] = A[q + j] 8 L[n_{1} + 1] = ∞ 9 R[n_{2} + 1] = ∞ 10 i = 1 11…
#include <iostream>
#include <vector>
#include <climits> // لاستخدام INT_MAX كبديل لـ ∞

using namespace std;

void merge(vector<int>& A, int p, int q, int r) {
int n1 = q - p + 1; // حجم المصفوفة اليسرى
int n2 = r - q; // حجم المصفوفة اليمنى

vector<int> L(n1 + 1), R(n2 + 1); // إنشاء المصفوفتين مع مكان إضافي للحارس

// نسخ القيم إلى المصفوفة اليسرى L
for (int i = 0; i < n1; i++)
L[i] = A[p + i];

// نسخ القيم إلى المصفوفة اليمنى R
for (int j = 0; j < n2; j++)
R[j] = A[q + 1 + j];

// تعيين القيم الحارسة
L[n1] = INT_MAX;
R[n2] = INT_MAX;

int i = 0, j = 0; // مؤشرات L و R
for (int k = p; k <= r; k++) {
if (L[i] <= R[j]) {
A[k] = L[i];
i++;
} else {
A[k] = R[j];
j++;
}
}
}

// دالة لاختبار الدمج
int main() {
vector<int> A = {2, 4, 5, 7, 1, 2, 3, 6}; // مصفوفة غير مرتبة
int p = 0, q = 3, r = 7; // تحديد حدود القسمين المراد دمجهما

merge(A, p, q, r);

// طباعة المصفوفة بعد الدمج
cout << "المصفوفة بعد الدمج: ";
for (int num : A)
cout << num << " ";

return 0;
}
عالم برمجةوتقنية الحاسوب C. P. W
MERGE(A, p. q.r) 1 n_{1} = q - p + 1 2 n_{2} = r - q 3 let L[1.. n_{1} + 1 ] and R[1.. n_{2} + 1 ] be new arrays 4 for i = 1 to n_{1} 5 L[i] = A[p + i - 1] 6 for j = 1 to n_{2} 7 R[j] = A[q + j] 8 L[n_{1} + 1] = ∞ 9 R[n_{2} + 1] = ∞ 10 i = 1 11…
#include <iostream>
#include <climits> // لاستخدام INT_MAX كقيمة لانهائية
using namespace std;

void merge(int A[], int p, int q, int r) {
int n1 = q - p + 1; // عدد العناصر في الجزء الأول
int n2 = r - q; // عدد العناصر في الجزء الثاني

// إنشاء مصفوفتين مؤقتتين
int L[n1 + 1], R[n2 + 1];

// نسخ البيانات إلى المصفوفتين الفرعيتين
for (int i = 0; i < n1; i++)
L[i] = A[p + i];

for (int j = 0; j < n2; j++)
R[j] = A[q + 1 + j];

// إضافة "عدد كبير جدًا" كمؤشر للنهاية
L[n1] = INT_MAX;
R[n2] = INT_MAX;

// عملية الدمج
int i = 0, j = 0;
for (int k = p; k <= r; k++) {
if (L[i] <= R[j]) {
A[k] = L[i];
i++;
} else {
A[k] = R[j];
j++;
}
}
}

// دالة لاختبار الدمج
int main() {
int A[] = {2, 4, 6, 1, 3, 5}; // جزء من مصفوفة مرتبة جزئياً
int p = 0, q = 2, r = 5; // تقسيم المصفوفة
merge(A, p, q, r);

// طباعة المصفوفة بعد الدمج
cout << "المصفوفة بعد الدمج: ";
for (int i = 0; i < 6; i++) {
cout << A[i] << " ";
}
cout << endl;

return 0;
}
وعليكم السلام! سأساعدك في كتابة خوارزمية الدمج المذكورة بلغة C++. الخوارزمية التي قدمتها هي جزء من خوارزمية الفرز السريع (Merge Sort). إليك الكود المفصل لتنفيذ دالة الدمج:

#include <iostream>
#include <vector>
#include <limits> // للحصول على قيمة ∞

void merge(std::vector<int>& A, int p, int q, int r) {
int n1 = q - p + 1; // حجم الجزء الأيسر
int n2 = r - q; // حجم الجزء الأيمن

// إنشاء مصفوفات للأجزاء
std::vector<int> L(n1 + 1);
std::vector<int> R(n2 + 1);

// نسخ البيانات إلى المصفوفات L و R
for (int i = 0; i < n1; i++) {
L[i] = A[p + i];
}
for (int j = 0; j < n2; j++) {
R[j] = A[q + 1 + j]; // لاحظ أن index تبدأ من q+1
}

// تعيين القيم غير المنتهية
L[n1] = std::numeric_limits<int>::max(); // قيمة تماثل ∞
R[n2] = std::numeric_limits<int>::max(); // قيمة تماثل ∞

int i = 0, j = 0;

// دمج المصفوفتين في المصفوفة الأصلية
for (int k = p; k <= r; k++) {
if (L[i] <= R[j]) {
A[k] = L[i];
i++;
} else {
A[k] = R[j];
j++;
}
}
}

// مثال على كيفية استدعاء دالة الدمج
int main() {
std::vector<int> A = {38, 27, 43, 3, 9, 82, 10};
int p = 0;
int q = 2; // مؤشر منتصف الجزء
int r = 6; // مؤشر نهاية الجزء

merge(A, p, q, r);

// طباعة المصفوفة بعد الدمج
for (int i = 0; i < A.size(); i++) {
std::cout << A[i] << " ";
}
std::cout << std::endl;

return 0;
}


### توضيحات:
1. المكتبات: استخدام مكتبة vector لتسهيل إدارة المصفوفات الديناميكية، ومكتبة limits للحصول على قيمة تعادل ∞.
2. الدمج: بعد نسخ عناصر المصفوفتين L و R، يتم دمجهما في المصفوفة الأصلية A باستخدام حلقة for.
3. القيم غير النهائية: يستخدم std::numeric_limits<int>::max() لوضع قيم تماثل ∞ في نهاية كل مصفوفة.

يمكنك نسخ الكود أعلاه ولصقه في بيئة تطوير C++ لتجربته. إذا كانت لديك أي أسئلة أو تحتاج إلى توضيح أكثر، فلا تتردد في السؤال!
لغات برمجة السكربت: 🎲

تُعد لغة برمجة ما أنها لغة سكربت إن كانت:


تستخدم مجموعة من التعليمات النصية المكتوبة لتنفيذ أي نوع من العمليات.

تعتمد على مضيف:
إذ لا يمكن أن تُنتج برامجًا تنفيذية قائمة بحد ذاتها بل ترتبط بنظام تشغيل
مثل (سكربتات الطرفيات)

أو
بيئة عمل (سكربت ويب على الخادم)

أو
برنامج ( سكربت كتابة ماكرو أو موسّع)

أو لغة برمجة أخرى لتنفيذ مجموعة من العمليات التي تهدف إلى تعديل أو تطوير أو زيادة القدرة الوظيفية للمضيف أو تتوسط بينها وبين منظومات أخرى ليشار إليها عندها إلى أنها لغات صمغية glue code.

أن تكون لغة مفسّرة وليست مُصرَّفة.

تتميز لغات السكربت بكونها، مفتوحة المصدر غالبًا، وسهلة التعليم نسبيًا ولا ضرورة لوجودها ضمن ملف خاص كي تُفسّر، ولا يمكن كتابة تطبيقات أو برامج باستخدامها مباشرة بل تحتاج إلى مضيف لذلك يُقال أنها محمولة.

أضف إلى ذلك أنها سريعة التنفيذ كونها تستطيع تنفيذ الطلبات مباشرة (تنفيذ أمر مباشرة) دون الحاجة إلى تعليمات أخرى لتفعيل الطلب كما يزيد سرعتها كونها لغة برمجة مفسّرة.

يمكنك مثلًا أن تُنفّذ الأمر ('مرحبًا')window.alert مباشرة في جافاسكربت وهي لغة سكربت مشهورة جدًا، لكنك لن تستطيع فعل ذلك باستخدام لغة ++C. لاحظ ماذا سيتطلب الأمر:


//
لنقول مرحبًا C++ برنامج بلغة
#include <iostream>
using namespace std;
int main(){
cout<<"مرحبًا";
return 0;
}


تُصنف لغات برمجة السكربت إلى:

سكربتات تطوير الويب: 🫥
وتستخدم لكتابة صفحات ويب ديناميكية وتطوير مواقع وتطبيقات الويب، ويمكن أن نميز بين نوعين من السكربتات في هذه الصدد

سكربتات تعمل من جانب العميل
(أي تُستخدم في بناء الواجهة الأمامية للتطبيق أو الموقع)

نجد:

JavaScript
React
Next.js


سكربتات تعمل من جانب الخادم (أي تستخدم لبناء الواجهة الخلفية للتطبيق، وهي ما يستعرضه المتصفح) نجد منها:

JavaScript
PHP
Node.js
ASP.net
Ruby
Perl
Python


سكربتات تعمل مع طرفيات أنظمة التشغيل: وتستخدم لتنفيذ الأوامر ضمن واجهات سطر الأوامر في أنظمة التشغيل المختلفة مثل ويندوز ولينكس. من الأمثلة عليها:

BASH:

في طرفيات لينكس، وتنفذ طيفًا واسعًا من التعليمات مثل الكتابة والقراءة من وإلى الملفات وتنزيل البرمجيات من الإنترنت وتثبيتها وتشغيل البرمجيات وغيرها الكثير.

Windows powerShell:

في ويندوز، وتنفذ مهامًا مشابهة لما تنفذه طرفية لينكس.


سكربتات للأغراض العامة: يمكن أن تُنفذ تقريبًا أي شيء نذكر منها:

Ruby
Python


يمكن استخدام السكربتات في كل المجالات تقريبًا مثل تطبيقات الويب وتطبيقات الهواتف المحمولة وسطح المكتب والتعامل مع الأنظمة وأتمتة المهام على المنظومات السحابية والتنقيب عن البيانات وبرمجة الموّسعات والإضافات إلى البرامج وغيرها الكثير.