( لغات البرمجة ** باسكال ** )
1-    لغات البرمجة  
من المعروف أن  الحاسوب يتكون من مكونين  أساسين هما :
أ/ العتاد ( Hard ware) :- و هي المكونات المحسوسة و المرئية  كالشاشة و لوحة المفاتيح
ب/ البرمجيات ( soft  ware  ) :- و هي مجموعة من البرامج  التي تدير العتاد من ضمنها لغات البرمجة و نظم التشغيل . 
2-   لغة باسكال ( Pascal )
الشكل العام لباسكال :-
أ‌)       رأس البرنامج :- 
ويبدأ بكلمة   programو يليها اسم البرنامج ثم بين قوسين عبارتي Input     و Output   تفصلها فاصلة ( ' ) و ينتهي الرأس بفاصلة منقوطة ( ; )  .
Program   circle (input  ,  output ) ;     
     Program  Summation  (I , O  )     ;
ورأس البرنامج   جزء غير أساسي يمكن أن لا يكتب ( اختياري )  0
ب) جزء التعريفات أو الإعلانات :-
و يتم فيه الإعلان جملة البيانات و الأشياء التي سوف تستخدم في البرنامج ( مدخلات و مخرجات )  و هي علي الترتيب :-
1- أسماء الوحدات :-
وهي التي تمكن من استخدام الدوال المتاحة في باسكال (   Dos ; Crt ;  Graph          ويبدأ تعريفها بالكلمة Uses  0                                                                                                                                                                                                                                                                                                                                                                                                 
Uses
 graph, dos;      
2- الثوابت :-
و نعني بها العناوين التي لا تقبل تغيير في بياناتها في الذاكرة وتبدأ  بالكلمة  Const 0  
Const
  pi =3.14;                                                         
3-    التعريفات الجديدة :-
و تبدأ بالكلمة Type ويعرف فيها البيانات ذات المدي  المحدد مثل أيام الأسبوع و أشهر السنة و كذلك تعرف السجلات .  
Type number = 0 .. 60 (  الأعداد المحددة من 0 إلي 60  )
Type اسم السجل = Record
حقل1 و نوع بياناته  
حقل2 و نوع بياناته  
End ;
Var
اسم السجل  : مصفوفة  [ أبعادها  ] نوع البيانات  ;
                                                                                                                                
مثال لتعريف سجل اسمه عناوين يتكون من الحقول  ( الاسم ( Name )، الشارع       ( Street )، المدينة ( City  )  ) .
                                                                                               Type                                                                                     
Address =Record
Name  : char;                                                                                
Street :integer;                                                                             
City : char                                                                                    
End ;                                                                                           
 Var                                                                                             

 Student : array [ 1..30 ]  of  address ;                                                
4-اللافتات :-  
و تبدأ بكلمة (  Label )  
    
      Label  stop,  L1;                        
                                  
5-  المتغيرات  :-
و تبدأ  بكلمة  (   Var)  و يعلن فيها عن البيانات التي تخزن في مواقع و عناوين تقبل التغيير في قيم بياناتها ، إذا كانت بسيطة كالمتغيرات البسيطة أو المركبة كالمصفوفات .
Var
X , Y : Integer ;
Var
St – score : array [ 1 .. 100 ] of  Integer ;
6-     الإجراءات  و تبدأ بكلمة  Procedure  .
7-      الدوال و تبدأ بكلمة Function  .
و الدوال و الإجراءات هما عبارة عن مجموعة من البرمجيات الصغيرة ضمن البرنامج الأصلي .
ج) جســـم البرنامج :-
و يحتوي علي مجموعة من الجمل و العبارات تنحصر بين كلمتي  ( Begin ) و ( End. )

معالجة البيانات في باسكال
(1) الأعـــــداد (  رقمية و حقيقية ) :-
أ/ المؤثرات  الحسابية :-
العملية
الوظيفة
المدخلات
المخرجات
+
الجمع
رقمية أو حقيقية 
رقمي إذا كان المدخلات رقمية        و إلا حقيقية
-
الطرح
*
الضرب
/
القسمة
حقيقية
Div
حاصل القسمة الصحيح
رقمية
رقمية
Mod
باقي القسمة
رقمية
رقمية

