قسم لغات البرمجة php java c++ جافا Visual Basic فيجوال بيسك c# Delphi دلفي API PERL HTML و TML JavaScript ASP XML Oracle اوركال MySql sql server Access

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-04-2018, 02:53 PM المشاركة 9   
افتراضي



سابعا : مفاهيم الذاكرة Memory Concepts
أسماء المتغيرات مثل number1 و number2 و sum فعليًا تطابق مواقع في ذاكرة الكمبيوتر. كل متغير له اسم ونوع وحجم (يحدده النوع) وقيمة.
في تطبيق الجمع الشكل 14 ، فى العبارة (السطر 16) :

كود:
number1 = Convert.ToInt32( Console.ReadLine() );
تم التعيين (التخصيص) للاسم number1 بواسطة المترجم . افترض أن المستخدم يدخل 45. يضع الكمبيوتر هذه القيمة للعدد الصحيح في الموقع number1 ، كما هو موضح في الشكل 15. عندما يتم وضع قيمة في موقع ذاكرة ، تحل القيمة محل القيمة السابقة في هذا الموقع - القيمة السابقة يتم فقدها .




عندما يتم تنفيذ العبارة (السطر20 ) :

كود:
number2 = Convert.ToInt32( Console.ReadLine() );
افترض أن المستخدم يقوم بإدخال 72. يضع الكمبيوتر قيمة هذا العدد الصحيح في موقع number2 . الآن تظهر الذاكرة كما هو موضح في الشكل 16.




بعد أن يحصل تطبيق الشكل 14 على قيم number1 و number2 ، فإنه يجمع القيم ويضع قيمة المجموع في المتغير sum . العبارة التالية (السطر 22)

كود:
sum = number1 + number2; // add numbers
يتم تنفيذ الجمع ، ثم تستبدل قيمة sum السابقة . بعد حساب المجموع sum ، تظهر الذاكرة كما هو موضح في الشكل 17. تظهر قيم number1 و number2 تمامًا كما كانت قبل استخدامها في حساب المجموع sum . تم استخدام هذه القيم ، ولكن لم يتم إتلافها ، حيث قام الكمبيوتر بإجراء الحساب - عند قراءة قيمة من موقع ذاكرة ، تكون العملية غير تدميرية.






اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-04-2018, 03:22 PM المشاركة 10   
افتراضي


ثامنا : الحساب Arithmetic
معظم التطبيقات تقوم بعمليات حسابية. الشكل 18 يوضح ملخص للعوامل الحسابية . لاحظ الرموز الخاصة المختلفة التي لا تستخدم في الجبر. تشير علامة النجمة (*) إلى الضرب ، وعلامة النسبة المئوية (%) هي عامل باقي خارج القسمة (يطلق عليه modulus في بعض اللغات) ، والذي سنناقشه قريبًا. العوامل الحسابية في الشكل 18 هى عوامل ثنائية - على سبيل المثال ، يحتوي التعبير f + 7 على العامل الثنائي + والمعاملان f و 7.
إذا كان كلا من معاملى عامل القسمة (/) هي أعداد صحيحة ، يتم تنفيذ قسمة الأعداد الصحيحة وتكون النتيجة عددًا صحيحًا - على سبيل المثال ، يتم تقييم التعبير 7/4 إلى 1 ، ويتم تقييم التعبير 17/5 إلى 3. أي جزء كسور فى قسمة الأعداد الصحيحة ببساطة يتم اقتطاعه (أي إهماله) - لا يتم التقريب.
يوفر C# عامل باقى خارج القسمة % ، والذي ينتج الباقي بعد القسمة. التعبير x % y ينتج الباقي بعد قسمة x على y. وبالتالي ، فإن 7 % 4 تنتج 3 ، و 17 % 5 تنتج 2. هذا العامل هو الأكثر استخدامًا مع معاملات الأعداد الصحيحة ولكن يمكن استخدامه أيضًا مع floats, doubles, decimals .




• التعبيرات الحسابية في شكل خط مستقيم Arithmetic Expressions in Straight-Line Form
يجب كتابة التعبيرات الحسابية في شكل خط مستقيم لتسهيل إدخال التطبيقات في الكمبيوتر. وبالتالي ، يجب كتابة تعبيرات مثل “a divided by b” فى الشكل a / b ، بحيث تظهر جميع الثوابت والمتغيرات والعوامل في خط مستقيم. الشكل الجبرى التالي غير مقبول للمترجم :



