الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤالين : تعريف المتغيرات - التكرار For

مغلق
بدأه عبدالرحمن في 13 نوفمبر 2001 · 11 رد · 763 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السؤال الاول : ما معنى وضع 8 قبل او بعد المتغير مثل:

*hellow

وما معنى وضع ! بعد المتغير مثل :

! m_dx

يعني ما هي الفائدة من وضع هذه الرموز

السؤال الثاني :

ارجو منكم شرح التكرار for وصيغته بشكل مبسط مع مثال

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

#2

اخي العزيز عبد الرحمن ؛؛؛؛؛؛؛؛؛ تحية طيبة اما بعد

سوف اقوم معذورا بالرد على القسم الثاني من سؤالك

مثال بسيط ارجو منه ان يوضح لك الصورة العامة من الحلقة

#include 

void main(void)
{
	//تعريف متغير
	unsigned char CH;
	//بداية الحلقة
	for(CH=0; CH<11; CH++)
	{
			printf("CH= %dn", CH);
	}

}

اليك بعض الشرح :-

بعد عبارة for تقوم بفتح قوس ثم من بعد ذلك تحدد بداية الحلقة والذي هو CH=0 في المثال السابق ثم فاصلة منقوطة ثم بعد ذلك بهاية الحلقة CH=11 فم فاصلة منقوطة ثم تقوم بعمل زيادة على قيمة الحلقة ++CH وبعدها تقوم بإغلاق القوس الخاص بتحديد بداية ونهاية الحلقة وتنتقل الي بداية سطر جديد وتعمل على فتح قوسين من النوع (}) ثم بعدها تكتب الكود المراد عمل الحلقة عليه ............................. الخ

ارجو من الله ان اكون قد استطعت من توضيح الفكرة لك اخي الكريم

وارجو المعذرة على سوء اسلوبي بالشرح

اما بالنسبة لوضع الاشارات للمتغيرات فهذا يعني بلغة فيجوال بيسك كالتالي :-

%Dim I As Integer = Dim I

وايضا

$Dim S As String = Dim S

وهكذا

تقبل تحياتي

اخوك (((((( الدولار ))))))

:cool: ^^Al_Dollar^^ :cool:

#3

السلام عليكم

اخ عبد الرحمن

وضع علامة* قبل المتغير مثل a* هذا اما انه يدل على ان a مؤشر pointer

او ان a مصفوفه غير معروفه الحجم يعني يتغير حجمها حسب الحاجه المستخدم للبرنامج

اما السؤال الثاني اعتقد ان اجابة الاخ دولار كافيه

اما عن الرمز ! فهو يعني (لا) not

مثال int k!=0

هذا يعني ان قيمة k لا تساوي الصفر

ارجو من الاخوة الكرام تصحصح كلامي اذا كنت غلطانه:)

ورود

#4

السلام عليكم

كما ذكرت الأخت ورود * فعلا تدل على المؤشر pointer وهي تنسب الى Dereference Operators . لمزيد من المعلومات فانتظر الرد من الأخوة بارك الله فيهم - العفو فأنا مشغول :) - . ( المؤشر pointer موضوع حلو كتيــــــــــــــــر .)

بالنسبة لـ ! فكما قالت الأخت ورود معناها لا not(نفي في المنطق الرياضي- الجبر البولي -) , وهي تعتبر Logical Operator أداة منطقية , و القيمة الناتجة عنها إما true أو false .

لكن لي تعقيب :

المثال int k!=0 لا يمكن عمل ذلك .

الاداة المذكورة في المثال هي الاداة =! و ليس ! :) , مع العلم أنه لا يمكن القيام بذلك فالاداة =! هي Equality operators (أداة مساواه ) و ليست Assignment Operator مثل (=, =*,=/, =%,= + ,=-,=>>,=<<,=&,.....)و تستعمل بين قيمتين حسابيتن أو قيمتي مؤشرين .

المعذرة إن كان الكلام غير واضح فقد كتبت الرد على عجالة .

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#5

أشكر جميع الأخوة على ردودهم ..

بالنسبة للمؤشر :

فعند تعريف int * a هذا يعني أن المتحول a سوف يحمل قيمة مؤشر في الذاكرة إلى رقم من نوع int . وفي أجهزة ذات العنونة 32 بت كما هو الحال في الأجهزة الحالية وتحت الوندوز فإن a سوف يحجز لها 4 بايتات.

المعامل (operator) & يستخدم من أجل ارجاع عنوان متحول ما فعلى سبيل المثال إذا أردت أن يكون a يؤشر إلى b فإليك بالمثال التالي :

