الويب العربي

الويب العربي (http://www.arabwebtalk.com/index.php)
-   خلاصة قسم إدارة و تشغيل السيرفرات (http://www.arabwebtalk.com/forumdisplay.php?f=134)
-   -   [درس] : عبارة for في لغات البرمجة (http://www.arabwebtalk.com/showthread.php?t=66794)

Ali Hamad 30-09-2007 08:42 PM

[درس] : عبارة for في لغات البرمجة
 
السلام عليكم .... أسعد الله اوقاتكم بكل خير :

ملاحظة : الموضوع طويل ومتشعب .


مقدمة :

البرمجة بتعريفها البسيط ( عملية كتابة ، اختبار ، تنفيذ مجموعة أكواد كتبت بلغة برمجة ما لتقوم بعمل ما ) هي عصب الانترنت .
فنظام التشغيل الذي تعمل عليه عبارة عن مجوعة اكواد برمجية بلغات مختلفه معقده . كل شيء تراه في الانترنت امامك عبارة عن اكواد. ولكن تذكر انه باختلاف لغات البرمجة المستخدمة في كتابة الكود ،الكمبيوتر لايعرف الا 0 او 1 فقط .
تختلف الاغراض من كتابة كود معين باختلاف لغات البرمجة المستخدمه . مثلا : لغة البي اتش بي لغة بسيطه تم كتابتها اعتمادا على C/C++ ( بالمناسبة C++ عبارة عن C ولكن مطوره ، بمعنى كل ماهو موجود في C موجود في C++ ) وهذه اللغة ، اعني PHP ، تستخدم بشكل اساسي في تطوير الويب ( المواقع ) . بينما على النقيض تماما لغات برمجة تستخدم في اساس نظام التشغيل على سبيل المثال لا الحصر : Assembly ( تستخدم بشكل اساسي في كتابة drivers بمعنى وسيط التواصل بين انظمة التشغيل مجازا وبين العتاد " الهاردوير " ) ، C/C++ ( لغة البرمجة الام الحنون لاغلب لغات البرمجة واللغة التي كتب بها Linux Kernel ، وايضا Bash ( يستخدم اساسا في نظام Linux غالبا في تسهيل عمل مدير النظام وايضا في تطبيقات ، برامج ، وسكربتات داخل السيرفر ، مثلا سكبرتات الشتغيل rc في مختلف مستويات ال run جميعها كتبت بال bash ) .


الهدف :

لكي تصبح مدير سيرفرات محترف يلزمك دائما تسهيل عملك بعمل برامج مساعدة مساندة لتوفير الوقت والعمل نيابة عنك لتادية بعض المهام. تعلم لغات برمجة اساسية مثل ال C او حتى الـ Bash يغير حياتك العملية الى الافضل بتسهيل عملك وتطوير ادائك .



الموضوع :

درس بسيط للتعرف على أشكال اكواد بعض لغات البرمجة ( java , C and bash ) ، ودراسة عبارة اساسية تقريبا في كل لغات البرمجة loop وبشكل ادق ما ساتكلم عنه هي for loop .


ماهي ال for loop :

عبارة برمجية تعني الاستمرار في تنفيذ ال body الخاص بال loop حتى يتم الوصول الى حالة معينة، ( الوصول الى رقم معين ، تنفيذ امر معين ، تنفيذ شرط معين .... على حسب ماهو شرط استمرار اللوب ) او كسر اللوب ( break ) .


امثلة :

1) JAVA :

كود PHP:

public class AwtLoop {
    public static 
void main (String[] args){
        
     for (
int i=05i++){
         
         
System.out.println("Loop is at " i);
     
     }   
    } 



الشرح :

كود PHP:

for (int i=05i++) 

int i = 0 تعني تعريف المتغير i بانه integer ووضع قيمته بصفر .
i < 5 تعني الشرط الذي تنتهي عنده اللوب ، بمعنى قم بتنفيذ البودي ( اي عبارة برمجية بين ال } و { حتى تصبح قيمة المتغير i اقل من خمسه .
i++ = قم بزياة قيمة المتغير i بواحد في كل مره تنفذ اللوب مالم يتحقق الشرط .


كود PHP:

System.out.println("Loop is at " i); 

البودي الخاص بال for loop ويعني قم بطباعة الجملة ( String ) التالية Loop is at ملحوقة بقيمة المتغير i .


الناتج :

كود PHP:

Loop is at 0
Loop is at 1
Loop is at 2
Loop is at 3
Loop is at 4 

كما تلاحظ ، قام الكود اعلاه بطباعة كل الارقام من صفر الى 4 وتوقف عندما تحقق الشرط ( رقم اقل من خمسه ) .


2) C/C++:

كود PHP:

#include <stdio.h>
int main void ){
 
 
int i;
 for (
i=0<5i++) {
      
printf("Loop is at %d\n"i);
 }
 return 
0;


الشرح :

كود PHP:

for (i=0<5i++) 

i = 0 تعني وضع قيمة المتغير i بانه صفر ، لاحظ في لغة C لابد من تعريف المتغير خارج اللوب .
i < 5 تعني الشرط الذي تنتهي عنده اللوب ، بمعنى قم بتنفيذ البودي ( اي عبارة برمجية بين ال } و { حتى تصبح قيمة المتغير i اقل من خمسه . لاحظ انه في لغة ال C يمكنك عدم استخدام ال {} .
i++ = قم بزياة قيمة المتغير i بواحد في كل مره تنفذ اللوب مالم يتحقق الشرط .



كود PHP:

printf("Loop is at %d\n"i); 

البودي الخاص بال for loop ويعني قم بطباعة الجملةالتالية Loop is at ملحوقة بقيمة المتغير i . علامة %d تعني تعريف للمتغير i عند الطباعة وعلامة \n تعني طباعته في سطر جديد .


الناتج :

كود PHP:

Loop is at 0
Loop is at 1
Loop is at 2
Loop is at 3
Loop is at 4 


3) BASH : التخصص والعشق الاول والاخير :)

كود PHP:

#!/bin/bash

for (( =0<5i++))
do
        echo 
"loop is at $i"
done

#EOF 

الشرح :

كود PHP:

for (( =0<5i++)) 

i = 0 تعني وضع قيمة المتغير i بانه صفر ، لاحظ في لغة الباش لانحتاج لتعريف نوع المتغير ، مثلا هل هو integer , double , long , short , string , char ...etc
i < 5 تعني الشرط الذي تنتهي عنده اللوب ، بمعنى قم بتنفيذ البودي ( اي عبارة برمجية بين ال do و done حتى تصبح قيمة المتغير i اقل من خمسه( شرط اغلاق اللوب ) . لاحظ انه في لغة الباش لاتستخدم ال }{ في تحديد البودي الخاص باللوب ، بل يستخدم do , done .
i++ = قم بزياة قيمة المتغير i بواحد في كل مره تنفذ اللوب مالم يتحقق الشرط .


كود PHP:

echo "loop is at $i

قم بطباعة loop is at ملحوقة بقيمة المتغير i .

الناتج :

كود PHP:

loop is at 0
loop is at 1
loop is at 2
loop is at 3
loop is at 4 

ماذا تعني break ؟

عكس العبارة continue بمعنى .. break تعني قم بالخروج خارج اللوب ، قم بانهاء اللوب بدون الرجوع للشرط الاساسي لاستمرار اللوب .


مثال بسيط بلغة الجافا Java لتقريب المعلومة :

كود PHP:

public class AwtLoop {
    public static 
void main (String[] args){
        
     for (
int i=05i++){
         if (
== 3){
             
System.out.println("Going to break the loop");
             break;   
         }
         
System.out.println("Loop is at " i);
     }   
    } 


الشرح :

كود PHP:

 if (== 3){
             
System.out.println("Going to break the loop");
             break;   
         } 

لاحظ ان الشرط الخاص باستمرار اللوب هو ان يقوم بطباعة قيمة i من 0 الى 4 ( اقل من خمسه ) ولكن وضعنا جملة شرطية بانه في حالة كانت القيمة للمتغير i تساوي 3 ، قم بالخروج من اللوب باستخدام الامر break بعد ان تقوم بطباعة الجملة Going to break the loop حتى وان لم يتم تحقق الشرط الخاص باستمرار اللوب.


الناتج :

كود PHP:

Loop is at 0
Loop is at 1
Loop is at 2
Going to 
break the loop 

ماذا تعني Nested Loop ؟

بالعامية لوب داخل لوب :) ، بمعنى قم بتنفيذ اللوب العلوية مره ثم تنفيذ اللوب الداخلية كامله وعند الانتهاء منها قم بالرجوع للوب الاساسية وتنفيذها وهكذا الى ان يتحقق شرط توقف اللوب الخارجية ( الاساسية ) .


مثال بسيط لتقريب المعلومة بلغة Bash :

الكود في الاسفل يعطيك حاصل الضرب للاعداد من 1 الى 3 في الاعداد من 1 الى 3 ، شاهد الناتج لتوضح النتيجة :


كود PHP:

#!/bin/bash

for (( =1<=5i++))
do
        echo 
"The main loop is at $i"
        
echo "## The multiplication table of $i ##"

        
for ((x=1x<=3x++))
        do
             echo 
"## The inner loop is at $x ##"
             
echo $i * $x = $(($i * x))"
        
done
done

#EOF 


الشرح :

لاحظ وجود اللوب الثانية في داخل اللوب الاولى :

كود PHP:

 for ((x=1x<=3x++)) 

الناتج :

كود PHP:

## The multiplication table of 1 ##
## The inner loop is at 1 ##
 
1
## The inner loop is at 2 ##
 
2
## The inner loop is at 3 ##
 
3
The main loop is at 2
## The multiplication table of 2 ##
## The inner loop is at 1 ##
 
2
## The inner loop is at 2 ##
 
4
## The inner loop is at 3 ##
 
6
The main loop is at 3
## The multiplication table of 3 ##
## The inner loop is at 1 ##
 
3
## The inner loop is at 2 ##
 
6
## The inner loop is at 3 ##
 


لاحظ في الناتج بانه يقوم بعرض قيمةاللوب الاساسية ( الخارجية ) اولا ، ثم يقوم بتنفيذ اللوب الداخلية حتى يتحقق شرطها ( اقل من او يساوي 3) ثم يعود الى تنفيذ اللوب الخارجية ويسالها ، هل تحقق الشرط الخاص بك ؟ اذا نعم ، تتوقف كل loops ، اذا لا ، يرجع للتنفيذ ويدخل اللوب الداخلية .


المثال اعلاه بلغة C للتوضيح بشكل اكبر ( ارجو التركيز في علامة فتح البودي الخاص باللوب } وعلامة اغلاقها {:

كود PHP:

#include <stdio.h>

int main void ){
    
int i,x,result;

    for (
=1<=3i++) {  <-- لاحظ فتح البودي لللوب الاولى
    printf
(" ## The main loop is at %d ## \n",i);
    
printf(" ## The multiplication table of %d ## \n"i);

    for (
=1x<=3x++){ <-- لاحظ فتح البودي لللوب الثانية مع اننا لم نغلق الاولى
         printf
(" ## The inner loop is at %d ## \n ",x);
         
result x;
         
printf("%d * %d = %d \n",i,x,result);
    } <-- 
لاحظ اقفال البودي لللوب الثانية قبل الاولى 
  
} <-- لاحظ اقفال البودي لللوب الاولى في النهاية

    printf
(" ## The End of All loops \n ");
  return 
0;    


الناتج :

كود PHP:

 ## The main loop is at 1 ## 
 ## The multiplication table of 1 ## 
 ## The inner loop is at 1 ## 
 

 
## The inner loop is at 2 ## 
 

 
## The inner loop is at 3 ## 
 

 
## The main loop is at 2 ## 
 ## The multiplication table of 2 ## 
 ## The inner loop is at 1 ## 
 

 
## The inner loop is at 2 ## 
 

 
## The inner loop is at 3 ## 
 

 
## The main loop is at 3 ## 
 ## The multiplication table of 3 ## 
 ## The inner loop is at 1 ## 
 

 
## The inner loop is at 2 ## 
 

 
## The inner loop is at 3 ## 
 

 
## The End of All loops 


هل ال syntax الخاص ب for-loop متساوي في كل لغات البرمجة ؟

حقيقه منطقيا نعم ( شرط التحقق ، العداد ، الجملة الاساسية ، بودي اللوب تقريبا متواجدة في كل لغات البرمجة ، ولكن تختلف في ( الشكل ) .. لتقريب المعلومة .. كانت لدي فكرة وانا اقوم بكتابة الموضع بشرح طريقة ال for loop بلغة ADA ، ولكن توقفت لاني اعتقدت انها ستخرج الموضوع عن syntax الي تستخدمه اغلب لغات البرمجة والي ذكرته اعلاه ، لكن للعلم فقط وشرح اوجه التشابه في المنطق والاختلاف في syntax، تعريف for loop في Ada :


كود PHP:

loop
     statment
;
     exit 
when cond;
end loop

الشرح :

يبدا فتح اللوب بكلمة loop وينهيها بكلمة end loop ، والجملة الشرطية تاتي بعد الجملة
exit when ! لاحظ وجود ( شرط التحقق ، الجمله الاساسية ، بودي اللوب ... ولكن بشكل اخر ) .



الفائدة المرجوة من الموضوع :

1) تعرف على ثلاث اشكال اساسية من لغات البرمجة .
2) التعرف بشكل اكبر على اللوجيك ( المنطق ) الخاص بال for-loop بشكل عام ورؤيته بشكل واضح في لغات برمجة اخرى بامثلة بسيطه .
3) اعطاء دافع هنا لاعضاء الويب العربي بتعلم لغات برمجة مفيده في مجال ادارة السيرفرات مثل C, Bash , Java .



في ابعاد المعلومات :

انا شخصيا أؤمن باهمية البرمجة في تطوير العمل الداخلي او حتى في تطوير اداء وكيفية عملنا في قسم الاستضافة .. ابعاد المعلومات مؤسسة كانت اساسا تهتم وتعنى بالبرمجة فقط قبل ان تتفرع الى اقسام عديدة . ترى نتائج اعمال قسم البرمجة واضحه ( انفنتي ، الكومبو ، ديواني ، تسكين ... ) وايضا سيكون قريبا ناتج عمل قسم الاستضافة ROE قريبا ان شاء الله وهو اول برنامج معلن عنه رسميا. في ابعاد المعلومات نحترف لغات البرمجة ( Java , Bash, C , ADA , PHP , CGI ) ونعمل جاهدين على تطوير العمل الداخلي والويب العربي ( الانترنت ) ككل .


قبل الختام :

1) انا اسف ان كانت اللهجة الي استخدمتها عامية بحته ، ولكن حاولت تقريب الفكرة باكثر من لغة برجمة والتنويع لتقريب الفكرة بافضل مااستطيع بلهجة بسيطه مفهومه للكل.
2) انا اسف مسبقا على الاخطاء الاملائية او النحوية ان وجدت ..
3) شكرا لك على وقتك لقراءة الموضوع .
4) اذا كان لديك اي سؤال او استفسار في لغات البرمجة Bash , Ada , Java or C ، الرجاء التكرم بوضعه في هذا الموضوع ولكن لي رجاء بان يكون السؤال ليس واجب دراسي مطلوب من دكتورك الجامعي لاني لان اقوم بحله من الان :)


