You are on page 1of 3

‫‪2‬‬ ‫ﺍﻟﺒﺭﻤﺠﺔ‬

‫ﻴﻬﺩﻑ ﻫﺫﺍ ﺍﻟﻤﻘﺭﺭ ﺇﻟﻰ ﺍﻟﺘﻌﺭﻴﻑ ﺒﺎﻟﺒﺭﻤﺠﺔ ﺍﻟﻐﺭﻀﻴﺔ ﺍﻟﺘﻭﺠﻪ ﻭﺘﻘﺎﻨﺎﺘﻬﺎ ﺍﻷﺴﺎﺴﻴﺔ‪ ،‬ﻭﻤﺴﺎﻋﺩﺓ ﺍﻟﻁﺎﻟﺏ‬
‫ﻟﻠﻭﺼﻭل ﺒﻪ ﺇﻟﻰ ﻜﺘﺎﺒﺔ ﺨﻭﺍﺭﺯﻤﻴﺎﺕ ﺒﻠﻐﺔ ﻏﺭﻀﻴﺔ ﺍﻟﺘﻭﺠﻪ‪ ،‬ﻭﺴﻨﺴﺘﺨﺩﻡ ﻟﻐﺔ ‪ C++‬ﻜﺄﺩﺍﺓ ﻟﻬﺫﺍ ﺍﻟﻐﺭﺽ‪.‬‬

‫ﻴﻌﺘﻤﺩ ﻫﺫﺍ ﺍﻟﻤﻘﺭﺭ ﻋﻠﻰ ﺍﻟﻤﻌﺎﺭﻑ ﺍﻷﺴﺎﺴﻴﺔ ﺍﻟﻭﺍﺭﺩﺓ ﻓﻲ ﻤﻘﺭﺭ ﺍﻟﺒﺭﻤﺠﺔ‪.1‬‬

‫ﺍﻟﻤﻔﺭﺩﺍﺕ ﺍﻷﺴﺎﺴﻴﺔ‬
‫‪ -1‬ﻤﺩﺨل ﺇﻟﻰ ﻤﻔﻬﻭﻡ ﺍﻟﻐﺭﺽ‬

‫‪ -2‬ﻤﺒﺎﺩﺉ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﻐﺭﻀﻴﺔ ﺍﻟﺘﻭﺠﻪ‬

‫‪C++‬‬ ‫‪ -3‬ﺃﺴﺱ ﻟﻐﺔ‬

‫‪ -4‬ﺒﻨﺎﺀ ﺍﻟﺼﻔﻭﻑ‬

‫‪ -5‬ﺍﻟﺒﻭﺍﻨﻲ ﻭﺍﻟﻬﻭﺍﺩﻡ‬

‫‪ -6‬ﺍﻟﻤﺅﺸﺭﺍﺕ ﻭﺍﻟﺤﺠﺯ ﺍﻟﺩﻴﻨﺎﻤﻴﻜﻲ ﻟﻠﺫﺍﻜﺭﺓ‬

‫‪ -7‬ﺘﺭﻜﻴﺏ ﺍﻷﻏﺭﺍﺽ‬

‫‪ -8‬ﺯﻴﺎﺩﺓ ﺘﺤﻤﻴل ﺍﻟﻤﻌﺎﻤﻼﺕ‬

‫‪ -9‬ﺍﻟﻭﺭﺍﺜﺔ‬

‫‪ -10‬ﺘﻌﺩﺩ ﺍﻷﺸﻜﺎل‬

‫‪C++‬‬ ‫‪ -11‬ﻤﻔﺎﻫﻴﻡ ﻤﺘﻘﺩﻤﺔ ﻓﻲ‬


‫ﻤﺩﺨل‬
‫ﺘﻌﻠﻤﺕ ﻓﻲ ﻤﻘﺭﺭ ﺍﻟﺒﺭﻤﺠﺔ‪ 1‬ﺃﻥ ﻋﺎﻟﻡ ﺍﻟﺒﺭﻤﺠﺔ ﻋﺎﻟﻡ ﺍﻷﺭﻗﺎﻡ ﻭﺍﻷﺤﺭﻑ ﻭﻫﻭ ﻴﺘﻌﺎﻤل ﻤﻌﻬﺎ ﻭﻓﻕ‬
‫ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺍﻷﺴﺎﺴﻴﺔ ﺍﻟﺘﻲ ﻻ ﺘﺨﺭﺝ ﻋﻥ ﺨﻤﺴﺔ ﺃﻨﻭﺍﻉ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ‪:‬‬

