You are on page 1of 32

Chapter 6 Topics

Introduction
Primitive Data Types
Character String Types
User-Defined Ordinal Types
Array Types
Associative Arrays
Record Types
Union Types
Pointer Types
‫‪Data Type‬‬
‫‪ ‬هو عبارة عن مجموعة من ال ‪data objects‬‬
‫ومجموعة من العمليات محددة مسبقا ً على ال‬
‫‪.objects‬‬

‫‪ ‬أي هو وصف مجموعة من صفات المتغير‪.‬‬


‫)‪Primitive Data( 1‬‬
‫‪Types‬‬
‫أنواع البيانات البسيطة ‪ :‬هي نوع البيانات التي لتاعرف‬
‫من حيث أنواع البيانات الخأرى ‪.‬‬

‫‪ Integer- 1‬العدد الصحيح (حيحصلا ددعلا) ‪( :‬حيحصلا ددعلا) وهو أي رقم صحيح ل‬
‫يحتوي على علمة عشرية مثل‪ ، 11- ، 9، 5‬صفر‪ .‬وهناك‬
‫العديد من لغات البرمجة التي تاتععامل مع الرقم الصحيح‬
‫‪ :‬امه نيعون ىدحإكإحدى نوعين هما‬

‫أ‪ -‬رقم صحيح قصير ‪ Short Integer‬ويخزن في ‪2‬‬


‫بايت(‪.)Byte‬‬

‫ب‪ -‬رقم صحيح طويل ‪ Long Integer‬يتراوح طوله ما‬


‫بين ‪ 4‬بايت إلى ‪ 8‬بايت ‪.‬‬
‫‪Primitive Data‬‬
‫علمة ‪.(:‬‬
‫‪Types)Cont‬‬
‫‪ Floating Point- 2‬هو أي رقم يحتوي على‬
‫عشرية مثل‪ ، 11.5‬أي هو عبارة عن‪model‬من ال ‪real‬‬
‫‪number‬لكن هو عبارة عن تاقريب للعداد ‪ ،‬وهي تادعم‬
‫‪ :‬اللغعات للسإتعمال العلمي‪ .‬وينقسم إلي نوعين هما‬

‫أ‪ -‬دقة فردية ‪ Single Precision‬ويتكون عامة في معظم‬


‫لغات البرمجة من ‪ 6‬أرقام امه نيعون ىدحإكحد أقصى مثل ‪. 65.4321‬‬

‫ب‪ -‬دقة مزدوجة ‪ Double Precision‬و يتكون عامة في‬


‫مععظم لغات البرمجة من ‪ 14‬رقما أو ‪ 15‬رقما امه نيعون ىدحإكحد أقصى‬
‫سإواء امه نيعون ىدحإكانت رقما صحيحا أو امه نيعون ىدحإكسرا‪.‬‬
‫‪Primitive Data‬‬
‫‪.(Types)Cont‬‬
‫‪(:‬يرشعشري (حيحصلا ددعلا)‬ ‫‪Decimal- 3‬‬

‫‪ -‬يسخدم لل ‪.business application‬‬

‫‪ -‬تاخزن عدد ثابت من الرقام العشرية ‪. decimal digits‬‬

‫‪ -‬مميزاتها ‪ :‬الدقة‪.‬‬

‫‪ -‬يرشعيبها ‪ :‬المدى العشري محدود ‪ ،‬تاستهلك الذاامه نيعون ىدحإكرة ‪.‬‬


‫‪Primitive Data‬‬
‫(‪.‬‬ ‫‪Types)Cont‬‬
‫‪ Boolean- 4‬منطقي (حيحصلا ددعلا) ‪( :‬حيحصلا ددعلا) ويأخأذ هذا النوع إحدى قيمتين‬
‫هما‪ true‬صحيح) أو) ‪ false‬خأطأ) وهذا النوع يوجد في)‬
‫بعض لغات البرمجة فقط وليس في جميع لغات البرمجة‪.‬‬
‫ويوجد هذا النوع في لغة‪ Java‬ولغة ‪.Visual Basic‬‬

‫‪ -‬ميزته ‪ :‬سإهولة القراءة ‪. readability‬‬