علي حمد ، قسم الاستضافة .
أبعاد المعلومات .

Coldfusion 01-10-2007 04:21 AM

درس رائع جداً
بارك الله فيك....

Ali Hamad 01-10-2007 06:59 AM

الغالي :

انا سعيد بمرورك وان شاء الله انك استفدت من الموضوع ..

لك التحية ،
علي حمد .

F.alMutairi 01-10-2007 09:10 PM

بارك الله فيه ^^

Ramy Allam 03-10-2007 04:06 PM

جزاك الله خيرا ع الإفادة

JeddaHost 04-10-2007 04:05 AM

يعطيك العافية أخوي علي

بس حبيت استفسر اذا ممكن تعطيني رابط موقع أقدر اتعلم منه Bash Programing

انا عندي خبـرة ولكن بالأمور الأساسية حاب اطور نفسي أكثر واتعلم :)

فإذا عندك رابط موقع ياريت تفيدني

مع تحياتتي

The golden city 04-10-2007 07:39 PM

موضوع جميل جدآآ وشرح رائع أخوي علي
ولكن لي تنبية بسيط باأنها لاتسمى عبارة وأنما دالة

شكرآآ مره أخرى على الدرس الحـــلــو

تحية طيبة

Ali Hamad 07-10-2007 02:37 AM

إقتباس:

اقتباس من مشاركة F.alMutairi (المشاركة 382055)
بارك الله فيه ^^

حياك الله يالغالي ...

RoMiO NeT :

سعيد بتواصلك ...

JeddaHost :

هلا والله عبدالرحمن ( مانيب واهم صح :) ) ، كيف حالك ؟ عسى امورك تمام ؟

حقيقه ماعندي رابط موقع معين ممكن يفيدك ، لكن فيه كتاب متقدم اسمه :

Classic Shell Scripting

والكاتب اسمه : Arnold Robbins من اصدارات oreilly .

الكتاب ضخم ( 600 وشوي صفحة تقريبا ) وبالانجليزي ، شفته في يد مديري في العمل واعجبني وقريت فيه شوي . بس عيبه التعقيد ، بيرل ابروش اكثر منه باش ابروش ، ويستخدم تول من برا الباش كثير ... يعني بلهجتنا ، يلوح من بعيد :)

اذا حبيت تسال عن شيء معين ، او موضوع معين ، لايردك الا الكيبورد .. اكتبه هنا في الموضوع هذا او اذا شفت انه طويل ارسل لي في ابعاد اسم الموضوع الي تبي نكتب عنه ، وراح اكتب عنه هنا بالتفصيل ونسولف فيه على راحتنا جميع .

لك التحية وانا سعيد بتواصلك ،


The golden city :

الغالي ، عاد شف انا في العربي في لغة الكمبيوتر من جنبها لاني مادرسته بالعربي ولاتعلمته بالعربي :) بس الي اعرفه مضبوط انها تسمى Statement بالانجليزي عاد وش الترجمة بالعربي الحرفية ؟ بيان .. وبيان مالها تفسير .. فاسهل كلمة عبارة من بيان ومن دالة . دالة لا اعتقد لان الدالة Function or method ( فنكشن في الباش وفي البي اتش ابي وفي ال C ) ومثود ( في الجافا ، والبايثون ) ومعناتها كود صغير يقوم بتنفيذ عملية معينه . اما عبارة فاعتقد من وجهة نظري انها افضل ترجمة لكلمة Statement .. وفي كل الاحوال انا غير مهتم بمعرفة المعنى بكثر اهتمامي لمعرفة طريقة العمل .

لكم التحية ،
علي حمد ،

حــاتم بن هاشم 07-10-2007 11:23 PM

الله يعطيكم العافية

JeddaHost 08-10-2007 07:09 AM

إقتباس:

اقتباس من مشاركة Ali Hamad (المشاركة 384703)
JeddaHost :

هلا والله عبدالرحمن ( مانيب واهم صح :) ) ، كيف حالك ؟ عسى امورك تمام ؟

