رقم الخط
في الحوسبة ، رقم السطر هو طريقة تستخدم لتحديد تسلسل معين من الأحرف في ملف نصي . الطريقة الأكثر شيوعًا لتعيين أرقام للأسطر هي تعيين رقم فريد لكل سطر ، بدءًا من 1 للسطر الأول، وزيادة بمقدار 1 لكل سطر لاحق.
في لغة البرمجة C ، يكون رقم سطر من سطر الكود المصدر أكبر بمقدار واحد من عدد أحرف السطر الجديد المقروءة أو المقدمة حتى تلك النقطة. [1]
يمكن للمبرمجين أيضًا تعيين أرقام الأسطر لعبارات في لغات البرمجة القديمة ، مثل Fortran و JOSS و BASIC . في Fortran، لم تكن كل عبارة تحتاج إلى رقم سطر، ولم يكن من الضروري أن تكون أرقام الأسطر بالترتيب المتسلسل. كان الغرض من أرقام الأسطر هو التفرع والإشارة إليها من خلال تنسيق العبارات.
جعلت كل من لغة البرمجة JOSS ولغة البرمجة BASIC أرقام الأسطر عنصرًا مطلوبًا في بناء الجملة . والسبب الرئيسي وراء ذلك هو أن معظم أنظمة التشغيل في ذلك الوقت كانت تفتقر إلى محررات النصوص التفاعلية ؛ نظرًا لأن واجهة المبرمج كانت تقتصر عادةً على محرر الأسطر ، فقد وفرت أرقام الأسطر آلية يمكن من خلالها الرجوع إلى أسطر معينة في الكود المصدر للتحرير، والتي يمكن من خلالها للمبرمج إدراج سطر جديد في نقطة معينة. كما وفرت أرقام الأسطر وسيلة ملائمة للتمييز بين الكود الذي سيتم إدخاله في البرنامج وأوامر الوضع المباشر التي سيتم تنفيذها فورًا عند إدخالها بواسطة المستخدم (والتي لا تحتوي على أرقام أسطر).
يرجع ذلك إلى حد كبير إلى انتشار تحرير النصوص التفاعلي في أنظمة التشغيل الحديثة ، حيث أن أرقام الأسطر ليست سمة من سمات معظم لغات البرمجة، حتى لغات Fortran وBasic الحديثة. [2]
تاريخ
فورتران
في لغة Fortran ، كما تم تحديدها لأول مرة في عام 1956، تم استخدام أرقام الأسطر لتحديد أنماط الإدخال/الإخراج، لتحديد العبارات التي سيتم تكرارها، وللتفرع الشرطي. على سبيل المثال: [3]
البعد ألفا ( 25 )، RHO ( 25 ) 1 ) الشكل ( 5 F12 . 4 ) 2 ) اقرأ 1 ، ألفا ، RHO ، ARG المجموع = 0.0 افعل 3 I = 1 ، 25 إذا ( ARG - ALPHA ( I )) 4 ، 3 ، 3 3 ) المجموع = المجموع + ALPHA ( I ) 4 ) القيمة = 3.14159 * RHO ( I - 1 ) اطبع 1 ، ARG ، المجموع ، القيمة انتقل إلى 2
مثل لغة التجميع التي سبقتها، لم تفترض لغة Fortran أن كل سطر يحتاج إلى تسمية (رقم السطر، في هذه الحالة). فقط العبارات المشار إليها في مكان آخر تتطلب رقم سطر:
- يحدد السطر 1 نمط التنسيق للإدخال؛ ويشير
READالأمر الموجود في السطر 2 والأمر اللاحقPRINTإلى هذا السطر. - تنفذ الحلقة
DOالسطر 3. - تتفرع عبارة IF الحسابية إلى السطر 4 عند قيمة سالبة، والسطر 3 عند الصفر، ومرة أخرى إلى السطر 3 عند قيمة موجبة.
في حين أن أرقام الأسطر متسلسلة في هذا المثال، إلا أنه في أول "برنامج [فورتران] كامل ولكن بسيط" تم نشره، فإن أرقام الأسطر تكون بالتسلسل 1، 5، 30، 10، 20، 2. [4]
يمكن أيضًا تعيين أرقام الأسطر إلى متغيرات النقطة الثابتة (على سبيل المثال، ASSIGN i TO n ) للإشارة إليها في عبارات GO TO المعينة اللاحقة (على سبيل المثال، GO TO n,(n1,n2,...nm) ).
كوبول
في لغة COBOL ، تم تحديد أرقام الأسطر في أول ستة أحرف ( منطقة رقم التسلسل ) من البطاقات المثقوبة . تم استخدام هذا في الأصل لتسهيل فرز البطاقات الميكانيكية لضمان تسلسل كود البرنامج المقصود بعد التعامل اليدوي. تم تجاهل أرقام الأسطر بالفعل بواسطة المترجم.
منشط
في عام 1962، أصبحت لغة البرمجة DOPE (تجربة البرمجة المبسطة في دارتموث) واحدة من أولى لغات البرمجة التي تتطلب رقم سطر لكل جملة وتستخدم ترتيبًا تسلسليًا لأرقام الأسطر. تم تحديد أرقام الأسطر كوجهات لأمرين، C (عملية المقارنة، IF حسابية) وT (عملية إلى، GO TO).
جوس
في عام 1963، قامت شركة JOSS بشكل مستقل بجعل أرقام الأسطر إلزامية لكل عبارة في برنامج ورتبت الأسطر بترتيب تسلسلي. قدمت شركة JOSS فكرة محرر سطر أوامر واحد يعمل كلغة تفاعلية ومحرر برنامج. يتم تنفيذ الأوامر التي تتم كتابتها بدون رقم سطر على الفور، في ما أشارت إليه شركة JOSS باسم "الوضع المباشر". إذا تم وضع بادئة رقم سطر على نفس السطر، يتم نسخه بدلاً من ذلك إلى منطقة تخزين كود البرنامج، والتي أطلقت عليها شركة JOSS اسم "الوضع غير المباشر".
على عكس لغة FORTRAN التي سبقتها أو لغة BASIC التي بعدها، تطلبت لغة JOSS أن تكون أرقام السطور أرقامًا ثابتة النقطة تتكون من زوج من الأعداد الصحيحة المكونة من رقمين مفصولين بنقطة (على سبيل المثال، 1.1). يُعرف الجزء من رقم السطر الموجود على يسار النقطة باسم "الصفحة" أو "الجزء"، بينما يُعرف الجزء الموجود على اليمين باسم "السطر"؛ على سبيل المثال، 10.12يشير رقم السطر إلى الصفحة 10 والسطر 12. يمكن للفروع استهداف صفحة أو سطر داخل صفحة. عند استخدام التنسيق اللاحق، يُعرف الجمع بين الصفحة والسطر باسم "الخطوة".
تُستخدم الصفحات لتحديد البرامج الفرعية ، والتي تعود عندما يكون السطر التالي في صفحة مختلفة. على سبيل المثال، إذا كان برنامج فرعي لحساب الجذر التربيعي لرقم موجودًا في الصفحة 3، فقد يكون لدينا ثلاثة أسطر من التعليمات البرمجية 3.1 و3.2 و3.3، وسيتم استدعاؤها باستخدام. Do part 3.سيعود الكود إلى العبارة بعد Do عندما يصل إلى السطر التالي في صفحة مختلفة، على سبيل المثال، 4.1. ليست هناك حاجة إلى ما يعادل a RETURNفي النهاية، على الرغم من أنه إذا كان مطلوبًا إرجاع مبكر، Doneفإنه يحقق ذلك. مثال:
* روتين يطلب من المستخدم قيمة موجبة ويكرر ذلك حتى يحصل على واحدة 01.10 اطلب X كـ "أدخل قيمة موجبة أكبر من الصفر". 01.20 تم ذلك إذا كانت X>0. 01.30 إلى الخطوة 1.1
أساسي
تم تقديم لغة BASIC في دارتموث عام 1964، واعتمدت أرقام الأسطر الإلزامية، كما في لغة JOSS، لكنها جعلتها أعدادًا صحيحة، كما في لغة FORTRAN. وكما تم تعريفه في البداية، استخدمت لغة BASIC أرقام الأسطر فقط لـ and GOTO( GOSUBالانتقال إلى البرنامج الفرعي، ثم العودة). دعمت بعض تطبيقات Tiny BASIC التعبيرات العددية بدلاً من الثوابت، بينما كانت عبارات switch موجودة في لهجات مختلفة ( ON GOTO؛؛ ).
ON GOSUBON ERROR GOTO
نادرًا ما يتم استخدام أرقام الأسطر في أي مكان آخر. كان أحد الاستثناءات هو السماح بتعيين المؤشر المستخدم بواسطة READ(الذي يتكرر خلال DATAالعبارات) إلى رقم سطر معين باستخدام RESTORE.
1 يمكن استخدام REM RESTORE إذا كانت مصفوفات السلسلة الأساسية تفتقر إلى 2 DIM M$ ( 9 ) : REM يحدد طول 9 أحرف 5 إدخال "رقم الشهر؟" ؛ M : إذا كان M < 1 أو M > 12 ثم 5 7 استعادة 10 * M : قراءة M$ : طباعة M$ 10 بيانات "يناير" 20 بيانات "فبراير" 30 بيانات "مارس" ...
في الإصدارات الأولى من Dartmouth BASIC، THENلا يمكن أن يتبعه إلا رقم السطر (لـ GOTO الضمني )، وليس - كما في التنفيذات اللاحقة - بواسطة بيان.
تباين نطاق أرقام السطور الصالحة بشكل كبير من تطبيق إلى آخر، اعتمادًا على التمثيل المستخدم لتخزين المعادل الثنائي لرقم السطر (بايت واحد أو بايتان؛ موقّع أو غير موقّع). في حين دعمت لغة BASIC في دارتموث الأرقام من 1 إلى 99999، دعمت تطبيقات الميكروكمبيوتر النموذجية الأرقام من 1 إلى 32767 (كلمة موقّعة مكونة من 16 بت).
| يتراوح | اللهجة |
|---|---|
| 1 إلى 254 | مينول |
| 1 إلى 255 | ملاحظة صغيرة حول التصميم الأساسي |
| 2 إلى 255 | دنفر تيني بيسك |
| 0 إلى 999 | أساسيات جامعة إلينوي-أوربانا-شامبين |
| 1 إلى 2045 | ديك بيزيك-8 |
| 0 إلى 32767 | LLL أساسيات، NIBL |
| 1 إلى 32767 | Apple I BASIC ، Level I BASIC ، Palo Alto Tiny BASIC |
| 0 إلى 65529 | GW-BASIC ، IBM BASIC |
| 1 إلى 65535 | Altair 4K BASIC ، MICRO BASIC 1.3، 6800 Tiny BASIC، Tiny BASIC Extended |
| 1 إلى 99999 | دارتموث الأساسية |
| 1 إلى 999999 | سكيلبال |
| 0 إلى 1*10^40-1 | كيوبيسك 1) |
1) في حين أن QBASIC يستخدم البرمجة المنظمة وبالتالي لا يحتاج إلى أرقام الأسطر، فإنه لا يزال من الممكن تشغيل التعليمات البرمجية بأرقام الأسطر في QBASIC.
أرقام الأسطر والأسلوب
كان ترك فجوات بين أرقام الأسطر المتعاقبة مسألة تتعلق بأسلوب البرمجة ، إن لم تكن ضرورة صريحة، في هذه اللغات - أي أن المبرمج سيستخدم التسلسل (10، 20، 30، ...) بدلاً من (1، 2، 3، ...). سمح هذا للمبرمج بإدراج سطر من التعليمات البرمجية في وقت لاحق. على سبيل المثال، إذا تم ترك سطر من التعليمات البرمجية بين السطرين 20 و 30، فقد يقوم المبرمج بإدراج السطر المنسي عند رقم السطر 25. إذا لم تُترك أي فجوات في الترقيم، فسيُطلب من المبرمج إعادة ترقيم السطر 3 وجميع الأسطر اللاحقة من أجل إدراج السطر الجديد بعد السطر 2. بالطبع، إذا احتاج المبرمج إلى إدراج أكثر من تسعة أسطر إضافية، فسيكون إعادة الترقيم مطلوبًا حتى مع الترقيم الأقل كثافة. ومع ذلك، سيقتصر إعادة الترقيم هذا على إعادة ترقيم سطر واحد فقط لكل عشرة أسطر مضافة؛ عندما يجد المبرمج أنه يحتاج إلى إضافة سطر بين 29 و30، فلن يحتاج إلا إلى إعادة ترقيم السطر 30 ويمكن ترك السطر 40 دون تغيير.
تحتوي بعض لغات البرمجة الأساسية على أمر RENUM ، والذي يعمل عادةً على تنفيذ البرنامج (أو جزء محدد منه)، لإعادة تعيين أرقام الأسطر بزيادات متساوية. كما يعمل أيضًا على إعادة ترقيم جميع الإشارات إلى أرقام الأسطر تلك حتى تستمر في العمل بشكل صحيح.
في برنامج كبير يحتوي على برامج فرعية ، يبدأ كل برنامج فرعي عادةً عند رقم سطر كبير بما يكفي لإفساح المجال لتوسيع البرنامج الرئيسي (والبرامج الفرعية السابقة). على سبيل المثال، قد تبدأ البرامج الفرعية عند الأسطر 10000، 20000، 30000، وما إلى ذلك.
أرقام الخطوط وGOTOs
في لغات البرمجة "غير المنظمة" مثل BASIC ، تم استخدام أرقام الأسطر لتحديد أهداف عبارات التفرع . على سبيل المثال:
1 S = 0 : N = -1 2 أدخل "أدخل رقمًا للإضافة، أو 0 للإنهاء" ؛ I 3 S = S + I: N = N + 1 : إذا كان I <> 0، فانتقل إلى 2 4 اطبع "SUM=" ؛ S: اطبع "AVERAGE=" ؛ S / N
قد يؤدي التفرع على غرار GOTO إلى تطوير أكواد السباغيتي . (انظر تعتبر ضارة ، البرمجة المنظمة .) حتى في بعض الإصدارات اللاحقة من BASIC التي لا تزال تفرض أرقام الأسطر، تم التخلص التدريجي من استخدام GOTOs التي يتم التحكم فيها بأرقام الأسطر كلما أمكن ذلك لصالح هياكل أنظف مثل حلقة for وحلقة while .
تتضمن العديد من اللغات الحديثة (بما في ذلك C و C++ ) نسخة من عبارة GOTO؛ ومع ذلك، في هذه اللغات يتم تحديد هدف GOTO بواسطة تسمية السطر بدلاً من رقم السطر.
أرقام الأسطر وأخطاء بناء الجملة
إذا أدخل مبرمج خطأ في بناء الجملة في برنامج ما، فسيقوم المترجم (أو المفسر ) بإبلاغ المبرمج بأن محاولة التجميع (أو التنفيذ) فشلت عند رقم السطر المحدد. وهذا يبسط مهمة العثور على الخطأ بشكل كبير بالنسبة للمبرمج.
يظل استخدام أرقام الأسطر لوصف موقع الأخطاء أمرًا قياسيًا في أدوات البرمجة الحديثة، على الرغم من عدم اشتراط تحديد أرقام الأسطر يدويًا مطلقًا. إنه أمر بسيط بالنسبة للبرنامج أن يحسب الأسطر الجديدة في ملف المصدر ويعرض رقم سطر يتم إنشاؤه تلقائيًا كموقع للخطأ. في بيئات التطوير المتكاملة مثل Microsoft Visual Studio أو Eclipse أو Xcode ، حيث يتم دمج المترجم عادةً مع محرر النصوص، يمكن للمبرمج حتى النقر نقرًا مزدوجًا فوق خطأ ونقله مباشرة إلى السطر الذي يحتوي على هذا الخطأ.
انظر أيضا
مراجع
- ^ "6.10.4 التحكم في الخط". 2008-01-30. مؤرشف من الأصل في 2011-07-08 . تم الاسترجاع 2008-07-03 .
- ^ "الاختلافات بين GW-BASIC و QBasic". 2003-05-12 . تم الاسترجاع في 2008-06-28 .
- ^ قسم أبحاث البرمجة، شركة آي بي إم للآلات التجارية (8 أبريل 1957). نظام الترميز التلقائي فورتران لجهاز آي بي إم 704 EDPM: دليل التشغيل الأولي (PDF) . ص 6-37.
{{cite book}}:|last1=له اسم عام ( مساعدة ) - ^ Backus, John Warner ; Beeber, RJ; Best, Sheldon F.; Goldberg, Richard ; Herrick, Harlan L.; Hughes, RA; Mitchell, LB; Nelson, Robert A.; Nutt, Roy ; Sayre, David ; Sheridan, Peter B.; Stern, Harold; Ziller, Irving (1956-10-15). Sayre, David (ed.). نظام الترميز التلقائي FORTRAN لجهاز IBM 704 EDPM: دليل مرجعي للمبرمج (PDF) . نيويورك، الولايات المتحدة الأمريكية: قسم العلوم التطبيقية وقسم أبحاث البرمجة، شركة آي بي إم ماشينز كوربوريشن . ص. 46. مؤرشف من الأصل (PDF) في 2022-07-04 . تم الاسترجاع في 2022-07-04 .(2+51+1 صفحة)