ب / الدوال الحسابية :-
الدالة
الوظيفة
المدخلات
المخرجات
تطبيق
Abs
القيمة المطلقة للعدد
رقمي أو حقيقي
رقمي أو حقيقي
Abs (10);=10
 Abs(-3) ;=3
 Abs (-4.6) =4.6
Sqr
مربع العدد
رقمي أو حقيقي
رقمي أو حقيقي
 Sqr(10);=100
 Sqr(h);=h*h
Sqrt
الجذر التربيعي
حقيقي
حقيقي
 Sqrt(100);=10
 Sqrt (2.25);=1.5
Trunc
كشط الحقيقي لرقمي
حقيقي
رقمي
Trunc(2.99);=2
Trunc(88.88);=88
Round
تقريب الحقيقي لرقمي
رقمي أوحقيقي
رقمي
 Round(5.1);=5 
Round(7.7);=8

Sin
جا
رقمي أو حقيقي
حقيقي

Con
جتا


Tan
ظا


Ln
لو


Exp
القوة



(2) الدوال الحرفية :-                                  
Ord
ترتيب الحرف في جدول Ascii
حرفية
رقمية
ord ( 'A') = 65
CHR
الحرف المقابل في ِAscii
رقمية
حرفية
Chr ( 65) = A
Succ
القيمة التالية للمدخل 
حرفية
حرفية
Succ( 'a') = b
Succ( 14) = 15
Pred
القيمة السابقة للمدخل
حرفية
حرفية
Pred( 'B') = A
Pred ( 20) = 19
Upcase
الحرف الكبير
حرفية
حرفية
Upcase ('e') = E

(3) أدوات المنطقية :-                                    
الأداة
في باسكال
=
=
< >
= >
= <


IN

بعض الدوال المنطقية :-
Odd  ( التحقق من فردية المدخل ، و مخرجها منطقي ( Odd(X) ) .
Eol التحقق من منطقية نهاية سطر ( End of Line )  .
Eof  التحقق من منطقية نهاية ملف ( End Of File  ) .
بالإضافة لـ  And ، Or  ، Not  .

تطبيق البرمجة بلغة باسكال
ý    الغرض من كتابة برنامج هو الحصول  علي مخرج أو مخرجات تفي لحاجة معينة .
ý    كتابة أي برنامج تمر بثلاثة مراحل :-
1)    كتابة البرنامج بلغة البرمجة المختارة ( باسكال ) .
2)    تصويب الأخطاء ( الترجمة ) .
3)    تنفيذ البرنامج للحصول علي المخرجات .
ý    يتكون البرنامج من ثلاثة مكونات :-
1)    المدخلات :- و لها عبارة خاصة في باسكال هي ( Read  و  Readln  ) ، و الفرق بينها أن Read  تقوم بالادخال مع إبقاء مؤشر الإدخال في نفس السطر ، بعكس Read  يتحرك مؤشر الادخال للسطر التالي .
2)    المدخلات : و تستخدم لها العبارة      write  ) و writeln  ) و الاختلاف في  أن writeln  يتحرك مؤشر الاخراج للسطر التالي .
3)    المعالجات ( المعادلات ) :
ý    تكتب الملاحظات و التعليقات بالشكل التالي :-
1)     (*  التعلـــــــــــــــــــــــــيق *) .
2)    { التعلــــــــــــــــــــــــــــــيق }
ý    كل سطر في باسكال ينتهي بفاصلة منقوطة ( ; ) .
ý    أي عبارة محصورة بين علامتي تنصيص مفردة ( 'My Name Is Adam' )  تخرج كما هي .
ý     عبارة writeln   عندما تكون خالية من جملة إخراجية  ، بقصد منها ( ترك سطر فارغ ) .

