أخر المقالات
تحميل...

الثلاثاء، 31 مارس 2015

الدرس السادس عشر : دورة تعلم لغة البرمجة C

أهلاً وسهلاً بكم في الدرس السادس عشر من دورة تعلم لغة البرمجة C . شرحنا في الدرس السابق مقدمة عن موضوع المصفوفات وتعرفنا على أنواعها وشرحنا النوع الاول منها ( مصفوفات احادية البعد ) , وهنا في هذا الدرس سنكمل موضوع المصفوفات ونتعرف على النوع الثاني منها وهي المصفوفات متعددة الأبعاد .
إن المصفوفات متعددة الابعاد Multidimensional arrays كما واضح من إسمها فهي تتكون من اكثر من بعد واحد لذلك فأن طريقة تعريفها تكون بالشكل التالي :
data type array name[size1][size2].......[sizeN];

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

المصفوفات ثنائية الابعاد :
هي أسهل وأبسط مثال للمصفوفات متعددة الأبعاد . لانها تتكون من بعدين فقط  x , y أو يمكن تسميتها أيضا بالصفوف والأعمدة .
طريقة تعريف مصفوفة ثنائية تكون بالصيغة التالية :

type arrayName [ x ][ y ];
حيث أن :
type : يشير ويمثل نوع البيانات ونوع المصفوفة فقد تكون ( int,float,double,string ) .
arrayName : يشير الى إسم المصفوفة ويمكن أن يكون أي إسم حسب رغبتك لكنه يخضع لشروط تسمية المتغيرات التي سبق شرحها .
x : تكون قيمته رقم ويمثل عدد صفوف المصفوفة .
y : تكون قيمته رقم ويمثل عدد أعمدة المصفوفة . 



فمثلا نريد أن نقوم بتعريف مصفوفة من نوع العدد الصحيح وإسمها a وتتكون من 3 صفوف و 4 اعمدة فالتعريف يكون بالشكل التالي :
int a [ 3 ][ 4 ];
إذن المصفوفة اعلاه هي مثال لمصفوفة ثنائية البعد تتكون من ثلاث صفوف وأربع أعمدة وعدد عناصرها تساوي 12 عنصر , أي نقوم بعملية ضرب عدد الصفوف * عدد الأعمدة .
ذكرنا في الدرس السابق إن المصفوفة تحجز في الذاكرة مجموعة من الأماكن الخالية ويمكننا إعتبار كل عنصر من عناصر المصفوفة كأنه متغير ومن الأساس فأن المصفوفات وجدت للتقليل من عدد المتغيرات في البرامج الطويلة .
لذلك يمكننا تمثيل المصفوفة أعلاه والتي تتكون من ثلاث صفوف وأربع أعمدة بالشكل التالي :

في الذاكرة فأن المصفوفة الثنائية تتمثل كما في الصورة . لذلك يمكننا التعامل مع المصفوفة ككل أو التعامل مع كل عنصر من عناصر المصفوفة لوحده .

طريقة إعطاء قيم لعناصر المصفوفة :  
إن إعطاء قيم لعناصر المصفوفة الثنائية يتشابه مع المصفوفة الاحادية كما شرحنا في الدرس السابق , ويتم بطريقتين أما من قبل المبرمج أي أن يعطي قيم ابتدائية لعناصر مصفوفته أو يتم عن طريق إدخال القيم عن طريق مستخدم البرنامج ويتم بإستخدام أدوات التكرار وجملة for ولكن الاختلاف هنا إن جملة for سيتم إستخدامها مرتين واحدة بداخل الاخرى لكي نستطيع تمثيل البعدين . وكلما زادت الابعاد إزدادت بقدرها جمل for . 

يمكن إعطاء قيم لعناصر المصفوفة بعدة طرق حيث نستطيع إعطاء قيم لكل عنصر لوحدة وبالشكل التالي :
 a [0 ][0 ] = 3;
 a [1][ 0 ]= 5;
 a [ 2][ 0]= 1;

وهكذا بالنسبة لبقية العناصر أي أن تتكرر 12 مرة . وهي طريقة مزعجة وطويلة ويمكن إعطاء القيم بالشكل التالي والاسهل :

