توفر لغة البرمجة ج العديد من الاحتمالات للعمل مع المصفوفات والمتجهات. يمكن أن تكون إحدى المهام المهمة في البرمجة هي الحصول على متجه (مجموعة من المتغيرات) من دالة.
هناك عدة طرق لحل هذه المشكلة. واحدة من أسهل الطرق هي استخدام المؤشرات. وظيفة يمكن أن تأخذ مؤشر إلى صفيف كمدخل ، وملء مع القيم ، وإرجاع مؤشر إلى بداية الصفيف. وبالتالي ، بعد استدعاء الوظيفة ، يمكننا الوصول إلى المتجه الناتج.
برينتف ("٪د " ، ناقلات [أنا]);
- }
- مجانا (ناقلات);
- العودة 0;
- }
- في هذا المثال ، نعلن متغير الحجم لتحديد حجم المتجه. ثم نسمي وظيفة كريتيفيكتور وتعيين القيمة الناتجة إلى مؤشر ناقلات. بعد ذلك ، يمكننا الوصول إلى عناصر المتجه باستخدام عامل التشغيل []. لا تنس تحرير الذاكرة المخصصة باستخدام الوظيفة المجانية.
- وهكذا ، وذلك باستخدام مؤشرات يجعلها مريحة للحصول على ناقلات من وظائف في لغة البرمجة ج.
- كيفية الحصول على ناقلات من وظيفة في ج?
- ميزات لغة البرمجة سي
- المتجه هو بنية بيانات عالمية
- طريقة سهلة لإنشاء متجه
- إرجاع متجه من دالة
- ميزات نقل المتجه إلى وظيفة
- معالجة المتجهات واستخدامها
- ناقل التمديد الوظيفي
- نصائح مفيدة للعمل مع ناقل في ج
1. استخدم أنواع البيانات الصحيحة
2. تخصيص الذاكرة ديناميكيا
3. تحقق من حدود المتجه
4. استخدم الوظائف للعمل مع المتجه
5. التعامل مع الأخطاء
6. تحسين عمليات المتجهات
7. تحقق من ناقل الفراغ
8. تحرير الذاكرة بعد الاستخدام
خاتمة
سؤال وجواب
كيف يمكنني الحصول على ناقلات من وظيفة في ج?
ما هي أسهل طريقة للعودة مجموعة من وظيفة في لغة البرمجة ج?
كيف يمكنني إرجاع متجه من دالة إلى ج بحيث يكون متاحا بعد استدعاء الوظيفة?
كيفية الحصول على ناقلات من وظيفة في ج?
ال لغة البرمجة ج يوفر عدة طرق لإرجاع متجه من دالة. واحدة من أسهل الطرق هي استخدام مؤشر وتخصيص الذاكرة لمتجه داخل وظيفة. دعونا ننظر إلى هذه الطريقة بمزيد من التفصيل.
أولا ، تحتاج إلى إعلان وظيفة ستعيد متجها:
// ملء المتجه بالقيم
إلى عن على (الباحث أنا = 0; أنا < حجم; أنا i)
{
ناقلات [أنا] = أنا;
}
عودة ناقلات;
}
في هذا المثال ، نعلن دالة
جيتفيكتور
، الذي يعيد المؤشر إلى متجه الأعداد الصحيحة من النوع
{
// تحرير الذاكرة
مجانا (ناقلات);
في هذا المثال ، نسمي الدالة
جيتفيكتور
وحفظ المؤشر الذي تم إرجاعه إلى متغير
ناقلات
. ثم نستخدم هذا المتجه في حلقة
ل
لإخراج محتوياته. أخيرا ، نقوم بتحرير الذاكرة المخصصة للمتجه باستخدام الوظيفة
مجانا
.
حتى تتمكن من الحصول على ناقلات من وظيفة في لغة البرمجة ج باستخدام مؤشر وتخصيص الذاكرة الديناميكية. تذكر أنه بعد استخدام المتجه ، يجب عليك تحرير الذاكرة باستخدام الوظيفة
مجانا
.
ميزات لغة البرمجة سي
تستخدم لغة البرمجة سي على نطاق واسع لتطوير برامج النظام والأنظمة المدمجة والمجمعين والتطبيقات الأخرى. لديها العديد من الميزات التي تجعلها واحدة من لغات البرمجة الأكثر شعبية.
البساطة والكفاءة: ج هي لغة بسيطة نسبيا تسمح للمبرمجين بكتابة كود مضغوط وفعال. نظرا لطبيعتها منخفضة المستوى ، توفر سي وصولا مباشرا إلى الذاكرة والقدرة على إدارة موارد الكمبيوتر.
قابلية النقل: رمز مكتوب في ج يمكن استدار بسهولة إلى مختلف المنصات وأنظمة التشغيل. هذا يجعل لغة البرمجة سي خيارا مثاليا لتطوير التطبيقات عبر الأنظمة الأساسية.
مكتبة قياسية غنية: ج لديه مكتبة قياسية واسعة النطاق تتضمن العديد من الوظائف للعمل مع السلاسل والإدخال/الإخراج والحسابات الرياضية والمزيد. هذا يبسط إلى حد كبير تطوير التطبيقات.
التمدد: تسمح لغة سي للمبرمجين بإنشاء وظائفهم الخاصة والمكتبات لتنفيذ وظائف محددة. هذا يسمح لك بإعادة استخدام التعليمات البرمجية وإنشاء المزيد من التطبيقات المعيارية.
دعم البرمجة على مستوى منخفض: ج يوفر للمبرمجين القدرة على القيام ببرمجة منخفضة المستوى ، مما يسمح لهم بالتحكم الكامل في موارد أجهزة الكمبيوتر. هذا مفيد بشكل خاص لتطوير أنظمة التشغيل وبرامج التشغيل.
التكامل مع اللغات الأخرى: ج يدمج بسلاسة مع لغات البرمجة الأخرى مثل ج Java ، جافا ، وبايثون. هذا يسمح للمبرمجين بالاستفادة من لغة سي بالاقتران مع اللغات الأخرى.
مجتمع واسع: ج لديها مجتمع كبير من المبرمجين الذين يشاركون بنشاط المعرفة والخبرة. هذا يجعل لغة سي خيارا مثاليا لأولئك الذين يبحثون عن المساعدة والدعم أثناء التطوير.
سرعة تنفيذ عالية: ج هي لغة برمجة مجمعة تسمح لبرامجها بالعمل بسرعة عالية. هذا مهم بشكل خاص للتطبيقات التي تتطلب أداء عاليا ، مثل الألعاب أو الحوسبة العلمية.
- بشكل عام ، تقدم لغة البرمجة سي العديد من الميزات التي تجعلها أداة قوية ومتعددة الاستخدامات لتطوير تطبيقات متفاوتة التعقيد.
- المتجه هو بنية بيانات عالمية
- المتجه هو واحد من هياكل البيانات الأكثر تنوعا التي تستخدم على نطاق واسع في البرمجة. يحتوي على عدد من الميزات التي تجعله أداة مريحة وفعالة.
- السمة الرئيسية للمتجه هي قدرته على تخزين عدد متغير من العناصر. هذا يجعلها مثالية للعمل مع البيانات التي قد تتغير كميتها بمرور الوقت.
- المتجه هو مجموعة مرتبة من العناصر من نفس النوع. يمكن أن يحتوي على عناصر من أي نوع بيانات ، مثل الأرقام والسلاسل والهياكل والمؤشرات.
الميزة الرئيسية لاستخدام المتجه هي أنه يدير تلقائيا تخصيص الذاكرة وإلغاء التخصيص. عندما يمتلئ المتجه بعناصر جديدة ، فإنه يتوسع بشكل مستقل لزيادة قدرته. عند إزالة العناصر من المتجه ، فإنه يحرر الذاكرة التي تستخدمها هذه العناصر تلقائيا.
يحتوي المتجه أيضا على عدد من الطرق والوظائف التي تسهل معالجة البيانات. على سبيل المثال ، باستخدام طريقة الضغط الخلفي () ، يمكنك إضافة عنصر إلى نهاية المتجه ، وباستخدام طريقة الضغط الخلفي () ، يمكنك حذف العنصر الأخير. تسمح لك طرق الحجم() والفارغ () بالحصول على عدد العناصر في المتجه والتحقق مما إذا كان فارغا.
بالإضافة إلى ذلك ، يوفر المتجه عمليات وصول سريعة للعناصر. هذا يرجع إلى حقيقة أن المتجه يستخدم منطقة ذاكرة مستمرة لتخزين العناصر ، ويتم الوصول إليها بواسطة فهرس. هذا يجعل المتجه فعالا للغاية عند العمل بكميات كبيرة من البيانات.
خاصية أخرى مهمة للمتجه هي قدرته على تغيير الحجم. يمكن تعديل المتجه ديناميكيا عن طريق إضافة العناصر وإزالتها في أي مكان. بالإضافة إلى ذلك ، يمكن فرز المتجه ودمجه وتقسيمه وفقا لمتطلبات البرنامج.
واحدة من الطرق لإنشاء متجه في لغة البرمجة ج هو استخدام ستدليب المكتبة القياسية.h. تحتوي هذه المكتبة على وظيفة مالوك() التي تخصص الذاكرة لمجموعة من المتغيرات بعدد محدد من البايتات.
لإنشاء متجه بعدد معين من العناصر ، اتبع الخطوات التالية:
تضمين ملف رأس ستدليب.ح في بداية البرنامج.
قم بتعريف مؤشر لنوع البيانات المطلوب. على سبيل المثال ، لإنشاء متجه من الأعداد الصحيحة ، يتم استخدام الإعلان التالي :إنت * ناقلات؛.
تخصيص الذاكرة للمتجه باستخدام وظيفة مالوك (). يجب تحديد عدد البايتات المطلوبة لتخزين جميع عناصر المتجه. على سبيل المثال ، بالنسبة لمتجه مكون من 5 أعداد صحيحة ، يتم استخدام الكود التالي: متجه = (كثافة العمليات*) مالوك(5 * حجم(كثافة العمليات))؛.
تحقق مما إذا تم تخصيص الذاكرة بنجاح. للقيام بذلك ، يمكنك استخدام شرط يتحقق من أن المؤشر إلى المتجه ليس فارغا.
استخدم متجها في البرنامج. يتم الوصول إلى عناصر المتجه عبر مؤشر. على سبيل المثال ، لتعيين قيمة للعنصر الأول من المتجه ، يتم استخدام الكود التالي: *المتجه = 42؛.
بعد الانتهاء من العمل مع المتجه ، تحتاج إلى تحرير الذاكرة المخصصة له باستخدام الوظيفة المجانية (). على سبيل المثال ، لتحرير الذاكرة المخصصة لمتجه ، يتم استخدام الكود التالي: مجاني(متجه)؛.
الطريقة المذكورة أعلاه لإنشاء متجه بسيطة وتستخدم على نطاق واسع في ج البرمجة. يسمح لك بإنشاء صفائف ديناميكية مع عدد معين من العناصر.
إرجاع متجه من دالة
لا يوجد نوع بيانات "متجه" خاص في لغة البرمجة ج ، ولكن يمكن استخدام المصفوفات لتمثيل متجه. في هذه المقالة ، سننظر في طريقة بسيطة لإرجاع مصفوفة من دالة في اللغة ج.
لإرجاع مصفوفة من دالة ، يجب عليك تحديد نوع قيمة إرجاع الدالة كمؤشر لنوع البيانات المطلوب. على سبيل المثال ، يتم استخدام نوع كثافة العمليات * لإرجاع متجه الأعداد الصحيحة
.
كثافة العمليات الرئيسية () {
في المثال المعطى ، الوظيفة
جيتفيكتور()
إرجاع مؤشر إلى صفيف ثابت
ناقلات
. يتم استخدام الكلمة الأساسية الثابتة لإرجاع عنوان الصفيف المحلي من الوظيفة بشكل صحيح
.
في الوظيفة
الرئيسية()
نحصل على مؤشر إلى متجه عن طريق استدعاء دالة
جيتفيكتور()
. ثم نكرر عناصر المتجه ونعرضها على الشاشة باستخدام
برينتف()
وظيفة.
يتم إرجاع المؤشر إلى المصفوفة "حسب القيمة". هذا يعني أننا بحاجة إلى تخزين قيمة الإرجاع للدالة في متغير من نوع مؤشر الصفيف من أجل الوصول إلى بيانات المتجه.
إذا كان من الضروري إرجاع متجه بطول متغير ، فيمكنك استخدام معلمات دالة إضافية لنقل معلومات حول حجم المتجه. على سبيل المثال:
كثافة العمليات الرئيسية () {
في هذا المثال ، الدالة
جيتفيكتور()
يأخذ المعلمة
الحجم
، والذي يحدد حجم المتجه الذي تم إرجاعه. تخصص الوظيفة ذاكرة ديناميكية لتخزين المتجه باستخدام
مالوك ()
وظيفة. ثم يتم ملء المتجه بالبيانات وإعادته.
في الوظيفة
الرئيسية()
نحن تمرير حجم ناقلات إلى وظيفة
جيتفيكتور()
والحصول على مؤشر إلى الذاكرة المخصصة. بعد استخدام المتجه ، يتعين علينا تحرير الذاكرة المخصصة باستخدام الوظيفة
مجانا()
لمنع تسرب الذاكرة.
وهكذا ، في لغة البرمجة ج ، يمكنك استخدام مؤشرات إلى المصفوفات لتمثيل متجه وإعادتها من الوظائف.
ميزات نقل المتجه إلى وظيفة
في ال ج لغة البرمجة ، قد يكون لتمرير متجه إلى دالة بعض الميزات الخاصة. دعونا ننظر إليها بمزيد من التفصيل.
1. نقل المتجه حسب القيمة. بشكل افتراضي ، يتم تمرير نسخة من المتجه إلى وظيفة ج ، وليس المتجه نفسه. هذا يعني أن أي تغييرات يتم إجراؤها داخل الوظيفة لن تكون مرئية من الخارج.
2. باستخدام المؤشر. لتغيير المتجه داخل الوظيفة وحفظ التغييرات بعد الخروج منه ، تحتاج إلى تمرير مؤشر إلى المتجه. وبالتالي ، ستعمل الوظيفة مع نفس منطقة الذاكرة مثل رمز الاتصال.
3. البعد من المتجه. عند تمرير متجه إلى دالة ، غالبا ما يكون من الضروري تمرير بعده حتى تعرف الوظيفة عدد العناصر التي يجب معالجتها. يمكنك تمرير البعد كوسيطة منفصلة أو استخدام آلية الإنهاء الصفري عندما يكون للعنصر الأخير من المتجه قيمة معينة (على سبيل المثال ، صفر) ، مما يشير إلى نهاية المتجه.
4. ناقل ديناميكي مميز. إذا تم تخصيص المتجه ديناميكيا ، على سبيل المثال ، باستخدام وظيفة مالوك () ، فمن الضروري أن تأخذ في الاعتبار خصوصيات انتقاله. في هذه الحالة ، بعد استخدام المتجه ، من الضروري تحرير الذاكرة المخصصة باستخدام الوظيفة المجانية ().
5. إرجاع المتجه من الوظيفة. إذا كنت بحاجة إلى إرجاع متجه من دالة ، فيمكنك استخدام مؤشر إلى المتجه أو إرجاع بنية تحتوي على مؤشر إلى المتجه وأبعاده.
يمكن أن يكون استخدام المتجهات في ج أكثر صعوبة إلى حد ما من لغات البرمجة الأخرى مثل ج++. ومع ذلك ، بمساعدة المؤشرات والتلاعب اليدوي بالذاكرة ، يمكن تمرير المتجهات وإعادتها من الوظائف في ج.
معالجة المتجهات واستخدامها
بعد تلقي متجه من وظيفة في لغة البرمجة ج ، يمكننا إجراء عمليات مختلفة معها واستخدام قيمها وفقا لتقديرنا.
واحدة من أسهل الطرق لاستخدام المتجه هي عرض قيمه على الشاشة. للقيام بذلك ، يمكننا استخدام حلقة ووظيفة إخراج البيانات:
# تشمل
}
كثافة العمليات الرئيسية () {
ناقلات كثافة العمليات[] = {1, 2, 3, 4, 5};حجم كثافة العمليات = حجم (متجه) / حجم (كثافة العمليات);
متجه الطباعة (متجه ، حجم);
العودة 0;
}
في هذا المثال ، نحدد مصفوفة
ناقلات
و حجمها
الحجم
. ثم نسمي الوظيفة
برينت_فيكتور
، والذي يأخذ المؤشر إلى صفيف وحجمه كوسيطات. في حلقة ، تعرض الوظيفة كل عنصر من عناصر المصفوفة على الشاشة.
هناك طريقة أخرى لمعالجة المتجه وهي إجراء عمليات حسابية مختلفة. على سبيل المثال ، يمكننا حساب مجموع عناصر المتجه:
# تشمل
عدد المتجهات (عدد المتجهات * ، حجم كثافة العمليات) {
مجموع كثافة العمليات = 0;
}
مبلغ الإرجاع;
}
كثافة العمليات الرئيسية () {
ناقلات كثافة العمليات[] = {1, 2, 3, 4, 5};
حجم كثافة العمليات = حجم (متجه) / حجم (كثافة العمليات);
مجموع الباحث = مجموع المتجه(المتجه ، الحجم);
- برينتف ("مجموع العناصر المتجهة: ٪ د
- "،مجموع);
العودة 0;
}
- في هذا المثال ، نحدد دالة المجموع
- ، الذي يأخذ مؤشر إلى صفيف وحجمه ، وإرجاع مجموع عناصر الصفيف. تقوم الوظيفة بتشغيل حلقة يتم فيها إضافة كل عنصر من عناصر المصفوفة إلى المبلغ الإجمالي. ثم نسمي الوظيفة ونعرض النتيجة على الشاشة.
أيضا ، يمكن تمرير المتجه إلى وظائف أخرى لاستخدام قيمه في العمليات الحسابية أو العمليات الأخرى. للقيام بذلك ، تحتاج إلى تمرير مؤشر إلى الصفيف وحجمه كوسيطات إلى الوظيفة.
وبالتالي ، بعد الحصول على متجه من دالة في لغة البرمجة ج ، يمكننا معالجتها بسهولة واستخدام القيم لمختلف العمليات والحسابات.
- ناقل التمديد الوظيفي
- بالإضافة إلى العمليات الأساسية ، مثل الحصول على عنصر حسب الفهرس أو تغيير قيمة عنصر متجه ، من الممكن توسيع وظيفة المتجه في لغة البرمجة ج.
إضافة عنصر متجه
لإضافة عنصر جديد إلى نهاية المتجه ، اتبع الخطوات التالية:
- تحقق مما إذا كانت هناك ذاكرة كافية لتخزين العنصر الجديد. إذا لم يكن كذلك ، فقم بزيادة حجم الذاكرة المخصصة.
- أضف عنصرا جديدا إلى نهاية المتجه وقم بزيادة حجمه بمقدار واحد.
- حذف عنصر متجه
لإزالة عنصر من متجه ، اتبع الخطوات التالية:
ابحث عن موضع العنصر المحذوف في المتجه.
- انقل جميع العناصر إلى يمين العنصر المحذوف في موضع واحد إلى اليسار.
- تقليل حجم المتجه بمقدار واحد.
- البحث عن عنصر متجه
- يمكن استخدام خوارزميات مختلفة للبحث عن عنصر متجه ، على سبيل المثال:
البحث الخطي: مقارنة متسلسلة لكل عنصر من عناصر المتجه بالقيمة المطلوبة.
بحث ثنائي: تقسيم المتجه إلى جزأين ومقارنة القيمة المطلوبة بالعنصر الموجود في المنتصف.
فرز عناصر المتجهات
يمكن استخدام خوارزميات مختلفة لفرز العناصر المتجهة ، على سبيل المثال:
فقاعة الفرز: مقارنة متسلسلة والتقليب من العناصر المتجهة المجاورة.
الفرز حسب الاختيار: اختيار أصغر عنصر في المتجه ونقله إلى البداية.
فرز الإدراج: إدخال عناصر المتجهات بالتتابع في المواضع الصحيحة.
تغيير حجم المتجه
بشكل دوري ، قد يكون المتجه صغيرا جدا أو كبيرا جدا لاستيعاب جميع العناصر الضرورية. لحل هذه المشكلة ، يمكنك تغيير حجم الذاكرة المخصصة للمتجه:
تخصيص ذاكرة جديدة من الحجم المطلوب.
انسخ عناصر المتجه الموجودة إلى الذاكرة الجديدة.
تحرير الذاكرة القديمة.
قم بتعيين حجم جديد للمتجه.
يمكنك الآن استخدام كل هذه الميزات لإنشاء متجه أكثر ملاءمة ووظيفية في لغة البرمجة سي.
نصائح مفيدة للعمل مع ناقل في ج
قد يكون العمل مع المتجهات في ج مهمة صعبة في بعض الأحيان. يقدم هذا القسم نصائح مفيدة لمساعدتك على العمل بفعالية مع المتجهات في ج.
1. استخدم أنواع البيانات الصحيحة
لتخزين العناصر المتجهة ، استخدم نوع البيانات المناسب ، على سبيل المثال ، كثافة العمليات أو التعويم ، حسب الحاجة. استخدم نوع بيانات يوفر بتات كافية لتمثيل القيمة. يمكن أن يؤدي النوع الخاطئ إلى فقدان الدقة أو الفائض.
2. تخصيص الذاكرة ديناميكيا
إذا كنت بحاجة إلى تغيير حجم المتجه أثناء تنفيذ البرنامج ، فاستخدم تخصيص الذاكرة الديناميكية باستخدام وظيفة مالوك. يتيح لك ذلك إنشاء متجهات ذات حجم متغير وتحرير الذاكرة بعد الاستخدام.
3. تحقق من حدود المتجه
قبل الوصول إلى عناصر المتجه ، تأكد من أن الفهرس في النطاق المقبول. يمكن أن يؤدي الوصول غير الصحيح إلى عنصر المتجه إلى أخطاء في تنفيذ البرنامج أو حتى إلى إنهاء طارئ.
4. استخدم الوظائف للعمل مع المتجه
لتوفير الراحة وإعادة استخدام الكود ، قم بتطوير مجموعة من الوظائف لأداء العمليات باستخدام المتجه ، مثل إضافة عنصر ، وإزالة عنصر ، والفرز ، وما إلى ذلك. سيساعدك تحديد الوظائف على إدارة المتجه والعمل معه بشكل أكثر كفاءة.
5. التعامل مع الأخطاء
إذا قامت وظائف المتجه بإرجاع أخطاء ، فلا تتجاهلها. تساعد معالجة الأخطاء على منع تعطيل البرنامج وتبسيط تصحيح الأخطاء. استخدم آليات معالجة الأخطاء ، مثل إرجاع قيمة بواسطة دالة أو استخدام استثناءات.
6. تحسين عمليات المتجهات
تحسين عمليات المتجهات لتحسين الأداء. استخدم الخوارزميات ذات التعقيد الزمني الخطي بدلا من الخوارزميات ذات التعقيد س(ن^2) إن أمكن. تقليل عدد عمليات الوصول إلى الذاكرة واستخدام خوارزميات الفرز والبحث الفعالة.