You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A code editor is the place where programmers spend most of their time.
3
+
محرر الأكواد هو المكان الذي يقضي فيه المبرمجون معظم وقتهم.
4
4
5
-
There are two main types of code editors: IDEs and lightweight editors. Many people use one tool of each type.
5
+
يوجد نوعين من محررات الأكواد: IDEs ( بيئة التطوير الكاملة)و المحررات البسيطة. العديد من الناس يستخدمون أداة واحدة لكل نوع.
6
6
7
7
## IDE
8
8
9
-
The term [IDE](https://en.wikipedia.org/wiki/Integrated_development_environment) (Integrated Development Environment) refers to a powerful editor with many features that usually operates on a "whole project." As the name suggests, it's not just an editor, but a full-scale "development environment."
9
+
مصطلح [IDE](https://en.wikipedia.org/wiki/Integrated_development_environment) (Integrated Development Environment) يشير إلى محرر بإمكانات هائلة، مع العديد من المميزات التي تعمل عادة على " مشروع كامل". كما يوحي الاسم، فهو ليس مجرد محرر أكواد، ولكنه "بيئة تطوير" واسعة النطاق.
10
10
11
-
An IDE loads the project (which can be many files), allows navigation between files, provides autocompletion based on the whole project (not just the open file), and integrates with a version management system (like[git](https://git-scm.com/)), a testing environment, and other "project-level" stuff.
11
+
IDE تقوم بتحميل المشروع ) الذي يمكن أن يتكون من العديد من الملفات)، ويسمح بالتنقل بين الملفات، ويوفر خاصة الإكمال التلقائي المعتمدة على المشروع ككل ( وليس الملف المفتوح فقط) , كما أنه يمكن أن يرتبط مع أنظمة إدارة الإصدار (مثل[git](https://git-scm.com/)), وبيئة الاختبار, وغيرها من الأشياء على مستوى المشروع.
12
12
13
-
If you haven't selected an IDE yet, consider the following options:
13
+
إذا لم تقم باختيار IDE بعد ، ففكر في الخيارات التالية:
14
14
15
-
-[Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free).
-[فيجوال ستديو كود](https://code.visualstudio.com/) (يعمل على أكثر من نظام تشغيل, مجاني).
16
+
-[ويب ستورم](http://www.jetbrains.com/webstorm/) (يعمل على أكثر من نظام تشغيل, مدفوع).
17
17
18
-
For Windows, there's also "Visual Studio", not to be confused with "Visual Studio Code". "Visual Studio" is a paid and mighty Windows-only editor, well-suited for the .NET platform. It's also good at JavaScript. There's also a free version[Visual Studio Community](https://www.visualstudio.com/vs/community/).
18
+
بالنسبة للويندوز، يمكن استخدام برنامج فيجوال ستديو، لايجب الخلط بينه وبين الفيجوال ستديو كود، فيجوال ستديو هو محرر مدفوع يعمل على نظام ويندوز فقك، ومناسب تماماً لبيئة الدوت نت. أنه أيضاً جيد للجافاسكريبت. كما يوجد إصدار مجاني منه[Visual Studio Community](https://www.visualstudio.com/vs/community/).
19
19
20
-
Many IDEs are paid, but have a trial period. Their cost is usually negligible compared to a qualified developer's salary, so just choose the best one for you.
20
+
.عادة ما تكون تكلفتها ضئيلة للغاية مقارنة براتب المطور المؤهل ، لذلك فقط اختر الأفضل بالنسبة لك.العديد من بيئات التطوير مدفوعة، لكن لها فترة سماحية
21
21
22
-
## Lightweight editors
22
+
## المحررات البسيطة
23
23
24
-
"Lightweight editors" are not as powerful as IDEs, but they're fast, elegant and simple.
24
+
المحررات البسيطة" ليست بقوة ال" IDEs لكنها سريعة, وأنيقة وبسيطة
25
25
26
-
They are mainly used to open and edit a file instantly.
26
+
يتم استخدامها بشكل رئيسي لفتح وتحرير ملف على الفور.
27
27
28
-
The main difference between a "lightweight editor" and an "IDE" is that an IDE works on a project-level, so it loads much more data on start, analyzes the project structure if needed and so on. A lightweight editor is much faster if we need only one file.
28
+
الفارق الرئيسي بين المحررات البسيطة و "بيئة التطوير" هو أن بيئة التطوير تعمل على مستوى المشروع، لذلك فإنها تقوم بتحميل المزيد من البيانات عند البدء، وتحليل هيكل المشروع إذا لزم ذلك. أما المحررات البسيطة فإنها أسرع في حال نريد ملف واحد فقط.
29
29
30
-
In practice, lightweight editors may have a lot of plugins including directory-level syntax analyzers and autocompleters, so there's no strict border between a lightweight editor and an IDE.
30
+
من الناحية العملية ، قد تحتوي المحررات البسيطة على الكثير من المكونات الإضافية بما في ذلك محللات بناء الجملة على مستوى الدليل وأجهزة الإكمال التلقائي ، لذلك لا توجد حدود صارمة بين المحرر البسيط و IDE.
31
31
32
-
The following options deserve your attention:
32
+
الخيارات التالية تستحق انتباهك:
33
33
34
-
-[Atom](https://atom.io/) (cross-platform, free).
35
-
-[Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free).
-[Vim](http://www.vim.org/)و[Emacs](https://www.gnu.org/software/emacs/) رائعة إذا كنت تعرف كيفية استخدامها.
39
39
40
-
## Let's not argue
40
+
## دعونا لانتشاجر
41
41
42
-
The editors in the lists above are those that either I or my friends whom I consider good developers have been using for a long time and are happy with.
42
+
المحررات التي بالقائمة الأعلى هي التي نقوم باستخدامها أنا وأصدقائي، والذين أعتقد أنهم مطورون جيدون يستخدمونها منذ وقت طويل وتسعدهم.
43
43
44
-
There are other great editors in our big world. Please choose the one you like the most.
44
+
يوجد أيضاً محررات رائعة في عالمنا الكبير، الرجاء اختيار المحرر الذي تفضله.
45
45
46
-
The choice of an editor, like any other tool, is individual and depends on your projects, habits, and personal preferences.
46
+
اختيار المحرر، مثل أي أداة أخرى، هو اختيار فردي ويعتمد على مشروعاتك، وعاداتك، وتفضيلاتك الشخصية.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/14-switch/2-rewrite-if-switch/solution.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
The first two checks turn into two `case`. The third check is split into two cases:
1
+
أول شرطين يتحولان إلى أثنان `case`. الشرط الثالث يتحول إلى حالتين:
2
2
3
3
```js run
4
4
let a =+prompt('a?', '');
@@ -21,6 +21,6 @@ switch (a) {
21
21
}
22
22
```
23
23
24
-
Please note: the `break`at the bottom is not required. But we put it to make the code future-proof.
24
+
لاحظ أن `break`في النهاية ليست مطلوبة ولكن تم وضعها تحسبًا للمستقبل.
25
25
26
-
In the future, there is a chance that we'd want to add one more `case`, for example `case 4`. And if we forget to add a break before it, at the end of `case 3`, there will be an error. So that's a kind of self-insurance.
26
+
ربما نريد لاحقًا إضافة المزيد من `case` على سبيل المثال `case 4`. وإذا نسينا وضع break في نهاية `case 3` سيكون هناك خطأ.
A`switch`statement can replace multiple `if` checks.
3
+
جملة`switch`يمكنها استبدال العديد من جمل `if.
4
4
5
-
It gives a more descriptive way to compare a value with multiple variants.
5
+
تعطي طريقة أفضل لمقارنة متغير مقابل مجموعة من القيم.
6
6
7
-
## The syntax
7
+
## طريقة الكتابة
8
8
9
-
The`switch`has one or more `case`blocks and an optional default.
9
+
جملة`switch`تحتوي على `case`واحدة أو أكثر وحالة إفتراضية إختيارية.
10
10
11
-
It looks like this:
11
+
مثل هذا:
12
12
13
13
```js no-beautify
14
14
switch(x) {
@@ -26,71 +26,71 @@ switch(x) {
26
26
}
27
27
```
28
28
29
-
-The value of `x`is checked for a strict equality to the value from the first `case` (that is, `value1`) then to the second (`value2`) and so on.
30
-
-If the equality is found, `switch`starts to execute the code starting from the corresponding `case`, until the nearest `break` (or until the end of`switch`).
31
-
-If no case is matched then the `default`code is executed (if it exists).
29
+
-قيمة `x`يتم إختبار تساويها مع أول `case` (`value1`) ثم تتنتقل إلى (`value2`) وهكذا.
30
+
-إذا وجد تساوي تبدأ `switch`بتنفيذ الكود ابتداءًا من هذه ال `case` حتى أقرب `break` (أو نهاية`switch`).
31
+
-إذا لم تطابق أي حالة يتم تنفيذ الكود بداخل `default`إذا وجدت.
32
32
33
-
## An example
33
+
## مثال
34
34
35
-
An example of `switch` (the executed code is highlighted):
35
+
مثال على `switch` (تم نحديد الكود الذي سينفذ):
36
36
37
37
```js run
38
38
let a =2+2;
39
39
40
40
switch (a) {
41
41
case3:
42
-
alert( 'Too small' );
42
+
alert( 'قليل جدًا' );
43
43
break;
44
44
*!*
45
45
case4:
46
-
alert( 'Exactly!' );
46
+
alert( 'تمامًا!' );
47
47
break;
48
48
*/!*
49
49
case5:
50
-
alert( 'Too large' );
50
+
alert( 'كثير جدًا' );
51
51
break;
52
52
default:
53
-
alert( "I don't know such values" );
53
+
alert( "لا أعرف هذه القيمة" );
54
54
}
55
55
```
56
56
57
-
Here the `switch`starts to compare `a`from the first`case`variant that is `3`. The match fails.
57
+
تبدأ `switch`بمقارنة قيمة `a`بدايةً من أول`case`التي هي `3`. لا تطابق.
58
58
59
-
Then`4`. That's a match, so the execution starts from `case 4`until the nearest`break`.
59
+
ثم`4`. وهنا يحدث تطابق ويبدأ التنفيذ من `case 4`حتى أقرب`break`.
60
60
61
-
**If there is no `break`then the execution continues with the next `case`without any checks.**
61
+
**إذا لم يوجد `break`يستمر تنفيذ `case`التالية بدون فحص الشرط.**
62
62
63
-
An example without`break`:
63
+
مثال بدون`break`:
64
64
65
65
```js run
66
66
let a =2+2;
67
67
68
68
switch (a) {
69
69
case3:
70
-
alert( 'Too small' );
70
+
alert( 'قليل جدًا' );
71
71
*!*
72
72
case4:
73
-
alert( 'Exactly!' );
73
+
alert( 'تمامًا!' );
74
74
case5:
75
-
alert( 'Too big' );
75
+
alert( 'كثير جدًا' );
76
76
default:
77
-
alert( "I don't know such values" );
77
+
alert( "لا أعرف هذه القيمة" );
78
78
*/!*
79
79
}
80
80
```
81
81
82
-
In the example above we'll see sequential execution of three `alert`s:
82
+
في هذا المثال سيتم تنفيذ ثلاثة أوامر `alert`:
83
83
84
84
```js
85
-
alert( 'Exactly!' );
86
-
alert( 'Too big' );
87
-
alert( "I don't know such values" );
85
+
alert( 'تمامًا!' );
86
+
alert( 'كثير جدًا' );
87
+
alert( "لا أعرف هذه القيمة" );
88
88
```
89
89
90
-
````smart header="Any expression can be a`switch/case` argument"
91
-
Both`switch`and`case`allow arbitrary expressions.
90
+
````smart header="يمكن استخدام أي تعبير بداخل`switch/case`"
91
+
إن`switch`و`case`يسمحان باستخدام التعبيرات.
92
92
93
-
For example:
93
+
مثال:
94
94
95
95
```js run
96
96
let a ="1";
@@ -99,74 +99,74 @@ let b = 0;
99
99
switch (+a) {
100
100
*!*
101
101
case b +1:
102
-
alert("this runs, because +a is 1, exactly equals b+1");
102
+
alert("سيتم تنفيذ هذا لأن +a هو 1 ويساوي تمامًا b+1");
103
103
break;
104
104
*/!*
105
105
106
106
default:
107
-
alert("this doesn't run");
107
+
alert("لن يتم تنفيذ هذا");
108
108
}
109
109
```
110
-
Here`+a`gives`1`, that's compared with`b + 1`in`case`, and the corresponding code is executed.
110
+
هنا`+a`تعطي`1` ويتم مقارنتها مع`b + 1`في`case` وينفذ الكود.
111
111
````
112
112
113
-
## Grouping of "case"
113
+
## تجميع "case"
114
114
115
-
Several variants of `case` which share the same code can be grouped.
115
+
يمكن تجميع العديد من `case` التي تتشارك في نفس الأوامر.
116
116
117
-
For example, if we want the same code to run for `case 3` and `case 5`:
117
+
مثلًا إذا أردنا تنفيذ نفس الأوامر في `case 3` و `case 5`:
118
118
119
119
```js run no-beautify
120
120
let a = 3;
121
121
122
122
switch (a) {
123
123
case 4:
124
-
alert('Right!');
124
+
alert('صحيح!');
125
125
break;
126
126
127
127
*!*
128
-
case 3: // (*) grouped two cases
128
+
case 3: // (*) تجميع حالتين
129
129
case 5:
130
-
alert('Wrong!');
131
-
alert("Why don't you take a math class?");
130
+
alert('خطأ!');
131
+
alert("لماذا لا تأخذ روس في الرياضيات ؟");
132
132
break;
133
133
*/!*
134
134
135
135
default:
136
-
alert('The result is strange. Really.');
136
+
alert('النتيجة غريبة حقًا.');
137
137
}
138
138
```
139
139
140
-
Now both `3` and `5` show the same message.
140
+
الآن كل من `3` و `5` يظهرون الرسالة.
141
141
142
-
The ability to "group" cases is a side-effect of how `switch/case` works without `break`. Here the execution of `case 3` starts from the line `(*)` and goes through `case 5`, because there's no `break`.
142
+
إمكانية تجميع الحالات هي تأثير جانبي لطريقة عمل `switch/case` بدون `break`. هنا يبدأ التنفيذ من `case 3` في السطر `(*)` وينتقل إلى `case 5` لعدم وجود `break`.
143
143
144
-
## Type matters
144
+
## الأنواع مهمة
145
145
146
-
Let's emphasize that the equality check is always strict. The values must be of the same type to match.
146
+
عملية التساوي هي عملية حادة فيجب أن تكون القيم من نفس النوع ليتم التطابق.
147
147
148
-
For example, let's consider the code:
148
+
على سبيل المثال لنأخذ البرنامج التالي:
149
149
150
150
```js run
151
-
let arg = prompt("Enter a value?");
151
+
let arg = prompt("أكتب قيمة ؟");
152
152
switch (arg) {
153
153
case '0':
154
154
case '1':
155
-
alert( 'One or zero' );
155
+
alert( 'صفر أو واحد' );
156
156
break;
157
157
158
158
case '2':
159
-
alert( 'Two' );
159
+
alert( 'أثنان' );
160
160
break;
161
161
162
162
case 3:
163
-
alert( 'Never executes!' );
163
+
alert( 'لن ينفذ أبدًا!' );
164
164
break;
165
165
default:
166
-
alert( 'An unknown value' );
166
+
alert( 'قيمة غير معروفة' );
167
167
}
168
168
```
169
169
170
-
1. For `0`, `1`, the first `alert` runs.
171
-
2. For `2` the second `alert` runs.
172
-
3. But for `3`, the result of the `prompt` is a string `"3"`, which is not strictly equal `===` to the number `3`. So we've got a dead code in `case 3`! The `default` variant will execute.
170
+
1. إذا أدخلنا `0`, `1` يتم تنفيذ أول `alert`.
171
+
2. إذا أدخلنا `2` يتم تنفيذ ثاني `alert`.
172
+
3. ولكن إذا أدخلنا `3` تكون نتيجة `prompt` هي النص `"3"` الذي لا يطابق `===` الرقم `3`. لذلك لن يتم تنفيذ الأوامر في هذه `case 3`! وسيتم تنفيذ `default`.
0 commit comments