int a[3][4] = {
 {0, 1, 2, 3} ,                  // السطر الاول 
 {4, 5, 6, 7} ,                 // السطر الثاني 
 {8, 9, 10, 11 } };         // السطر الثالث

أو يمكن أن يكون إعطاء القيم بسطر واحد كالتالي :
int a[3][4] = { {0, 1, 2, 3} , {4, 5, 6, 7} , {8, 9, 10, 11} };

أما طريقة إدخال قيم المصفوفة عن طريق المستخدم فيتم بإستخدام إسلوب nested for اي جملة for متداخلة وستستخدمها مرتين لان المصفوفة تتكون من بعدين . وكذلك عملية الطباعة للمصفوفة فهي حالها حال الادخال ومثلها تماماً والاختلاف الوحيد هو استخدام دالة الطباعة printf في حين نستخدم للإدخال جملة scanf . وسيتم التوضيح عن طريق البرامج التالية :

مثال برمجي : برنامج لتعريف مصفوفة تتكون من 5 صفوف و 2 عمود وإعطائها قيم وثم طباعتها .





مثال برمجي 2 : برنامج لإدخال مصفوفة عن طريق المستخدم وطباعتها .




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

الى هنا نأتي الى ختام هذا الدرس . 
نلتقي في الدرس القادم

الجمعة، 27 مارس 2015

تفعيل الزر hibernate في نظام ويندوز8

أهلا وسهلا بكم متابعينا الكرام في شرحنا لهذا اليوم والذي سيكون حول تفعيل الزر hibernate في ويندوز 8 لكن قبل التفعيل وشرح طريقة التفعيل سنتعرف على هذا الزر وفائدته .

ماهو الزر hibernate  ؟ وما فائدته ؟ ومالفرق بينه وبين shut down؟
هو أحد الأزرار الموجودة في قائمة power والتي غالبا تحتوي على sleep,restart,shutdown  وهذا الزر ذو فائدة كبيرة ولكن الكثير لايستعملوه لعدم معرفتهم بفائدته .
فائدة هذا الزر هي عمل سبات للكومبيوتر وإطفاءه نهائيا لكن الفرق بينه وبين shut down هو إن جميع أعمالك تبقى محفوظة .
سنوضح الفكرة بشكل أفضل :
فرضا انت تستعمل الحاسوب ولديك متصفح انترنت مفتوح وبرنامج الفوتوشوب وبرنامج الوورد و... الخ . عند عمل shutdown فالكومبيوتر سينطفى وسيطلب منك اغلاق هذه البرامج وأحيانا يتم غلقها تلقائيا . لكن مع استخدام hibernate فالامر مختلف حيث ستبقى هذه البرامج تعمل ولن تنطفىء بالرغم من أن الحاسوب سينطفىء حاله حال shutdown وبدون أن يستهلك أي طاقة كهربائية . وعند التشغيل مرة اخرى ستشاهد برامجك كما تركتها بدون أي تغيير ويمكنك الاستمرار في استعمالها.

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


إن هذا الزر في ويندوز 8 يكون غير موجود وغير مفعل بالوضع الافتراضي للنظام وسنشرح طريقة تفعيله وهي سهلة جدا لكن قد لايعرفها الكثير .

الوضع الافتراضي يكون هكذا :


طريقة التفعيل :

الخطوة الاولى : 
إذهب الى Control Panel ثم الى Power Options 

الخطوة الثانية :
تابع هذه الصور




النتيجة :

الأربعاء، 25 مارس 2015

إخفاء وإقفال الملفات بطريقة ذكية وبدون برامج !

ربما لديك ملفات ومجلدات مهمة وخاصة بك وقد تحتاج في يوم من الأيام الى إخفاء هذه الملفات من جهازك أو قفلها برقم سري بحيث لايمكن لغيرك الوصول اليها , وقد تتواجد عشرات الطرق التي تفي بهذا الغرض لكن أغلب هذه الطرق تعتمد على برامج أخرى يتم تنصيبها على جهازك وغالبا إن هذه البرامج تسبب مشاكل في جهازك وقد تتعرض ملفاتك للحذف أو قد يتم قفلها ولايتم الفتح أو قد تختفي ولاتظهر ومشاكل البرامج كثيرة لهذا وجدنا لكم طريقة جميلة وذكية وسهلة بنفس الوقت بالاضافة الى فعاليتها الكبيرة .
نبدأ بشرح الطريقة :

