Professional Documents
Culture Documents
ﻓﻲ ﻣﺳﺗﻭﻯ ﺍﻟﻣﺗﺭﺟﻣﺎﺕ ) compilersﻣﺳﺗﻭﻯ ﻋﺎﻟﻲ( ﺗﻧﻭﻉ ﺍﻟﺑﻳﺎﻧﺎﺕ ﺃﻭ ﺍﻟﻣﻌﻁﻳﺎﺕ ) (data typesﻳﻅﻬﺭ
ﺑﺄﻧﻪ ﻣﺳﺗﻘﻝ ﻋﻥ ﻧﻭﻉ ﺍﻟﻣﻌﺎﻟﺟﺎﺕ .ﻓﻲ ﺍﻟﻭﺍﻗﻊ ﺃﺻﻧﺎﻑ ﺍﻟﺑﻳﺎﻧﺎﺕ ﺍﻟﻣﻌﺎﻟﺟﺔ ﻓﻲ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻣﺗﻁﻭﺭﺓ )ﺍﻟﺗﻲ ﺻﻣﻣﺕ
ﺃﺻﻼ ﻟﺗﺳﻬﻳﻝ ﺑﺭﻣﺟﺔ ﻭﻅﺎﺋﻑ ﺻﻌﺑﺔ ﺑﺑﻳﺎﻧﺎﺕ ﻣﺭﻛﺑﺔ ﻭ ﻣﻌﻘﺩﺓ( ﻫﻲ ﺃﻏﻧﻰ ﺑﻛﺛﻳﺭ ﻣﻥ ﺗﻠﻙ ﺍﻟﻣﺳﺗﻌﻣﻠﺔ ﻓﻲ
ﻣﺳﺗﻭﻯ ﻟﻐﺔ ﺍﻵﻟﺔ .ﻛﻣﺎ ﺫﻛﺭ ﻣﻥ ﻗﺑﻝ ﻧﻌﻠﻡ ﺃﻥ ﺍﻟﻔﺭﻕ ﺃﻭ ﺍﻟﻣﺳﺎﻓﺔ ﺑﻳﻥ ﺍﻟﻠﻐﺔ ﺍﻟﻣﺗﻁﻭﺭﺓ ﻭ ﻟﻐﺔ ﺍﻵﻟﺔ ﺗﺋﻭﻝ ﺍﻟﻰ
ﺍﻟﻧﻘﺻﺎﻥ )ﻟﻛﻥ ﺩﻭﻥ ﺍﻻﻧﻌﺩﺍﻡ( ﻣﻊ ﺗﻁﻭﺭ ﺍﻟﻣﻌﺎﻟﺟﺎﺕ .ﻟﻛﻥ ﻫﺩﻩ ﺍﻟﻣﺳﺎﻓﺔ ﻻ ﺗﻧﻌﺩﻡ ﻭ ﺩﻟﻙ ﺭﺍﺟﻊ ﻟﻭﺟﻭﺩ ﺣﺩﻭﺩ
ﺗﻛﻧﻭﻟﻭﺟﻳﺔ ﺩﺍﺋﻣﺎ .ﻓﻣﺛﻼ ﻓﻲ ﻫﻧﺩﺳﺔ ﻣﻌﻳﻧﺔ )ﻣﻌﺎﻟﺟﺎﺕ (8bitsﺩﺍﺕ ﺷﻛﻝ ﻣﻌﻠﻭﻣﺔ ﺃﺳﺎﺳﻳﺔ ,byteﻛﻝ ﺃﺻﻧﺎﻑ
ﺍﻟﺑﻳﺎﻧﺎﺕ ﺍﻷﺧﺭﻯ ﺍﻟﻣﻌﻘﺩﺓ ﻳﺟﺏ ﺃﻥ ﺗﺷﻛﻝ ﺑﻣﺟﻣﻭﻋﺔ bytesﻓﻲ ﻣﺳﺗﻭﻯ ﺍﻟﻠﻐﺎﺕ ﺍﻟﻣﺗﻁﻭﺭﺓ ,ﻓﻲ ﺍﻟﻣﺳﺗﻭﻯ
ﺍﻟﺑﺭﻣﺟﻲ .ﻫﺩﻩ ﺍﻟﺑﺳﺎﻁﺔ ﻓﻲ ﺍﻟﻬﻧﺩﺳﺔ ﻳﻘﺎﺑﻠﻬﺎ ﺗﻌﻘﻳﺩﺍﺕ ﻓﻲ ﺍﻟﻣﺗﺭﺟﻣﺎﺕ )ﻻﺣﺗﻭﺍء ﻛﻝ ﺃﺻﻧﺎﻑ ﺍﻟﺑﻳﺎﻧﺎﺕ( ﺗﺅﺩﻱ
ﺇﻟﻰ ﺑﻁء ﻓﻲ ﺍﻟﺗﻧﻔﻳﺫ .ﻋﺩﺩ ﺣﻘﻳﻘﻲ ﻣﺛﻼ ﻣﻌﺭﻑ ﻓﻲ )ﺑﺎﻟﻧﻘﻁﺔ ﺍﻟﻌﺎﺋﻣﺔ 32bits (floating pointﻳﺣﺗﺎﺝ 1
byteﻟﻸﺱ 3 bytes ,ﻟﻠﻌﺩﺩ ﺣﻳﺙ ﻳﺧﺻﺹ 1 bitﻟﻺﺷﺎﺭﺓ .ﻳﺳﺗﻠﺯﻡ ﻫﺩﺍ ﺍﻟﺗﻣﺛﻳﻝ ﻋﺩﺩ ﻣﻥ ﺍﻟﻌﻣﻠﻳﺎﺕ ﻋﻠﻰ
ﻋﺩﺩ ﻣﻥ ﺍﻟـ bytesﺍﻟﻣﺧﺗﻠﻔﺔ ﻻﻧﺟﺎﺯ ﻋﻣﻠﻳﺔ ﻭﺍﺣﺩﺓ )ﺗﺑﺩﻭ ﻟﻧﺎ ﺑﺳﻳﻁﺔ ﻓﻲ ﻟﻐﺔ ﻣﺗﻁﻭﺭﺓ( ﻋﻠﻰ ﻋﺩﺩ ﺣﻘﻳﻘﻲ.
ﻓﻲ ﺗﺻﻣﻳﻡ ﺷﻛﻝ ﺍﻷﻋﺩﺍﺩ ﺍﻟﺻﺣﻳﺣﺔ ﺍﻟﻣﺳﺗﻌﻣﻠﺔ ﺑﺗﻌﻠﻳﻣﺎﺕ ﺍﻟﻣﻌﺎﻟﺞ ﻳﺭﺍﻋﻰ ﻫﺩﻓﻳﻥ ﺃﺳﺎﺳﻳﻳﻥ ﻣﺗﻧﺎﻗﺿﻳﻥ,
ﻣﻥ ﺟﻬﺔ ﺃﻛﺑﺭ ﻣﺟﺎﻝ ﻟﻠﻘﻳﻡ ﺍﻟﻣﻣﻛﻧﺔ ﺑﺄﻗﻝ ﺣﺟﻡ )ﺃﻗ َﻝ bitsﻣﻣﻛﻥ( ﻣﻥ ﺟﻬﺔ ﺃﺧﺭﻯ .ﺍﻟﻁﺭﻳﻘﺔ ﺍﻷﺛﺭ
ﺇﺳﺗﻌﻣﺎﻝ ﻫﻲ ﺗﻌﺭﻳﻑ ﻋﺩﺓ ﺃﺷﻛﺎﻝ ﺛﺎﺑﺗﺔ ﻟﻠﺑﻳﺎﻧﺎﺕ )ﻣﺛﻝ Longint, Integer, Shortintﻓﻲ ﻟﻐﺔ
.( Pascalﻧﻼﺣﻅ ﻓﻲ ﺗﺣﺩﻳﺩ ﺃﻧﻭﺍﻉ ﺍﻷﻋﺩﺍﺩ ﺍﻟﺻﺣﻳﺣﺔ ﻳﻘﺎﺑﻠﻪ ﺣﺟﺯ ﻓﻲ ﺍﻟﺫﺍﻛﺭﺓ ﺑﺎﻟـ byteﻭ ﻣﺿﺎﻋﻔﺎﺗﻪ
) (..4,2,1ﺩﺍﺋﻣﺎ ﻣﻊ ﺗﺧﺻﻳﺹ 1bitﻟﻺﺷﺎﺭﺓ .ﻧﺩﻛﺭ ﺃﻥ ﻓﻲ ﻣﻌﺎﻟﺟﺎﺕ Intelﺍﻟـ 8086ﻳﻌﺎﻟﺞ ﺑﻳﺎﻧﺎﺕ 8
ﺃﻭ ,16bitsﺃﻣﺎ 80386ﻓﻳﻌﺎﻟﺞ ﺃﺻﻧﺎﻑ 32-16-8ﺣﺗﻰ ) 64bitsﻧﻔﺱ ﺍﻟﺗﻁﻭﺭ ﻣﻭﺟﻭﺩ ﻋﻧﺩ
ﺛﻡ .(68030 ,68020ﺗﻛﻣﻥ ﺃﻫﻣﻳﺔ ﻫﺫﺍ ﺍﻟﺗﻁﻭﺭ ﻓﻲ ﺟﻌﻝ ﻋﻣﻠﻳﺎﺕ Motorolaﻣﻊ ﻣﻌﺎﻟﺟﺎﺕ َ 68000
ﻣﻌﺎﻟﺟﺔ ﺃﻧﻭﺍﻉ ﺃﻷﻋﺩﺍﺩ ﺍﻟﺻﺣﻳﺣﺔ ﺍﻟﻛﺑﻳﺭﺓ ﺗﻧﻔﺫ ﺑﺣﺟﻣﻬﺎ ﺍﻟﻔﻌﻠﻲ ﺩﺍﺧﻝ ﺍﻟﻣﻌﺎﻟﺞ ,ﻣﻣﺎ ﻳﺅﺩﻱ ﺇﻟﻰ ﺯﻳﺎﺩﺓ ﻓﻲ
ﺳﺭﻋﺔ ﺍﻟﺗﻧﻔﻳﺫ.
ﺃﺑﺳﻁ ﻣﻌﻠﻭﻣﺔ ﻳﻣﻛﻥ ﺗﻣﺛﻳﻠﻬﺎ ﻫﻲ booleanﻣﻧﻁﻘﻲ .ﻓﻲ ﻣﺳﺗﻭﻯ ﺍﻟﻌﺗﺎﺩ 1bitﻳﻛﻔﻲ ﻟﺗﻣﺛﻳﻝ ﻫﺫﺍ ﺍﻟﻧﻭﻉ,
ﻟﻛﻥ ﻓﻲ ﻣﺳﺗﻭﻯ ﺍﻟﻣﺗﺭﺟﻡ ﻳﻣﻛﻥ ﺃﻥ ﻳﺳﺗﻌﻣﻝ 8bitsﺃﻭ 1byteﻛﻭﺣﺩﺓ ﻓﻲ ﺍﻟﺫﺍﻛﺭﺓ ﻟﺗﻣﺛﻳﻝ 8ﻣﺗﻐﻳﺭﺍﺕ
ﻣﻧﻁﻘﻳﺔ .ﻫﺫﺍ ﺍﻹﺳﺗﻌﻣﺎﻝ ﺍﻟﻣﻛﺛﻑ ﻟﻭﺍﺣﺩ byteﻳﺅﺩﻱ ﺇﻟﻰ ﻋﻣﻠﻳﺎﺕ ﻣﻌﻘﺩﺓ )ﺇﺯﺍﺣﺔ ﻳﻣﻳﻥ/ﻳﺳﺎﺭ ,ﻣﻘﺎﺭﻧﺔ(..
ﻹﺳﺗﺧﺭﺍﺝ ﻣﺗﻐﻳﺭ ﻣﻧﻁﻘﻲ ﻭﺍﺣﺩ ,ﻳﻧﺗﺞ ﻋﻧﻬﺎ ﺯﻳﺎﺩﺓ ﻓﻲ ﻣﺩﺓ ﺍﻟﺗﻧﻔﻳﺫ .ﺇﺳﺗﻌﻣﺎﻝ 1byteﻟﺗﻣﺛﻳﻝ ﻣﻌﻠﻭﻣﺔ
ﻣﻧﻁﻘﻳﺔ ﻳﻛﻭﻥ ﺃﺳﺭﻉ ﻓﻲ ﺍﻹﺳﺗﻌﻣﺎﻝ.
-ﺇﺟﺭﺍءﺍﺕ Procedures
ﻣﻥ ﺍﻟﺗﻘﻧﻳﺎﺕ ﺍﻷﻛﺛﺭ ﺃﻫﻣﻳﺔ ﻓﻲ ﺗﺭﻛﻳﺑﺔ ﺍﻟﺑﺭﺍﻣﺞ structurationﻫﻲ ﺍﻹﺟﺭﺍءﺍﺕ .ﻋﺎﻣﺔ ﻧﺩﺍء ﺇﺟﺭﺍء ﻣﺎ
ﻳﺅﺩﻱ ﺇﻟﻰ ﺗﻐﻳﻳﺭ ﻣﺳﺎﺭ ﺃﻭ ﺗﺳﻠﺳﻝ ﺍﻟﺗﻌﻠﻳﻣﺎﺕ .ﻟﻛﻥ ﻋﻠﻰ ﺍﻟﻌﻛﺱ ﻣﻥ ﺗﻌﻠﻳﻣﺎﺕ ﺍﻟﻘﻔﺯ ﻓﺈﻥ ﺑﻌﺩ ﺗﻧﻔﻳﺫ ﺍﻹﺟﺭﺍء
ﺗﺳﻠﺳﻝ ﺍﻟﺗﻌﻠﻳﻣﺎﺕ ﻳﻌﻭﺩ ﺇﻟﻰ ﺍﻟﻣﻭﺿﻊ ﺍﻟﺫﻱ ﻳﻠﻲ ﻧﺩﺍء ﺍﻹﺟﺭﺍء ﻣﺑﺎﺷﺭﺓ .ﺗﺳﺗﻭﺟﺏ ﻣﻥ ﺟﻬﺔ ﻫﺫﻩ ﺍﻟﻌﻣﻠﻳﺔ
ﺃﺻﻼ ﺗﺧﺯﻳﻥ ﻋﻧﻭﺍﻥ ﺍﻟﺗﻌﻠﻳﻣﺔ ﺍﻟﺗﻲ ﺗﻠﻲ ﺗﻌﻠﻳﻣﺔ ﺍﻹﺟﺭﺍء ,ﻭ ﻭﺟﻭﺩ ﺗﻌﻠﻳﻣﺔ ﻗﻔﺯ ﺇﻟﻰ ﺍﻟﻌﻧﻭﺍﻥ ﺍﻟﺧﺯﻥ ﺳﺎﺑﻘﺎ.
ﺍﻟﻣﺳﺋﻭﻝ ﻋﻥ ﺗﻭﻓﻳﺭ ﻫﺫﻩ ﺍﻵﻟﻳﺎﺕ ﻛﺎﻥ ﺍﻟﻣﺗﺭﺟﻡ .ﻭﺍﺿﺢ ﺃﻥ ﻫﺫﻩ ﺍﻟﻣﻬﻣﺔ ﻛﺎﻧﺕ ﻣﻛﻠﻔﺔ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻣﺑﺭﻣﺞ
ﺍﻟﻣﺗﺭﺟﻡ .ﻣﻊ ﺍﻟﺗﻁﻭﺭ ﺍﻟﺗﻛﻧﻭﻟﻭﺟﻲ ﺃﺩﻣﺟﺕ ﻫﺫﻩ ﺍﻵﻟﻳﺎﺕ ﺩﺍﺧﻝ ﺍﻟﻣﻌﺎﻟﺞ ﺑﺈﺿﺎﻓﺔ ﺗﻌﻠﻳﻣﺎﺕ ﺧﺎﺻﺔ
ﺑﺎﻹﺟﺭﺍءﺍﺕ ﻭ ﺁﻟﻳﺎﺕ ﺗﺧﺯﻳﻥ ﻋﻧﺎﻭﻳﻥ ﺍﻟﺭﺟﻭﻉ ﻣﻥ ﺍﻹﺟﺭﺍء.