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

شرح لكود بسيط (مع بعض الاسئلة الاخرى)

بدأه Omar Eladel في 21 فبراير 2008 · 10 رد · 1,301 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اولا: اود ان اشكر الاخ خالد مشرف هذا القسم الرائع على نصائحه لى فى تعلم ++C.

============

ثانيا: لقد بدأت تعلم ++C منذ عدة ايام تبعا

لنصيحة الاخ خالد و بدأت من كتاب C++ How to program 5/e. و هو كتاب رائع فى

التعلم.

من هذا الكتاب كتبت كود لادخال رقمين و جمعهم و عرض الناتج <برنامج

بسيط جدا> و هذا هو الكود .



using std::cout;
using std::cin;
using std::endl;

int main()
{
int x,y,sum;
cout <<"Please enter the value of x: \n";
cin >> x;
cout <<"Please enter the value of y: \n";
cin >> y;
sum = x + y;
cout <<"The sum = " << sum ;

return 0;
}
#include<iostream>

و ممكن تغيير بسيط فى الكود و هو اضافة endl; بعد عرض النتيجة و لن يكون هناك فارق فى نتيجة البرنامج



using std::cout;
using std::cin;
using std::endl;

int main()
{
int x,y,sum;
cout <<"Please enter the value of x: \n";
cin >> x;
cout <<"Please enter the value of y: \n";
cin >> y;
sum = x + y;
cout <<"The sum = " << sum << endl;

return 0;
}
#include<iostream>

فما وظيفة هذا الكود ؟

===============================

ثالثا :

عندما استخدم Microsoft Visual C++ Compiler لعمل Compile لا يتم

عمل Compile للملفات حيث يكون مكتوب Linking فى النافذة التى توضح الحالة اسفل

نافذة كتابة الكود.

فما هو سبب هذه المشكلة ؟ و ما حلها ؟

===============================

رابعا :

ما هو احسن Compiler لـ ++C مع العلم انى استخدم ++Notepad لكتابة

الكود و ++Dev-C لعمل Compile للملفات.

===============================

شكرا جزيلا على اهتمامكم بأسئلتى المبتدئة

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

< <

#2
اقتباس
فما وظيفة هذا الكود ؟

ماذا تقصد؟ فأنت شرحت وظيفته..

اقتباس
عندما استخدم Microsoft Visual C++ Compiler لعمل Compile لا يتم

عمل Compile للملفات حيث يكون مكتوب Linking فى النافذة التى توضح الحالة اسفل

نافذة كتابة الكود.

فما هو سبب هذه المشكلة ؟ و ما حلها ؟

هذه ليست مشكلة و لكن بالعكس معناها أن ال compilation تم بنجاح و إنتقل إلى المرحلة اللى بعدها و هى ال linking, فترجمة أى برنامج سى/سى++ تمر بثلاث برامج أساسية ال preprocessor ثم ال compiler ثم ال linker.

اقتباس
ما هو احسن Compiler لـ ++C مع العلم انى استخدم ++Notepad لكتابة

الكود و ++Dev-C لعمل Compile للملفات.

لماذا لا تستخدم ال Visual Studio.NET ؟ علشان يبقى سهل تعمل debugging حتى, بالإضافة إلى أن المحرر بتاعه متقدم جدا و فيه خواص مفيدة زى الإكمال الألىautocompletion و سرد محتويات ال classes اللى بعتبرها خاصية مفيدة جداااا.

تم تعديل هذه المشاركة بواسطة Blueteeth في 21 فبراير 2008 في 22:42

#3

انا كنت اقصد عندما اضفت

endl;

بعد sum لعرض النتيجة البرنامج لم يتغير و ظل كما هو .....

اما بخصوص Visual C++ فهو يستمر على linking الى الابد. ما هو الحل ؟؟

شكرا جزيلا على اهتمامك اخ Blueteeth

#4
اقتباس
اما بخصوص Visual C++ فهو يستمر على linking الى الابد. ما هو الحل ؟؟

كيف يحدث هذا؟؟؟؟

قد يكون الكومايلر او الرابط معلق

قد يطلب الكومبايلر الرابط فلايجده او الرابط معطوب

اعد اعداد الفيجوال لحل المشكلة

( _ /)

(='.'=)

(")-(")

#5

اهلا اخ عمر ..

بالنسبه لسؤالك ..

cout <<"The sum = " << sum;

هذا الكود سيطبع ناتج جمع العددين الذين انت تدخلهما .. ولكن هذا السطر من دون endl ..

cout <<"The sum = " << sum << endl;

في هذا الكود انت وضعت .. endl .. وانت تسال هنا ماهو الفرق بين السطرين مع العلم انه نفس الناتج ضهر ؟؟

الاجابة على سؤالك هو انه السطرين هي نفس السطرين ولاحظ ذلك جيدا .. ما عدا اضافة endl الى نهاية السطر الثاني ..وضيفة هذه الكلمة هي انهاء سطر الطباعه على الشاشه ونزولها لسطر جديد .. لذلك فهي مختصره من الكلمتين end line اي نهاية سطر ..