ملاحظة : هذه الطريقة ليست للمبتدئين , فإذا كنت مبتدىء في إستخدام الحاسوب رجاءاً لاتقم بتطبيق هذا الشرح .

الخطوة الاولى : افتح برنامج notepad وضع فيه الكود التالي :

cls 
@ECHO OFF 
title Folder Private 
if EXIST "HTG Locker" goto UNLOCK 
if NOT EXIST Private goto MDLOCKER 
:CONFIRM 
echo Are you sure you want to lock the folder(Y/N) 
set/p "cho=>" 
if %cho%==Y goto LOCK 
if %cho%==y goto LOCK 
if %cho%==n goto END 
if %cho%==N goto END 
echo Invalid choice. 
goto CONFIRM 
:LOCK 
ren Private "HTG Locker" 
attrib +h +s "HTG Locker" 
echo Folder locked 
goto End 
:UNLOCK 
echo Enter password to unlock folder 
set/p "pass=>" 
if NOT %pass%== 123456 goto FAIL 
attrib -h -s "HTG Locker" 
ren "HTG Locker" Private 
echo Folder Unlocked successfully 
goto End 
:FAIL 
echo Invalid password 
goto end 
:MDLOCKER 
md Private 
echo Private created successfully 
goto End 
:End


ثم قم بحفظ الملف بإسم locker.bat
ملاحظة : إمتداد الملف يجب أن يكون bat .

الخطوة الثانية : بعد حفظ الملف ووضع الكود السابق فيه سيتشكل لنا الملف الموضح بالصورة التالية (1) .. نضغط عليه  double click لكي يتكون لنا مجلد بإسم private تلقائياً (2) .



الخطوة الثالثة : المجلد private هو المجلد المسؤول عن إخفاء الملفات وقفلها . تضع الملفات والمجلدات التي تريد إخفائها في هذا المجلد وتضغط على الملف locker مرة اخرى , ولكن هذه المرة النتيجة تكون كالتالي :

الان تضغط حرف ( Y ) ثم تضغط على Enter .
ستلاحظ إختفاء المجلد private وماوضغته بداخله من ملفات أو مجلدات وقفله تلقائيا .


الخطوة الرابعة : لكي تستطيع فتح المجلد مرة اخرى وجعله يظهر . ستقوم بالضغط مرة اخرى على الملف locker لكي تضهر لك نافذة تطلب الرقم السري .. سوف تقوم بإضافة الرقم 123456 وتضغط Enter .




ملاحظة :
1- لكي تقوم بإعادة اخفاء الملف ستكرر الخطوة الثالثة . حيث إن الخطوة الثالثة والرابعة تتكرر دورياً كلما تقوم بإخفاء وإظهار الملف
2- يمكنك تغيير الرقم السري الى اي رمز أخر حسب رغبتك وذلك بتغييره في الكود الموجود بالخطوة الاولى وقد تم تلوينه باللون الاحمر لمعرفة مكانه .


انتهى الشرح نرجو أن ينال على إعجابكم .

الثلاثاء، 24 مارس 2015

الدرس الخامس عشر : دورة تعلم لغة البرمجة C