• أقواس تجميع التعبيرات الفرعية
يتم استخدام الأقواس لتجميع عناصر تعبيرات C# بنفس الطريقة كما في التعبيرات الجبرية. على سبيل المثال ، لضرب a فى الكمية a + b ، نكتب

كود:
a * ( b + c )
إذا كان التعبير يحتوي على أقواس متداخلة ، مثل

كود:
 ( ( a + b ) * c )
يتم تقييم التعبير في مجموعة الأقواس الأعمق (a + b في هذه الحالة) أولاً.


• قواعد أسبقية العامل Rules of Operator Precedence
يطبق C# العوامل في التعبيرات الحسابية في تسلسل دقيق تحدده القواعد التالية لأسبقية العامل ، والتي هي بشكل عام نفس تلك المتبعة في الجبر (الشكل 19). تمكن هذه القواعد C# من تطبيق العوامل بالترتيب الصحيح .






اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-04-2018, 10:21 PM المشاركة 11   
افتراضي


تاسعا : صنع (إتخاذ) القرار Decision Making: عوامل المساواة Equality والعلاقات (الصلات) Relational
"الشرط" condition هو "تعبير" يمكن أن يكون صحيحًا true أو خطأ false . يقدم هذا القسم إصدارًا بسيطًا من عبارة if فى السى شارب والتى تسمح للتطبيق باتخاذ قرار بناءً على قيمة الشرط . على سبيل المثال ، يحدد الشرط "الدرجة أكبر من أو تساوي 60" ما إذا كان الطالب قد اجتاز الاختبارًا أم لا. إذا كان الشرط الموجود في عبارة if صحيحًا ، فسيتم تنفيذ جسم عبارة if. إذا كان الشرط خاطئًا ، فلن يتم تنفيذ الجسم . سنرى مثالا قريبا.
الشروط في عبارات if يمكن تشكيلها باستخدام عوامل المساواة ( == , != ) وعوامل العلاقات ( > , < , >= , <= ) الموضحة في الشكل21. لدى كل من عاملى التساوى ( == , != ) نفس المستوى من الأسبقية ، ولكل من عوامل العلاقات
( > , < , >= , <= ) نفس مستوى الأسبقية ، ولعاملى المساواة أسبقية أقل من عوامل العلاقات . انها جميعا ترتبط من اليسار إلى اليمين .



أخطاء برمجية شائعة 5 :
يمكن أن يؤدي الخلط بين عامل المساواة ، == ، وعامل التخصيص ، = ، إلى حدوث خطأ منطقي أو خطأ في بناء الجملة. يجب قراءة عامل المساواة على أنه “is equal to,” ، ويجب قراءة عامل التخصيص على أنه “gets” أو "يحصل" أو “gets the value of.” . لتجنب الخلط ، يقرأ بعض المبرمجين عامل المساواة على أنه “double equals” أو“equals equals.” .

• إستخدام عبارة if
يستخدم الشكل 22 ستة عبارات if لمقارنة عددين صحيحين تم إدخالهما بواسطة المستخدم . إذا كان الشرط الموجود في أي من عبارات if هذه صحيحًا ، فسوف يتم تنفيذ عبارة التخصيص المصاحبة لهذه العبارة . يستخدم التطبيق الفئة Console للمطالبة وقراءة سطرين من النص من المستخدم ، يتم إستخراج الأعداد الصحيحة من هذا النص بالطريقة ToInt32 للفئة Convert ، وتخزينها في المتغيرات number1 و number2 . ثم يقارن التطبيق الأعداد ويعرض نتائج المقارنات التى تكون صحيحة true .