أمثلة تطبيقية بسيطة علي البرمجة بباسكال :-
1) برنامج يقوم بإخراج  جملة نحن طلاب السودان ( We are the student of Sudan  )
Program sent ( output ) ;
Begin
Write ( ' We are the student of Sudan ' ) ;
End .
2) برنامج يستقبل رقم ، و يخرجه مصحوبا برسالة ( الرم المفضل  favorite number  ) .
Program  favorite ( input ' output );
Var
Num : integer ;
Begin
Readln ( Num ) ;
Write ( Num , 'favorite number' ) ;
End .
3) وضح شكل مخرجات البرنامج التالي :
Program I only ( Input ,output ) ;
Zone de Texte: I     5     I
--------------
I     =     5 
Const
I = 5 ;
Begin
Write ( ' I ' ) ;
Write ( I ) ;
Writeln ( ' I ' ) ;
Writeln  ;
Write ( ' I = ' , I ) ;
End .


4) برنامج يقرأ نصف قطر ( r ) و يقوم بحساب مساحة الدائرة ( Ar ) .
Program  circle ( input , output ) ;
Const
Pi = 3.14 ;
Var
R : integer ;
Ar : real ;
Begin
Readln ( r ) ;
Ar := Pi * sqr ( r ) ;
Writeln ( Ar ) ;
End .
(5) -
برنامج يحسب مساحة المثلث الذي أضلاعه (A ، B ، C  ) وفق المعادلة (Ar = √s(s-A)(s-B)(s-C) )
و ( s =(A + B + C)/2 )  .
Program triangle ( input ; output );
Var
A , B , C , s , Ar : real ;
Begin
Readln ( A , B , C ) ;
S := ( A + B + C ) / 2 ;
Ar := sqrt ( s * ( s – A ) * ( s – B ) * ( s – C ) ) ;
Writeln( Ar ) ;
End .

(6) برنامج يستقبل عدد من الأيام و يحسب منها عدد السنوات و الشهور و الأيام ، بافتراض أن عدد أيام الشهر 30 يوم و السنة 360 يوم  ؟
Program day ( input , output ) ;
Var
Days , year , month , rem day : integer ;
Begin
Readln ( days );
Year := days Div 360 ;
rem := days Mod   360 ;
month := rem Div 30 ;
day := rem Mod 30 ;
write ( year ,'           ', month ,'         ' , day ) ;
End .

عبارات التحكم
( 1 ) عبارة  ( IF  )
تستخدم عندما يكون تنفيذ الجمل مرتبط بشرط أو تعبير منطقي ، مثلا عندما يقرأ برنامج رقما و يحدد إن كان زوجي أم لا .
الصيغة العامة :-
IF < متغير > ( تعبير منطقي  ) Then
جملة أو جمل   ;
Else
جملة أو جمل   ;
End .
تنفذ الجملة بعد IF في حالة التعبير المنطقي صواب و إلا تنفذ الجملة بعد Else  .
ملاحظة :-
     ( الجملة التي تسبق Else  لا تنتهي بفاصلة منقوطة ( ;  ) .
أمثلة تطبيقية علي البرمجة بعبارة ( IF  ) :-
1) أكتب برنامج يستقبل رقم و يخرج رسالة توضح أنه فردي ( odd ) أم زوجي ( even  ) ؟
Program odd ( I , O ) ;
Var
X : integer ;
Begin
Readln ( X ) ;
IF X Mod 2 <> 0 Then
Write ( ' odd ' )
Else
Write ( ' even ' ) ;
End .
2) البرنامج السابق لكن  يوضح إن كان الرقم موجب ( positive   ) أم سالب ( negative  ) .


Program positive ( I , O ) ;
Var
X : integer ;
Begin
Readln ( X ) ;
IF X > 0  Then
Write ( ' positive ' )
Else
Write ( ' negative ' ) ;
End .
3) برنامج يستقبل رقم  ثم يطبعه إذا كان يقبل القسمة علي 2 و 7 ؟
Var
S : integer ;
Begin
Readln ( S ) ;
IF ( S Mod 2 = 0 ) And ( S Mod 7 = 0 ) Then
Write ( ' done ' ) ;
End .
4) برنامج يقرأ رقمين و يطبع ( they do  ) إذا كانا يقبلان القسمة علي 6 ؟
Var
S , X : integer ;
Begin
Readln ( S , X ) ;
If ( S Mod 6 = 0 ) And ( X Mod 6 = 0 ) Then
Write ( ' they do ' ) ;
End.
5) برنامج يقرأ حرف و يطبع  vowel letter إن كان الحرف من الحروف الإنجليزية المتحركة ( علة )
Var
C : char ;
Begin
Readln ( C ) ;
C := Upcase ( c ) ;
IF ( c = 'A' ) or ( c = 'E') or ( c = 'I' ) or ( c = 'O' ) or ( c = 'U') Then
Write ( ' vowel letter ' )
Else
Write ( ' not vowel letter ' ) ;
End .
ملاحظـــة : - ( استخدام المؤثر ينتمي ( IN ) :-
6) برنامج يقرأ رقم  ، إذا كان يقع بين صفر و 50  يطبع ( right ) ؟
Var
Z : integer ;
Begin
Readln ( z ) ;
IF z IN [ 1 .. 49 ] Then
Write ( ' right ' )
Else
Write ( ' not right ' ) ;
End .
7) حل  آخر للسؤال رقم (5) باستخدام IN  ؟

