****************************************
السلام عليكم
*****الخوض في لوغاريتمية الكمبيوتر ومعرفة كيفية عمل الدوال الجاهزة ومقارنتها
مع ما نكتبه من دوال . شيئ ممتع للغاية.وبرمجة السي++ غزيرة بمكتباتها القوية ومتعددة الأغراض
الرياضية..والمنطقية..والتنسيق....والإدخال والإخراج...والتصميم الهندسي......
الولوج إلى هذا العالم الخفي شيئ يفوق الوصف.فمن يدري ما سيحدث في المستقبل فربما تكون
أنت أخي قارئ هذا المقال من ينتج أول لغة برمجة عربية لها مركزها..أو نظام تشغيل عربي خالص.
***أعجبني سؤال وجهه أحد أعضاء المنتدى مرة ...وهو كيفية عمل المكتبة <cmath> أي ما هي
برمجة دوال هذه المكتبة(كيف تمت برمجتها)....سؤال غريب وجميل......
لن أطيل عليكم وسأقدم لكم هذه المكتبة الرائعة فعلا والسهلة نوعا ما.<algorithm>
ويجب تضمينها في البرنامج كالعادة :
#include<algorithim>
----------------
Count()
وتقوم بحساب عدد المرات التي يتكرر فيها الرقم المطلوب في المصفوفة المحددة.
ويعيد لنا رقم يمثل مرات التكرار....عملية سهلة ويستطيع أي شخص أن يعملها
ولكن هذه الدالة لإختصار الوقت.
Example //
#include <iostream>
#include <algorithm> //for count()
using namespace std;
int arr[] = { 33, 22, 33, 44, 33, 55, 66, 77 };
int main()
{
int n = count(arr, arr+8, 33); //count number of 33’s
cout << “There are “ << n << ” 33’s in arr.” << endl;
return 0;
}
***********************
The output is
There are 3 33’s in arr.
***********************-----------------------------------------------------------------
-----------------------
sort()
**الموضوع واضح من عنوانه** تستخدم لترتيب المصفوفة حيث أننا نعطيها مصفوفة
غير مرتبة (مخربطة) وتعيدها مرتبة تصاعديا...وهي ستساعدنا كثيرا إن كنا نعمل على
قواعد البيانات أو ما شابه.
Example ://
// sorts an array of integers
#include <iostream>
#include <algorithm>
using namespace std;
//array of numbers
int arr[] = {45, 2, 22, -17, 0, -30, 25, 55};
int main()
{
sort(arr, arr+8); //sort the numbers
for(int j=0; j<8; j++) //display sorted array
cout << arr[j] << ‘ ‘;
return 0;
}
*******************************
The output from the program is
-30, -17, 0, 2, 22, 25, 45, 55
******************************------------------------------------------
-------------------------
merge ()
أيتها الدالة الخيالية....لو كنت أعرفك حينها**.
وتعني بالإنجليزية دمج أي ربط .وهي من الدوال التي تعمل مع أكثر من مصفوفة .
حيث أنها وبإختصار تقوم بدمج مصفوفتين وتخزينها في مصفوفة ثالثة.وتكون تلقائيا مرتبة تصاعديا.!
Example ://
#include <iostream>
#include <algorithm> //for merge()
using namespace std;
int src1[] = { 2, 3, 4, 6, 8 };
int src2[] = { 1, 3, 5 };
int dest[8];
int main()
{ //merge src1 and src2 into dest
merge(src1, src1+5, src2, src2+3, dest);
for(int j=0; j<8; j++) //display dest
cout << dest[j] << ‘ ‘;
cout << endl;
return 0;
}
}
*********************
والناتج هو : 1 2 3 3 4 5 6 8
*****************************--------------------------
------------------------------------------
for_each() Alg
تمكنك هذه الدالة من عمل تغيير ما(ضرب ،جمع....)على كل عناصر المصفوفة
أي عملية واحدة لكل العناصر.
Example :
// uses for_each() to output inches array elements as centimeters
#include <iostream>
#include <algorithm>
using namespace std;
void in_to_cm(double); //prototype
int main()
{ //array of inches values
double inches[] = { 3.5, 6.2, 1.0, 12.75, 4.33 };
//output as centimeters
for_each(inches, inches+5, in_to_cm);
cout << endl;
return 0;
}
void in_to_cm(double in) //convert and display as centimeters
{
cout << (in * 2.54) << ‘ ‘;
}
The output looks like this:
8.89 15.748 2.54 32.385 10.9982
*******************************-----------------
transform() Alg
كما الدالة السابقة مع إختلاف أنك تستطيع تخزين الناتج في مصفوفة منفصلة ومعرّفة من قبل.
=====================
المرجع :
(Waite Group's Object-Oriented Programming in C++ (3rd Edition
لـــــ Robert Lafore
ملاحظة : هذه بعض الدوال داخل هذه المكتبة وهناك الكثير والمتشعب وقدمت لكم ما أستطيع..
فأرجو أن أكون قد وسّعت معرفتك بهذه اللغة .ولك مني تحية.