‫‪ -5‬ﺍﻟﺘﻜﺭﺍﺭ‬ ‫‪ -4‬ﺍﻻﺨﺘﻴﺎﺭ‬ ‫‪ -3‬ﺍﻹﺴﻨﺎﺩ‬ ‫‪ -2‬ﺍﻟﻜﺘﺎﺒﺔ‬ ‫‪ -1‬ﺍﻟﻘﺭﺍﺀﺓ‬

‫ﻭﺒﺎﻟﻁﺒﻊ ﺘﺘﺭﺠﻡ ﻫﺫﻩ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺇﻟﻰ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻷﺸﻜﺎل ﻓﻲ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻭﺘﺸﺘﻕ ﻤﻨﻬﺎ‬
‫ﺘﻌﻠﻴﻤﺎﺕ ﺃﺨﺭﻯ ﺘﺴﺎﻋﺩ ﻋﻠﻰ ﻜﺘﺎﺒﺔ ﺃﻓﻀل ﻟﻠﺭﻤﺎﺯ ﺍﻟﺒﺭﻤﺠﻲ‪.‬‬

‫ﻭﻟﻜﻥ ﺃﺘﻌﺘﻘﺩ ﺃﻥ ﻋﺎﻟﻡ ﺍﻟﺒﺭﻤﺠﺔ ﻴﻌﺞ ﺒﺎﻷﺭﻗﺎﻡ ﻭﺍﻷﺤﺭﻑ ﻓﻘﻁ؟‬

‫ﻟﻭ ﻁﻠﺏ ﻤﻨﻙ ﺃﻥ ﺘﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻹﺩﺍﺭﺓ ﺍﻟﻤﺭﻭﺭ ﻟﺘﺨﺯﻴﻥ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺤﻭل ﺍﻟﺴﻴﺎﺭﺍﺕ ﺍﻟﺘﻲ ﻴﻤﻠﻜﻬﺎ‬
‫ﺍﻟﻤﻭﺍﻁﻨﻭﻥ‪ ،‬ﻓﻤﺎﺫﺍ ﺴﺘﻔﻌل؟ ﻜﻴﻑ ﺘﺨﺯﻥ ﻤﻌﻠﻭﻤﺎﺘﻙ ﻋﻥ "ﺴﻴﺎﺭﺓ"؟‬

‫ﻻ‪ :‬ﻤﺎ ﻫﻲ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﺘﻲ ﺘﻬﻤﻨﻲ ﻓﻲ "ﺴﻴﺎﺭﺓ" ﻓﻲ ﻨﻅﺎﻡ ﺇﺩﺍﺭﺓ ﺍﻟﻤﺭﻭﺭ؟‬


