جهات الاتصال

§1 معلومات عامة عن اللغة. مراحل تصميم البرنامج. نماذج دورة حياة التطبيق. تاريخ لغة سي متى تم إنشاء اللغة باستخدام

لغة البرمجة C ++

آخر تحديث: 28.08.2017

لغة البرمجة C ++ هي لغة برمجة عالية المستوى ومكتوبة بشكل ثابت ومترجمة للأغراض العامة ومناسبة لبناء مجموعة متنوعة من التطبيقات. تعد C ++ اليوم واحدة من أكثر اللغات شيوعًا وانتشارًا.

لها جذورها في لغة C ، التي تم تطويرها في 1969-1973 في Bell Labs بواسطة المبرمج Dennis Ritchie. في أوائل الثمانينيات ، طور المبرمج الدنماركي Bjarne Stroustrup ، الذي كان يعمل في Bell Labs في ذلك الوقت ، C ++ كامتداد للغة C. في الواقع ، في البداية ، استكملت لغة ++ C لغة C ببعض إمكانيات البرمجة الموجهة للكائنات. ولذلك أشار ستروستروب نفسه إليها في البداية باسم "C مع الفصول".

بعد ذلك ، بدأت اللغة الجديدة تكتسب شعبية. تمت إضافة ميزات جديدة إليه ، مما جعله ليس مجرد إضافة إلى C ، ولكن لغة برمجة جديدة تمامًا. نتيجة لذلك ، تمت إعادة تسمية "C with Classes" باسم C ++. ومنذ ذلك الحين ، بدأت كلتا اللغتين في التطور بشكل مستقل عن بعضهما البعض.

C ++ هي لغة قوية ، ورثت قدرات الذاكرة الثرية من C. لذلك ، غالبًا ما يجد C ++ تطبيقه في برمجة النظام ، على وجه الخصوص ، عند إنشاء أنظمة تشغيل وبرامج تشغيل وأدوات مساعدة متنوعة ومضادات فيروسات وما إلى ذلك. بالمناسبة ، يتم كتابة Windows في الغالب بلغة C ++. لكن استخدام هذه اللغة لا يقتصر فقط على برمجة النظام. يمكن استخدام C ++ في البرامج من أي مستوى حيث تكون السرعة والأداء مهمين. غالبًا ما يستخدم لإنشاء تطبيقات رسومية وبرامج تطبيقية متنوعة. كما أنها تُستخدم غالبًا بشكل خاص لإنشاء ألعاب ذات تصورات غنية. بالإضافة إلى ذلك ، اكتسب اتجاه الجوّال زخمًا مؤخرًا ، حيث وجدت C ++ تطبيقه أيضًا. وحتى في تطوير الويب ، من الممكن أيضًا استخدام C ++ لإنشاء تطبيقات ويب أو نوع من الخدمات المساعدة التي تخدم تطبيقات الويب. بشكل عام ، C ++ هي لغة مستخدمة على نطاق واسع حيث يمكنك إنشاء أي نوع من البرامج تقريبًا.

C ++ هي لغة مترجمة ، مما يعني أن المترجم يترجم كود مصدر C ++ إلى ملف قابل للتنفيذ يحتوي على مجموعة من تعليمات الجهاز. لكن الأنظمة الأساسية المختلفة لها خصائصها الخاصة ، لذلك لا يمكن نقل البرامج المجمعة ببساطة من منصة إلى أخرى وتشغيلها هناك. ومع ذلك ، على مستوى الكود المصدري ، تكون برامج C ++ محمولة في الغالب ، ما لم يتم استخدام بعض الوظائف الخاصة بنظام التشغيل الحالي. ويسمح لك وجود المجمّعين والمكتبات وأدوات التطوير لجميع الأنظمة الأساسية الشائعة تقريبًا بتجميع نفس رمز مصدر C ++ في تطبيقات لهذه الأنظمة الأساسية.

على عكس لغة C ، تتيح لك لغة C ++ كتابة التطبيقات بأسلوب موجه للكائنات ، تمثل البرنامج كمجموعة من الفئات والكائنات المتفاعلة. هذا يجعل من السهل إنشاء تطبيقات كبيرة.

مراحل التطور الرئيسية

في 1979-80 ، طور Bjarne Stroustrup امتدادًا للغة C - "C مع الفصول". في عام 1983 تم تغيير اسم اللغة إلى C ++.

في عام 1985 ، تم إصدار أول نسخة تجارية من لغة C ++ ، وكذلك الإصدار الأول من كتاب "The C ++ Programming Language" ، والذي قدم الوصف الأول لهذه اللغة في غياب معيار رسمي.

في عام 1989 ، تم إصدار نسخة جديدة من لغة C ++ 2.0 ، والتي تضمنت عددًا من الميزات الجديدة. بعد ذلك ، تطورت اللغة ببطء نسبيًا حتى عام 2011. ولكن في الوقت نفسه ، في عام 1998 ، جرت المحاولة الأولى لتوحيد اللغة من قبل ISO (المنظمة الدولية للمعايير القياسية). تم تسمية المعيار الأول ISO / IEC 14882: 1998 ، أو C ++ 98 للاختصار. في وقت لاحق ، في عام 2003 ، تم نشر إصدار جديد من معيار C ++ 03.

في عام 2011 ، تم نشر معيار C ++ 11 الجديد ، والذي احتوى على العديد من الإضافات وإثراء لغة C ++ بعدد كبير من الوظائف الجديدة. بعد ذلك ، في عام 2014 ، تم إصدار إضافة صغيرة إلى المعيار ، تُعرف أيضًا باسم C ++ 14. ومن المقرر إصدار رئيسي آخر للغة لعام 2017.

المجمعين وبيئات التطوير

لتطوير برامج C ++ ، أنت بحاجة إلى مترجم - يقوم بترجمة كود المصدر C ++ إلى ملف قابل للتنفيذ ، والذي يمكنك تشغيله بعد ذلك. لكن في الوقت الحالي هناك العديد من المجمعين المختلفين. يمكن أن تختلف في جوانب مختلفة ، على وجه الخصوص ، في تنفيذ المعايير. يمكن العثور على قائمة أساسية لمجمعات C ++ على ويكيبيديا. يوصى بالتطوير لاختيار المترجمين الذين يقومون بتطوير وتنفيذ أحدث المعايير. وبالتالي ، خلال هذا البرنامج التعليمي ، سيتم استخدام مترجم g ++ المجاني الذي طوره مشروع GNU بشكل أساسي.

يمكنك أيضًا استخدام IDEs مثل Visual Studio و Netbeans و Eclipse و Qt وما إلى ذلك لإنشاء برامج.

C و UNIX

لغة برمجة مع(اقرأ "C") تم إنشاؤه في أوائل السبعينيات عندما كان كين طومسون ودينيس ريتشي من Bell Labs يطوران نظام تشغيل UNDC. قاموا أولاً بإنشاء جزء المترجم مع، ثم استخدمها لتجميع باقي المترجم معوأخيرًا طبق المترجم الناتج لتجميع UNIX. تم توزيع نظام التشغيل UNIX في الأصل في التعليمات البرمجية المصدر معبين الجامعات والمختبرات ، ويمكن للمتلقي تجميع كود المصدر باللغة معفي كود الآلة مع مترجم مناسب مع.

