Programming -2 برمجة -2 المحاضرة-1 Lecture-1
Functions الدوال
المحتويات الوحدات Modules الدوال المبنية والجاهزة Built-in Functions الدوال الرياضية (Math Library Functions) sqrt, pow دوال الإدخال والإخراج (Input/Output Functions) setw دوال عامة الاستخدام (General Funtions) rand
الوحدات Modules هي مجموعة من الأكواد تؤدي وظيفة معينة. إما أن تكون control أو general control: يُطلق عليها main كل برنامج يحتوي على control واحد فقط :general تقوم بتطبيق العمليات على البيانات مثل الحساب والطباعة وغيرها
C++ Modules جميع الوحدات في لغة C++ يطلق عليها دوال(functions). يُطلق عليها methods أو procedures في لغات أخرى. الدوال(functions) ممكن أن تكون: من تعريف المبرمج Programmer-defined مبنية وجاهزةBuilt-in فوائدها: تجعل البرنامج سهل الكتابة، التدقيق، التشغيل, والصيانة.
الدوال المبنية والجاهزة Built-in Functions توفّر مكتبة لغة C++ العديد من الدوال الجاهزة لإجراء العمليات الرياضية, عمليات على النصوص, الإدخال والإخراج, والعديد من العمليات الأخرى. من الأمثة على الدوال المبنية والجاهزة: الدوال الرياضية Math Library Functions)) دالة الجذر التربيعي sqrt دالة الأس pow دوال الإدخال والإخراج Input/Output Functions)) دالة تنظيم المخرجات setw دوال عامة الاستخدام General Functions)) دالة توليد الأرقام عشوائيا rand
Math Library Functions لاستخدام هذه الدوال, لا بد من استدعاء المكتبة <cmath> تُنادى الدالة بكتابة: في حالة كان هناك واحد argument functionName(argument); في حالة كان هناك أكثر من agument functionName(argument1, argument2, …); مثال: cout << sqrt( 900.0 ); الناتج سيكون 30 وهو الجذر التربيعي لـ900 جميع الدوال الحسابية تُعيد قيم من نوع double
Math Library Function: sqrt ممكن تكون:arguments * Constantعدد ثابت sqrt( 4.0 ); Variable متغير sqrt( x ); Expressionتعبير sqrt( sqrt( x ) ) ; sqrt( 3.0 – 6.0 * x );
Example Output: 9 3 81
Math Library Function: pow ممكن تكون:arguments * Constantعدد ثابت pow(4.0, 2.0); (رفع العدد 4 إلى الأُس 2) Variable متغير pow(5.0, x); (xرفع العدد 5 إلى الأُس ) Expressionتعبير pow( pow(2.0, 3.0), x); (x إلى الأُس pow(2.0, 3.0(رفع ناتج عملية (
Example Output: 16 8 81
Input/Output Functions هناك العديد من دوال الإدخال والإخراج المبنية والجاهزة. من هذه الدوال, دالة setw وظيفة هذه الدالة هي تنظيم شاشة المخرجات (بمعنى أنها تستخدم مع أوامر cout فقط).
Input/Output Function: setw لاستخدام هذه الدالة, لا بد من استدعاء المكتبة <iomanip> تُنادى الدالة بكتابة: setw(int number); حيث أن: int number هو أي عدد صحيح مثلsetw(5); تقوم هذه الدالة بحجز خانات للنص أو القيمة المطلوب إخراجها على حسب ما يُكتب بين قوسي الدالة ( )setw مثل: cout<< setw(6) << “hi”; i h
مثال: برنامج لطباعة الأعداد من 1 إلى 4 ومربّعها ومكعّبها مع استخدام دالة setw
مثال: برنامج لطباعة الأعداد من 1 إلى 4 ومربّعها ومكعّبها من غير استخدام دالة setw
General Functions من هذه الدوال, دالة rand وظيفة هذه الدالة هي توليد الأرقام عشوائياَ
General Function: rand لاستخدام هذه الدالة, لا بد من استدعاء المكتبة <cstdlib> مثال: i = rand(); سوف تكون قيمة المتغير iعدد صحيح بين 0 إلى RAND_MAX (عادة 32767 ) لتغيير مجال الأرقام العشوائية, لا بد من استخدام علامة باقي القسمة (%) modulus
General Function: rand التوسّع والتحوّل إشارة باقي القسمة (Modulus) : ناتج العملية 10 % 3 هو 1 ناتج العملية x % y يكون بين 0 و ( (y – 1 مثال: i = rand() % 6 + 1; “rand() % 6” يولّد أرقام بين 0 و 5 (توسّع) “+ 1” تجعل النطاق أو المجال من 1 إلى 6 (تحوّل) سوف تكون قيمة المتغير i بين 1 إلى 6
أمثلة int i = rand() % 14; توليد أرقام عشوائية من 0 إلى 13 توليد أرقام عشوائية من 0 إلى 13 int k = rand() % 10; توليد أرقام عشوائية من 0 إلى 9 int x = rand() % 10 + 1; توليد أرقام عشوائية من 1 إلى 10 int y = 1 + rand() % 10; توليد أرقام عشوائية من 1 إلى 10 int j = 1 + rand() % 5; توليد أرقام عشوائية من 1 إلى 5
مثال: برنامج يطبع 20 رقم عشوائي، في كل سطر 5 أعداد // Shifted, scaled integers produced by 1 + rand() % 6. #include <iostream> #include <iomanip> #include <cstdlib> // contains function prototype for rand using namespace std; int main() { // loop 20 times for ( int counter = 1; counter <= 20; counter++ ) // pick random number from 1 to 6 and output it cout << setw( 10 ) << ( 1 + rand() % 6 ); // if counter divisible by 5, begin new line of output if ( counter % 5 == 0 ) cout << endl; } // end for structure system("pause"); return 0; // indicates successful termination } // end main
تابع المثال .. Output: 6 6 5 5 6 5 1 1 5 3 6 6 2 4 2 6 2 3 4 1