كود:
1 	// Fig.22: Comparison.cs
2 	// Comparing integers using if statements, equality operators
3 	// and relational operators.
4 	using System;
5
6	public class Comparison
7 	{
8 		// Main method begins execution of C# app
9 		public static void Main( string[] args )
10 		{
11 			int number1; // declare first number to compare
12 			int number2; // declare second number to compare
13
14 			// prompt user and read first number
15 			Console.Write( "Enter first integer: " );
16 			number1 = Convert.ToInt32( Console.ReadLine() );
17
18 			// prompt user and read second number
19 			Console.Write( "Enter second integer: " );
20 			number2 = Convert.ToInt32( Console.ReadLine() );
21
22			if ( number1 == number2 )
23				Console.WriteLine( "{0} == {1}", number1, number2 );
24
25			if ( number1 != number2 )
26				Console.WriteLine( "{0} != {1}", number1, number2 );
27
28			if ( number1 < number2 )
29				Console.WriteLine( "{0} < {1}", number1, number2 );
30
31			if ( number1 > number2 )
32				Console.WriteLine( "{0} > {1}", number1, number2 );
33
34			if ( number1 <= number2 )
35				Console.WriteLine( "{0} <= {1}", number1, number2 );
36				
37			if ( number1 >= number2 )
38				Console.WriteLine( "{0} >= {1}", number1, number2 );
39 	} // end Main
40 		} // end class Comparison

Output

Enter first integer: 42
Enter second integer: 42
42 == 42
42 <= 42
42 >= 42
***************************
Enter first integer: 1000
Enter second integer: 2000
1000 != 2000
1000 < 2000
1000 <= 2000
*****************************

Enter first integer: 2000
Enter second integer: 1000
2000 != 1000
2000 > 1000
2000 >= 1000
Fig. 22 | Comparing integers using if statements, equality operators and relational operators.
• إعلان الفئة "مقارنة" Class Comparison
إعلان الفئة Comparison يبدأ عند السطر 6 :

كود:
 public class Comparison
