علوم حاسوب CS.Code
Kanalga Telegram’da o‘tish
قناة تقنية تهتم بصيانة الحاسوب ولغات البرمجة وأنظمة التشغيل وهندسة البرمجيات وتخطيط وتحليل وتصميم وبرمجة وتطوير الأنظمة المعلوماتية وإدارة قواعد البيانات والشبكات... 🔔 رابط القناة على يوتيوب https://www.youtube.com/channel/UCCJPI6U5KG5DCNM-8G58spg
Ko'proq ko'rsatishMamlakat belgilanmaganToif belgilanmagan
709
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kun
Ma'lumot yo'q30 kun
Postlar arxiv
تمرين🔊
باستخدام فكرة استدعاء الدالة لذاتها :
قم بعمل دالة تستقبل عددا وترجع مضروب هذا العدد .
توضيح :
مضروب 5 = 5×4×3×2×1 = 120
مضروب 7 = 7×6×5×4×3×2×1 = 840
المشاركات على بوت التصحيح :
https://t.me/fix_code_bot
#بالتوفيق
درس اليوم :
#الدوال
استدعاء الداله لنفسها :
_جميعنا يعرف انه بامكاننا استدعاء اي داله من دالخل داله main او من ايي داله اخرى ولكن بامكاننا ايضا استدعاء الداله من داخل هيكلها ايضا ولاكن يرجى مراجعة بعض الآداب والشروط ليعمل البرنامج بشكل صحيح
_شروط استدعاء الدوال لذاتها:
1_ عمل نقطة توقف لاستدعاء الدالة لذاتها وذلك لتجنب دخول البرنامج بدائره لا يمكنه الخروج منها تماما مثل وضع شرط لتوقف داله for او while عن تكرار كود معين
2_ تغيير القيم الممرره الى الداله في كل مره تقوم الداله باستدعاء ذاتها
3_ مراعاه الامر return عند ايقاف الداله ومراعاه القيمه المعاده من الداله
_تستخدم هذه الدوال غالبا بدلا من جمل الدوران for ا while او غيرها من دوال التكرار
_يستخدم المبرمجون هذا النوع من الدوال للحصول على نتائج كبيره في وقت قصير ولتقليل الكود في داله main وايضا لتجنب كتابة استدعائات كثيره لنفس الداله عند الحاجه الى الوصول الى النتيجه المطلوبه
مثال:
هل تستطيع عمل داله pow والتي ترجع القوى لاي رقم يمرر اليها؟
في الواقع سيقول البعض انه بامكاننا استخدام جمله for للحصول على ذلك مثل الكود التالي
long pow(int number , int power)
{
for(int i = power; i > 0; i++)
number *= number;
return number;
}
هذا الكود صحيح 100 بالمأه ولكن اذا اردت استخدام استدعاء الداله لذاتها سيكون كالاتي
long pow(int number , int p)
{
//نقطه النهاية
if(p <= 0)
return 1;
return (number * pow(number , p-1));
}
هذه الدال مشابهة في النتيجة لداله pow السابقة ولدالة pow الموجوده في مكتبة math
هذه كل المعلومات التي تخص الدوال اتمنى تكونو استفدتو من الشرح وتمنياتي لكم بالتفوق والامتياز واتمنى رؤيتكم مبرمجين ناجحين ومتميزين على كافة مبرمجين العالم 🤍
#بالتوفيق_للجميع🤍
تمرين🔊
قم بعمل داله تقوم بالاتي :
1- تستقبل متغيرا نصيا بالمرجع وتقوم بحذف اي كاركتر منه وإبقاء الارقام فقط
2- تقوم بفرز وترتيب تلك الارقام تصاعديا
3- واخيرا ترجع قيمه رقميه بنوع long وتكون القيمه المرجعة هي مجموع تلك الارقام
ثم في الداله الرئيسيه(main) اطبع السلسله النصيه الجديده وثم اطبع القيمة المرجعة من الدالة
ملاحضه : يمكنك تمرير اي قيمه نصيه للمتغير الذي سيمرر الى الداله
مثال:
string s = "824*82:4828n38";
المشاركات على بوت التصحيح :
https://t.me/fix_code_bot
#بالتوفيق
#الدوال
المتغيرات الثابته وخواصها وعملها على الدوال:
_المتغيرات الثابته هي متغيرات نقوم بحجزها داخل هيكل الداله وتقوم الداله بالاحتفاض بقيمة هذه المتغيرات حتى بعد انتهاء عمل الداله ويمكن للداله التعامل مع هذه القيم في كل مره نقوم باستدعائها فيه
_نقوم بتعريف المتغيرات الثابته بعد الكلمه المحجوزه static
_عند استدعاء اي داله لا تحمل متغيرات ثابته فان البرنامج يقوم بانشاء داله مشابهة للداله التي قمنا باستدعائها اما عندما تحتوي الداله على متغير ثابت فان البرنامج يستدعي نفس الداله مع نفس المتغيرات في كل مرة يتم استدعاءها فيه
مثال :
#include <iostream>
using namespace std;
void print_number()
{
static int a = 0;
cout<<"the number is : "<<a<<endl;
a++;
}
int main()
{
print_number();
print_number();
print_number();
print_number();
}
والنتيجه هي :
the number is : 0
the number is : 1
the number is : 2
the number is : 3
#بالتوفيق_للجميع
#الدوال
الدوال التي ترجع قيمة :
_تحجز هذه الدوال امكنة في الذاكره بمقدار ما يحجزه اي متغير عادي حسب نوعه مثلا الدوال التي من نوع int تحجز 4 byet وتحجز الدوال التي من نوع double 8 byte مع العلم بان هذه الاماكن من الذاكره لا يتم حجزها الا عند تنفيذ الداله ويتم التخزين فيها القيمه التي ترجعها هذه الدوال
_يتم ايضا حجز مساحات للمتغيرات التي يتم انشائها في الدوال والمتغيرات التي يتم تمرير القيم اليها!!
_عند استخدام الاستدعاء بالمرجع فانه لا يتم حجز اي مواقع في الذاكره للمتغيرات التي تم تعريفها لاستقبال قيما بالمرجع!!
_دائما ما تنتهي هذه الدوال بامر return بل ويجب ان تنتهي بهذا الامر بينما الدوال الدوال التي لا ترجع اي قيم لا يشترط ان تنتهي بهذا الامر
_يتم تمرير قيمه بنفس نوع بيانات الداله الى الامر return فان كانت الداله من نوع int يجب تمرير قيمه رقميه الى الامر return مثل
return 10;
امثلة على هذه الدوال:
1_
int sum_of(int a , int b)
{
return (a + b);
}
ترجع هذه الداله المجموع لرقمين يتم تمريرهم اليها
2_
char get_first_of(string name)
{
return name[0];
}
ترجع هذه الداله الحرف الاول من اي نص يمرر اليها
3_
double average(int sum , int count_s)
{
if(count_s != 0)
return (sum/count_s);
else
return 100.0;
}
ترجع هذه الداله المعدل للمجموع وعدد المواد الممره اليها وتم استخدام الامر
if(count_s != 0)
لتجنب وقوع خطا عند القسمه على الصفر
4_
string get_appre(float &n)
{
if(n >= 90)
return "Excelant";
else if(n >= 80)
return "Very good";
else if(n >= 65 )
return "Good";
else if(n >= 50)
return "Accept";
else
return "Fill";
}
ترجع هذه الداله التقدير لاي معدل يتم تمريره اليها وطالما اننا لا نغير من قيمه المتغير الممرر اليها تم استخدام التمرير بالمرجع لتقليل المساحه التي تحجزها على الذاكره
ويفضل عدم استخدام التمرير بالمرجع اذا كنا نريد استخدام هذه الداله مع تمرير قيمه مباشره اليها دون تمرير متغير بدلا من ذلك
#بالتوفيق_للجميع💖
تمرين🔊
قم بعمل داله تستقبل رقما ثم تطبع مجموع الارقام الزوجيه من ال0 الى هذا الرقم .
المشاركات على بوت التصحيح :
https://t.me/fix_code_bot
#بالتوفيق
#الدوال
الدوال التي لا ترجع قيمه :
_دائما ما يكون نوعها هو void وهي لا تحجز اماكن في الذاكره الا وفقط للمتغيرات التي بداخلها فقط
_لا تحتوي هذه الدوال على قيم عند كتابه الامر return
_يعتبر الامر return في هذه الدوال امرا لايقافها بمعني ان الداله تنتهي عند هذا الكود
_غالبا ما تستخدم هذه الدوال لاداء وظائف الطباعه والاخراج او وظائف الكتابة والتعديل على المتغيرات العامه في البرنامج
_تستخدم ايضا غالبا كدوال #الاستدعاء_بالمرجع او #call_by_reference للكتابه والتعديل على قيم المتغيرات الممره فيها
امثلة :
1-لا تستقبل قيما
void say_hello()
{
cout<<"\tHello Sir \n";
}
تقوم هذه الداله بطباعه النص (Hello Sir) في كل مره يتم استدعائها فيه
2-تستقبل قيما
void say_welcome(string name)
{
cout<<"\tWellcome "<<name<<" to my project .\n";
}
تقوم هذه الداله بالترحيب بالشخص الممر اسمه فيها عند استدعائها مثلا
say_welcom("Ahmed");
والنتيجه هي طباعة
Welcome Ahmed to my project .
3-#الاستدعاء_بالمرجع
void Swap(int &a , int &b)
{
a ^= b;
b ^= a;
a ^= b;
}
تقوم هذه الداله بتبديل قيمتي المتغيران الذان يمرران اليها مثل
int num1 = 22 , num2 = 30;
cout<<"num1 = "<<num1<<" num2 = " <<num2<<endl;
Swap(num1 , num2);
cout<<"num1 = "<<num1<<" num2 = " <<num2<<endl;
والنتيجه هي :
num1 = 22 num2 = 30
num1 = 30 num2 = 22
#بالتوفيق_للجميع
درس اليوم
#الدوال
انواعها:
1- دوال لا ترجع قيمه (نوعها void)
2- دوال ترجع قيمه
(لها نفس انواع بيانات المتغيرات سواءا متغيرات ثابته int float double char ....etc او متغيرات مصطنعه struct-class-enum....etc)
_كل الانواع السابقه يمكن ان تكون
1_ تستقبل قيما
2_ لا تستقبل قيما
_الدوال التي تستقبل قيما يمكن ان تمرر القيم اليها بطريقتين
1_ #التمرير_بالقيمه
2_ #التمرير_بالمرجع
_التمرير بالقيمه تعني ان الداله ستقوم بانشاء متغيرات اخرى وتعطيها القيم التي مررت اليها ثم تتعامل مع هذه المتغيرات الجديده
_التمرير بالمرجع يعني ان الداله ستتعامل مباشره مع المتغيرات التي مررت فيها ويتم وضع العلامه & قبل اسم المعاملات المنشأه فيها
اليكم مثال سيوضح الفرق بينها
#include<iostream>
using namespace std;
void swap1(int n1 , n2)
{
int temp = n1;
n1 = n2;
n2 = temp;
}
void swap2(int &n1 , int &n2)
{
int temp = n1;
n1 = n2;
n2 = temp;
}
int main()
{
int a = 5; b = 7;
cout<<"main vales\n a = "<<a<<" b = "<<b<<endl<<"_____________\n";
swap1(a , b);
cout<<"after swap1\n a = "<<a<<" b = "<<b<<endl<<"_____________\n";
swap2(a,b);
cout<<"after swap2\n a = "<<a<<" b = "<<b<<endl<<"_____________\n";
return 0;
}
والنتيجه هي :
main vales
a = 5 b = 7
___________
after swap1
a = 5 b = 7
___________
after swap2
a = 7 b = 5
___________
اتمنى تكون الفكره وصلت وجربو الكود بانفسكم لتتعلمو المزيد 👍🤍
#بالتوفيق_للجميع
داله sort
هي احدى دوال مكتبه algorithm
تعمل على فرز القوائم او المصفوفات عن طريق معاملات يتم تمريرها اليها او دوال مقارنه امثله عليها
- اذا اردت صنع قاعده لفرز العناصر كان تفرزها اولا الاعداد الاوليه ثم الفرديه ثم الزوجيه
يمكنك ذلك من خلال صنع داله مقارنه وتمريرها فيها مثال على ذلك
bool com(char aa , char bb)
{
int a = aa - '0' , b = bb - '0';
//تحويل قيم ال char الى int للمقارنه بينها
return a < b ;
}
int main
{
string num = "83846";
sort(num.begin(),num.end(),com)
cout<
منذ ظهر الويندوز لأول مرة قبل 35 عامًا وحتى الآن، يظل نظام التشغيل الأكثر شيوعًا بين مستخدمي الحواسيب، كيف استمرت هذه الهيمنة؟ وهل ستستمر؟
﷽
إِنَّ اللَّهَ وَمَلائِكَتَهُ يُصَلُّونَ عَلَى
النَّبِيِّ يَا أَيُّهَا الَّذِينَ آمَنُوا صَلُّوا
عَلَيْهِ وَسَلِّمُوا تَسْلِيمًا ﷺ
⭕️ كثير منا يعاني من البحث في الملفات في جهازه الكمبيوتر! بسبب أن البحث دائماً يقتصر على أماكن معينة وتحتاج دائماً توسيع دائرة البحث! هذه طريقة بإمكانك عبرها تحسين البحث في جهازك حتى يكون أعمق ويوصلك للملفات الي تريدها بشكل أدق.
شرح الطريقة باختصار:
4 نصائح للمبتدئين بالبرمجة 👏❤️
1- حدد هدفك من تعلم البرمجة .
2- ركز على تعلم لغة برمجة واحدة بالبداية واتقنها ولاتشتت نفسك بالتنقل بين اللغات.
3- طبق ما تعلمته .. لايمكن ان تتقن شيئا بالبرمجة بدون تطبيقه لذلك قم بتطبيق ماتتعلمه.
4- ابتعد عن المتعصبين , وعن من يحاول ان يجد افضل لغة برمجة
