سؤال

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

COMMON SOMEVAR

INTEGER*2 SOMEVAR

ثم عندما أراها فعليًا في بعض الملفات الأخرى ، فإنهم يعلنون المتغيرات المحلية ، (على سبيل المثال Somevar_local) واعتمادًا على الحالة ، قاموا بتعيين SomeVar_Local = 1 أو 0.

ثم هناك مشروط آخر في وقت لاحق أسفل الخط الذي سيقول شيئًا مثل

IF (SOMEVAR_LOCAL. eq. 1) 
SOMEVAR(PARAM) = 1;

(مرة أخرى أعتذر إذا لم يكن هذا فورتران المناسب ، لكن ليس لدي إمكانية الوصول إلى الكود الآن). لذلك يبدو لي أن هناك "بنية" مثل متغير يسمى Somevar الذي يبلغ طوله (2 بايت من البيانات؟) ، ثم هناك متغير محلي يستخدم كعلم بحيث في وقت لاحق أسفل الخط ، Global بنية SOMEVAR يمكن ضبط على هذه القيمة. ولكن نظرًا لوجود (param) ، فهي مثل صفيف لتلك الحالة بالذات؟ شكرًا. آسف لتفسيري السيئ ، ولكن نأمل أن تفهم ما أطلبه.

هل كانت مفيدة؟

المحلول

الإعلان الأول لديه بعضها كصاحب عدد صحيح من بايت اثنين. الاستخدام الذي تظهره يحتوي على Somevar لديه صفيف - استنادًا إلى فهرسته. من الممكن القيام بذلك في Fortran عبر "جمعية التسلسل" ولكنها ممارسة سيئة. في ملف واحد ، يمكنك إعلان بعضها كإجراء عدد صحيح*2 واثنين من البايتات لهذا العددية. في ملف آخر ، يمكنك إعلانه على أنه عدد صحيح*1 Somevar (2) ، ويتم حجز بايتان ، وهذه المرة لمجموعة من عنصرين ، كل بايت واحد. يمكن أن يؤدي استخدام نفس الكتلة المشتركة في كلا الملفين إلى تداخل هذين المتغيرين ، بايت بايت - جمعية التسلسل. منذ عدة سنوات ، عندما كانت الذاكرة صغيرة جدًا ، قام المبرمجون بذلك لتقليل استخدام الذاكرة ، مع العلم أن الروتين الفرعي مختلف كانت تستخدم المتغيرات في أوقات مختلفة. أسباب القيام بذلك اليوم محدودة للغاية. في الغالب لا ينبغي للمرء أن يكون عرضة للارتباك.

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

نصائح أخرى

فقط لتضخيم شيء ما تم ذكره بالفعل: كتل شائعة تخبر المترجم عن كيفية وضع المتغيرات في الذاكرة. لا يوجد سبب تقريبًا لاستخدامها مع Fortran الحديثة ، أي مع أي مترجم يمكنه التعامل مع Fortran 90 أو أحدث ، وهناك أسباب وجيهة لتجنبها.

ولإضافة شيء واحد: في Fortran الحديث ، يمكنك القيام تقريبًا بما تفعله هياكل C مع الأنواع المحددة للمستخدم. تحقق من الوثائق الخاصة بك للنوع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top