جعل توزيع الكود المصدري نظام تشغيل UNIX فريدًا ؛ يمكن للمبرمج تغيير نظام التشغيل ، ويمكن نقل شفرة المصدر من منصة أجهزة إلى أخرى. اليوم ، يحدد معيار POSIX مجموعة قياسية من استدعاءات نظام UNIX المتوفرة بلغة معليتم تنفيذها على إصدارات UNIX المتوافقة مع POSIX. كانت C هي اللغة الثالثة التي طورها طومسون وريتشي أثناء إنشاء UNIX ؛ الأولين كانا بالطبع أو الخامس.

لغة التجميع المحمول ج

مقارنة بلغة سابقة - لغة BCPL معتم تحسينه عن طريق إضافة أنواع بيانات ذات أطوال محددة. على سبيل المثال ، يمكن استخدام نوع البيانات int لإنشاء متغير بعدد محدد من البتات (عادةً 16) ، بينما يمكن استخدام نوع البيانات الطويلة لإنشاء متغير عدد صحيح بعدد كبير من البتات (عادةً 32). على عكس اللغات عالية المستوى الأخرى ، معيمكن أن تعمل مع عناوين الذاكرة مباشرة باستخدام المؤشرات والمراجع. بقدر ما معاحتفظت بالقدرة على الوصول المباشر إلى الأجهزة ، وغالبًا ما يشار إليها على أنها لغة متوسطة المستوى أو يشار إليها مازحا باسم "لغة التجميع المتنقلة".

С - لغة البرمجة المهيكلة

وأما النحو والنحو إذن معهي لغة برمجة منظمة. في حين أن العديد من المبرمجين المعاصرين يفكرون من حيث الفئات والأشياء ، فإن المبرمجين في معالتفكير من حيث الإجراءات والوظائف. الخامس معيمكنك تحديد أنواع البيانات المجردة الخاصة بك باستخدام الكلمة الأساسية الهيكلية. وبالمثل ، يمكنك وصف أنواع الأعداد الصحيحة الخاصة بك (التعدادات) وإعطاء أسماء أخرى لأنواع البيانات الموجودة باستخدام الكلمة الأساسية typedef. بهذا المعنى معهي لغة منظمة مع بذور البرمجة الشيئية.

توحيد لغة سي

