You are on page 1of 13

‫ﺍﻟﺒﻨﻴﺔ "ﺍﻟﺒﺭﻤﺠﻴﺔ" ﻟﻠﺤﺎﺴﻭﺏ‬

‫ﺍﻷﻫﺩﺍﻑ ﻭﺍﻟﻤﺤﺼﻼﺕ ﺍﻟﺘﻌﻠﻴﻤﻴﺔ‬


‫ﻤﻌﺭﻓﺔ ﺍﻷﺠﺯﺍﺀ ﺍﻷﺴﺎﺴﻴﺔ ﻟﻠﺤﺎﺴﻭﺏ ﻤﻥ ﻨﺎﺤﻴﺔ ﺍﻟﻭﻅﺎﺌﻑ‪.‬‬ ‫‪9‬‬
‫ﻓﻬﻡ ﺁﻟﻴﺔ ﻋﻤل ﺍﻟﺤﺎﺴﻭﺏ ﺒﺸﻜل ﻤﺒﺴﻁ ﺒﻤﺎ ﻴﻤﻬﺩ ﻟﻔﻬﻡ ﺃﺴﺎﺴﻴﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ‪.‬‬ ‫‪9‬‬
‫ﺍﻟﺘﻤﻴﻴﺯ ﺒﻴﻥ ﻤﺴﺘﻭﻴﺎﺕ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﻭﻫﻲ‪ :‬ﻟﻐﺔ ﺁﻟﺔ ﻭﻟﻐﺔ ﻤﺠﻤﻊ ﻭﻟﻐﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ‪.‬‬ ‫‪9‬‬

‫ﻤﻘﺩﻤﺔ‬
‫ﺘﻨﻔﻴﺫﻩ ﻟﻠﻘﻴﺎﻡ ﺒﻌﻤل ﻤﻌﻴﻥ‪،‬‬ ‫‪Computer‬‬ ‫ﻴﻤﻜﻥ ﻟﻠﺤﺎﺴﻭﺏ‬ ‫‪Program‬‬ ‫ﺍﻟﺒﺭﻤﺠﺔ ﻫﻲ ﻜﺘﺎﺒﺔ ﺒﺭﻨﺎﻤﺞ‬
‫ﻟﺤل ﻤﺴﺄﻟﺔ ﻤﺎ‪.‬‬

‫ﻻ ﻤﻥ ﻓﻬﻡ ﺁﻟﻴﺔ ﻋﻤل ﺍﻟﺤﺎﺴﻭﺏ ﺒﺎﻟﺘﻌﺭﻑ ﻋﻠﻰ ﻤﺎﻫ ‪‬ﻴﺔ ﺍﻷﻋﻤﺎل ﺍﻷﺴﺎﺴﻴﺔ ﺍﻟﺘﻲ ﻴﻘﻭﻡ‬
‫ﺇﺫﻥ‪ ،‬ﻻ ﺒﺩ ﻟﻨﺎ ﺃﻭ ﹰ‬
‫ﺒﻬﺎ ﻜﻲ ﻨﺘﻤﻜﻥ ﻤﻥ ﺃﻥ ﹸﻨﻌﺭ‪‬ﻑ ﻟﻪ ﺍﻷﻋﻤﺎل ﻭﺍﻟﻤﺴﺎﺌل ﺍﻟﺘﻲ ﻨﺭﻴﺩ ﻤﻨﻪ ﺃﻥ ﻴﺴﺎﻋﺩﻨﺎ ﻓﻲ ﺤﻠﻬﺎ‪ ،‬ﻭﻻﺒﺩ‬
‫ﺃﻴﻀﹰﺎ ﻤﻥ ﻤﻌﺭﻓﺔ ﺩﻭﺭ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻲ ﻫﺫﺍ ﻜﻠﻪ‪.‬‬

‫ﺭﺒﻤﺎ ﺘﻜﻭﻨﺕ ﻟﺩﻴﻙ ﻓﻜﺭﺓ ﻤﺴﺒﻘﺔ ﻋﻥ ﺍﻟﺤﺎﺴﻭﺏ‪ ،‬ﻋﺒﺭ ﺩﺭﺍﺴﺔ ﺴﺎﺒﻘﺔ ﻟﺒﻨﻴﺘﻪ ﺍﻟﻤﺎﺩﻴﺔ ﺃﻭ ﻋﺒﺭ ﺘﻌﺎﻤﻠﻙ‬
‫ﻤﻌﻪ ﻜﻤﺴﺘﺨﺩﻡ‪ .‬ﻭﺭﺒﻤﺎ ﺍﺴﺘﺨﺩﻤﺕ ﻤﺼﻁﻠﺤﺎﺕ ﻤﺜل‪ :‬ﻤﻌﺎﻟﺞ ﺃﻭ ‪ ،Processor‬ﺫﺍﻜﺭﺓ ﺃﻭ ‪،RAM‬‬
‫‪،‬ﻁﺎﺒﻌﺔ ﺃﻭ ‪ ،Printer‬ﻟﻭﺤﺔ ﻤﻔﺎﺘﻴﺢ ﺃﻭ ‪،Keyboard‬‬ ‫‪Screen‬‬ ‫ﻗﺭﺹ ﺼﻠﺏ ﺃﻭ ‪ ،Hard Disk‬ﺸﺎﺸﺔ ﺃﻭ‬
‫‪...‬ﺍﻟﺦ‪.‬‬ ‫‪Scanner‬‬ ‫ﻓﺄﺭﺓ ﺃﻭ ‪ ،Mouse‬ﻤﺎﺴﺢ ﻀﻭﺌﻲ ﺃﻭ‬

‫ﻼ ﻜل ﻫﺫﻩ ﺍﻟﺘﻔﺎﺼﻴل‪ ،‬ﺇﺫ ﺴﻨﻘﺩﻡ ﻟﻙ ﺍﻵﻥ ﺍﻟﺤﺎﺴﻭﺏ ﺒﺼﻭﺭﺓ ﻤﺠﺭﺩﺓ ﻭﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ‬
‫ﺩﻉ ﻋﻨﻙ ﻗﻠﻴ ﹰ‬
‫ﺘﺴﺎﻋﺩﻙ ﻋﻠﻰ ﻓﻬﻤﻪ‪ ،‬ﻭ ﺘﻤﻜﻨﻙ ﻓﻲ ﻨﻬﺎﻴﺔ ﺍﻟﻤﻁﺎﻑ ﻤﻥ ﺃﻥ ﺘﺸﻌﺭ ﺃﻨﻙ ﻤﺴﻴﻁﺭ ﻋﻠﻰ ﻤﺠﺭﻴﺎﺕ ﻋﻤﻠﻪ‬
‫ﻋﻨﺩﻤﺎ ﺘﻘﻭﻡ ﺒﺒﺭﻤﺠﺘﻪ‪.‬‬

‫‪1‬‬
‫‪ .1‬ﺍﻟﺤﺎﺴﻭﺏ‪ ،‬ﻤﺎ ﻫﻲ ﺒﻨﻴﺘﻪ ﺍﻟﻭﻅﻴﻔﻴﺔ؟‬
‫ﻴﻤﻜﻥ ﻭﻅﻴﻔﻴﹰﺎ ﺘﺼﻨﻴﻑ ﺍﻟﻤﻜﻭﻨﺎﺕ ﺍﻟﺒﻨﻴﻭﻴﺔ ﻟﻠﺤﺎﺴﻭﺏ ﻜﻤﺎ ﻴﻠﻲ‪:‬‬
‫ﻭﺘﺸﻤل ‪:‬‬ ‫‪CPU‬‬ ‫ﺃﻭ‬ ‫‪ .1‬ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ‬
‫‪Central Processing Unit‬‬
‫‪ y‬ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭﺍﻟﻤﻨﻁﻕ ‪ Arithmetic and Logic Unit‬ﺃﻭ ‪ALU‬‬
‫‪ y‬ﻭﺤﺩﺓ ﺍﻟﺘﺤﻜﻡ ‪Control Unit‬‬
‫‪ .2‬ﻭﺤﺩﺓ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺭﻜﺯﻴﺔ ﺃﻭ ﺍﻟﺭﺌﻴﺴﻴﺔ ‪Unit Central Memory‬‬
‫‪ .3‬ﻭﺤﺩﺍﺕ ﺍﻟﺩﺨل ﻭﺍﻟﺨﺭﺝ ‪Input and Output Units‬‬

‫‪Memory‬‬
‫‪ y‬ﻭﺤﺩﺍﺕ ﺍﻟﺩﺨل ‪Input Units‬‬
‫‪ y‬ﻭﺤﺩﺍﺕ ﺍﻟﺨﺭﺝ ‪Output Units‬‬
‫‪O PU … 1‬‬ ‫‪IPU…1‬‬
‫‪ y‬ﻭﺤﺩﺍﺕ ﺩﺨل‪/‬ﺨﺭﺝ ‪Input\Output Units‬‬
‫‪O PU … 2‬‬ ‫‪IPU…2‬‬

‫‪O PU … 3‬‬
‫‪CPU‬‬
‫‪IPU…3‬‬
‫ﺘﺸﻜﹼل ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ﻭﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺭﻜﺯﻴﺔ‬
‫‪O PU … 3‬‬ ‫‪IPU…3‬‬ ‫ﺩﻤﺎﻍ ﺍﻟﺤﺎﺴﻭﺏ ﻭﺘﻌﻁﻴﻪ ﻫﻭﻴﺘﻪ ﺍﻟﺨﺎﺼﺔ‪ .‬ﺇﺫ ﺴﻨﺭﻯ‬
‫ﻻﺤﻘﹰﺎ ﺃﻥ ﻟﻜل ﻁﺭﺍﺯ ﺤﺎﺴﻭﺏ ﺘﺸﻜﻴﻠﺘﻪ ﺍﻟﺨﺎﺼﺔ ﻤﻥ‬
‫‪I/ O U … 1‬‬ ‫‪I/OU … 2‬‬ ‫‪I/ O U … 3‬‬
‫ﻤﺤﺩﺩﺓ ﺒﺂﻟﻴﺔ ﻋﻤل ﻤﻌﻴﻨﺔ ﻭﻁﺭﻴﻘﺔ ﺭﺒﻁ ﻤﻊ ﺍﻟﺫﺍﻜﺭﺓ‪.‬‬ ‫‪CPU‬‬

‫ﻭﻟﻭﻻ ﻁﺭﻗﻨﺎ ﺒﺎﻟﺒﺭﻤﺠﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ﻟﻜﺎﻥ ﻻﺒﺩ ﻤﻥ ﻜﺘﺎﺒﺔ ﻜل ﺒﺭﻨﺎﻤﺞ ﺒﻁﺭﻴﻘﺔ ﺨﺎﺼﺔ ﺒﻜل‬
‫ﺤﺎﺴﻭﺏ‪.‬‬

‫ﺃﻤﺎ ﻭﺤﺩﺍﺕ ﺍﻟﺩﺨل ﻭﺍﻟﺨﺭﺝ ﻓﻬﻲ ﺤﻭﺍﺱ ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺘﻲ ﺘﻤﻜﻨﻪ ﻤﻥ ﺍﻟﺘﻭﺍﺼل ﻤﻊ ﺍﻟﻌﺎﻟﻡ ﺍﻟﺨﺎﺭﺠﻲ‪،‬‬
‫ﺘﺩﺨل ﻤﻨﻬﺎ ﺇﻟﻰ ﺍﻟﺩﻤﺎﻍ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﺘﺨﺭﺝ ﻤﻨﻪ ﺇﻟﻴﻬﺎ ﺍﻟﻨﺘﺎﺌﺞ‪.‬‬

‫‪CPU‬‬ ‫ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ‪ Central Processing Unit‬ﺃﻭ‬


‫ﻭﻫﻲ ﺍﻟﺠﺯﺀ ﺍﻷﺴﺎﺴﻲ ﻤﻥ ﺩﻤﺎﻍ ﺍﻟﺤﺎﺴﻭﺏ ﻓﻔﻴﻬﺎ‬
‫‪Memory‬‬
‫ﺍﻟﺤﺴﺎﺏ ﻭﺍﻟﻤﻨﻁﻕ ﻭﺍﻟﺘﺤﻜﻡ‪ .‬ﻓﻬﻲ ﺘﻘﻭﻡ ﺒﺎﻟﺤﺴﺎﺒﺎﺕ‬
‫ﻭﺍﺘﺨﺎﺫ ﺍﻟﻘﺭﺍﺭﺍﺕ ﻭ ﺘﻘﻭﻡ ﺒﺩﻭﺭ ﺍﻹﺩﺍﺭﺓ ﺍﻟﻤﺭﻜﺯﻴﺔ ﻟﻜﺎﻤل‬
‫‪OPU…1‬‬ ‫‪IPU…1‬‬
‫‪ALU‬‬ ‫‪CU‬‬
‫‪OPU…2‬‬ ‫‪IPU…2‬‬