int b = 4;
int *a = &b;

الآن القيمة a تحمل عنوان المتحول b .

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

في الحالة الثانية سوف تستخدم * قبل المتحول كالتالي :

cout << *a;

وهي تعني طباعة القيمة التي يؤشر إليها a وهي 4 في مثالنا .

وكما ذكروا الأخوة أن المؤشر يمكن استخدامه في المصفوفات فهذا صحيح حيث مثلا ++a تعني اجعل المؤشر يؤشر إلى الخانة التالية وبالتالي إلى العنصر التالي الذي بعد b .. ولكن في هذه الحالة يجب أن تكون a مؤشر ليس إلى b بل إلى بداية مصفوفة تم حجزها مسبقا . والعبارة [3]a يتم تحويلها إلى (a+3)* أي أضف إلى a ثلاث حجرات وأرجعلي ماذا تحتوي عليه هذه الحجرة .

----------------

بالنسبة إلى ! فهي من أجل عملية Bitwise Not أي عاكس بتات :

short a = 0x3311;

فإنه في هذه الحالة : a == 0xCCEE!

أما =! فهي معامل للمقارنة .. أي لا يساوي .

if (a != 234) {
}

------------------

أما for فهي تحتوي على أربعة أقسام .

for(قسم التهيئة ; 
قسم المقارنة ;
قسم الزيادة )
{
   جسم الحلقة
}

قسم التهيئة يمكن من خلاله تهيئة بداية الحلقة أي مثلا وضع i يساوي 0 .

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

قسم الزيادة وهو الذي تضع فيه تعبير الاضافة أي مثلا زيادة i بواحد أو اثنين .

- بالنسبة إلى كيفية تنفيذ هذه الأقسام :

1) أولا يتم تنفيذ قسم التهيئة لمرة واحدة فقط

2) يتم تنفيذ قسم المقارنة والتأكد من الشرط وإذا كان true يتم الدخول في جسم الحلقة. وإلا ينتقل التنفيذ إلى مابعد الحلقة .

3) يتم تنفيذ قسم الزيادة.

4) العودة إلى الفقرة 2 ....

طبعا لمرونة السي يمكنك أن تتجاهل أي من هذه الأقسام أوحتى تجاهلها كلها :

- تجاهل قسم التهيئة :

int i = 4;
for( ; i < 10; i++) {}

تجاهل قسم المقارنة ، وهنا فإن الحلقة تعمل بشكل لانهائي حتى يتم توقيفها بتعليمة break :

for (int i = 4; ; i++) {
    if (i == 10) break;
}

تجاهل قسم الزيادة وهذا في حالة يتم اضافة i مثلا داخل جسم الحلقة :

for(int i = 0; i < 10; ) {
     str[i++] = ch;
}

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

------------------

أرجو أن أكون وفيت في الشرح .

Coding on the Cloud and for the Cloud!

My Blog

#6

السلام عليكم

مادمنا نتكلم عن الرموز المستخدمه في لغة السي انا عندي سؤال

كلنا يعرف ان( d%) تمثل قيمه من نوع int

و( c%) يمثل char وان( s%) تمثل string

والي ما اعرفه ( i % ) ثمثل ماذا ؟

ورود

#7

الاخت ورود

بالنسبه لل (i%) فهي تستخدم لادخال الارقام ذات النظام العشري او الارقام ذات النظام الثماني مسبوقة(0) او الارقام ذات النظام الستة عشرية مسبوقة ب (0x)

#8

اشكر الاخ الدولار والاخت ورود والاخ تماااا والاخ هاني جزيييييل الشكر

صراحة هذي دروس بالحالها . بس بصراحة لسه ماقريتها لاني والله مافضيت

ان شاء الله اليوم اقراها وراح اعلق عليها

جزاكم الله خير

#9

أشكرك أخي موسى فعلا هذه المعلومة جديدة علي .. أزادك الله من علمه ..

Coding on the Cloud and for the Cloud!

My Blog

#10

مشكور اخ موسى وتسلم على الرد:)

ورود

#11

شكرا لك أخي موسى هذه معلومه أول مرة اعرفها و شكراااا لك و للاخت ورود على السؤال الله يعطيكم العافيه :D

#12

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

على هذه المعلومات القيمة

تبغوا الصراحة انتو رهيـــــــــــــــــــــــــــــــــــــــــــبين

وكثر الله من امثالكم

كلامي للجميع

يا احلى ناس باحلى منتدى على النت

(f) (f) (f) (f) (f) (f) (f)

لكم مني كل التقدير والاحترام

اخوكم (((((( الدولار )))))

^^Al_Dollar^^

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…