ضروري
بيئة برمجة PascalABC. NET أو PascalTurbo
تعليمات
الخطوة 1
لذا ، أولاً ، لنفتح البرنامج. دعونا ننشئ ملفًا جديدًا ونحدد الإضافات. في هذه الحالة ، نحتاج إلى وحدة نمطية للعمل مع وحدة التحكم - CRT.
لهذا سنكتب:
الاستخدامات
CRT ؛
الخطوة 2
دعنا نشير إلى المتغيرات i و s و m - متغيرات من النوع الحقيقي.
فار
أنا ، ق ، م: حقيقي ؛
الخطوه 3
لبدء البرنامج ، اكتب:
يبدأ
وسنشير إلى عنوان نافذة وحدة التحكم:
SetWindowTitle ('Stopwatch') ؛
الخطوة 4
يعيّن إجراء TextColor لونًا للنص ، وتعرض عبارة Write النص على الشاشة:
TextColor (LightGreen) ؛
WriteLn ('اضغط Enter لبدء ساعة التوقيف') ؛
WriteLn ('اضغط مرة أخرى للإيقاف') ؛
اكتب ("انقر مرة أخرى للبدء من جديد") ؛
ينتقل Ln المنتهي إلى السطر التالي.
الخطوة الخامسة
يقوم عامل التشغيل ReadLn بإدخال القيم من لوحة المفاتيح ، ولكنه في هذه الحالة ينتظر فقط أن يقوم المستخدم بالضغط على Enter:
قراءة
الخطوة 6
نصنع حلقة لا نهاية لها:
بينما (صحيح) تفعل
يبدأ
بينما (صحيح) تبدأ الإنشاء تترجم على النحو التالي: while (condition) do (). لماذا تبدأ هنا؟
في هذه الحالة ، نحتاج إلى عامل مركب ، مما يعني أنه في حين أن الشرط صحيح ، يتم تنفيذ العديد من العوامل. إذا لم تكن البداية ، فبعد الوقت ، تم تنفيذ جملة واحدة فقط ، مما قد يؤدي إلى تشغيل البرنامج بشكل غير صحيح. لإنهاء جملة while في النهاية ، نكتب end.
الخطوة 7
الآن دعنا نعيد ضبط العداد:
أنا: = 0 ؛
الخطوة 8
يتم ترجمة العبارة التالية على النحو التالي: حتى يتم الضغط على مفتاح do ().
بينما لا يتم الضغط عليه
يبدأ
عامل ClrScr يمسح الشاشة:
ClrScr.
الخطوة 9
قمنا بتعيين الشرط: إذا كانت الثواني أكثر من 60 وأقل من 3600 (هذا ضروري بحيث عندما يكون الوقت أكثر من ساعة ، فإن البرنامج يطبع فقط ما هو بعد الثالث إذا) ثم:
إذا (i> 60) و (i <3600) فابدأ
المتغير م (دقائق) يساوي: ثانية مقسومة على 60 ومقربة للأمام.
م: = Int (i / 60) ؛
والمتغير s (الثواني بدون دقائق) يساوي: كل الثواني مطروحًا منها الدقائق مضروبًا في 60.
s: = أنا - م * 60 ؛
الخطوة 10
تكتب عبارة الكتابة عدد الدقائق والثواني التي مرت ، وتنتهي جملة النهاية عمل البدء باتباع شرط if:
اكتب (m، 'minutes (s) and'، s: 1: 2، 'seconds (s)')
نهاية؛
الوظيفة: 1: 2 تعني أنه يجب كتابة الثواني بمنزلتين عشريتين.
الخطوة 11
إذا كانت الثواني أقل من 60 ، فاكتب فقط عدد الثواني التي مرت مع منزلتين عشريتين:
إذا كنت أقل من 60 ثم
اكتب ("، i: 1: 2،" seconds (a / s) ") ؛
الخطوة 12
إذا كانت الثواني أكثر من 3600 (أي أكثر من ساعة) ، فحينئذٍ:
إذا كنت> 3600 ثم ابدأ
م: = Int (i / 60) ؛
s: = أنا - م * 60 ؛
ch: = Int (م / 60) ؛
م: = م - الفصل * 60 ؛
اكتب (ch، 'hour (s)'، m، 'minutes (s) and'، s: 1: 2، 'seconds (s)') ؛
نهاية؛
الخطوة 13
لذلك ، كتب البرنامج أن 0 ثانية مرت ، والآن يزيد العداد i بمقدار 10 مللي ثانية ، وبما أن البرنامج يقوم بكل شيء على الفور ، فإننا نتأخر في نفس الوقت:
أنا: = أنا + 0.01 ؛
تأخير (10) ؛
بعد ذلك ، نضع نهاية العبارة while (not keypressed):
نهاية؛
إذا ضغط المستخدم على مفتاح Enter ، فسينتظره البرنامج حتى يضغط عليه مرة أخرى لبدء ساعة الإيقاف مرة أخرى:
قراءة
قراءة
ليس من قبيل المصادفة أننا قمنا بتعيين العداد على صفر بعد العبارة while (true) ، لأنه عندما يضغط المستخدم على Enter مرة ثانية ، سيبدأ البرنامج من هناك ، ويعيد ضبط العداد ويبدأ العد مرة أخرى.
بعد ذلك ، ننتهي أثناء البرنامج بأكمله:
نهاية؛
الخطوة 14
هنا البرنامج الكامل:
الاستخدامات
CRT ؛
فار
أنا: حقيقي ؛
s: حقيقي ؛
م: حقيقي ؛
ch: حقيقي ؛
يبدأ
SetWindowTitle ('Stopwatch') ؛
TextColor (LightGreen) ؛
WriteLn ('اضغط Enter لبدء ساعة التوقيف') ؛
WriteLn ('اضغط مرة أخرى للإيقاف') ؛
اكتب ("انقر مرة أخرى للبدء من جديد") ؛
قراءة
بينما (صحيح) تفعل
يبدأ
أنا: = 0 ؛
أثناء عدم الضغط على مفتاح القيام به
يبدأ
ClrScr.
إذا (i> 60) و (i <3600) فابدأ
م: = Int (i / 60) ؛
s: = أنا - م * 60 ؛
اكتب (m، 'minutes (s) and'، s: 1: 2، 'seconds (s)')
نهاية؛
إذا كنت أقل من 60 ثم
اكتب ("، i: 1: 2،" seconds (a / s) ") ؛
إذا كنت> 3600 ثم ابدأ
م: = Int (i / 60) ؛
s: = أنا - م * 60 ؛
ch: = Int (م / 60) ؛
م: = م - الفصل * 60 ؛
اكتب (ch، 'hour (s)'، m، 'minutes (s) and'، s: 1: 2، 'seconds (s)') ؛
نهاية؛
أنا: = أنا + 0.01 ؛
تأخير (10) ؛
نهاية؛
قراءة
قراءة
نهاية؛
نهاية.
الخطوة 15
اتضح أنه ليس لطيفًا جدًا ، لكن البرنامج يعمل بشكل صحيح!