لغة الدالفي delphi كل ما يتعلق بالدالفي و الباسكال

قديم 17-03-2009, 10:43 PM
  #1
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
Flash دروس في الباسكال


بسم الله الرحمن الرحيم....
رأيت ان الكثير يبحث عن تعلم لغة الباسكال
فأقدم اليوم اعزائي الاعضاء دروس عن لغة الباسكال...
12 درسا + تطبيقات بدأنا على بركة الرحمن
الدرس الاول

قبل أن نتمكن من كتابة برامج بلغة الباسكال أو أي لغة أخرى لا بد لنا أولا من فهم منطقي لجميع الخطوات الواجب


إتباعها لحل المسألة بواسطة الحاسب


هذه الخطوات هي ما تعرف باللوغاريتم The Algorithm بعد ذلك يمكن تحويل هذه الخطوات إلى إيعازات باسكال

والتي ستتحول بدورها إلى لغة الآلة المستعملة

بواسطة برنامج المصنف Compiler

وبرنامج الباسكال هو مجموعه من الإيعازات بعضها منفذ Executable وبعضها غير منفذ Non-Executable

وتتألف هذه الإيعازات من كلمات دليليه أو من كلمات تعريفية يجب على المبرمج تعريفها في بداية كل برنامج

ولتوضيح ذلك نرى مخطط لبرنامج باسكال

Program The Total (input, output);


{This program find sum of two integer number}

Var

A, B, Total: integer;

Begin

Write (‘Enter two integer numbers to be add: ‘);
Readln (a, b);
Total: = a+b;
Writeln (‘The sum of’, A,’and’, B,’is’, Total);
End.

حيث نلاحظ

- السطر الأول هو للتعريف باسم البرنامج ووسيله الإدخال والإخراج

- أن الجزء الملون بالأزرق هو عباره عن كلمات محجوزه سنتعرف عليها بالتفصيل بالدروس القادمه

- الجزء الملون بالأخضر هو عباره عن إيعاز غير منفذ وهي ملاحظات خاصه بقاريء البرنامج

- الكلمه الدليليه Var للتصريح عن المتغيرات وسيتم دراستها بالتفصيل

- الجزء الممتد من Begin إلى End هو عباره عن جسم البرنامج والأوامر بينها

- السطر الأخير يحتوي على End متبوعه بنقطه وذلك للدلاله على نهايه البرنامج وسنلاحظ أن

