# برمجة باسكال

الباسكال هي لغة برمجة سهلة التعلم نسبيا. صياغتها مستمدة من اللغة الإنجليزية. سميت اللغة كذلك تمجيدا لذكرى عالم الرياضيات الفرنسي بليز باسكال.
تعتبر لغة الباسكال *نسبة للعالم الرياضي باسكال* من اللغات دات المستوى العالي وهي لغة تدرس في الجامعات لسهولتها. ولكتابة برنامج بلغة باسكال فانك بحاجة إلى مترجم مثل (devpascal) على سبيل المثال. الآن سنقوم باول خطوة أي كتابة أول برنامج بلغة الباسكال. حيث سيقوم البرنامج بطباعة عبارة (hello world) على الشاشة.
program hello-world; 1
begin 2
write("hello world"); 3
4 .end
ملاحظة الترقيم (1-5) ليس ضمن البرنامج.
1}- رأس البرنامج: السطر الأول هو لكتابه اسم للبرنامج ، أي اسم يمكنك وضعه كيفما تريد ، لكن يحبذ ان يكون له علاقه بالبرنامج الذي تكتبه ، فمثلا برنامج اله حاسبه ، يصبح اسمه مثلا calculate ، أيضا هناك قواعد في كتابه أسماء البرامج فلا يمكن أن يحتوي على مسافات أو يبدأ الاسم برقم ، أيضا في حاله ان اسم البرنامج يحتوي على كلمتين فمن الممكن ان تكتب متلاصقتين مع مراعاه تكبير الحرف الأول من كل كلمه ،مثل HelloWorld ، أو من الممكن وضع علامه الشرطه – للفصل بين الاسم الأول والثاني ، hello-world .
2}- كل البرامج في الباسكال ، تبدأ بالكلمه المحجوزه (begin) . 3}- في هذا السطر كتبنا كلمة (write). دورها هو الطباعة.
وفي الاخير نقوم بختم السطر بفاصلة منطقة ;("النص") .
4}- كل البرامج في الباسكال ، تنتهي بالكلمة المحجوزة (end). ______________________________
برنامج آخر لعمليات الضرب :
Program Multiplication;
uses wincrt;
var
a,b:integer;
begin
writeln('donner a ');
readln(a);
writeln('donner b');
readln(b);
x:=a*b;
write(a,'*',b,'=',x);
end. برنامج آخر لتعليم كيفية كتابة معادلة:

## Z,X,Y,

    integer
