🇾🇪علوم حاسوب مستوى ثالث | جامعة صنعاء🇵🇸 – Telegram
🇾🇪علوم حاسوب مستوى ثالث | جامعة صنعاء🇵🇸
1.48K subscribers
571 photos
61 videos
753 files
813 links
مستوى ثالث
قناة البرمجة⬇️
https://news.1rj.ru/str/TECH_MINDs24

بوت_اللجنة_العلمية(مقررات-نماذج)
@CS_Studnts_class_24_bot 👈

مجتمع_الدفعة
https://news.1rj.ru/str/CScommunity24👈
قناة_الأسئلة
https://news.1rj.ru/str/cs_24_MCQ 👈
بوت_التواصل_والمشاركة_والإقتراحات
@Computer_science24_bot
Download Telegram
مودم اولاكس فورجي ب 23500 و باقة 25GB و ضمان لمدة سنة
من المؤتمر
4
الشركات المتواجدة في المؤتمر
3🔥1
من المعرض المهني في Devfest sana
3🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
نبذة من المؤتمر كيف يتم التنبؤ بالذكاء الاصطناعي ؟
3🔥2
خوارزمية صوره ثلاثية الأبعاد ،
الإمور حازقة ياشباب😄 ....
🤣6
شركة تقدم على وظيفة

امسح الباراكود وقدم ال CV تبعك
🔥2
بدء جلسة النقاش مع أفضل مطورين في سوق العمل في اليمن
#من_المؤتمر
5👍1🤣1
🇾🇪علوم حاسوب مستوى ثالث | جامعة صنعاء🇵🇸
بدء جلسة النقاش مع أفضل مطورين في سوق العمل في اليمن #من_المؤتمر
أفخم 5 عرفناهم اليوم وكنت أتمنى ابث لكم الجلسة ولكن للأسف 😢

1. م. علي يحيى طنينة - مدير تقنيات المعلومات في بنك اليمن و الكويتي.

2. م. مشعل علي ثابت علي - المدير التنفيذي لشركة سحبكم.
3. م. رشاد الخميسي - مؤسس ومنظم هذا المؤتمر.
4. أ. عبد الله العراسي - مدير التسويق والاتصالات في بنك التضامن.
5. م. عبد الرحمن أحمد الحكيم - مدير تكنولوجيا التسويق و المبيعات في شركة YOU.

#من_المؤتمر
6👍1🔥1
السلام عليكم
الدكتورة هبة شرحت لنا التعقيد الزمني وكيف نحسب التقدير الزمني لتنفيذ أي كود بفحص الخوارزمية
عرفنا انه لما نقدر وقت التنفيذ لأي خوارزمية النتيجة تكون واحدة من الذي بالصورة
وتتدرج من الأسوأ للأفضل الذي هي O(1)
والذي معناها ان كل أمر في الكود يتنفذ مرة واحدة فقط أي أن الوقت المقدر لتنفيذ الكود يكون ثابت
عرفنا برضه إن تعريف الدالة لا يحسب خطوة في Big-O
والإسناد والطباعة يعتبر خطوة
لكن عدد الخطوات في Big-O مش مهم لذلك يهمل طالما مافيش قيم مجهولة وloops وغيره

طيب أيش المطلوب ؟
حتى قيم worse و best مش ثابتات ولا ينطبقين على كود واحد محدد وخلاص
نشتي نعرف كيف نوجد تقييم الكود وكيف نحسنه إذا كان سيء وكيف تختلف وتتشابه التقديرات حسب الخوارزمية
وعشان نفهم تقييم الخوارزميات وكيف تطلع معنا worse و best الدرس هذا في موقع هرمش يشرحه بكل بساطة

https://harmash.com/tutorials/algorithms-and-data-structure/big-o-notation#google_vignette

الذي عنسويه احنا هو الأسئلة الذي ادتها الدكتورة عشان نفهم أكثر .
6
🛑 تعـــــــــــــــــــــــــــــــــــــــميم🛑
- تم فتح باب التظلمات عبر الموقع للجميع..
#يعمم.
تكليف | أ. هبة | #DSA

