Professional Documents
Culture Documents
الفصل 2
الفصل 2
الفصل الثاني
تركيبات التحكم
Control constructs
1
تركيبات التحكم الفصل الثاني
كان يعرف هذا الفصل في Fortran 77باسم جمل التحكم .إما في هذا النموذج Fortran 90فقد دخل عالم
اللغات المتقدمة بحيث ينظر إلى البرنامج كوحدات بنائية تتكون كل وحدة من تركيبة تسمى . blockومن أهمية
جمل التحكم هي -:
-1مقطع IF
تقوم جملة GO TOبنقل التنفيذ من الموقع الحالي إلى الموقع الذي يحدده رقم الجملة المحددة لكلمة GO
TOولهذه الجملة الشكل التالي :
GO TO N
حيث أن -:
: Nرقم الجملة المقصودة (أيا كان موقعها قبل أو بعد (GO TOويكون ثابت صحيح بال أشارة.
2
تركيبات التحكم الفصل الثاني
Ex.
10 Read*,A
Print*,'A=',A
Go To 10
تحسب قيمة التعبير المنطقي أو العالقي فإذا كانت قيمته صحيحة تنفذ الجملة في التعبير وإال ينتقل التسلسل إلى
بقية اجزاء البرنامج
Block of statements
End If
تحسب قيمة التعبير المنطقي أو العالقي فإذا كانت قيمته صحيحة تنفذ وحدة الجمل في التعبير وإال ينتقل التسلسل
إلى ما بعد .End If
3
تركيبات التحكم الفصل الثاني
Block of stat. 1 ينفذ الجزء األول من المقطع عند تحقق الشرط
Else
Block of stat. 2 عند عدم تحقق الشرط ينفذ الجزء الثاني
End If
block of stat.
Else
End If
4
تركيبات التحكم الفصل الثاني
مثال -:اكتب برنامج لقراءة قيم كل من السرعة ) (vواللزوجة ) (μوالكثافة ) (ρلسائل يجري داخل أنبوب
قطره ) (dاحسب عدد رينولدز ) (Reلهذا السائل ومن ثم بين نوع الجريان حسب التصنيف التالي ,علما
Solution
Program fluid
Read*,v,ro,mu,d
Re=d*v*ro/mu
IF(Re<=2100)Then
Else IF(Re>2100.and.Re<4000)Then
Else
End IF
End
5
تركيبات التحكم الفصل الثاني
Program 4 Program 5
Read*,N Read*,N
a=4;b=2 a=4;b=2
If(N==1)Go to 10 If(N==1)x=a-b
If(N==2)Go to 20 If(N==2)x=a*b
If(N==3) Go to 30 If(N==3)x=a/b
10 x=a-b ; print*,'x=',x print*,'x=',x
20 x=a*b ; print*,'x=',x End
30 x=a/b ; print*,'x=',x
end
----------- -----------
Ans: x=8 Ans: x=8
x=2
6
تركيبات التحكم الفصل الثاني
تمرين -:أقرا قيمة , A,B,Nثم احسب قيمة Xحسب االعتبارات التالية -:
X=A-B N=1
X=A*B N=2
X=A/B N=3
X=A**B N=4
تشكل هذه التركيبة بديال لتركيبة االنتقاء ) (IFولكنها تتميز عنها بوضوحها غير أن تركيبة الحاالت ال
يمكن لها أن تحل محل تركيبة االنتقاء في كل الحاالت .
وتأخذ الشكل التالي -:
7
تركيبات التحكم الفصل الثاني
مثال -:اكتب جزء من برنامج يختار إحدى الجمل للطباعة بناء على قيمة السرعة speedالمذكورة في
بداية تركيبة الحالة وفقا لما يلي -:
Solution
Integer speed
Read*,speed
)Select case(speed
)Case(90:120
'Print*,'fast
)Case(50:89
'Print*,'legal
)Case(10:49
'Print*,'slow
Case default
End select
مالحظات-:
)'Case('a':'h' , 'i':'n
الحد األعلى
الحد األدنى
8
تركيبات التحكم الفصل الثاني
إذا حذف المدى ا ألعلى فان تعبير الحالة يحسب القيم التي تكون اكبر أو يساوي الحد األدنى والعكس
)Case(75: ) , Case( :100 صحيح.
Ex:-
Read*,y
)Select case(y>0
)Case(.True.
x=y
)Case(.False.
x=-y
مالحظة-:
الحظ أن االختيار هو تعبير وليس متغير وله إحدى قيمتين T or Fوباالعتماد على قيمة yيتم
تحديد قيمة .x
لم ترد عبارة case defaultلعدم الحاجة لها وبالتالي فهي فرع اختياري يمكن االستغناء عنها
حسب الحاجة.
تمرين -:اكتب برنامجا لطباعة تقدير الطالب حسب درجاته ,ممتاز إذا كانت الدرجة فوق ,90جيد
جدا إذا كانت بين ,80-90جيد إذا كانت بين ,70-80ومتوسط إذا كانت بين ,60-70وراسب إذا
كانت دون .60مستخدما ,IF-THENثم استخدم .Select case
مثال -:اكتب برنامجا يلتقط اإلعداد الموجبة من مجموعة تتكون من 30عدد يطبعها ويحسب
عددها.
9
تركيبات التحكم الفصل الثاني
Solution
Integer N,Kount,Kp
Kouut=0 ; Kp=0
10 Kount=Kount+1
Print*,N
Kp=Kp+1
End If
End
تساعد هذه التركيبة على تكرار جملة أو مجموعة من الجمل عددا محددا من المرات ,أو تترك عدد
التكرار مفتوحا ولكي ينتهي التكرار تستخدم جملة ظرفية سيأتي ذكرها الحقا.
10
تركيبات التحكم الفصل الثاني
حيث ان -:
: m3الخطوة { stepتعبير,صحيح,حقيقي }
10 Count=Count+1
Read*,NR
Sum=Sum+NR
Print*, Sum
End
Sum=0.0
DO I=1,50
Read*,NR
Sum=Sum+NR
End Do
Print*, Sum
End
11
تركيبات التحكم الفصل الثاني
-
End IF
End Do
OR
IF(I > 5) Then
-
End Do
End IF
مثال -:اكتب برنامجا لقراءة 100عدد ,وحساب عدد القيم الموجبة بضمنها الصفر وعدد القيم السالبة في هذه
المجموعة من األعداد.
: NRالقيمة المقروءة
12
تركيبات التحكم الفصل الثاني
Program values
Kp=0; Kn=0
DO I=1,100
Read*,NR
IF(NR >=0)Then
Kp=Kp+1
Else
Kn=Kn+1
End If
End Do
End
مالحظات -:
عند اختفاء الخطوة stepمن جملة DOهذا يعني أن الخطوة تكون 1
ال يشترط في القيم االبتدائية والنهائية والخطوة أن تكون ثابتة ,ويجب تعريف المتغير قبل حلقة الدوران.
K=10
DO I=K,K*K,3
Print*,I
End Do
13
تركيبات التحكم الفصل الثاني
DO I=100,1,-1
Print*,I
End Do
DO d=-16,-1
C=200.0,5.0,-2.0
DO k=1,10,2
-
End Do
DO k=200,400
-
End DO
DO I=1,2 عند تداخل الحلقات يتم تنفيذ الحلقة الداخلية أوال ثم الخارجية .
DO J=1,3
Print*,I,J
End Do
End Do
14
تركيبات التحكم الفصل الثاني
* يجب أن تنتهي كل حلقة بــ End Doوال يمكن أن يشتركان بــ .End Do
* عند تداخل الحل قات ال يجوز استعمال نفس اسم الدليل بل يجب تغيره من الحلقة الخارجية عن الحلقة
الداخلية.
في حالة عدم وجود ,loop controlفأن هذا يعني أن عدد مرات الدوران مفتوحا ً وبالتالي وجود جملة
ظرفية هي Exitيعتبر جوهري وأساسي.
في حالة تنفيذ Exitفان الدوران ينتهي وينتقل التنفيذ إلى بقية البرنامج بعد ترك التكرار.
الجملة الظرفية الثانية : Cycleالتي أذا نفذت داخل التكرار فأنها تقفز عن مجموعة الجمل الالحقة لها
وتبدأ دورة جديدة .
الشكل العام لهذه التركيبة -:
DO
block
End Do
OR
DO
block
End Do
مثال -:اكتب برنامجا يحسب األعداد الفردية في ملف يحتوي على أعداد غير سالبة ,اعتبر األعداد مرتبة داخل
الملف بعدد كل سطر لغرض التوقف تم اإلشارة إلى نهاية الملف بعدد صحيح سالب.
15
تركيبات التحكم الفصل الثاني
first solution
Program Odd
Implicit none
Integer Nodd
Real x,y
Nodd=0
Open (1,file='data')
Do
Read(1,*) x
y=x/2
Exit
Else IF((y-int(y))==0)Then
Cycle
Else
Nodd=Nodd+1
End If
End Do
End
16
تركيبات التحكم الفصل الثاني
another solution
Program Odd
Implicit none
Integer :: Nodd,x
Nodd=0
Open (1,file='data')
Do
Read(1,*) x
Exit
Else IF(Mod(x,2)==0)Then
Cycle
Else
Nodd=Nodd+1
End If
End Do
End
. وتكون صفرا لألعداد الزوجية2 تعطي باقي قسمة العدد علىMod(x,2) الدالة المكتبية
17
تركيبات التحكم الفصل الثاني
x=x-e
End Do
هذه العبارة مدعمة من قبل Fortran90ولكن يمكن االستعاضة عنها بالشكل التالي -:
DO
x=x-e
End Do
تمرين -:
18
تركيبات التحكم الفصل الثاني
DO I=m1,m2,m3
يمكن حساب عدد مرات تنفيذ جملة الدوران (عدد الحدود) حسب القاعدة العامة التالية :
1
إذا كانت m2 ≤ m1
مثال -:اكتب برنامجا لحساب مجموع 10حدود من حدود االقتران التالي ,ثم قارن الناتج مع ناتج الدالة المكتبية
−1
𝑥3 𝑥5 𝑥7 xn
tanℎ 𝑥=𝑥+ + + + ⋯+
3 5 7 n
1 1+x
= 𝑥 tanh−1 ln الدالة المكتبية لدالة tan-1x
2 1−x
19
تركيبات التحكم الفصل الثاني
Program tanh
Do I=1,n,2
sum=sum+x**I/I
End Do
a=1+x ; b=1-x
)y=0.5*log (a/b
Print*,sum ,y
End
مثال :اكتب برنامجا بلغة فورتران لحساب الوسط الحسابي ) (Mلمجموعة من القراءات حسب العالقة التالية
𝑁∑( = 𝑀
𝑁𝑖=1 𝑥𝑖 )/
S=0
Read*,N
DO I=1,N
Read*,x
S=S+x
End Do
M=S/N
Print*,M
End
20