أهلاً وسهلاً بكم في الدرس الخامس عشر من دورة تعلم لغة البرمجة C . في هذا الدرس سنتعلم موضوع جديد وهو موضوع المصفوفات ( Arrays ) وقبل الدخول في تفاصيل هذا الدرس والطرق البرمجية لابد من تقديم تعريف بسيط بهذه الموضوع ولابد من تعلم مالمقصود بالمصفوفات ؟
ماهي المصفوفة : أبسط تعريف للمصفوفة  (هي مجموعة من البيانات من نفس النوع ) . حيث تستعمل المصفوفات لإدارة مجموعة كبيرة من البيانات التي تحمل نفس النوع وبإستخدام إسم واحد فقط .
اذا لم تتوضح الفكرة من خلال التعريف سنوضحها بالمثال التالي :
مثلا نريد إنشاء برنامج يحتوي على 20 متغير من النوع الصحيح فمن غير المعقول أن نقوم بتعريفها بالصورة التالية :
; int  num1,num2,num3,num4 .......num20 
وخاصة اذا كنا نريد أن يقوم المستخدم بإعطاء قيم لهذه المتغيرات . وذلك لاننا سنحتاج الى عشرون جملة إدخال ( scanf ) وكذلك سنلاقي صعوبة بالغة بالتعامل مع هذه المتغيرات الكثيرة  لإن الكود سيكون طويل والمبرمج الناجح يلجأ دائما الى اقل كود ممكن لهذا ولحل هكذا مشاكل سنتجه الى التعامل مع موضوع المصفوفات .

أنواع المصفوفات :
تقسم المصفوفات الى ثلاث اقسام وهي :
1- مصفوفات احادية البعد
One-dimensional arrays
2- مصفوفات متعددة الابعاد ( اكثر من بعد واحد ) Multidimensional arrays
3- مصفوفات السلاسل الحرفية string arrays

وسوف نتكلم عن كل نوع من هذه الانواع نبدأ بالمصفوفة الاحادية , لتعريف مصفوفة أُحادية نتبع الصيغة التالية :
int ( or any other data type)  array name [array size];

الصيغة أعلاه هي الصيغة العامة لتعريف مصفوفة احادية وهي مشابه لتعريف متغير بإستثناء وجود حجم المصفوفة . أي لو أردنا تعريف مصفوفة من نوع العدد الصحيح  واسمها (num) ونريد ان يكون عدد عناصرها عشرين فستكون بالصيغة التالية :
int num[20];
إن هذا التعريف البسيط يعادل السطر الكامل الذي في الاعلى فبدلاً من تعريف عشرين متغير قمنا بتعريف مصفوفة تتكون من عشرين عنصر لكي تمثل لنا العشرين متغير الذي سنحتاجه .
مثال اخر : سنقوم بتعريف مصفوفة من نوع float وتحتوي على اربع عناصر :
float aa[4];
أي إننا قمنا بتعريف مصفوفة إسمها aa ( الأسم حسب رغبتنا ولكنه يخضع لشروط تسمية المتغيرات التي سبق وشرحناها )  وهذه المصفوفة تحتوي أربع عناصر أو أربع متغيرات أو بصيغة اخرى حجزت في الذاكرة أربعة أماكن خالية وهي 

aa[0]
aa[1] 
aa[2] 
aa[3] 
وهذه الأماكن تعتبر متغيرات وبإمكاننا معاملتها معاملة المتغير ودائما تبدأ من الرقم صفر .

طريقة إعطاء قيم لعناصر المصفوفة :

ذكرنا أعلاه إن المصفوفة تشكل مجموعة من الاماكن الخالية في الذاكرة أو تشكل مجموعة من المتغيرات والغرض منها استغلالها والاستفادة منها , ومن الطبيعي أن يكون لهذه المتغيرات التي تتمثل بعناصر المصفوفة قيم معينة نستخدمها في برامجنا وحسب حاجتنا لها وهذه القيم أما تعطى مباشرة من قبل المبرمج أو يتم إدخالها من قبل المستخدم ( وهي الاكثر استخداماً ) أو تأتي من ناتج لعملية حسابية .
اما طريقة إعطاء القيم لعناصر المصفوفة مباشرة يكون بالصيغة التالية :
aa[4]={ 5,3,1,4};
ويمكن إعطاء القيم بالطريقة التالية :


aa[0]=5;
aa[1]=3;
aa[2]=1;
aa[3]=4;

وكلا الطريقتين اعلاه متكافئة . أي يمكن اعطاء قيمة لكل عنصر من عناصر المصفوفة لوحدة وكذلك يمكن إسناد القيم جميعها بسطر واحد وهي تتوزع على عناصر المصفوفة وبالترتيب وكما ذكرنا إن أول عنصر بالمصفوفة يكون صفر وليس واحد .

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


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