‫ﻴﺠﺏ ﺃﻥ ﺘﺴﺄل ﻨﻔﺴﻙ ﺃﻭ ﹰ‬
‫ﻭﺴﺘﻘﺭﺭ ﺃﻨﻙ ﺘﻬﺘﻡ ﺒﺎﺴﻡ ﻤﺎﻟﻙ ﺍﻟﺴﻴﺎﺭﺓ‪ ،‬ﻨﻭﻉ ﺍﻟﺴﻴﺎﺭﺓ‪ ،‬ﻨﻤﻭﺫﺝ ﺍﻟﺴﻴﺎﺭﺓ‪ ،‬ﻋﺎﻡ ﺍﻟﺼﻨﻊ‪ ،‬ﺍﻟﻠﻭﻥ‪ ،‬ﺭﻗﻡ‬
‫ل ﻤﻥ ﻫﺫﻩ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ؟‬
‫ﻻ ﻤﻨﻔﺭﺩﹰﺍ ﻟﻜ ٍ‬
‫ﺍﻟﻠﻭﺤﺔ‪ (.....،‬ﻓﻬل ﺘﻌﺭﻑ ﻤﺘﺤﻭ ﹰ‬

‫ﻭﻜﻴﻑ ﺘﺭﺒﻁﻬﺎ ﻤﻌﹰﺎ ﺒﺤﻴﺙ ﺘﺴﺘﺤﻀﺭﻫﺎ ﺠﻤﻴﻌﹰﺎ ﻟﻜل ﺴﻴﺎﺭﺓ ﻓﻲ ﺒﺭﻨﺎﻤﺠﻙ؟‬

‫ﻻ ﻭﺍﺤﺩﹰﺍ ﻴﺤﺘﻭﻱ ﺠﻤﻴﻊ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﺨﺎﺼﺔ ﺒﻜل ﺴﻴﺎﺭﺓ ﻟﺘﺤﻘﻕ ﻟﻙ ﻤﺎ‬


‫ﻟﻭ ﺃﻨﻙ ﺘﺴﺘﻁﻴﻊ ﺃﻥ ﺘﻌﺭﻑ ﻤﺘﺤﻭ ﹰ‬
‫ﺘﺭﻴﺩ‪.‬‬

‫ﺃﻻ ﺘﺘﻤﻨﻰ ﻋﻨﺩﻤﺎ ﺘﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﺘﻌﺎﻤل ﻤﻊ ﺍﻟﺴﻴﺎﺭﺍﺕ ﻓﻲ ﺇﺩﺍﺭﺓ ﺍﻟﻤﺭﻭﺭ ﻟﻭ ﺃﻨﻙ ﺘﺴﺘﻁﻴﻊ ﺃﻥ ﺘﻌﺭﻑ‬
‫ﻻ ﻤﻥ ﺍﻟﻨﻤﻁ "ﺴﻴﺎﺭﺓ" ﻋﻠﻰ ﻏﺭﺍﺭ ﺘﻌﺭﻴﻑ ﻤﺘﺤﻭل ﻤﻥ ﺍﻟﻨﻤﻁ ﻋﺩﺩ ﺼﺤﻴﺢ؟‬
‫ﻤﺘﺤﻭ ﹰ‬
‫;‪int i‬‬
‫;‪car c‬‬

‫ﺃﻻ ﺘﺘﻤﻨﻰ ﻋﻨﺩﻤﺎ ﺘﻜﺘﺏ ﺒﺭﻨﺎﻤﺠﹰﺎ ﻴﺭﺴﻡ ﺍﻟﺩﻭﺍﺌﺭ ﻭﺍﻟﺨﻁﻭﻁ ﻟﻭ ﺃﻨﻙ ﺘﺴﺘﻁﻴﻊ ﺃﻥ ﺘﻌﺭﻑ ﻤﺘﺤﻭﻻﺕ ﻤﻥ‬
‫ﺍﻟﻨﻤﻁ "ﺩﺍﺌﺭﺓ" ﻭ"ﺨﻁ" ﻋﻠﻰ ﻏﺭﺍﺭ ﺘﻌﺭﻴﻑ ﻤﺘﺤﻭل ﻤﻥ ﺍﻟﻨﻤﻁ ﻋﺩﺩ ﺼﺤﻴﺢ؟‬
‫;‪int i‬‬
‫;‪Circle c‬‬
‫;‪Line l‬‬
‫ﻭﻟﻜﻥ ﻜﻴﻑ ﻴﻤﻜﻥ ﻟﻠﻐﺔ ﺒﺭﻤﺠﺔ ﺃﻥ ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﺠﻤﻴﻊ ﺍﻷﻨﻤﺎﻁ ﺍﻟﺘﻲ ﻴﻤﻜﻥ ﺃﻥ ﺘﺨﻁﺭ ﻓﻲ ﺒﺎل‬
‫ﺍﻟﻤﺒﺭﻤﺠﻴﻥ ﻓﻲ ﺍﻟﻌﺎﻟﻡ ﻓﻲ ﻜل ﺯﻤﺎﻥ ﻭﻤﻜﺎﻥ‪ ،‬ﻭﺃﻥ ﻴﻜﻭﻥ ﺘﻌﺭﻴﻑ ﺍﻟﻨﻤﻁ ﻤﻁﺎﺒﻘﹰﺎ ﻟﺤﺎﺠﺔ ﺍﻟﻤﺒﺭﻤﺞ ﻓﻲ‬
‫ﻤﺴﺄﻟﺔ ﻤﺎ؟‬

‫ﻻﺒﺩ ﺃﻨﻙ ﺘﺩﺭﻙ ﺃﻥ ﻫﺫﻩ ﺍﻟﻤﻬﻤﺔ ﻤﺴﺘﺤﻴﻠﺔ‪ ،‬ﻭﻟﻜﻥ ﻻ ﺘﻭﺠﺩ ﻤﺸﻜﻠﺔ ﺩﻭﻥ ﺤل‪.‬‬

‫ﺯﻭﺩﺕ ﺒﻌﺽ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﺒﺂﻟﻴﺔ ﺘﺴﻤﺢ ﻟﻠﻤﺒﺭﻤﺞ ﺃﻥ ﻴﻌﺭﻑ ﻨﻤﻁﹰﺎ ﺠﺩﻴﺩﹰﺍ ﻟﻡ ﻴﺴﺒﻕ ﻟﻪ ﻭﺠﻭﺩ ﻓﻲ ﺍﻟﻠﻐﺔ‬
‫ﺒﺤﻴﺙ ﻴﺼﻑ ﻋﻨﺩ ﺍﻟﺘﻌﺭﻴﻑ ﺨﺼﺎﺌﺹ ﻫﺫﺍ ﺍﻟﻨﻤﻁ ﺍﻟﺠﺩﻴﺩ ﻭﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺍﻟﺘﻲ ﻴﺭﻏﺏ ﺒﺎﻻﺤﺘﻔﺎﻅ ﺒﻬﺎ‬
‫ﻋﻨﻪ‪ ،‬ﻭﻴﻌﻁﻲ ﺍﻟﻤﺒﺭﻤﺞ ﻟﻬﺫﺍ ﺍﻟﻨﻤﻁ ﺍﻟﺠﺩﻴﺩ ﺍﺴﻤﹰﺎ ﻴﺨﺘﺎﺭﻩ‪ ،‬ﻓﻴﺼﺒﺢ ﻟﺩﻴﻪ ﻓﻲ ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺎﻟﺫﺍﺕ ﻨﻤﻁ ﹰﺎ‬
‫ﺠﺩﻴﺩﹰﺍ ﻴﺴﺘﺨﺩﻤﻪ ﻋﻠﻰ ﻨﺤﻭ ﺸﺒﻴﻪ ﺒﺎﻷﻨﻤﺎﻁ ﻤﺴﺒﻘﺔ ﺍﻟﺘﻌﺭﻴﻑ ﻓﻲ ﺍﻟﻠﻐﺔ‪.‬‬

‫ﻭﻫﻜﺫﺍ ﻴﻤﻜﻥ ﻟﻠﻤﺒﺭﻤﺞ ﺘﻌﺭﻴﻑ ﺃﻨﻤﺎﻁ ﻋﺩﺓ ﻓﻲ ﺒﺭﺍﻤﺠﻪ ﺩﻭﻥ ﺃﻥ ﺘﺤﺩ ﺍﻟﻠﻐﺔ ﻤﻥ ﺇﻤﻜﺎﻨﺎﺘﻪ‪ ،‬ﻭﻴﺴﺘﺨﺩﻤﻬﺎ‬
‫ﺍﺴﺘﺨﺩﺍﻤ ﹰﺎ ﻤﺸﺎﺒﻬﹰﺎ ﻟﻸﻨﻤﺎﻁ ﺍﻟﻌﺩﺩﻴﺔ ﻭﺍﻟﻤﺤﺭﻓﻴﺔ ﺍﻟﺘﻲ ﻴﻌﺭﻓﻬﺎ‪ ،‬ﻓﻼ ﺘﻘﻑ ﺍﻟﻠﻐﺔ ﻋﺎﺌﻘ ﹰﺎ ﺃﻤﺎﻡ ﺇﺒﺩﺍﻋﻪ‬
‫ﻭﺤﺎﺠﺎﺘﻪ‪.‬‬

‫ﻭﻟﻌل ﺃﺸﻬﺭ ﺁﻟﻴﺔ ﺯﻭﺩﺕ ﺒﻬﺎ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﻫﻲ ﺁﻟﻴﺔ ﺍﻟﺼﻔﻭﻑ ﻭﺍﻷﻏﺭﺍﺽ‪ ،‬ﻭﺍﻟﺘﻲ ﻓﺘﺤﺕ ﺍﻟﺒﺎﺏ ﻋﻠﻰ‬
‫ﻤﺼﺭﺍﻋﻴﻪ ﺃﻤﺎﻡ ﻤﻨﺤﻰ ﺠﺩﻴﺩ ﻤﻥ ﺍﻟﺒﺭﻤﺠﺔ ﺴﻤﻲ "ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﻐﺭﻀﻴﺔ ﺍﻟﺘﻭﺠﻪ" ﻭﻫﻲ ﻤﺎﺴﻨﺘﻨﺎﻭﻟﻪ‬
‫ﺒﺎﻟﺘﻔﺼﻴل ﻓﻲ ﻫﺫﺍ ﺍﻟﻤﻘﺭﺭ‪.‬‬

You might also like