انتشار استخدام اللغة جعلى أنواع مختلفة من أجهزة الكمبيوتر (تسمى أحيانًا الأنظمة الأساسية للأجهزة) أدى ، للأسف ، إلى العديد من الاختلافات في اللغة. كانوا متشابهين ، لكنهم غير متوافقين مع بعضهم البعض. كانت هذه مشكلة كبيرة لمطوري البرامج الذين يحتاجون إلى كتابة برامج متوافقة يمكن تشغيلها على منصات متعددة. أصبح من الواضح أن هناك حاجة إلى إصدار قياسي ج... في عام 1983. شكلت ANSI (لجنة المعايير الوطنية الأمريكية) لجنة فنية X3J11 لإنشاء معيار لغوي ج(لتقديم تعريف لا لبس فيه ومستقل عن الآلة للغة "). في عام 1989 تمت الموافقة على المعيار. دخلت ANSI في شراكة مع ISO (منظمة المعايير الدولية) لتوحيد المعايير جدوليا؛ تم نشر معيار مشترك في عام 1990 وسمي ANSI / ISO 9899: 1990. لا يزال هذا المعيار قيد التحسين وتدعمه غالبية شركات تطوير المترجم.

ولادة C ++

أطلق Björn Stroustrup العنان للإمكانات الشيئية مععن طريق نقل قدرات الفئات سيمولا 67الخامس مع... في البداية ، حملت اللغة الجديدة اسم "C مع الفئات" وعندها فقط بدأت تسميتها سي ++... لغة سي ++اكتسب شعبية عندما تم تطويره في Bell Labs ، ثم تم نقله لاحقًا إلى الصناعات والشركات الأخرى. تعد اليوم واحدة من أكثر لغات البرمجة شيوعًا (واحترامًا) في العالم. سي ++يرث كل من الجوانب الجيدة والسيئة مع.

اكتشافات بيورن ستروستروب

بيورن ستروستروب: "خطرت لي سي ++، دوّن تعريفه الأصلي وقام بالتنفيذ الأول. اخترت وصياغة معايير التصميم سي ++، طور معالمه الرئيسية وكان مسؤولاً عن مصير المقترحات الخاصة بتوسيع اللغة في لجنة التقييس سي ++"، - يكتب مؤلف أشهر لغات البرمجة. -" اللغة سي ++يدين بالكثير للغة جواللغة جيبقى مجموعة فرعية لغة C ++(لكن C ++ يصلح العديد من العيوب الرئيسية في نظام النوع C). أنا أيضا وفرت الأموال جذات المستوى المنخفض بما يكفي للتعامل مع مهام النظام الأكثر أهمية. لغة جتدين بالكثير لسلفها ، BCPL ؛ بالمناسبة ، تم استخدام أسلوب التعليق // سي ++من BCPL. كانت اللغة مصدرًا رئيسيًا آخر للإلهام. سيمولا 67... تم استعارة مفهوم الفئات (مع الفئات المشتقة والوظائف الافتراضية) منه. وسائل التحميل الزائد للمشغلين والقدرة على وضع إعلانات في أي مكان حيث يمكن كتابة التعليمات ألغول 68. "

لماذا C ++

اسم سي ++اخترعها ريك ماسيتي. يشير الاسم إلى الطبيعة التطورية للانتقال منه ج... "++" هي عملية زيادة في ج... اسم أقصر قليلاً ج +هو خطأ نحوي. علاوة على ذلك ، فقد تم استخدامه بالفعل كاسم للغة مختلفة تمامًا. خبراء دلالات الألفاظ جوجدت أن سي ++اسوء من ++ ج... الأسماء دلم تفهمها اللغة ، لأنها امتداد لـ C ولا تحاول علاج المشكلات عن طريق التخلص من الميزات المختلفة.

لماذا كانت هناك حاجة إلى C ++

في البداية لغة البرمجة C ++تم تصميمه بحيث لا يضطر المؤلف وأصدقاؤه إلى البرمجة بلغات التجميع أو C أو غيرها من اللغات عالية المستوى الحديثة. كان الغرض الرئيسي منه هو جعل كتابة البرامج الجيدة أسهل وأكثر إمتاعًا للمبرمج الفردي. خطة التنمية سي ++لم يكن على الورق تم نقل التصميم والتوثيق والتنفيذ في نفس الوقت. بالطبع الواجهة الخارجية سي ++تمت كتابته في سي ++... مشروع C ++ ولجنة تطوير C ++ لم يوجدا قط. لذا سي ++تطور ويستمر في التطور في جميع الاتجاهات للتعامل مع التعقيدات التي يواجهها المستخدمون ، وكذلك في سياق المناقشات بين المؤلف وأصدقائه وزملائه.

كائن حقيقي موجه C ++

الخامس لغة C ++يتم دعم مبادئ البرمجة الشيئية بشكل كامل ، بما في ذلك الركائز الثلاث التي تقوم عليها: التغليف والوراثة وتعدد الأشكال. التغليف في سي ++مدعومًا من خلال إنشاء أنواع بيانات غير قياسية (مخصصة) تسمى الفئات. لغة سي ++يدعم الميراث. هذا يعني أنه يمكنك إعلان نوع بيانات جديد (فئة) ، وهو امتداد للنوع الحالي.

على أية حال لغة البرمجة C ++يسمى بحق استمرار معوأي برنامج عملي في اللغة معسيتم دعمه من قبل المترجم سي ++، عند الذهاب من معل سي ++تم تحقيق قفزة كبيرة للغاية. لغة سي ++استفاد من تقاربها مع اللغة مععلى مر السنين ، كما وجد العديد من المبرمجين ذلك من أجل الاستفادة الكاملة من الفوائد لغة C ++، فهم بحاجة إلى التخلي عن بعض معارفهم السابقة واكتساب معارف جديدة ، وهي: تعلم طريقة جديدة للمفهوم وحل مشكلات البرمجة. قبل أن تبدأ في إتقان سي ++و Stroustrup ومعظم المبرمجين الآخرين الذين يستخدمون سي ++النظر في تعلم اللغة معاختياري.

لغة برمجة سي ++تعتبر حاليًا اللغة السائدة المستخدمة في تطوير المنتجات التجارية ، ويتم كتابة 90٪ من الألعاب بها سي ++باستخدام برنامج DirectX.

المؤلفات

مصادر:

  • H.M.Deitel، P.J.Deitel "كيفية البرمجة في C ++"
  • Bjarne Stroustrup "لغة البرمجة C ++. الإصدار الثالث."
  • سيمون روبنسون ، أولي كورنز ، جاي جلين وآخرون. "C # for Professionals"
  • Jess Liberty "تعلم C ++ بنفسك في 21 يومًا"
  • ستانيسلاف جورناكوف "دروس برمجة DirectX و C ++"

C ++ (يقرأ C-plus-plus) هي لغة برمجة للأغراض العامة مجمعة ومكتوبة بشكل ثابت يمكنك من خلالها إنشاء برامج من أي تعقيد.
لأكثر من 20 عامًا ، كانت هذه اللغة من بين أكثر ثلاث لغات برمجة شعبية وطلبًا. (يمكنك التحقق من ذلك من خلال زيارة موقع TIOBE).
نشأت اللغة في أوائل الثمانينيات ، عندما جاء بيورن ستروستروب موظف Bell Labs بعدد من التحسينات على لغة C لتناسب احتياجاته الخاصة.

Bjarne Stroustrup - مبتكر لغة C ++

قرر Stroustrup استكمال لغة C بإمكانيات لغة Simula. لغة C ، باعتبارها اللغة الأساسية لنظام UNIX الذي تعمل عليه أجهزة كمبيوتر Bell ، هي لغة سريعة وغنية بالميزات وقابلة للحمل. أضاف Stroustrup القدرة على العمل مع الفئات والعناصر إليها. نتيجة لذلك ، أصبحت مشكلات النمذجة العملية متاحة لحلها من حيث وقت التطوير (بفضل استخدام فئات تشبه Simula) ومن حيث وقت الحساب (بفضل سرعة C).
هكذا يقول مطور اللغة نفسه عن ذلك:



في عام 1998 ، تم نشر معيار اللغة الأول ، المعروف باسم C ++ 98 ، من قبل لجنة التقييس. تواصل C ++ التطور لتلبي المتطلبات الحديثة. إحدى المجموعات التي تطور لغة C ++ وترسل اقتراحات لتحسينها إلى لجنة توحيد C ++ هي يعزز، والتي تشارك ، من بين أمور أخرى ، في تحسين قدرات اللغة عن طريق إضافة ميزات البرمجة الوصفية إليها. تم إصدار المعيار الأخير في عام 2017 ويسمى سي ++ 17... لن يكون المعيار التالي طويلاً في المستقبل وسيظهر كما هو متوقع في عام 2020.
لا أحد يمتلك حقوق لغة C ++ ، فهي مجانية. في مارس 2016 ، تم إنشاء مجموعة عمل WG21 C ++ في روسيا. تم تنظيم المجموعة لجمع المقترحات الخاصة بمعيار C ++ ، وإرسالها إلى اللجنة والدفاع عنها في الاجتماعات العامة للمنظمة الدولية للتوحيد القياسي.
C ++ هي لغة متعددة النماذج (من الكلمة paradigm - أسلوب كتابة برامج الكمبيوتر) ، والتي تتضمن مجموعة واسعة من الأساليب والتقنيات المختلفة للبرمجة. غالبًا ما يشار إليها على أنها لغة موجهة للكائنات ، ولكنها ليست كذلك بالمعنى الدقيق للكلمة. في عملية العمل ، يكتسب المطور الحرية المطلقة في اختيار الأدوات بحيث يتم حل المشكلة باستخدام هذا النهج أو ذاك بأكبر قدر ممكن من الكفاءة. بمعنى آخر ، لا تجبر C ++ المبرمج على الالتزام بنمط واحد فقط من تطوير البرامج (على سبيل المثال ، موجه للكائنات).
يحتوي C ++ على مكتبة قياسية غنية تتضمن حاويات وخوارزميات مشتركة ، و I / O ، وتعبيرات منتظمة ، ودعم متعدد مؤشرات الترابط ، والمزيد. أثرت C ++ على العديد من لغات البرمجة ، بما في ذلك: Java ، C # ، D. نظرًا لأن C ++ تنتمي إلى عائلة اللغات استنادًا إلى بناء جملة لغة C ، يمكنك بسهولة إتقان لغات البرمجة الأخرى لهذه العائلة : JavaScript و PHP و Perl و Objective-C وغيرها الكثير. ... أخرى ، بما في ذلك اللغة الأم نفسها - C. ()
خلال وجودها ، رسخت لغة C ++ أساطير مستقرة يمكن دحضها بسهولة (انظر هنا: الجزء الأول والجزء الثاني)

تاريخ اللغة وإصدار المعايير

1983

مبتكر اللغة - بيورن ستروستروب، موظف Bell Labs ، قدم إصدارًا مبكرًا من C ++ ("C مع الفئات")

1985

أول إصدار تجاري لـ C ++ ، تأخذ اللغة اسمها الحديث

1986

الطبعة الأولى من لغة البرمجة C ++ ، كتاب عن C ++ كتبه Björn Stroustrup

1998

تم التصديق على المعيار الدولي للغة C ++: ISO / IEC 14882: 1998 "معيار لغة البرمجة C ++"

2003
2005

إصدار التقرير الفني للمكتبة 1 (TR1). على الرغم من أنه ليس جزءًا رسميًا من المعيار ، فقد وصف التقرير الامتدادات للمكتبة القياسية التي يجب تضمينها في الإصدار التالي من لغة C ++.

2011

إصدار معيار جديد - C ++ 11 أو ISO / IEC 14882: 2011 ؛ تضمن المعيار الجديد إضافات إلى جوهر اللغة وامتدادًا للمكتبة القياسية ، بما في ذلك معظم TR1

2014

إصدار معيار C ++ 14 ("المعيار الدولي ISO / IEC 14882: 2014 (E) لغة البرمجة C ++") ؛ يمكن اعتبار C ++ 14 امتدادًا صغيرًا على C ++ 11 ، يحتوي في الغالب على إصلاحات للأخطاء وتحسينات طفيفة

2017

تم إصدار معيار جديد - C ++ 1z (C ++ 17). أدخل هذا المعيار العديد من التغييرات والإضافات. على سبيل المثال ، يتضمن STD مكتبات من معيار C11 ، وهو نظام ملفات يعتمد على نظام Boost :: filesystem ، ومعظم مكتبة TS I التجريبية.

2020

C ++ 20 هو الاسم غير الرسمي لمعيار ISO / IEC للغة البرمجة C ++ ، والمتوقع بعد C ++ 17. مشروع معيار N4800.

فلسفة C ++

في The Design and Evolution of C ++ (2007) ، يصف Björne Stroustrup المبادئ التي اتبعها في تصميم C ++ (مختصر):

  • احصل على لغة عامة مع أنواع بيانات ثابتة ، وكفاءة وإمكانية نقل لغة C.
  • دعم العديد من أنماط البرمجة بشكل مباشر وشامل.
  • امنح المبرمج حرية الاختيار ، حتى لو أعطته الفرصة لاختيار الخطأ.
  • حافظ على التوافق مع لغة سي قدر الإمكان ، مما يجعل الانتقال سهلًا من برمجة لغة سي.
  • تجنب الخلط بين C و C ++: أي بناء مسموح به في كلتا اللغتين يجب أن يعني نفس الشيء في كل منهما ويؤدي إلى نفس سلوك البرنامج.
  • تجنب الميزات التي تعتمد على النظام الأساسي أو ليست عامة.
  • لا تدفع مقابل ما لم يتم استخدامه - لا ينبغي لأي أداة لغوية أن تقلل من أداء البرامج التي لا تستخدمها.
  • لا تتطلب بيئة برمجة معقدة للغاية.

C و C ++

إن بناء جملة C ++ موروث من لغة C. على الرغم من أن أحد مبادئ C ++ ، رسميًا ، يظل الحفاظ على التوافق مع لغة C ، في الواقع ، فإن مجموعات توحيد هذه اللغات لا تتفاعل ، والتغييرات التي يجرونها لا ترتبط فقط ، ولكنها غالبًا ما تتعارض بشكل أساسي مع بعضها البعض أيديولوجيًا. على سبيل المثال ، العناصر التي تضيفها معايير C الجديدة إلى النواة هي عناصر من المكتبة القياسية في معيار C ++ وهي غائبة تمامًا في النواة ، على سبيل المثال ، المصفوفات الديناميكية ، والمصفوفات ذات الحدود الثابتة ، ومرافق المعالجة المتوازية. قال ستروستروب إنه سيكون من المفيد جدًا الجمع بين تطوير اللغتين ، لكن من غير المرجح أن يكون ذلك ممكنًا من الناحية السياسية. لذلك فإن التوافق العملي بين C و C ++ سوف يضيع تدريجياً.
في هذا المثال ، اعتمادًا على المترجم المستخدم ، سيخرج إما "C ++" أو "C":

البرنامج 9.1

#تضمن int main () (printf ("٪ s \ n"، (sizeof ("a") == sizeof (char))؟ "C ++": "C")؛ return 0؛)

هذا يرجع إلى حقيقة أن ثوابت الحرف في C من النوع int ، وفي C ++ تكون من النوع char ، لكن أحجام هذه الأنواع مختلفة.

نماذج دورة حياة التطبيق

دورة الحياةالبرمجيات هي فترة زمنية تبدأ من اللحظة التي يتم فيها اتخاذ قرار بشأن الحاجة إلى إنشاء منتج برمجي وتنتهي في وقت تقاعده الكامل. هذه الدورة هي عملية بناء وتطوير البرمجيات (البرمجيات). هناك العديد من نماذج دورة الحياة.
نموذج تتاليدورة الحياة (نموذج الشلال المهندس) في عام 1970 من قبل وينستون رويس. يوفر التنفيذ المتسلسل لجميع مراحل المشروع بترتيب ثابت تمامًا. الانتقال إلى المرحلة التالية يعني استكمال العمل في المرحلة السابقة. يتم توثيق المتطلبات ، التي تم تحديدها في مرحلة تكوين المتطلبات ، بدقة في شكل مواصفات فنية ويتم إصلاحها طوال فترة تطوير المشروع بالكامل. تنتهي كل مرحلة بإصدار مجموعة كاملة من الوثائق الكافية لمواصلة التطوير بواسطة فريق تطوير آخر.
مراحل المشروع حسب نموذج الشلال:

  1. تشكيل المتطلبات ؛
  2. تصميم؛
  3. التنفيذ؛
  4. اختبارات؛
  5. التنفيذ؛
  6. التشغيل والصيانة.

في نموذج الشلال ، يفترض الانتقال من مرحلة واحدة من مراحل المشروع إلى أخرى صحة نتيجة المرحلة السابقة تمامًا. في المشاريع الكبيرة ، يكاد يكون من المستحيل تحقيق ذلك. لذلك ، هذا النموذج مناسب فقط لتطوير مشروع صغير. (لم يلتزم دبليو رويس بهذا النموذج واستخدم نموذجًا تكراريًا).
النموذج التكراري
بديل لنموذج الشلال هو نموذج التطوير التكراري والمتزايد (IID) الذي تم الحصول عليه من T. Gilb في السبعينيات. اسم النموذج التطوري. يتضمن نموذج IID تقسيم دورة حياة المشروع إلى سلسلة من التكرارات ، كل منها يشبه "مشروع صغير" ، بما في ذلك جميع عمليات التطوير المطبقة لإنشاء أجزاء أصغر من الوظائف مقارنة بالمشروع ككل. الهدف من كل تكرار هو الحصول على إصدار عمل من نظام البرنامج يتضمن الوظيفة المحددة بواسطة المحتوى المتكامل لجميع التكرارات السابقة والحالية. تحتوي نتيجة التكرار النهائي على جميع الوظائف المطلوبة للمنتج. وهكذا ، مع اكتمال كل تكرار ، يتلقى المنتج زيادة - زيادة - في قدراته ، والتي تتطور بالتالي تطوريًا.


يتم تنفيذ إصدارات مختلفة من النهج التكراري في معظم منهجيات التطوير الحديثة:

عملية التطوير - العملية الموحدة العقلانية (RUP)

العملية العقلانية الموحدة (RUP)(Lean Unified Process) هي منهجية لتطوير البرمجيات مدعومة من قبل Rational Software (IBM). توفر المنهجية توصيات لجميع مراحل التطوير: من نمذجة الأعمال إلى اختبار البرنامج النهائي وتشغيله. تستخدم لغة النمذجة الموحدة (UML) كلغة نمذجة.
تتكون دورة الحياة الكاملة لتطوير المنتج من أربع مراحل ، تتضمن كل منها تكرارًا واحدًا أو أكثر.

  • المرحلة الأولية (التأسيس)
  • تحديد نطاق المشروع ومقدار الموارد المطلوبة. يتم تحديد المتطلبات الأساسية والقيود والوظائف الرئيسية للمنتج. يتم تقييم المخاطر. تخطيط العمل. في نهاية المرحلة الأولية ، يتم تقييم إنجاز المرحلة الرئيسية لهدف دورة الحياة ، والذي يفترض مسبقًا اتفاقًا بين أصحاب المصلحة على استمرار المشروع.

  • تفصيل
  • توثيق المتطلبات. تصميم وتنفيذ واختبار بنية قابلة للتنفيذ. توضيح الشروط والتكلفة. تقليل المخاطر الكبرى. يعني الإكمال الناجح لمرحلة التطوير الوصول إلى المرحلة الأساسية في هندسة دورة الحياة.

  • بناء
  • في مرحلة "البناء" ، يتم تنفيذ معظم وظائف المنتج: اكتمل تصميم التطبيق ، وكتابة الكود المصدري. تنتهي مرحلة البناء بالإصدار الخارجي الأول للنظام وإحدى مراحل القدرة التشغيلية الأولية.

  • انتقال
  • في مرحلة "التنفيذ" ، يتم إنشاء الإصدار النهائي للمنتج ونقله من المطور إلى العميل. يتضمن ذلك برنامج اختبار بيتا وتدريب المستخدم وتحديد جودة المنتج. إذا كانت الجودة لا تلبي توقعات المستخدمين أو المعايير المحددة في مرحلة البدء ، يتم تكرار مرحلة التنفيذ مرة أخرى. يعني تحقيق جميع الأهداف الوصول إلى مرحلة إصدار المنتج وإكمال دورة التطوير الكاملة.



"تكنولوجيا المعلومات. هندسة النظم والبرمجيات. عمليات دورة حياة البرمجيات ". تم اعتماد هذا المعيار من قبل الوكالة الفيدرالية للتنظيم الفني والمقاييس في الاتحاد الروسي وهو مشابه للمعيار الدولي ISO / IEC 12207: 2008. يحدد هذا المعيار إطارًا عامًا لعمليات دورة حياة البرامج التي يمكن توجيهها في صناعة البرمجيات. لا يقدم المعيار نموذج دورة حياة محدد. أحكامه شائعة في أي نماذج دورة حياة وأساليب وتقنيات لإنشاء البرامج. يصف هيكل عمليات دورة الحياة دون تحديد كيفية تنفيذ أو أداء الأنشطة والمهام المدرجة في هذه العمليات.

عرض الدرس
مواضيع الرسائل
  • مؤسسة البرمجيات الحرة (FSF)
  • تراخيص البرمجيات الحرة
  • برنامج FreeSoftware والمصدر المفتوح
  • تاريخ تطور لغات البرمجة
  • تاريخ C. C و C ++
  • قصة
  • نقد C ++
  • تاريخ UNIX
  • نموذج دورة حياة البرنامج الحلزوني
  • UML (لغة النمذجة الإنجليزية الموحدة)
  • إطار عمل حلول Microsoft
  • IDE لبرمجة C / C ++ على Windows
  • مترجمي C / C ++
  • إنشاء تطبيق وحدة التحكم على Windows
أسئلة
  1. لماذا لا يتم تطبيق نموذج الشلال لتطوير البرمجيات على المشاريع الكبيرة؟
  2. ما الفرق بين نماذج الشلال ونماذج التطوير التكرارية؟
  3. ضع قائمة بمراحل تطوير البرمجيات في منهجية Rational Unified Process (RUP)

C ++ هي لغة برمجة مجمعة للأغراض العامة تجمع بين خصائص لغات البرمجة عالية المستوى ومنخفضة المستوى. بالمقارنة مع سابقتها ، لغة البرمجة C ، يتم إيلاء معظم الاهتمام لدعم البرمجة العامة والموجهة للكائنات. يأتي اسم لغة البرمجة C ++ من لغة البرمجة C ، حيث يشير عامل التشغيل الأحادي ++ إلى زيادة المتغير.

تستخدم لغة البرمجة C ++ على نطاق واسع لتطوير البرمجيات. وهي إنشاء مجموعة متنوعة من برامج التطبيقات ، وتطوير أنظمة التشغيل ، وبرامج تشغيل الأجهزة ، بالإضافة إلى ألعاب الفيديو وغير ذلك الكثير. تم إنشاؤه في أوائل الثمانينيات من قبل Björn Stroustrup. لقد توصل إلى عدد من التحسينات على لغة البرمجة C لاستخدامه الخاص. أولئك. لم يكن مخططًا أصلاً لإنشاء لغة برمجة C ++.

وهو يدعم نماذج البرمجة مثل البرمجة الإجرائية ، والبرمجة الموجهة للكائنات ، والبرمجة العامة ، ويوفر نمطية ، وتجميعًا منفصلاً ، ومعالجة الاستثناءات ، وتجريد البيانات ، وإعلان أنواع (فئات) الكائنات ، والوظائف الافتراضية.

يأتي اسم اللغة الناتج من عامل الزيادة اللاحقة للإصلاح أحادي ++ C (زيادة قيمة المتغير بمقدار واحد). لم يتم استخدام الاسم C + لأنه خطأ نحوي في لغة C ، وبالإضافة إلى ذلك ، تم الاستيلاء على الاسم من قبل لغة أخرى. لم يتم تسمية اللغة أيضًا باسم D لأنها "امتداد لـ C ولا تحاول إصلاح المشكلات عن طريق إزالة عناصر C."

مزايا اللغة:

1. قابلية التوسع. في لغة C ++ ، يتم تطوير البرامج لمجموعة متنوعة من الأنظمة الأساسية والأنظمة.

2. القدرة على العمل بمستوى منخفض مع الذاكرة والعناوين والمنافذ.

3. القدرة على إنشاء خوارزميات معممة لأنواع مختلفة من البيانات وتخصصها وحسابات التجميع باستخدام القوالب.

4. عبر منصة. المترجمون متاحون لعدد كبير من الأنظمة الأساسية ، بلغة C ++ يقومون بتطوير برامج لمجموعة متنوعة من الأنظمة الأساسية والأنظمة.

5. الكفاءة. تم تصميم اللغة لمنح المبرمج أقصى قدر من التحكم في جميع جوانب هيكل وترتيب تنفيذ البرنامج.

عيوب اللغة:

1. يؤدي وجود العديد من الميزات التي تنتهك مبادئ أمان النوع إلى حقيقة أن الخطأ الدقيق يمكن أن يتسلل بسهولة إلى برامج C ++.

2. ضعف الدعم للنمطية. يؤدي توصيل واجهة وحدة خارجية عبر إدخال المعالج الأولي لملف رأس (# تضمين) إلى إبطاء عملية التجميع بشكل خطير عند توصيل عدد كبير من الوحدات.

3. لغة C ++ صعبة التعلم والتجميع.

4. بعض أنواع التحويلات ليست بديهية. على وجه الخصوص ، ينتج عن العمليات على الأرقام غير الموقعة والموقعة نتائج غير موقعة.

5. يعتبر البعض أن عدم وجود نظام جمع القمامة المدمج هو عيب في لغة ++ C. من ناحية أخرى ، فإن C ++ لديها أدوات كافية للقضاء تقريبًا على استخدام المؤشرات الخطرة ؛ لا توجد مشاكل أساسية في تنفيذ واستخدام جمع القمامة (على مستوى المكتبات ، وليس اللغة). يسمح عدم وجود جمع القمامة المضمنة للمستخدم باختيار إستراتيجية إدارة الموارد الخاصة به.

ما سبب هذه الحالة للغة سي؟ تاريخيًا ، لا يمكن فصل هذه اللغة عن نظام التشغيل Unix ، الذي يشهد اليوم ولادة جديدة. كانت الستينيات عصر تكوين أنظمة التشغيل ولغات البرمجة عالية المستوى. خلال تلك الفترة ، تم تطوير نظام التشغيل والمجمّعين بشكل مستقل لكل نوع من أنواع أجهزة الكمبيوتر ، وغالبًا حتى لغات البرمجة الخاصة بهم (تذكر ، على سبيل المثال ، PL / I). في نفس الوقت ، فإن القواسم المشتركة للمشاكل الناشئة عن هذا قد أصبحت واضحة بالفعل. كانت محاولة إنشاء نظام تشغيل عالمي للهاتف المحمول هي الإجابة على تحقيق هذا المجتمع ، وهذا يتطلب لغة برمجة عالمية ومتنقلة على حد سواء. أصبحت C مثل هذه اللغة ، وأصبح Unix أول نظام تشغيل يتم كتابته بالكامل تقريبًا بلغة عالية المستوى.

أعطت العلاقة الوثيقة مع يونكس C مجال اختبار لم تكن له لغة أخرى في ذلك الوقت. كانت برمجة الأنظمة تعتبر الأكثر تحديًا في الصناعة في ذلك الوقت. بالنسبة للجزء الأكبر ، كانوا يعتمدون على الآلة لدرجة أن الكثيرين لم يفكروا على الإطلاق في حلهم بشكل مختلف عن المجمع. كانت اللغات عالية المستوى مخصصة لبرمجة التطبيقات ولم يتم تنفيذها إلا بشكل محدود للغاية للوظائف اللازمة لعمل النظام ، وغالبًا فقط لنوع معين من الأجهزة.

تم إنشاء لغة C منذ البداية بحيث كان من الممكن كتابة مهام النظام فيها. لم يطور مبتكرو لغة C نموذجًا مجردًا لمنفذ اللغة ، لكنهم طبقوا فيه ببساطة تلك القدرات التي كانت مطلوبة بشدة في ممارسة برمجة الأنظمة. كانت هذه ، أولاً وقبل كل شيء ، وسائل العمل المباشر مع الذاكرة وهياكل التحكم الهيكلية والتنظيم المعياري للبرنامج. وفي الواقع لم يتم تضمين أي شيء آخر في اللغة. تم نقل كل شيء آخر إلى مكتبة وقت التشغيل. لذلك ، يشير المحتالون أحيانًا إلى لغة C على أنها مجمّع منظم. لكن بغض النظر عما تجاذبوه ، تبين أن النهج كان ناجحًا للغاية. بفضله ، تم الوصول إلى مستوى جديد من حيث نسبة البساطة والقدرات اللغوية.

ومع ذلك ، هناك عامل آخر حدد نجاح اللغة. قام المبدعون بمهارة شديدة بتقسيم الخصائص المعتمدة على الآلة والمستقلة فيها. بفضل هذا ، يمكن كتابة معظم البرامج عالميًا - ولا يعتمد أداؤها على بنية المعالج والذاكرة. يمكن ترجمة القليل من نفس أجزاء الكود المعتمدة على الأجهزة في وحدات منفصلة. وباستخدام المعالج المسبق ، يمكنك إنشاء وحدات نمطية ، عند تجميعها على أنظمة أساسية مختلفة ، ستنشئ الكود المقابل المعتمد على الآلة.

لقد تسبب بناء جملة لغة سي في الكثير من الجدل ، حيث يمكن لتقنيات الاختصار المستخدمة فيها أن تجعل البرنامج غير قابل للقراءة تمامًا إذا تم استخدامه بشكل مفرط. ولكن ، كما قال ديكسترا ، - الوسائل ليست مسؤولة عن حقيقة أنها تُستخدم بشكل أمي. في الواقع ، تتوافق اختصارات النحو المقترحة في لغة C مع المواقف النمطية الأكثر شيوعًا في الممارسة. إذا تم اعتبار الاختصارات مصطلحات للتمثيل التعبيري والصغير لمثل هذه المواقف ، فإن فوائدها تصبح غير مشروطة وواضحة.

لذلك ، ظهرت لغة C كلغة برمجة نظام عالمي. لكنه لم يبق في هذا الإطار. بحلول نهاية الثمانينيات ، اكتسبت لغة C ، بعد أن دفعت فورتران إلى الريادة ، شعبية كبيرة بين المبرمجين في جميع أنحاء العالم وبدأت في استخدامها في مجموعة متنوعة من المهام التطبيقية. لعب انتشار Unix (ومن ثم C) في البيئة الجامعية ، حيث تم تدريب جيل جديد من المبرمجين ، دورًا مهمًا هنا.

مثل جميع اللغات ، تم تحسين لغة C تدريجياً ، لكن معظم التحسينات لم تكن جذرية في طبيعتها. ربما ينبغي النظر في أهمها إدخال مواصفات صارمة لأنواع الوظائف ، مما زاد بشكل كبير من موثوقية التفاعل بين الوحدات في C. تم تضمين جميع هذه التحسينات في معيار ANSI في عام 1989 ، والتي لا تزال يحدد لغة سي.

ولكن إذا كان كل شيء خاليًا من السحاب ، فلماذا لا تزال جميع اللغات الأخرى مستخدمة ، مما يدعم وجودها؟ كان كعب أخيل للغة سي هو أنها اتضح أنها منخفضة المستوى للغاية بالنسبة للمهام التي تم وضعها على جدول أعمال التسعينيات. علاوة على ذلك ، هذه المشكلة لها جانبان. من ناحية أخرى ، تم دمج أدوات منخفضة المستوى جدًا في اللغة - أولاً وقبل كل شيء ، إنها تعمل مع الذاكرة وحساب العناوين. ليس من قبيل الصدفة أن يكون التغيير في عمق المعالجات مؤلمًا جدًا للعديد من برامج C. من ناحية أخرى ، يفتقر C إلى المرافق عالية المستوى - أنواع البيانات المجردة والكائنات ، وتعدد الأشكال ، ومعالجة الاستثناءات. نتيجة لذلك ، في برامج C ، غالبًا ما تهيمن تقنية تنفيذ المهمة على جانب المحتوى الخاص بها.

بدأت المحاولات الأولى لتصحيح هذه النواقص في أوائل الثمانينيات. حتى ذلك الحين ، بدأ Bjarne Stroustrup في AT&T Bell Labs في تطوير امتداد للغة C تحت الاسم الرمزي. كان أسلوب التطوير متسقًا تمامًا مع الروح التي تم بها إنشاء لغة C نفسها - تم إدخال بعض الاحتمالات فيها من أجل جعل عمل أشخاص ومجموعات محددين أكثر ملاءمة. ظهر أول مترجم تجاري للغة جديدة تسمى C ++ في عام 1983. لقد كان معالجًا أوليًا قام بترجمة البرنامج إلى رمز C. ومع ذلك ، يمكن اعتبار الولادة الفعلية للغة إصدارًا لكتاب Stroustrup في عام 1985. منذ هذه اللحظة ، بدأت C ++ تكتسب شعبية عالمية.

الابتكار الرئيسي في C ++ هو آلية الفئة ، والتي تجعل من الممكن تعريف واستخدام أنواع بيانات جديدة. يصف المبرمج التمثيل الداخلي لكائن فئة ومجموعة من طرق الوظائف للوصول إلى هذا التمثيل. كان أحد الأهداف العزيزة في إنشاء C ++ هو الرغبة في زيادة النسبة المئوية لإعادة استخدام الكود المكتوب بالفعل. اقترح مفهوم الطبقات آلية وراثة لهذا الغرض. يتيح لك الوراثة إنشاء فئات جديدة (مشتقة) بتمثيل موسع وطرق معدلة دون التأثير على الكود المترجم للفئات الأصلية (الأساسية). في الوقت نفسه ، يوفر الوراثة إحدى آليات تنفيذ تعدد الأشكال - المفهوم الأساسي للبرمجة الموجهة للكائنات ، والتي وفقًا لها يمكن استخدام نفس الكود لأداء نفس النوع من معالجة أنواع البيانات المختلفة. في الواقع ، تعد تعدد الأشكال أيضًا إحدى طرق ضمان إعادة استخدام الكود.

لا يستنفد إدخال الفصول جميع ابتكارات لغة C ++. إنها تنفذ آلية معالجة الاستثناءات الهيكلية الكاملة ، والتي أدى عدم وجودها في لغة C إلى زيادة صعوبة كتابة برامج موثوقة ، وآلية القوالب هي آلية إنشاء ماكرو متطورة مدمجة بعمق في اللغة ، مما يفتح مسارًا آخر لإعادة استخدام الكود ، وأكثر بكثير.

وبالتالي ، كان الخط العام لتطوير اللغة يهدف إلى توسيع قدراتها من خلال إدخال تركيبات جديدة عالية المستوى مع الحفاظ على التوافق الكامل قدر الإمكان مع عمليات ANSI C. ، بحيث يتوقف المبرمج فعليًا عن العمل مباشرة مع الذاكرة والنظام- الكيانات التابعة. ومع ذلك ، لا تحتوي اللغة على آليات تجبر المطور على هيكلة البرنامج بشكل صحيح ، ولم يصدر المؤلفون أي توصيات منهجية بشأن استخدام التركيبات المعقدة نوعًا ما. لم يهتموا بإنشاء مكتبة فصول قياسية في الوقت المناسب تقوم بتنفيذ هياكل البيانات الأكثر شيوعًا.

أدى كل هذا إلى حقيقة أن العديد من المطورين أجبروا على استكشاف متاهات دلالات اللغة بأنفسهم والبحث بشكل مستقل عن مصطلحات تعمل بنجاح. لذلك ، على سبيل المثال ، في المرحلة الأولى من تطوير اللغة ، سعى العديد من منشئي مكتبات الفئات إلى بناء تسلسل هرمي لفئة واحدة باستخدام كائن فئة أساسي مشترك. تم استعارة هذه الفكرة من Smalltalk - واحدة من أشهر اللغات الشيئية. ومع ذلك ، اتضح أنه غير قابل للتطبيق تمامًا في C ++ - كانت التسلسلات الهرمية للمكتبة الصفية المدروسة بعناية غير مرنة ، وعمل الفصول الدراسية لم يكن واضحًا. لكي تكون مكتبات الفصل قابلة للاستخدام ، يجب شحنها من المصدر.

إن ظهور فئات القوالب دحض تمامًا اتجاه التطوير هذا. بدأوا في استخدام الميراث فقط في تلك الحالات عندما كان مطلوبًا إنشاء نسخة متخصصة من فئة موجودة. بدأت المكتبات تتكون من فصول منفصلة وتسلسلات هرمية صغيرة غير مرتبطة. ومع ذلك ، على طول الطريق ، بدأت إعادة استخدام الكود في الانخفاض ، نظرًا لأن C ++ لا يمكنها استخدام فئات متعددة الأشكال من التسلسلات الهرمية المستقلة. يؤدي الاستخدام الواسع النطاق للقوالب إلى زيادة غير مقبولة في مقدار التعليمات البرمجية المجمعة - دعنا لا ننسى أن القوالب يتم تنفيذها باستخدام طرق إنشاء الماكرو.

واحدة من أخطر عيوب لغة C ++ ، الموروثة من بناء جملة C ، هي أن المترجم لديه حق الوصول إلى وصف للبنية الداخلية لجميع الفئات المستخدمة. نتيجة لذلك ، يؤدي التغيير في الهيكل الداخلي لتمثيل فئة المكتبة إلى الحاجة إلى إعادة تجميع جميع البرامج التي تستخدم فيها هذه المكتبة. هذا يحد بشكل كبير من مطوري المكتبة من حيث تحديثهم ، لأنه عند إصدار إصدار جديد ، يجب عليهم الحفاظ على التوافق الثنائي مع الإصدار السابق. هذه هي المشكلة التي تجعل العديد من الخبراء يعتقدون أن C ++ غير مناسب لتشغيل المشاريع الكبيرة والكبيرة جدًا.

ومع ذلك ، على الرغم من أوجه القصور المذكورة وحتى عدم توفر معيار اللغة (هذا بعد أكثر من خمسة عشر عامًا من الاستخدام!) ، تظل C ++ واحدة من أكثر لغات البرمجة شيوعًا. تكمن قوتها ، أولاً وقبل كل شيء ، في التوافق التام تقريبًا مع لغة C. بفضل هذا ، يتمتع مبرمجو C ++ بإمكانية الوصول إلى جميع التطورات التي تم إجراؤها في C. وفي نفس الوقت ، C ++ ، حتى بدون استخدام الفئات ، يقدم إلى C عددًا من الميزات الإضافية ووسائل الراحة المهمة التي يستخدمها الكثيرون ببساطة كجهاز تحكم محسّن ...

بقدر ما يتعلق الأمر بنموذج كائن C ++ ، طالما أن برنامجك ليس كبيرًا جدًا (مئات الآلاف من السطور) ، يمكنك استخدامه. الاتجاه الأخير نحو برمجيات المكونات يقوي فقط موقع C ++. عند تطوير المكونات الفردية ، لا تظهر عيوب C ++ بعد ، ولم يعد ربط المكونات بنظام العمل يتم على مستوى اللغة ، ولكن على مستوى نظام التشغيل.

في ضوء كل ما قيل ، لا تبدو النظرة المستقبلية لـ C ++ قاتمة. رغم أن احتكار سوق لغات البرمجة لا يلمع بالنسبة له. ربما لا يسعنا إلا أن نقول بثقة أن هذه اللغة لن تنجو من امتداد تحديث آخر. لا عجب ، عندما ظهرت Java ، تم الاهتمام بها عن كثب. تخلصت اللغة ، القريبة من بناء الجملة لـ C ++ ، مما يعني أنها تبدو مألوفة للعديد من المبرمجين ، من أفظع أوجه القصور في C ++ ، الموروثة من السبعينيات. ومع ذلك ، لا يبدو أن Java ترقى إلى مستوى الدور الذي أوكله إليها البعض.

إن الدور الخاص للغات C / C ++ في البرمجة الحديثة يجعل من غير المعنى تقريبًا تقديم عناوين محددة على الإنترنت حيث يمكنك العثور على مواد عليها. هناك ببساطة أماكن كثيرة مثل هذا. ومع ذلك ، إذا كنت مهتمًا بمعرفة المزيد عن تطور C ++ ، فابدأ بمقال صغير. http://citforum.syzran.ru/programming/prg96/76.shtml.

الكسندر سيرجيف ، [بريد إلكتروني محمي]
مقال من مجلة BYTE / روسيا ، آذار 2000

من أجل توضيح استخدام اللغات الموصوفة عمليًا ، اخترنا مشكلة كان مطلوبًا فيها إدخال سلسلة من الأعداد الصحيحة من الإدخال القياسي أو من ملف ، ثم إخراج الأرقام الفردية فقط ، والعكس طلب. هذه واحدة من أبسط المهام ، والتي تتطلب بشكل أساسي العمل مع المصفوفات والحلقات والتفرع و I / O لحلها ، كما يسمح لك بإثبات استدعاءات الروتين الفرعي. علاوة على ذلك ، فهي مرئية ويمكن إدراكها بسهولة.

القائمة 1.C

1 # تضمين / * توصيل وظائف الإدخال والإخراج * / 2 3 باطل رئيسي (باطل) 4 (5 int М ؛ / * صفيف من 10 أعداد صحيحة ، عد من 0 * / 6 int N ؛ 7 لـ (N = 0 ؛ N<10; ++N) /* Вводим не более 10 чисел */ 8 if (EOF == scanf ("%d, M+N)) 9 break; /* Если конец файла, прерываем цикл */ 10 11 for (-N; N>= 0 ؛ --N) / * تصفح المصفوفة عكسيًا * / 12 if (M [N]٪ 2) / * ترتيب وطباعة الفردي * / 13 printf ("٪ d \ n"، M [N]) ؛ 14)

  • الخط 3.في C / C ++ ، يبدأ تنفيذ البرنامج دائمًا بالوظيفة الرئيسية.
  • السطر 7 و 11.في رأس الحلقة ، يتم تحديد الإعداد الأولي وشرط الاستمرارية وقاعدة إعادة حساب معلمة الحلقة باستخدام الفواصل المنقوطة. عمليات ++ و -/- - أشهر اختصارات لغة سي ، وتعني الزيادة والنقصان لمتغير ، أي زيادة قيمته وخفضها بمقدار واحد.
  • الخط 8.دور مسحيُدخل ، وفقًا للتنسيق المحدد بواسطة المعلمة الأولى ، قيم المتغيرات التي يتم تحديد عناوينها بواسطة المعلمات المتبقية. هنا ، يتم حساب العنوان حيث يتم إدخال القيمة باستخدام حساب العنوان ، إلى عنوان موقع المصفوفة متم التعديل بواسطة نعناصر. يمكن الحصول على نفس التأثير عن طريق الكتابة & م [لا].
  • السطر 12.عملية % بحساب باقي القسمة. حالة المشغل إذايعتبر مستوفى إذا كانت القيمة العددية للتعبير غير صفرية.
  • السطر 13.دور printf- الطباعة حسب الصيغة تعمل بنفس الطريقة مسح، ولكن بدلاً من العناوين ، يتم تمرير القيم إليها ليتم عرضها.
1 # تضمين 2 3 نموذج صفيف الفئة 4 (5 عام: صفيف (حجم T = 1): M (جديد T) ، N (الحجم) ، n (0) () 6 صفيف (باطل) (حذف M ؛) 7 T Count (باطل) const ( return n ؛) 8 T عامل (int i) const (إرجاع M [i] ؛) 9 باطل إضافة (T Data) ؛ 10 خاص: 11 T * M ؛ // عنوان الذاكرة المخصصة 12 int N ، n ؛ // N - مخصص ؛ ن - مستخدم 13) ؛ 14 15 نموذج صفيف باطل :: أضف (T Data) 16 (if (N-n) // إذا تم تخصيص 17 (int * P = new T ؛ // تم استخدام مساحة أكثر ، خصص 18 أكثر لـ (int i = 0 ؛ i أ؛ // مصفوفة الأعداد الصحيحة ذات الحجم المتغير 28 بينما (1) // حلقة لا نهاية لها 29 (int N ؛ 30 cin >> N ؛ // cin - تيار الإدخال القياسي 31 إذا (cin.eof ()) كسر ؛ // الخروج من حلقة بنهاية الملف 32 أ إضافة (N) ؛ // أضف الرقم المدخل إلى المصفوفة 33) 34 من أجل (int N = A.Count () - 1 ؛ N> = 0 ؛ --N) // Loop through المصفوفة 35 إذا (A [N]٪ 2) 36 cout<، وتحرر الذاكرة
  • الخطوط 3-13.تم التصريح عن فئة القالب مجموعة مصفوفةمع المعلمة تي... إنها مجموعة متغيرة الحجم من الكائنات مثل تي... بالطبع ، في مهمتنا ليست هناك حاجة لاستخدام فئة القالب. ومع ذلك ، أردنا توضيح كيفية إنشاء بنية بيانات متعددة الأشكال في C ++ يمكنها العمل مع أي نوع من العناصر.
  • الخط 5.مُنشئ فئة. يقوم بتهيئة تمثيل الكائن. على سبيل المثال ، في الميدان ميتم إدخال عنوان كتلة الذاكرة التي طلبتها العملية جديد تي.
  • الخط 8.مثال على التحميل الزائد للعملية. دور المشغل أو العاملسيتم استدعاؤها عندما تظهر الأقواس المربعة على يمين كائن الفئة مجموعة مصفوفة.
  • الخط 9.هذه الوظيفة هي الوظيفة الرئيسية في التنفيذ. يضيف عناصر إلى المصفوفة ، ويوسعها حسب الحاجة. نظرًا لأنه أكثر تعقيدًا من الآخرين ، فإن تعريفه مأخوذ من وصف الفصل. يتم تنفيذ الوظائف الموصوفة في جسم الفئة في C ++ ليس عن طريق الاستدعاء ، ولكن عن طريق الاستبدال المضمن. يؤدي هذا إلى تسريع البرنامج ، على الرغم من أنه يزيد من حجمه.
  • السطور 15-24.تعريف الوظيفة Arrau :: إضافة (T)(بالمناسبة ، هذا هو اسمها الكامل).
  • السطر 27.نقوم بإنشاء كائن من النوع مجموعة مصفوفة... قالب أجاومعلمات حسب النوع int.


هل أعجبك المقال؟ أنشرها