لكي تتاكد من كلامي .. جرب اضافة السطر التالي الى برنامجك ..

cout <<"The sum = " << sum;
cout << " hi how are you ???? ";

بعد ان تجرب هذا الكود .. جرب الكود التالي ..

cout <<"The sum = " << sum << endl;
cout <<"  hi how are you";

الفرق بين الكودين هو ان الاول سيطبع لك الناتج وبعده جملة hi how are you مباشرة بعد الناتج حيث اننا لم نستخدم كلمة endl.. بينما الكود الثاني سيطبع لك ناتج الجمع وبعده ينزل لسطر جديد ثم يطبع لك الجملة السابقة .. وذلك نتيجة لاستخدامنا endl ..

لذلك يمكننا القول بان n\ قريبه في عملها من endl ..

ارجو ان تكون الفكرة قد وصلت واذا كان هناك اي غموض اسال وانا في الخدمة ..

تحياتي العطرة ..

اما بالنسبه للكومبايلر الافضل .. فانا استخدم TC 4.5 .. واستخدامي به للاساسيات فقط .. اما اذا كان البرنامج الذي اريد عمله متطورا بعض الشئ فاعمله بال Dev-cpp .. فانا انصحك به ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#6

شكرا جزيلا اخ garo

شكرا جزيلا اخ سنان

سؤال صغير : هل

n\

=

endl

ولا يوجد اى اختلافات بينهم ؟؟ و لو فى اختلافات فما هى ؟؟

انا فهمت انى ماستخدمش اى كومبايلر خاص بـ ميكروسوفت. لماذا ؟؟؟

شكرا جزيلا

تم تعديل هذه المشاركة بواسطة Omar Eladel في 21 فبراير 2008 في 23:17

#7
اقتباس
سؤال صغير : هل

n\= endl

ولا يوجد اى اختلافات بينهم ؟؟ و لو فى اختلافات فما هى ؟؟

نعم .. من الممكن ان تقول هكذا بأنه شكليا في برامجك من الممكن ان يكون لها نفس العمل ..

#include <iostream>
int main()
{
  int i = 12;
  std::cout << i << '\n'; // A
  std::cout << i << std::endl; // B
  return 0;
}

ولكن هناك اختلافات بينها ضمنيا .. وتدخل هذه الاختلافات الى امور قرات عنها مرة وكانت تدخل ضمن دوال الcout ..

ولذلك لا اريد الغوص بها الان لانني اقرات جملتك ..

اقتباس
لقد بدأت تعلم ++C منذ عدة ايام تبعا

فأكيد ان مثل هذه الامور من الممكن ان تلخبطك .. وانت ما زلت مبتدأ لذلك افهم انه حاليا الفرق بينها بسيط .. واترك الباقي ..

=============

اقتباس
نا فهمت انى ماستخدمش اى كومبايلر خاص بـ ميكروسوفت. لماذا ؟؟؟

بالنسبه للكومبايلر .. صراحة لم افهم ولم اعرف من اين لك هذه المعلومه وما هو سبب عدم استخدامك لها ..

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

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

تحياتي العطرة ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#8

شكرا جزيلا على اهتمامك اخ سنان

انا فهمت موضوع ميكروسوفت كومبايلر غلط.. انا اسف جدا

انا هاحمله و استخدمه ان شاء الله

بارك الله فيك

#9
اقتباس
سؤال صغير : هل

n\= endl

ولا يوجد اى اختلافات بينهم ؟؟ و لو فى اختلافات فما هى ؟؟

n\ لاتساوي endl ويوجد اختلافات بينهم .

الفرق بين n\ وبين endl

n\ :

1- الوظيفة : ينقل مؤشر الكتابة إلى سطر جديد .

2- قيمة Ascii لها هو 10

3- التخزين : تخزن في Data Segment

4- الاستخدام: يكون بين علامات التنصيص مثلا :

cout <<"GOOD \n LUCK!\n";

endl:

1- الوظيفة : ينقل الكتابة إلى سطر جديد مع عمل Flush لتدفق قناة الخرج .

2- قيمة Ascii لها هو 13

3- التخزين : تخزن في Codo Segment

4-الاستخدام: خارج علامات التنصيص مثلا :

cout <<"GOOD" <<endl<<"LUCK!"<<endl;

والله اعلم

تم تعديل هذه المشاركة بواسطة time1 في 22 فبراير 2008 في 08:47

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#10
اقتباس
الوظيفة : ينقل الكتابة إلى سطر جديد مع عمل Flush لتدفق قناة الخرج .

هذا ما قصدته سابقا بــ

اقتباس
ولكن هناك اختلافات بينها ضمنيا .. وتدخل هذه الاختلافات الى امور قرات عنها مرة وكانت تدخل ضمن دوال الcout ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#11

بارك الله فيكم , اخ سنان , اخ time1 على اهتمامكم بالامر

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