` . (العلامات `
` ليست حصرية لـ Bootstrap ، ومع ذلك فإن Bootstrap تستفيد منها.). وفيما يلي التعليمات البرمجية التي سوف شأنه أن يضيف إلى `body` العلامات في التعليمات البرمجية لإنهاء بدء العمل. ضع في اعتبارك أنه أثناء إنشاء الحاوية ، ستظل الصفحة فارغة حتى تضيف محتوى إلى الحاوية.
- `
-
-
Congratulations!
-
Bootstrap is now working on this page
-
-`
+```html
+
+
Congratulations!
+
Bootstrap is now working on this page
+
+```
**تهانينا!**
diff --git a/guide/arabic/bootstrap/glyphicon-components/index.md b/guide/arabic/bootstrap/glyphicon-components/index.md
index 9f5478e199..fee6bdb09d 100644
--- a/guide/arabic/bootstrap/glyphicon-components/index.md
+++ b/guide/arabic/bootstrap/glyphicon-components/index.md
@@ -10,11 +10,11 @@ localeTitle: مكونات غليفيكون
## أمثلة
- `
-
Star icon:
-
Refresh icon:
-
Envelope icon:
-`
+```html
+
Star icon:
+
Refresh icon:
+
Envelope icon:
+```
## ملحوظة
diff --git a/guide/arabic/bootstrap/grid-examples/index.md b/guide/arabic/bootstrap/grid-examples/index.md
index 011c34ece2..375bf59318 100644
--- a/guide/arabic/bootstrap/grid-examples/index.md
+++ b/guide/arabic/bootstrap/grid-examples/index.md
@@ -6,21 +6,21 @@ localeTitle: أمثلة الشبكة
#### شجرة أعمدة متساوية
- `
-
-
-
- One of three columns
-
-
- One of three columns
-
-
- One of three columns
-
-
-
-`
+```html
+
+
+
+ One of three columns
+
+
+ One of three columns
+
+
+ One of three columns
+
+
+
+```
ينشئ المثال أعلاه ثلاثة أعمدة متساوية العرض على الأجهزة الصغيرة والمتوسطة والكبيرة ، والكبير جدًا باستخدام فئات الشبكة المحددة مسبقًا. يتم توسيط تلك الأعمدة في الصفحة مع الأصل. `.container` .
diff --git a/guide/arabic/bootstrap/grid-system/index.md b/guide/arabic/bootstrap/grid-system/index.md
index 8d58850727..421f119093 100644
--- a/guide/arabic/bootstrap/grid-system/index.md
+++ b/guide/arabic/bootstrap/grid-system/index.md
@@ -18,15 +18,17 @@ localeTitle: نظام الشبكة
الحاوية هي معظم العناصر الخارجية التي _ستحتوي على_ الشبكة الخاصة بك ، وتستخدم `container` عرض ثابتة في منتصف الشاشة (هامش إضافي على الشاشات الأكبر) أو `container-fluid` لعرض كامل.
- `
-`
+```
+
+```
###### صف
استخدم `row` لتجميع الأعمدة الخاصة بك ، وهذا سيبقي كل شيء مصفوفًا بشكل صحيح ويساعدك في بناء شبكتك.
- `
-`
+```
+
+```
###### أعمدة
@@ -40,22 +42,24 @@ localeTitle: نظام الشبكة
* **كبير** `col-lg-1`
* **إضافي كبير** `col-xl-1`
- `
-`
+```
+
+```
#### مثال
شبكة بعرض كامل تحتوي على أربعة أعمدة ، كل منها يشغل صفًا كاملاً على شاشات xs ، ونصف صف على الشاشات sm و md ، وربع عرض الصف على الشاشات الكبيرة وما فوقها.
- `
-
-
First Column
-
Second Column
-
Third Column
-
Forth Column
-
-
-`
+```
+
+
+
First Column
+
Second Column
+
Third Column
+
Forth Column
+
+
+```
_لاحظ أنه لم يتم تعريف `col-md` و `col-xl` ، حيث لم يتم تعريف الحجم ، سيتم تعيينه افتراضيًا إلى الحجم الأصغر التالي الذي تم تحديده._
diff --git a/guide/arabic/bootstrap/icons/index.md b/guide/arabic/bootstrap/icons/index.md
index 479c26a715..52d9628c21 100644
--- a/guide/arabic/bootstrap/icons/index.md
+++ b/guide/arabic/bootstrap/icons/index.md
@@ -38,11 +38,11 @@ _ملاحظة: لا تقم بتضمين النقطة في سمة فئة HTML ،
### أيقونة Bootstrap في الأزرار
- `
-
-
-
-`
+```html
+
+
+
+```
_ملاحظة: رمز Glyphicons الخاص ب Bootstrap غير متوفر على bootstrap V4_
diff --git a/guide/arabic/bootstrap/index.md b/guide/arabic/bootstrap/index.md
index b5e92ddb88..6662e6af05 100644
--- a/guide/arabic/bootstrap/index.md
+++ b/guide/arabic/bootstrap/index.md
@@ -35,11 +35,11 @@ Bootstrap هو إطار أمامي شهير لتطوير الويب. يحتوي
تشبه إضافة عناصر JavaScript الخاصة بـ Bootstrap عناصر `
-
-
-`
+```html
+
+
+
+```
_ملاحظة: هذه أمثلة فقط وقد تتغير دون إشعار. يرجى الرجوع إلى CDN للوصلات الحالية لتضمينها في مشروعك._
diff --git a/guide/arabic/bootstrap/navigation-bar/index.md b/guide/arabic/bootstrap/navigation-bar/index.md
index 063b38334b..3e497e1c0a 100644
--- a/guide/arabic/bootstrap/navigation-bar/index.md
+++ b/guide/arabic/bootstrap/navigation-bar/index.md
@@ -14,21 +14,21 @@ localeTitle: شريط التنقل
هذه هي الشفرة اللازمة لإنشاء شريط تنقل أساسي.
- `
-
-
-
-`
+```html
+
+
+
+```
#### أنماط Navbar
@@ -41,26 +41,26 @@ localeTitle: شريط التنقل
يمكنك تضمين قائمة منسدلة داخل شريط التنقل. تتطلب هذه الميزة تضمين ملف javascript في Bootstrap حتى يعمل.
- `
-
- Drop down
-
-
-
-
-`
+```html
+
+ Drop down
+
+
+
+
+```
#### إضافة أزرار إلى شريط التنقل
يمكنك إضافة أزرار على شريط التنقل. تعمل فئات Bootstrap Button الموجودة ولكن ستحتاج إلى تضمين `navbar-btn` class إلى نهاية قائمة الفئة.
- `
-
Button
-`
+```html
+
Button
+```
#### إضافة نماذج إلى navbar
@@ -79,65 +79,65 @@ localeTitle: شريط التنقل
في بعض الحالات ، قد ترغب في محاذاة عناصر في شريط التنقل إلى اليمين (على سبيل المثال زر تسجيل الدخول أو التسجيل.). للقيام بذلك ، ستحتاج إلى استخدام فئة `navbar-right` .
- `
-
-
-
-`
+```html
+
+
+
+```
#### عرض شريط التنقل مستقل عن التمرير
في بعض الحالات ، قد ترغب في الاحتفاظ بشريط التنقل في الجزء العلوي أو السفلي من الشاشة بغض النظر عن التمرير. ستحتاج إلى إضافة فئة `navbar-fixed-top` أو `navbar-fixed-bottom` إلى عنصر `
` .
- `
-
-
-
-`
+```html
+
+
+
+```
#### تصغير شريط التنقل
على شاشة صغيرة (مثل الهاتف أو الجهاز اللوحي) سيشغل شريط التنقل مساحة كبيرة جدًا. لحسن الحظ ، يوجد خيار تجميع شريط التنقل. يمكنك تحقيق ذلك باستخدام المثال التالي.
- `
-
-
-
-`
+```html
+
+
+
+```
#### أمثلة Navbar
diff --git a/guide/arabic/bootstrap/panels/index.md b/guide/arabic/bootstrap/panels/index.md
index 54bb7aead1..b01bdf56ad 100644
--- a/guide/arabic/bootstrap/panels/index.md
+++ b/guide/arabic/bootstrap/panels/index.md
@@ -12,12 +12,12 @@ localeTitle: لوحات
**مثال الكود**
- `
-
-
Panel Primary
-
This is a panel with the primary panel style.
-
-`
+```html
+
+
Panel Primary
+
This is a panel with the primary panel style.
+
+```
#### أمثلة على اللوحة:
diff --git a/guide/arabic/bootstrap/tabs-and-pills/index.md b/guide/arabic/bootstrap/tabs-and-pills/index.md
index e5b774c74e..9a528a2c91 100644
--- a/guide/arabic/bootstrap/tabs-and-pills/index.md
+++ b/guide/arabic/bootstrap/tabs-and-pills/index.md
@@ -10,13 +10,13 @@ localeTitle: علامات التبويب وحبوب منع الحمل
للحصول على علامات تبويب تمهيدية ، تحتاج أولاً إلى عنصر يحتوي على فئة `.nav` . ثم يمكنك ببساطة إضافة فئة إضافية باسم `.nav-tabs` .
- `
-
-`
+```html
+
+```
## 
@@ -24,13 +24,13 @@ localeTitle: علامات التبويب وحبوب منع الحمل
يتم تحقيق Bootstrap Pills بنفس طريقة Bootstrap Tabs ماعدا بدلا من `.nav-tabs` ، استخدم `.nav-pills` .
- `
-
-`
+```html
+
+```
## 
@@ -38,11 +38,11 @@ localeTitle: علامات التبويب وحبوب منع الحمل
حبوب منع الحمل هي أيضا تكويم عموديا باستخدام. `.nav stacked` بالتزامن مع `.nav-pills` .
- `
-
-`
+```html
+
+```
## 
@@ -50,14 +50,14 @@ localeTitle: علامات التبويب وحبوب منع الحمل
يمكن أن يكون لكل من Bootstrap Tabs و Pills عرض متساوٍ للوالدين على شاشات أكبر من 768px باستخدام class .nav `.nav-justified` . على الشاشات الصغيرة ، يتم تكديس روابط التنقل.
- `
-
-
-`
+```html
+
+
+```
## 
@@ -65,13 +65,13 @@ localeTitle: علامات التبويب وحبوب منع الحمل
بالنسبة لأي مكون من عناصر التنقل (علامات التبويب أو الحبوب) ، يمكنك إضافة `.disabled` للحصول على ارتباطات رمادية وبدون تأثيرات تحوم
- `
-
-`
+```html
+
+```
## 
@@ -79,20 +79,20 @@ localeTitle: علامات التبويب وحبوب منع الحمل
أضف القوائم المنسدلة إلى علامات تبويب التنقل.
- `
-
-`
+```html
+
+```
## 
@@ -100,19 +100,19 @@ localeTitle: علامات التبويب وحبوب منع الحمل
إضافة القوائم المنسدلة إلى حبوب الملاحة الخاصة بك.
- `
-
-`
+```html
+
+```

\ No newline at end of file
diff --git a/guide/arabic/c/arrays-and-strings/index.md b/guide/arabic/c/arrays-and-strings/index.md
index 1f98e07747..18024917eb 100644
--- a/guide/arabic/c/arrays-and-strings/index.md
+++ b/guide/arabic/c/arrays-and-strings/index.md
@@ -10,18 +10,21 @@ localeTitle: المصفوفات والسلاسل
سيتم الإعلان عن متغير صحيح عادي على النحو التالي:
- `int my_variable;
-`
+```C
+int my_variable;
+```
لإعلان هذا كصفيف ، وجعله مصفوفة من 5 أعداد صحيحة ، يمكن الإعلان عنه على النحو التالي:
- `int my_array[5];
-`
+```C
+int my_array[5];
+```
سيؤدي ذلك إلى إنشاء صفيف يسمى `my_array` يمكنه الاحتفاظ بـ 5 أعداد صحيحة. ومع ذلك ، لم يتم تعيين أي من المواضع في الصفيف (حتى الآن). يمكنك تحديد الصفيف ، وتعيين القيم في البداية:
- `int my_array[] = {1, 5, 3, 6, 2};
-`
+```C
+int my_array[] = {1, 5, 3, 6, 2};
+```
لاحظ أنه في هذا المثال ، لم نتعامل مع تحديد رقم في الأقواس المربعة. وذلك لأن الأقواس المتعرجة لها قيم فيها سيتم تعيينها لكل موضع في الصفيف. يمكنك وضع رقم في الأقواس على أي حال ، طالما أنك تأكد من إنشاء مواقع ذاكرة كافية لتخزين القيم التي مررت بها.
@@ -39,46 +42,52 @@ float my\_array \[5\] = {5.0، 2.5}؛
في ما يلي مثال على تعيين المصفوفة إلى 9 في الموضع 1:
- `my_array[1] = 9;
-`
+```C
+my_array[1] = 9;
+```
لذلك ، تمامًا مثل أي متغير آخر ، باستثناء أنه يحتوي على قيم متعددة للوصول باستخدام الرقم داخل الأقواس المربعة. يمكن إرجاع القيم بهذه الطريقة أيضًا:
- `int variable = my_array[4];
-`
+```C
+int variable = my_array[4];
+```
هذا سوف يعلن `variable` ليكون عدد صحيح يساوي القيمة في الموضع 4 من `my_array` . ومع ذلك ، نظرًا لأن `variable` هو `int` مفرد وليس صفيفًا ، فهذا **ليس** رمزًا سيحقق النتيجة الصحيحة:
- `// This code will NOT work properly!
- int variable = my_array;
-`
+```C
+// This code will NOT work properly!
+int variable = my_array;
+```
يمكن وضع أي عدد صحيح في الأقواس المربعة للحصول على موضع في الصفيف. يمكن أن تكون تلك الأعداد الصحيحة متغيرات أيضًا. ألق نظرة على هذا المثال ، الذي يطبع محتويات مصفوفة:
- `#include
-
- int main(void) {
- int my_array[] = {1, 1, 2, 3, 5, 7, 12};
-
- for(int count = 0; count < 7; count++) {
- printf("%i, \n", my_array[count]);
- }
-
- return 0;
- }
-`
+```C
+#include
+
+int main(void) {
+ int my_array[] = {1, 1, 2, 3, 5, 7, 12};
+
+ for(int count = 0; count < 7; count++) {
+ printf("%i, \n", my_array[count]);
+ }
+
+ return 0;
+}
+```
## سلاسل
الصفائف هي مجموعات من المتغيرات ، والسلاسل عبارة عن مجموعات من الأحرف. ونتيجة لذلك ، يمكننا تمثيل السلاسل باستخدام مصفوفة. _يمكنك_ يعلن شيء في نفس الطريقة كما في السابق، ولكن ستحتاج إلى وضع '\\ 0' واحدة من القيم الخاصة بك (أكثر على ذلك في دقيقة واحدة!):
- `char hello_world[] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\0'};
-`
+```C
+char hello_world[] = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\0'};
+```
ييكيس. هذا ليس حقا حلا رائعا. لحسن الحظ ، يوفر C طريقة أفضل مع وضع السلاسل في الاعتبار:
- `char hello_world[] = "Hello world!";
-`
+```C
+char hello_world[] = "Hello world!";
+```
هذا أجمل بكثير. لا يتطلب منك حتى وضع "\\ 0" في النهاية ، إما. إذن ماذا كان هذا؟
@@ -92,15 +101,16 @@ float my\_array \[5\] = {5.0، 2.5}؛
شيء آخر يجعل C أسهل بالنسبة لنا هو طباعة الأوتار. بدلاً من إجبارك على طباعة كل حرف في الصفيف ، يمكنك فقط استخدام محدد تنسيق٪ s ، وتعامل السلسلة كما تفعل مع أي قيمة `int` أو `double` . في ما يلي مثال على الترحيب ، البرنامج العالمي منذ البداية ، والذي أصبح أكثر تعقيدًا مع السلاسل:
- `#include
-
- int main(void) {
- char hello_world[] = "Hello, World!\n";
- printf("%s", hello_world);
-
- return 0;
- }
-`
+```C
+#include
+
+int main(void) {
+ char hello_world[] = "Hello, World!\n";
+ printf("%s", hello_world);
+
+ return 0;
+}
+```
### اللعب مع سلاسل
@@ -110,8 +120,9 @@ float my\_array \[5\] = {5.0، 2.5}؛
`strcpy` (من 'نسخة السلسلة') نسخ سلسلة. على سبيل المثال ، سينسخ مقتطف الشفرة محتويات السلسلة `second` في السلسلة `first` :
- `strpy(first, second);
-`
+```C
+strpy(first, second);
+```
في ما يلي مثال على الكيفية التي يبدو بها التنفيذ اليدوي لوظيفة strcpy:
@@ -129,8 +140,9 @@ void copy _string (char \[\] first_ string، char \[\] second\_string) { int i؛
`strcat` (من "سلسلة سلسلة") سَلسَلة سلسلة ، بمعنى أنها ستأخذ محتويات سلسلة واحدة وتضعها في نهاية سلسلة أخرى. في هذا المثال ، سيتم تجميع محتويات `second` `first` :
- `strcat(first, second);
-`
+```C
+strcat(first, second);
+```
في ما يلي مثال على التنفيذ اليدوي لـ strat fuction:
@@ -140,8 +152,9 @@ void string\_concatenate (char \[\] s1، char \[\] s2) { int i = strlen (s1)، j
`strlen` (من "طول السلسلة") قيمة عدد صحيح تتطابق مع طول السلسلة. في هذا المثال ، سيتم تعيين عدد صحيح باسم `string_length` على طول `my_string` :
- `string_length = strlen(my_string);
-`
+```C
+string_length = strlen(my_string);
+```
هنا هو تنفيذ يدوي من strlen fuction:
@@ -158,12 +171,13 @@ int string\_length (char \[\] سلسلة) { int i؛
يقارن `strcmp` (من 'مقارنة السلسلة') سلسلتين. القيمة الصحيحة التي تقوم بإرجاعها هي 0 إذا كانت هي نفسها ، ولكنها ستعود أيضًا سالبة إذا كانت قيمة الأول (بإضافة الأحرف) أقل من قيمة الثانية ، وإيجابية إذا كان الأول أكبر من الثاني . ألق نظرة على مثال لكيفية استخدام هذا:
- `if(!strcmp(first, second)){
- printf("These strings are the same!\n");
- } else {
- printf("These strings are not the same!\n");
- }
-`
+```C
+if(!strcmp(first, second)){
+ printf("These strings are the same!\n");
+} else {
+ printf("These strings are not the same!\n");
+}
+```
لاحظ `!` ، وهي مطلوبة لأن هذه الدالة تقوم بإرجاع 0 إذا كانت هي نفسها. إن وضع نقطة التعجب هنا سيجعل المقارنة صحيحة.
@@ -171,8 +185,9 @@ int string\_length (char \[\] سلسلة) { int i؛
`strtok` (من "رمز السلسلة") يقطع سلسلة في سلسلة من الرموز المميزة باستخدام محدد. في هذا المثال ، يقطع strtok str str في سلسلة من الرموز المميزة باستخدام delimiter delim:
- `char *strtok(char *str, const char *delim);
-`
+```C
+char *strtok(char *str, const char *delim);
+```
# قبل أن تذهب ...
diff --git a/guide/arabic/c/arrays/index.md b/guide/arabic/c/arrays/index.md
index 0eadcffbe6..252a680470 100644
--- a/guide/arabic/c/arrays/index.md
+++ b/guide/arabic/c/arrays/index.md
@@ -8,20 +8,21 @@ localeTitle: المصفوفات
قبل محاولة شرح المصفوفات ، دعنا نلقي نظرة على الكود الذي نريد طباعة 10 أرقام من قبل المستخدم بترتيب عكسي.
- `#include
- int main(void) {
- int a, b, c, d, e, f, g, i, j, k;
- scanf("%d", &a);
- scanf("%d", &b);
- ...
- printf("%d", k);
- printf("%d", j);
- printf("%d", i);
- ... //and so on..
-
- return 0;
- }
-`
+```C
+#include
+int main(void) {
+ int a, b, c, d, e, f, g, i, j, k;
+ scanf("%d", &a);
+ scanf("%d", &b);
+ ...
+ printf("%d", k);
+ printf("%d", j);
+ printf("%d", i);
+ ... //and so on..
+
+ return 0;
+}
+```
لذلك ، يبدو هذا مملاً بعض الشيء. حتى الآن ، كان لكل متغير تم إنشاؤه دور خاص. ولكن في الوقت الحالي ، سيكون من الرائع أن نتمكن فقط من تخزين قيم متعددة في مكان واحد والحصول على القيم مع مكانها في الخط ربما (القيمة الأولى والثانية وما إلى ذلك). هناك طريقة أخرى للنظر إلى هذا ، لنفترض أنك تريد تخزين مجموعة من الأسماء ، لا تحتاج إلى إنشاء متغيرات مختلفة لكل اسم ، بدلاً من ذلك يمكنك إنشاء مجموعة من الأسماء حيث يكون لكل اسم هويته الفريدة أو _فهرسها_ . أيضا ، يمكن أن نستخدم الحلقات عليها ، وهي الأشياء التي ستتعلمها فيما بعد ، ولكن في الأساس يفعلون الشيء نفسه مرارا وتكرارا. على سبيل المثال. القراءة من المستخدم ، أو طباعة القيم.
@@ -29,42 +30,48 @@ localeTitle: المصفوفات
المصفوفات هي حاويات ذات حجم معين. تحتوي على متغيرات من **نفس النوع** . يمكنك الوصول إلى متغير تم تخزينه في الصفيف مع _فهرسه_ . دعونا ننظر في بعض التعليمات البرمجية:
- `#include
- int main(void) {
- int arr[4] = {1, 2, 3, 88};
- int brr[] = {78, 65};
- int crr[100] = {3};
-
- int var = arr[0];
-
- return 0;
- }
-`
+```C
+#include
+int main(void) {
+ int arr[4] = {1, 2, 3, 88};
+ int brr[] = {78, 65};
+ int crr[100] = {3};
+
+ int var = arr[0];
+
+ return 0;
+}
+```
والآن دعنا نكسر بناء الجملة قليلاً:
- `int arr[4] = {1, 2, 3, 88};
-`
+```C
+int arr[4] = {1, 2, 3, 88};
+```
هنا قمت بإنشاء `array` من `ints` (أعداد صحيحة) ، تسمى `arr` . تحتوي هذه المجموعة على 4 عناصر: `1` ، `2` ، `3` ، `88` . لاحظ بناء الجملة!
- `datatype name[number of elements]
-`
+```C
+datatype name[number of elements]
+```
العنصر الأول من هذه المجموعة هو `1` ، والثاني هو `2` وما إلى ذلك.
- `int brr[] = {78, 65};
-`
+```C
+int brr[] = {78, 65};
+```
ليس عليك أن تخبر البعد مسبقًا. هنا سيتم إنشاء مجموعة من اثنين مع العناصر بين الأقواس المتعرجة.
- `int crr[100] = {3};
-`
+```C
+int crr[100] = {3};
+```
إذا قمت بذلك ، فسيكون العنصر الأول هو `3` ، ولكن سيكون الباقي هو `0` .
- `int var = arr[0];
-`
+```C
+int var = arr[0];
+```
هنا يتم إنشاء كثافة العمليات int تُسمى `var` ، ويتم تهيئتها إلى العنصر 0 من arr. **من المستورد جدا أن نلاحظ** أنه في C ، تبدأ الفهارس عند الصفر مقابل 1. وهذا يعني أنه للوصول إلى العنصر الأول ، يكون المؤشر (بين قوسين) 0 ، للوصول إلى العنصر الثاني ، المؤشر هو 1 الخ. في هذا المثال ، سيقوم `var` بتخزين القيمة `1` .
@@ -79,45 +86,49 @@ localeTitle: المصفوفات
كما يدعم C صفائف متعددة الأبعاد.
- `datatype name[size1][size2]...[sizeN]
-`
+```C
+datatype name[size1][size2]...[sizeN]
+```
صفائف ثنائية الأبعاد شائعة ويمكن تهيئتها باستخدام الصيغة التالية. يمكن للمرء أن يفكر منطقيًا في أول فهرس كصفوف والفهرس الثاني كأعمدة. يحتوي هذا المثال على صفين و 5 أعمدة.
- `int arr[2][5] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
-`
+```C
+int arr[2][5] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+```
قد يكون من الصعب تصور صفيف ثنائي الأبعاد باستخدام البنية الموضحة أعلاه حتى يستخدم المطورون أقواسًا اختيارية متداخلة لتوضيح بنية الصفيف. هذه أيضًا طريقة صالحة لتهيئة مصفوفة ثنائية الأبعاد.
- `int arr[2][5] = {
- {0, 1, 2, 3, 4},
- {5, 6, 7, 8, 9}
- };
-`
+```C
+int arr[2][5] = {
+ {0, 1, 2, 3, 4},
+ {5, 6, 7, 8, 9}
+};
+```
يمكن استخدام اثنين متداخلين من أجل حلقات لطباعة محتويات صفيف ثنائي الأبعاد في تنسيق جدولي.
- `#include
-
-
- int main() {
- const int rows = 2, cols = 5;
-
- int arr[rows][cols] = {
- {0, 1, 2, 3, 4},
- {5, 6, 7, 8, 9}
- };
-
- for (int row = 0; row < rows; row++) {
- for (int col = 0; col < cols; col++) {
- printf("%5d", arr[row][col]);
- }
- puts("");
- }
-
- return 0;
- }
-`
+```C
+#include
+
+
+int main() {
+ const int rows = 2, cols = 5;
+
+ int arr[rows][cols] = {
+ {0, 1, 2, 3, 4},
+ {5, 6, 7, 8, 9}
+ };
+
+ for (int row = 0; row < rows; row++) {
+ for (int col = 0; col < cols; col++) {
+ printf("%5d", arr[row][col]);
+ }
+ puts("");
+ }
+
+ return 0;
+}
+```
` 0 1 2 3 4
5 6 7 8 9
@@ -129,32 +140,36 @@ localeTitle: المصفوفات
مثل ذلك:
- `char string[6] = "Hello"; //here you get Hello\0, which is why we need an array with the length of 6
-`
+```C
+char string[6] = "Hello"; //here you get Hello\0, which is why we need an array with the length of 6
+```
كما هو الحال مع المصفوفات int في المثال أعلاه ، هناك عدة طرق لتعيين قيم لصفائف char:
- `char string[] = "I do not want to count the chars in this.";
- char string2[] = {'C','h','a','r',' ','b','y',' ','c','h','a','r','\0'};
- char string3[] = "This is a string"
- "with two lines";
-`
+```C
+char string[] = "I do not want to count the chars in this.";
+char string2[] = {'C','h','a','r',' ','b','y',' ','c','h','a','r','\0'};
+char string3[] = "This is a string"
+ "with two lines";
+```
مكافئ للنهج أعلاه ، يمكنك أيضًا إنشاء مؤشر إلى مجموعة char:
- `char* string = "I do not want to count the chars in this.";
-`
+```C
+char* string = "I do not want to count the chars in this.";
+```
## أخطاء نموذجية ، نصائح
* عندما يكون لديك مصفوفة مليئة بالقيم وترغب في إنشاء صفيف آخر مماثل تمامًا لأول مرة ، لا تفعل ذلك مطلقًا:
- `double first[] = {2,3,7};
- double second[] = first;
- //Or this:
- double a[5], b[5]
- a = b;
-`
+```C
+double first[] = {2,3,7};
+double second[] = first;
+//Or this:
+double a[5], b[5]
+a = b;
+```
يمكنك **فقط** التعامل مع القيم في صفيف واحد تلو الآخر. لا **يمكنك تعيين الكل مرة واحدة** ، عندما تتعرف على المؤشرات لاحقًا ، ستكون الأسباب واضحة.
@@ -162,17 +177,19 @@ localeTitle: المصفوفات
* عندما تريد إنشاء مصفوفة ، يجب عليك إما معرفة حجمها ، أو تعيين قيم لها. لا تفعل هذا:
- `int arr[];
-`
+```C
+int arr[];
+```
يجب أن يعرف الكمبيوتر حجم التخزين الذي يجب إنشاؤه للصفيف. في وقت لاحق ، سوف تتعلم طرق إنشاء حاويات يتم تحديد حجمها فيما بعد. (مرة أخرى ، المؤشرات.)
* عندما تقوم بفهرسة المصفوفة ، لن يقوم المترجم دائمًا بإعطائك خطأ. هذا ما يسمى السلوك غير معرف ، نحن لا نعرف ما الذي سيحدث. يمكن أن يؤدي إلى تعطل برنامجك ، ببساطة تباطؤ ، أي شيء.
- `int test[6];
- int a = test[-2];
- int b = test[89];
-`
+```C
+int test[6];
+int a = test[-2];
+int b = test[89];
+```
السبب في أن C لا يتحقق من تقييد الفهرسة بسيط: C هي لغة فعالة. تم إعداده ، بحيث يكون البرنامج الأسرع: يتواصل بشكل جيد مع الأجهزة الخ. لا يحتوي كود C المكتوب بشكل جيد على أخطاء في الفهرسة ، فلماذا تريد C أن تتحقق أثناء التشغيل؟
diff --git a/guide/arabic/c/file-handling/index.md b/guide/arabic/c/file-handling/index.md
index 530767f7f7..edc3c86905 100644
--- a/guide/arabic/c/file-handling/index.md
+++ b/guide/arabic/c/file-handling/index.md
@@ -8,24 +8,26 @@ localeTitle: التعامل مع الملف
إذا كنت قد قمت بكتابة برنامج C `helloworld` قبل ، فقد قمت بالفعل بإدخال ملف IO في C! تهانينا! : تادا:
- `/* A simple hello world in C. */
- #include
-
- // Import IO functions.
- #include
-
- int main() {
- // This printf is where all the file IO magic happens!
- // How exciting!
- printf("Hello, world!\n");
- return EXIT_SUCCESS;
- }
-`
+```c
+/* A simple hello world in C. */
+#include
+
+// Import IO functions.
+#include
+
+int main() {
+ // This printf is where all the file IO magic happens!
+ // How exciting!
+ printf("Hello, world!\n");
+ return EXIT_SUCCESS;
+}
+```
تعد معالجة الملفات الجزء الأكثر أهمية من المبرمج. في لغة C ، نستخدم مؤشر بنية لنوع الملف لإعلان ملف
- `FILE *fp;
-`
+```c
+FILE *fp;
+```
يوفر C عددًا من وظائف البناء لتنفيذ عملية الملف الأساسية
diff --git a/guide/arabic/c/for/index.md b/guide/arabic/c/for/index.md
index 48fb625197..7778171d0c 100644
--- a/guide/arabic/c/for/index.md
+++ b/guide/arabic/c/for/index.md
@@ -8,10 +8,11 @@ localeTitle: لحلقة
## بناء جملة من أجل حلقة
- `for ( init; condition; increment ) {
- statement(s);
- }
-`
+```c
+for ( init; condition; increment ) {
+ statement(s);
+}
+```
تتألف الحلقة `for` من 3 أقسام ، وقسم التهيئة ، وحالة محددة ، وقسم التشغيل التزايدي أو التزايدي. تتحكم هذه المقاطع 3 و `for` حلقة.
@@ -35,8 +36,9 @@ localeTitle: لحلقة
## انتاج:
- `> Item on index 0 is 1
- > Item on index 1 is 2
- > Item on index 2 is 3
- > Item on index 3 is 4
-`
\ No newline at end of file
+```shell
+> Item on index 0 is 1
+> Item on index 1 is 2
+> Item on index 2 is 3
+> Item on index 3 is 4
+```
\ No newline at end of file
diff --git a/guide/arabic/c/functions/index.md b/guide/arabic/c/functions/index.md
index dcfc99b8f0..fd2016e952 100644
--- a/guide/arabic/c/functions/index.md
+++ b/guide/arabic/c/functions/index.md
@@ -10,28 +10,30 @@ localeTitle: المهام
إليك مثال بسيط على وظيفة تقسم رقمين. انها ليست مفيدة جدا لأن لدينا `/` ، لكنه يظهر أجزاء مختلفة من وظيفة.
- `#include
-
- int divides(int a, int b) {
- return a / b;
- }
-
- int main(void) {
- int first = 5;
- int second = 10; //MUST NOT BE ZERO;
-
- int result = divides(first, second);
-
- printf("first divided by second is %i\n", result);
-
- return 0;
- }
-`
+```C
+#include
+
+int divides(int a, int b) {
+ return a / b;
+}
+
+int main(void) {
+ int first = 5;
+ int second = 10; //MUST NOT BE ZERO;
+
+ int result = divides(first, second);
+
+ printf("first divided by second is %i\n", result);
+
+ return 0;
+}
+```
لاحظ أنه مثل `main` ، فإن `divides` لها تنسيق مشابه. ذلك لأن `main` هي أيضاً دالة- إنها خاصة فقط لأن C تبحث عنها أولاً. `divides` كما يأتي قبل `main` . هذا أمر مهم لأن `divides` النداءات `main` . استدعاء دالة يعني أنه يتم استخدام الرمز الخاص به. يجب أن يتم تجميع الكود قبل أن يتم استخدامه ، و C يجمع سطرًا سطحيًا من أعلى ، لذا لكي يتم استدعاء دالة ، يجب كتابتها قبل استدعاءها في هذا المثال. إذا جاءت `divides` بعد `main` ، فإنها ستفشل لأن المجمع لا يعرف أن `divides` موجودة حتى الآن. يمكنك أيضا استخدام النموذج الأولي وظيفة قبل الرئيسي للسماح لك بوضع `divides` بعد الرئيسي. النموذج الأولي للدالة متطابق مع الوظيفة التي لها نفس المتغيرات ونوع الإرجاع ، إلا أنه يتم حذف الأقواس واستبدالها بفاصلة منقوطة مثل:
- `int divides(int a, int b);
-`
+```C
+int divides(int a, int b);
+```
لاحظ أيضًا أن `divides` `main` لا تتقاسم الأقواس ولا توجد بين قوسين. من المفترض أن تكون منفصلة ، على الرغم من أن واحد يدعو الآخر.
@@ -39,8 +41,9 @@ localeTitle: المهام
## كسر إعلان الدالة
- `int divides(int a, int b)
-`
+```C
+int divides(int a, int b)
+```
يبدأ تعريف الدالة بنوع بيانات ، وهو في هذه الحالة `int` . مهما كان نوع البيانات الذي تريد إرجاعه ، يجب عليك وضعه هنا. يمكنك الحصول على أي نوع من أنواع البيانات ، أو لا يمكن أن يكون نوع البيانات من خلال وضع `void` هنا.
@@ -50,8 +53,9 @@ localeTitle: المهام
الآن دعونا نلقي نظرة على ما هو داخل الأقواس:
- `return a / b;
-`
+```C
+return a / b;
+```
هذا واضح جدا ، لأن هذه هي وظيفة بسيطة. `a` مقسومة على `b` ، ويتم إرجاع هذه القيمة. كنت قد رأيت `return` قبل في المهمة `main` ، ولكن الآن بدلا من إنهاء برنامجنا ، فإنه ينهي الطريقة ويعطي قيمة لما يطلق عليه.
@@ -67,16 +71,17 @@ localeTitle: المهام
ومع ذلك ، فإن معظم الوظائف لن تكون سطرًا واحدًا من التعليمات البرمجية. دعونا نلقي نظرة على مثال آخر أكثر تعقيدًا قليلاً يختار أكبر رقمين.
- `int choose_bigger_int(int a, int b) {
- if(a > b)
- return a;
-
- if(b > a)
- return b;
-
- return a;
- }
-`
+```C
+int choose_bigger_int(int a, int b) {
+ if(a > b)
+ return a;
+
+ if(b > a)
+ return b;
+
+ return a;
+}
+```
كما هو الحال من قبل ، ستقوم الدالة بإرجاع عدد صحيح ويأخذ عددًا صحيحًا اثنين. لا جديد لرؤية هناك.
diff --git a/guide/arabic/c/if-statements/index.md b/guide/arabic/c/if-statements/index.md
index 723a739f4c..8bf9bef540 100644
--- a/guide/arabic/c/if-statements/index.md
+++ b/guide/arabic/c/if-statements/index.md
@@ -8,30 +8,33 @@ localeTitle: مشغلات منطقية وبيانات إذا كانت
## بناء جملة من _البيان_
- `if (testExpression) {
- // statements
- }
-`
+```
+if (testExpression) {
+ // statements
+}
+```
## مثال بسيط
دعونا ننظر إلى مثال على ذلك في العمل:
- `#include
- #include
-
- int main(void) {
- if(true) {
- printf("Statement is True!\n");
- }
-
- return 0;
- }
-`
+```C
+#include
+#include
- `output:
- Statement is True!
-`
+int main(void) {
+ if(true) {
+ printf("Statement is True!\n");
+ }
+
+ return 0;
+}
+```
+
+```
+output:
+Statement is True!
+```
تمامًا مثل helloworld.c ، تم تضمين stdio.h. الجديد في هذا البرنامج هو stdbool.h ، وهو المكتبة البوولية القياسية - فهو يحتوي على كود يتيح لنا الوصول إلى 'true' و 'false'.
@@ -43,25 +46,27 @@ localeTitle: مشغلات منطقية وبيانات إذا كانت
بالطبع ، لم يكن هذا المثال مفيدًا جدًا ، لأن الصواب صحيح دائمًا. وإليك آخر آخر أكثر عملية:
- `#include
-
- int main(void) {
- int n = 2;
-
- if(n == 3) { // comparing n with 3
- printf("Statement is True!\n");
- }
- else { // if first condition is not true, then comes to this block of code.
- printf("Statement is False!\n");
- }
-
- return 0;
- }
-`
+```C
+#include
- `output:
- Statement is False!
-`
+int main(void) {
+ int n = 2;
+
+ if(n == 3) { // comparing n with 3
+ printf("Statement is True!\n");
+ }
+ else { // if first condition is not true, then comes to this block of code.
+ printf("Statement is False!\n");
+ }
+
+ return 0;
+}
+```
+
+```
+output:
+Statement is False!
+```
هناك بعض الأشياء الهامة التي تختلف هنا. أولاً ، لم يتم تضمين `stdbool.h` . هذا مقبول ، لأنه لا يتم استخدام `true` `false` . في C ، لدينا بيانات تعامل على أنها صحيحة وكاذبة حتى ولو لم تكن الكلمات صحيحة أو خاطئة في العملية.
@@ -71,24 +76,26 @@ localeTitle: مشغلات منطقية وبيانات إذا كانت
تسمح العبارة if-else بالاختيار بين بديلين محتملين. في بعض الأحيان ، يجب الاختيار بين أكثر من احتمالين. على سبيل المثال ، ترجع الدالة sign في الرياضيات -1 إذا كانت الوسيطة أقل من الصفر ، تُرجع +1 إذا كانت الوسيطة أكبر من الصفر وتعيد الصفر إذا كانت الوسيطة صفرًا. تطبق العبارة C ++ التالية هذه الوظيفة:
- `if (x < 0)
- sign = -1;
- else
- if (x == 0)
- sign = 0;
- else
- sign = 1;
-`
+```C
+if (x < 0)
+ sign = -1;
+else
+ if (x == 0)
+ sign = 0;
+ else
+ sign = 1;
+```
هذا هو عبارة if-else التي يكون فيها البيان الذي يلي الجملة هو نفسه عبارة if-else. إذا كانت قيمة x أقل من الصفر ، فسيتم تعيين علامة على -1 ، ومع ذلك إذا لم يكن أقل من العبارة التالية بعد تنفيذ آخر. في هذه الحالة ، إذا كانت x تساوي الصفر ، فسيتم تعيين التوقيع على الصفر وإلا يتم تعيينه على 1. غالبًا ما يستخدم المبرمجون المبتدئون تسلسلًا من عبارات if بدلاً من استخدام عبارة if-else متداخلة. هذا ما يكتبونه أعلاه في النموذج المكافئ منطقيًا:
- `if (x < 0)
- sign = -1;
- if (x == 0)
- sign = 0;
- if (x > 0)
- sign = 1;
-`
+```C
+if (x < 0)
+ sign = -1;
+if (x == 0)
+ sign = 0;
+if (x > 0)
+ sign = 1;
+```
لا ينصح بهذا الإصدار لأنه لا يوضح أنه سيتم تنفيذ واحد فقط من عبارات المهمة لقيمة معينة من x. كما أنها غير فعالة حيث يتم اختبار جميع الشروط الثلاثة دائما.
@@ -100,25 +107,27 @@ localeTitle: مشغلات منطقية وبيانات إذا كانت
هناك الكثير يمكننا القيام به مع كل هؤلاء المشغلين! خذ بعين الاعتبار ما يلي ، حيث سنستخدم عبارة if-else:
- `#include
-
- int main(void) {
- int n = 5;
-
- if(n == 5) {
- printf("n is equal to 5!\n");
- }
- else if (n > 5) {
- printf("n is greater than 5!\n");
- }
-
- return 0;
- }
-`
+```C
+#include
- `output:
- n is equal to 5!
-`
+int main(void) {
+ int n = 5;
+
+ if(n == 5) {
+ printf("n is equal to 5!\n");
+ }
+ else if (n > 5) {
+ printf("n is greater than 5!\n");
+ }
+
+ return 0;
+}
+```
+
+```
+output:
+n is equal to 5!
+```
يحتوي بيان if-else على 'else if' مرتبط به. تعمل هذه التعليمة البرمجية إذا كان الشرط الموجود داخل السابق إذا كان خطأً ، ولكنه يضيف شرطًا داخل أقواسها يجب أن يكون صحيحًا قبل تشغيل الشفرة.
@@ -126,32 +135,34 @@ localeTitle: مشغلات منطقية وبيانات إذا كانت
بالطبع ، قد نرغب في حدوث شيء ما إذا لم يكن ذلك صحيحًا ، أو إذا كان صحيحًا أو غير ذلك. لذلك ، لدينا عوامل منطقية:! ل ، لا & ، و و ل أو. دعونا نلقي نظرة على هذا في العمل:
- `#include
-
- int main(void) {
- int n = 5;
- int m = 10;
-
- if(n > m || n == 15) {
- printf("Either n is greater than m, or n is equal to 15\n");
- }
- else if( n == 5 && m == 10 ) {
- printf("n is equal to 5 and m is equal to 10!\n");
- }
- else if ( !(n == 6)) {
- printf("It is not true that n is equal to 6!\n");
- }
- else if (n > 5) {
- printf("n is greater than 5!\n");
- }
-
- return 0;
- }
-`
+```C
+#include
- `output:
- n is equal to 5 and m is equal to 10!
-`
+int main(void) {
+ int n = 5;
+ int m = 10;
+
+ if(n > m || n == 15) {
+ printf("Either n is greater than m, or n is equal to 15\n");
+ }
+ else if( n == 5 && m == 10 ) {
+ printf("n is equal to 5 and m is equal to 10!\n");
+ }
+ else if ( !(n == 6)) {
+ printf("It is not true that n is equal to 6!\n");
+ }
+ else if (n > 5) {
+ printf("n is greater than 5!\n");
+ }
+
+ return 0;
+}
+```
+
+```
+output:
+n is equal to 5 and m is equal to 10!
+```
إليك المجموعة الأولى من الأقواس: `n > m || n == 5` . سيكون هذا صحيحًا إذا كان n أكبر من m ، أو إذا كان n تساوي 5. n ليس أكبر من m ، ولكن n تساوي 5. لأن أحد هذه الأشياء يكون صحيحًا ، ويتم ضمها بواسطة ، أو ، سيكون البيان صحيحًا وستتم طباعة التعليمة البرمجية داخل.
@@ -167,16 +178,18 @@ localeTitle: مشغلات منطقية وبيانات إذا كانت
ونتيجة لذلك ، هذه العبارة إذا كانت صحيحة وصالحة:
- `if(12452) {
- printf("This is true!\n")
- }
-`
+```C
+if(12452) {
+ printf("This is true!\n")
+}
+```
حسب التصميم ، 0 غير صحيح ومن قبل الاصطلاح ، 1 صحيح. في الواقع ، إليك نظرة على مكتبة `stdbool.h` الموضحة مسبقًا:
- `#define false 0
- #define true 1
-`
+```C
+#define false 0
+#define true 1
+```
هناك في الواقع أكثر قليلا من ذلك ، ولكن هذا هو الجزء الذي يقوم بكل العمل.
diff --git a/guide/arabic/c/if/index.md b/guide/arabic/c/if/index.md
index e2bfd22fc5..7777b6c2dc 100644
--- a/guide/arabic/c/if/index.md
+++ b/guide/arabic/c/if/index.md
@@ -31,31 +31,33 @@ localeTitle: إذا
## مثال
- `#include
-
- int main () {
-
- // Local variable definition
- int a = 10;
-
- // Check the boolean condition
- if(a < 5) {
- // If condition is true then print the following
- printf("a is less than 5!\n" );
- }
- else {
- // If condition is false then print the following
- printf("a is not less than 5!\n" );
- }
-
- printf("Value of a is : %d\n", a);
-
- return 0;
- }
-`
+```
+#include
+
+int main () {
+
+ // Local variable definition
+ int a = 10;
+
+ // Check the boolean condition
+ if(a < 5) {
+ // If condition is true then print the following
+ printf("a is less than 5!\n" );
+ }
+ else {
+ // If condition is false then print the following
+ printf("a is not less than 5!\n" );
+ }
+
+ printf("Value of a is : %d\n", a);
+
+ return 0;
+}
+```
## انتاج |
- `-> a is not less than 5!
- -> Value of a is : 100
-`
\ No newline at end of file
+```
+-> a is not less than 5!
+-> Value of a is : 100
+```
\ No newline at end of file
diff --git a/guide/arabic/c/index.md b/guide/arabic/c/index.md
index c574961d1d..b84530449d 100644
--- a/guide/arabic/c/index.md
+++ b/guide/arabic/c/index.md
@@ -22,28 +22,31 @@ localeTitle: C
## مرحبا العالم في C
- `#include
-
- int main(void)
- {
- printf("hello, world\n");
- return 0;
- }
-`
+```C
+#include
+
+int main(void)
+{
+ printf("hello, world\n");
+ return 0;
+}
+```
دعونا كسر هذا البرنامج لأسفل خطوة بخطوة.
الأول هو `#include` :
- `#include // This is called preprocessor directives
-`
+```C
+#include // This is called preprocessor directives
+```
هذه تعليمات إلى المحول البرمجي للعثور على مجموعة من ملفات الرأس وتضمينها. تحتوي ملفات الرأس على تعليمات برمجية إضافية يمكننا استخدامها. في هذه الحالة ، تم إرشاد المحول البرمجي لتضمين `` ، والذي يحتوي على جميع أنواع الوظائف المفيدة مثل `printf()` . يمكننا أيضا أن يكتب ذلك ك `#include"stdio.h"` . سنتطرق إلى التفاصيل المتعلقة بالوظائف التي يتم إجراؤها لاحقًا ، ولكن في الوقت الحالي تذكر فقط أن إحدى الوظائف هي مجموعة من الرموز التي يمكننا استخدامها.
- `int main(void)
- {
- }
-`
+```C
+int main(void)
+{
+}
+```
هذا الرمز يعلن الوظيفة الرئيسية. وتتمثل المهمة الرئيسية الخاصة ، وسوف تحصل دائما على الدعوة ودائما هو الجزء الرئيسي من البرنامج. إذا لم يكن هذا في برنامجك ، فلا يمكن تشغيل البرنامج ولن يتم ترجمته.
@@ -68,8 +71,9 @@ localeTitle: C
ينتهي البرنامج بعبارة عودة:
- `return 0;
-`
+```C
+return 0;
+```
هذا يدل على أن الوظيفة قد انتهت وأنه يجب أن تنتهي بإعطاء قيمة 0 إلى أي مما جعلها تعمل. عندما تقوم بتشغيل التعليمات البرمجية على جهاز الكمبيوتر الخاص بك ، فمن الجيد أن يكون ذلك لأنه يسمح للبرامج الأخرى بالتفاعل مع جهازك بطريقة أفضل.
@@ -87,8 +91,9 @@ localeTitle: C
لتشغيل برنامج C ، يجب أن يتم تجميعها. لكي يتم التحويل من سطر الأوامر باستخدام gcc ، قم بتشغيل الأمر التالي من المحطة الطرفية الخاصة بك:
- `gcc -o helloworld ./helloworld.c
-`
+```shell
+gcc -o helloworld ./helloworld.c
+```
`gcc` هو Gnu C Compiler ، وسوف يقوم بتجميع الملف C الذي نعطيه إلى برنامج يمكن تشغيله بواسطة الكمبيوتر.
@@ -96,8 +101,9 @@ localeTitle: C
بمجرد تجميعها ، قم بتشغيل الأمر التالي:
- `./helloworld
-`
+```shell
+./helloworld
+```
إذا سار كل شيء بشكل جيد ، يجب أن ترى `Hello, World!` المطبوعة على الشاشة.
diff --git a/guide/arabic/c/loops/index.md b/guide/arabic/c/loops/index.md
index 5af57cac71..641af9cbf4 100644
--- a/guide/arabic/c/loops/index.md
+++ b/guide/arabic/c/loops/index.md
@@ -12,27 +12,29 @@ localeTitle: الحلقات من جميع الأنواع
### بناء الجملة
- `while(condition) {
- statement(s);
- }
-`
+```
+while(condition) {
+ statement(s);
+}
+```
إليك مثال على ذلك:
- `#include
-
- int main(void) {
- int my_number = 0;
-
- while(my_number != 10){
- ++my_number;
- }
-
- printf("my_number = %i", my_number);
-
- return 0;
- }
-`
+```C
+#include
+
+int main(void) {
+ int my_number = 0;
+
+ while(my_number != 10){
+ ++my_number;
+ }
+
+ printf("my_number = %i", my_number);
+
+ return 0;
+}
+```
في حين أن العبارة داخل حلقة أثناء صحيحة ، سيتم تشغيل المحتوى داخل الأقواس. عندما يضرب البرنامج `while(my_number)` ، فإنه يتحقق من العبارة داخل الأقواس. إذا كانت هذه العبارة خاطئة ، فلن تقوم بتشغيل حلقة while. بدلاً من ذلك ، سيتم تخطي التعليمة البرمجية بين القوسين بين قوسين وسيتم التقاطها من حيث توقفت.
@@ -40,27 +42,29 @@ localeTitle: الحلقات من جميع الأنواع
الشيء الذي قد تصادفه عند اللعب مع هذه الحلقة أو أي حلقة أخرى هو فكرة حلقة لا نهائية يمكن تشغيلها لعدد لا نهائي من المرات لأنه لا يوجد شيء لإيقافه. في بعض الأحيان يمكن أن يحدث هذا عن قصد:
- `while(1) {
- printf("This will get printed forever unless the program is stopped!");
- }
-`
+```C
+while(1) {
+ printf("This will get printed forever unless the program is stopped!");
+}
+```
بالطبع ، يمكن أن يحدث أيضا عن طريق الخطأ. إليك الشفرة نفسها التي كانت عليها من قبل ، ولكن مع اختلاف دقيق يجعلها في حلقة لا نهائية:
- `#include
-
- int main(void) {
- int my_number = 11;
-
- while(my_number != 10){
- ++my_number;
- }
-
- printf("my_number = %i", my_number);
-
- return 0;
- }
-`
+```C
+#include
+
+int main(void) {
+ int my_number = 11;
+
+ while(my_number != 10){
+ ++my_number;
+ }
+
+ printf("my_number = %i", my_number);
+
+ return 0;
+}
+```
عندما يتم تقييم هذه الحلقة في `my_number` ، سيتم التحقق من `my_number` لمعرفة ما إذا كانت ليست 10. لم يتم ذلك ، لأنه تمت تهيئتها في 11 ، لذا سيتم تشغيل الشفرة داخل الحلقة بينما سيكون `my_number` 12. 12 لا يساوي 10 ، لذلك سيتم تشغيل التعليمات البرمجية داخل حلقة أثناء و `my_number` سيكون 13. سوف يستمر تشغيل هذا إلى الأبد لأن هذا الشرط لن تصبح خاطئة أبداً - الطريقة الوحيدة للتوقف هو أن يتم فرض البرنامج للتوقف عن التشغيل. هذا مثال على حلقة لا نهائية ، لأنه إذا تُرك بمفرده ، فسوف يتم تشغيل عدد لا نهائي من المرات.
@@ -70,27 +74,29 @@ localeTitle: الحلقات من جميع الأنواع
### بناء الجملة
- `do {
- statement(s);
- } while( condition );
-`
+```
+do {
+ statement(s);
+} while( condition );
+```
وإليك نظرة على ذلك:
- `#include
-
- int main(void){
- int a = 0;
-
- do {
- a++
- } while(a == -123);
-
- printf("%i\n", a);
-
- return 0;
- }
-`
+```C
+#include
+
+int main(void){
+ int a = 0;
+
+ do {
+ a++
+ } while(a == -123);
+
+ printf("%i\n", a);
+
+ return 0;
+}
+```
إذا كانت هذه حلقة مستمرة ، فلن يتم تشغيل الرمز الموجود بين الأقواس لأن هذا الشرط ليس صحيحًا عند إجراء التقييم. ومع ذلك ، نظرًا لأن هذه حلقة do-while ، سيتم تنفيذ الكود مرة واحدة ، ثم يتم إجراء التقييم لمعرفة ما إذا كان يجب إجراء ذلك مرة أخرى. تعد "مهام المهام أثناء العمل" مفيدة عندما تعرف أنك تريد القيام بشيء ما مرة واحدة ، ولكن قد تحتاج إلى تشغيله مرة أخرى بعد ذلك.
@@ -100,11 +106,12 @@ localeTitle: الحلقات من جميع الأنواع
### بناء الجملة
- `for(initialisation; condition; changer)
- {
- statement(s);
- }
-`
+```
+for(initialisation; condition; changer)
+{
+ statement(s);
+}
+```
إليك مثال على ذلك:
@@ -127,8 +134,9 @@ localeTitle: الحلقات من جميع الأنواع
الضرب هو مجرد تكرار زائد ، لذلك هذا هو إضافة على `a` ، `b` مرة. دعونا نلقي نظرة على على `for` قمة على وجه الخصوص:
- `for(int count = 0; count != b; count++)
-`
+```C
+for(int count = 0; count != b; count++)
+```
على عكس الحلقة ، هناك ثلاثة أشياء في قوسينا مفصولة بفواصل منقوطة. القسم الأول هو التهيئة ، ويشار إليه بـ "التهيئة": فهو يسمح لك بإنشاء متغير جديد وتعيين قيمة له ، أو تعيين متغير موجود إلى قيمة مختلفة ، أو لا يمكنك تعيين أي شيء ووضعه فاصلة منقوطة.
@@ -198,14 +206,15 @@ localeTitle: الحلقات من جميع الأنواع
خذ لحظة للنظر في ما سيفعله هذا الرمز:
- `for(;;){
- printf("hello, world! \n");
- }
-
- while("Free Code Camp"){
- printf("hello, world! \n");
- }
-`
+```C
+for(;;){
+ printf("hello, world! \n");
+}
+
+while("Free Code Camp"){
+ printf("hello, world! \n");
+}
+```
لا يوجد شيء في قسم التهيئة ، لذا لم تتم تهيئة أي شيء. هذا أمر جيد ، ويتم ذلك أحيانًا لأنك لا تريد دائمًا أو تحتاج إلى تهيئة أي شيء.
@@ -217,9 +226,10 @@ localeTitle: الحلقات من جميع الأنواع
خلال هذه الصفحة ، قرأت أن الكود "داخل الأقواس" هو ما يتم تشغيله ، وهذا صحيح في الغالب. ومع ذلك ، ماذا لو لم تكن هناك أقواس؟
- `while(true)
- printf("hello, world! \n");
-`
+```C
+while(true)
+ printf("hello, world! \n");
+```
في حالات مثل هذه ، سيعامل C السطر التالي باعتباره المحتوى الوحيد الذي يحتاج إلى حلقات. يتجاهل C المسافات البيضاء ، بحيث تكون المسافة البادئة موجودة فقط للوضوح. سيتم التعامل مع ذلك السطر فقط كما لو كان في الحلقة ، وهذه خاصية إذا كانت هناك عبارات لكل حلقات وحلقات أثناء المشاركة. نظرًا لأنه يتم تجاهل المساحة البيضاء ، فإن موضع الإعلان لا يهم: يمكن أن يكون على نفس السطر أو السطر التالي أو 300 سطر ومسافتين لأسفل طالما لا توجد أسطر أخرى من الكود بينهما. يمكن أن تجعل هذه الميزة التعليمات البرمجية تبدو منظفاً قليلاً عندما يكون لديك سطر واحد فقط من التعليمات البرمجية لتشغيل في عبارة.
@@ -227,8 +237,9 @@ localeTitle: الحلقات من جميع الأنواع
إذا لم تكن هناك أقواس ، سيبدو المحول البرمجي فقط في السطر التالي ويكون ذلك هو محتوى الحلقة. تخبر الفواصل المنقوطة المترجم بأن الخط قد انتهى. مع هذه الأشياء مجتمعة ، يمكن أن ننتظر C حتى يصبح شيء صحيح. لنفترض أن لدينا طريقة تسمى `is_button_pressed` وترجع false إذا لم يتم الضغط على زر ، وصحيح إذا تم الضغط على زر:
- `while(!is_button_pressed());
-`
+```C
+while(!is_button_pressed());
+```
لا يحدث شيء في هذه الحلقة ، لأن الخط الوحيد الذي سينظر إليه هو فاصلة منقوطة. نتيجة لذلك ، سيتم استدعاء الأسلوب `is_button_pressed` ، وسيتم تقييم قيمة الإرجاع الخاصة به. إذا لم يتم الضغط على الزر وكانت قيمة الإرجاع خاطئة ، فإن `!` سوف تقلبه إلى true حتى يتم تشغيل الوظيفة مرة أخرى وتقييمها مرة أخرى. إذا كانت قيمة الإرجاع صحيحة ، فإن `!` سوف تقلبه إلى false وستخرج الحلقة الداخلية.
@@ -248,67 +259,71 @@ localeTitle: الحلقات من جميع الأنواع
#### مثال 1: برنامج لطباعة نصف الهرم باستخدام \*
- `*
- * *
- * * *
- * * * *
- * * * * *
-`
+```
+*
+* *
+* * *
+* * * *
+* * * * *
+```
**مصدر الرمز**
- `#include
-
- int main()
- {
- int i, j, rows;
-
- printf("Enter number of rows: ");
- scanf("%d",&rows);
-
- for(i=1; i<=rows; ++i)
- {
- for(j=1; j<=i; ++j)
- {
- printf("* ");
- }
- printf("\n");
- }
- return 0;
- }
-`
+```c
+#include
+
+int main()
+{
+ int i, j, rows;
+
+ printf("Enter number of rows: ");
+ scanf("%d",&rows);
+
+ for(i=1; i<=rows; ++i)
+ {
+ for(j=1; j<=i; ++j)
+ {
+ printf("* ");
+ }
+ printf("\n");
+ }
+ return 0;
+}
+```
#### مثال 2: برنامج لطباعة نصف الهرم باستخدام الأرقام
- `1
- 1 2
- 1 2 3
- 1 2 3 4
- 1 2 3 4 5
-`
+```
+1
+1 2
+1 2 3
+1 2 3 4
+1 2 3 4 5
+```
**مصدر الرمز**
- `#include
-
- int main()
- {
- int i, j, rows;
-
- printf("Enter number of rows: ");
- scanf("%d",&rows);
-
- for(i=1; i<=rows; ++i)
- {
- for(j=1; j<=i; ++j)
- {
- printf("%d ",j);
- }
- printf("\n");
- }
- return 0;
- }
-`
+```c
+#include
+
+int main()
+{
+ int i, j, rows;
+
+ printf("Enter number of rows: ");
+ scanf("%d",&rows);
+
+ for(i=1; i<=rows; ++i)
+ {
+ for(j=1; j<=i; ++j)
+ {
+ printf("%d ",j);
+ }
+ printf("\n");
+ }
+ return 0;
+}
+```
#### مثال 3: برنامج لطباعة نصف الهرم باستخدام الحروف الهجائية
@@ -321,40 +336,42 @@ localeTitle: الحلقات من جميع الأنواع
**مصدر الرمز**
- `#include
-
- int main()
- {
- int i, j;
- char input, alphabet = 'A';
-
- printf("Enter the uppercase character you want to print in last row: ");
- scanf("%c",&input);
-
- for(i=1; i <= (input-'A'+1); ++i)
- {
- for(j=1;j<=i;++j)
- {
- printf("%c", alphabet);
- }
- ++alphabet;
-
- printf("\n");
- }
- return 0;
- }
-`
+```c
+#include
+
+int main()
+{
+ int i, j;
+ char input, alphabet = 'A';
+
+ printf("Enter the uppercase character you want to print in last row: ");
+ scanf("%c",&input);
+
+ for(i=1; i <= (input-'A'+1); ++i)
+ {
+ for(j=1;j<=i;++j)
+ {
+ printf("%c", alphabet);
+ }
+ ++alphabet;
+
+ printf("\n");
+ }
+ return 0;
+}
+```
برامج لطباعة نصف الهرم المقلوب باستخدام \* والأرقام
#### مثال 4: نصف الهرم المقلوب باستخدام \*
- `* * * * *
- * * * *
- * * *
- * *
- *
-`
+```
+* * * * *
+* * * *
+* * *
+* *
+*
+```
**مصدر الرمز**
@@ -382,36 +399,38 @@ localeTitle: الحلقات من جميع الأنواع
#### مثال 5: هرم نصف مقلوب باستخدام الأرقام
- `1 2 3 4 5
- 1 2 3 4
- 1 2 3
- 1 2
- 1
-`
+```
+1 2 3 4 5
+1 2 3 4
+1 2 3
+1 2
+1
+```
**مصدر الرمز**
- `#include
-
- int main()
- {
- int i, j, rows;
-
- printf("Enter number of rows: ");
- scanf("%d",&rows);
-
- for(i=rows; i>=1; --i)
- {
- for(j=1; j<=i; ++j)
- {
- printf("%d ",j);
- }
- printf("\n");
- }
-
- return 0;
- }
-`
+```c
+#include
+
+int main()
+{
+ int i, j, rows;
+
+ printf("Enter number of rows: ");
+ scanf("%d",&rows);
+
+ for(i=rows; i>=1; --i)
+ {
+ for(j=1; j<=i; ++j)
+ {
+ printf("%d ",j);
+ }
+ printf("\n");
+ }
+
+ return 0;
+}
+```
#### مثال 6: برنامج لطباعة الهرم الكامل باستخدام \*
@@ -464,82 +483,85 @@ localeTitle: الحلقات من جميع الأنواع
**مصدر الرمز**
- `#include
-
- int main()
- {
- int i, space, rows, k=0, count = 0, count1 = 0;
-
- printf("Enter number of rows: ");
- scanf("%d",&rows);
-
- for(i=1; i<=rows; ++i)
- {
- for(space=1; space <= rows-i; ++space)
- {
- printf(" ");
- ++count;
- }
-
- while(k != 2*i-1)
- {
- if (count <= rows-1)
- {
- printf("%d ", i+k);
- ++count;
- }
- else
- {
- ++count1;
- printf("%d ", (i+k-2*count1));
- }
- ++k;
- }
- count1 = count = k = 0;
-
- printf("\n");
- }
- return 0;
- }
-`
+```c
+#include
+
+int main()
+{
+ int i, space, rows, k=0, count = 0, count1 = 0;
+
+ printf("Enter number of rows: ");
+ scanf("%d",&rows);
+
+ for(i=1; i<=rows; ++i)
+ {
+ for(space=1; space <= rows-i; ++space)
+ {
+ printf(" ");
+ ++count;
+ }
+
+ while(k != 2*i-1)
+ {
+ if (count <= rows-1)
+ {
+ printf("%d ", i+k);
+ ++count;
+ }
+ else
+ {
+ ++count1;
+ printf("%d ", (i+k-2*count1));
+ }
+ ++k;
+ }
+ count1 = count = k = 0;
+
+ printf("\n");
+ }
+ return 0;
+}
+```
#### مثال 8: الهرم الكامل المعكوس باستخدام \*
- `* * * * * * * * *
- * * * * * * *
- * * * * *
- * * *
- *
-`
+```
+* * * * * * * * *
+ * * * * * * *
+ * * * * *
+ * * *
+ *
+```
**مصدر الرمز**
- `#include
-
- int main()
- {
- int rows, i, j, space;
-
- printf("Enter number of rows: ");
- scanf("%d",&rows);
-
- for(i=rows; i>=1; --i)
- {
- for(space=0; space < rows-i; ++space)
- printf(" ");
-
- for(j=i; j <= 2*i-1; ++j)
- printf("* ");
-
- for(j=0; j < i-1; ++j)
- printf("* ");
-
- printf("\n");
- }
-
- return 0;
- }
-`
+```c
+#include
+
+int main()
+{
+ int rows, i, j, space;
+
+ printf("Enter number of rows: ");
+ scanf("%d",&rows);
+
+ for(i=rows; i>=1; --i)
+ {
+ for(space=0; space < rows-i; ++space)
+ printf(" ");
+
+ for(j=i; j <= 2*i-1; ++j)
+ printf("* ");
+
+ for(j=0; j < i-1; ++j)
+ printf("* ");
+
+ printf("\n");
+ }
+
+ return 0;
+}
+```
#### مثال 9: طباعة مثلث باسكال
@@ -553,66 +575,69 @@ localeTitle: الحلقات من جميع الأنواع
**مصدر الرمز**
- `#include
-
- int main()
- {
- int rows, coef = 1, space, i, j;
-
- printf("Enter number of rows: ");
- scanf("%d",&rows);
-
- for(i=0; i
+
+int main()
+{
+ int rows, coef = 1, space, i, j;
+
+ printf("Enter number of rows: ");
+ scanf("%d",&rows);
+
+ for(i=0; i
-
- int main()
- {
- int rows, i, j, number= 1;
-
- printf("Enter number of rows: ");
- scanf("%d",&rows);
-
- for(i=1; i <= rows; i++)
- {
- for(j=1; j <= i; ++j)
- {
- printf("%d ", number);
- ++number;
- }
-
- printf("\n");
- }
-
- return 0;
- }
-`
\ No newline at end of file
+```c
+#include
+
+int main()
+{
+ int rows, i, j, number= 1;
+
+ printf("Enter number of rows: ");
+ scanf("%d",&rows);
+
+ for(i=1; i <= rows; i++)
+ {
+ for(j=1; j <= i; ++j)
+ {
+ printf("%d ", number);
+ ++number;
+ }
+
+ printf("\n");
+ }
+
+ return 0;
+}
+```
\ No newline at end of file
diff --git a/guide/arabic/c/macros/index.md b/guide/arabic/c/macros/index.md
index ec0022cebb..f34c608082 100644
--- a/guide/arabic/c/macros/index.md
+++ b/guide/arabic/c/macros/index.md
@@ -10,18 +10,21 @@ localeTitle: وحدات الماكرو في C
يتم استخدام الكلمة الأساسية `#define` لتحديد وحدات الماكرو الجديدة. يتبعه اسم ومحتوى. حسب الاصطلاح ، تتم كتابة أسماء الماكرو في أحرف كبيرة.
- `#define PI 3.14
-`
+```C
+#define PI 3.14
+```
إذا كنت تستخدم الماكرو بهذه الطريقة:
- `printf("Value of PI: %d", PI);
-`
+```C
+printf("Value of PI: %d", PI);
+```
هو نفس كتابة هذا:
- `printf("Value of PI: %d", 3.14);
-`
+```C
+printf("Value of PI: %d", 3.14);
+```
#### أنواع وحدات الماكرو
@@ -31,33 +34,39 @@ localeTitle: وحدات الماكرو في C
تشبه دالة تستخدم نفس الكلمة `#define` . الفرق هو أنك تستخدم قوسين زوج بعد اسم الدالة.
- `#define hello_world() printf("Hello World!")
-`
+```C
+#define hello_world() printf("Hello World!")
+```
لذلك اتصلت:
- `hello_world()
-`
+```C
+hello_world()
+```
لقد حصلت:
- `printf("Hello World!");
-`
+```C
+printf("Hello World!");
+```
يمكنك تعيين المعلمات أيضًا:
- `#define hello(X) printf("Hello " X "!")
-`
+```C
+#define hello(X) printf("Hello " X "!")
+```
الآن الاتصال:
- `hello("World");
-`
+```C
+hello("World");
+```
تحصل على equivallent:
- `printf("Hello World!");
-`
+```C
+printf("Hello World!");
+```
#### معلومات اكثر:
diff --git a/guide/arabic/c/malloc/index.md b/guide/arabic/c/malloc/index.md
index db1244bb78..5e802acad4 100644
--- a/guide/arabic/c/malloc/index.md
+++ b/guide/arabic/c/malloc/index.md
@@ -13,20 +13,23 @@ malloc () جزء من stdlib.h ولتتمكن من استخدامه تحتاج
يخصص malloc () ذاكرة حجم المطلوب وإرجاع مؤشر إلى بداية كتلة المخصصة. للاحتفاظ بالمؤشر المرتجع ، يجب علينا إنشاء متغير. يجب أن يكون المؤشر من نفس النوع المستخدم في بيان malloc.
سنقوم هنا بإعداد مؤشر إلى مجموعة من النمل قريباً
- `int* arrayPtr;
-`
+```C
+int* arrayPtr;
+```
بخلاف اللغات الأخرى ، لا تعرف C نوع البيانات الذي تقوم بتخصيص الذاكرة له ؛ يجب أن يقال. لحسن الحظ ، لدى C دالة تسمى `sizeof()` يمكننا استخدامها.
- `arrayPtr = (int *)malloc(10 * sizeof(int));
-`
+```C
+arrayPtr = (int *)malloc(10 * sizeof(int));
+```
استخدم هذا البيان malloc لوضع الذاكرة جانباً لمجموعة من 10 أعداد صحيحة. بما أن الأحجام يمكن أن تتغير بين أجهزة الكمبيوتر ، فمن المهم استخدام الدالة sizeof () لحساب الحجم على الكمبيوتر الحالي.
ستحتاج أي ذاكرة مخصصة أثناء تنفيذ البرنامج إلى تحريرها قبل إغلاق البرنامج. `free` الذاكرة ، يمكننا استخدام وظيفة free ()
- `free( arrayPtr );
-`
+```C
+free( arrayPtr );
+```
سيؤدي هذا البيان إلى إلغاء تخصيص الذاكرة التي تم تخصيصها مسبقًا. لا يأتي C مع `garbage collector` مثل بعض اللغات الأخرى ، مثل Java. نتيجة لذلك ، سيتم تخصيص الذاكرة التي لم يتم تحريرها بشكل صحيح بعد إغلاق البرنامج.
diff --git a/guide/arabic/c/math/index.md b/guide/arabic/c/math/index.md
index 6885955e64..45e3f1acb1 100644
--- a/guide/arabic/c/math/index.md
+++ b/guide/arabic/c/math/index.md
@@ -14,8 +14,9 @@ localeTitle: الرياضيات الأساسية
يتم تنفيذ الإضافة بعلامة `+` ، مثل:
- `result = a + b;
-`
+```C
+result = a + b;
+```
في المثال أعلاه ، ستكون `result` المتغيرة مساوية لـ + b.
@@ -23,8 +24,9 @@ localeTitle: الرياضيات الأساسية
يتم تنفيذ الإضافة باستخدام `-` مثل:
- `result = a - b;
-`
+```C
+result = a - b;
+```
في المثال أعلاه ، ستكون `result` المتغيرة مساوية للقيمة a - b.
@@ -32,8 +34,9 @@ localeTitle: الرياضيات الأساسية
يتم تنفيذ الضرب بـ `*` ، مثل:
- `result = a * b;
-`
+```C
+result = a * b;
+```
في المثال أعلاه ، ستكون `result` المتغيرة مساوية للقيمة مضروبًا في b.
@@ -41,8 +44,9 @@ localeTitle: الرياضيات الأساسية
يتم تنفيذ القسم بـ `/` ، مثل:
- `result = a / b;
-`
+```C
+result = a / b;
+```
في المثال أعلاه ، ستكون `result` المتغيرة مساوية للفقرة ب. هذا ليس دائما جزءا من أكثر من ب ، ولكن. عند التعامل مع الأعداد الصحيحة ، تصبح الأمور مختلفة قليلاً عن ذلك لاحقًا.
@@ -56,8 +60,9 @@ localeTitle: الرياضيات الأساسية
يعتبر مشغل modulo أكثر أهمية مما قد تفكر به ، خاصة في C حيث يتم فرض الفرق بين النقطة العائمة والأرقام الصحيحة. الأمر يستحق أن تكون مرتاحًا. إليك مثال على ذلك:
- `result = a % b;
-`
+```C
+result = a % b;
+```
في المثال أعلاه ، ستكون `result` مساوية ل modulo b.
@@ -79,8 +84,9 @@ localeTitle: الرياضيات الأساسية
الصب (الموصوف لاحقا) هو أحد الحلول. والآخر هو استخدام أرقام النقطة العائمة. إذا كان أحد الأرقام أو كلاهما قيد التشغيل رقم نقطة عائمة ، ستكون النتيجة رقمًا عائمًا. يصبح هذا الأمر أكثر تعقيدًا عندما نبدأ في التعامل مع ترتيب العمليات ، ولكن في الوقت الحالي ، كن على علم بأن هذا يعمل:
- `double result = 23.0 / 2;
-`
+```C
+double result = 23.0 / 2;
+```
# مثال كامل
diff --git a/guide/arabic/c/more-math/index.md b/guide/arabic/c/more-math/index.md
index 3f8b6902ca..cee609565a 100644
--- a/guide/arabic/c/more-math/index.md
+++ b/guide/arabic/c/more-math/index.md
@@ -24,12 +24,13 @@ localeTitle: المزيد من الرياضيات
هناك الكثير من المواقف التي تريد فيها أخذ رقم وإما إلى الأعلى أو الأسفل بنسبة 1. بالنسبة لهذه الحالات ، لدينا عوامل تشغيل ما بعد الإصلاح والإصلاحات المسبقة:
- `1: a++;
- 2: ++a;
-
- 3: a--;
- 4: --a;
-`
+```C
+1: a++;
+2: ++a;
+
+3: a--;
+4: --a;
+```
كلا المثالين 1 و 2 سيزيدان قيمة الواحد تلو الآخر. كل من الأمثلة في 3 و 4 سيقلل من قيمة واحدة. ومع ذلك ، 1 لا تفعل نفس الشيء تمامًا مثل 2 ، و 3 لا تفعل نفس الشيء تمامًا مثل 4. تسمى عوامل ما قبل الإصلاح هذا لأن العملية هي البادئة (2 و 4 هي مشغلات البادئة لدينا). ﯾﻌﻣل ھذا ﺑﺷﮐل طﻔﯾف ﺑﺷﮐل ﻣﺧﺗﻟف ﻋن ﻣﺷﻐﻟﻲ ﻣﺎ ﺑﻌد اﻹﺻﻼح ﻓﻲ 1 و 3. ﯾﻘوم اﻟﻣﺷﻐﻟون ﻣﺳﺑﻘًﺎ ﺑﺈﺟراء اﻟﻌﻣﻟﯾﺔ ، ﺛم إﻋﺎدة اﻟﻘﯾﻣﺔ. عاملو الإصلاح اللاحق يعيدون القيمة ، ثم يقومون بالتزايد.
@@ -39,9 +40,10 @@ localeTitle: المزيد من الرياضيات
C يفعل نفس الشيء: ضع `-` أمام رقم أو متغير - هذا التأثير ، مثل:
- `int number = -3;
- number = -number;
-`
+```C
+int number = -3;
+number = -number;
+```
لذلك ، يبدأ `number` بالسالب 3 ، لكن يصبح بعد ذلك إيجابيًا نظرًا لأن السلبية سالبة إيجابية.
@@ -83,8 +85,9 @@ C يفعل نفس الشيء: ضع `-` أمام رقم أو متغير - هذا
لإجراء تحول لليسار ، استخدم المشغل `<<` ، مثل:
- `c = a << b;
-`
+```C
+c = a << b;
+```
وهذا التحول `a` لمن اليسار `b` بت، ووضع تلك النتيجة تساوي `c` .
@@ -97,13 +100,15 @@ C يفعل نفس الشيء: ضع `-` أمام رقم أو متغير - هذا
في بعض الأحيان تريد زيادة متغير بقيمة معينة. يمكنك فعل هذا:
- `a = a + b;
-`
+```C
+a = a + b;
+```
ومع ذلك ، هذا ما يفعله مشغلو التعيين المركب. بدلا من ذلك ، يمكنك كتابة هذا ، والذي يفعل نفس الشيء بالضبط:
- `a += b;
-`
+```C
+a += b;
+```
هذا موجود لحفنة من المشغلين الآخرين ، أيضا. في ما يلي جدول مفيد لك:
@@ -117,27 +122,29 @@ C يفعل نفس الشيء: ضع `-` أمام رقم أو متغير - هذا
كما تتذكر من مناقشة التقسيم الصحيح ، سيعطي المثال التالي قيمة عدد صحيح بدون أي قيمة عشرية ، لأن كل من الأرقام الموجودة هي أعداد صحيحة:
- `#include
-
- int main(void) {
- int a = 12;
- int b = 5;
-
- printf("a divided by b is %i", a/b);
- }
-`
+```C
+#include
+
+int main(void) {
+ int a = 12;
+ int b = 5;
+
+ printf("a divided by b is %i", a/b);
+}
+```
ومع ذلك ، باستخدام الصب ، يمكننا تحويلها إلى طوافات باستخدام الصب. هذا يسمح لهم أن يتم تقسيمهم على شكل عوامات ، وسوف ترجع المعادلة قيمة عائمة:
- `#include
-
- int main(void) {
- int a = 12;
- int b = 5;
-
- printf("a divided by b is %f", (float) a / b);
- }
-`
+```C
+#include
+
+int main(void) {
+ int a = 12;
+ int b = 5;
+
+ printf("a divided by b is %f", (float) a / b);
+}
+```
وهي الآن نقطة عائمة 12 مقسومة على 5 ، لذلك يقوم هذا بإعادة رقم نقطة عائمة لا يتم اقتطاعها بعد المكان العشري.
@@ -147,8 +154,9 @@ C يفعل نفس الشيء: ضع `-` أمام رقم أو متغير - هذا
هذا هو كل الأشياء المدمجة ، ولكن مثل كيف يمكنك `#include` stdio و stdbool ، يمكنك تضمين مكتبة تسمى `math.h` تحتوي هذه المكتبة على جميع أنواع الوظائف المفيدة لجميع أنواع الرياضيات. من المفيد إعطاء قراءة [لصفحة ويكيبيديا عليه](https://en.wikipedia.org/wiki/C_mathematical_functions#Overview_of_functions) إذا كنت ترغب في الحصول على القائمة الكاملة للوظائف. فيما يلي مثال على كيفية استخدام `abs` ، وهي الأولى في قائمتهم:
- `a = abs(-1);
-`
+```C
+a = abs(-1);
+```
`abs` يحسب القيمة المطلقة للقيمة التي تم تمريرها إليه. في هذه الحالة، هو تلقي ذلك -1، لذلك سوف يتحول ذلك إلى 1، و `a` سوف يكون على قدم المساواة إلى 1. وهناك الكثير أكثر لإعطاء أكثر من ذلك بكثير وظائف، وهذه هي الطريقة التي سوف تكون قادرة على القيام الدعاة، وحساب المثلثات، وأكثر بكثير.
diff --git a/guide/arabic/c/passing-pointers-to-function/index.md b/guide/arabic/c/passing-pointers-to-function/index.md
index 8784797ddf..00b4e55127 100644
--- a/guide/arabic/c/passing-pointers-to-function/index.md
+++ b/guide/arabic/c/passing-pointers-to-function/index.md
@@ -6,39 +6,41 @@ localeTitle: تمرير مؤشرات إلى funtions
C يسمح تمرير مؤشر إلى دالة. لتحقيق ذلك ، قم ببساطة بتعريف المعلمات كنوع مؤشر. تعد هذه الطريقة في تمرير المراجع إلى الدالات مفيدة عندما تريد تعديل المتغيرات الخارجة عن نطاق تلك الوظيفة.
- `// incorrect implementation of swap
- #include
- void swap(int a, int b){
- int c;
- c = a;
- a = b;
- b = c;
- }
- int main(){
- int var1 = 10;
- int var2 = 20;
- swap(var1, var2);
- printf("Value of var1: %d \n", var1); // prints 10
- printf("Value of var2: %d \n", var2); // prints 20
- }
-`
+```C
+// incorrect implementation of swap
+#include
+void swap(int a, int b){
+ int c;
+ c = a;
+ a = b;
+ b = c;
+}
+int main(){
+ int var1 = 10;
+ int var2 = 20;
+ swap(var1, var2);
+ printf("Value of var1: %d \n", var1); // prints 10
+ printf("Value of var2: %d \n", var2); // prints 20
+}
+```
في مثال التعليمة البرمجية هذه ، لا تعمل وظيفة التبديل كما هو مقصود حيث تقوم بتبديل اثنين من المتغيرات الموجودة فقط داخل نطاق تلك الوظيفة. لإصلاح هذا ، نقوم بإجراء تعديل كما هو موضح أدناه.
- `// correct implementation of swap
- #include
- void swap(int* a, int* b){
- int c = *a;
- *a = *b;
- *b = c;
- }
- int main(){
- int var1 = 10;
- int var2 = 20;
- swap(&var1, &var2);
- printf("Value of var1: %d \n", var1); // prints 20
- printf("Value of var2: %d \n", var2); // prints 10
- }
-`
+```C
+// correct implementation of swap
+#include
+void swap(int* a, int* b){
+ int c = *a;
+ *a = *b;
+ *b = c;
+}
+int main(){
+ int var1 = 10;
+ int var2 = 20;
+ swap(&var1, &var2);
+ printf("Value of var1: %d \n", var1); // prints 20
+ printf("Value of var2: %d \n", var2); // prints 10
+}
+```
في المثال الثاني من التعليمات البرمجية ، تمكّنت من تغيير قيم المتغيرات فقط لأنك كنت تعمل باستمرار على عدم الرجوع إلى المؤشر داخل الدالة بدلاً من محاولة تغيير القيم مباشرة.
\ No newline at end of file
diff --git a/guide/arabic/c/pointers/index.md b/guide/arabic/c/pointers/index.md
index b3d78b9dd8..909c292020 100644
--- a/guide/arabic/c/pointers/index.md
+++ b/guide/arabic/c/pointers/index.md
@@ -8,34 +8,37 @@ localeTitle: مؤشرات
#
- `type *var-name;
-`
+```
+type *var-name;
+```
## صنع واستخدام مؤشر
- `#include
-
- int main(void){
- double my_double_variable = 10.1;
- double *my_pointer;
-
- my_pointer = &my_double_variable;
-
- printf("value of my_double_variable: %f\n", my_double_variable);
-
- ++my_double_variable;
-
- printf("value of my_pointer: %f\n", *my_pointer);
-
- return 0;
- }
-`
+```c
+#include
+
+int main(void){
+ double my_double_variable = 10.1;
+ double *my_pointer;
+
+ my_pointer = &my_double_variable;
+
+ printf("value of my_double_variable: %f\n", my_double_variable);
+
+ ++my_double_variable;
+
+ printf("value of my_pointer: %f\n", *my_pointer);
+
+ return 0;
+}
+```
انتاج:
- `value of my_double_variable: 10.100000
- value of my_pointer: 11.100000
-`
+```
+value of my_double_variable: 10.100000
+value of my_pointer: 11.100000
+```
في هذا الرمز ، هناك إعلانان. الأول هو تهيئة متغيرة نموذجية مما يؤدي إلى `double` وتعيينها تساوي 10.1. الجديد في تصريحاتنا هو استخدام `*` . تستخدم العلامة النجمية ( `*` ) عادةً للضرب ، ولكن عندما نستخدمها بوضعها أمام متغير ، فإنها تخبر C بأن هذا متغير مؤشر.
@@ -43,10 +46,11 @@ localeTitle: مؤشرات
مع أخذ ذلك في الاعتبار ، دعونا نلقي نظرة أخرى على هذا الرمز من التعليمات البرمجية:
- `double *my_pointer;
- // my_pointer now stored the address of my_double_variable
- my_pointer = &my_double_variable;
-`
+```c
+double *my_pointer;
+// my_pointer now stored the address of my_double_variable
+my_pointer = &my_double_variable;
+```
تم الإعلان عن `my_pointer` وتم الإعلان عنه كمؤشر. يعرف المترجم C الآن أن `my_pointer` إلى موقع ذاكرة. يعيّن السطر التالي `my_pointer` قيمة موقع ذاكرة باستخدام `&` .
@@ -65,8 +69,9 @@ localeTitle: مؤشرات
يمكنك تعريف مؤشر متعدد في عبارة واحدة كما هو الحال مع المتغيرات القياسية ، مثل:
- `int *x, *y;
-`
+```c
+int *x, *y;
+```
لاحظ أن `*` مطلوب قبل كل متغير. وهذا لأن كونك مؤشرًا يعتبر جزءًا من المتغير وليس جزءًا من نوع البيانات.
@@ -109,9 +114,10 @@ localeTitle: مؤشرات
انتاج |
- `Number1 = 10
- Number2 = 5
-`
+```
+Number1 = 10
+Number2 = 5
+```
يتم تمرير العناوين ، أو مواقع الذاكرة ، من `num1` و `num2` إلى `swap` الدالة ويتم تمثيلها بواسطة المؤشرات `*n1` و `*n2` داخل الدالة. لذلك ، الآن تشير المؤشرات `n1` و `n2` إلى عناوين `num1` و `num2` على التوالي.
@@ -157,18 +163,19 @@ localeTitle: مؤشرات
ألقِ نظرة على هذا الرمز ، الذي يحول شيء من الأحرف الكبيرة إلى الصغيرة:
- `#include
- #include
-
- char *lowerCase (char *string) {
- char *p = string;
- while (*p) {
- if (isupper(*p)) *p = tolower(*p);
- p++;
- }
- return string;
- }
-`
+```c
+#include
+#include
+
+char *lowerCase (char *string) {
+ char *p = string;
+ while (*p) {
+ if (isupper(*p)) *p = tolower(*p);
+ p++;
+ }
+ return string;
+}
+```
يبدأ هذا عن طريق اتخاذ سلسلة (شيء ستتعرف عليه عندما تصل إلى المصفوفات) ويمر عبر كل موقع. لاحظ في p ++. هذا يزيد المؤشر ، مما يعني أنه يبحث في موقع الذاكرة التالي. كل حرف هو موقع ذاكرة ، لذلك في هذه الحالة المؤشر يتطلع إلى كل حرف واتخاذ قرار بشأن ما يجب القيام به لكل واحد.
diff --git a/guide/arabic/c/structures/index.md b/guide/arabic/c/structures/index.md
index ec35123a12..393cf3a021 100644
--- a/guide/arabic/c/structures/index.md
+++ b/guide/arabic/c/structures/index.md
@@ -15,58 +15,63 @@ localeTitle: الهياكل
* يمكن أن تساعدنا الكلمة الأساسية `struct` في تعريف نوع بيانات المعرفة من قبل المستخدم.
- `struct StudentRecord
- {
- char Name[20];
- int Class;
- char Address[30];
- char Phone[10];
- };
-`
+```C
+struct StudentRecord
+{
+ char Name[20];
+ int Class;
+ char Address[30];
+ char Phone[10];
+};
+```
* يمكننا أيضًا تحديد **بنية** باستخدام **الرموز المميزة لـ typedef** مما يجعل تهيئة البنية لاحقًا في برنامجنا أسهل.
- `typedef struct StudentRecord
- {
- char Name[20];
- int Class;
- char Address[30];
- char Phone[10];
- }Record;
-`
+```C
+typedef struct StudentRecord
+{
+ char Name[20];
+ int Class;
+ char Address[30];
+ char Phone[10];
+}Record;
+```
في `main()` ، يتم تعريف **StudentRecord** نوع البيانات المعرفة من قبل المستخدم على النحو التالي:
- `int main(void)
- {
- struct StudentRecord student1;
- }
-`
+```C
+int main(void)
+{
+ struct StudentRecord student1;
+}
+```
وباستخدام **typedef** ، يبدو نوع البيانات المعرفة من قبل المستخدم:
- `int main(void)
- {
- Record student1;
- }
-`
+```C
+int main(void)
+{
+ Record student1;
+}
+```
للوصول إلى البيانات المخزنة في **student1** ، نستخدم عامل نقطة ( **.** ) للوصول إلى محتويات متغير نوع البنية.
- `int main(void)
- {
- struct StudentRecord student1;
- student1.Class = 10;
- printf("Enter Name of Student\n");
- scanf("%s",&student1.Name);
- printf("Enter Address of Student\n");
- scanf("%s",&student1.Address);
- printf("Enter Phone Number of Student\n");
- scanf("%s",&student1.Phone);
- // Printing the Data
- printf("Name: %s \n, Class: %d \n, Address: %s \n, Phone: %s \n",student1.Name, student1.Class, student1.Address, student1.Phone);
- }
-`
+```C
+int main(void)
+{
+ struct StudentRecord student1;
+ student1.Class = 10;
+ printf("Enter Name of Student\n");
+ scanf("%s",&student1.Name);
+ printf("Enter Address of Student\n");
+ scanf("%s",&student1.Address);
+ printf("Enter Phone Number of Student\n");
+ scanf("%s",&student1.Phone);
+ // Printing the Data
+ printf("Name: %s \n, Class: %d \n, Address: %s \n, Phone: %s \n",student1.Name, student1.Class, student1.Address, student1.Phone);
+}
+```
### معلومات اكثر
diff --git a/guide/arabic/c/switch/index.md b/guide/arabic/c/switch/index.md
index 10b087ea55..d304017cf3 100644
--- a/guide/arabic/c/switch/index.md
+++ b/guide/arabic/c/switch/index.md
@@ -34,48 +34,50 @@ localeTitle: تبديل القضية
باستخدام عبارة switch عبر عدة if / else يمكن أن تساهم في زيادة السرعة والقابلية للقراءة.
- `# include
-
- int main() {
-
- char operator;
- double firstNumber,secondNumber;
-
- printf("Enter an operator (+, -, *, /): ");
- scanf("%c", &operator);
-
- printf("Enter two operands: ");
- scanf("%lf %lf",&firstNumber, &secondNumber);
-
- switch (operator) {
- case '+':
- printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber+secondNumber);
- break;
- case '-':
- printf("%.1lf - %.1lf = %.1lf",firstNumber, secondNumber, firstNumber-secondNumber);
- break;
- case '*':
- printf("%.1lf * %.1lf = %.1lf",firstNumber, secondNumber, firstNumber*secondNumber);
- break;
- case '/':
- printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/firstNumber);
- break;
- // Operator is doesn't match any case constant (+, -, *, /)
- default:
- printf("Error! operator is not correct");
- }
-
- return 0;
- }
-`
+```c
+# include
+
+int main() {
+
+ char operator;
+ double firstNumber,secondNumber;
+
+ printf("Enter an operator (+, -, *, /): ");
+ scanf("%c", &operator);
+
+ printf("Enter two operands: ");
+ scanf("%lf %lf",&firstNumber, &secondNumber);
+
+ switch (operator) {
+ case '+':
+ printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber+secondNumber);
+ break;
+ case '-':
+ printf("%.1lf - %.1lf = %.1lf",firstNumber, secondNumber, firstNumber-secondNumber);
+ break;
+ case '*':
+ printf("%.1lf * %.1lf = %.1lf",firstNumber, secondNumber, firstNumber*secondNumber);
+ break;
+ case '/':
+ printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/firstNumber);
+ break;
+ // Operator is doesn't match any case constant (+, -, *, /)
+ default:
+ printf("Error! operator is not correct");
+ }
+
+ return 0;
+}
+```
## انتاج:
- `-> Enter an operator (+, -, *,): -
- -> Enter two operands: 32.5
- -> 12.4
- -> 32.5 - 12.4 = 20.1
-`
+```c
+-> Enter an operator (+, -, *,): -
+-> Enter two operands: 32.5
+-> 12.4
+-> 32.5 - 12.4 = 20.1
+```
## مراجعة: التبديل ضد إذا كان آخر
diff --git a/guide/arabic/c/variables-and-basic-datatypes/index.md b/guide/arabic/c/variables-and-basic-datatypes/index.md
index 760f071d9c..6cdb146cba 100644
--- a/guide/arabic/c/variables-and-basic-datatypes/index.md
+++ b/guide/arabic/c/variables-and-basic-datatypes/index.md
@@ -38,13 +38,15 @@ localeTitle: المتغيرات وأنواع البيانات الأساسية
دعونا نكسر ما فعلناه تحت `Some shingy things` :
- `printf("%d \n", c);
-`
+```C
+printf("%d \n", c);
+```
لطباعة قيمة المتغير `c` ، يمكنك استخدام الدالة `printf()` . لاحظ أن `%d` مضمن في علامات الاقتباس المزدوجة. هذا يخبر الكمبيوتر أن تتوقع قيمة **د** ecimal ، وأنه بعد الفاصلة.
- `printf("%d %d \n", a, b);
-`
+```C
+printf("%d %d \n", a, b);
+```
يمكنك طباعة عدة أعداد صحيحة بالترتيب الموضح بعد الفاصلة.
diff --git a/guide/arabic/c/variables/index.md b/guide/arabic/c/variables/index.md
index 1cbdd2c0cc..7de7ea8764 100644
--- a/guide/arabic/c/variables/index.md
+++ b/guide/arabic/c/variables/index.md
@@ -6,18 +6,19 @@ localeTitle: المتغيرات في C
الآن أنت تعرف ما هي خياراتك مع أنواع البيانات. دعونا نطبقها مع مثال بسيط هنا:
- `#include
-
- int main(void) {
- int my_first_variable = 12;
- double my_second_variable = 983.9;
-
- printf("My int is %i\n", my_first_variable);
- printf("My double is %f\n", my_second_variable);
-
- return 0;
- }
-`
+```C
+#include
+
+int main(void) {
+ int my_first_variable = 12;
+ double my_second_variable = 983.9;
+
+ printf("My int is %i\n", my_first_variable);
+ printf("My double is %f\n", my_second_variable);
+
+ return 0;
+}
+```
هناك الكثير من الأشياء الجديدة لإلقاء نظرة هنا! كنت قد رأيت بالفعل `#include` `int main(void)` ، لذلك هذا لا يستحق المسكن. ما هو الجديد هو `int my_first_variable = 12;` .
@@ -27,8 +28,9 @@ localeTitle: المتغيرات في C
الاسم الفعلي للمتغير ليس مهمًا. يمكن أن يكون ما تشاء ، طالما أنه ليس أيًا من الكلمات التي احتفظ بها C للغة الفعلية ، ولا يمكن أن يتضمن سوى الأرقام والحروف ، وليس أي مسافات. لا يمكن أن يبدأ اسم المتغير برقم. بالمقابل ، يستخدم C أسماء متغيرات واضحة تستبدل الشرطات السفلية للمسافات. يمكن أيضًا أن يكون المتغير camelCase ، مثل هذا:
- `double myFirstVariable = 983.9
-`
+```C
+double myFirstVariable = 983.9
+```
في الواقع ، سيكون بهذه الطريقة بلغات أخرى. ومع ذلك ، في C لا يتم ذلك عادة.
@@ -56,22 +58,23 @@ localeTitle: المتغيرات في C
الآن دعونا نبدأ بتغيير القيم داخل المتغيرات الخاصة بنا. إليك الأمثلة نفسها من قبل ، لكن مع بضعة أسطر أخرى:
- `#include
-
- int main(void) {
- int my_first_variable = 12;
- double my_second_variable = 983.9;
-
- printf("My int is %i\n", my_first_variable);
- printf("My double is %f\n", my_second_variable);
-
- my_second_variable = -18.2 + my_first_variable;
-
- printf("Now my double is %f\n", my_second_variable);
-
- return 0;
- }
-`
+```C
+#include
+
+int main(void) {
+ int my_first_variable = 12;
+ double my_second_variable = 983.9;
+
+ printf("My int is %i\n", my_first_variable);
+ printf("My double is %f\n", my_second_variable);
+
+ my_second_variable = -18.2 + my_first_variable;
+
+ printf("Now my double is %f\n", my_second_variable);
+
+ return 0;
+}
+```
يوجد الآن سطر يقرأ `my_second_variable = -18.2 + my_first_variable;` . تعين هذه المعادلة قيمة جديدة للمتغير الموجود على اليسار. في كل مرة يتم فيها تعيين قيمة جديدة ، يجب أن يكون المتغير الذي يتم تعيينه إليه على اليسار دائمًا ، ويجب أن يكون دائمًا موجودًا بمفرده. سيجد برنامجك نتيجة للجانب الأيمن ، ويعينه للمتغير الموجود على اليسار. في هذه الحالة ، أضفنا _أول_ متغير لي إلى -18.2. المتغير _الأول_ هو 12 ، و -18.2 + 12 هو -6.2 ، بحيث يصبح المتغير _الثاني_ -6.2 بعد هذه الخطوة. سوف نحصل على المزيد من الرياضيات في القليل!
@@ -79,9 +82,10 @@ localeTitle: المتغيرات في C
عند طباعة العوامات والتضاعف ، نحتاج في كثير من الأحيان إلى الدقة بعد النقطة العشرية. اذا كان لدينا
- `float var1 = 15.3;
- printf("%f");
-`
+```C
+float var1 = 15.3;
+printf("%f");
+```
نحصل على `15.300000` . لذلك ، لنفترض أننا نريد مكانين فقط بعد العلامة العشرية لتقديم `15.30` . سنستخدم٪ .2f. لاحظ أننا نستخدم الفاصلة العشرية أمام عدد المنازل العشرية التي نرغب فيها متبوعة بالعلامة f ، ونشير إلى أننا نريد طباعة طافية أو مزدوجة.
diff --git a/guide/arabic/canvas/animation-in-canvas/index.md b/guide/arabic/canvas/animation-in-canvas/index.md
index ea73ed8202..b96df72d0b 100644
--- a/guide/arabic/canvas/animation-in-canvas/index.md
+++ b/guide/arabic/canvas/animation-in-canvas/index.md
@@ -6,37 +6,39 @@ localeTitle: الرسوم المتحركة
لتحريك الأشياء في `canvas` ، استخدم `window.requestAnimationFrame` لإعداد حلقة رسم.
- `function draw() {
- /* code goes here */
- window.requestAnimationFrame(draw);
- }
- window.requestAnimationFrame(draw);
-`
+```js
+function draw() {
+ /* code goes here */
+ window.requestAnimationFrame(draw);
+}
+window.requestAnimationFrame(draw);
+```
سيؤدي الرمز أدناه إلى تشغيل وظيفة `draw` كل إطار.
`canvas` لا يوجد لديه وظائف خاصة تسمح للرسوم المتحركة. عليك فقط أن تستخدم للكتابة في حلقات الرسوم المتحركة. نموذج التصميم المعتاد لحلقات الرسوم المتحركة هو تحديث الحالة ، ثم رسم الحالة. على سبيل المثال ، لرسم مربع يتحرك عبر الشاشة:
- `canvas = document.getElementById("canvas");
- ctx = canvas.getContext('2d');
-
- var x=0;
- var y=50;
- function draw() {
- // reset canvas
- ctx.clearRect(0, 0, canvas.width, canvas.height);
- //update state
- x+=1;
-
- // render state
- ctx.beginPath();
- ctx.rect(x, y, 50, 50);
- ctx.fill();
-
- window.requestAnimationFrame(draw);
- }
- window.requestAnimationFrame(draw);
-`
+```js
+canvas = document.getElementById("canvas");
+ctx = canvas.getContext('2d');
+
+var x=0;
+var y=50;
+function draw() {
+ // reset canvas
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ //update state
+ x+=1;
+
+ // render state
+ ctx.beginPath();
+ ctx.rect(x, y, 50, 50);
+ ctx.fill();
+
+ window.requestAnimationFrame(draw);
+}
+window.requestAnimationFrame(draw);
+```
لرؤية هذا المفهوم في العمل ، راجع صفحة " [الجسيم سيم](/articles/canvas/particle-sim) ".
diff --git a/guide/arabic/canvas/basic-usage/index.md b/guide/arabic/canvas/basic-usage/index.md
index fa2f092d50..529d16e1c5 100644
--- a/guide/arabic/canvas/basic-usage/index.md
+++ b/guide/arabic/canvas/basic-usage/index.md
@@ -6,17 +6,18 @@ localeTitle: الاستخدام الأساسي
عند استخدام لوحة الرسم القماشية ، ضع لوحة قماشية أولاً في المستند كعنصر.
- `
-
-`
+```html
+
+```
تتحكم خصائص `width` `height` في حجم اللوحة. تتحكم هذه السمات في حجم الرسم القماشي ، وليس الحجم المعروض الفعلي. راجع صفحة "أبعاد Canvas" لمزيد من المعلومات.
لاستخدام `canvas` رسم ، يجب أولاً أن نأخذ العنصر من الصفحة كعنصر DOM ، ثم نحصل على سياق رسم منه.
- `var canvas = document.getElementById("canvas");
- var ctx = canvas.getContext('2d');
-`
+```js
+var canvas = document.getElementById("canvas");
+var ctx = canvas.getContext('2d');
+```
سيتم إجراء جميع مكالمات الرسم بعد ذلك من كائن `ctx` . يمثل `ctx` سياق الرسم للكائن ، ويحتوي على معلومات حول مساحة الرسم ثنائية الأبعاد. كائن `canvas` هو عنصر DOM الفعلي. يسمح لنا التفاعل معها بالوصول إلى سمات مثل `width` `height` .
diff --git a/guide/arabic/canvas/canvas-dimensions/index.md b/guide/arabic/canvas/canvas-dimensions/index.md
index 5314ca308d..c039680eda 100644
--- a/guide/arabic/canvas/canvas-dimensions/index.md
+++ b/guide/arabic/canvas/canvas-dimensions/index.md
@@ -14,16 +14,17 @@ localeTitle: أبعاد قماش
لجعل حجم سياق الرسم يتطابق مع الحجم المعروض لعنصر `canvas` ، يتعين علينا فرض هذا في الوقت الفعلي. إحدى الممارسات الشائعة هي وضع المعالج التالي في `onResize` إصغاء `onResize` .
- `// somewhere early in the script
- var canvas = document.getElementById("canvas");
- ...
-
- window.addEventListener("resize", function() {
- canvas.setAttribute("width", canvas.scrollWidth);
- canvas.setAttribute("height", canvas.scrollHeight);
- console.log(canvas.offsetWidth);
- });
-`
+```js
+// somewhere early in the script
+var canvas = document.getElementById("canvas");
+...
+
+window.addEventListener("resize", function() {
+ canvas.setAttribute("width", canvas.scrollWidth);
+ canvas.setAttribute("height", canvas.scrollHeight);
+ console.log(canvas.offsetWidth);
+});
+```
#### معلومات اكثر: