Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/alrashdi/public_html/blog/wp-content/themes/suffusion/functions/media.php on line 666

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/alrashdi/public_html/blog/wp-content/themes/suffusion/functions/media.php on line 671

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/alrashdi/public_html/blog/wp-content/themes/suffusion/functions/media.php on line 684

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/alrashdi/public_html/blog/wp-content/themes/suffusion/functions/media.php on line 689

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/alrashdi/public_html/blog/wp-content/themes/suffusion/functions/media.php on line 694
لغات برمجة – الصفحة 2 – Abdulaziz Al Rashdi
ديسمبر 062011
 

في هذا الدرس سيتم شرح طريقة استقبال مدخلات من المستخدم ومعالجتها في البرنامج، هذا الدرس قد يتطلب مراجعة الدروس السابقة في قسم دروس C.

في لغة C نستخدم الدالة scanf لإدخال قيمة معينة لمتغير عبر المستخدم، وطريقة استخدامها:

scanf(type, variable);

الشطر الأول type: ويقصد به نوع المتغير سواء كان عددًا صحيح، أو حرف وإلخ..

الشطر الثاني variable: اسم المتغير، لكن مسبوقًا بـ&

مثال:

float a;
scanf("%f", &a);

سيتم تقسيم الدرس قسمين، وثالث متفرع من الثاني لتسهيل تتبع الدرس.

أولًا: الادخال البسيط:

في هذا الشطر سنقوم بتخزين المدخلات في متغيرات بسيطة، مثلا نخزن الرقم 5 في المتغير a و 2 في المتغير b وهكذا، هذا مثال مع الشرح:

#include<stdio.h>
main()
{
    /* *****************************************************
    *  تعريف المتغيرات المستخدمة                           *
    *  number1: لتخزين الرقم الأول                          *
    *  number2: لتخزين الرقم الثاني                        *
    *  sum: لتخزين حاصل جمع الرقم الأول مع الثاني           *
    ****************************************************** */
    int number1, number2, sum;
    // طباعة رسالة لطلب ادخال رقمين
    printf("Enter 2 numbers: ");
    /* ***************************************************************
    *  scanf(): هي  دالة لاستقبال مدخلة من قبل المستخدم               *
    *  %d: هنا تك نوع المتغير، وهنا تم تحديده كعدد صحيح              *
    *  &: يستخدم هذا الرمز قبل اسم المتغير لتتم تخزين البيانات به    *
    **************************************************************** */
    scanf("%d", &number1);
    scanf("%d", &number2);
    // عملية الجمع الاعتيادية
    sum = number1 + number2;
    //طباعة النتائج، لاحظ طريقة الكتابة
    printf("Sum of %d + %d = %d", number1, number2, sum);
}

ثانيا: الادخال إلى مصفوفة:

الجزء 1 من 2: الادخال لمصفوفة مباشرة:

المثال مع الشرح:

#include<stdio.h>
main()
{
    /* *****************************************************
    *  تعريف المتغيرات المستخدمة                           *
    *  numbers: مصفوفة بطول 3، لتخزين الأرقام               *
    *  sum: تخزين حاصل جمع المتغيرات الثلاثة                *
    ****************************************************** */
    int numbers[3], sum;
    // رسالة طلب ادخال 3 أرقام
    printf("Enter 3 numbers: ");
    // الادخال للخانة الأولى من المصفوفة
    scanf("%d", &numbers[0]);
    // الادخال للخانة الثانية من المصفوفة
    scanf("%d", &numbers[1]);
    // الادخال للخانة الثالثة من المصفوفة
    scanf("%d", &numbers[2]);
    // عملية الجمع الاعتيادية
    sum = numbers[0] + numbers[1] + numbers[2];
    printf("Sum of %d + %d + %d = %d", numbers[0], numbers[1], numbers[2], sum);
}

الجزء 2 من 2: استخدام التكرارات في الادخال والجمع:
المثال مع الشرح:

#include<stdio.h>
main()
{
    /* *****************************************************
    *  تعريف المتغيرات المستخدمة                           *
    *  numbers: مصفوفة بطول 5، لتخزين الأرقام               *
    *  sum: تخزين حاصل جمع المتغيرات كافّة                  *
    *  i: الرقم المتزايد للتكرار                           *
    ****************************************************** */
    int numbers[5], sum, i;
    // تحديد القيمة المبدئية لمتغير الجمع لتجنب الأخطاء
    sum = 0;
    // رسالة طلب ادخال 5 أرقام
    printf("Enter 5 numbers: ");
    /* *******************************************************
    *  التكرار الأول، للإدخال                                  *
    *  بدء عملية التكرار، البدء من 0 والتوقف عند 9           *
    *  لاحظ استبدال رقم الفهرس في المصفوفة بالمتغير المتزايد  *
    ******************************************************** */
    for(i=0;i<5;i++)
    {
        scanf("%d", &numbers[i]);
    }
    /* *******************************************************
    *  التكرار الثاني؛ عملية الجمع                           *
    *  لاحظ طريقة كتابة سطر الجماع:                           *
    *  sum += numbers[i];                                    *
    *  ويمكن كتابته بالطريقة الآتية أيضًا:                     *
    *  sum = sum + numbers[i];                               *
    ******************************************************** */
    for(i=0;i<5;i++)
    {
        sum += numbers[i];
    }
    // طباعة النتيجة
    printf("result is %d", sum);
}

يتضح بعد الدرس أن الاختلاف بين Java و C بسيط وليس هناك صعوبة لمن يتقن أحدهما في تعلم الأخرى 🙂

نوفمبر 242011
 

ربما لم أضع الدروس بالترتيب الصحيح، إذ انه من المفترض أن يكون هذا الدرس من أوائل الدروس. يفترض الآن أن هناك العديد من الأمثلة في الدروس السابقة للعمليات.
هناك العديد من العمليات والتعابير في لغات البرمجة، وفي العادة تستخدم في العمليات الرياضية وفي الأوامر الشرطية. والجدول الآتي يوضح بعض هذه العمليات:

العملية الشرح مثال
+ تستخدم لعمليات الجمع 1+ 2
++ أضف 1 i++
تستخدم لعمليات الطرح 1 – 2
اطرح 1 i–
* تستخدم لعمليات الضرب 1 * 2
/ تستخدم لعمليات القِسمة 1 / 2
% تستخدم لعرض الباقي من عملية القسمة 1 % 2
التعابير
== للتساوي a == b
=! لا يساوي a != b
< و > تستخدم لعمليات المقارنة، أكبر أو أصغر من a > b
=< أو => أكبر أو يساوي / أصغر أو يساوي a >= b
|| أو“or” – أي يتحقق
أحد الشروط
a == b || c == d
&& و “and” – يجب أن
تتحقق كل الشروط
a == b && c == d

العمليات ليست معقدة وتم شرحها في دروس سابقة ومن الأمثلة السابقة:

sum = a + b;

هي عملية جمع، حاصل ناتج جمع المتغير a مع b، أو للطرح:

sub = a - b;

حاصل طرح a من b وهكذا ..

سيتم شرح الأوامر الشرطية في درس لاحق بإذن الله 🙂

نوفمبر 212011
 

في درس اليوم سنحتاج لكافة ما تعلمناه في الدروس السابقة، وسأقوم بتدريج الدرس من الأسهل فما فوق. قبل البدأ في الدرس والأمثلة، هناك جزء مهم لم يتم شرحه في المقدمات السابقة بشكل وافي، وهو المكتبات المرفقة مع Java. إذ أن Java تحتوي على عدة مكتبات من شأنها المساعدة على معالجة البرنامج وأيضًا التسهيل والاختصار على المستخدم. في Java لإدراج مكتبة معينة نستخدم الكلمة المفتاحية import تتليها مسافة ثم اسم المكتبة قبل اسم الكائن أو class. مثال:

import java.util.scanner;

في المثال هناك اسم احد المكاتب الجاهزة في Java، وقد قمت بتضمينها جزء معين منها وهو “scanner” الخاص بالمدخلات، ويمكننا تضمين كافة اجزاء مكتبة معينة بالطريقة الآتية:

import java.util.*;

أي نستبدل الجزء بـ”*” ويقصد بها التعميم على جميع افرع المكتبة المحددة

في الدرس الذي بعنوان البرنامج الأول باستخدام Java تم شرح طريقة كتابة برنامج بسيط بـJava، وأيضًا شُرحت بعض المعطيات في الكائن. وفي درس آخر بعنوان المتغيرات والمصفوفات في Java تم وضع شرح حول المتغيرات وأنواعها. انتهينا من المقدمة التجهيزية :mrgreen: .

 

الجزء الاول لدرس المدخلات: الادخال لمتغير بسيط:

صنع برنامج لعمل عملية حسابية بين رقمين، اسم الكائن هو testinput، والمتغيرات a للرقم الأول، b للرقم الثاني، sum لناتج الجمع و input للمدخلات.

مثلما ذُكِر في المقدمة، سنقوم بتضمين إحدى مكتبات Java المرفقة مسبقًا إلى البرنامج للتعامل مع المدخلات فسنضع في السطر الأول أمر الاستيراد أو التضمين:

import java.util.*;

بعد امر الاستيراد سنقوم ببدأ بقية البرنامج بشكل اعتيادي ليكون كالتالي:

class testinput
{
public static void main(String[]args)
{

* لا تنسى إغلاق الأقواس بعد الانتهاء من البرنامج 🙂

الآن لنقم بتحديد انواع المتغيرات، ولنتفرض أنها اعداد صحيحة (integer) كالتالي:

int a, b, sum;

بما أنه هناك مكتبة خارجية، يجب التعريف بالمكتبة ضمن البرنامج؛ لذلك سنستخدم كلمة مفتاحية جديدة وهي new وتستخدم لإنشاء مثيل لكائن أو متغير ضمن كائن آخر ( ربما لم أكتبها بشكل صحيح – يمكن التأكد من الموسوعة الحرة).

الطريقة الصحيحة لتخصيص متغير لمكتبة التعامل مع المدخلات هو كتابة الكلمة المفتاحية Scanner يتلوها اسم المتغير ولنفترض انه input، وبعدها علامة “=” تتلوها الكلمة المفتاحية new وأخيرًا كتابة الدالة Scanner وبين قوسين كتابة System.in. (لاحظ أن كافة السطر ثوابت باستثناء المتغير input، أي يمكننا استبداله بأي اسم آخر). المثال:

Scanner input = new Scanner(System.in);

بعد ان قمنا بتهيئة مكتبة الادخال، لجلب المدخلات نستخدم الطريقة الآتية:

a = input.nextInt();
b = input.nextInt();

وهكذا بالترتيب. لاحظ استخدام “nextInt“؛ هي من ثوابت مكتبة الادخال، ولها انواع اخرى بنفس الوزن مثل:

input.nextDouble();

input.nextFloat();

input.nextChar();

النوع تحدده حسب نوع المتغير الذي يتم تخزين البيانات به

بعد أن قمنا بتخزين المدخلات في المتغيرات a و b سنقوم بتخزين حاصل جمعهما في المتغير sum كالتالي:

sum = a+b;

وببساطة نتابع بقية البرنامج:

System.out.print(a + " + " + b + " = " + sum);
}
}

شفرة البرنامج كاملة:

import java.util.*;
class testinput
{
 public static void main(String[]args)
 {
  int a, b, sum;
  Scanner input = new Scanner(System.in);
  System.out.print("Enter 2 numbers: ");
  a = input.nextInt();
  b = input.nextInt();

  sum = a+b;

  System.out.print(a + " + " + b + " = " + sum);
 }
}

صورة للناتج:

الجزء الثاني من الدرس: الادخال لمصفوفة:

الاختلاف بسيط عن الطريقة السابقة، لكن اكمالًا لتقصير في شرح درس المتغيرات السابق؛ سأقوم بتوضيح طريقة تعيين حجم المصفوفة بالشكل الصحيح. هنا سنقوم باستخدام الكلمة المفتاحية new مرة أخرى.

لعمل متغير باسم numbers بطول (2) أو مكانين للتخزين، نكتب الكلمة المفتاحية int[] (لاحظ الاقواس المربعة) ويتلوها اسم المتغير وهو numbers وعلامة “=” ثم نكتب الكلمة المفتاحية new وأخيرًا نكرر int لكن هذه المرة مع حجم المتغير بين القوسين المربعين [2]. المثال:

int[] numbers = new int[2];

أيضًا عن المثال في الجزء الأول، سنضطر لتغيير المتغيرات a و b إلى متغير المصفوفة ورقم الفهرسة (index) ليكون:

numbers[0] عوضًا عن a
numbers[1] عوضًا عن b

البرنامج كاملًا بعد التعديلات اللازمة:

import java.util.*;
class testinput
{
 public static void main(String[]args)
 {
  int[] numbers = new int[2];
  int sum;
  Scanner input = new Scanner(System.in);
  System.out.print("Enter 2 numbers: ");
  numbers[0] = input.nextInt();
  numbers[1] = input.nextInt();

  sum = numbers[0]+numbers[1];

  System.out.print(numbers[0] + " + " + numbers[1] + " = " + sum);
 }
}

الجزء الثالث والأخير من الدرس: استخدام التكرار في الادخال ومعالجة المدخلات:

للتذكير: يمكن الوصول لدرس التكرارات عبر الدرس التكرار في C, Java و PHP.

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

class testloop
{
 public static void main(String[]args)
 {
  // المصفوفة مع بعض القيم
  int[] numbers = {10,33,21,53,22};
  //تعريف متغير حساب التكرار
  int i;
  /* أمر التكرار
   *  لاحظ استخدام
   *  numbers.length
   *  الغرض من ذلك هو تحديد طول المصفوفة تلقائيًا دون الحاجة لكتابة الرقم يدويًا
   *  ويمكن كتابة الرقم ليكون حسب المثال السابق 5
   *  لاحظ أن شرط المصفوفة هو أن يكون متغير حساب التكرار أصغر من حجم المصفوفة
   *  لأن المصفوفة تبدأ من الصفر، بالتالي فإن آخر فهرس هو 4
  */

  for(i=0;i<numbers.length;i++)
  {
   /* طباعة محتوى المصفوفة
    *  لاحظ ان متغير حساب التكرار هو بمكان رقم الفهرس
    *  حسب الأمثلة السابقة دون التكرار
   */
   System.out.print(numbers[i] + "\n");
  }
 }
}

(يفضل نسخ الشفرة السابقة لمحرر Java لتظهر بشكل صحيح)

 

حان الوقت لتطبيق المثال السابق للعمليات الحسابية وباستخدام التكرار، الاختلاف ليس بالكثير، الشفرة كاملة:

import java.util.*;
class testinput
{
 public static void main(String[]args)
 {
  // تحديد نوع المصفوفة وطولها
  int[] numbers = new int[5];
  // تحديد نوع متغير حساب التكرار ومتغير تخزين حاصل الجمع
  int i,sum;
  // تحديد قيمة متغير حساب المجموع بصفر لتجنب الأخطاء في بداية العملية الحسابية
  sum = 0;
  Scanner input = new Scanner(System.in);
  System.out.print("Enter 5 numbers: ");
  // أمر التكرار، لتخزين المدخلات فقط
  for(i=0;i<numbers.length;i++)
  {
   numbers[i] = input.nextInt();
  }
  /* أمر التكرار للعمليات الحسابية
   * لاحظ طريقة كتابة المتغير
   * ويقصد به جمع القيم السابقة في متغير حساب المجموع مع محتوى المصفوفة
   * ويمكن كتابته بطرق أخرى مثل:
   * sum += numbers[i];
  */
  for(i=0;i<numbers.length;i++)
  {
   sum = sum + numbers[i];
  }  

  System.out.print("sum = " + sum);
 }
}

صورة للناتج:

 

يمكن طرح الاستفسارات في التعليقات أسفل الدرس 🙂

نوفمبر 162011
 

بما أن اوامر التكرار تشبه بعضها بعضًا بشكل كبير، في هذا الدرس سيتم شرحها لـ3 لغات برمجية مختلفة. للدروس السابقة يمكنك العودة للأقسام من القائمة الجانبية.

هناك عِدة أهداف من أوامر التكرار أهمها هو تجنب تكرار الشفرة لذات الغرض أكثر من مرة، لنتفرض أنك ترغب بعمل برنامج لحساب حاصل جمع 10 ارقام، بالتالي سيكون عليك تكرار الشفرات 10 مرات لكل رقم على حدى، لكن يمكن اختصار السطور باستخدام أوامر التكرار.

في Java, C و PHP، هناك 3 انواع من أوامر التكرار وهي:

  1. while
  2. do-while
  3. for

وتستخدم بالطريقة الآتية:

1. while

أولًا: تحديد متغير بقيمة أولية ولنفترض أنه i والقيمة الأولية هي 1.

ثانيًا: كتابة الكلمة المفتاحية while وبين قوسين كتابة “expression” أو تعبير رياضي من خلاله تحدد القيمة النهائية للتكرار، لنتفرض أننا نريد إيقاف التكرار عندما تبلغ قيمة i الرقم 10 مثلًا، فيمكن كتابة التعبير (i < 11) – اي المتغير أصغر من 11 أو (i <= 10) – أي المتغير اصغر أو يساوي 10.

ثالثًا: داخل كتلة التكرار “أي بين { و }” تضع ذات المتغير بشكل متزايد؛ مثلًا: i++ أو i= i+1 أو يمكن بطرق أخرى. عدم وضع التزايد قد يسبب حمل زائد على الذاكرة بالتالي إيقاف عمل البرنامج، وذلك يعتمد على المترجم.

2. do-while

أولًا: تحديد متغير بقيمة أولية ولنفترض أنه i والقيمة الأولية هي 1.

ثانيًا: كتابة الكلمة المفتاحية do ويتلوها قوسي الكتلة “أي { و }”.

ثالثًا: داخل كتلة التكرار “أي بين { و }” تضع ذات المتغير بشكل متزايد؛ مثلًا: i++ أو i= i+1 أو يمكن بطرق أخرى. عدم وضع التزايد قد يسبب حمل زائد على الذاكرة بالتالي إيقاف عمل البرنامج، وذلك يعتمد على المترجم.

رابعًا: كتابة الكلمة المفتاحية while وبين قوسين كتابة “expression” أو تعبير رياضي من خلاله تحدد القيمة النهائية للتكرار، لنتفرض أننا نريد إيقاف التكرار عندما تبلغ قيمة i الرقم 10 مثلًا، فيمكن كتابة التعبير (i < 11) – اي المتغير أصغر من 11 أو (i <= 10) – أي المتغير اصغر أو يساوي 10.

3. for

تلخص كافة الخطوات في while في سطر واحد ليكون كالتالي:

كلمة for المفتاحية وبين القوسين بالترتيب: نكتب قيمة المتغير الأولية ونضع “؛” (فاصلة منقوطة) وبعدها التعبير الرياضي (مثلا i<=10) ونضع “؛” وأخيرًا نضع امر التزايد ليكون مثلًا i++

 

الآن سأقوم بوضع الأمثلة لتصل المعلومة بشكل أفضل، أولًا: Java:

class testloop
{
public static void main(String[]args)
{
int i;

//type 1
i=1;
System.out.print("Type 1 (while): \n");
while(i <= 10)
{
System.out.print(i + "\n");
i++;
}

//type 2
i=1;
System.out.print("\nType 2 (do-while): \n");
do
{
System.out.print(i + "\n");
i++;
}
while(i <= 10);

//type 3
System.out.print("\nType 3 (for): \n");
for(i=1;i<=10;i++)
{
System.out.print(i + "\n");
}
}
}

ثانيًا: C:

#include <stdio.h>
main()
{
int i;

//type 1
i=1;
printf("Type 1 (while): \n");
while(i<=10)
{
printf("%d \n", i);
i++;
}

//type 2
i=1;
printf("\nType 2 (do-while): \n");
do
{
printf("%d \n", i);
i++;
}
while(i<=10);

//type 3
printf("\nType 3 (for): \n");
for(i=1;i<=10;i++)
{
printf("%d \n", i);
}

}

ثالثًا: PHP:

<?PHP
// Type 1
$i=1;
echo "type 1 (while):<br />\n";
while($i <= 10)
{
echo $i."<br />";
$i++;
}

// Type 2
$i=1;
echo "type 2 (do-while):<br />\n";
do
{
echo $i."<br />";
$i++;
}
while($i <= 10);

// Type 3
echo "type 3 (for):<br />\n";
for($i=1;$i<=10;$i++)
{
echo $i."<br />";
}
?>

هل توافقني على أنها متشابهة جدًا ؟ 😀

نوفمبر 102011
 

في الدرس السابق بعنوان مقدمة حول JavaScript ، تم شرح طريقة استدعاء JavaScript في صفحات الموقع، وفي هذا الدرس سيتم شرح طريقة التعامل مع JavaScript عن طريق الأحداث “Events” وكيفية صنع دوال JavaScript لاستدعاءها في حدث معيّن.

فما هي الأحداث في HTML؟

ببساطة هي تشبه الأوامر الشرطية، لكن تعاملها يشترط على احداث معينة، مثالًا؛ عند الضغط (OnClick) على الزر أ اظهر رسالة ترحيب. مثال أدق:

<input type="submit" name="button" id="button" value="Show Welcome" onClick="window.alert('Welcome to http://www.alrashdi.co');">

وهناك العديد من الأحداث منها:

onLoad: عند تحميل المحتوى، وينحصر هذا الحدث على الوسم body في html فقط.

onfocus: عند التركيز، يستخدم في الغالب لنماذج الادخال، ويقصد به عند الضغط على الحقل أو تركيز المؤشر عليه.

onBlur: عند إلغاء التركيز، يعكس الحدث السابق، أي بعد خروج المؤشر من نموذج ادخال معيّن.

onchange: في الغالب يرافق القوائم، ويقصد به عند تغيير القيمة..

وهناك العديد من الاحداث، يمكنك اكتشافها عبر الأمثلة لاحقًا..

وللاستعداد للجزء القادم من الدرس، سأدرج بعض دوال JavaScript مع الشرح أدناه:

– اظهار رسالة للمستخدم:

window.alert('الرسالة هنا');

– نافذة التأكيد:

confirm('رسالة التأكيد هنا');

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

– نافذة ادخال نص:

prompt('السؤال هنا', 'قيمة افتراضية');

ليس من الضروري أن تضع قيمة افتراضية لنوافذ الادخال

 

كيفية عمل دالة في JavaScript:

شكل الدالة يكون:

function name()
{

}

وتستبدل name باسم الدالة، ويمكن أيضًا ادراج متغيرات في الدالة، مثال:

function name(var1, var2)
{

}

أي أن الملخص في تكوين الدالة هو الكلمة المفتاحية function يتلوها اسم الدالة وقوسين بهما المتغيرات إن وجدت، وقوسين معكوفين بينها تضع محتوى الدالة 🙂

وسنقوم الآن بصنع دالة لعرض رسالة ترحيب:

function welcome_message()
{
window.alert('Welcome to http://www.alrashdi.co');
}

وسنضعها في الحدث onLoad في الوسم body، بحيث تظهر عند تحميل الصفحة، الشفرة كاملة:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JavaScript Example 4</title>

<script type="text/javascript">
function welcome_message()
{
window.alert('Welcome to http://www.alrashdi.co');
}
</script>

</head>

<body onLoad="welcome_message();">

</body>
</html>

هل تفكر بتطوير نفس الدالة بحيث يقوم المستخدم بكتابة اسمه؟ 

ليس هناك أي تعقيد، سنقوم بتخزين ما يكتبه المستخدم عبر نافذة الادخال في متغير معين، وثم نقوم بعرض رسالة تحتوي ذلك المتغير، المثال:

function welcome_message()
{
var name = prompt('What is your name?');
window.alert('Welcome ' + name + ' to http://www.alrashdi.co');
}

ويمكنك التجربة في نفس المثال السابق، قد تلاحظ تكرار علامة الجمع أكثر من مرة “+”، وللتوضيح، في JavaScript، نستخدم “+” لدمج أكثر من متغير أو نص مقتبس في نفس السطر.

وأخيرًا، سأضع مثال لرسالة التأكيد وكيفية استخدامها بشكل صحيح. لنفترض أن هناك وصلة للذهاب لموقع آخر غير موقعك، وترغب بتنبيه الزائر بذلك وتأكيد خروجه من موقعك؛ ستكون الدالة في الحدث onClick في الوصلة الخارجية، والدالة هي:

function leave_page()
{
var con = confirm('هل أنت متأكد من مغادرة هذه الصفحة؟\n http://www.alrashdi.co');
if(con)
return true;
else
return false;
}

لاحظ وجود الكلمة المفتاحية return، وتستخدم لتأكيد العملية ما بعد الحدث، أو الحركة القادمة، أي أنه في حالة التأكيد، يواصل المتصفح العملية باتجاهه للصفحة الخارجية، وفي حالة عدم التأكيد، يحبط المتصفح الانتقال للصفحة الخارجية. الشفرة كاملة:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JavaScript Example 2</title>

<script type="text/javascript">
function leave_page()
{
var con = confirm('هل أنت متأكد من مغادرة هذه الصفحة؟\n http://www.alrashdi.co');
if(con)
return true;
else
return false;
}
</script>

</head>

<body>
<div align="center"><a href="http://www.hct.me" onClick="return leave_page();">Go to HCT Community Site</a></div>
</body>
</html>

هنا نصل لختام هذا الدرس، إن كانت هناك أسئلة، يرجى طرحها في التعليقات أسفل الدرس 🙂