‫‪OPU…3‬‬
‫‪CPU‬‬
‫‪IPU…3‬‬
‫ﻤﻜﻭﻨﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ‪.‬‬
‫‪Registers‬‬
‫‪CPU‬‬
‫‪OPU…3‬‬ ‫‪IPU…3‬‬
‫‪Arithmetic and Logic‬‬ ‫ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭﺍﻟﻤﻨﻁﻕ‬
‫‪I/OU…1‬‬ ‫‪I/OU…2‬‬ ‫‪I/OU…3‬‬ ‫‪ALU‬‬ ‫‪ Unit‬ﺃﻭ‬
‫ﺍﻟﻤﺴﺅﻭل ﻋﻥ ﺍﻟﻘﻴﺎﻡ ﺒﺎﻟﻌﻤﻠﻴﺎﺕ‬ ‫‪CPU‬‬ ‫ﻭﻫﻲ ﺍﻟﺠﺯﺀ ﻓﻲ‬
‫ﺍﻟﺤﺴﺎﺒﻴﺔ ﻤﺜل ﺍﻟﺠﻤﻊ ﻭﺍﻟﻁﺭﺡ ﻭﺍﻟﻀﺭﺏ ﻭﺍﻟﻘﺴﻤﺔ‪ ،‬ﺇﻀﺎﻓﺔ ﺇﻟﻰ ﺁﻟﻴﺎﺕ ﺍﺘﺨﺎﺫ ﺍﻟﻘﺭﺍﺭ ﺍﻟﺘﻲ ﺘﺴﻤﺢ‬
‫ﺒﺎﻟﻤﻘﺎﺭﻨﺔ ﺒﻴﻥ ﻋﻨﺼﺭﻴﻥ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﻟﺘﺤﺩﻴﺩ ﻓﻴﻤﺎ ﺇﺫﺍ ﻜﺎﻨﺎ ﻤﺘﺴﺎﻭﻴﻴﻥ ﺃﻡ ﻻ…‪..‬ﺍﻟﺦ‪.‬‬

‫‪2‬‬
‫‪CU‬‬ ‫ﻭﺤﺩﺓ ﺍﻟﺘﺤﻜﻡ ‪ Control Unit‬ﺃﻭ‬
‫ﺘﻠﻌﺏ ﺩﻭﺭ ﺍﻟﻤﻨﺴﻕ ﻷﻋﻤﺎل ﺍﻟﺤﺎﺴﻭﺏ‪ ،‬ﺒﺎﻹﻀﺎﻓﺔ ﺇﻟﻰ ﻜﻭﻨﻬﺎ ﺍﻟﻤﺸﺭﻑ ﺍﻟﻌﺎﻡ ﻋﻠﻰ ﻋﻤل ﺍﻟﻭﺤﺩﺍﺕ‬
‫ﺍﻷﺨﺭﻯ‪ .‬ﻓﻬﻲ ﺘﺤﺩﺩ ﻟﻭﺤﺩﺓ ﺍﻟﺩﺨل ﻤﺘﻰ ﻴﺠﺏ ﻗﺭﺍﺀﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﻭﻀﻌﻬﺎ ﻓﻲ ﻭﺤﺩﺓ ﺍﻟﺫﺍﻜﺭﺓ‪ ،‬ﻭﺘﺨﺒﺭ‬
‫ﺃﻴﻀﹰﺎ ﻭﺤﺩﺓ ﺍﻟﺤﺴﺎﺏ ﻭﺍﻟﻤﻨﻁﻕ ﻤﺘﻰ ﻴﺠﺏ ﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﻭﺤﺩﺓ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻤﺘﻰ‬
‫ﻴﺠﺏ ﻋﻠﻰ ﻭﺤﺩﺓ ﺍﻟﺨﺭﺝ ﺇﺭﺴﺎﻟﻬﺎ ﻤﻥ ﻭﺤﺩﺓ ﺍﻟﺫﺍﻜﺭﺓ ﺇﻟﻰ ﺃﺤﺩ ﺃﺠﻬﺯﺓ ﺍﻟﺨﺭﺝ‪.‬‬

‫‪Registers‬‬ ‫ﺍﻟﺴﺠﻼﺕ‬
‫ﺒﻀﻊ ﺨﺎﻨﺎﺕ ﺫﺍﻜﺭﺓ ﺨﺎﺼﺔ ﺒﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ﺘﺴﺘﺨﺩﻤﻬﺎ ﻓﻲ ﺃﺩﺍﺀ ﻋﻤﻠﻬﺎ ﻭﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺎﺘﻬﺎ‪.‬‬

‫‪Central Memory Unit‬‬ ‫ﻭﺤﺩﺓ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺭﻜﺯﻴﺔ ﺃﻭ ﺍﻟﺭﺌﻴﺴﻴﺔ‬


‫‪Memory‬‬ ‫ﻭﻫﻲ ﻭﺤﺩﺓ‬ ‫‪RAM‬‬ ‫ﻋﺎﺩﺓ ﻤﺎ ﹸﺘﻁﻠﻕ ﻋﻠﻴﻬﺎ ﺍﻟﺘﺴﻤﻴﺔ‬
‫‪RAM‬‬
‫ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺭﺌﻴﺴﻴﺔ ﻓﻲ ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺘﻲ ﺘﺘﻤﻴﺯ ﺒﺴﻬﻭﻟﺔ‬
‫‪OPU…1‬‬ ‫‪IPU…1‬‬ ‫ﺍﻟﻭﺼﻭل ﺇﻟﻴﻬﺎ ﻭﺒﺴﻌﺔ ﻤﺤﺩﻭﺩﺓ ﻨﺴﺒﻴﹰﺎ‪.‬‬
‫‪OPU…2‬‬ ‫‪IPU…2‬‬

