Procedures and BYREF · الإجراءات و BYREF
This page needs a recent browser (with SharedArrayBuffer support). Please update Chrome, Edge, Firefox or Safari to the latest version. · تحتاج هذه الصفحة إلى متصفح حديث (يدعم SharedArrayBuffer). يرجى تحديث Chrome أو Edge أو Firefox أو Safari إلى أحدث إصدار.
English
CALL runs a procedure
- A procedure is a named block. It does a job and returns no value.
- Define it with
PROCEDURE…ENDPROCEDURE, and run it withCALL. - Parentheses are written even when there are no parameters.
العربية
CALL تشغّل إجراءً
- الإجراء هو كتلة مسماة. يقوم بمهمة ولا يُرجع قيمة.
- عرّفه بـ
PROCEDURE…ENDPROCEDURE، وشغله بـCALL. - الأقواس تُكتب حتى عندما لا تكون هناك معاملات.
PROCEDURE Greet()
OUTPUT "Hi"
ENDPROCEDURE
CALL Greet()
English
By value is the default
- A parameter with no mode is passed by value: the procedure gets a copy.
- Changing the copy does not change the caller's variable.
- You may also write
BYVALin front of the name. It means the same thing.
العربية
By value هو الافتراضي
- المعامل بدون وضع يتم تمريره بالقيمة: يحصل الإجراء على نسخة.
- تغيير النسخة لا يغير متغير المُدْعِي.
- يمكنك أيضاً كتابة
BYVALأمام الاسم. يعني نفس الشيء.
PROCEDURE Show(N : INTEGER)
N ← N + 1
OUTPUT N
ENDPROCEDURE
DECLARE A : INTEGER
A ← 5
CALL Show(A)
OUTPUT A
English
BYREF passes the real variable
BYREFmeans the parameter is the caller's variable. A change is still there afterCALL.- If several parameters in a row use the same mode, the guide lets you write the keyword once.
- Do not pass a parameter to a function by reference. Use
BYREFon a procedure.
العربية
BYREF يمر المتغير الحقيقي
BYREFيعني أن المعامل هو متغير المُدْعِي. التغير لا يزال موجوداً بعدCALL.- إذا استخدم عدة معاملات متتالية نفس الوضع، يسمح لك الدليل بكتابة المفتاح مرة واحدة.
- لا تمرر معامل لإجراء دالة بالإشارة. استخدم
BYREFعلى إجراء.
PROCEDURE Swap(BYREF X : INTEGER, BYREF Y : INTEGER)
DECLARE Temp : INTEGER
Temp ← X
X ← Y
Y ← Temp
ENDPROCEDURE
DECLARE A : INTEGER
DECLARE B : INTEGER
A ← 1
B ← 2
CALL Swap(A, B)
OUTPUT A & "," & B
English
Common mistakes
CALLbefore a procedure. NeverCALLa function.- IGCSE 0478 has no
BYREF. On that paper every parameter is a copy.
العربية
أخطاء شائعة
CALLقبل إجراء. لا تستخدم أبداًCALLلدالة.- IGCSE 0478 لا تحتوي على
BYREF. في تلك الورقة كل معامل هو نسخة.
English
Now you try
- Write a procedure that swaps two integers.
العربية
الآن جرب بنفسك
- اكتب إجراءً يستبدل عددين صحيحين.
Write a procedure Greet with no parameters that outputs Hi, then CALL it. · اكتب إجراءً Greet بدون معلمات يطبع Hi، ثم يعيد ↺CALL.
Click Run to see the output here. · اضغط تشغيل لرؤية المخرجات هنا.
Write Swap so that BYREF exchanges A and B. Start from A ← 1 and B ← 2, and output 2,1. · اكتب Swap بحيث يستبدل BYREF A وB. ابدأ من A ← 1 وB ← 2، وطبع 2,1.
Click Run to see the output here. · اضغط تشغيل لرؤية المخرجات هنا.