• الدالة الرئيسية Main الخاصة بهذه الفئة (السطور 9-39 ( ، هى بداية تنفيذ التطبيق .
• إعلانات المتغيرات Variable Declarations
السطور 11-12 :

كود:
int number1; // declare first number to compare
int number2; // declare second number to compare
تعلن عن متغيرات نوع int تستخدم لتخزين القيم المدخلة بواسطة المستخدم .
• قراءة المدخلات من المستخدم :
# السطور 14-16 :

كود:
// prompt user and read first number
Console.Write( "Enter first integer: " );
number1 = Convert.ToInt32( Console.ReadLine() );
تطلب من المستخدم إدخال العدد الصحيح الأول (السطر15 ) ، وقراءة القيمة المدخلة (السطر 16 ) . يتم تخزين القيمة المدخلة فى المتغير number1 .
# السطور 18-20 :


كود:
// prompt user and read second number
Console.Write( "Enter second integer: " );
number2 = Convert.ToInt32( Console.ReadLine() );
تقوم بتنفيذ نفس المهمة ، لكن يتم تخزين القيمة المدخلة فى المتغير number2 .
• مقارنة الأعداد Comparing Numbers
السطور 22-23 :

كود:
if ( number1 == number2 )
Console.WriteLine( "{0} == {1}", number1, number2 );
تقارن قيم المتغيرات number1 و number2 لتحديد ما إذا كانت متساوية. تبدأ عبارة if دائمًا بالكلمة الرئيسية (المحجوزة) if ، متبوعة بشرط بين قوسين . تتوقع عبارة if عبارة واحدة في جسمها. المسافة البادئة لبيان الجسم الموضح هنا ليست مطلوبة ، ولكنها تحسّن من قراءة الكود بالتشديد على أن العبارة في السطر 23 هي جزء من عبارة if التي تبدأ في السطر 22 . لا ينفّذ السطر 23 إلا إذا كانت الأعداد المخزنة في المتغيرات number1 و number2 متساوية (على سبيل المثال ، يكون الشرط صحيح true ). عبارات if فى السطور 25–26, 28–29, 31–32, 34–35 , 37–38 تقارن الأعداد number1 و number2 بالعوامل !=, <, >, <= , >= على التوالي . إذا كان الشرط الموجود في أي من عبارات if صحيح true ، فسيتم تنفيذ عبارة الجسم المقابل.

خطأ برمجى شائع 6
إن حذف الأقواس اليسرى و/أو اليمنى للشرط في عبارة if عبارة عن خطأ في بناء الجملة — فالأقواس مطلوبة.

خطأ برمجى شائع 7
عكس العوامل!=, >= <= , كما في =!, => , =<, ، يمكن أن يؤدي إلى أخطاء في بناء الجملة أو المنطق.

خطأ برمجى شائع 8
يكون خطأ في بناء الجملة إذا كانت العوامل ==, !=, >= , <= تحتوي على مسافات بين رموزها ، كما في
= =, ! =, > = , < = على التوالي .

ممارسات البرمجة الجيدة 11
ضع مسافة بادئة لجسم عبارة if لتميزها ولتحسين قابلية قراءة التطبيق .

• لا توجد فاصلة منقوطة ( في نهاية السطر الأول من عبارة if
لا توجد فاصلة منقوطة ( في نهاية السطر الأول من كل عبارة if . مثل هذه الفاصلة المنقوطة قد ينتج عنها خطأ منطقي في وقت التنفيذ . فمثلا

كود:
if ( number1 == number2 ); // logic error
Console.WriteLine( "{0} == {1}", number1, number2 );
في الواقع يمكن تفسيرها من قبل C# كما يلى :


كود:
if ( number1 == number2 )
; // empty statement
Console.WriteLine( "{0} == {1}", number1, number2 );
حيث تكون الفاصلة المنقوطة في سطر مستقلة بذاتها - تسمى العبارة الفارغة - هي العبارة التي سيتم تنفيذها إذا كان الشرط في عبارة if صحيحًا. عند تنفيذ العبارة الفارغة ، لا يتم تنفيذ أي مهمة في التطبيق . ثم يستمر التطبيق بعبارة الإخراج ، والذي يتم تنفيذها دائمًا ، بغض النظر عما إذا كان الشرط صحيحًا أم خطأ ، لأن بيان الإخراج ليس جزءًا من عبارة if.

خطأ برمجى شائع 9
وضع الفاصلة المنقوطة فورًا بعد القوس الأيمن للشرط في عبارة if يكون عادة خطأ منطقي.

• المسافة الفارغة (البيضاء) Whitespace
لاحظ استخدام المسافات البيضاء في الشكل 22. تذكر أن أحرف المسافات البيضاء ، مثل علامات التبويب والسطور الجديدة والمسافات ، يتم تجاهلها من قبل المترجم . لذا قد يتم تقسيم العبارات على عدة أسطر ويمكن أن تكون متباعدة وفقًا لتفضيلاتك دون التأثير على معنى أي تطبيق . من غير الصحيح أن يتم تقسيم المعرّفات وسلاسل الأحرف والعوامل ذات الأحرف المتعددة (مثل >= ). من الناحية المثالية ، ينبغي أن تظل البيانات صغيرة ، ولكن هذا ليس ممكنا دائما.

ممارسة جيدة للبرمجة 12
لا تضع أكثر من بيان واحد في كل سطر في التطبيق . هذا التنسيق يعزز قابلية القراءة.

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

• أسبقية ومشاركة Precedence and Associativity العوامل التى ناقشناها حتى الآن
يوضح الشكل 23 أسبقية العوامل المقدمة في هذا الدرس . يتم إظهار العوامل من الأعلى إلى الأسفل بتناقص ترتيب الأسبقية. كل هذه العوامل ، باستثناء عامل التخصيص ، = ، يربط من اليسار إلى اليمين . الجمع يتم ربطه من اليسار ، لذلك يتم تقييم تعبير مثل x + y + z كما لو كان مكتوبًا (x + y) + z .
عامل التخصيص ، = ، يربط من اليمين إلى اليسار ، لذلك يتم تقييم تعبير مثل x = y = 0 كما لو كان قد تم كتابته
x = (y = 0), ، وهى تقوم أولاً بتعيين قيمة 0 إلى المتغير y ثم تعيين نتيجة ذلك التعيين إلى المتغير x.

ممارسات البرمجة الجيدة 14
عند كتابة التعبيرات التي تحتوي على العديد من العوامل. تأكد من تنفيذ العمليات في التعبير بالترتيب الذي تتوقعه. إذا كنت غير متأكد من ترتيب التقييم في تعبير معقد ، فاستخدم الأقواس لإجبار الترتيب ، كما تفعل في التعبيرات الجبرية.
لاحظ أن بعض العوامل ، مثل التعيين ، = ، ترتبط من اليمين إلى اليسار بدلاً من اليسار إلى اليمين .










الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 11:57 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)