الى هنا نأتي الى نهاية درسنا .. نلتقي في الدرس القادم

الأحد، 15 مارس 2015

الدرس الثالث عشر : دورة تعلم لغة البرمجة C

أهلاً وسهلاً بكم في الدرس الثالث عشر من دورة تعلم لغة البرمجة C , هذا الدرس والدرس القادم سيكونا للأفكار والتطبيقات  . سنقوم بعمل مجموعة من البرامج ونتمنى أن تستفيدوا منها وتستفيدوا من أفكارها وتقوموا بتطويرها إذا أمكن . وأيضا الهدف من هذه الدروس هو زيادة معرفتك بجمل هذه اللغة الرائعة . البرامج ستكون على شكل صور وستشمل كل المواضيع التي تعلمناها من بداية الدورة الى نهاية موضوع التكرار .

البرنامج الاول :
برنامج لإدخال عدد معين ومعرفة هل هو فردي أم زوجي ؟








البرنامج الثاني :
برنامج لإدخال عدد معين وحساب المضروب 
( factorial ) الخاص به  ؟

ملاحظة : المضروب = حاصل ضرب الرقم في جميع الأعداد التي تسبقه بإستثناء الصفر .
أي إن :

 المضروب الخاص بالعدد 2 = 2*1
 المضروب الخاص بالعدد 3 = 3*2*1
 المضروب الخاص بالعدد 4 = 4*3*2*1
وهكذا بالنسبة لبقية الاعداد ...

وهذا البرنامج لحساب   factorial  الخاص بالاعداد :






البرنامج الثالث :
برنامج لإدخال درجة معينة وحساب التقدير ؟
البرنامج بإستخدام جملة switch case








البرنامج الرابع :
برنامج لفحص العدد هل هو palindrome أو لا ؟

لتوضيح فكرة البرنامج :palindrome : يعني ان الرقم يمكن كتابته من اليمين واليسار ويبقى نفس الرقم ولايتغير .
فمثلاً الرقم 454 لو كتباه من اليمين ومن اليسار فأنه سيكون نفسه وهكذا الحال بالنسبة للرقم 121 والرقم 998899 والكثير من الارقام .
فأذا كان الرقم الذي سوف نقوم بإدخاله يقبل الكتابة من الجهتين فأن البرنامج سيكتشف بأنه 
palindrome والعكس صحيح .






المزيد من الامئلة التطبيقية والبرامج في الدرس القادم .

الخميس، 12 مارس 2015

الدرس الثاني عشر : دورة تعلم لغة البرمجة C

أهلاً وسهلاً بكم في الدرس الثاني عشر من دورة تعلم لغة C . بعد أن تم البدء بموضوع التكرار وتم شرح بعض جمل التكرار ( جملة while وجملة for  ) سنقوم في هذا الدرس بشرح جملة ثالثة تستعمل للتكرار وهي من الجمل المفيدة والكثيرة الاستخدام وهي جملة ( do ... while ) بالاضافة الى إننا سنكمل كل الامور المتعلقة بموضوع التكرار .
نبدأ الدرس :

do .. while 

الصيغة العامة لإستخدام هذه الجملة هي :
do
 { 
statement(s) ;
 } while( condition ) ;

والمخطط التالي يوضح عمل هذه الجملة :

إن هذه الجملة مشابهة الى حد كبير مع جملة while ومن يفهم ويستوعب جملة while فلن يجد أي صعوبة في فهم هذه الجملة والاختلاف الوحيد بينهما هو إن هذه الجملة ستُنفذ على الاقل مرة واحدة حتى لو كان الشرط غير صحيح .

وهذا برنامج بسيط بلغة C لتوضيح فكرة عمل هذه الجملة ( وهو نفسه البرنامج في الدرسين السابقين لكي نوضح الفرق بين استخدام الجمل الثلاثة في التكرار ) .




نلاحظ إن نتيجة التنفيذ هي نفسها في الثلاث برامج وأنت مخير في استخدامك لجمل التكرار حسب فهمك لها . والمزيد من الامثلة البرمجية تأتيكم في الدرسين القادمين  ( دروس أفكار وتطبيقات ) .

