variables typeau.edu.sy/.../hospitalmgm/1-2/127_computer-skills.pdf · 2018-03-01 · variables...
TRANSCRIPT
119
VARIABLES TYPEمتغيرات األنواع
المقدمة 7.1
,Integer, Real, Booleanن أطلعنا على األنواع القياسية في لغة البرمجة باسكال مثل )سبق وأchar… etc مواصفات هذه األنواع تحدد بشكل كامل من قبل المترجم عند تنفيذ برامج لغة البرمجة ،)
باسكال . لكل أنواع مناسبةأكثر، تحدد مواصفاتها من قبل المبرمج، سيتم تعريف اً في هذا الفصل سنقدم أنواع
برنامج مما يساعد على توضيح المشكلة ويسهل قراءة وكتابة البرنامج. TYPESاألنواع 7.2
من الممكن استخدامها في البرنامج ، الصيغة ة( للتصريح عن أنواع جديدTypeتستخدم كلمة نوع ) :العامة الستخدام النوع هي
Type Typename = new type;
لى مصفوفة )مجموعة من القيم مكونه إلتوضيح هذه الصيغة نفرض أن البرنامج الذي نكتبه يحتاج صريح فيمكن اإلعالن أو الت , (، وهذا النمط من المصفوفة سيستخدم في البرنامج مراراً ةقيم 20من
ن نمط جديد كما يلي:عType MyArray = array [ 1 .. 20 ] of byte ;
الفصل السابع
120
ل من كتابة تعريف المصفوفة أعاله في ك ( بدالً myarrayاآلن يمكن أن نعلن عن متغيرات من نوع ) لى مثل هذه المصفوفة. إمرة نحتاج
Var X:myarray ; . (Typeألنواع والذي يسمى )اإلعالن عن األنواع الجديدة سيكون في قسم اإلعالن عن ا
:أصناف لألنواع ةبشكل عام هناك ثالث
SCALARS TYPEاألنواع العددية 7.2.1 لنوع،ااألنواع العددية هي ببساطه قائمة من القيم، والتي من الممكن أن تفرض للمتغير قيمه من ذلك
النوع من هذا اً ل قائمة باألعداد الصحيحة وعندما نعرف متغير ( يمثintegerفمثال إن النوع القياسي )من فإننا من الممكن أن نسند للمتغير أي قيمة من قيم األعداد الصحيحة )فعندما نقول أن المتغير
:النوع الفالني فهذا يعني أن هذا المتغير سيأخذ قيمة محدده بذلك النوع( فمثال Type Units = ( inches , feet , miles ) ; الحظ أن هذا النوع حدد بثالث وحدات لذلك فإن المتغير الذي سيعرف من هذا النوع سوف لن يكون
ة محددال ةبمقدوره أن يحمل قيمة غير تلك المحددة بالتعريف )ممكن أن يأخذ أي قيمة من القيم الثالث فقط(.
ضمن األنواع القياسية المحددة بلغة البرمجة أصالً اآلن بعد اإلعالن عن نوع جديد غير موجود ، وكما نعمل unitsباسكال، فإننا من الممكن أن نعلن عن متغير في حقل اإلعالن عن المتغيرات
ذا ى، فإضمن هذا البرنامج فقط وليس البرامج األخر مع المتغيرات القياسية، وسيكون هذا النوع فعاالً د . هذا النوع في برنامج آخر فيجب أن نعلن عنه ضمن البرنامج الجديما كانت هناك حاجة الستخدام
ة:// مالحظما أ، اإلجراءاتهي محلية لتلك اإلجراءاتالذي يظهر في جسم األنواعقسم اإلعالن عن
فهي عامة البرنامج الرئيسيتلك التي تظهر في
121
Var X: units;
مثله عن األنواع العددية: أ
Type Day = (Monday, Tuesday, Wednesday, Thursday, Friday Saturday, Sunday) ; Operator = ( plus, minus, multiply, divide ) ; Trigfunction = ( sine, cosine, tangent, secant, cosecant ) ;
هنا سنعرض متغيرات من تلك األنواع Var Holiday, workday : day ; Addingop, multop : operator ;
مالحظة:// ( من الممكن أن يدمجان معا النوعواإلعالن عن المتغير من ذلك النوع)اإلعالن عن التعريفان واحد كما يلي : بتعريف
Var
Scale : ( inches , feet , miles ) ;
. اتلمتغيرا تعريفو اعألنوا تعريف بين يفصلأن يفضل ت لحالامعظم لكن في و
122
المدونة في اإلعالن عن النوع العددي ثابتة لذلك النوع، لذلك من الممكن أن نكتب إن القيم
Holiday: = Friday ; scale: = miles;
يات التي من الممكن استخدامها مع المتغيرات العددية هي العمليةةةةةةةةةةةةةةةةات العالئقيةةةةلن العمإ (relational operators( وطبعا ستكون نتيجة هذا التعبير من النوع )Boolean أي ) صح
فمثال أو خطأ.
مالحظة:// لى متغير من نوع آخر مثالا إ( سناد قيمة من نوع معين )استخدام المساواةإل يجوز
Holiday := miles ; \
مالحظة:// لى نوعين إن قيم األنواع عادة تكون محددة بين قوسين، ول يجوز أن تكون هناك قيمة تعود إلحظ
ف األنواع التالية غير مقبول في ذات البرنامج، يجب أن تحدد لنوع واحد، فمثال تعري
Type Fruit = ( apple, orange, lemon, pineapple, tomato ); Vegetable = ( potato, carrot, tomato, onion ) ;
يظهر في التعريفين tomatoوالسبب الن العنصر \
مالحظة:// ية قراءة وطباعة القيم العددية مباشرة لسوء الحظ فإن لغة البرمجة باسكال ل توفر إمكان
)المتغيرات من هذا النوع(
Holiday := Friday; Write ( holiday)
سيصدر رسالة خطأ المترجمألن مخرجات(، وربما ال تحصل على أي Fridayسوف ال يطبع ).
123
Monday < Friday Multiply > divide
:( هو بحد ذاته نوع عددي، فهو معرف ضمنيا كنوع قياسي كما يليBooleanإن النوع )Type Boolean = ( false , true );
وهي عبارة صحيحة . False < trueذا قلنا إ وطبعاً ( الدوالsucc,pred ( هي معرفة لألنواع العددية )أي يمكن استخدامها مع األنواع
العددية(، والقيمة المعادة هي من نفس نوع المعامالت المستخدمة، مثالً Succ( Monday ) = Tuesday
(، وآخر عنصر في القائمة ليس predمة ليس له )مع مالحظة أن أول عنصر في القائ (.succله )
( الدالةordلها معامالت عددية وتعيد قيمة عدد صحيح، والذي هو العدد الترتيبي للقي ) مةرتيبي يليه له عدد ت يالعددية في تعريف القائمة حيث أن أول قيمة لها العدد الترتيبي صفر والذ
:من األنواع أعالهقيمته واحد وهكذا .. مثال ... و Ord( plus ) = 0 Ord( tuesdy ) = 1 Ord( cosecant ) = 4
أأيضا من الممكن استخدام( مر التكرارforبالهيكلية ): For scale: = inches to miles do Do something ;
:( مثالwhileهنا ال يمكن استخدام )Scale: = inches ; While ( scale<= miles ) do Begin
124
Do something ; Scale: = succ( scale ) ; End;
. (succ (miles))سيفشل هذا البرنامج عند حساب
SUBRANGEت الجزئية جاالالم 7.2.2لدنيا احدود هذا النوع يعرف بإسناد ثابتين للمتغير في حقل اإلعالن عن النوع، وهذان الثابتان يمثالن ال
الجزئي، ويجب أن يختلفان ويكونا من نفس النوع مثال: لمجاللعليا لوالحدود ا Type Index = 1 ..35 ;
ن ، والمدى يكو ة( واإلثنان من نوع األعداد الصحيح35( والحد األعلى هو )1هنا الحد األدنى هو ) قيمة من القيم المحددة بالمدىأي (سيأخذ index(، عليه فإن المتغير الذي يعرف من نوع )1-35)
وليس له قيمة خارج هذا المدى.
التعريفان )اإلعالن عن النوع واإلعالن عن المتغير من ذلك النوع( من الممكن أن يدمجان
Type Index = 1 ..35 ; Letter = 'a' .. 'z' ; Digit = '0' .. '9' ; Var Count: index ; Firstchar ,lastchar: letter ;
مالحظة:// ال تستخدم األعداد الحقيقة من هذا النوع )أي ال يمكن أن نستخدم األعداد الحقيقية في المجاالت
الجزئية(
125
:هذان التعريفان من الممكن دمجهما بتعريف واحد كما يليVar Counter: 1 .. 35 ; Firstchar ,lastchar: 'a' .. 'z' ;
الت يفضل المحافظة على تعريفين منفصلين.الكن في معظم الح
SETSالمجموعات 7.2.3
ي أ( فأن t( مجموعة من األشياء من النوع )Sالمجموعة هي تجميع ألشياء من نفس النوع، فإذا كانت)في اً ( أو ال يكون عنصر Sفي المجموعة ) اً ما أن يكون عنصر إ( tمكون أو أي شيء من النوع )
(. Sالمجموعة )ن مألي نوع عددي )إن نوع القيم في المجموعة هي مجاميع جموعة وفقاً من الممكن أن نعرف نوع الم
:النوع العددي( مثال
مالحظة:// ( المعامالتoperators التي من الممكن أن تستخدم مع متغير لنوع معين ، ممكن )
ضا أن تستخدم مع المجال الجزئي لهذا النوع. مثال ... إذا كان :أيVar Index : 1 .. 10 ; Number : 1 .. 100 ; Result : integer ;
صحيحة : عبارةهي العبارةفإن هذه Result + number div index
متغيرات المجال الجزئي ممكن أيضا استخدامها على كال جانبي المساواة. مثال index : = number ; result : = index
126
Type Ingredients = ( apple, orange, bananas, strawberries, nuts, icecream, cream, pastry, sugar, ice ) ;
:المجموعة يكون فتعري Type Desert = set of ingredients;
( فيعلن عنها في حقل اإلعالن عن المتغيرات: desertأما المتغيرات من نوع )Var Feast , x: desert ;
ي ( والتingredients( هي مجموعة جزئية من النوع )desertالقيم الثابتة أو المتغيرة من النوع ) (. desertتعتبر النوع األساس للنوع )
بين عنصر وآخر، فاصلةل المجموعة بقائمة من العناصر المعرفة ضمن المجموعة، تفصل تمث :وجميع هذه العناصر محددة بقوسين مربعين . مثال
[ icecream , cream ] , [ apple , bananas , icecream ] , [ orange ]
صفات المجموعات وي المجموعة على أي عنصر عندها تسمى مجموعة خالية، ويرمز من الممكن أن ال تحت
.[]للمجموعة الخالية بالرمز
مالحظة:// إذا كانت عناصر مجموعة معينة متعاقبة فيمكن تحديد العنصر األول واألخير فقط كمجال جزئي
. مثال [ apple , orange , bananas , strawberries ]
من الممكن أن نكتب :[ apple .. strawberries ]
127
( اتحادunion اثنان من المجاميع ينتج عنهما مجموعة واحدة تحتوي عناصر ) :(. مثال+المجموعتين . عامل االتحاد هو )
[apple] + [bananas, sugar] = [apple, bananas, sugar] ( تقاطعintersection اثنان من المجاميع ينتج عنه مجموعة واحدة تحتوي فقط )
العناصر المشتركة بين المجموعتين )أي العناصر الموجودة في المجموعة األولى وبذات الوقت موجودة في المجموعة الثانية(. عامل التقاطع هو )*( مثال
[ Orange, icecream, cream ] * [ icecream, nuts ] = [ icecream ] ينتج عنه مجموعة واحدة فقط تحتوي على كل العناصر موعاتن من المجتيالفرق بين اثن
التي في المجموعة األولى ولكنها ليست عناصر في المجموعة الثانية. عامل الفرق هو :(مثال-)
[apple, strawberries, bananas ]– [strawberries, cream] = [apple,
bananas] ( الرمزIN ،هي من الكلمات المحجوزة تستخدم هنا الختيار انتماء عنصر لمجموعة )
نتيجة ذلك هو عبارة منطقية )صح أو خطأ(، مثال العبارة التالية عبارة صحية وطبعاً Apple in [ apple , or Apple in [ apple , orange , icecream ]
بينما العبارة التالية هي عبارة خاطئة Apple in [ orange , bananas , icecream , cream]
تستخدم العوامل العالئقية للمقارنة بين المجاميع، والمبينة بالجدول أمثله على ذلك: [ Orange , cream ] = [ cream , orange ] [ icecream ] ≠[ ice , cream ] [strawberries ]<= [ strawberries , cream ] [ apple .. ice ] > = [ icecream .. cream ]
128
.. ثالمعبارة المساواة ربما من الممكن استخدامها مع متغيرات المجاميع وتعابير المجموعة X: = [ apple , cream , sugar ] ; Feast: = x + [ icecream ] ;
اضياتمقارنة العمليات العالئقية المستخدمة في لغة البرمجة باسكال مع ما يقابلها في الري :جدول الرمز في لغة البرمجة باسكال الرمزالمستخدم في الرياضيات المعنى
[………] {……} (set)المجموعة + U (unionاالتحاد ) * (containsالتقاطع ) (containsتحتوي )
محتواة بالمجموعة (contained by)
)مجموعة جزئية من(
(inclussionتعود الى ) مجموعة خالية
(empty set) []
أمثلة محلولة 7.3 ( ثم أوجد ما يلي255..0عداد )أ وين مجموعتين ذات كلت اً كتب برنامجا: اطبع المجموعتين .1 جد اتحاد المجموعتين .2
مالحظة:// ( فإن فتحة هذه العالمة دائما تشير الى المجموعة األكبر أو تخدام العالمة )عند اس
129
واطبع النتيجةجد تقاطع المجموعتين .3 ة األولى والثانية واطبع النتيجةجد متممة المجموع .4 جة وجودة في المجموعة الثانية واطبع النتيجد العناصر الموجودة في المجموعة األولى وغير م .5
Program CH7_Program1;
Type Number=set of 0..255;
Var U, t1, t2, t3, t4, t5, t6, t7: number;
Procedure readset (var s1: number);
Var I, x: integer;
Begin
S1:= [];
For i: =1 to 10 do ;
Begin
Writeln ('Enter number 0..255');
Readln(x);
S1:=s1+[x];
End ;
End
Procedure writeset (s1: number);
Var I: integer;
130
Begin
Write ('{');
For i: = 0 to 255 do
If (I) IN (s1) then
write (i: 4); W
End ; Begin
Readset (t1);
Readset (t2);
Writeset (t1);
Writeset (t2);
T3:=t1+t2;
{union}
Writeset (t3);
T4:=t1*t2;
{intersection}
Writeset (t4);
U:=[0..255];
T5:=u-t1;
Writeset(t5);
T6:=u-t2;
Writeset (t6);
T7:=t1-t2;
writeset (t7);
End .
131
`
Begin
Write ('{');
For i: = 0 to 255 do
If (I) IN (s1) then
write (i: 4); W
End ; Begin
Readset (t1);
Readset (t2);
Writeset (t1);
Writeset (t2);
T3:=t1+t2;
{union}
Writeset (t3);
T4:=t1*t2;
{intersection}
Writeset (t4);
U:=[0..255];
T5:=u-t1;
Writeset(t5);
T6:=u-t2;
Writeset (t6);
T7:=t1-t2;
writeset (t7);
End .
132
عربي( ←المصطلحات العلمية )إنكليزي Account حساب
Algorithm خوارزمية
ALU وحدة الحساب و المنطق
Applications تطبيقات
Array مصفوفة
Boolean Operators معامالت منطقية
Byte بايت
Call by reference ء بالمرجعاستدعا
Call by value استدعاء بالقيمة
CASE Structure بنية الشرط االنتقائي
Comment تعليق
Compiler مترجم
Conditional Looping تكرار مشروط
Constant ثوابت
Control Statement جملة تحكم
Computer Memory ذاكرة الحاسوب
Computer Processors معالجات الحاسوب
Computer Software البرامج الحاسوبية
CPU وحدة المعالجة المركزية
CU وحدة التحكم
Data بيانات
Data Boolean-type بيانات منطقية
133
Data Char-type بيانات حرفية
Data Transfer Rate معدل نقل البيانات
Div قسم صحيح
END نهاية
Field حقل
Function دالة
Global Variable متحول عام
GOTO Statement جملة االنتقال
Identifiers أسماء تعريفية
IF Structure بنية إذا
IF Then Structure إذا فإن
IF-Then-Else Structure بنية إذا....فإن.....وإال
index دليل
inner loop حلقة داخلية
integer صحيح
Lists قوائم Logical errors أخطاء منطقية
Looping تكرار
Machine Language لغة اآللة
Main Memory رئيسية ذاكرة
MOD باقي القسمة
Microprocessor معالج صغري
Multimedia الوسائط المتعددة
134
Multiprocessing تقنية المعالجات المتعددة
Nested if structure بنية إذا المتداخلة
Network Servers مخدمات الشبكة
One-Dimension Array مصفوفة ذات بعد واحد
Operands معامالت
Operators عوامل
Output إخراج
Parameters معامالت
Pointer مؤشر
Procedures إجراءات
Processing معالجة
Program برنامج
Record سجل
Repeat until Structure جملة تكرار مشروطة
semicolon فاصلة منقوطة
sets مجموعات
Source program برنامج مصدر
String سلسلة حرفية
Variable متغيرات
While-Do Structure بنية تكرار شرطية
135
المراجع العلمية
إضافات مدرس المقرر
المراجع العربية: -أ . د. زهير دحروج د. غيداء ربداوي 1999الطبعة الثانية عام –دمشق منشورات جامعة 1)البرمجة)1-
ترجمة 1997الطبعة األولى سوريا -حلب -منشورات دار شعاع -)الدليل الكامل( 7تيربو باسكال -2 وإعداد المهندس ياسر نهاد العقاد
يى نجاريحد. 2000عام –منشورات جامعة حلب – (1الخوارزميات وبنى المعطيات ) -3
د. محمد دباس الحميد 2004منشورات جامعة حلب عام –( 1) البرمجة -4
المراجع األجنبية: -ب1. Pascal for Beginner
2. Schneider , G. M.(1982) "An Introduction to Programming and Problem solving
with pascal"
136