‫‪Primitive Data‬‬
‫(‪.‬‬ ‫‪Types)Cont‬‬
‫‪ : Character- 5‬هو عبارة عن حرف أبجدي أو رقم أو‬
‫علعمة خأاصة وليزيد طولها عن حرف واحد ويتم امه نيعون ىدحإكتابتها بين‬
‫‪ )' '( Single Quote‬ويتم تاخزين القيمة في بايت واحد‬
‫مثل‪.ASCII, Unicode‬‬
Character String( 2)
Types ‫أنواع سلسة الحروف‬
.sequences of characters‫ هي عبارة عن‬: Values-
- Operations:
Assignment .
Comparison )=, >, etc.( . ‫معقارعنة‬
Catenation.
Substring reference.
Pattern matching. ‫نععموذعج اععلمطابعقة‬
- e.g. )‫ (حيحصلا ددعلا‬Ada(
N := N1 & N2 )catenation(.
N)2..4( )substring reference(.
Character String Types
.()Cont
- String Length Options:

1. Static - FORTRAN 77, Ada, COBOL

e.g. )FORTRAN 90(

CHARACTER )LEN = 15( NAME;

2. Limited Dynamic Length‫امملطولامملديمنامميكي‬


‫امملمحدود‬- C and C++.

3. Dynamic - SNOBOL4, Perl, JavaScript.


‫‪Character String Types‬‬
‫‪.()Cont‬‬
‫‪ -‬التقييم ‪: Evaluation‬‬

‫‪ -‬تاساعد في ال ‪. writability‬‬

‫‪primitive type with static length-‬متي) هفلكم ريغير مكلفه (يتم‬


‫‪(.‬إسإتخدام الذاامه نيعون ىدحإكرة بكفاءة‬

‫‪. Dynamic length -‬يتم السإتفادة منه في بعض الحيان‬


Character String Types
.()Cont
: Implementation ‫التنفيذ‬-

.compile-time: ‫ يتم تاحديد الطول في‬Static length -

run-: ‫ يتم تاحديد الطول في‬Limited dynamic length -


.time

‫و‬run-time: ‫ يتم تاحديد الطول في‬Dynamic length -


‫ هي المشكلة الامه نيعون ىدحإكبر في‬allocation/deallocation‫ال‬
‫التنفيذ‬.
Character String Types
.()Cont
:).Implementation )Cont ‫التنفيذ‬-

Compile-time Run-time descriptor


descriptor for for limited dynamic
static strings strings
‫)‪User-Defined Ordinal( 3‬‬
‫‪Types‬‬
‫النواع الترتيبية المعرفة من قبل المستخدم ‪:‬‬

‫‪ : ordinal type-‬هو واحد من مجموعة من القيم التي‬


‫يمكن من خأللها الرتاباط بسهولة مع مجموعة من العداد‬
‫‪.‬الصحيحة الموجبة‬

‫‪ -‬هي مبنية على مبدأ الترتايب أو التوالي أو التتابع حيث يمكن‬


‫مقارنة قيمتين لمعرفة أيهما الامه نيعون ىدحإكبر وامه نيعون ىدحإكذلك معرفة القيمة‬
‫التي تالي أو تاسبق قيمة أخأرى أوتاقوم بحساب يمة أعلى أو‬
‫أدنى قيمة محتملة‪.‬‬
‫‪User-Defined‬‬
‫‪.(OrdinalTypes)Cont‬‬
‫ً‬
‫‪: Enumeration Types- 1‬هو عبارة عن نوع تاراتابيا آخأر‬
‫محدد من قبل المستخدم ‪ ،‬فبدل ً من الشإارة إلى مدى من‬
‫‪ .‬نوع موجود فإنه يتم عرض القيم المحتملة للنوع‬

‫‪ -‬بمعنى آخر ‪ Enumeration‬هي عبارة ععن قائمة‬


‫بالقيم‪.‬‬

‫(‪( pascal‬حيحصلا ددعلا) ‪- e.g.‬‬

‫‪type‬‬

‫‪Colors = )Red, Yellow, Green, Cyan, Blue,‬‬


‫;(‪Violet‬‬
User-Defined
.(OrdinalTypes)Cont
:(Evaluation )‫ (حيحصلا ددعلا‬of enumeration types-

.readability ‫ تاساعد على سإهولة القراءة‬-1

compiler ‫ إذ يقوم ال‬reliability ‫ تاساعد على الموثوقية‬-2


: ‫بالتحقق من‬

i. operations.

ii. ranges of values.


‫‪User-Defined‬‬
‫‪.(OrdinalTypes)Cont‬‬
‫‪ : Subrange Type- 2‬هو عبارة عن سإلسة فرعة مرتابة‬
‫من‪ordinal type‬أي هو تاحديد مدىً من القيم داخأل ‪.‬‬
‫‪ .‬نوع مدى آخأر‬

‫(‪( pascal‬حيحصلا ددعلا) ‪- e.g.‬‬

‫;‪type pos = 0 .. MAXINT‬‬

‫‪( of subrange types-‬حيحصلا ددعلا) ‪:(Evaluation‬‬

‫‪ -1‬تاساعد على سإهولة القراءة ‪.readability‬‬

‫‪ -2‬الموثوقية ‪ :Reliability‬إذ يمكن إامه نيعون ىدحإكتشاف الخأطاء‬


‫بسهولة لن المدى ‪ range‬محدود‪.‬‬
User-Defined
.(OrdinalTypes)Cont
Implementation of user-defined ordinal-
:types

‫ على أنها أعداد‬Enumeration types ‫ يتم تانفيذ‬-


. integer ‫صحيحة‬

parent types with code ‫ هي‬Subrange types-


‫لتحديد المهام لل‬compiler‫تادرج بواسإطة ال‬
.subrange variables
‫)‪Arrays( 4‬‬
‫‪ -‬المصفوفات‪ :‬هي عبارة عن مجموعة من الععناصر ذات‬
‫النوع الواحد والتي تاحمل نفس السإم (إسإم المصفوفة)‬
‫ويمتاز امه نيعون ىدحإكل عنصر برقم صحيح يدل عليه (‪.)index‬‬

‫‪: Indexing-‬هو تاعيين أرقام قياسإية لعناصر المصفوفة‬


‫)‪.( array_name, index_value_list‬‬

‫‪: Index Syntax-‬في مععظم لغات البرمجة تاستخدم‬


‫‪ )( ،‬القواس{}‪.‬‬

‫‪ -‬عند تاععريف المصفوفة‪ ،‬تاحتاج إلى تامرير نوع مدى فرعي‬


‫‪ subrange‬بين قوسإين مربعين‪ ،‬أو تاحديد نوع مدى فرعي‬
‫جديد خأاص باسإتخدام ثابتين ‪ constant‬من نوع تاراتابي ‪.‬‬
.(Arrays )Cont
Subscript Types:

- FORTRAN, C - integer only.

- Pascal - any ordinal type )integer, boolean,


char, enum(.

- Ada - integer or enum )includes boolean and


char(.

- Java - integer types only.


.(Arrays )Cont
- Categories of arrays )‫ (حيحصلا ددعلا‬based on subscript
binding and binding to storage( :

‫ هو‬storage ‫ و‬subscripts‫ مدى ال‬: Static- 1


. static

. 20 ‫مثل ً تاحديد طول المصفوفة‬

‫ امه نيعون ىدحإكفاءة التفيذ لععدم وجود‬: ‫ ميزتها‬-


.allocation/deallocation
.(Arrays )Cont
‫يحدد‬subscripts‫ مدى‬: Fixed stack dynamic- 2
‫تاحدد في وقت العداد‬storage‫بشكل ثابت أما‬
elaboration time

.c,java ‫ مثل ً في لغة‬space efficiency :‫ ميزتها‬-

: Stack-dynamic- 3

range and storage are dynamic, but fixed from


then on for the variable’s lifetime.

‫ ليس بالضرورة أن يكون‬flexibility ‫ المرونة‬:‫ ميزتها‬-


.‫الحجم معروف‬
.(Arrays )Cont
: Heap-dynamic - 4

subscript range and storage bindings are


dynamic and not fixed.

‫ و‬grow ‫ المصفوفات تانمو‬APL, Perl, JavaScript ‫ في‬-


.‫ حسب الحاجة‬shrink ‫تاتقلص‬

.heap-dynamic ‫ امه نيعون ىدحإكل المصفوفات عبارة عن‬java ‫ في‬-


‫‪.(Arrays )Cont‬‬
‫‪- Array Operations :‬‬
‫‪( Ada( : Assignment , Catenation‬حيحصلا ددعلا) ‪e.g.‬‬
‫‪,Relational operators )= and /= only(.‬‬
‫‪ : Slices-‬هي عبارة عن‪substructure of array‬وهي‬
‫مفيدة في اللغات التي لديها‪. array operations‬‬
‫‪ associative array-‬المصفومفات الترابطية ‪ :‬عبارة‬
‫عن مجموعة متي) هفلكم ريغير مرتابة من عناصر البيانات‪data‬‬
‫‪ elements‬التي يتم فهرسإتها بواسإطة عدد متساو من‬
‫القيم تاسمى‪.Keys‬‬
‫)‪Records( 5‬‬
‫السجلت ‪ :‬عبارة عن مجموعة ثابتة من عناصر ذات أنواعع‬
‫مختلفة‪ .‬امه نيعون ىدحإكل عنصر‪ ،‬أو حقل ‪ ، field‬له نوعا خأاصا به ويتم‬
‫تاعريف قائمة بكل هذه الحقول‪ ،‬تاعطي لكل منها اسإما‬
‫لتستخدمه لحقا من أجل الوصول إليه‪.‬‬

‫‪( pascal( :‬حيحصلا ددعلا) ‪- e.g.‬‬

‫‪Type‬‬ ‫‪Date = record‬‬

‫;‪Year: Integer; Month: Byte; Day: Byte‬‬

‫;‪end‬‬ ‫‪var‬‬ ‫;‪BirthDay: Date‬‬

‫‪Begin‬‬ ‫;‪BirthDay.Year := 1997‬‬

‫;‪BirthDay.Month := 2; BirthDay.Day := 14‬‬


.(Records )Cont
- Record Operations

1. Assignment : Pascal, Ada, and C

2. Initialization.

3. Comparison.
‫‪.(Records )Cont‬‬
‫و ‪: Record‬‬ ‫‪ -‬مقارنة بين ‪Array‬‬

‫‪ -1‬الوصول إلى عناصر المصفوفة أبطئ بكثير من الوصول‬


‫إلى ععناصر السجل وذلك لن ‪ subscripts‬في المصفوفة‬
‫هي ‪ dynamic‬أما أسإماء الحقول هي ‪.static‬‬

‫‪ -2‬يمكن إسإتخدام ‪ Dynamic subscripts‬مع ‪record‬‬


‫‪ field access‬لكن سإيكون هنالك ‪disallow type‬‬
‫‪ checking‬وسإيكون أبطأ بكثير‪.‬‬
‫)‪Unions( 6‬‬
‫‪ -‬التحاد ‪ :‬هو نوع من أنواع المتغيرات تاسمح بتخزين قيم‬
‫أنواع مختلفة في أوقات مختلفة أثناء التنفيذ ‪.‬‬

‫‪( pascal( :‬حيحصلا ددعلا) ‪- e.g.‬‬

‫= ‪type intreal‬‬

‫‪record tagg : Boolean of‬‬

‫;(‪true : )blint : integer‬‬

‫;(‪false : )blreal : real‬‬

‫;‪end‬‬
‫)‪Pointers( 7‬‬
‫‪ -‬المؤشرات ‪ :‬فيها يتم تاحديد متغير يحوي عنوان متغير آخأر‬
‫في الذاامه نيعون ىدحإكرة ذو نوع بيانات محدد أو متي) هفلكم ريغير محدد ‪ ،‬لذا فإن متغير‬
‫المؤشإر بطريقة متي) هفلكم ريغير مباشإرة يشير إلى قيمة ‪.‬‬
‫‪ -‬مشماكل ال ‪: Pointers‬‬
‫المؤشرات املمعلقة ‪:‬يشير‬ ‫‪Dangling pointers - 1‬‬
‫مؤشإر إلى‪. heap-dynamic variable‬الذي تام تاعيينه‬
‫أم‪ -‬تاخصيص ‪ heap-dynamic variable‬وتاعيين مؤشإر‬
‫للشإارة إليه ‪.‬‬
‫ب‪ -‬تاعيين مؤشإر ثاني يؤشإر لقيمة المؤشإر الول ‪.‬‬
‫ج‪ Deallocate -‬إلغاء تاخصيص قيمة ال ‪heap-dynamic‬‬
‫‪ variable‬وذلك بإسإتخدام المؤشإر الول ‪.‬‬
‫)‪.Pointers )Cont‬‬
‫‪Lost Heap-Dynamic Variables- 2‬فقدان قيمة‬
‫ال ‪ : Heap-Dynamic Variables‬من المرحلة‬
‫السابقة‪ heap-dynamic variable‬لم يعد مشار إليها‬
‫‪ .‬من قبل أي مؤشإر في ا لبرنامج‬

‫أ‪ -‬تاعيين ‪( p1‬مؤشإر) للشإارة ل ‪heap-dynamic‬‬


‫‪ variable‬الذي تام إنشاءه حديثا ً ‪.‬‬

‫ب‪ -‬في وقت لحق يتم تاععيين ‪ p1‬للشإارة إلى ‪heap-‬‬


‫‪ dynamic variable‬جديد تاسمى ب ‪losing heap-‬‬
‫‪، dynamic variables is called memory leakage‬‬
‫(تاسرب الذاامه نيعون ىدحإكعرة)‪.‬‬
‫( ‪Pointers )Cont.‬‬
‫‪:Evaluation of pointers-‬‬

‫‪ -1‬من مشاامه نيعون ىدحإكل المؤشإرات المؤشإرات المعلقة وال ‪objects‬‬


‫المتعلقة بها‪.‬‬

‫‪ -2‬في المؤشإرات يمكن تاوسإيع نطاق الخليا التي يمكن‬


‫الوصول إليها بواسإطة متغير‪.‬‬

‫‪ -3‬المؤشإرات هي من هياامه نيعون ىدحإكل البيانات الديناميكية الضرورية‬


‫التي ليمكن السإتغناء عنها في لغات البرمجة‪.‬‬

You might also like