fortran symbols n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
FORTRAN Symbols رموز لغة فورتران PowerPoint Presentation
Download Presentation
FORTRAN Symbols رموز لغة فورتران

play fullscreen
1 / 59

FORTRAN Symbols رموز لغة فورتران

1034 Views Download Presentation
Download Presentation

FORTRAN Symbols رموز لغة فورتران

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. FORTRAN Symbolsرموز لغة فورتران تشمل رموز فورترانFORTRAN Characters ما يلي : (1) الحروف الأبجدية : تتمون حروف فورتران 77 من الحروف الإنجليزية الكبيرة أو الصغيرة C,B,A إلى Z وc,b,a إلى z . (2) الأرقام الحسابية العربية الأصل : 1,2,3,…,9 (3) الرموز الخاصة Special Characters مثل : $ اشارة دولار Dollar Sign B فراغ Blank (Space) . فاصلة عشرية Decimal Point , فاصلة عادية Comma ( قوس أيسر Left Parenthesis ) قوس أيمن Right Sign = إشارة مساواة Equal Sign + إشارة زائد Plus Sign - إشارة ناقص Minus Sign * نجمة Asterisk ** Double Asterisk / شرطة Slash ‘ ‘ حاصرة عليا Quotation Mark : نقطتا تفسير Colon

  2. الثوابت في لغة فورتران Constants وهي عبارة عن أعداد رقمية تمثل سلسة من الارقام الحسابية من 0 إلى 9 والتي يمكن أن تحتوي على فاصلة عشرية كما يمكن أن يحمل الإشارة السالبة أو الموجبة ، وهناك نوعان من الثوابت العددية في لغة فورتران : (أ) الثوابت العددية ذات الفاصلة العشرية الثابته Fixed-Point Constants وهذا النوع من الثوابت العددية ، يشمل الأعداد الصحيحة Integers ، فقط ويكتب بدون فاصلة عشرية ، حيث انه يخلو من الكسر العشري والامثلة التالية توضح ذلك 31 1000 -16 +47 0 (ب) الثوابت العددية ذات الفاصلة العشرية العائمةFloating-Point Constant وتتكون من الأرقام الحسابية 9….,2,1,0 والنقطة العشرية أي الاعداد الحقيقية الكسرية مثل 74.0 ، 23.65 ، 0.0 ويمكن أن تسبق بإشارة + أو – قبلها مثل + 43.0 ،– 53.5

  3. معرف الثوابت الجماعي PARAMETER من مميزات فورتران 77 أنها تتيح تسمية الثوابت العددية في بداية البرنامج ويمكن استخدام هذه الأسماء ، في أي مكان من البرنامج ، عند الحاجة إليها ، فمثلاً يمكن تعريف النسبة التقريبية π والتي تساوي 3.14159 بالاسم PI في بداية برنامج يحسب مساحة دائرة A ومحيطها C من نصف قطرها المعلوم R ويتم ذلك على الصورة التالية : PARAMETER (PI = 3.14159) READ*, R A = PI * R * R C = 2.0 * PI * R PRINT* , A, C END

  4. الثوابت المنطقية Logical Constants وهي ثوابت يمكن تحديدها بإحدى القيمتين الآتيتين : قيمة حقيقية TRUE ، و قيمة زائفة FALSE الثوابت المركبة Complex Constant الثابت المركب : هو ثابت عددي ذو فاصلة عشرية عائمة وهو مكون من جزأين يسمى احدهما الجزء الحقيقي Real Part ويسمى الآخر بالجزء التخيلي Imaginary Part ويكتب عادة بين قوسين ويفصل بين جزئيه هذين بفارزة والمثال التالي يوضح ذلك مثال : (3.2,-1.86) يعبر عن القيمة العددية المركبة : 3.2 – 1.86i حيث I = -1 الثوابت الرمزية String Constants وهذه تتكون من سلسلة أو عدد من الرموز تكون بين حاصرتين علويتين مثل ‘TABLE’ , ‘ QUALITY’ , ‘AMOUNT’

  5. المتغيرات Variables (أ) المتغيرات الصحيحة Integer Variables وهي المتغيرات التي تستخدم لتخزين الثوابت العددية الصحيحة وهي تخضع للقواعد التالية : 1- يبدأ الاسم بأحد الأحرف الآتية : I, J, K, L, M, N فمثلا الأسماء التالية : MASS, K5, I, J6, JM, KK, NUM تعتبر أسماء لمتغيرات صحيحة الأعداد 2- يتكون اسم المتغير صحيح العدد من حروف أبجدية فقط (A-Z) وأرقام عشرية من 0 إلى 9 3- لا يزيد اسم المتغير عن ستة رموز حرفية رقمية

  6. (ب) المتغيرات الحقيقية Real Variables وهي تستخدم لخزن الأعداد الحقيقية المحتوية على كسور عشرية في الذاكرة. ويخضع اسم المتغير الحقيقي للقواعد التالية 1- اسم المتغير الحقيقي يبدأ بحرف أبجدي يختلف عن الحروف الستة الواردة في الفقرة السابقة وهي : I, J, K, L, M, N 2- يتكون اسم المتغير الحقيقي من حروف أبجدية فقط (A-Z) وأرقام حسابية من 0 إلى 9 3- لا يزيد اسم المتغير عن ستة رموز حرفية رقمية أيضاً العلاقة بين المتغيرات العددية الصحيحة والمتغيرات غير الصحيحة : REAL A,B INTEGER N READ *, A,B,N D = (B-A)/N PRINT *, A,B,N,D END

  7. الباب الرابعكنموذج تخطيط برنامج فورتران fortran programming form يقوم المبرمج بكتابة برنامج فورتران ، على كشف خاص ، يسمى نموذج تخطيط برنامج فورتران ، ينقسم رأسياً : إلى ثمانين عموداً كالبطاقة المثقبة تماماً ، وأفقياً : إلى خمسة وعشرين سطراً ، وكل سطر من هذه السطور يمكن تمثيله ببطاقة مثقبة ، وتنقسم الأعمدة في نموذج التخطيط إلى مجموعة من الحقول هي : عمود 1 يمثل حقل الملاحظات ، فعند طبع حرف c في هذا العمود ، فإن هذا يعني أن محتوى هذا السطر ، يؤخذ على أساس أنه ملحوظة للإيضاح ، ليس لها أي دور تنفيذي في البرنامج . الأعمدة 1-5 : تمثل حقل رقم الجملة .

  8. العمود 6: يمثل حقل الاستمرارية ، ويستخدم عند الحاجة لكتابة جملة ما ، قي أكثر من سطر واحد ، فالعمود السادس للسطر الأول من الجملة يكون فارغاً ، بينما العمود السادس للسطر التالي ، يمكن أن نضع فيه أي رمز سوى الصفر ، ومن المستحسن أن يحمل رقم تسلسل السطور . الأعمدة 7-72 : تمثل حقل الجمل في البرنامج المصدري ، ومن الجدير بالذكر ، أن الجملة في لغة فوتران ، يمكن أن تبدأ من أي عمود من هذا الحقل ، فمثلاً يمكن أن نبدأ بكتابة جملة من العمود 10 . الأعمدة 73-80 : تمثل حقل ملاحظات ، يستخدمها المبرمج لأغراض خاصة ، غير البرنامج .

  9. input statements جمل الإدخال جمل الإدخال نوعان : ( أ ) الجملة الحسابية : وهي التي سبق ذكرها ، في الفصل الثالث ، وتعتبر إحدى طرق إدخال المعطيات إلى ذاكرة الحاسب ، وتكون الجملة ، كغيرها من الجمل ، جزءاً من البرنامج *مثال (1) الجملة الحسابية :A = 5.8 تبين كيفية تخزين الثابت العددي الحقيقي 5.8 في موقع تخزين المتغيرA في وحدة الذاكرة . إلا أن هذه الطريقة ، تصلح فقط عند إدخال عدد قليل من المعطيات ، التي تستعمل لابتداء البرنامج ، ولا يحبذ استعمالها حين الحاجة إلى عدد كبير من المعطيات ، وكذلك الأمر في حالة تبديل المعطيات بسبب استعمال البرنامج لأغراض أخرى .

  10. ( ب ) جملة القراءة READ Statement وتستخدم هذه الجملة ، لإدخال المعطيات ، وقيم الثوابت والمتغيرات ، عندما يكون عددها كبيراً، وهي نوعان : الأول : جملة القراءة غير المصاغة ، والثاني جملة القراءة المصاغة ونبحث في هذا الفصل ، النوع الأول من جمل القراءة ، الذي ستعمل بكثرة ، في لغة فوتران 77 ، ونؤجل البحث ، في النوع الثاني ، ونفرد له فقرة خاصة في نهاية الكتاب بإذن الله . والصورة التالية : تبين الصيغة العامة لجملة القراءة غير المصاغة : READ * ,Variables Names

  11. OUTPUT STATEMENTSجمل الإخراج جملة الطباعة PRINT STATEMENT وتستخدم هذه الجملة ، لطباعة نتائج العمليات الحسابية ، التي يجريها الحاسب ، كما تستخدم لطباعة قيم المعطيات المدخلة إلى الحاسب أيضاً ، وذلك لغرض التأكد من صحة عملية إدخالها والصيغة العامة لها، PRINT * ,LIST ويوجد نوعان من جمل الطباعة ، النوع الأول : جملة الطباعة غير المصاغة ، وهي موضوع بحثنا هنا ، والنوع الثاني : جملة الطباعة المصاغة . مثال ( 2 ) : لطباعة قيم المتغيرات الواردة في المثال السابق ، فإن جملة الطباعة المطلوبة ، تأخذ الشكل التالي : PRINT *, A, B, N وتظهر هذه القيم عند طباعتها ، على الصورة التالية : 12.652.31200

  12. مثال ( 3 ) : اكتب برنامجاً صغيراً ، تحسب فيه طول وتر مثلث قائم الزاوية ، C ، طول كل من ضلعية الآخرين هو : B = 4 A = 3 الحل : من المعلوم في الجبر ، أن طول الوتر C ، يحسب حسب نظرية فيثاغورس من المعادلة : ويكون شكل البرنامج المطلوب هو : READ *, A, B C = SQRT ( A * A + B * B ) PRINT *, A, B, C END حيث تقوم الجملة الأولى ، بقراءة قيمتي A و B على النحو : 3.0 4.0 ثم تقوم الجملة الثانية بحساب قيمة C ، من معادلة فيثاغورس ، بينما تقوم الجملة الثالثة بطباعة قيمة كل من B,A ثم C ، على الترتيب ، وعلى الصورة التالية : 3.0 4.0 5.0 وتكون مسؤولية الجملة الأخيرة ، هي إيقاف البرنامج .

  13. * كيفية استخدام جملة الطباعة لطباعة العناوين والأسماء : مثال ( 4 ) : إذا أردنا ، أن تظهر أسماء المتغيرات ، الواردة في المثال السابق ، مع قيمها ، لغرض التوضيح ، يمكن أن نعدل جملة الطباعة الواردة ، إلى الصورة التالية : PRINT * , ‘A =’, A, ‘B =’ ,B, ‘C =’ ,C وتظهر النتائج على الصورة التالية : A = 3.0 B = 4.0 C = 5.0 بهذا يتبين ، أننا نستطيع طباعة اسم أي متغير ( مهما كان طوله ) ، أو عنوان ، أو رسالة توضيحية ، وذلك بوضعها ، في جملة طباعة ، بين حاصرتين علويتين ، فتظهر في النتائج ، على الصورة الواردة بين هاتين الحاصرتين بالضبط . ولا تظهر الحاصرتان في الطباعة .

  14. مثال ( 5 ) : اكتب برنامجاً ، بلغة فورتران ، لحساب معدل علامات طالب ، في المواد الآتية : المادة العلامة الدين ( R ) 95 العلوم ( S ) 100 اللغة العربية ( A ) 85 اللغة الإنجليزية ( E ) 90 الحل: لإيجاد معدل العلاماتAVRAGE نجد مجموع العلامات SUM أولاً ثم نقسم المجموع على عدد المواد أي على 4 . ويكون البرنامج ، بلغة فوتران ، على النحو التالي : REAL R , S , A , E READ * , R , S , A , E SUM = R + S+ A + E AVRAGE = SUM / 4 PRINT *, AVRAGE END * مثال ( 6) : اطبع الرسالة التالية ، كعنوان لجدول علامات طلاب صف : GRADES OF STUDENTS ARE : الحل : نحتاج لطباعة هذه الرسالة ، جملة طباعة واحدة ، تأخذ الصورة التالية: PRINT * , 'GRADES OF STUDENTS ARE : ‘ وتظهر الرسالة مطبوعة على الصورة المطلوبة على النحو التالي : GRADES OF STUDENTS ARE :

  15. جمل التعريف DECLARATION STATEMENTS وهي جمل ، غير تنفيذية ، وجميعها ، عدا جملتي التعليق COMMENT والنهاية END تستخدم لبيان كيفية خزن المعطيات والمعلومات . وأبرز هذه الجمل مايأتي : 4.4.1 جمل التعليق والإيضاح COMMENT STATEMENTS تستخدم هذه الجمل ، لغرض توضيح بعض أجزاء البرنامج ، مما يجعل خطوات سير البرنامج ، واضحة للمبرمج نفسه ، ولأي شخص آخر يطلع على البرنامج ، بقصد الاستفادة منه أو لإجراء أي تعديل عليه ، في غياب المبرمج ، وتأتي مثل هذه الجمل ، في أي موقع من البرنامج ، ويستخدم لهذا الغرض الحرف ( C ) في العمود الأول في بداية جملة التعليق ، وعند الحاجة ، إلى كتابة جملة تعليق طويلة ، تحتاج أكثر من سطر واحد ، يمكننا متابعة كتابة الجملة ، في السطور التالية لهذا السطر ، على أن يبدأ كل سطر من هذه السطور بالحرف(C). ويجب ملاحظة أنه لا دخل لجمل التعليق ، بخطوات تنفيذ البرامج ، إذ هي جمل توضيحية ، تطبع ضمن البرنامج ، لكنها ليست جزاءً منه ، إذ يمكن حذفها من البرنامج دون إحداث أي تأثير في البرنامج . مثال ( 7 ) : C THIS PROGRAM IS USED TO SOLVE A C QUADRATIC EQUATIINO : A X + B X + C = 0 C FOR GIVEN VALUES OF A , B AND C . . . . . . . . . . . . . . . . . . STOP END

  16. 2 جملة النهاية END STATEMENT كل برنامج بلغة فوتران ، ينبغي أن ينتهي بجملة النهاية END ، ولا يجوز كتابة أي جملة أخرى ، بعدها ، وقد تكون جملة غير تنفيذية ، عندما تستخدم لتعني نهاية البرنامج ( انظر المثال السابق ) . وقد تستخدم كلمة END ، كجملة تنفيذية ، تعمل عمل STOP لإيقاف البرنامج ، وذلك عندما يكون البرنامج ، من النوع متتالي أو متتابع الخطوات ، أي أنه ليس فيه فروع جانبية ، بل يسير خطا واحد من الجملة الأولى ، حتى جملة END ، كما في المثالين ( 3 ) و( 5 ) . 4.4.3 جملة نوع المتغير TYPE STATEMENT وتستعمل هذه الجملة ، من أجل تحديد نوع المتغيرات المستخدمة ، داخل البرنامج ، وتأخذ الصورة التالية : T LIST حيث T تمثل نوع المتغيرات في القائمة المرافقة List وهذه الأنواع هي : للمتغيرات الصحيحة INTEGER للمتغيرات الحقيقية REAL للمتغيرات ذات الدقة المضاعفة DPUBLE PRECISION للمتغيرات المركبة COMPLEX للمتغيرات المنطقية LOGICAL

  17. مثال (8) : INTEGER A, B, X REAL N, K COMPLEX Z, S, T LOGICAL Y, W, R السطر الأول من هذا المثال يعني أن المتغيرات X, B, A تعامل على أنهما متغيرات عددية صحيحة والسطر الثاني يعني أن المتغيرين N و K يعاملان على أنهما متغيران عدديان حقيقيان . والسطر الثالث يعني أن المتغيرات T, S, Z تعامل على أنهما متغيرات عددية مركبة . والسطر الأخير يعني أن المتغيرات R, W, Y هي متغيرات منطقية غير عددية . 4.4.4 جملة الأبعاد DIMENSION STATEMENT تستعمل هذه الجملة ، عندما يحتوي البرنامج ، على مصفوفات Matrices ، وذلك لتحديد مواقع التخزين ، في وحدة الذاكرة ، لهذه المصفوفات ، إذ أن كل عنصر من عناصرها ، يتطلب موضعاً محدداً لخزنه ، فيلا وحدة الذاكرة ، وتأخذ الصورة العامة التالية : DIMENSION LIST حيث تمثل LIST أسماء المصفوفات المراد حجز أماكن محددة لها في وحدة التخزين . مثال ( 9 ) : جملة الأبعاد : DIMENSION A(10) , B(5, 3) لو فرضنا أن المصفوفتين A و B هما :

  18. 4.5تمارين محلوله 4.1 جد الأخطاء في جمل الإدخال ، والإخراج ، الآتية : ( أ ) READ* M, N ( ب ) PRINT, X, Y ( ج) READ*, A, B, C ( د ) PRINT*, X,Y,Z, الحل : أ – ينبغي أن تلي النجمة فارزة . ب – ينبغي أن يوضع نجمة بعد PRINT . ج – ليس فيها أخطاء . د – ينبغي إزالة الفارزة بعد المتغير Z .

  19. 4.2 في تجربة لإيجاد الأوزان الجزئية للمركبات الكيماوية وجد أن الأوزان الجزئية لكل من المركبات الآتية ، كما في الجدول التالي: المركب الوزن الجزئي MW كلوريد الصوديوم NaCI58 اكسيد المغنسيوم Mgo 56 نيترات البوتاسيوم KNO3101   بين كيف يمكن كتابة نتائج هذه التجربة ، بحيث يظهر الوزن الجزئي ، مع اسم مركب بحيث : أ – يظهر اسم المركب ووزنه الجزيئي للمركبات، جميعها، في سطر واحد ب – يظهر اسم المركب مع وزنه الجزيئي في سطر مستقل . الحل : ( أ ) وتظهر النتائج حسب جملة الطباعة الصورة التالية : PRINT*, ' MW OF NACL = ' , NACL, 'MW OF MGO =' , MGO, 'MW OF KNO3 =' , KNO3 MW OF NACL =58 MW OF MGO =56 MW OF KNO3= 101 (ب)  PRINT *, ' MW OF NACL = ' , NACL PRINT *, 'MW OF MGO =' , MGO PRINT *, 'MW OF KNO3 =' , KNO3  وتظهر النتائج على الصورة التالية : MW OF NACL = 58 MW OF MGO = 56 MW OF KNO3 = 101

  20. 4.3 إذا علمت أن قيم كل من X و Y هي -3.16,2.65 على الترتيب ، اكتب برنامجاً تحسب فيه الإقترانات الآتية : على أن تتضمن صيغة إخراج النتائج اسم المبرمج ، وبحيث تطبع قيمة كل متغير من المتغيرات U,T,Z,W في سطر مستقل . الحل : يكون البرنامج المطلوب على الصورة التالية : REAL X, Y, Z, W, T, U READ *, X, Y W = SQRT (2. * X ) Z = SQRT(3*X**2-Y**2) T = w * sin (z) U = T / (W * Z) PRINT *, 'HMAD MANSOUR' PRINT *, 'W =' , W PRINT *, 'Z =' , Z PRINT *, 'T =' , T PRINT *, ' U =' , U END وتكون نتائج البرنامج على النحو التالي : AHMAD MANSOUR W = 2.30 Z = 3.33 T = -0.43 U = -0.06

  21. 4.4 اكتب برنامجاً بلغة فورتران لقراءة قيم أربعة متغيرات Z4, Z3, Z2, Z1لحساب أ – المتوسط الحسابي A من المعادلة A= ( Z1 + Z2 + Z3 + Z4 ) /4 ب – المتوسط الهندسي G من المعادلة : الحل : REAL Z1 , Z2 , Z3 , Z4 , A , G READ * , Z1 , Z2 , Z3 , Z4 A = ( Z1 + Z2 + Z3 + Z4 )/ 4.0 G = ( Z1 * Z2 * Z3 * Z4 )** (1.0/4.0) PRINT * , A , G END

  22. 4.5 إذا علمت أن المساحة السطحية S ، والحجم VOL ، لصندوق أبعاده : C , B , A موصوفان بالعلاقتين : S = 2 (AB + BC + CA) ، VOL = ABC على التوالي . افرض أن قيم كل من C , B , Aهي : 6.4, 12.1, 31.2 على التوالي ، اكتب برنامجاً لحساب كل من المساحة السطحية ، والحجم . الحل : يمكن كتابة البرنامج على الصورة التالية : REAL A, B, C, S, VOL READ *, A, B, C S = 2. * (A * B + A * C + B * C) VOL = A * B * C PRINT *, A, B, C, S, S, VOL STOP END

  23. تمارين عامة 4.1 جد الأخطاء في جمل الإدخال ، والإخراج الآتية ثم صححها : ( أ ) READ X / Y ( ب ) PRINT , A , B , N ( ج ) PRINT P * Q ( د ) READ * S , T , R 4.2 إذا علمت أن قيم كل من C . B . A هي على التوالي: 2.5, -10.1, 6.3 اكتب برنامجاً: تحسب فيه قيم كل من V , S , W وفقاً للمعادلات الآتية ، ثم بين الصورة التي تطبع فيها النتائج :

  24. 4.3 المتغيرات Z , Y , X هي اقترانات بدلالة المتغير t ، ومعرفة على النحو التالي: اكتب برنامجاً بلغة فوتران تقرأ فيه قيم المتغير t ثم تحسب قيم كل من z, y, x لكل قراءة ، ثم اطبع قيمة كل من z , y , x , t في جدول مرتب على النحو : 4.4 افرض أن السيارة تتحرك من السكون وبتسارع ثابت مقداره a ، اكتب برنامجاً بلغة فورتران لحساب السرعة النهائية والمسافة التي تقطعها السيارة في قترة زمنية مقدارهاt وحدة زمنية ، علماً بأنه يمكن حساب السرعة والمسافة من المعادلتين الآتيتين :

  25. 4.5 أراد شخص أن يدفع زكاة ماله M ، والذي مر عليه حول قمري ، وبلغ النصاب ، اكتب برنامجاً تقرأ فيه قيمة المال ، وتحسب فيه مستحقات الزكاة Z ، ثم اطبع النتائج ، إذا علمت أن نسبة الزكاة ، تبلغ 25% من المال . 4.6 مثلث قائم الزاوية طول كل من ضلعية ، 4.5 ، 3.7 على التوالي ، اكتب برنامجاً يقرأ فيه أطوال الأضلاع المعلومة ، ويحسب طول الوتر ، ومساحة المثلث ، والزاويتين المقابلتين للضلعين ، ثم اطبع النتائج بحيث تطبع لكل نتيجة العنوان المناسب . 4.7 أقرضت مؤسسة ربوية شخصاً 25000 دينار ، واشترطت عليه أن يدفعه بعد 20 سنه أضعافاً مضاعفة وذلك حسب العلاقة الربوية التالية : S = P(1-i)2 حيث : P : قيمة المال الحالية المعطاة للشخص . I : نسبة الربا ، وتساوي 18% . S : قيمة المال المطلوبة من الشخص بعد انتهاء مدة القرض . N : مدة القرض اكتب برنامجاً ، يقرأ قيمة القرض ، ونسبة الربا ، وعدد سنوات القرض ، ثم يحسب قيمة المال المطلوبة ، في نهاية المدة ، ثم يطبع النتيجة النهائية .

  26. 4.8 اكتب برنامجاً بلغة فورتران يقرأ نصف قطر وطول اسطوانة غاز ، ثم يحسب حجم الغاز داخل الأسطوانة ، ثم يطبع رقم كل اسطوانة ونصف قطرها وطولها وحجم الغاز فيها في سطر واحد . ثم أرسم خريطة سير العمليات التي تمثل البرنامج . 4.9 اكتب برنامجاً بلغة فورتران لحساب عدد السكان P ، باستخدام معادلة النمو السكان التالية : حيث Po تمثل عدد السكان الحالي ويساوي 100.000 . T تمثل الزمن ويساوي هنا 5 سنوات . 4.10 إذا كانت قيمة X تساوي 3.5 ، فاكتب برنامجاً بلغة فوتران تحسب فيه قيمة Y من المعادلة التالية : ثم تطبع النتائج معنونة باسم المتغير X مع قيمته في سطر واحد .

  27. 4.11 اكتب برنامجاً بلغة فورتران تحسب فيه قيمة الضغط P من معادلة الغازات التالية : حيث ( C, B, A, T, R ) ثوابت عددية ، علماً بأن قيمة الحجم V تساوي 1 . 4.12 إذا كان تصنيف العلامات لجامعة ما هو على الترتيب التالي: معدل العلامات ( Mark ) درجة المساق من 4 ( Grade ) 90-100 (Excellent)4 80-89 (Very Good)3 70-79 (Good) 2 60-69 (Pass) 1 59 and below (Fail) 0 فأكتب برنامجاً بلغة فورتران لحساب درجة أي طالب حسب ما حصل علية من علامات ، وطباعة درجته وبجانبها تقدير الطالب .

  28. الباب الخامس 5.1 مقدمة قد تقضي إحدى خطوات البرنامج ، أن ننتقل منها إلى جمل أخرى في البرنامج ، تكون قبلها أو بعدها ، وذلك لتنفيذ بعض العمليات اللازمة ، قبل الإنتقال إلا خطوة جديدة ، وهذه الجمل لها صيغ مختلفة ، تختلف بإختلاف الغرض الذي تستخدم من أجله ، وأهمها الجمل التالية : 5.2 جملة الانتقال غير الشرطية وتأخذ الصيغة العامة : GOTO N حيث : يمثل n رقم الجملة ، التي سينتقل الحاسب لتنفيذها تنفيذاً للإيعاز GO

  29. مثال (1) : اكتب برنامجاً لحساب مساحة مثلث ، طول قاعدته B = وارتفاعه H = ثم كرر هذه العملية ، لعدد من البطاقات الإدخال ، حيث ، أن كل بطاقة ، تمثل معطيات جديدة لمثلث آخر جديد خطوات الحل هي : ( 1 ) ابدأ ( 2 ) اقرأ قيمة القاعدة B ، والارتفاع H ( 3 ) احسب المساحة A من قانونها : A = BH/2 ( 4 ) اطبع النتيجة A ، مع القاعدة B ، والارتفاع H ( 5 ) عد إلى الخطوة ( 2 ) لقراءة أبعاد أخرى ، لمثلث آخر جديد ، وهكذا تتكرر العملية الأولى ، طالما زودنا الحاسب ببطاقات أخرى ، لمثلثات جديدة . أما البرنامج فيكون على النحو التالي : REAL B, H, A 6 READ *, B, H A = B * H / 2.0 PRINT *, A, B, H GO TO 6 ملاحظة : من الجدير بالملاحظة، أننا لم نستعمل هنا ، جملة STOP لإيقاف البرنامج ، ذلك بأننا لسنا بحاجة إليها ، لأن البرنامج يتوقف ذاتياً ، عند انتهاء قيم المعطيات ، لآخر مثلث ، ويبقى مستمراً مادام هناك معطيات وقيم جديدة .

  30. مثال (2) : اكتب برنامجاً لحساب الحجم V والمساحة السطحية S والمساحة الكلية T ، لمخروط قائم ، بحيث تكون قيم نصف قطر القاعدة ، مرتبة كالآتي 0.5, 1.3, 2.4, 3.0 ، علماً بأن ارتفاعه H ، يساوي 6.3 الحل : المعادلات المطلوبة هي : أما البرنامج فيأخذ الشكل التالي : REAL PIE, H, B, R, V, S, T PARAMETER ( PIE = 3.14, H = 6.3) 10 READ *, R V = (PIE * R ** 2. * H) / 3. S = PIE * R * SQRT (R ** 2. + H ** 2.) T = PIE * R * (R **2. + H ** 2.)) PRINT *, 'FOR R=' , R, 'V =' , V, 'S = ' , S, ' T =' , T GO TO 10 STOP END وتكون النتائج على الصورة التالية : FOR R = 0.5 V = 0.16493E01 S = 0.99271E01 T = 0.10712E02 FOR R = 1.3 V = 0.11149E02 S = 0.26271E02 T = 0.31581E02 FOR R = 2.4 V = 0.38000E02 S = 0.50831E02 T = 0.68926E02 FOR R = 3.0 V = 0.59736E02 S = 0.65764E02 T = 0.94038E02

  31. 5.3 جملة الانتقال الشرطية وتأخذ الصورة العامة : GO TO (n1 , n2 , n3 …. nm), i حيث n2 , n1 … إلى nm : تمثل أرقام جمل يتم الانتقال إلى تنفيذها ، حسبالإيعاز GO TO أما i فتمثل متغيراً عددياً صحيحاً، وتكون دائماً موجبة ، بحيث : إذا كانت قيمة i تساوي m فإن الجملة التالية في التنفيذ هي جملة رقم n1 أما إذا كانت قيمة i تساوي m فإن الجملة التالية في التنفيذ هي جملة رقم n2 وهكذا . مثال (3) : GO TO ( 10, 15, 20, 25 ) , J 10 . . . . . . 15 . . . . . . 20 . . . . . . 25 . . . . . . فعندما تكون J=1 : ينتقل تسلسل تنفيذ الجمل إلى جملة رقم 10 وعندما تكون J=2 : ينتقل تسلسل تنفيذ الجمل إلى جملة رقم 15 وعندما تكون J=3 : ينتقل إلى جملة رقم 15 وعندما تكون J=4: ينتقل إلى جملة رقم 25

  32. مثال ( 4 ) توفر إحدى الجامعات سكناً لأعضاء هيئة التدريس فيها ، مقابل أجور مبينة على النحو التالي : نوع السكنالأجرة بالدينار سكن 1140 سكن 270 سكن 350 اكتب برنامجاً تحسب فيه صافي الراتب NS بعد اقتطاع أجور السكن من الراتب S لكل من أعضاء هيئة التدريس في الجامعة . الحل : البرنامج يكون على النحو التالي : INTEGER ID, N REAL NS, S 2 READ *, ID, S, N GO TO ( 4, 6, 8 ) , N 4 NS = S - 140. GO TO 9 6 NS = S - 70 GO TO 9 8 NS = S - 50. 9 PRINT *, ID, NS GO TO 2 STOP END

  33. مثال ( 5 ) : اكتب برنامجاً لحساب قيمة W من المعادلات الآتية إذا علمت أن قيم كل من : Z, Y, X ، معلومة لديك ، وإذا علمت أيضاً ، أن هذه المعادلات تمثل حالات مختلفة عن بعضها البعض . المعادلات هي : W = 10 SIN (xyz) إذا كانت K=1 W = X2 + Y2 + Z2إذا كانت K = 2 W = (X3 – Y)(Z3 + Y) إذا كانت K = 3 W = 3xy + ezx +1 إذا كانت K = 4 W = 2tan-1 (xy / z) إذا كانت K = 5 إضافة إلى أن z لا تساوي صفراً W = x + 2y-4z+3 إذا كانت K = 6 INTEGER K REAL X, Y, Z READ *, K READ *, X, Y, Z GO TO ( 1, 2, 3, 4, 5, 6 ) , K 1 W = 10. * SIN (X * Y * Z) GO TO 100 2 W = X ** 2. +Y ** 2. + Z ** 2. GO TO 100 3 W = ( X ** 3. –Y ) * ( Z ** 3. + Y ) GO TO 100 4 W = 3. * X * Y + EXP(Z * X) GO TO 100 5 W = 2. * ATAN ( X * Y / Z ) GO TO 100 6 W = X + 2. * Y - 4. * Z + 3. 100 PRINT *, W STOP END

  34. 5.4 جملة (( إذا )) الحسابية وهذه الجملة يتوقف عليها تسلسل تنفيذ جمل البرنامج ، بناء على شروط معينة ، وتأخذ هذه الجملة الصورة العامة التالية : IF (X) N1 , N2 , N3 حيث : تمثل X تعبيراً رياضياً قد تكون قيمته سالبة ، أو صفراً‌ ، أو موجبة : ففي حالة : X سالبة ، تكون جملة التنفيذ التالية هي الجملة رقم n1 وفي حالة: X صفراً ، تكون جملة التنفيذ التالية هي الجملة رقم n2 وفي حالة: X موجبة ، تكون جملة التنفيذ التالية هي الجملة رقم n3 مثال (6) : الجملة الحسابية : IF (X – 3) 7,6,9 تعني ما يأتي : إذا كانت القيمة X = 3 : سالبة أي : X-3<0 ، وهذا يعني أن X<3 في هذه الحالة : تكون الجملة التالية في التنفيذ ، هي الجملة رقم 7 إذا كانت القيمة X - 3 : صفراً أي : X = 3 ، في هذه الحالة : تكون الجملة التالية في التنفيذ ، هي الجملة رقم 6 إذا كانت القيمة X - 3 : موجبة أي : X – 3 > 0 ، وهذا يعني أن X > 3 في هذه الحالة : تكون الجملة التالية في التنفيذ ، هي الجملة رقم 9

  35. مثال ( 7 ) : اكتب برنامجاً لحساب قيمة Y المعروفة بدلالة X على النحو التالي يكون البرنامج لهذه المسألة كما يأتي : REAL X, Y READ *, X IF (X) 2, 3, 4 2 Y = X ** 2. - 3. * X GOTO 20 3 Y = 2. * X + X ** 3. GOTO 20 4 Y = SQRT (4. + 3. * X) 20 PRINT *, X, Y STOP END

  36. 5.5 جملة (( إذا )) المنطقية وتأخذ الصورة العامة التالية : IF (a) S حيث : A : تعبير منطقي قيمته . TRUE . أو FALSE . S : جملة تنفيذية ( غير IF أو DO ) أو رقم الجملة التالية في التنفيذ ، إذا كانت قيمة التعبير المنطقي TRUE . وعندما تكون قيمته التعبير المنطقيFALSE لا يتم تنفيذ S ، ويستمر البرنامج . والتعبير المنطقي يتكون من مجموعة من الثوابت العددية والمتغيرات العددية ونستخدم له رموز العمليات المنطقية الآتية : الرمز بلغة فورتران معناه .EQ. يساوي .NE. لا يساوي .GT. أكبر من .LT. أصغر من .GE. أكبر من تساوي .LE. أصغر من تساوي مثال ( 8 ) : IF ( A . LT . 5. ) GO TO 8 15 . . . . . . 8 . . . . . . معنى هذه الجملة : أنه في حالة A > 5 إذهب لتنفيذ جملة رقم 8 والمشار إليها في جملة IF المنطقية وإلا فاذهب إلى الجملة التالية مباشرة (أي جملة رقم 15 )

  37. مثال ( 9 ) : اكتب برنامجاً تحسب فيه قيمة الاقتران التالي : الحل : يكون البرنامج على النحو التالي : REAL X, Y 2 READ *, X IF ( X .GE. 0. ) GO TO 15 Y = - X GO TO 17 15 Y = X 17 PRINT *, X, Y STOP END وتعني جملة IF المنطقية هنا: أن نذهب لتنفيذ الجملة رقم 15 عندما تكون X أكبر من أو تساوي صفراً ، وإلا نذهب لتنفيذ الجملة التالية بعد جملة IF مباشرة لتنفيذها ، وهنا تكون X أصغر من صفر . ومما تجدر الإشارة إليه هنا ، أنه بإمكاننا أن نجمع أكثر من عملية منطقية في جملة IF الواحدة ، ويسمى التعبير المنطقي ، في هذه الحالة ، تعبيراً منطقياً مركباً ، ونستخدم لذلك أدوات الربط (حروف العطف ) الآتية : AND للجمع بين شرطين OR للتخيير بين شرطين

  38. مثال ( 10 ) IF ( X .GT. 2.0 .AND. X .LT. 12.0 ) Y = X + 1.0 ومعنى هذه الجملة : أنه في حالة 2<X<12 ، أي ( X أكبر من 2 ، وأصغر من 12 ) ، نسحب Y من معادلة الخط المستقيم Y = X + 1 وإن لم يتحقق الشرطان معاً ، فنذهب إلى الجملة التالية بعد جملة مباشرة لتنفيذها. مثال ( 11 ) : IF ( X .GT. 2.0 .AND. X .LT. 12.0 ) GO TO 17 . . . . . . . . . . . . 17 Y = X + 1.0 . . . . . . . . . . . . هذا المثال يكافئ في عمله ، وإجراءاته المنطقية ، المثال السابق ، غير أننا استخدمنا الجملة التنفيذية لحساب Y في الجملة IF المنطقية نفسها ، على حين استخدمنا في هذا المثال جملة الانتقال GO TO 17 ، حيث يمثل 17 رقم الجملة التي نحسب فيها قيمة Y .

  39. جملة إذا . . . فإن IF ( Condition ) THEN . . . . . . . . . . . . . . YES . . . . . . . ENDIF حيث : Condition : هو شرط أو أكثر مطلوب تحقيقه . Yes : جملة أو أكثر يتم تنفيذها إذا تحقق الشرط . ENDIF أو END IF : إشعار بانتهاء تحقق الشرط ومعنى هذه الصيغة أنه إذا تحقق الشرط Condition ، فإنه يتم تنفيذ جميع الجمل التالية لجملة IF ، ولغاية جملة ENDIF وإذا لم يتحقق هذا الشرط ، فإنه يتم الإنتقال فوراً إلى الجمل التالية ل ENDIF

  40. مثال ( 12 ) اكتب برنامجاً لحساب Y ، من المعادلة التالية : الحل : هو البرنامج التالي : REAL X, Y READ *, X IF ( X .GE. 0. ) THEN Y = X PRINT *, Y STOP ENDIF Y = -X PRINT *, Y STOP END

  41. مثال ( 13 ) إذا علمت أن المعادلات التالية تحقق عندما تكون قيمة الثابت A أقل من أو تساوي صفراً . , Y = Z – 2 , وإذا كانت قيمة A موجبة ، فإن : W= 7. , Y = 3. , Z =2 اكتب برنامجاً تحسب فيه كلاً من : W,Y,Z الحل : البرنامج يأخذ الصورة التالية : REAL A, X, Y, Z, W READ *, A, X IF ( A .LE. 0. ) THEN Z = A * X ** 2. + 5. Y = Z - 2. W = SQRT (A * Z) PRINT *, Z, Y, W STOP ENDIF Z = 2. Y = 3. W = 7. PRINT *, Z, Y, W STOP END

  42. 5.7 بنية إذا . . . فإن . . . وإلا الصيغة العامة لهذا الاستعمال هي : IF ( CONDITION ) THEN . . . . . . . . . . YES . . . . . ELSE . . . . . . . . . . NO . . . . . ENDIF حيث : Condition : هو شرط أو أكثر مطلوب تحقيقه . YES : جملة أو أكثر يتم تنفيذها إذا كان جواب الشرط نعم . NO : جملة أو أكثر يتم تنفيذها إذا كان جواب الشرط لا . ومعنى هذه البنية : أنه إذا تحقق الشرط ( Condition ) المطلوب ، يتم الانتقال مجموعة الجمل YES لتنفيذها ، وإلا ( أي إذا كان جواب الشرط لا ) ، فإنه يتم الانتقال إلى الجمل التالية لجملة ELSE فوراً لتنفيذها ، وينتهي عمل بنية IF هذه عند وصول الجملة ENDIF .

  43. مثال ( 14 ) : ولتوضيح عمل هذه البنية ، نعيد حل المثال السابق بإستخدام هذا النوع على النحو التالي : REAL A, X, Y, Z, W READ *, A, X IF ( A .LE. 0. ) THEN Z = A * X * * 2. + 5. Y = Z - 2. * X W = SQRT ( A * Z ) PRINT * , Z, Y, W STOP ELSE Z = 2. Y = 3. W = 7. PRINT *, Z, Y, W ENDIF STOP END

  44. 5.8 بنية (( إذا )) المتداخلة وصيغتها العامة هي : IF ( Coridition 1 ) THEN . . . . . . . . . . YES 1 . . . . . ELSE IF ( Condition 2 ) THEN . . . . . . . . . . YES 2 . . . . . ELSE IF ( Condition 3 ) THEN . . . . . . . . . . YES 3 . . . . . ELSE IF ( Condition n ) THEN . . . . . . . . . . YES n . . . . . ELSE . . . . . . . . . . NO ENDIF حيث : YES 2, YSE 1 إلى YES n مجموعة من الجمل ( جملة أكثر ) يتم تنفيذها فور تحقق الشروط Condition n…Condition 2, Condition على الترتيب . No : جملة أو أكثر يتم تنفيذها عند عدم تحقق الشروط الواردة أعلاه ، وتبدأ بعد جملة ELSE ويمكن ملاحظة أنه بالإمكان حذف أي مجموعة من مجموعات الجمل الواردة إذا كانت مجموعة خالية ( أي غير متحققة ، أو غير موجودة ) ، وفي هذه الحالة يتم الانتقال إلى المجموعة التي تليها حيث ترتيب الجمل في البرنامج ، كما يمكن ملاحظة أن كلا من بنية THEN IF … وبنية THEN..ELSE تعتبر حالة خاصة من بنية IF المتداخلة .

  45. مثال ( 15 ) : اكتب برنامجاً لقراءة قيم كل من سرعة V واللزوجة الحركية NU ، لسائل يجري داخل أنبوب قطره D ، لحساب عدد رينولدز RE ، لهذا السائل ، ومن ثم بين نوع الجريان TYPE حسب التصنيف التالي : عندما يكون : 2100 ≤RE يسمى LAMINAR عندما يكون : 4000 <Re <2100 يسمىTRANSITION عندما يكون : 4000 ≥Re يسمى TURBULENT علماً بأن RE = VD / NU البرنامج : CHARACTER * 10 TYPE REAL V, D, RE INTEGER NU READ *, V, NU, D RE = D * V / NU IF ( RE .LE. 2100. ) THEN TYPE = 'LAMINAR' YES 1 ELSE IF ( RE .LT. 4000.0 .AND. RE .GT. 2100. ) THEN TYPE = 'TRANSTION' YES 2 ELSE IF ( RE .GE. 4000.0 ) THEN TYPY = 'TURBULENT' YES 3 ELSE TYPE = 'UNDEFINED' NO ENDIF PRINT*, 'THE RESUL IS' PRINT *, RE, TYPE STOP END

  46. مثال ( 16 ) لحساب جذور المعادلة التربيعية فإن القانون التالي المستخدم هو : عند إخراج قيمة المميز ، فإننا نحصل على الحالات الآتية : الحالة الأولى : إذا كانت A صفراً ، ( b ≠ 0 ) ، فهناك جذر واحد حقيقي في للمعادلة وهو : -C/b . الحالة الثانية : إذا كان المميز D : موجباً ، فإن جذرين مختلفان وحقيقيان. الحالة الثالثة : إذا كان المميز D : يساوي صفراً ، فإن الجذرين حقيقيان ومتساويان ، وقيمة كل منهما ، هي –b/2a . الحالة الرابعة : إذا كان المميز سالباً ، فإن الجذرين مختلفان ومركبان ( جزء حقيقي وجزء تخيلي ) الحل : يمكن أن يتخذ البرنامج الصورة التالية : READ *, A, B, C C COMPUTE D AND ITS SQUARE ROOT SD D = B * * 2. - 4. * A * C SD = SQRT ( D ) C CASE 1 IF (A. EQ. 0. ) THEN X = -C / B PRINT *, ' THERE IS ONE ROOT ONLY : X =' , X STOP C CASE 2 ELSE IF ( D .GT. 0. ) THEN X1 = ( -B - SD ) / (2. * A ) X2 = ( -B + SD ) / (2. * A ) PRINT * 'FIRST REAL ROOT : X1 =' , X1 PRINT * 'SECOND REAL ROOT : X2 =' , X2 C CASE 3 ELSE IF ( D .EQ. 0. ) THEN X = -B / ( 2. * A ) PRINT *, ‘ FIRST REAL ROOT = SECOND REAL ROOT =’ ,X YES 3 C CASE 4 ( COMPLEX ROOTS ) XR = REAL PART, XI = IMAGINARY PART ELSE XR = -B / ( 2. * A ) X1 = SQRT (-D) / ( 2. * A ) PRINT *, ‘XREAL =’ , XR, ‘XIMAGE =’ , X I END IF END

  47. 5.9 جملة التوقف اللحظي تستعمل هذه الجملة لإيقاف عمل البرنامج بصورة مؤقتة لغرض تبديل نوع ورق الطبع أو قلم الرسم ، أو لأغراض أخرى طارئة ، يحتاجها المبرمج أثناء تنفيذ البرنامج . مثال ( 17 ) : C PLEASE, CHANGE PRINTER PAPER TO GET 10 COPIES PAUSE ومعنى ذلك أننا نطلب من عامل تشغيل الحاسب ، من أجل تغيير ورق الطباعة ، أن يتوقف البرنامج ، برهة كافية ، لتعيير الورق وذلك حسب الإيعاز PAUSE ، وبعد الانتهاء من عملية تبديل الورق المطلوبة يقوم المشغل بإعطاء إيعاز خاص آخر للحاسب . 5.10 جملة التوقف النهائي وهي جملة تنفيذية ، قد تأتي في أي مكان من البرنامج ، الذي قد يحتوي على أكثر من جملة توقف نهائي واحدة ، ويكون هذا عند تعدد الاختيارات في البرنامج ، وتقوم جملة STOP ، فور ورودها بإيقاف البرنامج نهائياً .

  48. 5.11 تمارين محلوله اكتب الجمل الآتية بلغة فورتران : ( أ ) إذا كانت a أكبر من b توقف . ( ب ) إذا كانت x أصغر من y ، اذهب إلى جملة رقم 30 ( ج ) إذا كانت n لاتساوي صفراً ، فاحسب y من المعادلة y = n X 2 ( د ) إذا كانت ، اذهب إلى الجملة رقم 20 ( ه ) إذا كانت P سالبة ، فاذهب إلى الجملة رقم 22 ( و ) اذهب إلى جملة رقم 32 لتنفيذها . ( ز ) إذا كانت a أصغر من b ، وكذلك x أكبر أو تساوي y اذهب إلى الجملة رقم 15 الحل : IF ( A .GT. B ) STOP IF ( X .LT. Y ) GO TO 30 IF ( N .NE. 0.0 ) Y = N * X * * 2 IF ( A * * 2 + B * * 2 .LE. 16. ) GO TO 20 IF ( P .LT. 0. ) GO TO 22 IF ( P ) 22, 24, 25 GO TO 32 IF ( A .LT. B .AND. X .GT. Y ) GO TO 15

  49. ( 5.3 ) إذا فرضنا أن قيم كل من N, M هي 5 و 3 على الترتيب ، فأوجد قيمة M النهائية ، بعد تنفيذ الجمل في الحالات الآتية : ( أ ) IF ( 2 * M .LT. N ) M = M + 3 M = M + 5 ( ب ) IF ( M - N ) 10, 15, 20 10 M = N 15 M = M + N 20 M = N + 6 ( ج ) IF ( M * 2 .LT. N * 3 ) GO TO 50 M = N * * 2 + 5 GO TO 60 50 M = N 60 M = ( N - 1 ) * * 3 الحل : ( أ ) 2M ليست أصغر من N لذا فإن : M = M + 5 M = 10 ( ب ) لأن ( M – N ) أكبر من صفر ( موجبة ) ، لذا فإن قيمة M تساوي N + 6 وتساوي 9 . ( ج ) لأن 2M ليست أصغر من 3N ، لذا فإن قيمة M تحسب من : M = N 2 + 5 M = 14

  50. ( 5.4 ) جد الأخطاء ، إن وجدت ، في كل من جمل التحكم الآتية : GO TO ( 5, 6, 7 ) K GO TO ( 10, 20, 30 ) , COUNT GO TO ( 16, 81, 20, 22 ) , N GO TO ( 0, 2, 4, 6 ) , N IF ( X ) 20, 25 IF ( X .LT. B ) , GO TO 30 IF ( W .GE. 7. ), Z = 3 * W IF ( P .NEQ. R ) GO TO 15 IF ( X - A ) 20, 20, 20 IF ( Z - 12. ) 6, 7, 8 IF ( Z .LT. 5. ) THEN Z = 0. IF ( Y .NE. 0. ) THEN GOTO 10 الحل : ( أ ) يجب أن يكون هناك فارزة قبل k . ( ب ) يجب أن تكون COUNT متغيراً صحيحاً . ( ج ) ليس فيها أخطاء . ( د ) لايمكن أن يكون الصفر رقماً لجملة . ( ه ) ينبغي أن يكون هناك رقم جملة ثالثة بعد 25 للإختيار الموجب وإلا فسيبقى مجهولاً. ( و ) ينبغي حذف الفارزة قبل الجملة GO TO . ( ز ) ينبغي حذف الفارزة قبل المتغير Z . ( ح ) NEQ لا تمثل أي رمز من الرموز المنطقية القياسية المعرفة . ( ط ) تعتبر جملة IF كلها جملة زائدة لأنها تطلب الذهاب إلى جملة 20 في كل الأحوال والاحتمالات، أي عندما تكون ( X – A ) سالبة ، صفراً أو موجبة ويمكن استبدالها بجملة أخرى مثل : GO TO 20 ( ي ) ليس فيها أخطاء . ( ك ) ينبغي للجملة بعد THEN أن تأتي في سطر لاحق مستقل . ( ل ) تعتبر THEN هنا زائدة وينبغي حذفها .