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

أخترنا لك(1): الفاصلة(,) لفصل التعبيرات البرمجية

بدأه محمد عودة في 8 سبتمبر 2012 · 8 رد · 1,272 مشاهدة · في قسم المواضيع الهامة في قسم السي /سي++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

الفهرس الرئيس لــ سلسلة أخترنا لك فى سي++

مرحبا بكم مجدد فى مجموعة من التلميحات عن سي و سي++ فى قالب يسمي "أخترنا لك" نتعلم فيها سويا افكار وتلميحات تكون بمثابة رسائل تنشيط وتنويع فى اللغة البرمجية نتناقش فيها سويا من حيث المعرفة والمفهوم.

أخترنا لك(1): الفاصلة(,) لفصل التعبيرات البرمجية Comma-Separated Expressions

الفاصلة(,) تفصل التعبير البرمجي عن الاخر وهي معروفة لمرمجي سي و سي++ . ونحن نعرف التعبير البرمجي expression الذي يعتبر وسيط فى ابينة التحكم مثل دورات for, while غالبا. ونحن نعرف القواعد البرمجية التى نتبعها لأضافتها. تعالو نري ما هي فاصلة التعبيرات البرمحية:

خلى بالك التعبير البرمجي ممكن يتكون من اكثر من تعبير برمجي فرعي مفصول بالفاصلة , مثال:

if(++x, --y, cin.good()) /*ثلاثة تعبيرات برمجية*/

ان if الشرطية تحتوي على ثلاث تعبيرات مفصولة بالفاصلة , . فأن سي++ تقوم بتشغيل كل التعبيرات الفرعية وتتأكد ان كل تعبير يعمل كما هو مكتوب وان if الشرطية سوف تتعتمد نتيجتها على التعبير البرمجي الذي فى أقصي اليمين فقط. لذلك فأن نتيجة if الشرطية تكون true فى حالة ان ترجع cin.good() قيمة true فقط. فلنري مثال آخر:

#include <iostream>
using namespace std;

int main() {
	cout << endl;
	int j = 10;
	int i = 10;
	while (++i, --j) {
    	/*..repeat as long as j is not 0*/
    	cout << j << " " << i << endl;
	}
}

المخرجات:

9 11
8 12
7 13
6 14
5 15
4 16
3 17
2 18
1 19

مثل هذة التلميحات تجعلنا نتفهم أكثر بينة سي++ ونتعرف على الكثير من مفاهيم بناء الاكواد.

والى لقاء آخر فى "أخترنا لك" جديدة ان شاء الله

تم تعديل هذه المشاركة بواسطة محمد عودة في 17 سبتمبر 2012 في 09:17 — السبب: تنسيق وتنقيح 1

3

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#2

مثال آخر : (comma + do while)

#include <stdio.h>

int main() {
    int n;
    do {
    } while (printf("Donnez un nombre > 0 : "), scanf("%d", &n), n <= 0);
    return 0;
}

يُستخدم أيضا المعامل comma في المؤثر الشرطي (ternary operator) في حالة وجود أكثر من statement داخل كل block :

#include <stdio.h>
int main()
{
        int x = 0;
        x != 0 ? x++, printf("%d",x) : x--, printf("%d",x);
        return 0;
}

الكود السابق مُكافئ لــ :

#include <stdio.h>
int main()
{
        int x = 0;
        if(x != 0){
                x++;
                printf("%d",x);
        }else{
                x--;
                printf("%d",x);
        }
        return 0;
}
3
#3

بدلاً من أن أقول شكراً لكما جزاكما الله خيراً ... سأقول ..

مثال بسيط :

int *p,a,*(*f)(int),a[5],**s;

في العبارة السابقة شمل النوع int كل المتحولات السابقة والتي تمثل على الترتيب ..

مؤشر لقيمة صحيحة ..p

متحول صحيح a

مؤشر إلى دالة تأخذ وسيط قيمة صحيحة وتعيد مؤشر إلى قيمة صحيحة ..f

مصفوفة من خمس عناصر قيم صحيحة a

مؤشر إلى مؤشر إلى قيمة صحيحة s ,,,

وهذه العبارة تكافئ ..

int *p;
int a;
int *(*f)(int);
int a[5];
int **s;

وبالتالي فإن الفاصلة إضافة إلى مهمتها في الفصل المذكورة من قبل المشرفين أحمد ومحمد ..

فهي أداة لتعميم إسناد النوع إلى العناصر المفصولة بها ...

2
#4
int *p,a,*(*f)(int),a[5],**s;

+1 جميل فكرة أضافى تعريف الدالة مع الاعلان عن المتغيرات .

post-15367-027053900%201340345097.gifpost-15367-087183200%201340344597.gif
post-247365-0-10080400-1379403554_thumb.

#5

جميل

نفس الفكرة تستخدم فى حلقات الدوران باستخدام for

for(x=4,i=0;i<=10;++x,++i)

.

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 8 سبتمبر 2012 في 22:33

1


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#6

أظن أنكم نسيتم هذا laugh.gif :

char *Masfoofa[] = {"Ahmed","Mustapha","Mohamed","Hamza","ArabTeam2000"} ;
rS3eY.png
#7

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

#include <stdio.h>
void main()
{
	int A,B,C;
	A=5,B=A*2,C=B,A=C, printf("A = %d , B = %d , C = %d",A,B,C);
	getchar();
}

تم تعديل هذه المشاركة بواسطة محمد عودة في 8 سبتمبر 2012 في 23:28 — السبب: تنسيق كود

rS3eY.png
#8

هذه تشتغل على c++ فقط

if(i != 0) i++, printf("%d",i);

[سبحان الله و بحمده, سبحان الله العظيم]

#9
khatibe_30 كتب:

هذه تشتغل على c++ فقط

if(i != 0) i++, printf("%d",i);

blink.gif هذه لغة السي أخي ياسين ...

rS3eY.png

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

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

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

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

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