Skip to content

Commit

Permalink
New loop coruses, fixing some coures
Browse files Browse the repository at this point in the history
  • Loading branch information
TeaByte committed Feb 23, 2024
1 parent 69509b8 commit 4973939
Show file tree
Hide file tree
Showing 12 changed files with 141 additions and 24 deletions.
6 changes: 3 additions & 3 deletions courses/functions/early-return-pattern.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ function myFun() {
myFun();
```

ما ورد أعلاه سيعرض السلسلة `Hello` في وحدة التحكم، ويعيد السلسلة `World` من
الدالة. لن يتم عرض السلسلة `byebye` أبدًا في وحدة التحكم، لأن الوظيفة تخرج عند
بيان الإرجاع.
ما ورد في المثال السابق سيعرض السلسلة `Hello` في وحدة التحكم، ويعيد السلسلة
`World` من الدالة. لن يتم عرض السلسلة `byebye` أبدًا في وحدة التحكم، لأن الوظيفة
تخرج عند بيان الإرجاع.

<div class="quiz">
نعتذر عن عدم وجود اختبار لهذا الدرس حالياً. نحن نعمل بجد لإعداد اختبارات لجميع الدروس وسنقوم بتوفيرها في أقرب وقت ممكن.
Expand Down
27 changes: 27 additions & 0 deletions courses/loops/iterate-through-an-array-with-a-for-loop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
title: التكرار على مصفوفة باستخدام حلقة
snippet: إحدى المهام الشائعة في الحلقات هي التكرار عبر محتويات المصفوفة
order: 4
---

إحدى المهام الشائعة في الحلقات هي التكرار عبر محتويات المصفوفة. إحدى الطرق
للقيام بذلك هي باستخدام حلقة `for`. سيُخرج هذا الكود كل عنصر من عناصر المصفوفة
`arr` إلى وحدة التحكم:

```js
const arr = [10, 9, 8, 7, 6];

for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
```

تذكر أن المصفوفات لها فهرسة صفرية، مما يعني أن الفهرس الأخير للمصفوفة هو
`length - 1`. شرطنا لهذه الحلقة هو `i < arr.length`، والذي يوقف الحلقة عندما
يكون i مساويًا للطول. في هذه الحالة، التكرار الأخير هو `i === 4`، أي عندما يصبح
`i` مساويًا لـ `arr.length - 1` ويخرج `6` إلى وحدة التحكم. ثم يزيد `i` إلى `5`،
وتنتهي الحلقة لأن شرط `i < arr.length` لم يعد صحيح.

<div class="quiz">
نعتذر عن عدم وجود اختبار لهذا الدرس حالياً. نحن نعمل بجد لإعداد اختبارات لجميع الدروس وسنقوم بتوفيرها في أقرب وقت ممكن.
</div>
64 changes: 64 additions & 0 deletions courses/loops/iterate-with-javascript-do-while-loops.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
title: التكرار باستخدام حلقات ( do while )
snippet: إذا كان لديك مصفوفة متعددة الأبعاد
order: 6
---

النوع التالي من الحلقات التي ستتعلمها يسمى حلقة `do while`. يطلق عليها اسم حلقة
`do while` لأنها ستقوم أولاً بإجراء تمريرة واحدة للكود داخل الحلقة بغض النظر عن
الأمر، ثم تستمر في تشغيل الحلقة أثناء تقييم الشرط المحدد إلى `true`.

```js
const ourArray = [];
let i = 0;

do {
ourArray.push(i);
i++;
} while (i < 5);
```

يتصرف المثال السابق بشكل مشابه لأنواع أخرى من الحلقات، وسيبدو المصفوفة الناتجة
بالشكل `[0، 1، 2، 3، 4]`.

ومع ذلك، ما يجعل `do while` مختلفًا عن الحلقات الأخرى هو كيفية تصرفها عند فشل
الشرط عند التحقق الأول. دعونا نرى هذا في مثال عملي. فيما يلي حلقة `while` عادية
تقوم بتشغيل الكود في الحلقة طالما `i < 5`:

```js
const ourArray = [];
let i = 5;

while (i < 5) {
ourArray.push(i);
i++;
}
```

في هذا المثال، قمنا بتهيئة قيمة `ourArray` إلى مصفوفة فارغة وقيمة `i` إلى `5`.
عندما ننفذ حلقة `while`، يتم تقييم الشرط إلى `false` لأن `i` لا يقل عن `5`، لذلك
لا ننفذ الكود الموجود بداخله الحلقة. والنتيجة هي أن `ourArray` سينتهي بدون أي
قيم مضافة إليه، وسيظل فارغ كما هو عند اكتمال تشغيل كافة التعليمات البرمجية في
المثال السابق. والآن، ألقِ نظرة على حلقة `do while`:

```js
const ourArray = [];
let i = 5;

do {
ourArray.push(i);
i++;
} while (i < 5);
```

في هذه الحالة، نقوم بتهيئة قيمة `i` إلى `5`، تمامًا كما فعلنا مع حلقة `while`.
عندما نصل إلى السطر التالي، لا يوجد شرط للتقييم، لذلك ننتقل إلى الكود الموجود
داخل الأقواس المتعرجة وننفذه. سنضيف عنصرًا واحدًا إلى المصفوفة ثم نزيد `i` قبل أن
نصل إلى التحقق من الحالة. عندما نقوم أخيرًا بتقييم الشرط `i < 5` في السطر الأخير،
نرى أن `i` الآن `6`، وهو ما فشل في التحقق الشرطي، لذلك نخرج من الحلقة وننتهي. في
نهاية المثال أعلاه، قيمة `ourArray` هي `[5]`. بشكل أساسي، تضمن حلقة `do while`
أن الكود الموجود داخل الحلقة سيتم تشغيله مرة واحدة على الأقل.

<div class="quiz">
نعتذر عن عدم وجود اختبار لهذا الدرس حالياً. نحن نعمل بجد لإعداد اختبارات لجميع الدروس وسنقوم بتوفيرها في أقرب وقت ممكن.
</div>
30 changes: 30 additions & 0 deletions courses/loops/nesting-for-loops.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
title: حلقات متداخلة
snippet: إذا كان لديك مصفوفة متعددة الأبعاد
order: 5
---

إذا كان لديك مصفوفة متعددة الأبعاد، فيمكنك استخدام نفس المنطق مثل نقطة الطريق
السابقة للتكرار عبر المصفوفة وأي مصفوفات فرعية. مثال:

```js
const arr = [
[1, 2],
[3, 4],
[5, 6],
];

for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
console.log(arr[i][j]);
}
}
```

يؤدي هذا إلى إخراج كل عنصر فرعي في `arr` واحدًا تلو الآخر. لاحظ أنه بالنسبة
للحلقة الداخلية، فإننا نتحقق من `.length` لـ `arr[i]`، نظرًا لأن `arr[i]` هو في
حد ذاته مصفوفة.

<div class="quiz">
نعتذر عن عدم وجود اختبار لهذا الدرس حالياً. نحن نعمل بجد لإعداد اختبارات لجميع الدروس وسنقوم بتوفيرها في أقرب وقت ممكن.
</div>
2 changes: 1 addition & 1 deletion courses/objects/manipulating-complex-objects.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const ourMusic = [
البيانات التعريفية حول الألبوم. كما أن لديها مصفوفة `formats` متداخلة. إذا كنت
تريد إضافة المزيد من تسجيلات الألبوم، فيمكنك القيام بذلك عن طريق إضافة تسجيلات
إلى مصفوفة المستوى الأعلى. تحتفظ الكائنات بالبيانات في خاصية لها تنسيق قيمة
المفتاح `(key-value format)`. في المثال أعلاه، `"artist": "Daft Punk"` هي خاصية
المفتاح `(key-value format)`. في المثال السابق `"artist": "Daft Punk"` هي خاصية
تحتوي على مفتاح `Artist` وقيمة `Daft Punk`.

<mark>
Expand Down
2 changes: 1 addition & 1 deletion courses/variables/case-sensitivity-in-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@ var thisVariableNameIsSoLong;
```