Var
C : char ;
Begin
Readln ( C ) ;
C := Upcase ( c ) ;
IF C  IN [ 'A ' , 'E ' , ' I ' , ' O ' , ' U ' ] Then
Write ( ' vowel letter ' )
Else
Write ( ' not vowel letter ' ) ;
End .


الحلقات التكرارية
(1) حلقة ( For ….. Do )   
تستخدم عندما تكون عدد مرات التكرار معلوم مسبقا .
الصيغة العامة :-
For  < متغير  > :=  < قيمة ابتدائية > To ( Downto )  < قيمة نهائية > Do
جملة أو جمل  ;
ملاحظات :-
·        عدد مرات التكرار = الفرق القيمة الابتدائية و النهائية + 1  .
·        تستخدم To   عندما تكون القيمة الابتدائية أصغر من النهائية ، و العكس Downto  عند النهائية أصغر من الابتدائية .
·        إذا كانت جملة For  مركبة  أكثر من جملة ) تحصر بين كلمتي Begin   و End; .
تطبيق علي هذه الملاحظات :-
** For s  := 5 To 11 Do
     Write ( s ) ;
** For s := 11 Downto 5 Do
     write ( s ) ;
** For s := 7 To 14 Do
Begin
write ( s + s ) ;
write ( s * s ) ;
End ;
End .
تطبيق علي حلقة For … Do  :-
1) برنامج يطبع جملة ربي ( My God  ) مائة  مرة ؟
Var
I : integer ;
Begin
For I := 1 To 100 Do
Write ( ' My God ' ) ;
End .
2) برنامج بطبع الأرقام من 19 إلي 39 ؟
Var
s : integer ;
Begin
For s := 19 To 39 Do
Writeln ( s ) ;
End .
3) برنامج يطبع الحروف من a  إلي I  ؟
Var
s : char ;
Begin
For s := 'a' To 'i'  Do
Writeln ( s ) ;
End .

4) برنامج بطبع مربعات الأرقام من 19 إلي 39 ؟
Var
s : integer ;
Begin
For s := 19 To 39 Do
Write ( sqr( s )) ;
End .
5) برنامج يحسب و يطبع حاصل جمع الأرقام ن 13 إلي 99  ؟ 
Var
S , sum : integer ;
Begin
Sum := 0 ;
For s := 13 To 99 Do
Sum := sum + s ;
Write ( sum ) ;
End .
6) برنامج يحسب و يطبع حاصل ضرب الأرقام من 5 إلي 12 ؟
Var
Mut : longint ;
S : integer ;
Begin
Mut := 1 ;
For s := 5 To 12 Do
Mut := Mut * s ;
Write ( Mut ) ;
End .
7) برنامج يحسب مجموع مربعات الأرقام من 8 إلي 18 و متوسطها ؟
Var
I , sumsqr : integer ;
Avg : real ;
 Begin