السؤال الأول :
ماهي أشكال الاكواد التي ينتج عنها القيم التالية عند احتساب Big-O (الوقت اللازم لتنفيذ الكود )

قبل ما نحل السؤال هذا نعرف انه مستحيل نلم بكل الأكواد الذي تنتج لنا التقدير هذا لأنه يختلف من كود لثاني لكن حاولت اني اكتب لكم البرامج الأكثر استخدام في هذه الحالات
1.
O(!n)
التعقيد الزمني هذا غالبًا ينشأ في المشاكل الذي تعتمد على ترتيب العناصر مثل خوارزميات الترتيب أو الحلول الذي تعتمد على تكرار الخيارات
مثال:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

void permute( vector<int>& arr, int start) {
if (start == arr.size() - 1) {
for (int num : arr) cout << num << " ";
cout << endl;
return;
}
for (int i = start; i < arr.size(); i++) {
swap(arr[start], arr[i]); // تبديل
permute(arr, start + 1);
swap(arr[start], arr[i]); // إرجاع التبديل
}
}

int main() {
vector<int> arr = {1, 2,3};
permute(arr, 0);
return 0;
}

في هذا الكود كل عنصر يتبدل مع باقي العناصر في كل مستوى استدعاء زيه زي مبدأ العد بحيث ادخل للمصفوفة ٣ عناصر وطلبت منه عدد احتمالات تكوين عدد متكون من ٣ خانات من العناصر هذه بدون تكرار
كل استدعاء يولد فرعين
في الأول استدعاء واحد وفي الثاني مرتين والثالث اربع مرات وهكذا لحد آخر استدعاء
التعقيد الزمني=
2^n - 1 = O(2^n)


2.
O(2^n)

التعقيد هذا يظهر في مشاكل مثل إنشاء مجموعات فرعية أو الخوارزميات الذي تفحص الاحتمالات كلها بالتفرع مثل حساب مبدأ فيبوناتشي للعد إذا تعرفوه
أو مثلًا برنامج عد سلاسل الاصفار والآحاد بطول n

#include <iostream>
using namespace std;

void generateBinary(int n, string str = "") {
if (n == 0) {
cout << str << endl; // طباعة السلسلة الناتجة
return;
}

// استدعاء الدالة مرتين
generateBinary(n - 1, str + "0"); // إضافة صفر
generateBinary(n - 1, str + "1"); // إضافة واحد
}

int main() {
int n = 3; // طول السلسلة
generateBinary(n);
return 0;
}


في الاستدعاء الذاتي بكل خطوة إذا كان في عدد n عناصر يتولد تباديل n لأن كل استدعاء يعمل عملية تبادل وينتقل للمستوى الذي بعد
ف يكون التعقيد الزمني O(!n)
6
تكليف | أ. هبة | #DSA

السؤال الثاني:
ماهي قيمة Big-O عند احتسابه للكود الذي بداخله دالة تستدعي نفسها

هذا يعتمد على عمليات الدالة وعدد مرات الاستدعاء
مثلًا لو الدالة تسوي استدعاء واحد في كل مرة وفي كل استدعاء يتم تقليل قيمة n بمقدار ثابت

مثال حساب المجموع من 1..n
#include <iostream>
using namespace std;

int sum(int n) {
if (n == 0) return 0;
return n + sum(n - 1);
}

int main() {
int n = 5;
cout << "Sum: " << sum(n) << endl;
return 0;
}

بيتم استدعاء الدالة n مرة
n, n-1, n-2, ..... ,1
معناها عدد الاستدعاءات = O(n)
وكل استدعاء ينفذ عملية ضرب واحدة


مثال ثاني لإيجاد المضروب

#include <iostream>
using namespace std;

int factorial(int n) {
if (n == 1) return 1;
return n * factorial(n - 1);
}

int main() {
int n = 5;
cout << "Factorial: " << factorial(n) << endl;
return 0;
}

البرنامجين لهن عمل وناتج مختلف لكن طريقتهن متشابهة هنا تكون O(n) للكودين لأن الاستدعاء مرة واحدة والنقصان بمقدار ثابت