حقيقه ماعندي رابط موقع معين ممكن يفيدك ، لكن فيه كتاب متقدم اسمه :

Classic Shell Scripting

والكاتب اسمه : Arnold Robbins من اصدارات oreilly .

الكتاب ضخم ( 600 وشوي صفحة تقريبا ) وبالانجليزي ، شفته في يد مديري في العمل واعجبني وقريت فيه شوي . بس عيبه التعقيد ، بيرل ابروش اكثر منه باش ابروش ، ويستخدم تول من برا الباش كثير ... يعني بلهجتنا ، يلوح من بعيد :)

اذا حبيت تسال عن شيء معين ، او موضوع معين ، لايردك الا الكيبورد .. اكتبه هنا في الموضوع هذا او اذا شفت انه طويل ارسل لي في ابعاد اسم الموضوع الي تبي نكتب عنه ، وراح اكتب عنه هنا بالتفصيل ونسولف فيه على راحتنا جميع .

لك التحية وانا سعيد بتواصلك ،

عبدالمحسن :)

يعطيك العافية
شفت الكتاب على Google شكله ممتاز بإذن الله اقرئه واذا في شي مافهمته حأرجعلك :p

f33f33 23-10-2007 10:33 PM

السلام عليكم ورحمة الله وبركاته
تسلم اخوي علي حمد على هالموضوع البسيط في شكله والكبير جدددددددددددددددددددا في مضمونه
والله انك تستاهل (((((((((((( الله يعطيك العافية)))))))))))))))))))))))
ويجزاك الخير

UEFA 26-10-2007 04:08 PM

يعطيك ألف عافية..

طيوف هوست 06-11-2007 09:06 AM

جزاك الله خير

مشكور اخوي وماقصرت

wsws17 20-11-2007 05:05 PM

مشكوووور اخوي

Nitta 27-01-2008 12:29 AM

شكرا على الموضوع :)

حلم بكرة 14-02-2008 01:33 AM

شكرا ليك على الدرس الرائع دة

3arabfuture.com 15-08-2008 12:52 PM

مشكور على الافادة

computer angel 26-09-2008 10:15 AM

برافو والله جميل جدا

computer angel 26-09-2008 10:16 AM

الله الله عليك تسلم ايديك

فيصل فارس 22-12-2008 12:12 AM

تسلم على الإفادة


جميع الأوقات بتوقيت مكة المكرمة. الساعة الآن » 11:15 PM.

Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © ArabWebTalk.Com 2004-2012