جهات الاتصال

عرض باسكال. أساسيات البرمجة في باسكال. حساب اللوغاريتم الطبيعي

مقدمة باسكال إلى لغة البرمجة 2006 الواجهة والتعاريف الرئيسية ؛ هيكل البرنامج؛ عرض معلومات النص ؛ إدخال لوحة المفاتيح؛ اتصال واستخدام وحدات النظام ؛ العمل مع أنواع البيانات الأساسية (عدد صحيح ، حقيقي ، سلسلة ، مصفوفة ، ملف) ؛ العمل مع الرسومات ؛ استخدام الروتينات الفرعية (الإجراءات والوظائف) ؛ استخدام الوحدات. 2 واجهة بيئة باسكال لغة البرمجة Turbo Pascal 7.0 محاطة بغلاف أداة. وهي تشمل: محرر نصوص متعدد النوافذ ؛ رابط البرنامج مصحح البرنامج نظام المساعدة مترجم. 3 واجهة PASCAL ENVIRONMENT 4 قائمة الملفات المفتوحة: Alt + 0 وصول سريع لفتح الملفات: Alt +<№ окна> التعريفات الأساسية الكلمة المحجوزة هي كلمة خاصة تستخدمها لغة البرمجة لفصل المجالات المنطقية للبرنامج. المشغل هو أمر لغة يقوم ببعض الإجراءات (التحقق من حالة ، تنظيم حلقة ، إلخ.) المعرف هو اسم يختاره المبرمج بحرية لعناصر البرنامج. نوع البيانات هو خاصية مميزة للمعرف الذي يحدد مجموعة القيم التي يمكن أن يأخذها (عدد صحيح أو كسور ، سلاسل الأحرف ، التعبيرات المنطقية ، إلخ). 5 الهيكل العام للبرنامج Program_name؛ قسم الاستخدامات من الإضافات ؛ قسم وصف التسمية للتسميات ؛ قسم Const من إعلان الثوابت ؛ قسم النوع الذي يصف أنواع البيانات الأصلية ؛ قسم التصريح المتغير المتغير ؛ ابدأ النص الأساسي للبرنامج ؛ نهاية. كود الحد الأدنى: 6 SCREEN OUTPUT لعرض المعلومات على الشاشة ، يتم استخدام عوامل التشغيل التالية: Write or Writeln. F9 - Compile + Verify Ctrl + F9 - Run F9 → Ctrl + F9 - Avoid Errors عرض نتائج تشغيل البرنامج 7 SCREEN نتيجة العبارات: WRITE "Empty" statement WRITELN يضيف سطرًا فارغًا WRITELN 8 EXERCISE عرض المعلومات على الشاشة كما هو موضح أدناه مرحبا! من الجميل أن أراك! اتصل بي الكمبيوتر. المادة المستخدمة: عبارات الإخراج: كتابة ، عامل كتابة WriteLn "فارغ" WriteLn؛ يُدخل سلسلة فارغة. 9 توصيل وحدات إضافية تعمل الوحدات النمطية الإضافية على توسيع إمكانيات برامجك عن طريق إدخال عوامل تشغيل إضافية. يتم توصيل الوحدات النمطية في قسم الاستخدامات. البرنامج يستخدم الوحدة النمطية 1 ، الوحدة 2 ؛ ________________________ ________________________ ________________________ ____________________________ MODULE 1 Resource Set 1 ... MODULE N Modules: System Own Resource Set N مسح شاشة النص في انتظار الضغط على مفتاح الوحدة النمطية المتصلة المسماة CRT 10 RANDOM SCREEN OUTPUT GotoXY (X، Y: Integer) حيث X، Y - الإلمام تنسيق على الشاشة. يمكن أن تأخذ X قيمًا من 1 إلى 80 ، و Y من 1 إلى 25. على سبيل المثال: Program My_program؛ (اتصال الوحدة النمطية) يستخدم Crt ؛ ابدأ (مسح الشاشة) ClrScr ؛ (إخراج البيانات) GotoXY (1 ، 1) ؛ كتابة ("▒") ؛ GotoXY (80 ، 1) ؛ كتابة ("▒") ؛ GotoXY (1 ، 25) ؛ كتابة ("▒") ؛ GotoXY (80 ، 25) ؛ كتابة ("▒") ؛ (تأخير الشاشة) ReadKey ؛ نهاية. يعرض البرنامج الرمز “▒” (كود 177) في زوايا الشاشة. 11 الإخراج في لون TextColor (اللون) ؛ يحدد لون الحروف. TextBackground (اللون) ؛ يحدد لون الألفة. برنامج MyProgram؛ يستخدم CRT. ابدأ TextColor (أحمر) ؛ TextBackGround (أزرق) ؛ اكتب ("بالخارج") ؛ TextColor (أبيض) ؛ اكتب ("عشب") ؛ TextColor (أخضر) ؛ TextBackGround (أصفر) ؛ اكتب ("على العشب") ؛ TextBackGround (أرجواني) ، اكتب ("الحطب. ") ؛ النهاية. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 لون أسود أزرق أخضر سماوي أحمر أرجواني بني فاتح رمادي غامق رمادي فاتح أزرق فاتح أخضر فاتح أزرق فاتح أحمر فاتح أرجواني أصفر أبيض 12 - أسود - أزرق - أخضر - سماوي - أحمر - أرجواني - بني - رمادي فاتح - رمادي غامق - أزرق - أخضر فاتح - سماوي فاتح - وردي - أرجواني فاتح - أصفر - أبيض قيم معرفات عمليات البيانات. كائنات الأحرف المسموح بها: أحرف لاتينية وأرقام وشرطة سفلية القيود: يجب ألا تبدأ برقم ، ولكن يمكن أن تبدأ بشرطة سفلية لا يمكن أن تكون كلمات متعددة لا يمكن مطابقة أي من الكلمات الرئيسية المعرفات ليست حساسة لحالة الأحرف . المعرفات غير الصحيحة: البيانات My name 2Array Var ((((الأحرف الروسية مستخدمة) هناك مسافة) تبدأ برقم) تطابق الكلمة الأساسية) الأرقام ، سلاسل الأحرف ، التعبيرات المنطقية ، إلخ.). 16 نوع البيانات الصحيح 17 مجموعة محدودة من القيم الممكنة نوع البايت قصير كلمة عدد صحيح المدى الطويل 0..255 -128..127 0..65535 -32768..32767 -2147483648..2147483647! خارج النطاق يؤدي إلى خطأ! إعلان الحجم عن المتغيرات المتغير هو معرف قادر على تخزين بعض القيمة (رقم ، سلسلة ، إلخ) وتغييرها أثناء تشغيل البرنامج. بناء الجملة: Var<имя переменной> : <тип переменной>؛ اسم البرنامج البرنامج ؛ قسم الاستخدامات من الإضافات ؛ قسم التصريح المتغير المتغير ؛ ابدأ النص الأساسي للبرنامج ؛ نهاية. مساحة محجوزة في ذاكرة الكمبيوتر لثلاثة متغيرات 18 ضبط القيم على المتغيرات لتعيين قيمة متغير ، يجب عليك استخدام عامل التخصيص: = بناء جملة السجل:<Переменная> := <Значение>؛ يتم إدخال القيمة 3 في المتغير (عدد صحيح) المسمى A 19 عمليات ذات متغيرات عددية 20 عمليات حسابية: + - * / العمليات القياسية: div | وزارة الدفاع | لا يمكن استخدام sqr مع أنواع الأعداد الصحيحة تم تعيين متغير يسمى S على مجموع القيم المخزنة في المتغيرين X و Y يتم عرض القيمة المخزنة في متغير باسم S على الشاشة تمرين 21 1. اكتب برنامجًا يعرض نتيجة ضرب الرقمين 15 و 20 2. اكتب برنامجًا يعرض قيمة الوظيفة f 2 x 3 y ، عندما تكون x = 11 ، y = 3 المادة المستخدمة: يتم التصريح عن المتغيرات في قسم Var يسمى نوع العدد الصحيح عدد صحيح بناء الجملة لتعيين قيمة إلى متغير هو:<Переменная> := <Значение> ؛ يتم وضع علامة بعد كل عامل ؛ (باستثناء البداية والنهاية الأخيرة) نوع البيانات الحقيقية مجموعة من القيم √ √ النوع الترتيبي النوع الحقيقي التوافق أحادي الاتجاه: Real Integer Real! خارج النطاق وعدم الامتثال لقواعد التوافق يؤدي إلى خطأ! 22 عمليات ذات متغيرات حقيقية 23 عمليات قياسية: pi | مربع | الخطيئة | كوس | القيمة المطلقة | إكسب | جولة Ln | Trunc (حقيقي ← عدد صحيح) على سبيل المثال (X ، S - نوع حقيقي): X: = pi / 3 ؛ S: = الخطيئة (X) * 100 ؛ اكتب (جولة (ق)) ؛ يحتوي المتغير المسمى S على نسبة القيم المخزنة في المتغيرين X و Y. يشير موضع الرقم وعدد الأحرف في الجزء الكسري من الرقم E إلى قوة الرقم. 5.6E-5 = 5.6 · 10-5 سلسلة بيانات نوع 24 سلاسل هي مجموعة مرتبة من الأحرف. يتم وضع السلاسل في فواصل عليا. الجمل غير متوافقة مع الأنواع الصحيحة والحقيقية. اكتب سلسلة سلسلة 255 حرفًا (عوامل تشغيل السلسلة الأساسية) + (التسلسل) الطول (S) ؛ (طول السلسلة) على سبيل المثال: X: = 'Vasya'؛ اكتب ("باسمك" ، الطول (X) ، "مضاءة") ؛ S: = X ؛ X: = S ؛ تمرين اكتب برنامجًا يعرض نتيجة قسمة الأرقام 12.89 و 0.22 بثلاثة أرقام معنوية فقط بعد الفاصلة العشرية ، بالصيغة التالية: الرقم الأول مقسومًا على الرقم الثاني = النتيجة اكتب (X: 1: 3، 'razdelit na' ، y: 1: 3، '=' z: 1: 3) المواد المستخدمة: نوع السلسلة يسمى String Strings يتم تضمينها في postrophes يتم ربط السلاسل بعلامة + في بيان العرض ، يتم فصل الأنواع المختلفة بفاصلة 25 KEYBOARD INPUT 26 لإدخال المعلومات من لوحة المفاتيح ، يجب عليك استخدام عامل تشغيل الإدخال: Read أو ReadLn. بناء الجملة: قراءة (N1، N2، ... Nn) ؛ حيث N1 ، N2 ، ... Nn هي متغيرات (عدد صحيح ، حقيقي ، سلسلة) في المتغير X ، يتم إدخال القيمة التي تم إدخالها من لوحة المفاتيح. بعد إدخال القيمة ، يجب الضغط على مفتاح Enter. إذا كان هناك عدة متغيرات في عامل التشغيل ، يتم إدخالها من خلال مسافة أو عن طريق الضغط على مفتاح. أدخل التمرين 27 1. اكتب برنامج آلة حاسبة صغيرة يحسب مجموع رقمين تم إدخالهما من لوحة المفاتيح. 2. اكتب برنامجًا يسألك عن اسمك وبعد أن تكتب اسمك يعرض تحية. على سبيل المثال ، إذا أدخلت اسم Vanya ، فسيعرض البرنامج العبارة: Hello، Vanya !!! المواد المستخدمة: عوامل الإدخال: قراءة ، قراءة المشغلون الشرطيون 29 المشغل الشرطي ينفذ "التفرع" ، أي يغير ترتيب تنفيذ المشغلين اعتمادًا على حقيقة أو خطأ بعض الشروط. فحص الحالة لا إجراء 1 سأذهب إلى الشاطئ إنها تمطر نعم الإجراء 2 سأقوم بمظلة الإجراء 3 سأذهب إلى السينما فحص الشروط عمليات المقارنة:> - المزيد< - меньше = - равно >= - أكبر من أو يساوي<= - меньше или равно <>- لا تساوي 30 عملية منطقية: لا و أو - لا - و - أو على سبيل المثال: إذا كان طولي> ارتفاع بيتيا ، فأنا أطول من بيتيا إذا (تمطر) أو (تتساقط الثلوج) ، فسأبقى عندها home إذا لم ((تمطر) و (رياح)) ، فسأذهب في نزهة عند استخدام العمليات المنطقية ، يتم وضع الشروط بين قوسين.<условие>ومن بعد<оператор>؛ على سبيل المثال ، إذا كانت القيمة في المتغير X أقل من 0 ، فستتم كتابة القيمة 1 على نفس المتغير: إذا كانت X<0 Then X:= 1; Полная форма: If <условие>ومن بعد<оператор_1>آخر<оператор_2>؛ على سبيل المثال: إذا كانت X> 5 ثم X: = X - 1 آخر X: = X + 1 ؛ يمكن استخدام عامل تشغيل واحد فقط بعد الكلمات "بعد ذلك" و "آخر" قبل كلمة "آخر" ، علامة ؛ مفقود 31 تمرين 32 1. اكتب برنامجًا يتلقى مبلغ إدخال بالدولار ومبلغ باليورو ، ثم يعرض العملة التي يكون المبلغ أكبر بها (1 دولار = 28 روبل ، 1 يورو = 35 روبل) 2. اكتب برنامجًا ، والتي تأخذ ثلاثة أرقام كمدخلات ، ثم تعرض الحد الأقصى منها. المواد المستخدمة: أشكال المعامل الشرطي: If<условие>ثم<оператор>؛ إذا<условие>ثم<оператор_1>آخر<оператор_2>؛ قبل علامة أخرى ؛ لم يتم تعيين عمليات المقارنة:>< = <> >= <= Логические операции: Not Or And ОПЕРАТОРНЫЕ СКОБКИ Если после слов Then или Else необходимо записать несколько операторов, то их заключают в операторные скобки (составной оператор). Операторные скобки начинаются словом Begin, а заканчиваются словом End; Например: If Z >0 ثم ابدأ X: = 1 ؛ ص: = -1 ؛ WriteLn ("المعلومات مقبولة") ؛ End Else WriteLn ('Error') ؛ 33 CASE SELECT OPERATOR يتم استخدام عبارة الاختيار لاستبدال تراكيب العبارات الشرطية المتداخلة. صيغة تدوين الحالة<порядковая_переменная>من<значение_1> : <оператор_1> ; <значение_2> : <оператор_2> ; ……… <значение_N> : <оператор_N>آخر<оператор_N+1>؛ نهاية؛ يمكنك استخدام الأقواس في جملة التحديد سلسلة اختيارية 34 SELECT STATEMENT CASE الحالة ارتفاع الطالب 16..30: أنت طالب في مدرسة ابتدائية ؛ 31،32،33: أنت في الصف 5-6 ؛ 34..50: أنت طالب في مدرسة ثانوية يتم استخدام الفاصلة لسرد القيم ، ويتم استخدام النقطتين لتحديد نطاق آخر ، ومن الواضح أنك لست طالبًا ؛ نهاية؛ الحالة x من -128 ..- 1: writeln ("سلبي") ؛ 0: writeln ("لا شيء") ؛ 1..127: writeln ('إيجابي') Else WriteLn ('خارج النطاق') ؛ نهاية؛ 35 تمرين اكتب برنامجًا يعرض اليوم المقابل من الأسبوع ، إذا أعطيت رقمًا. على سبيل المثال ، أدخل الرقم 2 ، يجب أن يخرج البرنامج "الثلاثاء". إذا كان الرقم خارج 1..7 ، فيجب عرض رسالة تفيد بعدم وجود مثل هذا اليوم. المواد المستخدمة: عامل التحديد: الحالة<порядковая_переменная>من<значение_1> : <оператор_1> ; ……… <значение_N> : <оператор_N>؛ آخر<оператор_N+1>؛ نهاية؛ 36 CYCLES 37 الخوارزميات تسمى دورية ، حيث يتم تنفيذ بعض المشغلين بشكل متكرر بنفس البيانات المعدلة (على سبيل المثال ، إجراء ضرب الأرقام من خلال الإضافة المتعددة). هناك ثلاث عمليات تشغيل في باسكال: (حلقة مع معلمة أو لعدد معين من التكرارات) بينما (حلقة WHILE) كرر (قبل الحلقة) إذا كان عدد التكرارات معروفًا ، فمن الأفضل استخدام مشغل الحلقة مع معلمة. LOOP WITH PARAMETER 38 Loop لعدد محدد من التكرارات مع زيادة أو نقصان قيمة المعلمة لـ (param): = (start_value) To (end_value) Do (مشغل)؛ Loop body ملاحظات المعلمة هي نوع عدد صحيح ؛ يمكنك استخدام أقواس المشغل في حلقة ؛ لا يمكنك تغيير معلمة الحلقة في جسم الحلقة ؛ تتم زيادة معلمة الدورة بمقدار واحد ؛ قيمة البداية> قيمة النهاية ، وإلا فسيتم تجاهل جسم الحلقة ؛ لتقليل المعلمة ، بدلاً من إلى ، استخدم DownTo. الحلقات باستخدام المعلمة 39 اكتب برنامجًا يطلب أعدادًا صحيحة (أ ، ب) ، حيث أ := <нач_зн>ل<кон_зн>يفعل<оператор>؛ المعلمة هي نوع عدد صحيح (عادة عدد صحيح) ؛ يمكنك استخدام أقواس المشغل في حلقة ؛ تتم زيادة معلمة الحلقة بمقدار واحد 40 أثناء LOOP تختبر الحلقة while الشرط أولاً ، وفقط إذا كان صحيحًا تنفذ جسم الحلقة. بينما (الشرط) تفعل (بيان) ؛ في نص الكود المكتوب أدناه ، لن يتم تنفيذ الحلقة أبدًا: x: = 1؛ بينما x> 1 تفعل x: = x-1؛ يمكنك الحصول على حلقة لا نهائية. على سبيل المثال: x: = 1 بينما x> 0 تفعل x: = x + 1؛ 41 أثناء الحلقات برنامج يعرض مجموع الأرقام من a إلى b. أثناء عدم الضغط على مفتاح ، ابدأ Delay (2000) ؛ نهاية؛ تستمر الحلقة حتى يصبح المتغير f أكبر من القيمة b 42 EXERCISE 43 1. قرر رواد الفضاء زراعة البتولا على القمر ، وكل عام لمضاعفة عدد البتولا ، في السنة الأولى قاموا بزراعة 3 من البتولا. اطبع على الشاشة في عدد السنوات التي سيتجاوز فيها عدد البتولا 10000. 2. اكتب برنامجًا يحدد الحد الأقصى للأرقام المدخلة من لوحة المفاتيح (ينتهي إدخال الرقم بالرقم 0). يوجد أدناه تخطيط شاشة موصى به: أدخل الأرقام. أدخل 0 لإكمال الإدخال 89 15 0 الحد الأقصى للرقم هو 89. المواد المستخدمة: أثناء بيان التكرار: بينما<условие>فعل<оператор>؛ تختبر حلقة while الشرط أولاً ، وفقط إذا كان هذا صحيحًا ، يتم تنفيذ الجسم الرئيسي للحلقة. REPEAT LOOP 44 تقوم حلقة التكرار أولاً بتنفيذ جسم الحلقة وبعد ذلك فقط تتحقق من الشرط Repeat (loop_body) حتى (condition) ؛ ليست هناك حاجة لاستخدام تعليمة مركبة في حلقة التكرار ، لأن هذا البناء لا ينص على تنفيذ جملة واحدة ، بل عدة عبارات محاطة بين الكلمتين "كرر" و "حتى". كرر الحلقة ("حتى ذلك الحين") برنامج يعرض مجموع الأرقام من أ إلى ب. تستمر الحلقة حتى يصبح المتغير المتغير f أكبر من القيمة b 45 مقارنة الحلقات For while Repeat 46 يعتمد اختيار نموذج الحلقة فقط على ملاءمة استخدامه في موقف معين. يمكننا دائمًا استخدام نوع آخر من الحلقات بدلاً من واحد. تمرين احسب قيمة الدالة y x 3 x 2 16 x 43 لـ x المتغيرة في النطاق من -4 إلى 4 شاملة بخطوة 0.5. المواد المستخدمة: بيان التكرار التكرار: التكرار<тело_цикла>حتى<условие>تنفذ حلقة التكرار أولاً جسم الحلقة ، وبعد ذلك فقط تتحقق من الشرط 47 مقاطعة الدورات 48 تُستخدم الإجراءات للتحكم المرن في المشغلين الدوريين: Break - exit from the loop؛ متابعة - إكمال المرور التالي للدورة ؛ أمثلة: ابحث عن الحد الأدنى للعدد i الذي يكون فيه مجموع الأرقام من 1 إلى i أكبر من 100. وبمجرد أن يصبح s (مجموع الأرقام من 1 إلى i) أكبر من 100 ، يتم تشغيل عبارة break وتخرج الحلقة . ق: = 0 ؛ بالنسبة إلى I: = 1 إلى 100 ابدأ إذا كانت s> 100 ثم كسر ؛ s: = s + i ؛ نهاية؛ Writeln ("الحد الأدنى للرقم أنا مثل (1 + 2 + .. + i)> 100 يساوي" ، i) ؛ يتم إدخال 10 أرقام من لوحة المفاتيح ويتم اعتبار مجموع الأرقام الموجبة فقط في الحلقة. إذا كان الرقم سالبًا ، فسيتم تنفيذ عبارة المتابعة ، والتي تبدأ بالمرور التالي للحلقة. ق: = 0 ؛ بالنسبة إلى I: = 1 إلى 10 ابدأ Readln (k) ؛ إذا ك<0 then Сontinue; s:= s + k; end; Writeln (‘Сумма положительных чисел равна ’,s); МАССИВЫ МАССИВЫ 50 Простые типы: одна переменная – одно значение Структурированные типы: одна переменная – несколько значений Массив – это фиксированное количество значений одного типа. Доступ к конкретному значению осуществляется через индекс. Переменная массива Структура массива: A= Доступ к массиву: 0 1 2 3 Индекс 9 7 0 0 Значения <Имя массива> [ <Индекс>] ج: = 7 ؛ المصفوفات تم التصريح عن مصفوفة في قسم Var: (الاسم): Array [(start_value) .. (end_value)] من (type)؛ أمثلة على إعلان المصفوفة: Var A: Array of String ؛ ب: صفيف حقيقي ؛ ج: مصفوفة عدد صحيح ؛ أمثلة على تعبئة المصفوفات بالقيم: A: = 'Vasya'؛ أ: = "بيتيا" ؛ ج: = "ماشا" ؛ أ: = "أوليسيا" ؛ اكتب)؛ بالنسبة إلى f: = 1 إلى 10 do C [f]: = f * 2 ؛ بالنسبة إلى f: = 1 إلى 10 do WriteLn (C [f]) ​​؛ 51 تمرين 52 اكتب برنامجًا يطالب المستخدم بـ 7 أعداد صحيحة ويخزنها في مصفوفة. تحتوي المصفوفة على الحد الأقصى للعنصر ويتم عرضها على الشاشة. على سبيل المثال: أدخل الرقم الأول: 4 أدخل الرقم الثاني: 8 أدخل الرقم الثالث: 9 أدخل الرقم الرابع: 2 أدخل الرقم الخامس: 4 أدخل الرقم السادس: 5 أدخل الرقم السابع: 0 الحد الأقصى للرقم: 9 المواد المستخدمة: إقرارات المصفوفة:<Имя>:مجموعة مصفوفة[<нач_зн> … <кон_зн>] من<тип>؛ وصول المصفوفة:<Имя массива> [ <Индекс>] مولد الأرقام العشوائية (RNG) لإنشاء أرقام عشوائية في البرنامج ، يتم استخدام العوامل التالية: عشوائية - تهيئة RNG. يتم الإعلان عنه فقط في بداية البرنامج ؛ عشوائي - يولد رقمًا عشوائيًا من 0 إلى 1 (نوع حقيقي) ؛ عشوائي (N) - يولد عددًا عشوائيًا من 0 إلى N-1 (نوع عدد صحيح) ؛ 53 صفيفات متعددة الأبعاد 54 قائمة بالفواصل الزمنية لكل بُعد مصفوفة (الاسم): صفيف [(start_value) .. (end_value)، (start_value) .. (end_value)، (etc)] من (النوع)؛ مثال على إعلان مصفوفة ثنائية الأبعاد (مصفوفة ، جدول) بأربعة صفوف و 6 أعمدة: Var A: Array of Integer؛ مثال لملء المصفوفة: بالنسبة إلى i: = 1 إلى 4 do For j: = 1 to 6 do A: = i + j؛ Ai، j 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8 6 7 8 9 7 8 9 10 تمرين اكتب برنامج يملأ مصفوفة ثنائية الأبعاد بأرقام عشوائية من -10 إلى 20 ويطبع المجموع من العناصر الموجودة على طول قطري من الجدول. المواد المستخدمة: تهيئة RNG: ترتيب عشوائي لرقم عشوائي من 0 إلى N-1: عشوائي (N) 55 العمل مع الملفات التي تعمل مع الملفات 57 [بريد إلكتروني محمي]$ ku⌂ | "Hd9v * 9 (L * M = BYGRMxduB █ 8e * BOtCDrTVzHGJ1aBD>B \ (r8sE) █: wcJvAmRa" v / .Wai؛ $ `SWI = y2] suB █؟ Hq> vF (LmPc4 ^ Adz .6b] o (QkВ8 █ cu<6`8Z":M^1;:8ANwak;,b2-4…u5 █ 2]suB?Hq>vF (LmBcAdz4wcP] o (QkВ █ 8c8df] e "v، su> +)، VAEFБjFV، W $ Q- █ y0G1GjN $ -eБ | sqZ0`QnВ٪ \ BD٪ y █ █ - فاصل سطر █ - ملف فاصل متغير الإنشاء والقراءة والكتابة والإغلاق العمل مع الملفات تسلسل الإجراءات عند العمل مع الملفات: 1. التصريح عن متغير ملف (FP) 2. إقران FP بملف 3. فتح ملف للقراءة / الكتابة 4. العمليات مع الملف ؛ 5. إغلاق الملف (الاتصال بين الملف و FP مقطوع أيضًا) ؛ 1. إعلان FP<Имя>: ملف<тип> ; <Имя>:نص؛ فارف: نص ؛ ح: ملف عدد صحيح ؛ 2. اقتران FP بملف التعيين (<ФП>, <имя файла>) ؛ تعيين (f، 'c: \ my \ Data.ghm') 58 العمل مع الملفات 3. فتح ملف للقراءة / الكتابة إعادة التعيين (<ФП>) ؛ - يفتح الملف لقراءة إعادة الكتابة (<ФП>) ؛ - يفتح الملف للكتابة 4. العمليات بالملف قراءة (<ФП>, <П1> , <П2>،…) ؛ - يقرأ في المتغيرات<П1>, <П2>إلخ. عنصر واحد في موضع المؤشر. اكتب(<ФП> , <П1> , <П2>،…) ؛ - يكتب قيم المتغيرات في الملف<П1>, <П2>إلخ. عنصر واحد في موضع المؤشر. EoLn (<ФП>) ؛ - تعيد True إذا تم الوصول إلى نهاية السلسلة. EoF (<ФП>) ؛ - إرجاع True إذا تم الوصول إلى نهاية الملف. 5. إغلاق الملف إغلاق (<ФП>) ؛ 59 العمل مع الملفات بسّط البرنامج إذا كنت تعلم أن المصفوفة 5 × 5 (استخدم حلقة For) 60 تمرين 61 اكتب البرنامج "DOM-3". الملف الأول يحتوي على أسماء المشاركين في القضية الترشيح. في الثانية نفس الأسماء ولكن في حالة النصب. في الثالث - قائمة التعبيرات عن المشاعر أو نوع من العمل (يحب ، لا يحب ، القبلات ، يريد العض ، يحب ، الاحترام ، الكراهية ، يريد أن يرى ، العناق). يجب على البرنامج أخذ المعلومات بشكل عشوائي من هذه الملفات وإنشاء واحدة جديدة وفقًا للمبدأ التالي:<имя в им. пад> <чувство/действие> <имя в вин. пад> أولغا تحب سيرجي أوليغ وتريد أن ترى رومان كاتيا تحترم ناستيا إلخ. المواد المستخدمة: اسم المشغلين: تعيين ، إعادة كتابة ، إعادة تعيين ، كتابة ، قراءة ، إغلاق. رسومات الرسومات للعمل مع الرسومات في باسكال ، يلزم وجود ملفين - وحدة Graph.tpu وبرنامج تشغيل محول الرسومات egavga.bgi. الأول موجود في دليل \ UNITS والثاني في \ BGI. ! egavga.bgi سائق. مطلوب عند تشغيل ملف exe! للرسم ، تحتاج إلى: 1. توصيل وحدة GRAPH (في قسم الاستخدامات) ؛ 2. تهيئة الرسومات (InitGraph) ؛ 3. رسم شيء؛ 4. أغلق وضع الرسوميات (CloseGraph) 63 GRAPHICS تهيئة وضع الرسوميات ارسم خطاً. ينتقل القلم من النقطة (0،0) إلى النقطة (639 ، 479). PROGRAM Primer_1 ؛ استخدام الرسم البياني ، crt ؛ VarGd ، GM: عدد صحيح ؛ BEGIN Gd: = 0 ؛ InitGraph (Gd، Gm، 'd: \ BP \ bgi ")؛ Line (0،0،639،479)؛ ReadKey؛ CloseGraph؛ END. 639 بكسل. نظام الإحداثيات 479 بكسل. مثلث 2. ارسم مستطيلاً في وسط الشاشة باستخدام الجوانب أصغر مرتين من الجوانب المقابلة للشاشة ، المواد المستخدمة: وحدة الرسومات: تهيئة رسومات الرسم البياني: وضع رسومات الإغلاق الأولي: CloseGraph ؛ GRAPHICS + COLOR SetColor (Color: word) ؛ يضبط لون القلم GetColor: word ؛ إرجاع تعيين لون القلم SetBkColor (color: word) ؛ تعيين لون الخلفية GetBkColor: word ؛ إرجاع لون الخلفية الألوان أسود أزرق أخضر سماوي أحمر أرجواني بني فاتح رمادي غامق رمادي فاتح أزرق فاتح أخضر فاتح أزرق فاتح أحمر فاتح أرجواني أصفر أبيض 66 - أسود - أزرق - أخضر - سماوي - أحمر - أرجواني - بني - رمادي فاتح - رمادي غامق - أزرق سماوي - أخضر فاتح - سماوي فاتح - وردي - أرجواني فاتح - أصفر - أبيض خط الرسومات الأولية (س ، ص) ؛ رسم خط من إحداثيات القلم الحالية إلى إحداثيات (س ، ص). MoveTo (س ، ص) ؛ يضبط القلم على إحداثيات (س ، ص). PutPixel (س ، ص ، لون) ؛ يرسم نقطة عند الإحداثيات (س ، ص) باللون. GetPixel (س ، ص): كلمة ؛ إرجاع لون النقطة عند الإحداثيات (س ، ص). مستطيل (x1 ، y1 ، x2 ، y2) ؛ يرسم حدود المستطيل. الدائرة (س ، ص ، ص) ؛ يرسم دائرة مركزها (س ، ص) ونصف قطرها ص. SetLineStyle (Ln ، 0 ، T) يغير معلمات المخططات التفصيلية. Ln - نمط الخط (0..3): 67 x1 ، y1 T - سمك الخط: 1 = عادي ؛ 3 = سميك. FillEllipse (x، y، xr، yr) ؛ رسم قطع ناقص ممتلئ متمركز عند (x، y) بنصف قطر Xr و Yr. SetFillStyle (النوع واللون) ؛ يضبط النوع (0..11) ولون الفتحة للأشكال المغلقة ؛ ClearDevice ؛ يمسح شاشة الرسوم من خلال رسمها بلون الخلفية الحالي x2 ، y2 الرسوم الأولية 68 تمرين 69 1. اكتب برنامجًا يرسم منزلًا على شاشة العرض ؛ 2. اكتب برنامجًا يرسم سماء مرصعة بالنجوم على شاشة المراقبة بنجوم ذات نصف قطر عشوائي (من 1 إلى 5 بكسل) وموقع عشوائي. اللون عشوائي أيضًا (أبيض ، رمادي فاتح ، رمادي غامق) ؛ المواد المستخدمة: SetColor (اللون: كلمة) ؛ - تعيين لون الرسم SetBkColor (اللون: كلمة) ؛ - يضبط لون الخلفية الحالي. خط (س ، ص) ؛ - رسم خط من إحداثيات القلم الحالية إلى إحداثيات (س ، ص). MoveTo (س ، ص) ؛ - يضبط القلم على إحداثيات (س ، ص). PutPixel (س ، ص ، لون) ؛ - يرسم نقطة بإحداثيات (س ، ص) بالألوان. مستطيل (x1 ، y1 ، x2 ، y2) ؛ - يقوم بإنشاء مخطط مستطيل من خطوط اللون الحالي. الدائرة (س ، ص ، ص) ؛ - يرسم دائرة مركزها (س ، ص) ونصف قطرها ص. FillEllipse (x، y، xr، yr) ؛ - يرسم قطع ناقص ممتلئ متمركز في (x، y) بنصف قطر Xr و Yr. GRAPHICS + ANIMATION وقفة في مللي ثانية. 70 SUBPROGRAMS SUBPROGRAMS Subroutines تسمح لك بتحديد جزء متكرر من الكود في أجزاء منفصلة وإدخالها في الأماكن الضرورية في البرنامج. وظيفة ، على عكس الإجراء ، ترجع نتيجة المكالمة. الإجراءات وظائف الوظائف الفرعية: تتم كتابتها بين الكلمات الرئيسية تبدأ بالنهاية ؛ يتم تحديدها من خلال الأسماء ، والتي تتم كتابتها وفقًا لقواعد تحديد المعرفات ؛ يمكن أن يكون لها معلمات الإدخال والإخراج ؛ كرر هيكل البرنامج الرئيسي بالكامل. 72 برنامج بلدي؛ الروتين الفرعي 1 [رمز الروتين الفرعي 1] الروتين الفرعي 2 [كود الروتين الفرعي 2] بدء الروتين الفرعي 2 الروتين الفرعي 1 مثال على إجراءات النظام: اكتب ("موافق")؛ ClrScr. الطول (S) ؛ عشوائي؛ // // // إجراء مع إجراء معلمة واحدة بدون وظيفة معلمات مع وظيفة معلمة واحدة بدون معلمات Subroutine 2 End. البرامج الفرعية (SPR) دمج البرامج الفرعية البرنامج الفرعي 1 البرنامج الفرعي 3 البرنامج الفرعي 4 البرنامج الفرعي 2. قد تكون أسماء المتغيرات الموضحة في DEP هي نفسها أسماء المتغيرات من DEPs الأخرى (يمكن الإعلان عن نفس المتغير في كل من DEPs). يحمي اسم المتغير الموصوف في PPR المتغيرات التي تحمل الاسم نفسه من PPR الذي يحيط بالمتغير المحدد (إذا تم الإعلان عن نفس المتغيرات في PPR1 و PPR3 ، فستكون هذه المتغيرات فريدة في كل PPR). متغيرات البرنامج تسمى متغيرات البرنامج العام والمتغيرات الفرعية تسمى المحلية. الإجراءات بدون معلمات بناء جملة السجل: الإجراء (اسم الإجراء) ؛ (قسم المتغيرات ، الثوابت ، الأنواع ، الملصقات ، الوحدات النمطية) ابدأ (نص الإجراء) ؛ نهاية؛ مثال على استخدام إجراء بدون معلمات: 74 PROCEDURES WITHOUT PARAMETERS مثال على متغيرات الهروب التي تحمل الاسم نفسه: Program My_program؛ يستخدم CRT. فارا: سلسلة ؛ // وصف الإجراء الإجراء My_Procedure؛ فارا: سلسلة ؛ تبدأ أ: = "روتين فرعي" ؛ اكتب (أ) ؛ نهاية؛ تبدأ أ: = "الجسم" ؛ اكتب (أ) ؛ الإجراء الخاص بي اكتب (أ) ؛ نهاية. // استدعاء الإجراء 75 الإجراءات مع المعلمات 76 لجعل الإجراءات الفرعية أكثر عالمية ، يتم استخدام آليات خاصة لتبادل البيانات بين البرنامج والروتينات الفرعية. إجراءات النظام مع المعلمات: SetColor (أحمر) ؛ (الإجراء مع المستطيل (0 ، 0 ، 639 ، 479) ؛ (الإجراء باستخدام InitGraph (Gd ، Gm ، 'd: \ BP \ bgi ") ؛ (إجراء مع (معلمة واحدة) عدة معلمات) عدة أنواع مختلفة)) التسجيل إجراءات بناء الجملة مع المعلمات الإجراء (الاسم) ((منطقة متغيرات الإدخال) Var (منطقة متغيرات الإخراج (لكل متغير متغير خاص به))) ؛ بنية المناطق: Variable_1 ، Variable_2 ، ...: Type ؛ .. ......... ............. Variable_N-1، Variable_N، ...: Type؛ قد تكون أي منطقة غائبة عن الإجراءات مع المعلمات باستخدام معلمات الإدخال إجراء الرسم مستطيل يحد الشاشة ، لون محدد بدون معلمات مع معلمات الإجراء Cir ؛ بدء SetColor (i) ؛ SetBkColor (b) ؛ مستطيل (0 ، 0 ، 639 ، 479) ؛ نهاية ؛ إجراء Cir (i ، b: عدد صحيح) ؛ ابدأ SetColor (i)؛ SetBkColor (b)؛ Rectangle (0، 0، 639، 479)؛ End؛ استدعاء إجراء في برنامج: استدعاء إجراء في برنامج: i: = 6؛ b: = 12؛ Cir؛ Cir (6 ، 12) ؛ 77 إجراءات مع معلمات باستخدام معلمات إخراج إجراء ra لتحويل زاوية من درجات إلى راديان. EX_26_3 برنامج ؛ VAR x ، a: حقيقي ؛ الإجراء راد (ألفا: حقيقي ؛ فار بيتا: حقيقي) ؛ (متغير الإخراج) BEGIN Betta: = pi * alfa / 180 ؛ نهاية؛ ابدأ كتابة ("أدخل الزاوية بالدرجات:") ؛ readln (x) ؛ راد (خ ، أ) ؛ (استدعاء الإجراء) Writeln ("إنه يساوي الزاوية بالتقدير الدائري =" ، أ: 6: 4) ؛ نهاية. 78 تمرين 79 1. اكتب إجراء لرسم مثلث بالصيغة التالية: مثلث (x1 ، y1 ، x2 ، y2 ، x3 ، y3 ، اللون) 2. اكتب إجراءً لحساب مساحة المستطيل في الشكل التالي التنسيق: SRect (a ، b ، S) حيث ، S هي معلمة الإخراج للإجراء. المواد المستخدمة: الإجراء (الاسم) ((منطقة متغير الإدخال) Var (منطقة متغير الإخراج)) ؛ بنية المنطقة: Variable_1، Variable_2،…: Type؛ ........................ Variable_N-1، Variable_N،…: Type؛ الوظائف 80 وظيفة بناء جملة الوظيفة ((منطقة متغيرة الإدخال) Var (منطقة متغير الإخراج)): (النوع) ؛ تصميم الإجراء تصميم الوظيفة الإجراء S (أ ، ب: حقيقي ؛ فار s: حقيقي) ؛ تبدأ s: = أ + ب ؛ نهاية؛ مجموع الوظيفة (أ ، ب: حقيقي): حقيقي ؛ بداية المجموع: = أ + ب ؛ نهاية؛ استدعاء إجراء استدعاء الوظيفة S (10 ، 20 ، A) ؛ اكتب)؛ أ: = S (10 ، 20) ؛ اكتب LN (A) ؛ WriteLN (S (20، 30)) ؛ يُنصح بتصميم بعض الروتين الفرعي كوظيفة فقط في حالة توقع نتيجة معينة من عمله. إذا كان روتين فرعي يركز فقط على أداء تسلسل معين من الإجراءات (عرض ، رسم ، إلخ) ، فمن الأفضل كتابته كإجراء. تمرين اكتب دالة لحساب مساحة المستطيل بالتنسيق التالي: SRect (أ ، ب) المادة المستخدمة: الوظيفة (الاسم) ((منطقة متغير الإدخال) Var (منطقة متغير الإخراج)): (النوع) ؛ بنية المنطقة: Variable_1، Variable_2،…: Type؛ ........................ Variable_N-1، Variable_N،…: Type؛ 81 الوحدات النمطية 83 الوحدة (الوحدة) هي وحدة برنامجية مستقلة يمكن استخدام مواردها (الإجراءات والوظائف) بواسطة برامج أخرى. برنامج My1؛ يستخدم الوحدة النمطية 1 ، الوحدة 2 ؛ __________________________ __________________________ ________________________________ __________________ الوحدة 1 مجموعة الموارد 1 ... برنامج My2 ؛ يستخدم الوحدة النمطية 1 ، الوحدة 2 ؛ __________________________ __________________________ ________________________________ __________________ الوحدة النمطية N مجموعة الموارد N يتم توصيل الوحدات النمطية بالبرنامج من خلال قسم الاستخدامات. هيكل 84 تتكون الوحدة من الأجزاء التالية: 1. رأس الوحدة النمطية. 2. واجهة الجزء. (أوصاف الأشياء المرئية) 3. جزء التنفيذ. (أوصاف الأشياء المخفية) 4. جزء التهيئة (اختياري). الوحدة (اسم الوحدة النمطية) ؛ الواجهة (قسم المتغيرات العامة ، الثوابت ، الأنواع) (الوحدات) (قائمة الإجراءات وعناوين الوظائف) التنفيذ (قسم المتغيرات المحلية ، الثوابت ، الأنواع) (تنفيذ الإجراءات والوظائف) البداية (جزء التهيئة) النهاية. ! يجب أن يتطابق اسم رأس الوحدة مع اسم ملف الوحدة النمطية! مثال الوحدة النمطية: الوحدة My_Unit ؛ واجهة Varms: صفيف حقيقي ؛ (مصفوفة عالمية) دالة شبل (x: عدد صحيح): عدد صحيح ؛ (الدالة Cub = x ^ 3) الوظيفة ext4 (x: عدد صحيح): عدد صحيح ؛ (الوظيفة ext4 = x ^ 4) دالة التنفيذ Cub (x: عدد صحيح): عدد صحيح ؛ (تنفيذ وظيفة الشبل) Begin Cub: = x * x * x؛ نهاية؛ الوظيفة Ext4 (x: عدد صحيح): عدد صحيح ؛ (تنفيذ وظيفة ext4) ابدأ Ext4: = x * x * x * x ؛ نهاية؛ نهاية. 85 تمرين 86 اكتب وحدة مع وظيفة واحدة وإجراء واحد: (حساب الوظيفة X1 = 1 / x) X1 (a: real): real؛ (الإجراء الخاص بطباعة الكلمة S على الشاشة ، في الموضع X ، Y WriteXY (S: String ؛ X ، Y: Iteger) ؛ المادة المستخدمة (بنية الوحدة النمطية): الوحدة (اسم الوحدة النمطية) ؛ الواجهة (قسم المتغيرات العامة ، الثوابت والأنواع) (الوحدات) (قائمة الإجراءات ورؤوس الوظائف) التنفيذ (قسم المتغيرات المحلية ، الثوابت ، الأنواع) (تنفيذ الإجراءات والوظائف) البدء (جزء التهيئة) النهاية.)

موضوع الدرس: "الدورات (التكرار) في البرامج"

1) كرر ووطد المعرفة الخاصة بوضع برامج متفرعة خطية ؛ 2) تعلم كتابة البرامج باستخدام عامل التشغيل الدوري - بالنسبة إلى i: = 1 TO n DO Begin (loop body) end ؛ 3) تطبيق عوامل التشغيل في حل المشاكل النموذجية. الغرض من الدرس:

إدراج مفقود: Program Sql ؛ Var A، B، C، D، XI، X2: ؟؟؟ ؛ Begin Writeln ("أدخل معاملات المعادلة التربيعية") ؛ Readln (؟؟؟) ؛ D: = B * B-4 * A * C ؛ إذا د

أسئلة للمجموعة: 1) ما الفرق بين البرامج المتفرعة والخطية؟ 2) بمساعدة أي مشغلين يتم الاختيار في البرامج؟ 3) تبدأ…. نهاية - ما هو؟ ما هي قواعد استخدام البرنامج؟

1) عوامل الإدخال / الإخراج ؛ 2) اختيار المشغلين. 3) أ: = أ + 3 - ماذا سيحدث؟ 4) قائمة أنواع البيانات. 5) إزالة AND ، OR ، END ، NOT ، IF غير الضرورية ؛ 6) ؛ - ماذا يعني؟ 7) كيف يتم تحديد نهاية البرنامج؟ 8) قائمة العمليات الحسابية. 9) ما هو 120 mod 65 =؟ 10) بيانات الحلقة.

رتب وفقًا لذلك: 1. اقرأ 2. النهاية 3. ابدأ 4. عدد صحيح 5.؛ 6. إذا .. ثم 7.: = 8. أدخل 9. نهاية 10. أعداد صحيحة 11. تعيين 12. الإجراء التالي 13- ابدأ 14- إذا .. ثم

هل النتيجة أقل من 3؟ أ: = 7 ب: = - 10 أ: = أ * (- 7) ب: = 159 أ: = ب + أ

البحث عن 5 أخطاء في البرنامج: Program krug؛ VAR Pi، r، S: حقيقي ؛ Pi: = 3.14 ، WRITELN ('vvedite radiuc r =') ، READ (r) ؛ S = Pi * r * r ؛ WRITELN ('Ploshad kruga S =' ، S) نهاية

دائرة البرنامج VAR Pi، r، S: حقيقي ؛ ابدأ Pi: = 3.14 ، WRITELN ('vvedite radiuc r =') ، READ (r) ؛ S: = Pi * r * r ؛ WRITELN ('Ploshad kruga S =' ، S) نهاية.

المهمة №1 عند وجود عدد صحيح N ، حدد ما إذا كان زوجيًا أم فرديًا. 2 ، 4 ، 6 ، ... حتى ، لأن مقسومًا بدون باقي على 2 (N mod 2 = 0) 1، 3، 7، ... - فردي ، لأن مقسومًا على 2 والباقي 1 (N mod 2 = 1)

خوارزمية خوارزمية تشيزلو ؛ فار N: الأعداد الصحيحة ؛ بدء الإخراج ('vvedite chislo') ؛ المدخلات (N) ؛ إذا كان N mod 2 = 0 T O Output (N، '- chetnoe') ؛ IF N mod 2 = 1 T O Output (N، '- nechetnoe') ؛ النهاية.

المهمة № 2 بإعطاء عدد صحيح مكون من رقمين N (DE) ، حيث D - عدد العشرات ، E - الوحدات. حدد ما إذا كان مجموع أرقام هذا الرقم سيكون 10. مثال: العدد الثامن والعشرون سيحصل على مجموع S = 2 + 8 = 10 ، لكن العدد 27 لن يحتوي على S = 2 + 7 = 9 سنحسب العشرات: D = N div 10 والوحدات: E = N mod 10

خوارزمية خوارزمية تشيزلو ؛ فارز N ، E ، D ، S: الأعداد الصحيحة ؛ بدء الإخراج ('vvedite chislo') ؛ المدخلات (N) ؛ E: = N mod 10 ؛ D: = N div 10 ؛ S: = E + D ؛ إذا كانت S = 10 T O Output ('Summa = 10') وإلا ('Summa10') ؛ النهاية.

التعريف: البرامج التي يتم فيها تكرار نفس النوع من الإجراءات عدة مرات - برامج دورية (مع التكرار).

المهمة: إعطاء 100 رقم طبيعي من 1 إلى 100 (1،2،3 ، ... 99،100) احسب مجموعهم ومخرجاتهم إلى المتغير S.

خوارزمية المجموع المتغير الأول ، S: الأعداد الصحيحة ؛ بدء S: = 0 ؛ بالنسبة إلى i: = 1 إلى 100 ، كرر Start S: = S + i body End ؛ اختتام الدورة (S) النهاية.

مبلغ البرنامج VAR i، S: عدد صحيح ؛ يبدأ: = 0 ؛ بالنسبة إلى i: = 1 إلى 100 ، ابدأ S: = S + i body end ؛ نهاية حلقة WRITE (S).

مبلغ البرنامج VAR i، S: عدد صحيح ؛ يبدأ: = 0 ؛ بالنسبة إلى i: = 1 إلى 100 ، ابدأ S: = S + i ؛ كتابة الجسم ('S'، i، '='، s) لنهاية الحلقة ؛ نهاية.

جسد الدورة هو نفس الإجراءات التي يجب تكرارها عدة مرات. نرفق جسم الدورة بين قوسين عامل بدء ... .. end ؛

ALT + F9 - إصلاح الأخطاء CTRL + F9 - قم بتشغيل البرنامج ALT + F5 - اعرض النتيجة

المهمة: 1) اعرض عمود جدول الضرب لأي عدد صحيح N بالأرقام من 1 إلى 10. مثال: N = 5 ، ثم سيكون العمود على هذا النحو - 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 i * N = P ، حيث أنا أتغير من …… .. 1… 10 10 * 5 = 50

الواجب المنزلي: التعليق على البرنامج الخاص بالمهمة "حول عمود جدول الضرب"

شكرا لاهتمامكم!

  1. 1 باسكال
  2. 2. تم تطوير باسكال باسكال من قبل العالم السويسري نيكلاوس ويرث. تعتبر باسكال أهم أداة لتدريس طرق البرمجة المنظمة ومنذ عام 1983 تم إدخالها في المناهج الدراسية في المدارس للطلاب المتخصصين في علوم الكمبيوتر. في المستقبل ، تم تحسين لغة باسكال واكتسبت خصائص جديدة مختلفة عن إصدار المؤلف.
  3. 3. لغة باسكال سهلة التعلم نسبيًا ، وواضحة ومنطقية إلى حد ما ، وكونها أول لغة برمجة تتعلم ، فهي تعلم الأسلوب الجيد.
  4. 4. مثل اللغات الطبيعية ، كل لغة برمجة لها أسلوبها وقواعدها الخاصة. بناء جملة لغة البرمجة هو مجموعة من القواعد التي تحدد كيفية إنشاء برامج صحيحة من أحرف الأبجدية.
  5. 5. أبجدية باسكال 26 حرف لاتيني صغير و 26 حرف لاتيني كبير: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z شرطة سفلية 10 أرقام: 0 1 2 3 4 5 6 7 8 9 علامات التشغيل: + - * / =<> < > <= >=: = @ المحددات (الفواصل):. ، "() (.) () (* *) ..:؛ المحددات: ^ # $
  6. 6. هيكل البرنامج (1. عنوان البرنامج) program_Name؛ (2. قسم لتحديد الوحدات المستخدمة) يستخدم List_of_Used_Modules ؛ (3. قسم الوصف) Label_Descriptions؛ وصف العقد_الأولى ؛ اكتب TypeDescriptions؛ var Variable_Descriptions؛ أوصاف الإجراء_و_الإجراءات_و_الوظائف ؛ تقوم الدالة بتصدير أوصاف_Exported_Names ؛ (4. قسم البيان) يبدأ نهاية البيانات.
  7. 7. هيكل برنامج مبسط (1. عنوان البرنامج) اسم البرنامج Program_Name؛ (2. قسم لتحديد الوحدات المستخدمة) يستخدم List_of_Used_Modules ؛ (3. قسم الأوصاف) const Descriptions_Consts؛ var Variable_Descriptions؛ (4. قسم البيان) تبدأ بيانات البرنامج تنتهي.
  8. 8. أوامر لغة البرمجة تسمى المشغلين. فاصل المشغل في باسكال هو؛ (فاصلة منقوطة)
  9. 9. التعليق هو جزء من نص البرنامج ، محدد برموز (). التعليقات في البرنامج تؤدي وظيفة إعلامية. برنامج (برنامجي الأول) أولاً ؛ تبدأ الكتابة ("مرحبًا ، أيها العالم!") النهاية.
  10. 10. مثال: مستطيل محيط برنامج محيط ؛ (عنوان البرنامج) يستخدم crt ؛ (crt - مطلوب لمسح الشاشة) var a، b: عدد صحيح ؛ (إعلان متغير) P: عدد صحيح ؛ يبدأ (بدء البرنامج) clrscr ؛ (شاشة واضحة) أ: = 12 ؛ (نحدد القيمة 12 للمتغير أ) ب: = 7 ؛ (نحدد القيمة 7 للمتغير ب) P: = 2 * (أ + ب) ؛ (يتم تعيين قيمة التعبير إلى P) الكتابة ("P =" ، P) ؛ (اعرض قيمة P) النهاية. (نهاية البرنامج)
  11. 11. يتعامل البرنامج في عمله مع البيانات. يتم تعيين بعض البيانات قبل بدء البرنامج ، وبعد أن يبدأ ، يحتفظون بقيمهم ثابتة طوال مدة البرنامج. هذه ثوابت. قد تتغير البيانات الأخرى أثناء تنفيذ البرنامج. يطلق عليهم المتغيرات.
  12. 12.  الفرق بين المتغير والثابت واضح تمامًا: أثناء تنفيذ البرنامج ، يمكن تغيير قيمة المتغير ، لكن لا يمكن تغيير قيمة الثابت. المتغيرات ، المتغيرات ، الثوابت ، ثوابت البيانات
  13. 13. نعني بالمتغير خلية ("مربع") حيث يستطيع الكمبيوتر كتابة ("إضافة") البيانات. بالخلية ، نعني حقًا "قطعة من الذاكرة" تخزن المعلومات. لاستخدام المعلومات المخزنة في خلية ، يجب أن يكون لكل خلية اسمها الخاص أو معرف ، كما يقال غالبًا. أ ب مجموع ٥ ٣٨
  14. 14. المعرفات. الأسماء (المعرفات) هي عناصر اللغة - الثوابت ، والتسميات ، والأنواع ، والمتغيرات ، والإجراءات ، والوظائف ، والوحدات ، والأشياء.  المعرف هو سلسلة من الأحرف والأرقام والشرطات السفلية التي تبدأ بحرف أو شرطة سفلية ولا تحتوي على مسافات.
  15. 15. يمكن أن يحتوي الاسم على أي عدد من الأحرف ، لكن 63 حرفًا مهمة.  لا يجوز في لغة باسكال استخدام الكلمات الوظيفية والأسماء القياسية كأسماء تستخدم لتسمية الثوابت والأنواع والإجراءات والوظائف والملفات. أمثلة لأسماء لغة PASCAL: A b12 r1m SIGMA gamma I80_86
  16. 16. في باسكال ، يتم تجاهل الفرق بين الأحرف الصغيرة والكبيرة ، وبالتالي فإن الاسمين NaMe والاسم متماثلان.
  17. 17. الكلمة الوظيفية هي كلمة في لغة باسكال لها معنى دلالي معين لا يمكن تغييره. في بعض الأحيان يطلق عليه كلمة رئيسية.
  18. 18. كلمات الخدمة (المحجوزة): مكتبة مجموعة الصادرات المطلقة للمكتبة الخارجية MOD SHL والاسم FAR SHR ARRAY FILE NIL STRING ASM قريبًا من ذلك الحين للمجمع إلى الأمام لعدم بدء تشغيل كائن وظيفي نوع الحالة يجب إدخالها من تكوين الوحدة إذا تم تنفيذ أو حتى تنفيذ الإنشاء إجراء مؤشر VAR DIV الخاص الافتراضي يقوم بتنفيذ برنامج موروث أثناء تضمينه بشكل عام مع سجل واجهة آخر XOR END INTERRUPT REPEAT EXPORT LABEL RESIDENT
  19. 19. لا يمكن استخدام المسافات داخل الأحرف المزدوجة والكلمات المحجوزة. هناك أسماء تسمى المعيار. الخطيئة cos real true على عكس الكلمات الوظيفية ، يمكن للمبرمج إعادة تعريف معنى الأسماء القياسية.
  20. 20. هذا مؤشر للمترجم على مقدار الذاكرة التي سيحتفظ بها لمتغيرات برنامجنا.  في البرنامج المترجم ، يتم تخصيص مساحة في الذاكرة لجميع المتغيرات ، ويتم تعيين قيم صفرية لجميع المتغيرات. يجب الإعلان عن جميع المتغيرات المستخدمة في البرنامج في قسم إعلان المتغير بعد الكلمة المحجوزة var. إعلان المتغيرات
  21. 21- هناك أنواع مختلفة من البيانات ...
  22. 22. أنواع البيانات أسماء الأنواع القياسية هي معرفات محددة مسبقًا وصالحة في أي وقت في البرنامج. يتم وصفها في وحدة النظام القياسية ، والتي يتم تضمينها في قائمة الوحدات النمطية المستخدمة بشكل افتراضي. الأنواع المعرفة من قبل المستخدم هي أنواع إضافية (بسيطة ومنظّمة) يعلنها المستخدم.
  23. 23. أنواع البيانات القياسية 1. مجموعة من أنواع الأعداد الصحيحة (Shortint ، Integer ، Longint ، Byte ، Word) ؛ 2. مجموعة من الأنواع الحقيقية (مفرد ، حقيقي ، مزدوج ، ممتد ، مركب) ؛ 3. منطقية (أنواع منطقية) (Boolean، ByteBool، WordBool، LongBool)؛ 4. حرف (شار) ؛ 5. سلسلة (سلسلة) ؛ 6. مؤشر (المؤشر) ؛ 7. نوع النص (نص).
  24. 24. مجموعة من أنواع الأعداد الصحيحة اسم النوع نوع القيم المطلوبة الذاكرة عدد صحيح قصير ذو إشارة قصيرة -128 .. 127 1 بايت عدد صحيح ذو إشارة عدد صحيح 32768 .. 32767 2 بايت عدد صحيح طويل موقَّع Longint -2147483648 .. 2147483647 4 بايت بدون إشارة قصير عدد صحيح بايت 0 .. 255 1 بايت عدد صحيح بدون إشارة كلمة 0 .. 65535 2 بايت
  25. 25 Varb: بايت ؛ الخلاصة ، العد: عدد صحيح ؛ التصريح عن متغيرات من نوع عدد صحيح ملخص: = -365 ؛ يستخدم
  26. 26. عادة ما يتم كتابة الأرقام في PASCAL بالتدوين العشري. يمكن حذف العلامة الإيجابية للرقم. الأعداد الصحيحة مكتوبة بصيغة بدون فاصلة عشرية ، على سبيل المثال: 217-45 8954 +483
  27. 27. تحدد مجموعة الأنواع الحقيقية البيانات التي يتم تنفيذها بواسطة مجموعة فرعية من الأرقام الحقيقية. Var A: حقيقي ؛ تبدأ ... أ: = 0.65 ؛ … نهاية.
  28. 28. اسم النوع النوع نطاق القيم عدد أرقام الجزء العشري الحجم (بايت) العدد الحقيقي للدقة الفردية Real 2.9e-39 .. 1.7e + 38 11 6 رقم حقيقي مفرد 1.5e-45 .. 3.4e + 38 7 4 العدد الحقيقي للدقة المزدوجة Double 5.0e-324 .. 1.7e + 308 15 8 رقم حقيقي دقيق موسع ممتد 3.4e-4932 .. 1.1e + 4932 19 10 Comp Real Integer -9.2e + 18 .. 9.2e +18 19 8
  29. 29. الأعداد الحقيقية تكتب في شكل مع فاصلة عشرية أو في الشكل باستخدام الترتيب العشري ، والذي يمثله الحرف E: 28.6 0.65 -0.018 4.0 5E12 -1.72E9 73.1E-16
  30. 30. نوع البيانات المنطقية Boolean يتوافق مع المعرف Boolean. المتغيرات المنطقية لها حجم 1 بايت ويمكن أن تحتوي على قيم TRUE أو FALSE. القيمة FALSE تقابل 0 ، أي رقم بخلاف الصفر يعتبر TRUE. زر Var ، علم: منطقي ؛ زر البدء: = صحيح ؛
  31. 31. نوع الحرف يتوافق مع المعرف القياسي Char. يمكن أن تأخذ المتغيرات والثوابت من نوع الحرف قيمًا من مجموعة أحرف رمز ASCII. رمز Var ، bukva ، z: char ؛ تعريف المتغيرات الرمزية
  32. 32. نوع السلسلة يتوافق مع المعرف القياسي String. VarS: سلسلة ؛ (سلسلة من 0 إلى 255 حرفًا) S2: String ؛ (سلسلة من 5 أحرف)
  33. 33. سلسلة الأحرف هي سلسلة من الأحرف من مجموعة أحرف ASCII المضمنة في علامتي اقتباس مفردتين. الجمل في PASCAL هي سلسلة من الأحرف المكتوبة بين الفاصلات العليا. إذا كان من الضروري استخدام الفاصلة العليا نفسها كحرف ذي معنى في سلسلة ، فيجب كتابة فاصلتين. أمثلة على السلاسل: "STRING" "STRING" "AD" "UTANT"
  34. يُشار إلى نوع الحرف ، بالإضافة إلى الأعداد الصحيحة والأنواع المنطقية ، بما يسمى بالأنواع الترتيبية.  مجموعة القيم الصالحة لأي نوع ترتيبي هي تسلسل مرتب ، كل عنصر له رقمه الترتيبي الخاص (يبدأ من 0).
  35. 35. ترجع الدالة Ord الرقم الترتيبي لهذه القيمة في إعلان النوع. Ord (2) = 2، Ord ('0') = 48 Writeln (ord ('e')) ؛ اكتب إن (أمر ('9')) ؛
  36. 36. جدول ترميز ASCII ASCII (الكود القياسي الأمريكي لتبادل المعلومات ، وضوحا "أسكي") هو ترميز كمبيوتر لتمثيل الأبجدية اللاتينية ، والأرقام العربية ، وبعض علامات الترقيم ، وأحرف التحكم. تم تقديمه من قبل المعهد الأمريكي للمعايير ANSI.

شريحة 1

لغة البرمجة باسكال بوجدانوف فلاديمير عروض تقديمية مجانية http://prezentacija.biz/

الشريحة 3

ابتكر نيكلاوس ويرث لغة باسكال في 1968-1969 بعد مشاركته في أعمال لجنة تطوير معايير اللغة Algol-68. تمت تسمية اللغة على اسم عالم الرياضيات والفيزيائي والكاتب والفيلسوف الفرنسي بليز باسكال ، الذي ابتكر أول آلة ميكانيكية في العالم تضيف رقمين. يرجع تاريخ أول إصدار لـ Wirth حول اللغة إلى عام 1970 ، حيث قدم اللغة ، وأشار المؤلف إلى أن الهدف من إنشائها - بناء لغة صغيرة وفعالة تعزز أسلوب برمجة جيد باستخدام البرمجة المهيكلة والبيانات المنظمة. كان عمل ويرث اللاحق يهدف إلى إنشاء لغة برمجة نظام تعتمد على باسكال ، مع الحفاظ على القدرة على إجراء دورة منهجية وشاملة للتدريب المهني على البرمجة على أساسها. نتيجة هذا العمل هي لغة Modula-2.

الشريحة 4

UCSD Pascal المقال الرئيسي: UCSD Pascal في عام 1978 ، تم تطوير UCSD p-System في جامعة كاليفورنيا في سان دييغو ، والتي تضمنت منفذًا لمترجم Wirth من لغة Pascal إلى كود p محمول ، محرر شفرة المصدر ، a نظام الملفات ، وما إلى ذلك ، ونفذ أيضًا عددًا كبيرًا من امتدادات لغة باسكال ، مثل الوحدات النمطية ، وسلاسل الأحرف متغيرة الطول ، وتوجيهات الترجمة ، ومعالجة أخطاء الإدخال / الإخراج ، والوصول إلى الملفات بالاسم ، والمزيد. بعد ذلك ، استندت التطبيقات الرئيسية للغة باسكال إلى هذه اللهجة.

الشريحة 5

Object Pascal] المقال الرئيسي: Object Pascal في عام 1986 ، طورت Apple امتدادًا كائنًا للغة باسكال ، مما أدى إلى Object Pascal. تم تطويره من قبل مجموعة Larry Tesler ، التي تشاور مع Niklaus Wirth.

الشريحة 6

في عام 1983 ، ظهرت النسخة الأولى من بيئة التطوير المتكاملة Turbo Pascal في بورلاند ، بناءً على تطبيق باسكال الذي يحمل نفس الاسم. في عام 1989 ، تمت إضافة ملحق لغة الكائن إلى الإصدار 5.5 من Turbo Pascal. تمت إعادة تسمية أحدث إصدار (7.0) إلى Borland Pascal. تم استعارة مرافق الكائن من شركة آبل أوبجكت باسكال ، وهناك عدد قليل جدًا من الاختلافات اللغوية بين Object Turbo Pascal 5.5 و Object Pascal من Apple. في نفس الوقت تقريبًا مع Borland ، أصدرت Microsoft نسختها من لغة Pascal الموجهة للكائنات. و] لم يتم استخدام هذا الإصدار من Pascal على نطاق واسع. أدى التطوير الإضافي لتطبيق باسكال من بورلاند إلى ظهور متغير Object Pascal من بورلاند ، لاحقًا ، في سياق تطوير بيئة برمجة دلفي ، التي حصلت على نفس الاسم.

شريحة 7

من الخطوات المهمة في تطوير اللغة ظهور تطبيقات مجانية لـ Pascal l و GNU Pascl ، والتي لم تقتصر على استيعاب ميزات العديد من اللهجات الأخرى للغة فحسب ، بل ضمنت أيضًا إمكانية نقل البرامج المكتوبة بها على نطاق واسع للغاية (على سبيل المثال) ، يدعم GNU Pascal أكثر من 20 نظامًا أساسيًا مختلفًا ، تحت أكثر من 10 أنظمة تشغيل مختلفة ، يوفر Free Pascal أوضاع توافق خاصة مع العديد من اللهجات الشائعة للغة ، مثل Turbo Pascal (التوافق الكامل) و Delphi وغيرها). منذ دلفي 2003 ، تم إنشاء تطبيق لغة لمنصة الشبكة ، على الرغم من استمرار المطورين في استخدام دلفي من الإصدارات السابقة. لا يُعرف سوى القليل حاليًا عن التطوير التجاري في Free Pascal و GNU Pascal و TMT Pascal. بالإضافة إلى ذلك ، طورت الجامعة الفيدرالية الجنوبية PascalABC.NET - لغة برمجة باسكال ، والتي تتضمن معظم ميزات لغة دلفي ، بالإضافة إلى عدد من امتداداتها الخاصة. يعتمد على نظام Microsoft.NT الأساسي ويحتوي على جميع ميزات اللغة الحديثة تقريبًا: الفئات ، التحميل الزائد على المشغل ، الواجهات ، معالجة الاستثناءات ، الفئات العامة والروتينات الفرعية ، تجميع البيانات المهملة ، تعبيرات لامدا.

شريحة 8

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

شريحة 9

ومع ذلك ، في البداية ، كان للغة عدد من القيود: استحالة تمرير المصفوفات ذات الطول المتغير للوظائف ، والافتقار إلى الوسائل العادية للعمل مع الذاكرة الديناميكية ، ومكتبة الإدخال / الإخراج المحدودة ، والافتقار إلى وسائل توصيل الوظائف المكتوبة بلغة أخرى اللغات ، وعدم وجود أدوات تجميع منفصلة ، وما إلى ذلك. تم إجراء تحليل مفصل لأوجه القصور في لغة باسكال في ذلك الوقت بواسطة براين كيرنيغان في مقال "لماذا باسكال ليست لغة البرمجة المفضلة لدي" (ظهر هذا المقال في وقت مبكر الثمانينيات ، عندما تحررت لغة Modula-2 ، المنحدرة من باسكال ، من معظم عيوبها ، وكذلك لهجات باسكال الأكثر تطورًا). تم تصحيح بعض أوجه القصور في Pascal في معيار ISO لعام 1982 ، وعلى وجه الخصوص ، ظهرت المصفوفات المفتوحة في اللغة ، مما جعل من الممكن استخدام نفس الإجراءات لمعالجة المصفوفات أحادية البعد ذات الأحجام المختلفة.

الشريحة 10

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

الشريحة 11

أشهر تطبيق لـ Pascal ، والذي ضمن التوزيع الواسع للغة وتطويرها ، هو Borland's Turbo Pascal ، والذي نما بعد ذلك إلى كائن Pascal لـ DOS (بدءًا من الإصدار 5.5) و Windows ثم إلى دلفي ، حيث كانت امتدادات اللغة الهامة أدخلت. أصبحت لهجات باسكال المستخدمة في Turbo Pascal لـ DOS و Delphi for Windows شائعة بسبب عدم وجود تطبيقات تجارية ناجحة أخرى.

الشريحة 12

بعد أن بدأ استخدام باسكال في عام 1970 ، وظهور التطبيقات التي اختلفت ليس فقط في الإضافات ولكن أيضًا في النحو ، أثيرت مسألة توحيد اللغة. تم تطوير معيار اللغة من قبل نيكلاوس ويرث في عام 1974 مع كاثلين جنسن. في وقت لاحق ، تم اعتماد المعيار الدولي من ISO والمعيار الأمريكي من ANSI. في الوقت الحالي ، هناك ثلاثة معايير مختلفة تمامًا: Unextended Pascal (الأصلي) ، Extended Pascal (ممتد) ، Object-Oriented Extensions إلى Pascal (امتداد Pascal الموجه للكائنات).

الشريحة 13

الشريحة 14

بناء الجملة واللغة تشكل باسكال ، في شكلها الأصلي ، لغة إجرائية بحتة وتتضمن العديد من التراكيب والتركيبات المشابهة لـ Algol مع كلمات محجوزة مثل if ، ثم ، و else ، و while ، و for ، وما إلى ذلك. ومع ذلك ، تحتوي باسكال أيضًا على عدد كبير من ميزات لهيكلة المعلومات والتجريدات التي لم تكن موجودة في Algol-60 الأصلي ، مثل تعريفات النوع ، والسجلات ، والمؤشرات ، والتعداد ، والمجموعات. كانت هذه التركيبات موروثة أو مستوحاة جزئيًا من لغات Simula-67 ، Algol-64 ، التي أنشأها Niklaus Wirth AlgolW (الإنجليزية) الروسية. واقترحه Hoare. في اللهجات الحديثة (Free Pascal) ، تتوفر عمليات مثل التحميل الزائد للمشغل والوظيفة.

الشريحة 15

برنامج ع ؛ تبدأ النهاية. البرنامج لا يفعل شيئا ويحتوي على كتلة فارغة من البيانات. مثال على برنامج يقوم بطباعة السلسلة "Hello، world!":

الشريحة 16

ابدأ الكتابة ("مرحبًا ، أيها العالم!") ؛ (عامل إخراج الخط) النهاية.

الشريحة 17

الشريحة 18

الشريحة 19

الشريحة 20

في باسكال ، يُسمح بالعمليات الأحادية على أنواع الأعداد الصحيحة (بايت ، قصير ، كلمة ، عدد صحيح ، لون طويل ونطاقاتها). العمليات المنطقية على وحدات البت: يمكن إجراء العمليات المنطقية التي تمت مناقشتها مسبقًا على بتات من معاملين صحيحين: not و ، أو xor. يتمثل الاختلاف بين العمليات الأحادية والعمليات المنطقية في أن العمليات التي تتم باستخدام أسلوب أحادي المعامل (bitwise) يتم إجراؤها على وحدات البت الفردية للمعاملات ، وليس على قيمتها في التمثيل العشري (عادةً). يتم تمييز مفهوم أنواع البيانات الترتيبية (الترتيبية) ، وهي تشمل أنواع الأعداد الصحيحة (موقعة وغير موقعة) ، ومنطقية (منطقية) ، وحرف (char) ، وأنواع تعداد وأنواع نطاقات. يتم تحديد الأنواع الترتيبية من خلال عدد صحيح (رمز) ، والذي يمكن الحصول عليه باستخدام وظيفة "أمر". يتم تنفيذ جميع العمليات التي يتم إجراؤها على الأنواع الترتيبية على أكوادها.

الشريحة 21

الشريحة 22

بالنسبة للأنواع الترتيبية ، فإن العمليات inc ، dec ، succ ، pred ، ord ، عمليات المقارنة (=>

الشريحة 23

الشريحة 24

الشريحة 25

في Jensen و Wirth's Pascal ، تم تمثيل الأوتار كمصفوفات مليئة بالأحرف ؛ لذلك ، كان لديهم طول ثابت وعادة ما يتم تبطينهم بهذا الطول بمسافات. في باسكال الحديث ، للعمل مع السلاسل ، يتم استخدام سلسلة النوع المضمنة ، والتي تدعم التسلسل (+) والمقارنة (> =

الشريحة 26

تم تعريف سلسلة النوع [n] أو السلسلة ببساطة في لهجات لغة 1970-1990 كمصفوفة من مصفوفة الأحرف من الحرف (n افتراضيًا إلى 80 في UCSD Pascal و 255 في Turbo / Borland Pascal) ، الحرف الفارغ يعمل الرمز في هذا التمثيل على تعيين طول السلسلة ، على التوالي ، يمكن أن تحتوي السلسلة على حجم أقصى يبلغ 255 حرفًا. بشكل افتراضي ، في Delphi و FreePascal ، يتم استخدام AnsiString كسلسلة ، يتم تخصيص الذاكرة لها ديناميكيًا وتحريرها بواسطة المترجم ، والحد الأقصى لحجم السلسلة في التطبيقات الحالية هو 2 غيغابايت. بالإضافة إلى ذلك ، في Delphi و Free Pascal ، يمكن استخدام نوع WideString كسلسلة ، حيث يتم استخدام تمثيل 16 بت للأحرف في ترميز UCS-2 ، بينما لا توجد أدوات للتحويل من سلاسل أحادية البايت إلى سلاسل متعددة البايت والعودة إلى مكتبة اللغة القياسية.

الشريحة 27

يمكن تحديد أنواع جديدة من الأنواع الموجودة: النوع (قسم تعريف النوع) x = عدد صحيح ؛ ص = س ؛

الشريحة 28

علاوة على ذلك ، يمكن إنشاء الأنواع المركبة من الأنواع الأولية: النوع (قسم إعلان النوع) أ = مصفوفة عدد صحيح ؛ (تعريف المصفوفة) ب = سجل (تعريف تسجيلة) x: عدد صحيح ؛ ص: شار ؛ نهاية؛ ج = ملف أ ؛ (تعريف الملف)

الشريحة 29

تنقسم أنواع الملفات في باسكال إلى ملفات مكتوبة ، ونصوص ، وملفات بدون أنواع. كما هو موضح في المثال أعلاه ، فإن الملفات المكتوبة في باسكال هي سلسلة من العناصر من نفس النوع. لكل ملف ، يوجد متغير مؤشر مؤقت ، يُشار إليه بواسطة f ^. تؤدي إجراءات get (للقراءة) ووضع (للكتابة) إلى تحريك المؤشر إلى العنصر التالي. يتم تنفيذ القراءة بحيث تكون القراءة (f ، x) هي نفسها get (f) ؛ x: = f ^. وفقًا لذلك ، يتم تنفيذ الكتابة بطريقة تجعل الكتابة (f ، x) هي نفسها f ^: = x ؛ ضع (و). يتم تعريف نص الملفات النصية على أنه امتداد لملف من نوع char ، بالإضافة إلى العمليات القياسية على الملفات المكتوبة (قراءة وكتابة حرف) ، تسمح بإدخال الأحرف وإخراجها إلى ملف بجميع أنواع البيانات ، على غرار إدخال وحدة التحكم- انتاج.

الشريحة 30

يتم التصريح عن الملفات التي لا تحتوي على أنواع كمتغيرات من نوع الملف. معهم ، من الممكن تنفيذ عمليات إدخال / إخراج غير نمطية بايت بايت لعدة كتل من البايت بطول محدد من خلال مخزن مؤقت ، ولهذا الغرض يتم استخدام إجراءات خاصة للقراءة والكتابة (امتداد UCSD).

الشريحة 31

الشريحة 32

الشريحة 33

الشريحة 34

الشريحة 35

تدعم مؤشرات باسكال استخدام المؤشرات (اكتب ^ اكتب ومؤشر غير مكتوب): اكتب a = ^ b؛ ب = سجل x: عدد صحيح ؛ ص: شار ؛ ض: أ ؛ نهاية؛ var pointer_to_b: أ ؛

الشريحة 36

هنا المتغير pointer_to_b هو مؤشر لنوع البيانات ب ، وهو سجل. يمكن تحديد نوع المؤشر المكتوب قبل الإعلان عن النوع الذي يشير إليه. هذا استثناء للقاعدة التي تقضي بوجوب التصريح عن أي شيء قبل استخدامه. أتاح إدخال هذا الاستثناء تنظيم التعاريف المتكررة لهياكل البيانات ، بما في ذلك القوائم الخطية والمكدسات وقوائم الانتظار ، بما في ذلك مؤشر لإدخال في وصف هذا الإدخال (انظر أيضًا: مؤشر فارغ - لا شيء). يحتوي المؤشر المكتوب على عملية إلغاء مرجع (بناء الجملة الخاص به: المؤشر ^). لإنشاء إدخال جديد وتخصيص القيمة 10 والحرف A لحقلي x و y فيه ، تكون العبارات التالية مطلوبة:

شريحة 37

جديد (pointer_to_b) ؛ (تخصيص المؤشر) pointer_to_b ^ .x: = 10 ؛ (مرجع المؤشر والوصول إلى حقل التسجيل) pointer_to_b ^ .y: = "A"؛ pointer_to_b ^ .z: = لا شيء ؛ ... التخلص (pointer_to_b) ؛ (تحرير الذاكرة من تحت المؤشر)

الشريحة 38

يمكنك أيضًا استخدام العبارة with للإشارة إلى الحقول الموجودة في السجلات والكائنات ، كما هو موضح في المثال: new (pointer_to_b)؛ بـ pointer_to_b ^ هل تبدأ x: = 10 ؛ ص: = "أ" ؛ ض: = لا شيء ؛ ... التخلص (pointer_to_b) ؛

شريحة 39

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

الشريحة 40

Pascal هي لغة برمجة منظمة ، مما يعني أن البرنامج يتكون من عبارات قياسية فردية يتم تنفيذها بالتتابع ، بشكل مثالي دون استخدام الأمر GOTO.

الشريحة 41

في حين ، من أجل ، إذا ، عبارات الحالة ، يمكن استخدام الكتلة باعتبارها تعليمة منفذة. مثل هذا البناء ، وهو عبارة عادية أو كتلة ، يسمى بيان مركب. في Turbo Pascal ، للتحكم في عملية التجميع ، توجد توجيهات يتم وضعها في التعليقات وتسمح لك بالتبديل بين أوضاع تشغيل المترجم - على سبيل المثال ، تمكين وتعطيل عمليات التحقق من عمليات الإدخال / الإخراج ، والتجاوزات:

الشريحة 42

في باسكال ، تنقسم البرامج الفرعية إلى إجراءات ووظائف: من الناحية النحوية ، تتكون الإجراءات والوظائف من رأس (يحتوي على إجراء أو وظيفة الكلمات الرئيسية ، وهو اسم يمكن أن يتبعه وصف للمعلمات التي سيتم تمريرها بين قوسين ، ونوع إرجاع ، مفصولة بحرف نقطتين للوظائف ، وفاصلة منقوطة للإجراءات) ، يتبع الرأس النص متبوعًا بالحرف ؛.

الشريحة 43

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

الشريحة 44

قبل ظهور الوحدات النمطية المرتبطة في شكلها الحديث ، كانت بعض تطبيقات Pascal تدعم الوحدات النمطية من خلال آلية لتضمين ملفات الرأس ، على غرار آلية #include في C: باستخدام توجيه خاص منسق كـ pragma ، على سبيل المثال ، ($ INCLUDE " file ") ، تم تضمين محتويات الملف المحدد مباشرة في نص البرنامج بصيغته النصية الأصلية. وبالتالي ، كان من الممكن تقسيم كود البرنامج إلى أجزاء كثيرة ، لسهولة التحرير ، ولكن قبل التجميع ، تم دمجها تلقائيًا في ملف برنامج واحد ، والذي تمت معالجته في النهاية بواسطة المترجم. هذا التنفيذ للنمطية بدائي وله العديد من العيوب الواضحة ، لذلك تم استبداله بسرعة. تطبيقات Pascal الحديثة (بدءًا من UCSD Pascal). يمكن أن تكون وحدات البرنامج من نوعين: وحدة البرنامج الرئيسية ، والتي ، كالعادة ، تبدأ ببرنامج الكلمات الرئيسية والتي يحتوي جسمها على كود يتم تشغيله بعد تحميل البرنامج في الذاكرة ، والوحدات النمطية المساعدة التي تحتوي على أنواع وثوابت ومتغيرات وإجراءات والوظائف المعدة للاستخدام في الوحدات النمطية الأخرى ، بما في ذلك الوحدة الرئيسية.

الشريحة 45

الهيكل العام للمكون الإضافي في باسكال هو كما يلي: unit UnitName1؛ الواجهة ... التنفيذ ... البدء (يمكن حذفها - تُستخدم إذا دعت الحاجة إلى وضع عبارات التهيئة) ... النهاية.

الشريحة 46

هناك خيار آخر ممكن أيضًا: unit UnitName2؛ الواجهة ... التنفيذ ... التهيئة ... الإنهاء .... النهاية.

الشريحة 47

على عكس البرنامج الرئيسي ، يبدأ ملف الوحدة بالكلمة الأساسية UNIT متبوعة باسم الوحدة والفاصلة المنقوطة. تتطلب التطبيقات الحديثة عادةً أن يكون اسم الوحدة النمطية هو نفسه اسم ملف التعليمات البرمجية المصدر الذي يحتوي على الوحدة النمطية. تحتوي الوحدة النمطية على ثلاثة أقسام: قسم الواجهة ، وقسم التنفيذ ، وهيئة الوحدة النمطية.

الشريحة 48

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

الشريحة 49

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

شريحة 50

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

الشريحة 51

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

الشريحة 52

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

الشريحة 53

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

الشريحة 54

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

شريحة 55

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

الشريحة 56

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

شريحة 57

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

شريحة 58

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

شريحة 59

البرمجة الموجهة للكائنات (OOP) هي تقنية لإنشاء برامج معقدة تعتمد على تمثيل البرنامج كمجموعة من الكائنات ، كل منها هو مثيل لفئة معينة ، وتشكل الفئات تسلسلاً هرميًا مع وراثة الممتلكات.

الشريحة 60

الميزة الرئيسية لـ OOP هي تقليل عدد المكالمات بين الوحدات وتقليل كمية المعلومات المنقولة بين الوحدات. يتم تحقيق ذلك من خلال توطين البيانات بشكل أكثر اكتمالاً وتكاملها مع إجراءات المعالجة.

الشريحة 61

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

شريحة 62

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

الشريحة 63

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

الشريحة 64

يتم دعم الميراث الفردي ، تعدد الأشكال للفئة ، آلية الطريقة الافتراضية (كلمة افتراضية بعد رأس طريقة الفئة). هناك أيضًا طرق ديناميكية (في TP يتم وصفها عن طريق إضافة عدد صحيح بعد الكلمة Virtual وتستخدم بشكل أساسي لمعالجة الرسائل ؛ في Delphi و FreePascal ، يتم استخدام كلمة message لهذا الغرض ، ويتم استخدام كلمة dynamic لإنشاء عادي الأساليب الديناميكية) ، والتي تختلف في استخدام أقل للذاكرة وسرعة اتصال أقل بسبب عدم وجود ازدواجية في الأساليب الديناميكية للأسلاف في VMT للطفل (ومع ذلك ، لا تميز FreePascal بين الطرق الافتراضية والديناميكية). في دلفي ، نفذت FPC التحميل الزائد للعمليات ، والطرق المجردة ، والتوجيهات الخاصة والمحمية والعامة والمنشورة (افتراضيًا ، يكون أعضاء الفصل عامًا):

شريحة 65

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

الشريحة 66

تم تقديم واجهات في دلفي لدعم تقنية COM الخاصة بـ Microsoft. لا تحتاج الفئات (الفئة) ، بخلاف الفئات العادية (الكائن) ، إلى تخصيص / إلغاء تخصيص صريح للذاكرة ، حيث يتم تخصيص الذاكرة لها ديناميكيًا بواسطة مُنشئ يُسمى Create ، يُطلق عليه اسم الفئة ، ويتم إصداره عند استدعاء أداة التدمير المسمى Destroy (هم قد يكون لها أسماء أخرى). متغير من هذه الفئة ، على عكس فئة الكائن ، يخزن عنوان مثيل الفئة في الذاكرة ، ويتم استخدام القيمة الصفرية للإشارة إلى مرجع فارغ ، وبالتالي ، لتحرير كائن ، يتم تحديد طريقة مجانية خاصة في TObject ، والتي يتحقق من الإشارة إلى لا شيء ويستدعي Destroy الظاهري المدمر. سيبدو الكود الذي يستخدم مثل هذه الفئات كما يلي:

شريحة 67



أحب المقال؟ أنشرها