طيب لو كان الاستدعاء أكثر من واحد في كل مرة؟
مثله مثل المثال في السؤال الأول الذي يعد سلاسل الاصفار والآحاد بطول معين
الدالة تستدعي نفسها مرتين وعدد الاستدعاءات يكبر بشكل أسي يعني كل استدعاء ينتج استدعاءين جديدين
O(2^n)
وهكذا كلما زاد التعقيد يكون O(k^n)


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

#include <iostream>
using namespace std;

int binarySearch(int arr[], int left, int right, int target) {
if (left > right) return -1; // العنصر غير موجود

int mid = left + (right - left) / 2;
if (arr[mid] == target) return mid;

if (arr[mid] > target)
return binarySearch(arr, left, mid - 1, target); // البحث في النصف الأول
else
return binarySearch(arr, mid + 1, right, target); // البحث في النصف الثاني
}

int main() {
int arr[] = {2, 4, 6, 8, 10, 12};
int n = sizeof(arr) / sizeof(arr[0]);
int target = 8;

int index = binarySearch(arr, 0, n - 1, target);
if (index != -1)
cout << "Element found at index: " << index << endl;
else
cout << "Element not found" << endl;

return 0;
}

في كل استدعاء يتم تقليل نطاق البحث للنص في كل خطوة
الحد الاقصى للاستدعاءات = عدد مرات تقسيم النطاق إلى النصف حتى الوصول لعنصر واحد
العدد هذا هو O(log n)
بحيث nهو حجم المصفوفة

وهكذا تختلف التعقيدات من كود لثاني .
6
السلام عليكم ورحمة الله  ....

نتقدم بالشكر والتقدير والاحترام لمن حضر ،
المؤتمر لمطورين قوقل ٢٠٢٤/١٢/٢١
وهذا يدل على تفاعل كلية الحاسوب مع التقنيات الحديثة. .....

وعليه نشيد على جميع الطلاب التفاعل على مثل هذه المؤتمرات اللتي تكسبك خبرة في سوق العمل والتعامل مع جميع الأوضاع المُتجددة خلال هذه السنوات الأخيرة....

والتقديم على بعض الشركات اللتي  توفر فرص تدريب وتأهيل وتوظيف  لمواصلة مسيرتك التعليميه .....

وأفضل شيء تستفيد من مناقشات بعض المشاريع
اللتي تُعرض أثناء المؤتمر  .....

والله ولي التوفيق والنجاح


#من_المؤتمر
5
نحاول نجيب لكم النقاط الذي كتبنا في المؤتمر و لو كثرين الرسائل اليوم في القناة اعذرونا


استخدام التكنولوجيا وسيلة وليست غاية

لو تستخدم احدث تكنولوجيا ومابش له قيمة عند العميل(يعني في سوق العمل) مابش له داعي بكله ولو كتبت كود محد كتبه في العالم كله
م. عبدالرحمن الحكيم

سوق البرمجيات ليس شارع صخر بل قوقل بلاي

م.علي يحيى

اكثر ما تم التركيز عليه في الجلسة النقاشية هو ان تكون ضمن فريق مع زملاءك ومشاركتهم كل أعمالك

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

م. عبدالرحمن حكيم

اذا كان لديك شغف ستوصل الى كل شيء تريده

م.مشعل ثابت


#من_المؤتمر
عزام العرمزه

#نصائح
6🔥2
واحد من طلاب الأمن السيبراني سأل المدير التنفيذي لشركة سُحبكم كيف اتعلم الأمن السيبراني على اصولة قال له كالي لينكس هو استخدام أدوات جاهز فقط .
وكتب له هؤلاء الكورسات

م.مشعل ثابت

#من_المؤتمر
عزام العرمزه

#نصائح
4👍2🔥2
هذا جميع الحالات التي نستخدمها مع الامر grep اثناء البحث في الملفات في لغة shell
مثلا

grep  "^طماح"   "names.txt "

الناتج بايجيب لك السطر كامل الذي يبدأ ب اسم طماح
👍3🔥31