Sumsqr := 0 ;
For I := 8 To 18 Do
Sumsqr := sumsqr + sqr ( I ) ;
Writeln ( sumsqr ) ;
Avg := sumsqr / 11;
Write ( avg ) ;
End.
8) برنامج يحسب و يطبع مضروب أي رقم  ( X ) ؟
Var
Fact : longint ;
X , I : integer ;
Begin
Fact := 1 ;
Readln ( X ) ;
For I := X Downto 1 Do
Fact := fact * I ;
Write ( fact ) ;
End .
9) برنامج يحسب و يطبع مجموع مربعات و متوسط أي أرقام في مدي محدد  يبدأ بالرقم  A   و ينتهي بالرقم B) ؟
Var
A , B , sum : integer ;
Avg : real ;
Begin
Sum := 0 ;
Readln ( A , B ) ;
For I := A To B Do
Sum := sum + sqr ( I ) ;
Avg := sum / ( B – A + 1 ) ;
Writeln ( sum ;
 Write ( Avg ) ;
End .


(2) حلقة While ….. Do  
**  تستخدم عندما تكون مرات التكرار غير معلومة .
** بالضرورة أن تبدأ بقيمة ابتدائية .
** المخطط أدناه يوضح خطوات عمل حلقة while … Do  .



Zone de Texte: خطأZone de Texte: صواب 

                                       

                                                                          




                   
                                                        




أمثلة تطبيقية :-
1) مستخدما حلقة while  أكتب برنامج لطباعة الأرقام من 1 – 10 ؟
Var
X : integer ;
Begin
X := 0 ;
While X < 10 Do
Begin
X := X + 1 ;
Write ( X ) ;
End ;
End .
حل آخر :
Var
X : integer ;
Begin
X := 1 ;
While X <= 10 Do
Begin
Write ( X ) ;
X := X + 1 ;
End ;
End .
2) برنامج يحسب حاصل جمع الأرقام من -30 إلي 95 و يطبعه ؟
Var
X , sum : integer ;
Begin
Sum := 0 ;
X := -30 ;
While X <= 95 Do
Begin
Sum := sum + X ;
X := X  + 1 ;
End ;
Write ( sum ) ;
End .
3) يطبع الأرقام 10 ، 20 ، 30 ، 40 و يتوقف عند 100 ؟
Var
X : integer ;
Begin
X := 0 ;
Begin
While X < 100 Do
Begin
X := X + 10 ;
Writeln ( X ) ;
End ;
End .
4) طباعة الأرقام التي تقبل القسمة علي 3 في المدى من 1 إلي 50 ؟
Var
X , C : integer ;
Begin
X := 0 ;
C := 0 ;
While X <= 50 Do
Begin
X := X + 1 ;
If X Mod 3 = 0 Then
C := C + 1 ;
End :
End .

(3) حلقة Repeat …. Until  
هي كحلقة while  ، لكن ليس بالضرورة وجود قيمة ابتدائية ، لأنها تنفذ قبل المقارنة .
مخطط يوضح عمل حلقة Repeat .. until  :---


الصيغة العامة :- 
Repeat < جملة  > Until
تعبير منطقي
أمثلة تطبيقية :-
1) برنامج يقرأ مجموعة من الأرقام ، يطبع مجموعها  و يتوقف بإدخال رقم سالب ؟
Var
X , Sum : integer ;
Begin
Sum := 0 ;
Repeat
Sum := sum + X ;
Readln ( X ) ;
Until X < 0 ;
Write ( sum ) ;
End .
ملاحظة :- ( الجمل المركبة في  Repeat  لا تحصر بين Begin  و End ;  .
مثال ( 2 ) طباعة الأرقام من 1 – 10 ؟

Var
X : integer ;
Begin
X := 0 ;
Repeat
X := X + 1 ;
Writeln ( x ) ;
Until
X > 9 ;
End.
3) طباعة حاصل جمع الأرقام من -30 إلي 95 ؟
Var
X , sum : integer ;
Begin
Sum := 0 ;
X := -30 ;
Repeat
Sum := Sum + X ;
X := X + 1 ;
Until
X > 95 ;
Write ( sum ) ;
End .
4) يطبع الأرقام 10 ، 20 ، 30 و يتوقف عند 100 ؟
Var
X : integer ;
Begin
X := 10 ;
Repeat
Write ( X ) ;
X := X + 10 ;
Until
X > 100 ;
End .
5) طباعة الأرقام من 1 إلي 50 و  التي تقبل القسمة علي 3 ؟
Var
X : integer ;
Begin
X := 0 ;
Repeat
X := X + 1 ;
If X Mod 3 = 0 Then
Writeln ( X )
Until
X >= 50 ;
End .



Previous Post Next Post