<div class="quiz">
قم بطباعة المتغير الذي يحقق تسميه الcamelCase
قم بطباعة المتغير الذي يحقق تسميه ال <code>camelCase</code>
</div>
8 changes: 4 additions & 4 deletions courses/variables/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,13 @@ var myNum;
myNum = myVar;
```

ما ورد أعلاه يعلن عن متغير `myVar` بدون قيمة، ثم يعين له القيمة `5`. بعد ذلك،
يتم الإعلان عن متغير يسمى `myNum` بدون قيمة. ثم، يتم تعيين محتويات `myNum` (وهو
`5`) إلى المتغير `myVar`. الآن، `myNum` أيضًا لديه القيمة `5`.
ما ورد في المثال السابق يعلن عن متغير `myVar` بدون قيمة، ثم يعين له القيمة `5`.
بعد ذلك، يتم الإعلان عن متغير يسمى `myNum` بدون قيمة. ثم، يتم تعيين محتويات
`myNum` (وهو `5`) إلى المتغير `myVar`. الآن، `myNum` أيضًا لديه القيمة `5`.

## تعريف متغير السلسلة

سبق لك استخدام الكود التالي للإعلان عن متغير:
سبق لك استخدام المثال التالي للإعلان عن متغير:

```js
var myName;
Expand Down
6 changes: 3 additions & 3 deletions courses/variables/the-var-let-const.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: الاختلافات بين var، let، const
title: الاختلافات بين ( var، let، const )
snippet: إحدى أكبر مشكلات الإعلان عن المتغيرات
order: 5
---
Expand All @@ -13,8 +13,8 @@ var name = "Sara";
console.log(name);
```

في الكود أعلاه، تم تعريف متغير في الأصل باسم `Ahmad`، ثم تم تجاوزه ليكون `Sara`.
ثم تعرض وحدة التحكم السلسلة `Sara`.
في المثال السابق، تم تعريف متغير في الأصل باسم `Ahmad`، ثم تم تجاوزه ليكون
`Sara`. ثم تعرض وحدة التحكم السلسلة `Sara`.

إذا كنت تستخدم تطبيقًا صغيرًا، فقد لا تواجه هذا النوع من المشكلات. ولكن عندما تصبح
قاعدة التعليمات البرمجية الخاصة بك أكبر، قد تقوم عن طريق الخطأ بالكتابة فوق
Expand Down
5 changes: 2 additions & 3 deletions precodes/arrays/intro.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
/*
write any array containing name of anyone you know :)
*/
const levelsPoints = [50, 40, 30];
console.log(levelsPoints)
2 changes: 1 addition & 1 deletion precodes/strings/bracket-examples.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
const x = "Augusta"
console.log(x)
console.log(x[0])
2 changes: 2 additions & 0 deletions precodes/strings/length.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
const strLen = "Nakhlah JS".length;
console.log(strLen);
11 changes: 3 additions & 8 deletions precodes/variables/the-var-let-const.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
const city = "Jerusalem"; // هذا المتغير لا يمكن تغيير قيمته
// city = "Ramallah"; // TypeError: Assignment to constant variable.
let x = 5; // هذا المتغير يمكن تغيير قيمته
x = 6;
console.log(x); // 6
var y = 7; // هذا المتغير يمكن تغيير قيمته
y = 8;
console.log(y); // 8
var city = "Jerusalem";
var city = "Ramallah";
console.log(city) // تم تجاوزه

0 comments on commit 4973939

Please sign in to comment.