‫‪OPU…3‬‬
‫‪CPU‬‬
‫‪IPU…3‬‬
‫ﺘﺨﺯﻥ ﻫﺫﻩ ﺍﻟﻭﺤﺩﺓ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﻤﺩﺨﻠﺔ ﻤﻥ ﻭﺤﺩﺍﺕ‬
‫‪OPU…3‬‬ ‫‪IPU…3‬‬ ‫ﺍﻟﺩﺨل ﻤﻤﺎ ﻴﺠﻌﻠﻬﺎ ﻤﺘﺎﺤﺔ ﻤﻥ ﺃﺠل ﺍﻟﻤﻌﺎﻟﺠﺔ ﻋﻨﺩ‬
‫ﺍﻟﺤﺎﺠﺔ‪ .‬ﻜﻤﺎ ﺃﻨﻬﺎ ﺘﺨﺯﻥ ﻨﺘﺎﺌﺞ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺤﺘﻰ ﻨﻘﻭﻡ‬
‫‪I/OU…1‬‬ ‫‪I/OU…2‬‬ ‫‪I/OU…3‬‬
‫ﺒﺈﻅﻬﺎﺭﻫﺎ ﻋﻠﻰ ﺃﺠﻬﺯﺓ ﺍﻟﺨﺭﺝ ﺒﻭﺍﺴﻁﺔ ﻭﺤﺩﺓ ﺍﻟﺨﺭﺝ‪.‬‬
‫‪CPU‬‬ ‫ﻭ ﹸﺘﺸﺤﻥ ﺍﻟﺒﺭﺍﻤﺞ ﺇﻟﻰ ﻭﺤﺩﺓ ﺍﻟﺫﺍﻜﺭﺓ ﻗﺒل ﺃﻥ ﺘﺒﺎﺸﺭ‬
‫‪Memory‬‬
‫ﻋﻨﺎوﻳﻦ‬
‫اﻟﺨﺎﻧﺎت‬
‫ﺧﺎﻧﺔ‬
‫اﻟﺬاآﺮة‬ ‫ﺒﺎﻟﺘﻨﻔﻴﺫ‪ .‬ﻤﻥ ﺍﻟﻨﺎﺤﻴﺔ ﺍﻟﻌﻤﻠﻴﺔ ﻴﻤﻜﻥ ﺍﻟﻨﻅﺭ ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ‬
‫‪OPU…1‬‬ ‫‪IPU…1‬‬ ‫ﻜﺠﺩﻭل ﻤﻥ ﺨﺎﻨﺎﺕ ﺍﻟﺫﺍﻜﺭﺓ )ﺘﺴﻤﻰ ﺃﻴﻀﹰﺎ ﻜﻠﻤﺎﺕ‬
‫‪OPU…2‬‬ ‫‪IPU…2‬‬ ‫ﺍﻟﺫﺍﻜﺭﺓ ‪ .(Computer Word‬ﻟﻜل ﺨﺎﻨﺔ ﺫﺍﻜﺭﺓ ﺩﻟﻴل ﻫﻭ‬
‫‪CPU‬‬
‫‪OPU…3‬‬ ‫‪IPU…3‬‬
‫ﺭﻗﻤﻬﺎ ﻭﻴﺴﻤﻰ ﺭﻗﻡ ﺍﻟﺨﺎﻨﺔ ﻋﻨﻭﺍﻥ‪ .‬ﻴﺨﺘﻠﻑ ﺤﺠﻡ ﺍﻟﺨﺎﻨﺔ‬
‫‪OPU…3‬‬ ‫‪IPU…3‬‬
‫ﺃﻭ‬ ‫‪32 bit‬‬ ‫ﺃﻭ‬ ‫ﺘﻜﻭﻥ ‪bit 16‬‬ ‫ﺒﺤﺴﺏ ﻁﺭﺍﺯ ﺍﻟﺤﺎﺴﻭﺏ ﻓﻘﺩ‬
‫‪I/OU…1‬‬ ‫‪I/OU…2‬‬ ‫‪I/OU…3‬‬ ‫‪.64‬‬ ‫‪bit‬‬

‫‪Input Units‬‬ ‫ﻭﺤﺩﺍﺕ ﺍﻟﺩﺨل‬


‫ﻭﻫﻲ ﺍﻟﺠﺯﺀ ﺍﻟﻤُﺴﺘﻘﺒل ﻤﻥ ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﺫﻱ ﻴﺤﺼل ﻋﻠﻰ‬
‫‪Memory‬‬

‫‪OPU…1‬‬ ‫‪IPU…1‬‬ ‫ﺍﻟﻤﻌﻠﻭﻤﺎﺕ )ﻤﻌﻁﻴﺎﺕ ﻭﺒﺭﺍﻤﺞ( ﻤﻥ ﻋﺩﺓ ﺃﺠﻬﺯﺓ ﺩﺨل‬


‫‪OPU…2‬‬
‫‪CPU‬‬
‫‪IPU…2‬‬
‫ﻤﺨﺘﻠﻔﺔ ﻭﻴﻀﻊ ﻫﺫﻩ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺘﺤﺕ ﺘﺼﺭﻑ ﺍﻟﻭﺤﺩﺍﺕ‬
‫‪OPU…3‬‬ ‫‪IPU…3‬‬
‫ﺍﻷﺨﺭﻯ ﺤﺘﻰ ﺘﺘﻡ ﻤﻌﺎﻟﺠﺘﻬﺎ‪ .‬ﻴﻤﻜﻥ ﻤﺜ ﹰ‬
‫ﻼ ﺇﺩﺨﺎل‬
‫‪OPU…3‬‬ ‫‪IPU…3‬‬

‫‪I/OU…1‬‬ ‫‪I/OU…2‬‬ ‫‪I/OU…3‬‬

‫‪3‬‬
‫ﺍﻟﻤﻌﻁﻴﺎﺕ ﺃﻭ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻋﻥ ﻁﺭﻴﻕ ﺠﻬﺎﺯﻱ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﻭﺍﻟﻔﺄﺭﺓ‪ .‬ﻭﻴﻤﻜﻥ ﺇﻋﻁﺎﺀ ﺍﻟﺼﻭﺭﺓ ﻋﻥ‬
‫ﻁﺭﻴﻕ ﺍﻟﻤﺎﺴﺢ ﺍﻟﻀﻭﺌﻲ ﻭﺍﻟﺼﻭﺕ ﻋﻥ ﻁﺭﻴﻕ ﺍﻟﻤﻴﻜﺭﻭﻓﻭﻥ‪.‬‬

‫‪Output Units‬‬ ‫ﻭﺤﺩﺍﺕ ﺍﻟﺨﺭﺝ‬


‫‪Memory‬‬
‫ﻭﻫﻲ ﺠﺯﺀ ﺘﺼﺩﻴﺭ ﻭﺒﺙ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﺘﻲ ﺘﻤﺕ ﻤﻌﺎﻟﺠﺘﻬﺎ‬
‫‪OPU…1‬‬ ‫‪IPU…1‬‬ ‫ﺒﻭﺍﺴﻁﺔ ﺍﻟﺤﺎﺴﻭﺏ ﻟﺘﺼﺒﺢ ﻤﺘﺎﺤﺔ ﻟﻼﺴﺘﺨﺩﺍﻡ ﺨﺎﺭﺠﻪ‪.‬‬
‫‪OPU…2‬‬ ‫‪IPU…2‬‬ ‫ﻴﺘﻡ ﺒﺸﻜل ﻋﺎﻡ ﺇﺨﺭﺍﺝ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺨﺎﺭﺝ ﺍﻟﺤﺎﺴﻭﺏ‬
‫‪CPU‬‬
‫‪OPU…3‬‬ ‫‪IPU…3‬‬
‫ﻭﺇﻅﻬﺎﺭﻫﺎ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺎﺕ ﺃﻭ ﺘﻁﺒﻊ ﻋﻠﻰ ﺍﻟﻭﺭﻕ ﺃﻭ‬
‫‪OPU…3‬‬ ‫‪IPU…3‬‬
‫ﺘﺴﺘﺨﺩﻡ ﻟﻠﺘﺤﻜﻡ ﺒﺄﺠﻬﺯﺓ ﺃﺨﺭﻯ‪.‬‬
‫‪I/OU…1‬‬ ‫‪I/OU…2‬‬ ‫‪I/OU…3‬‬
‫‪Input\Output Units‬‬ ‫ﻭﺤﺩﺍﺕ ﺩﺨل‪/‬ﺨﺭﺝ‬
‫ﻫﻲ ﻭﺤﺩﺍﺕ ﺘﺴﺘﻁﻴﻊ ﺍﻟﻘﻴﺎﻡ ﺒﻌﻤﻠﻴﺘﻲ ﺍﻟﺩﺨل ﻭﺍﻟﺨﺭﺝ‪ .‬ﻜﻤﺜﺎل ﻋﻠﻰ ﺫﻟﻙ ﺍﻟﺸﺎﺸﺔ ﻭﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﺍﻟﻠﺘﺎﻥ‬
‫ﻜﺎﻨﺘﺎ ﺘﺸﻜﻼﻥ ﺴﺎﺒﻘﹰﺎ ﻭﺤﺩﺓ ﻤﺘﻜﺎﻤﻠﺔ ﻻ ﻴﺯﺍل ﻴﻨﻅﺭ ﺇﻟﻴﻬﺎ‬
‫‪Memory‬‬
‫ﻭﻅﻴﻔﻴﹰﺎ )ﻓﻲ ﺍﻟﺒﺭﻤﺠﺔ( ﻜﻭﺤﺩﺓ ﺍﻟﺩﺨل ﻭﺍﻟﺨﺭﺝ ﺍﻟﻘﻴﺎﺴﻴﺔ‬
‫‪OPU…1‬‬ ‫‪IPU…1‬‬
‫‪.Standard Input Output‬‬
‫‪OPU…2‬‬ ‫‪IPU…2‬‬

‫‪OPU…3‬‬
‫‪CPU‬‬
‫‪IPU…3‬‬ ‫ﻭﺤﺩﺍﺕ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ ﻜﻭﺤﺩﺍﺕ ﺩﺨل‪/‬ﺨﺭﺝ‬
‫‪OPU…3‬‬ ‫‪IPU…3‬‬ ‫ﻗﺩ ﺘﺘﺴﺎﺀل ﺍﻵﻥ ﺃﻴﻥ ﻤﺎ ﻴُﺴﻤﻰ ﻭﺤﺩﺍﺕ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ‬
‫ﻜﺎﻷﻗﺭﺍﺹ ﺍﻟﺼﻠﺒﺔ‬ ‫‪Secondary Storage Units‬‬
‫‪I/OU…1‬‬ ‫‪I/OU…2‬‬ ‫‪I/OU…3‬‬
‫ﻭﻗﺎﺭﺉ‬ ‫‪CD‬‬ ‫ﻭﻗﺎﺭﺉ ﺍﻷﻗﺭﺍﺹ ﺍﻟﻤﻀﻐﻭﻁﺔ‬ ‫‪Hard Disks‬‬

‫ﻓﻲ ﻫﺫﻩ ﺍﻟﺒﻨﻴﺔ؟ ﺃﻟﻴﺴﺕ ﺠﺯﺀﹰﺍ ﺃﺴﺎﺴﻴﹰﺎ ﻤﻨﻬﺎ‪ ،‬ﻭﻟﻤﺎﺫﺍ ﻟﻡ ﻨـﺄﺕ ﻋﻠﻰ‬ ‫‪Floppy Disks‬‬ ‫ﺍﻷﻗﺭﺍﺹ ﺍﻟﻠﻴﻨﺔ‬
‫ﺫﻜﺭﻫﺎ؟ ﺃﻭ ﺭﺒﻤﺎ ﻜﻭﻨﻬﺎ ﻭﺴﺎﺌل ﻟﻠﺘﺨﺯﻴﻥ ﻓﺎﻋﺘﺒﺭﻨﺎﻫﺎ ﺫﺍﻜﺭﺍﺕ؟‬

‫ﺘﺘﺼﻑ ﺒﻜﻭﻨﻬﺎ ﻭﺤﺩﺍﺕ ﺘﺨﺯﻴﻥ ﺸﺒﻪ‬ ‫‪Secondary Storage Units‬‬ ‫ﺇﻥ ﻭﺤﺩﺍﺕ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ‬
‫ﺩﺍﺌﻡ ﺫﺍﺕ ﺴﻌﺎﺕ ﻜﺒﻴﺭﺓ ﻴﺘﻡ ﻓﻴﻬﺎ ﺤﻔﻅ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﺘﻲ ﻟﻴﺴﺕ ﻗﻴﺩ ﺍﻻﺴﺘﺨﺩﺍﻡ ﺍﻟﺤﺎﻟﻲ ﻤﻥ ﻗﺒل‬
‫ﺍﻟﻭﺤﺩﺍﺕ ﺍﻷﺨﺭﻯ ﻓﻲ ﺍﻟﺤﺎﺴﻭﺏ ﺤﺘﻰ ﺘﺒﺭﺯ ﺍﻟﺤﺎﺠﺔ ﺇﻟﻴﻬﺎ ﺒﻌﺩ ﺴﺎﻋﺎﺕ ﺃﻭ ﺃﻴﺎﻡ ﺃﻭ ﺃﺸﻬﺭ ﺃﻭ ﺤﺘﻰ ﺒﻌﺩ‬
‫ﺴﻨﻭﺍﺕ‪ .‬ﻴﺘﻁﻠﺏ ﺍﻟﻭﺼﻭل ﺇﻟﻰ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻲ ﻭﺤﺩﺍﺕ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ ﺯﻤﻨﹰﺎ ﺃﻜﺒﺭ ﺒﻜﺜﻴﺭ ﻤﻥ ﺯﻤﻥ‬
‫ﺍﻟﻭﺼﻭل ﺇﻟﻴﻬﺎ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴﺴﻴﺔ‪.‬‬

‫ﺇﻥ ﺘﺼﻨﻴﻔﻨﺎ ﻟﻭﺤﺩﺍﺕ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ ﻓﻲ ﺍﻟﺒﻨﻴﺔ ﺍﻟﻭﻅﻴﻔﻴﺔ ﻫﻭ ﺃﻨﻬﺎ ﻭﺤﺩﺍﺕ ﺩﺨل‪/‬ﺨﺭﺝ! ﻓﻨﺤﻥ ﻨﺨﺯﻥ‬
‫ﻋﻠﻴﻬﺎ ﺍﻟﺒﺭﺍﻤﺞ ﻭﻏﻴﺭﻫﺎ ﻤﻥ ﻤﻌﻠﻭﻤﺎﺕ ﺤﻴﻨﺎﹰ‪ ،‬ﻭﻫﻲ ﻫﻨﺎ ﺒﻤﺜﺎﺒﺔ ﻭﺤﺩﺓ ﺨﺭﺝ‪ ،‬ﻭﻨﺴﺘﺭ ‪‬ﺩ ﻤﻨﻬﺎ ﻤﺎ ﺴﺒﻕ ﺃﻥ‬
‫ﺨﺯ‪‬ﻨﺎﻩ ﺤﻴﻨﹰﺎ ﺁﺨﺭ‪ ،‬ﻭﻫﻲ ﻫﻨﺎ ﺘﻠﻌﺏ ﺩﻭﺭ ﻭﺤﺩﺓ ﺩﺨل‪.‬‬

‫‪4‬‬
‫ﺇﺫﻥ ﻜل ﻤﺎ ﻫﻭ ﺨﺎﺭﺝ ﺩﻤﺎﻍ ﺍﻟﺤﺎﺴﻭﺏ ﺍﻟﻤﺅﻟﻑ ﻤﻥ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ﻭﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴﺴﻴﺔ‬
‫ﻴُﻌﺘﺒﺭ ﻁﺭﻓﻴﹰﺎ ‪ ،Peripheral‬ﻭﺒﺎﻟﺘﺎﻟﻲ ﻋﻼﻗﺘﻪ ﻤﻊ ﺍﻟﺩﻤﺎﻍ ﺇﻤﺎ ﻋﻼﻗﺔ ﺩﺨل ﺃﻭ ﻋﻼﻗﺔ ﺨﺭﺝ‪.‬‬

‫ﻟﻜﻨﻙ ﻤﺤﻕ ﺇﺫﺍ ﻟﻡ ﺘﻘﺒل ﺒﺴﻬﻭﻟﺔ ﺘﺼﻨﻴﻑ ﻭﺤﺩﺍﺕ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ ﻜﻭﺤﺩﺍﺕ ﺩﺨل‪/‬ﺨﺭﺝ‪ .‬ﺇﺫ ﺃﻥ ﻤﺎ‬
‫ﻨﻌﺭﻓﻪ ﻋﻥ ﻭﺤﺩﺍﺕ ﺍﻟﺩﺨل ﺃﻭ ﺍﻟﺨﺭﺝ ﺤﺘﻰ ﺍﻵﻥ ﺃﻨﻬﺎ ﺤﻭﺍﺱ ﺍﻟﺤﺎﺴﻭﺏ ﻓﻲ ﺘﻌﺎﻤﻠﻪ ﻤﻊ ﺍﻹﻨﺴﺎﻥ‪ ،‬ﻓﻬﻲ‬
‫ﻼ ﻋﺒﺭ ﺍﻟﺸﺎﺸﺔ ﺃﻭ‬
‫ﻼ ﻋﺒﺭ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ ﺃﻭ ﺍﻟﻔﺄﺭﺓ ﻭ ﹸﺘﻅﻬﺭ ﻟﻪ ﻨﺘﺎﺌﺞ ﻤﺜ ﹰ‬
‫ﺘﺄﺨﺫ ﻤﻨﻪ ﻤﻌﻁﻴﺎﺕ ﻤﺜ ﹰ‬
‫ﺍﻟﻁﺎﺒﻌﺔ‪ .‬ﺃﻤﺎ ﻭﺴﺎﺌﻁ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ ﻫﺫﻩ‪ ،‬ﻓﻬﻲ ﻻ ﺘﺘﻌﺎﻤل ﻤﺒﺎﺸﺭﺓ ﻤﻊ ﺍﻹﻨﺴﺎﻥ‪ ،‬ﺒل ﺘﺴﺘﺨﺩﻡ ﻟﻠﺩﺨل‬
‫ﻭﺍﻟﺨﺭﺝ ﻓﻲ ﺍﻟﺤﺎﺴﻭﺏ ﻨﻔﺴﻪ‪ ،‬ﻓﻜﻴﻑ ﺫﻟﻙ؟‬
‫ﻟﻘﺩ ﺒﺩﺃﻨﺎ ﺒﻤﺤﺎﻜﺎﺓ ﻭﺘﺸﺒﻴﻪ ﻭﻅﺎﺌﻑ ﺍﻟﺤﺎﺴﻭﺏ ﺒﻤﺎ ﻨﺠﺩﻩ ﻟﺩﻯ ﺍﻟﺒﺸﺭ ﻤﻥ ﺩﻤﺎﻍ ﻭﺤﻭﺍﺱ‪ .‬ﻓﺈﺫﺍ ﺃﻜﻤﻠﻨﺎ‬
‫ﻭﻓﻕ ﻨﻔﺱ ﺍﻟﻤﻨﻬﺞ‪ ،‬ﻨﺠﺩ ﺃﻥ ﺩﻭﺭ ﻭﺤﺩﺍﺕ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ ﻫﻲ ﻜﺩﻭﺭ ﺍﻟﻭﺭﻕ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻺﻨﺴﺎﻥ‪.‬‬
‫ﻼ ﻻ ﻴﻘﻭﻤﻭﻥ ﺒﺤﺸﺭ ﻜل ﻤﺎ ﻴﺤﺘﺎﺠﻭﻨﻪ ﻓﻲ ﺃﻋﻤﺎﻟﻬﻡ ﻭﻓﻲ ﺤﻠﻬﻡ ﻟﻠﻤﺴﺎﺌل ﻤﻥ ﻤﻌﻁﻴﺎﺕ‬
‫ﻓﺎﻟﻤﻌﻠﻤﻭﻥ ﻤﺜ ﹰ‬
‫ﺭﻗﻤﻴﺔ ﻭﻨﺼ‪‬ﻴﺔ ﻭﻏﻴﺭﻫﺎ ﻭﻤﻥ ﻗﻭﺍﻨﻴﻥ ﺭﻴﺎﻀﻴﺔ ﻭﻓﻴﺯﻴﺎﺌﻴﺔ ﻓﻲ ﺫﺍﻜﺭﺍﺘﻬﻡ ﺍﻟﻤﺤﺩﻭﺩﺓ‪ .‬ﺒل ﻓﻲ ﺤﻘﻴﻘﺔ ﺍﻷﻤﺭ‬
‫ﻼ ﺒﻤﻌﺎﻟﺠﺔ ﻤﺴﺄﻟﺔ ﻤﺎ‪ ،‬ﻋﺒﺭ‬
‫ﻫﻡ ﻻ ﻴﺴﺘﻁﻴﻌﻭﻥ ﺫﻟﻙ‪ .‬ﺇﺫ ﻻﺒﺩ ﻟﻬﻡ ﻤﻥ ﺸﺤﻥ ﺫﺍﻜﺭﺘﻬﻡ ﻋﻨﺩﻤﺎ ﻴﻘﻭﻤﻭﻥ ﻤﺜ ﹰ‬
‫ﺃﺨﺫ ﻤﻌﻠﻭﻤﺎﺕ ﻤﻥ ﻜﺘﺏ ﺘﺘﻌﻠﻕ ﺒﻤﻭﻀﻭﻉ ﺍﻟﻤﺴﺄﻟﺔ‪ .‬ﻜﻤﺎ ﻻﺒﺩ ﻟﻬﻡ ﻓﻲ ﻜﺜﻴﺭ ﻤﻥ ﺍﻷﺤﻴﺎﻥ ﻤﻥ ﻜﺘﺎﺒﺔ‬
‫ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﻨﺎﺘﺠﺔ ﻋﻥ ﺤل ﺍﻟﻤﺴﺎﺌل ﻋﻠﻰ ﺍﻟﻭﺭﻕ ﻟﻜﻲ ﻴﺴﺘﺨﺩﻤﻭﻫﺎ ﻻﺤﻘ ﹰﺎ‪.‬‬
‫ﺇﻥ ﻭﺴﺎﺌﻁ ﺍﻟﺘﺨﺯﻴﻥ ﺍﻟﺜﺎﻨﻭﻴﺔ‪ ،‬ﻭﻨﺴﻤﻴﻬﺎ ﺃﺤﻴﺎﻨﹰﺎ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺜﺎﻨﻭﻴﺔ‪ ،‬ﻫﻲ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻠﺤﺎﺴﻭﺏ ﺫﺍﻜﺭﺓ ﺩﺍﺌﻤﺔ‬
‫ﻟﻠﻤﻌﻠﻭﻤﺎﺕ ﻜﻤﺎ ﺍﻟﻭﺭﻕ ﺒﺎﻟﻨﺴﺒﺔ ﻟﻺﻨﺴﺎﻥ‪ .‬ﺇﻻ ﺃﻥ ﻁﺭﻴﻘﺔ ﺘﻌﺎﻤل ﺍﻟﺤﺎﺴﻭﺏ ﻤﻌﻬﺎ‪ ،‬ﻜﻤﺎ ﺴﻨﺭﻯ ﻻﺤﻘ ﹰﺎ‬
‫ﻋﻨﺩﻤﺎ ﻨﺘﻌﺎﻤل ﻤﻌﻬﺎ ﺒﺭﻤﺠﻴ ﹰﺎ‪ ،‬ﻻ ﺘﺨﺘﻠﻑ ﻜﺜﻴﺭﹰﺍ ﻋﻥ ﻁﺭﻴﻘﺔ ﺘﻌﺎﻤﻠﻪ ﻤﻊ ﻭﺤﺩﺍﺕ ﺩﺨل‪/‬ﺨﺭﺝ‪ .‬ﺇﺫ ﻴﺭﺴل‬
‫ﺇﻟﻴﻬﺎ )ﻴﻜﺘﺏ ﻓﻴﻬﺎ( ﺍﻟﻨﺘﺎﺌﺞ ﻭﻴﺄﺨﺫ ﻤﻨﻬﺎ )ﻴﻘﺭﺃ ﻤﻨﻬﺎ( ﺍﻟﻤﻌﻁﻴﺎﺕ ﺒﻁﺭﻴﻘﺔ ﻤﺸﺎﺒﻬﺔ ﻜﺜﻴﺭﹰﺍ ﻟﻁﺭﻴﻘﺔ ﺘﻌﺎﻤﻠﻪ‬
‫ﻤﻊ ﺃﺠﻬﺯﺓ ﺍﻟﺩﺨل‪/‬ﺍﻟﺨﺭﺝ ﺍﻷﺨﺭﻯ‪.‬‬

‫‪ .1‬ﺍﻟﺤﺎﺴﻭﺏ‪ ،‬ﻜﻴﻑ ﻴﻌﻤل؟‬


‫ﻴﻤﻜﻥ ﺍﻹﺠﺎﺒﺔ ﻋﻠﻰ ﻫﺫﺍ ﺍﻟﺴﺅﺍل ﻤﻥ ﺨﻼل ﻤﺜﺎل ﻓﻲ ﻏﺎﻴﺔ ﺍﻟﺒﺴﺎﻁﺔ‪:‬‬

‫ﻲ ﺤﺎﺴﻭﺒﹰﺎ ﻷﻥ ﻋﻤﻠﻪ ﺍﻷﺴﺎﺴﻲ ﺍﻟﺤﺴﺎﺏ‪ .‬ﺇﺫﻥ‪ ،‬ﻟﻨﺭ ﻜﻴﻑ ﻴﺘﻤﻜﻥ ﻤﻥ ﺤﺴﺎﺏ‬


‫ﺴﻤ ﱠ‬
‫ﻨﻌﻠﻡ ﺃﻥ ﺍﻟﺤﺎﺴﻭﺏ ُ‬
‫ﻤﺠﻤﻭﻉ ﻗﻴﻡ ﻤﺘﺤﻭﻟﻴﻥ‪ ،‬ﻴﺤﻭﻴﺎﻥ ﺃﻋﺩﺍﺩ‪ ،‬ﻭﻭﻀﻊ ﺍﻟﻨﺎﺘﺞ ﻓﻲ ﻤﺘﺤﻭل ﺜﺎﻟﺙ‪ ،‬ﻜﻤﺎ ﻓﻲ ﺍﻟﺼﻴﻐﺔ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪C= A+B‬‬

‫ﻋﻠﻰ ﺍﻟﺘﻭﺍﻟﻲ‪.‬‬ ‫‪A, B, C‬‬ ‫ﺇﺫ ﺴﺘﻜﺭﺱ ﺨﺎﻨﺔ ﺫﺍﻜﺭﺓ ﻟﻜل ﻤﻥ ﺍﻟﻤﺘﺤﻭﻻﺕ‬

‫‪5‬‬
‫ﻴﻤﻜﻥ ﺍﻟﺘﻌﺒﻴﺭ ﻋﻥ ﻁﺭﻴﻘﺔ ﺘﻨﻔﻴﺫ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﺤﺴﺎﺒﻴﺔ ﺒﺸﻜل ﺘﻔﺼﻴﻠﻲ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻟﻐﺔ ﺭﻤﺯﻴﺔ )ﺒﺎﻹﻨﻜﻠﻴﺯﻴﺔ(‬
‫ﻫﻲ ﻓﻌﻠﻴﹰﺎ ﻤﺠﻤﻭﻋﺔ ﺘﻌﻠﻴﻤﺎﺕ )‪ (instruction‬ﺘﺤﺩﺩ ﻟﻠﺤﺎﺴﻭﺏ ﻤﺎﻴﺠﺏ ﻓﻌﻠﻪ ﻟﻠﻘﻴﺎﻡ ﺒﺎﻟﻤﻁﻠﻭﺏ )ﺠﻤﻊ‬
‫ﻤﺘﺤﻭﻟﻴﻥ( ﻜﻤﺎ ﻴﻠﻲ‪:‬‬

‫‪LOAD A, R1‬‬ ‫‪R1‬‬ ‫ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺇﻟﻰ ﺍﻟﺴﺠل‬ ‫‪A‬‬ ‫‪ .1‬ﺍﺸﺤﻥ )ﺍﻨﻘل( ﻗﻴﻤﺔ ﺍﻟﻤﺘﺤﻭل‬

‫‪LOAD B, R2‬‬ ‫‪R2‬‬ ‫ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺇﻟﻰ ﺍﻟﺴﺠل‬ ‫‪B‬‬ ‫‪ .2‬ﺍﺸﺤﻥ )ﺍﻨﻘل( ﻗﻴﻤﺔ ﺍﻟﻤﺘﺤﻭل‬

‫‪ADD‬‬ ‫‪R1,R2,R3‬‬ ‫‪R3‬‬ ‫ﻭﻀﻊ ﺍﻟﻨﺘﻴﺠﺔ ﻓﻲ‬ ‫‪R2‬‬ ‫ﻭ‬ ‫‪R1‬‬ ‫‪ .3‬ﺍﺠﻤﻊ ﻗﻴﻤﺔ ﺍﻟﺴﺠل‬

‫‪STORE R3,C‬‬ ‫‪C‬‬ ‫ﻓﻲ ﺨﺎﻨﺔ ﺍﻟﺫﺍﻜﺭﺓ‬ ‫‪R3‬‬ ‫‪ .4‬ﺨﺯ‪‬ﻥ ﻗﻴﻤﺔ ﺍﻟﺴﺠل‬

‫ﻨﻌﻡ ﻜل ﻫﺫﺍ ﻟﺠﻤﻊ ﻋﺩﺩﻴﻥ‪ ،‬ﻓﻬﺫﻩ ﻫﻲ ﻁﺭﻴﻘﺔ ﺍﻟﺤﺎﺴﻭﺏ "ﺃﺴﻁﻭﺭﺓ ﺍﻟﺫﻜﺎﺀ ﻓﻲ ﺒﻌﺽ ﺍﻷﺫﻫﺎﻥ" ﻟﺠﻤﻊ‬
‫ﻋﺩﺩﻴﻥ‪.‬‬

‫ﺇﺫﺍ ﻗﻤﻨﺎ ﺒﺄﺨﺫ ﻟﻘﻁﺔ ﻗﺒل ﺍﻟﺘﻨﻔﻴﺫ‪ ،‬ﻓﻤﺎ ﻨﺭﺍﻩ ﻓﻌﻠﻴﹰﺎ ﻓﻲ ﺫﺍﻜﺭﺓ ﺍﻟﺤﺎﺴﻭﺏ ﻫﻭ ﻤﺎ ﻴﻠﻲ‪:‬‬

‫ﺨﺎﻨﺎﺕ ﺍﻟﺫﺍﻜﺭﺓ ﺫﺍﺕ ﺍﻟﻌﻨﺎﻭﻴﻥ ‪ 12 ،11 ،10‬ﻋﻠﻰ ﺍﻟﺘﻭﺍﻟﻲ ﻭﺍﻟﺘﻲ‬ ‫‪A, B, C‬‬ ‫ﹸﻜﺭ‪‬ﺴﺕ ﻟﻠﻤﺘﺤﻭﻻﺕ‬
‫ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﺍﻟﻘﻴﻡ ‪ 0 ،128 ،64‬ﻭﺘﻤﺜﻴﻠﻬﺎ ﺒﺎﻟﻨﻅﺎﻡ ﺍﻟﺜﻨﺎﺌﻲ ﻫﻭ‪:‬‬
‫‪0000 0000 0000 0000 0000 0000 0100 0000‬‬
‫‪0000 0000 0000 0000 0000 0000 1000 0000‬‬
‫‪0000 0000 0000 0000 0000 0000 0000 0000‬‬

‫ﺃﻤﺎ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻷﺭﺒﻊ ﻓﺄﺨﺫﺕ ﺍﻟﺸﻜل ﺍﻟﺜﻨﺎﺌﻲ ﺍﻟﺘﺎﻟﻲ‪:‬‬


‫‪1010 0000 0000 0000 0000 0000 0001 0100‬‬
‫‪1011 0000 0000 0000 0000 0000 0010 0100‬‬
‫‪0000 0000 0000 0000 0011 0010 0001 0010‬‬
‫‪1100 0000 0000 0000 0000 0000 0011 0101‬‬

‫ﻴﻤﻜﻨﻙ ﺃﻥ ﺘﻐﻤﺽ ﻋﻴﻨﻴﻙ ﻭﻻ ﺘﺤﺩﻕ‪ ،‬ﺇﻥ ﺃﺭﺩﺕ‪ ،‬ﺒﻬﺫﻩ ﺍﻟﻤﺘﺘﺎﻟﻴﺎﺕ ﺍﻟﻌﺠﻴﺒﺔ ﻤﻥ ﺍﻷﺼﻔﺎﺭ ﻭﺍﻟﻭﺍﺤﺩﺍﺕ‬
‫)ﺍﻟﻨﻅﺎﻡ ﺍﻟﺜﻨﺎﺌﻲ( ﺤﻴﺙ ﺠﻤﻴﻊ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﻓﻲ ﺍﻟﺤﺎﺴﻭﺏ ﺘﻤﺜل ﺒﻭﺍﺴﺘﻁﻬﺎ‪.‬‬

‫ﻭﻟﻜﻥ ﺭﻜﺯ ﻤﻌﻲ ﻋﻠﻰ ﻤﺠﻤﻭﻋﺔ ﺍﻷﻓﻜﺎﺭ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﺘﻲ ﺘﻡ ﺍﺴﺘﺨﻼﺼﻬﺎ ﻤﻥ ﺍﻟﻤﺜﺎل‪.‬‬

‫‪6‬‬
‫‪ .1‬ﺍﻟﺤﺎﺴﻭﺏ‪ ،‬ﻤﺒﺎﺩﺉ ﻋﻤﻠﻪ ﺍﻷﺴﺎﺴﻴﺔ‬
‫ﻴﺘﻜﻭﻥ ﺃﻱ ﺒﺭﻨﺎﻤﺞ ﻤﻥ ﺠﺯﺀ ﻤﻌﻁﻴﺎﺕ )ﻤﺘﺤﻭﻻﺕ( ﻭﺠﺯﺀ ﺘﻌﻠﻴﻤﺎﺕ‬ ‫•‬

‫ﺒﺘﻨﻔﻴﺫﻫﺎ‪.‬‬ ‫‪CPU‬‬ ‫ﻴﺠﺏ ﺃﻥ ﺘﻜﻭﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺭﻜﺯﻴﺔ ﻟﺘﺒﺎﺸﺭ‬ ‫•‬

‫ﺘﺨﺯﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻭﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻓﻲ ﺃﻱ ﻤﻜﺎﻥ ﻓﻲ ﺍﻟﺫﺍﻜﺭﺓ‪ ،‬ﻟﻴﺱ ﻫﻨﺎﻙ ﺠﺯﺀ ﻓﻲ‬ ‫•‬

‫ﺍﻟﺫﺍﻜﺭﺓ ﻤﺨﺼﺹ ﻟﻠﺘﻌﻠﻴﻤﺎﺕ ﻓﻘﻁ ﻭﺠﺯﺀ ﻤﺨﺼﺹ ﻟﻠﻤﻌﻁﻴﺎﺕ ﻓﻘﻁ‪ .‬ﻓﻔﻲ ﻤﺜﺎﻟﻨﺎ ﻟﻥ‬
‫ﻴﺨﺘﻠﻑ ﺍﻟﻭﻀﻊ ﻟﻭ ﺃﺯﺤﻨﺎ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺇﻟﻰ ﺨﺎﻨﺎﺕ ﺍﻟﺫﺍﻜﺭﺓ ‪، 15 ،14 ،13‬‬
‫‪Von‬‬ ‫ﻭﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻜﺎﻨﺕ ﻓﻲ ﺍﻟﺨﺎﻨﺎﺕ ‪ . 12 ، 11 ، 10 ، 9‬ﺇﻨﻪ ﻤﺒﺩﺃ ﻓﻭﻥ ﻨﻴﻭﻤﺎﻥ‬
‫ﺍﻟﺫﻱ ﺘﻌﻤﻠﻪ ﻭﻓﻘﻪ ﺠﻤﻴﻊ ﺤﻭﺍﺴﻴﺒﻨﺎ‪.‬‬ ‫‪Neuman‬‬

‫ﺜﻡ ﺍﻟﺘﻌﻠﻴﻤﺔ ‪ (n+1‬ﻤﺎ ﻟﻡ‬ ‫‪n‬‬ ‫ﺇﻥ ﻁﺭﻴﻘﺔ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻫﻭ ﺩﺍﺌﻤﹰﺎ ﺘﺴﻠﺴﻠﻲ )ﺘﻨﻔﱠﺫ ﺍﻟﺘﻌﻠﻴﻤﺔ‬ ‫•‬

‫ﺘﻜﻥ ﻫﻨﺎﻙ ﺘﻌﻠﻴﻤﺔ ﺨﺎﺼﺔ ﺘﻁﻠﺏ ﻜﺴﺭ ﻫﺫﺍ ﺍﻟﺘﺴﻠﺴل‪ ،‬ﻟﻴﺫﻫﺏ ﺍﻟﺘﻨﻔﻴﺫ ﺇﻟﻰ ﻋﻨﻭﺍﻥ‬
‫ﺘﻌﻠﻴﻤﺔ ﻤﺎ ﻟﻴﺴﺕ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ‪) .‬ﺭﺒﻤﺎ ﺘﻜﻭﻥ ﻗﺩ ﺴﻤﻌﺕ ﺒﺘﻌﻠﻴﻤﺔ ‪.(GOTO‬‬

‫ﺇﻥ ﻁﺒﻴﻌﺔ ﻭ ﺃﺴﻤﺎﺀ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻭﻁﺭﻴﻘﺔ ﻜﺘﺎﺒﺘﻨﺎ ﻟﻬﺎ ﻫﻨﺎ )ﺘﺭﻤﻴﺯﻫﺎ( ﻫﻲ ﻟﺤﺎﺴﻭﺏ‬ ‫•‬

‫ﺍﻓﺘﺭﺍﻀﻲ‪ ،‬ﺇﺫ ﺃﻥ ﻟﻜل ﻁﺭﺍﺯ ﺘﻌﻠﻴﻤﺎﺘﻪ ﻭﻁﺭﻕ ﺘﺭﻤﻴﺯﻫﺎ ﺍﻟﺨﺎﺼﺔ‪ ،‬ﻭﻟﻜﻨﻬﺎ ﺠﻤﻴﻌﹰﺎ ﻟﻬﺎ‬
‫ﻨﻔﺱ ﺍﻟﻤﺒﺩﺃ ﺍﻟﻤﺫﻜﻭﺭ ﻓﻲ ﺍﻟﻤﺜﺎل‪.‬‬

‫‪ .2‬ﻤﺴﺘﻭﻴﺎﺕ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ‬


‫ﻟﻘﺩ ﻋﺭﻓﺕ ﺤﺘﻰ ﺍﻵﻥ ﺩﻭﻥ ﻋﻨﺎﺀ ﻤﺎ ﻫﻭ ﻤﻔﻬﻭﻡ ‪:‬‬

‫‪ 1‬ـ ﻟﻐﺎﺕ ﺍﻵﻟﺔ ‪ ،machin language‬ﻓﻬﻲ ﻜﺎﻟﻤﺜﺎل ﺍﻟﺫﻱ ﺭﺃﻴﻨﺎﻩ ﺘﻤﺜﻴ ﹰ‬


‫ﻼ ﺒﺎﻷﺼﻔﺎﺭ ﻭﺍﻟﻭﺤﺩﺍﺕ ﻟﻜﺎﻤل‬
‫‪C=A+B‬‬ ‫ﺒﺭﻨﺎﻤﺞ‬

‫‪C=A+B‬‬ ‫‪ 2‬ـ ﻟﻐﺎﺕ ﺍﻟﻤﺠﻤﻊ ‪ ،assambly language‬ﻓﻬﻲ ﻜﺎﻟﻤﺜﺎل ﺍﻟﺫﻱ ﺭﺃﻴﻨﺎﻩ ﺘﻤﺜﻴ ﹰ‬
‫ﻼ ﻟﺒﺭﻨﺎﻤﺞ‬
‫ﺒﺎﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺭﻤﺯﻴﺔ ‪.LOAD, ADD, STORE‬‬

‫‪C=A+B‬‬ ‫‪ 3‬ـ ﻟﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ‪ ،High Level Programming Language‬ﻭﻫﻲ ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫ﺍﻟﻠﻐﺔ ﺍﻷﻗﺭﺏ ﻟﻔﻬﻤﻨﺎ‪ ،‬ﻭﻟﻠﺘﻌﺒﻴﺭ ﻤﺒﺎﺸﺭ ﹰﺓ ﻋﻤﺎ ﻨﺭﻴﺩ‪ ،‬ﻭﺍﻟﺘﻲ ﺘﻘﻭل ﺍﺠﻤﻊ ﺍﻟﻌﺩﺩﻴﻥ ﺍﻟﻤﻭﺠﻭﺩﻴﻥ ﻓﻲ‬
‫ﻭﻀﻊ ﺍﻟﻨﺘﻴﺠﺔ ﻓﻲ ﺍﻟﻤﺘﺤﻭل ‪.C‬‬ ‫‪A, B‬‬ ‫ﻤﺘﺤﻭﻟﻴﻥ‬

‫‪7‬‬
‫ﻟﻐﺔ ﺍﻵﻟﺔ‪ ،‬ﻟﻐﺔ ﺍﻟﻤﺠﻤ‪‬ﻊ‬
‫ﻴﻜﺘﺏ ﺍﻟﻤﺒﺭﻤﺠﻭﻥ ﺘﻌﻠﻴﻤﺎﺘﻬﻡ ﺒﻠﻐﺎﺕ ﻤﺨﺘﻠﻔﺔ ﻟﻠﺒﺭﻤﺠﺔ‪ ،‬ﺒﻌﻀﻬﺎ ﻤﻔﻬﻭﻡ ﻤﺒﺎﺸﺭﺓ ﻤﻥ ﻗﺒل ﺍﻟﺤﺎﺴﻭﺏ‬
‫ﻭﺒﻌﻀﻬﺎ ﺍﻵﺨﺭ ﻴﺤﺘﺎﺝ ﺇﻟﻰ ﺨﻁﻭﺍﺕ ﺘﺭﺠﻤﺔ ﻭﺴﻴﻁﺔ‪ .‬ﻴﻭﺠﺩ ﺤﺎﻟﻴﹰﺎ ﺍﻟﻤﺌﺎﺕ ﻤﻥ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ‬
‫ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ﻭﺍﻟﺘﻲ ﻴﻤﻜﻥ ﺘﺼﻨﻴﻔﻬﺎ ﺇﻟﻰ ﺍﻷﻨﻭﺍﻉ ﺍﻟﺜﻼﺜﺔ ﺍﻟﺴﺎﺒﻘﺔ‪.‬‬

‫ﻴﺴﺘﻁﻴﻊ ﺍﻟﺤﺎﺴﻭﺏ ﺃﻥ ﻴﻔﻬﻡ ﻤﺒﺎﺸﺭﺓ ﻟﻐﺔ ﺍﻵﻟﺔ ﺍﻟﺨﺎﺼﺔ ﺒﻪ ﺍﻟﺘﻲ ﻫﻲ ﺍﻟﻠﻐﺔ ﺍﻟﻁﺒﻴﻌﻴﺔ ﻟﻪ‪ .‬ﻴﻤﻜﻥ ﺘﻌﺭﻴﻑ‬
‫ﻫﺫﻩ ﺍﻟﻠﻐﺔ ﻋﻠﻰ ﺃﻨﻬﺎ ﺍﻟﻠﻐﺔ ﺍﻟﻤﻌﺭﻓﺔ ﻤﻥ ﻗﺒل ﺍﻟﺒﻨﻴﺔ ﺍﻟﺼﻠﺒﺔ ﻟﻠﺤﺎﺴﻭﺏ‪.‬‬

‫ﺘﺘﺄﻟﻑ ﻟﻐﺎﺕ ﺍﻵﻟﺔ ﺒﺸﻜل ﻋﺎﻡ ﻤﻥ ﺴﻼﺴل ﻤﻥ ﺍﻷﻋﺩﺍﺩ ﻋﻠﻰ ﺸﻜل ﻤﺠﻤﻭﻋﺎﺕ ﻤﻥ ﺍﻷﺼﻔﺎﺭ‬
‫ﻭﺍﻟﻭﺍﺤﺩﺍﺕ ﺍﻟﺘﻲ ﺘﻌﻁﻲ ﺍﻷﻭﺍﻤﺭ ﻟﻠﺤﺎﺴﻭﺏ ﻤﻥ ﺃﺠل ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺎﺘﻪ ﺍﻷﻭﻟﻴﺔ ﻜل ﺘﻌﻠﻴﻤﺔ ﻋﻠﻰ ﺤﺩﺓ‪.‬‬

‫ﺘﺭﺘﺒﻁ ﻟﻐﺎﺕ ﺍﻵﻟﺔ ﺒﺎﻵﻟﺔ‪ ،‬ﺃﻱ ﺒﺎﻟﻨﻭﻉ ﺍﻟﺨﺎﺹ ﻟﻠﺤﺎﺴﻭﺏ‪ ،‬ﺍﺭﺘﺒﺎﻁﹰﺎ ﻭﺜﻴﻘﹰﺎ ﺒﻤﻌﻨﻰ ﺃﻥ ﻟﻐﺔ ﺁﻟﺔ ﻤﺎ‬
‫ﻴﻤﻜﻥ ﺃﻥ ﺘﺴﺘﺨﺩﻡ ﻓﻘﻁ ﻟﻨﻭﻉ )ﻁﺭﺍﺯ( ﻤﺤﺩﺩ ﻓﻘﻁ ﻤﻥ ﺍﻟﺤﻭﺍﺴﻴﺏ‪.‬‬

‫ﺘﻌﺘﺒﺭ ﻟﻐﺎﺕ ﺍﻵﻟﺔ ﻟﻐﺎﺕ ﺜﻘﻴﻠﺔ ﻭﻤﺭﻫﻘﺔ ﻟﻠﻜﺎﺌﻥ ﺍﻟﺒﺸﺭﻱ ﻭﻴﻤﻜﻥ ﺃﻥ ﻨﺭﻯ ﺫﻟﻙ ﻤﻥ ﺨﻼل ﺍﻟﻤﺜﺎل‬
‫ﺍﻟﻤﺫﻜﻭﺭ ﻟﺠﺯﺀ ﻤﻥ ﺒﺭﻨﺎﻤﺞ ﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ﺍﻵﻟﺔ ﻭﺍﻟﺫﻱ ﻴﻘﻭﻡ ﺒﺠﻤﻊ ﻋﺩﺩﻴﻥ ﻓﻲ ﻤﺘﺤﻭﻟﻴﻥ ﻭﻴﺨﺯﻥ‬
‫ﺍﻟﻨﺘﻴﺠﺔ ﻓﻲ ﻤﺘﺤﻭل ﺁﺨﺭ‪.‬‬

‫ﻤﻊ ﺍﻨﺘﺸﺎﺭ ﺍﻟﺤﻭﺍﺴﻴﺏ ‪ ،‬ﺃﺼﺒﺢ ﻤﻥ ﺍﻟﻤﻼﺤﻅ ﺃﻥ ﻋﻤﻠﻴﺔ ﺍﻟﺒﺭﻤﺠﺔ ﺒﻠﻐﺔ ﺍﻵﻟﺔ ﻫﻲ ﻟﻴﺴﺕ ﻋﻤﻠﻴﺔ ﻓﻬﻲ‬
‫ﻻ ﻤﻥ ﺍﺴﺘﺨﺩﺍﻡ ﺴﻼﺴل ﺍﻷﻋﺩﺍﺩ ﺍﻟﺘﻲ ﻴﻔﻬﻤﻬﺎ ﺍﻟﺤﺎﺴﻭﺏ ﻤﺒﺎﺸﺭﺓ‬
‫ﺒﻁﻴﺌﺔ ﻭﻤﻤﻠﱢﺔ ﻟﻤﻌﻅﻡ ﺍﻟﻤﺒﺭﻤﺠﻴﻥ‪ .‬ﻭﺒﺩ ﹰ‬
‫ﺒﺩﺃ ﺍﻟﻤﺒﺭﻤﺠﻭﻥ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻤﺼﻁﻠﺤﺎﺕ ﺇﻨﻜﻠﻴﺯﻴﺔ ﻤﺨﺘﺼﺭﺓ ﻟﻠﺘﻌﺒﻴﺭ ﻋﻥ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻷﻭﻟﻴﺔ ﻟﻠﺤﺎﺴﻭﺏ‪.‬‬
‫ﺘﻤﺜل ﻫﺫﻩ ﺍﻟﻤﺼﻁﻠﺤﺎﺕ ﺍﻷﺴﺎﺱ ﺍﻟﺫﻱ ﺍﻨﻁﻠﻘﺕ ﻤﻨﻪ ﻟﻐﺎﺕ ﺍﻟﻤﺠﻤﻊ ﺤﻴﺙ ﺘﻡ ﺘﻁﻭﻴﺭﺒﺭﺍﻤﺞ ﻤﺘﺭﺠﻤﺎﺕ‬
‫ﺘﻘﻭﻡ ﺒﺘﺤﻭﻴل ﺍﻟﺒﺭﺍﻤﺞ ﻤﻥ ﻟﻐﺔ ﺍﻟﻤﺠﻤﻊ ﺇﻟﻰ ﻟﻐﺔ ﺍﻵﻟﺔ‪.‬‬

‫ﻴﺒﻴﻥ ﺍﻟﻤﺜﺎل ﺍﻟﺴﺎﺒﻕ ﺠﺯﺀﹰﺍ ﻤﻥ ﺒﺭﻨﺎﻤﺞ ﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ﺍﻟﻤﺠﻤﻊ‪.‬‬


‫‪LOAD A, R1‬‬
‫‪LOAD B, R2‬‬
‫‪ADD‬‬ ‫‪R1,R2,R3‬‬
‫‪STORE R3,C‬‬

‫ﺇﻥ ﺍﻟﻤﻘﺎﺒل ﻟﻪ ﺒﻠﻐﺔ ﺍﻵﻟﺔ ﻫﻭ‪:‬‬


‫‪0000 0000 0000 0000 0000 0000 0100 0000‬‬
‫‪0000 0000 0000 0000 0000 0000 1000 0000‬‬
‫‪0000 0000 0000 0000 0000 0000 0000 0000‬‬

‫‪8‬‬
‫‪1010 0000 0000 0000 0000 0000 0001 0100‬‬
‫‪1011 0000 0000 0000 0000 0000 0010 0100‬‬
‫‪0000 0000 0000 0000 0011 0010 0001 0010‬‬
‫‪1100 0000 0000 0000 0000 0000 0011 0101‬‬

‫ﻻﺸﻙ ﺃﻥ ﺍﻟﺘﻌﺒﻴﺭ ﺒﻠﻐﺔ ﺍﻟﻤﺠ ‪‬ﻤﱢﻊ ﺃﻭﻀﺢ ﺒﻜﺜﻴﺭ ﻤﻥ ﻟﻐﺔ ﺍﻷﺭﻗﺎﻡ ﺍﻟﺜﻨﺎﺌﻴﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﻠﻐﺔ ﺍﻵﻟﺔ‪ .‬ﻜﻤﺎ ﺃﻨﻨﺎ‬
‫ﻨﻼﺤﻅ ﺃﻥ ﺍﻟﻨﺹ ﺍﻟﺒﺭﻤﺠﻲ ﻭﺍﻀﺢ ﻭﻤﻔﻬﻭﻡ )ﻨﻭﻋﹰﺎ ﻤﺎ( ﻤﻥ ﻗﺒل ﺍﻟﺒﺸﺭ ﻟﻜﻨﻪ ﻟﻴﺱ ﻤﻔﻬﻭﻤﹰﺎ ﻤﻥ ﻗﺒل‬
‫ﺍﻟﺤﻭﺍﺴﻴﺏ ﺤﺘﻰ ﺘﺘﻡ ﻋﻤﻠﻴﺔ ﺘﺭﺠﻤﺘﻪ ﺇﻟﻰ ﻟﻐﺔ ﺍﻵﻟﺔ‪.‬‬

‫ﻻ ﺤﻅ ﺃﻥ ﻫﻨﺎﻙ ﻨﻭﻉ ﻤﻥ ﺍﻟﺘﻘﺎﺒل ﺒﻴﻥ ﻟﻐﺔ ﺍﻵﻟﺔ ﻭﻟﻐﺔ ﺍﻟﻤﺠﻤﻊ‪ ،‬ﻓﻬﻤﺎ ﻤﻥ ﻨﻔﺱ ﺍﻟﺴﻭﻴﺔ ﻭﻟﻜﻥ ﻴﻌﺒﺭ‬
‫ﻋﻥ ﻨﻔﺱ ﺍﻟﺸﻲﺀ ﺇﻤﺎ ﺒﻁﺭﻴﻘﺔ ﺭﻤﺯﻴﺔ ﺃﻭ ﺜﻨﺎﺌﻴﺔ‪.‬‬

‫ﺍﻟﻠﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ‬


‫ﺘﺯﺍﻴﺩ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺤﻭﺍﺴﻴﺏ ﻭﺍﺴﺘﺨﺩﻤﺕ ﻟﻐﺎﺕ ﺍﻟﻤﺠﻤﻊ‪ .‬ﻟﻜﻥ ﺒﻘﻲ ﺇﻨﺠﺎﺯ ﺃﺒﺴﻁ ﺍﻟﻤﻬﺎﻡ ﻴﺘﻁﻠﺏ ﺍﺴﺘﺨﺩﺍﻡ‬
‫ﺍﻟﻜﺜﻴﺭ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ‪ .‬ﻭﺒﺎﻟﺘﺎﻟﻲ ﻤﻥ ﺃﺠل ﺘﺴﺭﻴﻊ ﻋﻤﻠﻴﺔ ﺍﻟﺒﺭﻤﺠﺔ ﺘﻡ ﺘﻁﻭﻴﺭ ﻟﻐﺎﺕ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ‬
‫ﺍﻟﺘﻲ ﺘﻘﺘﺭﺏ ﺃﻜﺜﺭ ﻤﻥ ﻁﺭﻴﻘﺔ ﺘﻔﻜﻴﺭﻨﺎ ﺒﺤل ﺍﻟﻤﺴﺎﺌل‪ ،‬ﻭﺘﺴﺎﻋﺩ ﺘﻌﻠﻴﻤﺎﺘﻬﺎ‬ ‫‪high-level languages‬‬

‫ﻋﻠﻰ ﺍﻟﻘﻴﺎﻡ ﺒﺎﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﻤﻬﺎﻡ ﺍﻟﺠﻭﻫﺭﻴﺔ‪.‬‬

‫ﺘﺴﺎﻋﺩ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ﺍﻟﻤﺒﺭﻤﺠﻴﻥ ﻋﻠﻰ ﻜﺘﺎﺒﺔ ﺘﻌﻠﻴﻤﺎﺕ ﻴﻤﻜﻥ ﺃﻥ ﺘﺒﺩﻭ ﻗﺭﻴﺒﺔ ﻤﻥ‬
‫ﺍﻟﻌﺒﺎﺭﺍﺕ ﺒﺎﻟﻠﻐﺔ ﺍﻻﻨﻜﻠﻴﺯﻴﺔ ﻭﺘﺤﺘﻭﻱ ﻋﻠﻰ ﺍﻟﺭﻤﻭﺯ ﺍﻟﺭﻴﺎﻀﻴﺔ ﺍﻟﺸﺎﺌﻌﺔ ﺍﻟﻤﺴﺘﺨﺩﻤﺔ‪.‬‬

‫ﻼ ﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺠﻤﻊ ﺍﻟﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ﺃﻥ ﻴﺤﺘﻭﻱ ﻋﻠﻰ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﺘﺎﻟﻴﺔ‪:‬‬
‫ﻴﻤﻜﻥ ﻤﺜ ﹰ‬
‫‪C= A+B‬‬

‫ﻼ ﺒﻜﺜﻴﺭ ﻤﻥ ﻗﺒل ﺍﻟﻤﺒﺭﻤﺠﻴﻥ ﻤﻥ ﻟﻐﺎﺕ ﺍﻵﻟﺔ ﺃﻭ‬


‫ﺇﻥ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ﻫﻲ ﺃﻜﺜﺭ ﺘﻘﺒ ﹰ‬
‫ﻟﻐﺎﺕ ﺍﻟﻤﺠﻤﻊ‪.‬‬

‫ﻜﺜﻴﺭﺓ ﺠﺩﹰﺍ ﻫﻲ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ﻭﻤﺘﻨﻭﻋﺔ ﻓﻲ ﻤﻔﺭﺍﺩﺘﻬﺎ ﻭﻗﻭﺍﻋﺩﻫﺎ ﻭﺇﻤﻜﺎﻨﺎﺘﻬﺎ ﻋﻥ‬
‫‪Fortran,‬‬ ‫ﺍﻟﺘﻌﺒﻴﺭ ﻋﻥ ﺤﻠﻨﺎ ﻟﻠﻤﺴﺎﺌل‪ .‬ﻭﺭﺒﻤﺎ ﺘﻜﻭﻥ ﻗﺩ ﺴﻤﻌﺕ ﺒﻠﻐﺎﺕ ﺒﺭﻤﺠﺔ ﻗﻭﻴﺔ ﺍﻻﻨﺘﺸﺎﺭ ﻤﺜل‪:‬‬
‫‪Basic, Pascal, C, C++, Java, Lisp, Ada‬‬

‫‪9‬‬
‫ﺇﻨﻬﺎ ﺃﻤﺜﻠﺔ ﻋﻥ ﻟﻐﺎﺕ ﻤﺴﺘﺨﺩﻤﺔ ﻜﺜﻴﺭﹰﺍ ﻓﻲ ﺍﻟﺒﺭﻤﺠﺔ ﻭﻜﻠﻬﺎ ﺘﺠﺘﻤﻊ ﺘﺤﺕ ﺘﺼﻨﻴﻑ ﻟﻐﺎﺕ ﻋﺎﻟﻴﺔ‬
‫ﺍﻟﻤﺴﺘﻭﻯ ﺃﻱ ﺃﻨﻬﺎ ﻟﻴﺴﺕ ﻟﻐﺎﺕ ﻤﻨﺨﻔﻀﺔ ﺍﻟﻤﺴﺘﻭﻯ ﻭﺍﻹﻨﺨﻔﺎﺽ ﻫﻨﺎ ﻴﻌﻨﻲ ﺍﻟﻤﺴﺘﻭﻯ ﺍﻟﻤﺎﺩﻱ‬
‫ﻟﻠﺤﺎﺴﻭﺏ‪ ،‬ﺃﻱ ﺃﻨﻬﺎ ﻟﻴﺴﺕ ﻟﻐﺔ ﺁﻟﺔ ﺃﻭ ﻟﻐﺔ ﻤﺠﻤﻊ‪.‬‬

‫‪ .3‬ﺍﻟﻤﺘﺭﺠﻤﺎﺕ‬
‫ﺘﺴﻤﻰ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﺘﻲ ﺘﻘﻭﻡ ﺒﺘﺤﻭﻴل ﻨﺹ ﺒﺭﻨﺎﻤﺞ ﻤﻥ ﻟﻐﺔ ﺇﻟﻰ ﻟﻐﺔ ﺃﺨﺭﻯ "ﺒﺎﻟﻤﺘﺭﺠﻤﺎﺕ" ‪.compilers‬‬

‫ﻴﻤﻜﻥ ﻟﻌﻤﻠﻴﺔ ﺍﻟﺘﺭﺠﻤﺔ ﻟﺒﺭﻨﺎﻤﺞ ﻤﻥ ﻟﻐﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ﺇﻟﻰ ﻟﻐﺔ ﺍﻵﻟﺔ ﺃﻥ ﺘﺄﺨﺫ ﺯﻤﻨ ﹰﺎ ﻜﺒﻴﺭﹰﺍ‪.‬‬

‫ﺁﻟﻴﺔ ﻋﻤل ﺍﻟﻤﺘﺭﺠﻡ‬


‫ﻴﻘﻭﻡ ﺍﻟﻤﺘﺭﺠﻡ ﺘﻘﻠﻴﺩﻴﹰﺎ ﺒﺨﺯﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻨﺎﺘﺞ ﺒﻠﻐﺔ ﺍﻵﻟﺔ ﻓﻲ "ﻤﻠﻑ ﺘﻨﻔﻴﺫﻱ" ﻋﻠﻰ ﻭﺤﺩﺓ ﺍﻟﺨﺯﻥ ﺍﻟﺩﺍﺌﻡ‪،‬‬
‫ﻭﻫﻭ ﺍﻟﻤﻠﻑ ﺍﻟﺫﻱ ﻴﺠﺭﻱ ﺸﺤﻨﻪ )ﻗﺭﺍﺌﺘﻪ ﻤﻥ ﻭﺤﺩﺓ ﺍﻟﺨﺯﻥ ﺍﻟﺩﺍﺌﻡ( ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺭﻜﺯﻴﺔ ﻋﻨﺩ ﻁﻠﺏ‬
‫ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ‪.Program execution‬‬

‫ﻜﺘﺎﺒﺔ ﻨﺹ ﺍﻟﺒﺭﻨﺎﻤﺞ )ﺒﻠﻐﺔ ﺒﺭﻤﺠﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ( ﺒﺎﺴﺘﺨﺩﺍﻡ ﻤﺤﺭﺭ ﻟﻠﻨﺼﻭﺹ ﺜﻡ ﺘﺨﺯﻴﻨﻪ ﻋﻠﻰ‬
‫ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺜﺎﻨﻭﻴﺔ‪.‬‬

‫ﻴﺨﻠﻕ ﺍﻟﻤﺘﺭﺠﻡ ﺒﺭﻨﺎﻤﺞ ﺒﻠﻐﺔ ﺍﻵﻟﺔ ﻭﻴﺨﺯﻨﻪ ﻋﻠﻰ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺜﺎﻨﻭﻴﺔ‪.‬‬

‫ﺍﻟﻭﺼل ﻤﺎ ﺒﻴﻥ ﺒﺭﻨﺎﻤﺞ ﻟﻐﺔ ﺍﻵﻟﺔ ﻭﺍﻟﻤﻜﺘﺒﺎﺕ ﺃﻭ ﺍﻟﺤﺯﻡ ﺍﻟﺒﺭﻤﺠﻴﺔ )ﺒﺭﺍﻤﺞ ﺠﺯﺌﻴﺔ ﻤﺴﺒﻘﺔﺍﻟﺘﻌﺭﻴﻑ(‬
‫ﻭﺨﻠﻕ ﺒﺭﻨﺎﻤﺞ ﺘﻨﻔﻴﺫﻱ ‪ executable‬ﻭﺘﺨﺯﻴﻨﻪ ﻋﻠﻰ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺜﺎﻨﻭﻴﺔ‪.‬‬

‫ﺸﺤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺜﺎﻨﻭﻴﺔ ﺇﻟﻰ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﺭﺌﻴﺴﻴﺔ‪.‬‬

‫ﺘﺄﺨﺫ ﻭﺤﺩﺓ ﺍﻟﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﺭﻜﺯﻴﺔ ﻜل ﺘﻌﻠﻴﻤﺔ ﻭﺘﻨﻔﺫﻫﺎ ﻭﻤﻥ ﺍﻟﻤﻤﻜﻥ ﺃﻥ ﺘﺨﺯﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﺍﻟﺠﺩﻴﺩﺓ‬
‫ﺍﻟﻨﺎﺘﺠﺔ ﺃﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﻨﻔﻴﺫ‪.‬‬

‫ﻴﻭﺠﺩ ﺃﻴﻀﹰﺎ ﺒﻌﺽ ﺃﻨﻭﺍﻉ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﺘﻲ ﺘﻘﻭﻡ ﺒﻌﻤﻠﻴﺔ ﺍﻟﺘﺭﺠﻤﺔ ﺇﻟﻰ ﻟﻐﺔ ﺍﻵﻟﺔ ﻭﺍﻟﺘﻲ ﻨﺩﻋﻭﻫﺎ ﺍﻟﻤﻔﺴﺭﺍﺕ‬
‫ﺍﻟﺘﻲ ﺘﺴﺘﻁﻴﻊ ﺘﻨﻔﻴﺫ ﺒﺭﺍﻤﺞ ﻤﻜﺘﻭﺒﺔ ﺒﻠﻐﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ﻤﺒﺎﺸﺭﺓ ﺩﻭﻥ ﺍﻟﺤﺎﺠﺔ ﺇﻟﻰ‬ ‫‪Interpreter‬‬

‫ﺘﺨﺯﻴﻥ ﺘﺭﺠﻤﺔ ﻫﺫﻩ ﺍﻟﺒﺭﺍﻤﺞ ﺇﻟﻰ ﻟﻐﺔ ﺍﻵﻟﺔ ﻋﻠﻰ ﻭﺤﺩﺓ ﺍﻟﺨﺯﻥ ﺍﻟﺜﺎﻨﻭﻱ‪.‬‬

‫ﻟﻜﻥ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻤُﺘﺭﺠﻤﺔ ﻫﻭ ﺃﺴﺭﻉ ﻤﻥ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﻤُﻔﺴﺭﺓ‪ .‬ﻋﻤﻭﻤﺎﹰ‪ ،‬ﻨﺤﺘﺎﺝ ﺇﻟﻰ ﺍﻟﻤﻔﺴﺭﺍﺕ‬
‫ﻓﻲ ﻤﺭﺤﻠﺔ ﺘﻁﻭﻴﺭ ﺍﻟﺒﺭﺍﻤﺞ ﺤﻴﺙ ﺘﻘﻭﻡ ﺒﺈﻋﺎﺩﺓ ﺘﺭﺠﻤﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻋﻨﺩ ﺃﻴﺔ ﺇﻀﺎﻓﺔ ﺠﺩﻴﺩﺓ ﺃﻭ ﻋﻨﺩ‬
‫ﺘﺼﺤﻴﺢ ﺃﻱ ﺨﻁﺄ‪ .‬ﻟﻜﻥ ﺒﻌﺩ ﺍﻻﻨﺘﻬﺎﺀ ﻤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ‪ ،‬ﻴﻤﻜﻥ ﺇﻨﺸﺎﺀ ﻨﺴﺨﺔ ﻤﺘﺭﺠﻤﺔ ﻋﻨﻪ ﺇﻟﻰ ﻟﻐﺔ ﺍﻵﻟﺔ‬
‫ﻤﻥ ﺃﺠل ﺘﻨﻔﻴﺫﻩ ﺒﻔﻌﺎﻟﻴﺔ ﺃﻜﺒﺭ‪.‬‬

‫‪10‬‬
‫ﻤﺜﺎل ﻤﺘﻘﺩﻡ‪:‬‬

‫ﻼ ﻤﻜﺘﻭﺒﹰﺎ ﺒﻠﻐﺔ ﺒﺭﻤﺠﺔ ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ﻭﻤﺎﻴﻘﺎﺒﻠﻪ ﺒﻠﻐﺔ ﺍﻟﻤﺠﻤﻊ‪ ،‬ﻭﻴﺸﺭﺡ‬


‫ﻴﻭﻀﺢ ﺍﻟﻤﺜﺎل ﺒﺭﻨﺎﻤﺠﹰﺎ ﻜﺎﻤ ﹰ‬
‫ﻟﻨﺎ ﺘﻌﻠﻴﻤﺔ ﺃﺴﺎﺴﻴﺔ ﻓﻲ ﻋﻤل ﺍﻟﺤﺎﺴﻭﺏ ﻫﻲ ﺘﻌﻠﻴﻤﺔ ﺍﻟﻘﻔﺯ ﻟﺒﺭﻨﺎﻤﺞ ﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ‪ .Basic‬ﻴﻘﻭﻡ ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫‪3!=6‬‬ ‫ﻫﻭ ﻀﺭﺏ ﺍﻟﻌﺩﺩ ﺒﺠﻤﻴﻊ ﺍﻷﻋﺩﺍﺩ ﺍﻷﺼﻐﺭ ﻤﻨﻪ‪:‬‬ ‫‪n‬‬ ‫ﺒﺤﺴﺎﺏ ‪ !n‬ﺍﻟﻌﺎﻤﻠﻲ ﻟﻌﺩﺩ‬
‫‪N=12‬‬
‫‪LOOP‬‬ ‫‪IF (N=0) GOTO END‬‬
‫‪A=A*N‬‬
‫‪N = N-1‬‬
‫‪GOTO LOOP‬‬
‫‪END‬‬
‫ﻭﺘﻌﻠﻴﻤﺎﺕ ﻟﻐﺔ ﺍﻵﻟﺔ ﺍﻹﻓﺘﺭﺍﻀﻴﺔ ﻫﻲ ﻤﺎ ﺸﺭﺤﻨﺎﻩ ﻓﻲ ﻤﺜﺎﻟﻨﺎ ﺍﻟﺴﺎﺒﻕ‪ ،‬ﺇﻀﺎﻓ ﹰﺔ ﺇﻟﻰ ‪:‬‬

‫‪N#‬‬ ‫ﺍﺫﻫﺏ ﺇﻟﻰ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﻋﻨﻭﺍﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺭﻗﻡ‬ ‫‪JMP‬‬

‫ﺍﺫﻫﺏ ﺇﻟﻰ ﺍﻟﺘﻌﻠﻴﻤﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻲ ﻋﻨﻭﺍﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺭﻗﻡ ‪ N#‬ﺇﺫﺍ ﻜﺎﻥ ﺍﻟﺴﺠل ﻤﺴﺎﻭﻴ ﹰﺎ ﻟﻠﺼﻔﺭ‬ ‫‪JZ‬‬

‫ﺃﻨﻘﺹ ﻭﺍﺤﺩ ﻤﻥ ﻗﻴﻤﺔ ﺍﻟﺴﺠل‬ ‫‪DEC‬‬

‫ﺃﻱ ﺼﻔﺭ‪.‬‬ ‫‪Zero‬‬ ‫ﻤﻥ‬ ‫‪Z‬‬ ‫ﺃﻱ ﺃﻨﻘﺹ‪،‬‬ ‫‪Decrement‬‬ ‫ﻤﻥ‬ ‫‪Dec‬‬ ‫ﺃﻱ ﺍﻗﻔﺯ‪،‬‬ ‫‪Jump‬‬ ‫ﻤﻥ‬ ‫‪JMP‬‬ ‫ﻤﻼﺤﻅﺔ‪:‬‬

‫‪A=1‬‬
‫‪N = 12‬‬
‫‪10‬‬ ‫‪If (N = 0) Then GoTo 100‬‬
‫‪A=A*N‬‬
‫‪N=N-1‬‬
‫‪GoTo 10‬‬
‫‪100‬‬

‫‪A‬‬
‫‪N‬‬
‫‪STORE‬‬ ‫‪A, 1‬‬
‫‪STORE‬‬ ‫‪N, 12‬‬
‫‪LOAD‬‬ ‫‪N, R0‬‬
‫‪JZ‬‬ ‫‪R0, #13‬‬
‫‪LOAD‬‬ ‫‪A, R1‬‬
‫‪ADD‬‬ ‫‪R1,R0,R3‬‬
‫‪STORE‬‬ ‫‪R3,A‬‬
‫‪DEC‬‬ ‫‪R0‬‬
‫‪STORE‬‬ ‫‪R0, N‬‬
‫‪JMP‬‬ ‫‪#5‬‬
‫‪STOP‬‬

‫‪11‬‬
‫ﺍﻟﺨﻼﺼﺔ‬
‫ﺍﻟﺤﺎﺴﻭﺏ ﺠﻬﺎﺯ ﻗﺎﺩﺭ ﻋﻠﻰ ﺇﻨﺠﺎﺯ ﺍﻟﺤﺴﺎﺒﺎﺕ ﻭﺍﻟﻤﻘﺎﺭﻨﺔ ﻷﺨﺫ ﻗﺭﺍﺭ ﺒﺎﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﻭﺍﺠﺏ ﺘﻨﻔﻴﺫﻫﺎ‬
‫ﺒﺴﺭﻋ ٍﺔ ﻫﺎﺌﻠﺔ ﺘﻔﻭﻕ ﺴﺭﻋﺔ ﺍﻟﻜﺎﺌﻥ ﺍﻟﺒﺸﺭﻱ ﺒﻤﻼﻴﻴﻥ ﻭﺤﺘﻰ ﺒﻼﻴﻴﻥ ﺍﻟﻤﺭﺍﺕ‪.‬‬

‫ﻋﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل‪ ،‬ﺘﺴﺘﻁﻴﻊ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻟﺤﻭﺍﺴﻴﺏ ﺍﻟﺸﺨﺼﻴﺔ ﻓﻲ ﻴﻭﻤﻨﺎ ﻫﺫﺍ ﺍﻟﻘﻴﺎﻡ ﺒﻌﺸﺭﺍﺕ ﺍﻟﻤﻼﻴﻴﻥ‬
‫ﻤﻥ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺠﻤﻊ )ﻤﻤﺎ ﻴﺴﺘﺭﻋﻲ ﺍﻻﻨﺘﺒﺎﻩ ﻭﺍﻟﺘﻔﻜﻴﺭ‪ :‬ﻜﻴﻑ ﻨﺘﺄﻜﺩ ﻤﻥ ﻗﻴﺎﻡ ﺍﻟﺸﺨﺹ ﺒﺠﻤﻊ ﺍﻷﻋﺩﺍﺩ‬
‫ﺒﺸﻜل ﺼﺤﻴﺢ؟(‪.‬‬

‫ﻴﺴﺘﻁﻴﻊ ﺃﺴﺭﻉ ﺍﻟﺤﻭﺍﺴﻴﺏ ﻓﻲ ﻴﻭﻤﻨﺎ ﻫﺫﺍ ﺍﻟﻘﻴﺎﻡ ﺒﻤﺌﺎﺕ ﺍﻟﺒﻼﻴﻴﻥ ﻤﻥ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺠﻤﻊ ﻓﻲ ﺍﻟﺜﺎﻨﻴﺔ )ﺃﻱ‬
‫ﺤﻭﺍﻟﻲ ﻤﺎ ﻴﺴﺘﻁﻴﻊ ﺍﻟﻘﻴﺎﻡ ﺒﻪ ﻤﺌﺎﺕ ﺍﻵﻻﻑ ﻤﻥ ﺍﻟﺒﺸﺭ ﻤﻥ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﻓﻲ ﺴﻨﺔ ﻭﺍﺤﺩﺓ!!(‬
‫ﻭﻴﻭﺠﺩ ﺤﻭﺍﺴﻴﺏ ﺘﻌﻤل ﻓﻲ ﻤﺨﺎﺒﺭ ﺍﻟﺒﺤﺙ ﺍﻟﻌﻠﻤﻲ‪ ،‬ﺘﺴﺘﻁﻴﻊ ﺇﻨﺠﺎﺯ ﺘﺭﻟﻴﻭﻥ ﺘﻌﻠﻴﻤﺔ ﻓﻲ ﺍﻟﺜﺎﻨﻴﺔ‪.‬‬

‫ﺘﺩﻋﻰ‬ ‫‪instructions‬‬ ‫ﻭﻓﻘﹰﺎ ﻟﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ‬ ‫‪Data‬‬ ‫ﺘﻘﻭﻡ ﺍﻟﺤﻭﺍﺴﻴﺏ ﺒﻤﻌﺎﻟﺠﺔ ﺍﻟﻤﻌﻁﻴﺎﺕ‬
‫ﻭﺍﻟﺘﻲ ﺘﻘﻭﺩ ﺍﻟﺤﺎﺴﺏ ﻤﻥ ﺨﻼل ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻷﻓﻌﺎل ﺍﻟﻤﺤﺩ‪‬ﺩﺓ ﻭ ﺍﻟﻤﺭﺘﺒﺔ‪.‬‬ ‫‪Programs‬‬ ‫ﺒﺎﻟﺒﺭﺍﻤﺞ‬

‫ﻨﺩﻋﻭ ﺍﻟﻤﻜﻭﻨﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ )ﻤﺜل ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ‪ ،‬ﺍﻟﺸﺎﺸﺔ‪ ،‬ﺍﻷﻗﺭﺍﺹ ﺍﻟﺼﻠﺒﺔ‪ ،‬ﺍﻟﺫﺍﻜﺭﺓ ﻭﻭﺤﺩﺓ‬
‫‪ ،‬ﻓﻲ ﺤﻴﻥ ﻨﺴﻤﻲ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﺘﻲ‬ ‫‪Hardware‬‬ ‫ﺍﻟﻤﻌﺎﻟﺠﺔ( ﺍﻟﺘﻲ ﻴﺘﺄﻟﻑ ﻤﻨﻬﺎ ﺍﻟﺤﺎﺴﺏ ﺒﺎﻟﺒﻨﻴﺔ ﺍﻟﺼﻠﺒﺔ‬
‫ﻨﻨﻔﺫﻫﺎ ﻋﻠﻰ ﺍﻟﺤﺎﺴﺏ ﺒﺎﻟﺒﻨﻴﺔ ﺍﻟﻤﺭﻨﺔ ‪.Software‬‬

‫ﺇﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺤﺎﺴﻭﺏ ﻋﻠﻰ ﻤﺴﺘﻭﻯ ﺍﻟﺒﻨﻴﺔ ﺍﻟﻤﺎﺩﻴﺔ )ﺘﻌﻠﻴﻤﺎﺕ ﻟﻐﺔ ﺍﻵﻟﺔ( ﻫﻲ ﺘﻌﻠﻴﻤﺎﺕ ﺒﺴﻴﻁﺔ‪:‬‬
‫ﺤﺴﺎﺒﺎﺕ ﺒﺴﻴﻁﺔ‪ ،‬ﺇﺴﻨﺎﺩ ﻗﻴﻡ ﺇﻟﻰ ﺨﺎﻨﺔ ﺫﺍﻜﺭﺓ‪ ،‬ﻤﻘﺎﺭﻨﺔ ﺒﻴﻥ ﻗﻴﻡ‪.‬‬

‫ﺇﻥ ﺘﺴﻠﺴل ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺘﺴﻠﺴﻠﻲ‪ ،‬ﻭﻴﻤﻜﻥ ﺘﻐﻴﻴﺭ ﻫﺫﺍ ﺍﻟﺘﺴﻠﺴل ﺒﺘﻌﻠﻴﻤﺔ ﻗﻔﺯ‪ ،‬ﻤﻤﺎ ﻴﺴﻤﺢ ﺒﺎﻟﻌﻭﺩﺓ ﺇﻟﻰ‬
‫ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺎﺕ ﻤﻥ ﺠﺩﻴﺩ‪ ،‬ﻤﻤﺎ ﻴﻌﻨﻲ ﺘﻜﺭﺍﺭ ﺘﻨﻔﻴﺫ ﺘﻌﻠﻴﻤﺎﺕ‪ .‬ﺇﻥ ﻫﺫﺍ ﺍﻟﺘﻜﺭﺍﺭ ﻭﺴﺭﻋﺔ ﺍﻟﺤﺎﺴﻭﺏ‬
‫ﺍﻟﻜﺒﻴﺭﺓ ﺃﻋﻤﺎﻟﻪ ﺍﻟﻬﺎﺌﻠﺔ‪.‬‬

‫ﻭﻟﻜﻥ ﻫﺫﻩ ﺍﻷﻋﻤﺎل ﺍﻟﻌﻅﻴﻤﺔ ﺘﻨﻅﻤﻬﺎ ﺒﺭﺍﻤﺞ‪ ،‬ﻫﺫﻩ ﺍﻟﺒﺭﺍﻤﺞ ﺍﻟﺘﻲ ﻨﺤﺩﺩ ﻓﻴﻬﺎ ﻟﻠﺤﺎﺴﻭﺏ ﻤﺎ ﻴﺠﺏ ﺍﻟﻘﻴﺎﻡ‬
‫ﺒﻬﺎ‪ ،‬ﻫﻭ ﺍﻟﺫﻱ ﻴﻌﻁﻲ ﻟﻬﺫﺍ ﺍﻟﺤﺎﺴﻭﺏ ﻋﻅﻤﺘﻪ‪ .‬ﻭﻤﻨﻬﺎﺠﻨﺎ ﻫﺫﺍ ﻤﻜﺭﺱ ﻟﻤﻌﺭﻓﺔ ﺍﻟﺒﺩﺍﻴﺔ ﺃﻭ ﺍﻷﺴﺎﺴﻴﺎﺕ‬
‫ﻟﻬﺫﺍ ﺍﻟﻌﻠﻡ ﺍﻟﺭﺍﺌﻊ ﺍﻟﺒﺭﻤﺠﺔ‪.‬‬

‫‪12‬‬
‫ﺃﺴﺌﻠﺔ‬
‫‪ .1‬ﺇﻥ ﺒﻨﻴﺔ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺭﻜﺯﻴﺔ ﻟﻠﺤﻭﺍﺴﻴﺏ ﻤﺼﻤﻤﺔ ﺒﺤﻴﺙ ﻴﻭﺠﺩ ﺃﺠﺯﺍﺀ ﻤﻨﻬﺎ ﻤﻜﺭﺱ ﻟﺨﺯﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ‬
‫ﻓﻘﻁ ﻭﺃﺠﺯﺍﺀ ﻟﺨﺯﻥ ﺍﻟﻤﻌﻁﻴﺎﺕ ﻓﻘﻁ‪) .‬ﺨﻁﺄ(‬

‫‪ .2‬ﻜل ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺴﺘﻤﺜل ﻓﻲ ﺍﻟﺤﺎﺴﻭﺏ ﺒﺄﺼﻔﺎﺭ ﻭﻭﺤﺩﺍﺕ )ﺼﺢ(‬

‫‪ .3‬ﻟﻐﺔ ﺍﻵﻟﺔ ﺘﻌﺒﺭﻋﻥ ﺘﻌﻠﻴﻤﺎﺕ ﺒﺴﻴﻁﺔ ﺠﺩﹰﺍ )ﺼﺢ(‬

‫‪ .4‬ﻤﺎﻟﺫﻱ ﻴﻌﻁﻲ ﺍﻟﺤﺎﺴﻭﺏ ﻗﻭﺘﻪ؟‬

‫ﺍﻟﺠﻭﺍﺏ‪ :‬ﺍﻟﺘﻜﺭﺍﺭ ﻭﺴﺭﻋﺔ ﺍﻟﺘﻨﻔﻴﺫ‬

‫‪ .5‬ﻫل ﻨﺼﻨﻑ ﻟﻐﺔ ‪ ++C‬ﻋﺎﻟﻴﺔ ﺍﻟﻤﺴﺘﻭﻯ ﻷﻨﻬﺎ ﺤﺩﻴﺜﺔ ﺠﺩﺍﹰ؟ ﻋﻠل ﺍﻹﺠﺎﺒﺔ‪.‬‬

‫ﺍﻟﺠﻭﺍﺏ‪ :‬ﻻ‪ ،‬ﺒل ﻷﻨﻬﺎ ﺃﻋﻠﻰ ﻤﻥ ﻤﺴﺘﻭﻯ ﺍﻵﻟﺔ‪.‬‬

‫‪ .6‬ﻤﺎ ﺍﻟﻔﺭﻕ ﺒﻴﻥ ﺍﻟﻤﻔﺴﺭ ﻭﺍﻟﻤﺘﺭﺠﻡ؟‬

‫ﺍﻟﺠﻭﺍﺏ‪ :‬ﺍﻟﻤﺘﺭﺠﻡ ﻴﺨﺯﻥ ﻨﺎﺘﺞ ﺍﻟﺘﺭﺠﻤﺔ ﻋﻠﻰ ﻭﺤﺩﺓ ﺍﻟﺨﺯﻥ ﺍﻟﺜﺎﻨﻭﻱ‪.‬‬

‫‪13‬‬

You might also like