1- بعد كل سطر هنالك نقطه فاصلة ( للدلالة على سطر آخر يليه

2- بعد كلمه End هنالك نقطة (.) للدلاله على أنه لا يوجد سطر بعد ذلك
.............................. ............
الدرس الثاني : أنواع البيانات في الباسكال


في هذا الدرس سوف نتعرف على أنواع البيانات في لغة الباسكال والقواعد الخاصه لكل منها

للتمكن من جمع هذه البيانات في تعابير تشكل إيعازات البرامج في هذه اللغة

يمكننا تمييز نوعين من أنواع البيانات :


الأول
وهو ما تشترك فيه كل لغات البرمجه لذلك سنطلق عليه إسم البيانات القياسيه وهي:

1- الكميات الصحيحه Integer
وهي الأعداد الصحيحه الكامله التي لا تحوي على كسور

مثل 11

2- الكميات الحقيقيه Real

وهي الأعداد الحقيقيه التي تحوي كسور فيها

مثل 2.3434

3- الكميات المميزه Char

وهي الحروف والأشكال المميزة

مثل A,*,H,^,&

4- الكميات المنطقيه Boolean

ويمكن أن تأخد قيمتين هما إما صحيح True أو خطأ False


الثاني
وهو البيانات التي يصرح بها عن طريق المبرمج وذلك بتعريف أنواع جديده من البيانات ليست من الأنواع الأربعة التي تكلمنا عنها



التعديل الأخير تم بواسطة achraf.mouni ; 17-03-2009 الساعة 11:19 PM
achraf.mouni غير متواجد حالياً  
قديم 17-03-2009, 10:46 PM
  #2
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
افتراضي

الدرس الثالث : المتغيرات في برنامج الباسكال

التصريح Var
ويتم في هذا القسم من البرنامج التصريح عن نوع البيانات بالبرنامج قبل إستخدامها
ويتم التصريح حسب نوع البيانات إما الأنواع الأربعه Integer , Real , Boolean , Chr أو نوع قام المستخدم بتعريفه وسيتم دراسته بفصل آخر
ويخضع إسم المتغير إلى شروط وهي
1- أن يبدأ بحرف ( ولا تقبل الأسماء التي تبدأ بأرقام )
2- يحوي الإسم حروفا وأرقاما فقط
3- لا يكون الإسم من ضمن الكلمات المحجوزه بالذاكرة
4- يفضل دائما أن يكون إسم له معنى للتسهيل

أمــــثــلة

A: integer; تم تعريف مكان بالذاكره إسمه A وهو يقبل البيانات فقط من نوع الأعداد الصحيحه
B: Real; تم تعريف مكان بالذاكره إسمه B وهو يقبل البيانات من النوع الصحيح وأيضا النوع الذي الحقيقي الذي يحوي كسور
Grade: Chr; تم تعريف مكان بالذاكره إسمه Grade وهو يقبل البيانات من النوع Chr
F: Boolean; تم تعريف مكان بالذاكره إسمه F وهو يقبل بيانات من النوع Boolean أي قيم منطقيه (يقبل إما قيمه True – False )

والآن لنأخذ مثال تطبيقي على إستخدام التصريح Var

A:=5; (صحيح)

A:=3.5; (خطأ) – لإنه تم إسناد عدد حقيقي كسري إلى متغير صحيح


B:=5; (صحيح)

B:=3.5; (صحيح)

Grade:=`r`; (صحيح)

Grade:=d; (خطأ) – لعدم وضع الأقواس

F:=True; (صحيح)

F:=False; (صحيح)

F:=10; (خطأ) – لإن المتغير F لايقبل إلا قيم منطقيه إما True أو False

ونلاحظ مما سبق

القيمه Real اعم من Integer فهي تقبل القيم الصحيحه والحقيقيه ولكنها تأخد حيز من الذاكرة أكبر
.............................. ........
الدرس الرابع : الثوابت في البرنامج

لقد تعرفنا على طريقة تعريف متغيرات بالبرنامج لحفظ البيانات فيها حسب نوعها وذلك داخل التعريف Var

ولكن ماذا لو أردنا تعريف بيانات تكون قيمتها ثابته طوال عمل البرنامج فإننا نستخدم لتعريفها

نوع جديد داخل الأمر Const وتكون على الشكل التالي

Const

A = 30 ;

B = 9.6 ;

C = “Name”;

- طوال عمل البرنامج سيسند للثابت A القيمة 30 ولا يمكن تغيير هذه القيمة خلال البرنامج أبدا

- نلاحظ أن هناك علامة مساواة = بين إسم الثابت وقيمته بينما في تعريف Var المتغيرات هناك علامة : بين إسم المتغير ونوعه

- الثابت المعرف يعامل في البرنامج على أنه كلمة محجوزة Reserved Word

Program Circle(input,output);

Const
Pi=3.14;

Var

Radius : integer ;
Circum , area : real ;

Begin

Writeln ( ‘Enter Radius’);

Read ( radius);

Circum := 2*pi* radius ;

Area := pi * radius * radius ;

Writeln (‘The value of circum is’,circum);

Writeln (‘The value of area is’,area);

End.

في البرنامج السابق قمنا بتعريف ثابت في البرنامج بالإسم pi وهو يتخذ دائما القيمة 3.14

إستخدام الثوابت في البرنامج يسهل عمل البرنامج ويسهل تعديل القيم بسهولة بخاصة في البرامج الكبيرة

لو أردنا تنفيذ البرنامج السابق ولكن بدون الإعتماد على الثوابت فسيكون البرنامج على الشكل

Program Circle(input,output);

Var

Pi : real ;

Radius : integer ;

Circum , area : real ;

Begin

Write (‘Enter Value of pi :’);

Readln (pi);

Writeln ( ‘Enter Radius’);

Read ( radius);

Circum := 2*pi* radius ;

Area := pi * radius * radius ;

Writeln (‘The value of circum is’,circum);

Writeln (‘The value of area is’,area);

End;

سنتعرف في هذا القسم على نوع جديد من الأوامر في الباسكال وهذا النوع من الأنواع الشائعة الإستخدام في البرنامج وهو الأمر Writeln ويستخدم هذا الأمر للطباعة وإخراج البيانات على الشاشة وله نوعان

الأول : Writeln

وهو يقوم بطباعة الجملة والإنتقال بعدها إلى السطر الذي يليه مثل

Writeln (‘This is First Line’);

Writeln (‘This is the second Line’);

Writeln (‘This is the first line’,’This is complete of the first line’);

نلاحظ في هذا المثال أنه سيقوم بطباعة الجملة الأولى وفي نفس السطر سيقوم بطباعة الجملة الثانية وسينتقل بعدها للسطر الذي بعده

الثاني : Write

وهو مشابه للأمر Writeln ولكن الفرق الوحيد أنه لا ينتقل سطر للأسفل بعد طباعة الجملة بل يكمل بنفس السطر

Write (‘This is the first line ‘);

Writeln (‘This is the complete of the first line’);

Write (‘This is the Second line’);

Write (‘This is complete of line 2’);

Writeln (‘This is the End’);

في هذا المثال توضيح كامل لعمل دالة الإخراج بحالتيها
achraf.mouni غير متواجد حالياً  
قديم 17-03-2009, 10:47 PM
  #3
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
افتراضي

الدرس الخامس : أمر Write والأمر Writeln

يقرأ البرنامج السطر الأول ويطبعه وبما أنه Write فإن المؤشر لن ينتق للسطر الذي يليه بل سيقرأ السطر الآخر ويطبعه بنفس السطر

وبما أن السطر الثاني من النوع Writeln فإن المؤشر بعد الإنتهاء من طباعة السطر ينتقل للسطر التالي لطباعة البيانات الأخرى

لذلك سيكون ناتج السطور السابقة بعد التنفيذ

This is the first line This is the complete of the first line

This is the Second line This is complete of line 2 This is the End

I

بعد الإنتهاء من نتفيذ الأوامر ينتقل المؤشر I إلى السطر الذي يلي آخر جمله لإنها من النوع Writeln

تدريب :

لو أراد منك طباعة الأسطر التالية

My Name is Rayan

o

I live in Riyadh

حيث يقصد دائما بالعلامة o فراغ

الجواب

Writeln (‘My Name is Rayan’);

Writeln ;

Writeln (‘I Live in Riyadh ‘);

ويمكن أيضا حلها بالشكل التالي

Writeln (‘My Name is Rayan’);

Writeln(‘’);

Write (‘I Live in Riyadh ‘);

والفرق بينهما أن المؤشر في الحالة الأولى سيكون في النهاية في السطر الذي يلي آخر عبارة

وفي المثال الثاني سيكون في نفس السطر الأخير

لو أراد طباعة قيمة في متغير فنستخدم الأمر كما يلي في هذا المثال

فلو فرضنا أن S=10 وأراد طباعة قيمتها فنكتب

Writeln (‘The Value of S =’,s);

ويمكن أيضا طباعة أكثر من قيمة أكانت جملة أو متغير وذلك بإستخدام الفاصلة [,] بينها

مثل لو عرفنا المتغيرات التالية

A = ‘Rayan’;

B = ‘=’ ;

C= ‘20’;

Writeln (‘My Name is’,B,A,’and my age is’,c);

فسيكون الناتج على الشكل

My Name is =Rayan and my age is 20
.............................. ..........
الدرس السادس : أمر Read والأمر Readln

سنتعرف في هذا القسم على نوع جديد من الأوامر في الباسكال وهذا النوع من الأنواع الشائعة الإستخدام في البرنامج وهو الأمر Readln ويستخدم هذا الأمر لإدخال البيانات من المستخدم وحفظها في متغيرات تناسب نوع البيانات المدخلة وله نوعان

الأول : Readln

وهو يقوم بقراءة البيانات من المستخدم وبعدها ينتقل المؤشر للسطر التالي

الثاني : Read

وهو مشابه للأمر Readln ولكن الفرق الوحيد أنه لا ينتقل سطر للأسفل بعد قراءة البيانات بل يكمل بنفس السطر

Write (‘Enter Your Name :’);

Readln (Name);

في المثال السابق يقوم البرنامج في السطر الأول بطباعة السؤال ( أدخل إسمك ) ولإننا إستخدمنا الأمر Write فإن المؤشر لا ينتقل للسطر التالي بل يقرأ السطر التالي والمؤشر في نفس السطر

في السطر التاني ينتقل البرنامج لوضع إستقبال البيانات من المستخدم ومن ثم حفظها في المتغير المختار Name و يجب أن تكون البيانات المدخلة من نفس نوع المتغير وإلا سوف يولد البرنامج رسالة خطأ

Enter your name : I

لو أضفنا السطور التالية للمثال

Writeln (‘Enter your Age :’);

Read (Age);

Write (‘Enter your Salary :’);

Readln (Salary);

في السطر الثالث يطبع البرنامج الرسالة وينتقل بعدها للسطر التالي لإستقبال البيانات من المستخدم ، ونلا حظ هنا اننا إستخدمنا الأمر Read

بعدها سيقوم البرنامج بطباعة السطر الخامس ولن ينتقل للسطر التالي بل سيستقبل البيانات في نفس السطر لإننا إستخدمنا الأمر Write

__________________
achraf.mouni غير متواجد حالياً  
قديم 17-03-2009, 10:53 PM
  #4
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
افتراضي


الدرس السابع : قاعدة الأولويات


يجب علينا قبل الدخول في البرمجة فهم الطريقة الرياضية للتعامل مع البيانات وطريقة تعامل المصنف مع الدوال الرياضية والأقواس

وبرنامج الباسكال يتعامل مع العمليات الرياضية حسب القاعدة التالية

والتي تعتمد على الأسبقية بحيث

أولا : تنفيذ الدالة Not

ثانيا : تنفيذ الدوال التالية

AND

MOD

DIV

/

*
بحيث أن الدالتين Div و Mod دوال رياضية سيتم التعرف عليها لاحقا

ثالثا : تنفيذ العمليات

OR

-

+

رابعا : تنفيذ المعاملات المنطقية

=

<>

<=

>=

<

>

عندما يكون هناك دالتين من نفس المستوى ننفذ الدالة بدءا من اليسار إلى اليمين

لتتضح الرؤيا حول إستخدام قاعدة الأولويات نرى الأمثلة التالية

1-Write a PASCAL program to find the roots of a quadratic equation (assume that b2 – 4ac >= 0)


يريد في هذا المثال إيجاد جذور لمتتابعة ثنائية

الحل

Program Root(input,output);

Var

A,b,c :integer;

X1,x2 : real ;

الناتج عرفناه على أنه عدد حقيقي لإنه سيكون ناتج من عمليات منها عمليات قسمة

وفي حالة وجود عمليات قسمة فناتجها دائما عدد حقيقي وليس صحيح

Begin

Writeln (‘Enter the Numbers A , B ,C’);

Readln (a,b,c);

X1:= (-b+sqrt(b*b –4*a*c))/(2*a);

X2:= (-b-sqrt(b*b –4*a*c))/(2*a);

Write (‘The Nunmber X1 =’,x1 ,’And Number X2 =’,x2);

End.

2- Find (7 Div 2/3)

في هذا المثال نلاحظ أن الدالتين Div و / يأتيان في مرتبة واحده في أولوية التنفيذ

ولكن لإن Div أتت قبل من جهة اليسار فنقوم بتنفيذها أولا لذلك

7 div 2/3 =


3 / 3 =


1.0


( لاحظ أن العدد جوابه 1.0 وليس 1 لإنه ناتج من قسمة فلذلك يعد عدد حقيقي Real ولا يعتبر Integer)

__________________
achraf.mouni غير متواجد حالياً  
قديم 17-03-2009, 10:56 PM
  #5
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
افتراضي


الدرس الثامن : التعابير الرياضية



في هذا القسم سوف نتعرف على العمليات الرياضية المستخدمة في الباسكال وطريقة إستخدامها

أولا : العمليات - و + و *

التعامل مع هذه العمليات متشابة وهي تقبل الأعداد الحقيقة والصحيحة

5 + 7 = 12

5.0 + 7 = 12.0

7 –5 =2

7*5 = 30

نلاحظ من هذا المثال أن ناتج

عدد صحيح Integer + عدد صحيح Integer = Integer

عدد حقيقي Real + عدد حقيقي Real = Real

عدد صحيح Integer + عدد حقيقي Real = Real

ثانيا : العملية /

عملية القسمة دائما مهما كان نوع المدخلات أكانت أعداد حقيقة أو صحيح

فجوابها دائما عدد حقيقي Real

طبعا القسمة على الصفر لا تصح وتولد خطأ بالبرنامج وهو خطأ من النوع الذي يظهر عند تشغيل البرنامج فيجب الإنتباه

ثالثا : العملية Div

وهي عملية قسمة ولكن فقط تعطي الناتج من القسمة وتهمل الباقي من القسمة

20 Div 3 = 6

18 Div 3 = 6

(-17) Div 3 = -5

19 Div 3 = 6

3 Div 10 = 0

16 Div (-3) = -5

الدالة Div تقبل دائما مدخلات من النوع الصحيح Integer وتعطي جواب دائما Integer

ولا تقبل أبدا القيم الحقيقية Real

1.4 Div 4 = X

ثالثا : العملية Mod


وتعطي هذه العملية الباقي من قسمة عددين ولاحظ دائما عند قسمة عدد على أكبر منه فناتجها العدد نفسه


20 Mod 3 = 2


18 Mod 3 = 0


19 Mod 3 =1


3 Mod 10 = 3




الدالة Mod تقبل دائما مدخلات من النوع الصحيح Integer وتعطي جواب دائما Integer


ولا تقبل أبدا القيم الحقيقية Real


1.4 Mod 4 = X

__________________
achraf.mouni غير متواجد حالياً  
قديم 17-03-2009, 10:56 PM
  #6
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
افتراضي

الدرس التاسع

الأنواع المدرجة Enumerated Types
~~~~~~~~~~~~~~~~~~~~~~~~
من الخصائص الجذابة في لغة باسكال هي تعاملها مع أنواع معلومات مدرجة (أي لها درجات). قسم من هذه الأنواع معرفة داخل اللغة نفسها مثل Integer و char فهي عبارة عن مجاميع مدرجة من البيانات تكون لها قيم إبتدائية مثبتة من قبل الشركة المصدرة للمترجم، ويمكن للمبرمج أن يعرف أنواع آخرى لاستخدامته الخاصة في برامجه.
مثلا يمكن للمبرمج أن يعرف نوع من البيانات أسمه Color بحيث تكون قيمته (black, blue, white, red)
وذلك كما يلي:
TYPE
Color = (black, blue, white, red);

أو يمكن تعريف نوع لوصف حروف العلة
TYPE
vowel = (A, E, I, O, U);
الأنواع Color و vowel يطلق عليها User-defined enumerated data types وهي عبارة عن سلسة مرتبة من المعلومات تمت تسميتها من قبل المستفيد.

وبهذا يمكن تعريف متغيرات من النوع Color أو Vowel كما يلي :
TYPE
Color = (black, blue, white, red);
vowel = (A, E, I, O, U);
VAR
letter : vowel;
myColor : Color;

هنا المتغير letter لا يمكنه أن يحمل إي قيمة باستثناء الحروف المحددة في تعريف النوع vowel، وكذلك مع المتغير myColor.
ملاحظات عامة:
~~~~~~~~~~
1. لا يمكن تكرار قيمة ما في مكانين، مثلا هذا النوع لن يكون مقبول:
TYPE
grade = ('A', 'B', 'C');

لأن 'A' و 'B' و 'C' موصوفة ضمن النوع Char المعرف مسبقا في لغة باسكال.
إيضا
TYPE
day = (sat, sun, mon, tue, wed, thu, fri);
weekend = (fri);

تم تكرار الوصف fri في نوعين ، وهذا خطأ.
2. التعامل مع الانواع المدرجة هو نفسه التعامل مع باقي الأنواع القياسية، بإستثناء أنه لا يمكن قرائتها أو طباعتها باستعمال الدوال Read وwrite.
الدالة PRED(x):
~~~~~~~~~~~
تعيد هذه الدالة العنصر الذي يسبق العنصر X في النوع المدرج.
TYPE
day = (sat, sun, mon, tue, wed, thu, fri);
.
.
.
Pred(sun) => sat
Pred(tue) => mon
Pred(sat) => Undifind قيمة غير معرفة
الدالة SUCC(x):
~~~~~~~~~~~
تعيد العنصر التالي للعنصر x
TYPE
day = (sat, sun, mon, tue, wed, thu, fri);
.
.
.
Succ(sun) => mon
Succ(tue) => wed
Succ(fri) => Undifind قيمة غير معرفة
الدالة ORD(x):
~~~~~~~~~~~
تعيد هذا الدالة موقع العنصر x ضمن النوع المدرج
TYPE
day = (sat, sun, mon, tue, wed, thu, fri);

.
.
.
Ord(sat) => 0
Ord(tue) => 3
Ord('A') => 65
الدالة CHR(x):
~~~~~~~~~~~~
وهي عكس الدالة ORD وتعمل مع النوع char فقط

Chr(65) => 'A'
Chr(67) => 'C'

__________________
achraf.mouni غير متواجد حالياً  
قديم 17-03-2009, 10:57 PM
  #7
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
افتراضي

الدرس العاشر

جملة IF - ELSE

قبل البدأ في شرح جملة IF - ELSE وتوضيح صيغتها العامة، يجب أن نتطرق إلى موضوع مهم وهو التعابير البوليانية في لغة باسكال، فلنبدأ على بركة الله.
التعابير البوليانية :
ّّّّّّّّّّّّّّّّّّّّ~~~~~~~~~~
في لغة باسكال تظهر التعابير البوليانية على أحد شكلين:
1- المتغيرات البوليانية Boolean variables
وهي عبارة عن متغيرات خاصةتعرف في القسم VAR من البرنامج، وتأخذ أحد قيميتن True أو False
VAR
switch : Boolean;
هنا المتغير switch يأخذ أحد قيمتين Ture أو False
switch := Ture;
switch := False;
ويجب ملاحظة أنه لا يمكن قراءة مثل هذه المتغيرات باستعمال الدالة read إلا أنه من الممكن طباعتها بالدالة write.
2- متغيرات مربوطة بعوامل نسبية Relation Operators:
من الممكن صياغة التعابير البوليانية باستعمال متغيرات تربط بينها العوامل النسبية التالية
= يساوي
<> لا يساوي
=> أقل من أو يساوي
=< أكبر من أو يساوي
> أقل من
< أكبر من

3- تعابير بوليانية مربوطة بعوامل منطقية logical operators
يمكن ربط أكثر من تعبير بولياني باستعمال أحد العوامل المنطقية التالية
NOT نفي
AND و
OR أو

ملاحظة:
العوامل المنطقية تتمتع بأسبقية أعلى من العوامل النسبية، لهذا فإن التعبير التي يعتبر خطأ:
NOT 4>5

لأن العامل NOT سوف يطبق أولا، لذا يجب كتابه التعبير السابق كما يلي:
NOT (4>5)

لتكون قيمته true

بعد هذا الشرح عن التعابير البوليانية، نعود إلى جملة IF

جملة IF ELSE
~~~~~~~~~
الشكل العام لها:
IF boolean expression
THEN statment1
ELSE statment2

&& الحالة الأولى:
^^^^^^^^^^^
عندما يكون لدينا عبارة واحدة في فيعي جملة IF
مثال: لدينا متغيرين num1 و num2 والمطلوب طباعة العدد الأكبر بينهما
IF num1>num2
THEN writeln('The larger is: ', num1)
ELSE writeln('The larger is: ', num2)
لاحظ هنا عدم وجود فاصلة منقوطة في العبارات بعد THEN و ELSE

&& الحالة الثانية:
^^^^^^^^^^^
عندما تكون لدينا أكثر من عبارة في كل فرع من فرعي الـ IF
مثال: في نفس المثال السابق لو كان المطلوب تخزين الرقم الأكبر في متغير max بعد طباعته

IF num1>num2
THEN BEGIN
writeln('The larger is: ', num1);
max:= num1
END
ELSE BEGIN
writeln('The larger is: ', num2);
max:= num2
END
في هذه الحالة نحتاج إلى وضع العبارات التي بداخل الـ THEN بين BEGIN و END ونفصل بينها بفواصل منقوطة، ولكن بدون فاصلة قبل الـ ELSE

__________________
achraf.mouni غير متواجد حالياً  
قديم 17-03-2009, 10:57 PM
  #8
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
افتراضي

الدرس الحادي عشر


عبارة CASE في باسكال

تستخدم عبارة Case (الحالة) في المواقع التي يراد فيها الاختيار بين عدد من البدائل.
تستخدم عبارة الـ CASE كبديل عن استعمال عدد من عبارات IF - ELSE المتتالية، والتي غالبا ما تكون أكثر تعقيدا، وصعبة التتبع والفهم
أما باستعمال الـ CASE فإن البرنامج يصبح أكثر وضوحا، وسهل التتبع

الصيغة العامة لـ CASE:
~~~~~~~~~~~~~
CASE selector OF
constent1 :
statement1;
constent2 :
statment2;
.
.
.
.
END;
selector هو عبارة عن متغير من أي نوع مدرج (راجع درس الأنواع المدرجة)
constent1 و constent2 هي قيم يمكن أن يأخذها المتغير selector
فإذا كانت قيمة selector هي constent1 يتم تنفيذ العبارت التالية لها في هيكل CASE وهي statement1.
وإذا كانت قيمته constent2 تنفذ العبارة statment2 وهكذا.

لاحظ المثال التالي:
PROPGRAM ex1 (input, output);
VAR
lettergrade : char;
BEGIN
wirteln('Enter your last grade: ');
readln(lettergrade);
CASE lettergrade OF
'A': writeln('4.0');
'B': writeln('3.0');
'C': writeln('2.0');
'D': writeln('1.0');
'F': writeln('0.0');
END
END.
في هذا المثال سوف يطبع البرنامج الدرجة المقابلة للتقدير الذي حصلت عليه مؤخرا

في بعض الأحيان قد نرغب في تنفيذ نفس الأوامر لعدة قيم للمتغير selector، في هذه الحالة تذكر هذه القيم وتفصل بينها بالفاصلة
PROPGRAM ex2 (input, output);
VAR
number : Integer;
BEGIN
wirteln('Enter a number between 1 - 10: ');
readln(number);
CASE number OF
1, 3, 5, 7, 9 : writeln('The number is odd');
2, 4, 6, 8, 10: writeln(' the number is even');
END
END.

طبعا إذا أردنا تنفيذ أكثر من أمر واحد في كل حالة يجب أن نحيطها بـ BEGIN و END.

__________________
achraf.mouni غير متواجد حالياً  
قديم 17-03-2009, 10:58 PM
  #9
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
افتراضي

الدرس الثاني عشر


حلقات التكرار في لغة باسكال
قد يتطلب الأمر في بعض البرامج أن نكرر تنفيذ مجموعة من الأوامر لعدد من المرات، أو إلى إن يصبح تعبير ما صحيح (true) أو خطأ (false).
كأن نرغب في أن يطلب برنامجنا إدخال10 أعداد من المستخدم، أو نطلب منه إدخال القدر الذي يريده من الأعداد على أن يكون العدد الأخير يساوي 0 مثلا. هنا نحن بحاجة إلى استعمال الحلقات في برنامجنا.
يوجد في لغة باسكال 3 تراكيب لعمل حلقات التكرار، وسوف نبدأ في هذا الدرس بتعلم أولى هذه الحلقات وهي حلقة FOR.
حلقة التكرار FOR:
~~~~~~~~~~~~
إذا أردنا تنفيذ مجموعة من الأوامر لعدد محدد من المرات، لنقل 6 مرات.
فأمامنا خياران، الأول أن نعيد كتابة هذه الأوامر 6 مرات في البرنامج وهو أمر مزعج خاصة إذا كان المطلوب أن نعيد التنفيذ لعدد أكبر من المرات، 600 مثلا
أما الخيار الثاني (وهو الأفضل) أن نستخدم حلقة التكرار FOR في البرنامج. وبهذا فإننا تكتب الأوامر التي ترغب في تكرارها 6 مرات داخل حلقة For مرة واحدة فقط
كيف؟
كهذا :
كود:
كود بلغة HTML:
FOR i:=1 TO 6 DO
write('*');
هنا استعملنا حلقة FOR لتكرار أمر الطباعة write ('*') لستة مرات
هذا البرنامج سوف يطبع الأعداد من 1 إلى 20

كود:
كود بلغة HTML:
PROGRAM example1 (input,output);
VAR
i: integer;
BEGIN
FOR i:=1 TO 20 DO
Writeln ( i);
END.
والآن لاحظ هذا البرنامج الذي يطبع نفس الأعداد ولكن بالعكس من 20 إلى 1
كود:
كود بلغة HTML:
PROGRAM example1 (input, output);
VAR
i: integer;
BEGIN
FOR i:=20 DOWNTO 1 DO
Writeln ( i);
END.
هل لاحظت الفرق بين استخدام TO و DOWNTO داخل حلقة FOR؟
في الأمثلة السابقة كانت هناك عبارة واحدة نرغب في تكراره، أي أن جسم الحلقة مكون من عبارة واحدة فقط، ولكن يمكن لجسم الحلقة أن يتكون من عدة عبارات، وفي هذه الحالة يجب أن تحدد بداية ونهاية جسم الحلقة بـ BEGIN و END.

__________________
achraf.mouni غير متواجد حالياً  
قديم 17-03-2009, 11:00 PM
  #10
achraf.mouni
مشرف قسم
الكمبيوتر وتطوير المواقع والانترنت
مشرف قسم
الرياضيات والإعلام الآلي
 الصورة الرمزية achraf.mouni
 
تاريخ التسجيل: 08-09-2008
الدولة: الجزائر
المشاركات: 2,439
achraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداعachraf.mouni عضو محترف الابداع
افتراضي

التطبيق



برنامجك الاول :
اول شئ يجب ان تفعله ان تفتح مترجم الباسكال .
في هذه السلسلة المترمجة من موقع .sepsis سيتم شرح البرمجة بالباسكال بالتفصيل و بطريقة سلسة و سهلة للجميع.
دائماً نبدأ البرنامج بكتابة اسمه . ادخل program و اسم البرنامج بعدها . سوف نقوم بتسمية برنامجنا الاول "Hello" لانه سيقوم بطباعة الجمله المشهوره "Hello world" على الشاشه , سوف تكون طريقة الكتابه بهذه الطريقه :

كود:
كود بلغة HTML:
program Hello;
بعدها يجب علينا ان نطبع الكلمتين begin و end . بعدها نقوم بكتابة شيفرة البرنامج بين هاتين الكلمتين . تذكر وضع النقطه بعد الكلمه end , هكذا ستكون صيغة ما كتبناه حتى الآن :

كود:
كود بلغة HTML:
program Hello; 

begin 
en
d.
الآن نكتب الشيفره التي تطبع الجمله على الشاشه :
كود:
كود بلغة HTML:
program Hello; 

begin 
Write('Hello world'); 
end.
يجب ان تكون الجمله بين علامة الاقتباس الفرديه ' . واي شي يكون بين علامة الاقتباس الفرديه عباره عن سلسله (كلمات و حروف) . كل السلاسل يجب ان تكون بهذا الشكل . علامة الفاصله المنقوطه ; هي نهاية السطر . يجب ان تتذكر دائما ان تضع هذه العلامه في نهاية سطر .

الامر Readln يستخدم لانتظار المستخدم ان يقوم بالضغط على زر الادخال لكي ينتهي البرنامج .
كود:
كود بلغة HTML:
program Hello; 

begin 
Write('Hello world'); 
Readln; 
end
.
الآن يجب ان تخزّن البرنامج بإسم hello.pas
achraf.mouni غير متواجد حالياً  

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
tp في الباسكال emp21 الإستفسارات و الطّلبات 2 11-12-2009 05:44 PM
لغة الباسكال mimik لغة الدالفي delphi 21 04-06-2009 06:43 PM
دروس في الباسكال achraf.mouni الإعــلام الآلي والرياضيــات 16 28-01-2009 08:08 PM
دروس الباسكال rabia311 الإعــلام الآلي والرياضيــات 4 02-01-2009 10:43 AM
درس في الباسكال achraf.mouni الإعــلام الآلي والرياضيــات 3 16-12-2008 07:25 PM


الساعة الآن 04:35 AM.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. , TranZ By Almuhajir