begin
    Writeln ('enter your values

## Z

    =x*x+5*y

## Readln

.end
بعد الانتهاء من كتابة الخوارزمية التي تمثل الخطوات حل مشكل ما بطريقة آلية، ينتقل المطورون إلى ترجمة الخوارزمية إلى لغة برمجة كالباسكال. وأولى الخطوات هنا هي إحصاء كل ما يجب تعريفه حتى نحصل على برنامج مترجم إلى لغة الآلة صالح للتنفيذ.
في لغة الباسكال يطلب تعريف كل الثوابت والمتغيرات التي ستستعمل. كما يجب تعريف أنواع البيانات (DATA TYPES - Types de données) الخاصة. كما تعرف الدوال (Function) والبرمجيات الفرعية (Procedure). دون نسيان مكتبات الدوال والبرمجيات الفرعية المستعملة حتى لا يطلب تعرف المجهول منها.

## أنواع البيانات والعمليات
### أنواع البيانات

في الباسكال يتعامل مع خمس أنواع بسيطة وأساسية. ويمكن تعريف أنواع أخرى بسيطة أو مركبة حسب الحاجة.

#### الأنواع البسيطة

| التعريف | الفئة المعرفة | ملاحظات |
| INTEGER | القيم الصحيحة | 1، 12 ، +93، -6 |
| REAL | القيم الحقيقية | 5، 2.5، 100، 1.05E+2 (= مئة وخمسة) |
| BOOLEAN | القيم المنطقية | TRUE - FALSE (وهما القيمتان الوحيدتان : صحيح أو خطأ) |
| CHAR | الرموز | القيمة هي رمز واحد قد يكون: حروف لاتينية (A,B,C ... a,b,c ..)، أرقام (0 1 2 3 4 5 6 7 8 9)، رموز أخرى (, ; & ! $ . :) |
| STRING | سلسلة حروف ورموز | تحدد دائما بالرمز '. مثال : 'Hello' |

### العمليات

أبرز العمليات هي العمليات الحسابية : الجمع + ، الطرح - ، الضرب *، القسمة /. و تضاف إليها عمليتي القسمة الصحيحة باستعمال DIV و باقي القسمة الصحيحة باستعمال MOD. ولما كانت كتابة العمليات تتم على سطر واحد، وجب إدراك أنه يجب الإلمام بأولوية العمليات.

#### مثال

العبارة الرياضية التالية : $a-{\frac {b+c}{2}}$
تكتب a - ( b + c ) /2 وليس a - b + c / 2 لأن هذه الأخيرة توافق $a-b+{\frac {c}{2}}$

### الدوال

الدالة الخطية و الدالة التألفية

# الفصل الأول: تقديم لـلغة باسكال

كغيرها من لغات البرمجة الحاسوبية، فهي تستعمل مجموعة من الكلمات الخاصة وتخضع البرامج المكتوبة بهاته اللغة لمجموعة من القواعد.

## الكلمات الخاصة

كل الكلمات الخاصة مستوحاة من اللغة الإنجليزية. ولكل منها استعمال خاص ولا يجوز استعمال أسماء هذه الكلمات لتسمية المتغيرات وغيرها.
| الكلمة | الاستعمال | الكلمة | الاستعمال |
| ABSOLUTE | | AND | وصل منطقي |
| ARRAY | تعريف الجداول والمصفوفات | ASM | |
| BEGIN | تحديد بداية | CASE | اختيار حسب الحالات |
| CONST | تعريف الثوابت | CONSTRUCTOR | |
| DESTRUCTOR | | EXTERNAL | |
| DIV | قسمة طبيعية تامة | DO | للتنفيذ |
| DOWNTO | | ELSE | |
| END | تحديد نهاية | FILE | |
| FOR | | FORWARD | |
| FUNCTION | تعريف دالة | GOTO | قفزة غير مشروطة |
| IF | اختيار مشروط | IMPLEMENTATION | |
| IN | | INLINE | |
| INTERFACE | | INTERRUPT | |
| LABEL | تعريف اللافتات | MOD | باقي القسمة الطبيعية |
| NIL | | NOT | نفي منطقي |
| OBJECT | | OF | مستعملة في تعريف الجداول |
| OR | فصل منطقي | PACKED | |
| PRIVATE | | PROCEDURE | تعريف برنامج فرعي |
| PROGRAM | | RECORD | تعريف تسجيل |
| REPEAT | | SET | |
| SHL | | SHR | |
| STRING | | THEN | |
| TO | | TYPE | تعريف أنواع جديدة |
| UNIT | | UNTIL | |
| USES | | VAR | تعريف المتغيرات |
| VIRTUAL | | WHILE | |
| WITH | | XOR | |

## الأدوات

لإنشاء برامج باستعمال لغة باسكال، فالمطور بحاجة إلى مترجم (Compiler). ويوجد الكثير من الأدوات التي تسمح لمطوري البرامج باعتماد لغة باسكال لإنشاء برامجهم. منها ما يوفر مترجما فقط ومنها ما يوفر منظومة متكاملة من أداة تحرير تسهل كتابة البرامج وحتى الترجمة ومتابعة الأخطاء.

### الأمثلة

يمكننا سرد أشهر الأدوات هنا :
* توربو باسكال Turbo PASCAL: نظام متكامل لشركة بورلند يضم محرر ومترجم ومتابع للتنفيذ (DEBUGGER). اشتهر كثيرا في الفترة ثمانينيات القرن 20 وبداية التسعينيات. وهو أداة بسيطة سهلة للمتعلمين ويمكن العثور عليه على النت.
* فري باسكال : كما يظهر من اسمه فهو مترجم من البرامج المفتوحة يعمل على أنظمة متعددة. متوافق مع توربو باسكال.
* جنو باسكال : مترجم للغة باسكال يقبل صياغة حسب معيار ANSI/ISO ويتوافق جزئيا مع البرامج المكتوبة حسب صياغة توربو باسكال.
اضافة إلى مجموعة أخرى من البرمجيات أخرى مثل دلفي وكيلكس وديف باسكال وغيرهم.

## هيكل البرامج

أي برنامج مكتوب بلغة الباسكال فهو مكون من 3 أجزاء :
* ترويسة : تحمل تسمية البرنامج
* تعريفات : وفي هذا الجزء يتم تعريف كل ما يستعمله البرنامج من متغيرات وثوابت وأنواع بيانات جديدة ودوال وغيرها.
* بدن البرنامج : ويضم سلسلة التعليمات والتي بتنفيذها تسلسليا ويؤدي البرنامج المطلوب منه.

### مثال
#### ملاحظة

    استعمال (* --------- *) يهدف منه وضع تعليقات تفيد المبرمج ولا تأثر على البرنامج حيث أن المجمع يتجاهلها. وكما يلاحظ فهي تبدأ بـ (* أو { لتعليم نقطة بداية التعليق، وبالمقابل فإن *) أو } فهي علامة نهاية التعليق.