ننتقل الى موضوع أخر وهو :

nested loops in C
تعلمنا في الدروس السابقة في موضوع ( إتخاذ القرار ) إن كلمة nested تعني التداخل وهنا أيضا فهي بنفس المعنى حيث توفر لنا لغة C إمكانية عمل تكرار متداخل أي أن تأتي جملة التكرار بداخل جملة تكرار اخرى . وهي خاصية غاية في الاهمية وخاصة في موضوع المصفوفات ذات البعدين والتي سنتطرق لها في الدروس القادمة .
الصيغة العامة للتكرار المتداخل تكون كالتالي :

ننتقل الى موضوع أخر وهو :

infinite loop
قد تلاحظ أحياناً أثناء دراستك او إذا صادفت سورس كود لبرامج بلغة C أن تأتي جملة for بالصيغة التالية :
for (  ;  ; )

إذا صادفتك هذه الحالة لاتستغرب وتذكر هذا الدرس .
إن هذه الحالة تسمى بالتكرار اللانهائي 
infinite loop والمقصود بالتكرار اللانهائي إن البرنامج او الجملة تبقى تتكرر الى مالانهاية من عدد المرات وهذا يحدث عندما تكون قيمة الشرط صحيحة دائما ولاتبقى false أبداً . وهنا في هذه الحالة لايوجد شرط من الاساس أي إن القيمة صحيحة دائما .
وهذا مثال برمجي بسيط لهذه الحالة :


ستلاحظ إن البرنامج يستمر بالتكرار ولايتوقف . أما طريقة ايقاف هكذا برامج فتكون بالضغط على ctrl + c من لوحة المقاتيح .
سننتقل الان الى الجزء الأخير من درسنا لهذا اليوم والذي سنختم به درسنا وسنختم به موضوع التكرار . في هذه الجزء سنعرفكم ببعض الجمل المهة والتي تستعمل ضمنيا ضمن جمل التكرار .
1- break
هي كلمة محجوزة في اللغة وتعتبر واحدة من جمل السيطرة ( control ) تستخدم لإيقاف التكرار عند نقطة معينة وعند تحقق شرط معين .

وهذا مثال للإستخدام هذه الجملة :

نلاحظ في البرنامج اعلاه كيفية إستخدام كلمة break حيث إن البرنامج في الاساس يقوم بالعد تصاعدياً من صفر الى تسعة ولكن إستخدمنا شرطاً و break  لإيقاف العد عند وصول قيمة المتغير للرقم خمسة .
2- continue
وهي كلمة محجوزة ايضا تستخدام دائما داخل حلقات التكرار حيث تقوم بالرجوع الى بداية حلقة التكرار بدون إكمال مابعدها من أوامر .
وهذا مثال برمجي لإستخدامها :



3- goto 

وهي جملة تسمى بجملة ( القفز الغير المشروط ) unconditional jump وتستخدم للتنقل من مكان الى أخر ومن سطر الى سطر أخر في البرنامج ولايفضل استخدامها كثيرا في البرنامج والمبرمج المحترف لايستخدمها نهائياً لانها لاتجعل البرنامج هيكلياً .
أما الصيغة العامة لها فهي : 
goto lable ;


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



نلاحظ في البرنامج اعلاه لدينا 6 جمل للطباعة وبعد الجملة الاولى قمنا بإستخدام أداة goto للانتقال الى المسمى aaa والذي عرفناه في أخر جملة وقد لاحظنا في نتيجة التنفيذ إن البرنامج تجاوز الاربع جمل وانتقل مباشرة الى الجملة الاخيرة .
هذه فكرة الاداة goto أي الانتقال من جزء الى اخر ومن مكان الى اخر في البرنامج حسب المسمى التعريفي الذي نضعه .

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

السبت، 7 مارس 2015

فيسبوك تقوم بإلغاء إعجابات الحسابات المحذوفة أو المعطلة


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


الدرس الحادي عشر : دورة تعلم لغة البرمجة C

أهلا وسهلا بكم متابعينا الكرام في الدرس الحادي عشر من دورة تعلم لغة C . في هذه الدرس سنكمل بقية جمل التكرار بعد أن تعلمنا في الدرس السابق مقدمة عن التكرار وكذلك جملة while . أما في هذا الدرس سنتعلم الجملة الأشهر والاكثر استعمالاً في البرمجة وهي جملة for .

for loop

الصيغة العامة لإستخدام هذه الجملة تكون كالتالي :
for ( init ; condition ; increment
{
statement(s); 
}

إن قوسين جملة for تحتوي على ثلاثة امور وهي :
init : وهذا يعني القيمة الأبتدائية ( اي العداد الذي نقوم بتعريفه وقيمته الابتدائية) .
condition : يعني الشرط أو المقارنة . 

increment : الزيادة أو النقصان ( الزيادة أو النقصان على قيمة العداد ) .

وهذا مخطط توضيحي لإستخدام جملة for : 



في الدرس السابق قمنا بعمل برنامج بسيط لطباعة جملة معينة عشر مرات على الشاشة بإستخدام جملة while  والأن نريد أن نحول نفس ذلك البرنامج الى جملة for .. فكيف سيكون ؟؟
البرنامج السابق كان بالشكل التالي :


نقوم بالبحث عن المتطلبات التي تحتاجها جملة for :
init : السطر الخامس .
condition : السطر السادس ( بين القوسين ) .

increment :  السطر التاسع .

اذن البرنامج بإستخدام جملة for سيكون بالشكل التالي :
أما نتيجة التنفيذ فهي نفسها لاتتغير وستكون هكذا :


ملاحظة : من الممكن أن تكون جملة التكرار عبارة عن معادلة أو عبارة عن جملة طباعة ومن الممكن أن تكون عدة جمل وليس واحدة فقط .

ولكي تتضح الفكرة سنقوم بعمل برنامج أخر ومثال اخر لجملة for بعمل تعديلات بسيطة على البرنامج السابق لنرى النتيجة ( والمزيد من الأمثلة والبرامج ستأتيكم في دروس أفكار وتطبيقات ) .
برنامج يقوم بطباعة الأعداد الزوجية من صفر الى عشرين ؟



البرنامج سهل جداً ومجرد تغييرات بسيطة على البرنامج الذي يسبقه .
البرنامج يتضمن تعريف متغير والذي هو  x , ثم استخدام جملة for لكي نحقق المطلوب وهو طباعة الاعداد الزوجية من 0 الى 20 , ثم تم إعطاء المتغير (( أو العداد )) قيمة ابتدائية وهي صفر لأننا نريد البدء من الصفر (( ولو أردنا الاعداد من عشرة الى عشرين مثلاً كنا سنبدأ من الرقم عشرة )) ثم في حقل الشرط تم المقارنة مع 21 لأننا نريد لغاية 20 فأكبر عدد بعد العشرين هو 21 , أما الحقل الاخير والذي هو حقل الزيادة والنقصان فقمنا بالزيادة بمقدار 2 لاننا نريد الأعداد الزوجة فقط .
الى هنا نأتي الى ختام درسنا والذي كان حول الجملة for وهي الأهم ومن أكثر الجمل استعمالاً في التكرار . نتمنى التركيز على الصيغة العامة لها والمخطط التوضيحي لإستخدام هذه الجملة لان فهمهما يعني فهم هذه الجملة بالكامل .
نلقاكم في الدرس القادم والذي سنكمل فيه جمل وأدوات التكرار وسيكون الدرس الاخير في موضوع التكرار .
واجب : برنامج لطباعة الاعداد الفردية المحصورة بين 0 و 30 ؟؟

الثلاثاء، 3 مارس 2015

الدرس العاشر : دورة تعلم لغة البرمجة C

أهلا وسهلا بكم متابعينا الكرام في الدرس العاشر من دورة تعلم لغة البرمجة C , شرحنا في الدرسين السابقين موضوع إتخاذ القرار والشروط وشرحنا كل شيء عن الجملتين ( if,switch ) وفي هذا الدرس والدروس القادمة سنبدأ موضوع جديد كلياً وهو موضوع التكرار والذي يعتبر واحد من أهم الموضيع في لغات البرمجة . التكرار كما هو واضح من إسمه يقصد به تكرار الشيء أكثر من مرة واحدة وهذا ماسنفعله في درسنا لهذا اليوم .
قبل البدء بدرس اليوم وبشرح جمل التكرار وصيغها لابد أن نأخذ مثال برمجي لكي تتضح فكرة التكرار ومالمقصود به .
لو فرضنا إننا نريد أن نقوم ببرمجة برنامج يطبع على شاشة التنفيذ جملة معينة عشر مرات ؟!!
سيكون البرنامج بالشكل التالي (
إعتماداً على ماتعلمناه في الدروس السابقة فقط )





هذا برنامج بسيط يقوم بطباعة جملة على شاشة التنفيذ عشر مرات  بإستخدام الدالة printf . هذا البرنامج صحيح لكن قبل أن نتعلم جمل التكرار أي بالاعتماد على الدروس السابقة فقط لكن بعد هذا الدرس وبعد الدروس القادمة سنعتبر هكذا برنامج خاطىء !! وقد تسأل مالسبب ؟؟
الاسباب كثيرة :
اولاً : هذا البرنامج لايوجد به فكر برمجي ( مجرد نسخ ولصق لجملة واحدة ).
ثانياً : البرنامج يحتوي على الكثير من الاسطر البرمجية والمبرمج الناجح هو الذي يقلل من الاسطر البرمجية .
ثالثا : يأخذ مساحة كبيرة ووقت تنفيذ أطول .


إن لغة البرمجة C وأغلب لغات البرمجة الاخرى قامت بتوفير أدوات وجمل خاصة للتكرار ( loop ) وأحياناً نحتاج لتكرار جملة معينة أو عملية حسابية عشرات أو مئات المرات لذلك من غير المعقول أن نكتب الكود عشرات ومئات المرات لذلك لابد من إستخدام جمل التكرار التي توفر لنا الوقت والجهد كما إن البرنامج يكون صحيحا ووفق المعايير القياسية وذو فكر برمجي عالي .



التكرار ( loop ) : هو عملية تكرار جملة معينة أو عملية حسابية معينة اكثر من مرة واحدة . وهذا مخطط توضيحي يوضح فكرة موضوع التكرار .



إن جمل وأدوات التكرار كثيرة وسنشرحها بالتفصيل ان شاء الله  , نبدأ بـ :
while loop

الصيغة العامة لاستخدام هذه الجملة تكون بالشكل التالي :
while ( الشرط أو المقارنة )
{
جملة ( جمل ) التكرار
}

وهذا مخطط توضيحي لإستخدام هذه الجملة :


ملاحظة :

1- إن اغلب جمل التكرار تحتاج الى تعريف متغير يعمل كعداد counter . ويكون دائما قبل جملة التكرار .
2- إن جملة التكرار تبقى تتكرر الى أن يكون جواب الشرط أو المقارنة خاطيء .
وهذا مثال برمجي بسيط لتوضح عملية التكرار بأستخدام الجملة while ( والمزيد من البرامج والامثلة التطبيقية تأتيكم في دروس أفكار وتطبيقات ) .
في هذا المثال سنقوم بطباعة جملة معينة عشر مرات ( أي نفس البرنامج الاول لكن بأستخدام جمل التكرار ) .


إن نتيجة تنفيذ هذا البرنامج هي نفسها النتيجة الظاهرة في الاعلى للبرنامج الاول . في بداية البرنامج قمنا بتعريف متغير x ( الذي يمثل العداد ) وأعطينا له القيمة صفر ثم استخدمنا جملة while مع عملية مقارنة هل ( صفر أقل من عشرة ) .... الجواب نعم . اذن البرنامج سيستمر وينفذ جملة الطباعة ويزيد من قيمة x بمقدار واحد ثم يعمل المقارنة مرة ثانية , هل ( واحد اقل من عشرة ... الجواب نعم ايضا . وسيقوم بطباعة الجملة مرة ثانية وهكذا الى أن يصل العداد للرقم عشرة ولايتحقق الشرط وبالتالي سيتوقف البرنامج .

انتهى درسنا لهذا اليوم . نلقاكم في الدرس القادم والذي سنشرح فيه بقية جمل التكرار .