انجمن علمی علوم کامپیوتر دانشگاه رازی
Open in Telegram
علوم کامپیوتر دانشگاه رازی کرمانشاه Computer Science of Razi University آموزش، چالش، رشد🌱 با هم، خط به خط کد بزنیم! 💻 ارتباط با ما: 🆔 @CodewithCSA 📧 CodewithCSA@gmail.com لینکدین: Linkedin.com/company/razicsa
Show moreThe country is not specifiedThe category is not specified
351
Subscribers
No data24 hours
-27 days
-230 days
Posts Archive
📘 قسمت دوم: قلب تپندهی رجکس – متاکاراکترها!
اگه قسمت قبل با مفهوم کلی رجکس آشنا شدی، حالا وقتشه بری سراغ چیزایی که واقعاً «جادو» میکنن: متاکاراکترها!
🧩 متاکاراکترها یعنی اون نمادهایی که توی دنیای رجکس معنی خاص دارن. با همین چندتای ساده میتونی هر چیزی توی متن رو پیدا، بررسی، یا حتی فیلتر کنی.
🔹متاکاراکترهای پایهای که باید بلد باشی: . → هر کاراکتر (بهجز خط جدید) \d → عدد (0 تا 9) \w → کاراکتر کلمه (حروف، اعداد، آندرلاین) \s → فضای سفید (فاصله، تب، newline) \D → غیر عدد \W → غیر کلمه \S → غیر فضای سفید ^ → شروع رشته $ → پایان رشته📍 میخوای مطمئن شی ورودی با عدد شروع میشه ؟ یا اینکه رشته دقیقاً با یه کلمه خاص تموم میشه؟ همینها رو لازم داری. 🔎 تمرین: کدوم الگو فقط با رشتهای که با عدد شروع میشه تطابق داره؟
A) /\d$/
B) /^\d/
C) /\d/
D) /\d^/📌 یه کم فکر کن، اگه بلد نیستی، با خوندن همین کپشن به جواب میرسی! 😉
#Regex #رجکس #آموزش_برنامهنویسی #علوم_کامپیوتر #کدنویسی_پیشرفته #RaziCSA{ @RaziCSA }
با کدوم زبان بیشتر کار میکنی؟
این باعث میشه که روند فعالیتهای ما به سمت و سوی مورد علاقۀ شما بره. اگه زبان مورد علاقت توی گزینهها نیست، توی کامنت برامون بنویس 👇
🏆 الگوریتم برتر چالش «ضرب استثنایی»
وقتشه که بریم سراغ تحلیل و معرفی راه حل بهینه!🔥
💡ایده کلیدی راهحل بهینه: به جای اینکه برای هر عنصر، کل آرایه رو از نو ضرب کنیم (راه حل O(n^2) )، میتونیم با دو بار پیمایش کل آرایه، به جواب برسیم. این الگوریتم هوشمندانه از حاصلضربهای پیشوندی و پسوندی (Prefix & Suffix Products) استفاده میکنه: ▪️پیمایش اول (از چپ به راست): یک آرایه کمکی میسازیم که در هر خانه i، حاصلضرب تمام اعداد قبل از i ذخیره شده. ▪️پیمایش دوم (از راست به چپ): حاصلضرب تمام اعداد بعد از i را در مقدار فعلی خانه i ضرب میکنیم. ✅اینطوری با پیچیدگی زمانی O(n) و حافظه اضافی O(n) (یا حتی O(1)) به جواب میرسیم!🥇تبریک به آقای امیررضا فرهمند که تونستن از بین همه دوستانی که زحمت کشیدن، بهترین الگوریتم رو ارائه بدن.🎉
# بهینه ترین الگوریم با پیچیدگی زمانی O(n) و حافظه O(1)
def product_except_self(nums):
n = len(nums)
if n == 0:
return []
# 1. مقدار اولیه آرایه جواب را با حاصلضربهای پیشوندی پر میکنیم
result = [1] * n
prefix_product = 1
for i in range(n):
result[i] = prefix_product
prefix_product *= nums[i]
# 2. با حاصلضربهای پسوندی، نتیجه را نهایی میکنیم
suffix_product = 1
for i in range(n - 1, -1, -1):
result[i] *= suffix_product
suffix_product *= nums[i]
return result
❕یادمون باشه، هدف این چالشها تقویت ذهن و لذت بردن از حل مسئله است، نه فقط رسیدن به جواب!این فقط یه چالش آزمایشی از طرف ما بود. منتظر چالشهای جذاب بعدی باشید! 🚀
#الگوریتم_برتر / #پایتون / #تحلیل_کد / #RaziCSA{ @RaziCSA }
📌 مسیر شغلی 1 : دیتا ساینتیست
📊 وقتی دادهها رو به بینش تبدیل میکنی!
📍تو دنیایی که هر روز با میلیاردها داده سروکار داریم، شغل «دیتا ساینتیست» تبدیل شده به یکی از پرتقاضاترین و جذابترین مسیرهای علوم کامپیوتر. این مسیر ترکیبیه از کدنویسی، تحلیل، یادگیری ماشین و کمی جادو با نمودارها! 😄توی این پست گفتیم دقیقاً کار یه Data Scientist چیه، چه مهارتهایی میخواد، چطور میتونی واردش بشی و آیندهی شغلیش چطوره. 🧠 اگه دنبال یه شغل پویا، دادهمحور و جهانی هستی، شاید این همون مسیریه که دنبالش بودی... 📅 هفته آینده مسیر دوم: «Data Analyst» و فرقش با Data Scientist!
#علوم_کامپیوتر / #مسیر_شغلی / #دیتا_ساینس / #تحلیل_داده / #RaziCSA / #Python / #DataScientist{ @RaziCSA }
📌 همهٔ دانستههای موردنیازت، یکجا!
دیگه لازم نیست ده تا تب باز کنی برای جستوجوی یه متد ساده!
📍دو داکز یه سایت بینظیره که مستندات دهها زبان برنامهنویسی، فریمورک، API و ابزار رو یکجا و کاملاً آفلاین (بعد از بار اول) در اختیارت میذاره.
▪️جستوجوی سریع بین تمام داکیومنتها ▪️پشتیبانی از زبانهایی مثل Python, JavaScript, C++, HTML, CSS و ... ▪️حتی ابزارهایی مثل Git، Docker، Node.js و PostgreSQL ▪️قابلیت نصب روی مرورگر (PWA) ▪️انتخاب دقیق فقط اون زبانها و تکنولوژیهایی که نیاز داری ▪️بدون تبلیغ، بدون حاشیه — فقط داکیومنت!🔗 لینک سایت: devdocs.io
#ابزار_برنامهنویسی / #مستندات / #devdocs / #زبان_برنامهنویسی / #RaziCSA{ @RaziCSA }
📌 فرق
++i و i++ فقط جای علامتشه؟ واقعاً نه!
🔍 نگاهی دقیقتر به رفتار ++i و i++ در زبان C — چیزی فراتر از یه علامت!
اگه درس مبانی برنامه نویسی رو پاس کردی، احتمالاً با این دو شکل آشنایی: افزایش مقدار بهصورت پیشوندی ++i یا پسوندی i++💡اما نکتهی مهم اینه که فرقشون فقط ظاهری نیست — توی بعضی موقعیتها باعث تفاوت واقعی در اجرای برنامه میشن! 🧪 یه مثال ساده:
int i = 3;
printf("%d", i++); // چاپ میکنه: 3
printf("%d", ++i); // چاپ میکنه: 5
i++ : اول مقدار فعلی (3) رو داد به printf بعد شد 4 ++i : اول مقدارش رو 5 کرد، بعد داد به printf🧠حالا میتونی حدس بزنی خروجی این قطعهکد چی میشه؟
int x = 1;
int a = x++;
int b = ++x;
int y = a + b + x;
printf("%d", y);
❓ توی کوییزِ زیر منتظر جوابتم :)
#زبانC / #مبانی_برنامه_نویسی / #پیشوندی_پسوندی / #نکات_سی / #RaziCSA{ @RaziCSA }
👨💻 با خالق لینوکس آشنا شو!
▪️ لینوس بندیکت توروالدز (Linus Torvalds)
خالق هسته لینوکس و ابزار گیت – دو تحول بزرگ در دنیای نرمافزار📍 متولد ۱۹۶۹ – هلسینکی، فنلاند 📚 فارغالتحصیل علوم کامپیوتر از دانشگاه هلسینکی 💻 در سال ۱۹۹۱، لینوکس رو خلق کرد؛ هستهای آزاد و متنباز که قلب میلیونها سیستمعامل امروزیه 🔧 و در سال ۲۰۰۵ هم «Git» رو ساخت؛ ابزاری حیاتی برای مدیریت کد که امروزه پایهی کار هر توسعهدهنده است! 📍 جالبه بدونی که: 🚀 لینوکس اولش یه پروژه شخصی بود که واسه تمرین شروعش کرد! 📱 اما الان از گوشیهای اندرویدی گرفته تا سرورهای اینترنتی و ابررایانهها، همه دارن ازش استفاده میکنن! 🗣 جمله معروفش رو یاد بگیر:
"Talk is cheap. Show me the code." «حرف زدن راحته. کد رو نشونم بده.»✨ از گوشی اندروید تا سیستم عامل لینوکس، هر کدوم رو که داشتی، با ریاکت ❤️ یه تشکر بده به لینوس!
#لینوس_توروالدز / #لینوکس / #گیت / #متن_باز / #برنامهنویسی / #تاریخچه_تکنولوژی / #علوم_کامپیوتر{ @RaziCSA }
⏳ حلقههای تو در تو؛ چرا هر خط کد مهمه؟
فقط با یک خط کد، زمان اجرای برنامهات سالها عقب میفته :)
📍 شاید فکر کنید اضافه کردن یه خط کد دیگه توی یه حلقه چیز مهمی نیست، اما همین خط ممکنه زمان اجرای برنامه شما رو سالها به عقب بندازه!💡 تصور کنید یه حلقه تو در تو نوشتید که هر دوی اونها به اندازه طول یک لیست، n بار تکرار میشن. اینجا پیچیدگی زمانی (Time Complexity) کد شما میشه O(n²). یعنی چی؟ یعنی اگه مقدار n هزار باشه، کدتون باید حدود ۱ میلیون بار اجرا بشه! 🔁 حالا اگه یه حلقه سومی هم اضافه کنید، وارد دنیای O(n³) میشید و باید منتظر یک میلیارد بار اجرا باشید! واقعاً سرگیجهآوره، مگه نه؟🤯
✅ به همین دلیله که توی برنامهنویسی،
الگوریتمهای بهینه
و با
پیچیدگی زمانی کم
، مثل
طلا
ارزشمندند.
def endless_loop(n = 1000):
for i in range(n):
for j in range(n):
for k in range(n):
for l in range(n):
for m in range(n):
pass # این عملیات 10¹⁵ سال طول میکشد.
#برنامهنویسی / #الگوریتم / #تحلیل_زمان / #RaziCSA{ @RaziCSA }
🗓 #مرور_هفتگی_انجمن
▪️هفته دوم | تیر ۱۴۰۴
✌️دومین هفته انجمن هم پر از یادگیری، تعامل و انرژی بود. با هم مروری کنیم روی اتفاقهای مهم:
✨ هایلایت فعالیتها: 🔹 راهاندازی گروه گفتوگوی دانشجویی؛ فضای دوستانه برای گپ و یادگیری جمعی 💬 🔹 فرق بین == و is در پایتون؛ نکتهای که جلوی باگ رو میگیره! 🐍 🔹 معرفی تکنیک بامزه اما جدی: Rubber Duck Debugging 🦆 🔹 شروع سری «مسیرهای شغلی» با نقش Data Scientist 📊 🔹 چالش الگوریتم هفته: ضرب استثنایی بدون تقسیم 💻 🔹 نظرخواهی درباره آینده انجمن؛ مشارکت شما برای برنامهریزی 🤝 🔹 شروع آموزش Regex؛ ابزاری قوی برای کار با متنها 🔍 🔹 معرفی The Odin Project؛ مسیر رایگان یادگیری وب 💡♥️ پست محبوب هفته: 🔗 🎓 گروه تلگرامی دانشجوهای علاقهمند به فناوری و علوم کامپیوتر رازی
🚀 منتظر چی باشیم؟
🔸 ادامه مسیرهای شغلی 🔸 قسمت جدید آموزش Regex 🔸 ابزارهای کاربردی و چالش تازه 🔸 بخشهای جدید و هیجان انگیز👀 با ما بمونید و اگه پیشنهادی دارید، از طریق دایرکت یا گروه انجمن بهمون بگید.
#CSA / #انجمن_علوم_کامپیوتر / #RaziCSA / #مرور_هفتگی / #هفته_دوم{ @RaziCSA }
"Code never lies. Comments sometimes do."- رون جفریز (متولد ۱۹۳۹) از بنیانگذاران برنامهنویسی Extreme (XP) { @RaziCSA }
📌 نقشه راه توسعه وب: The Odin Project
💡 ساختن پورتفولیو واقعی، قدم به قدم و رایگان.
💻 اگه به توسعه وب علاقه داری و دنبال یه مسیر گامبهگام و جامع هستی که از صفر تو رو به یک توسعهدهنده فولاستک تبدیل کنه، The Odin Project انتخاب فوقالعادهایه.
🆓 این پلتفرم کاملاً رایگانه و بر پایه اصول "یادگیری با انجام دادن" بنا شده.
🔗این سایت تو رو در یک مسیر آموزشی دقیق قرار میده: ▪️ پروژههای عملی و واقعی: مهارتهای واقعی رو با ساخت پروژههای مختلف یاد میگیری. ▪️ مسیرهای تخصصی: فرانتاند با JavaScript یا بکاند با Ruby on Rails رو انتخاب کن. ▪️ منابع گلچینشده: بهترین آموزشها و ابزارهای استاندارد صنعت رو یاد میگیری. ▪️ جامعه فعال: از پشتیبانی کامیونیتی بزرگش بهرهمند میشی.💡 برای کسایی که انگیزه بالایی برای خودآموزی دارن و میخوان با پورتفولیو قوی، خودشون رو برای بازار کار آماده کنن. 🔗 همین حالا سفرت رو به دنیای توسعه وب با Odin Project شروع کن: www.theodinproject.com
#منبع_آموزشی / #برنامهنویسی / #TheOdinProject / #توسعه_وب / #آموزش_رایگان / #RaziCSA{ @RaziCSA }
🔎 رجکس چیه و کجا به کارت میاد؟
رگولار اکسپرشن (Regular Expression یا به اختصار Regex).
🔡 یعنی «عبارت منظم» یا همون الگوهایی برای پیدا کردن و تطبیق متنهاست. تصور کن میخوای توی یه عالمه متن، یه کلمه خاص، یه فرمت ایمیل، یا یه شماره تلفن رو پیدا کنی؛ اینجا Regex میاد وسط!☑️ کاربرد اصلیش هم توی برنامهنویسی برای جستجو، جایگزینی، اعتبارسنجی (Validation) و تجزیه (Parsing) متنهاست. 👁 مثلاً میتونی مطمئن بشی که یه رمز عبور شرایط خاصی رو داره، یا ایمیلهای معتبر رو از بین یه لیست بلند سوا کنی. 🎯 تو قسمتهای بعدی این سری، میریم سراغ آموزش جز به جز عبارتهای رجکس. با ریاکت 👍 بهمون نشون بدید که چقدر رجکس برای شما جالبه! :)
#Regex / #رجکس / #آموزش_برنامهنویسی / #علوم_کامپیوتر / #تمرین_کدنویسی{ @RaziCSA }
📣 نظر تو برای ما مهمه!
میخوای انجمن علوم کامپیوتر، بیشتر چی باشه؟
چی کم داشته تا به الان؟ چی اضافه بوده؟ میخوای چه برنامههایی برگزار کنیم؟ چجوری از نظر شما بهتر میشیم؟📍 توی کامنت بهمون بگو: ✅ از سالهای قبلی انجمن چی یادت مونده؟ ✅ چه نقدی نسبت به سوابق انجمن داری؟ ✅ چه پیشنهادی نسبت به آیندۀ انجمن داری؟ ✅ دوست داری چه دوره، ایونت یا فعالیتی رو ببینی؟ ✅ خودت علاقه داری تو چه چیزی مشارکت کنی؟
🧠 ما داریم برای آینده برنامه میریزیم؛ چه بهتر که با ایدههای تو طراحی بشه!{ @RaziCSA }
💻 چالش الگوریتم: ضرب استثنایی!
👨💻تابعی بنویسید که برای هر عنصر، حاصلضرب بقیه عناصر لیست را برگرداند.
⚠️ چالش اصلی: حل مسئله بدون استفاده از تقسیم و با پیچیدگی زمانی O(n).
ℹ️ الگوی کد شما باید مطابق زیر باشه:
def exceptional_product(arr):
"""
دریافت لیستی از اعداد و بازگرداندن لیستی که در آن،
هر عنصر حاصلضرب تمام عناصر بهجز خودش است.
بدون استفاده از عملگر تقسیم و با پیچیدگی زمانی O(n)
"""
# کد خودتو اینجا بنویس
pass
کدهاتون رو تو قسمت دایرکت کانال برامون بفرستید.
بهترین الگوریتم هفته بعد تو کانال معرفی میشه! 🚀
#چالش_الگوریتم / #پایتون / #بهینه_سازی / #RaziCSA{ @RaziCSA }
📌 با علوم کامپیوتر قراره چیکار کنیم؟
شغل آیندهات فقط «برنامهنویس» نیست!
❌ علوم کامپیوتر فقط کد زدن نیست! دنیای آینده پُره از موقعیتهایی که به دانش و مهارت تو نیاز دارن—ولی انتخاب مسیر شغلی، مثل پیدا کردن یه قطبنما توی جنگله: بدون اون ممکنه راهو گم کنی.🧭تو این سری مسیرهای شغلی، قراره با هم بریم سراغ مهمترین مسیرهای شغلی این رشته. از علم داده و هوش مصنوعی گرفته تا طراحی وب، امنیت، و حتی پژوهش!🧑💻
🔎 تو هر مسیر قراره بگیم: ▪️ این شغل چیه و دقیقاً چی کار میکنه؟ ▪️ چه مهارتهایی لازم داره؟ ▪️ چطوری باید واردش شد؟ ▪️ منابع یادگیری و پروژههاش چیا هستن؟ ▪️ آینده شغلیش چطوره؟🚀 اگه نمیدونی دقیقا میخوای چیکار کنی یا تازه اول راهی، این پستها میتونن یه نقشهی عملیاتی باشن برای تو.
📅 منتظر پستهای هفتگی مسیرهای شغلی باش.>> شروع ما با: Data Scientist 📊
#علوم_کامپیوتر / #مسیر_شغلی / #RaziCSA / #آینده_شغلی / #برنامهنویسی / #دیتا_ساینس{ @RaziCSA }
🦆 وقتی اردک، شنوندهی حرفهای شماست!
آیا تا حالا امتحان کردی کدت رو برای یه شیء بیجان توضیح بدی؟ 😁
📍تکنیکی به اسم Rubber Duck Debugging وجود داره که خیلیها بهش قسم میخورن! شما کدتون رو خط به خط، با صدای بلند برای یه چیز مثل اردک پلاستیکی توضیح میدید. همین گفتوگوی یکطرفه باعث میشه باگها و ایرادها خودشون رو نشون بدن.
🐤چرا جواب میده؟ ✅ باید دقیق و شفاف فکر کنید. ✅ فرضیات اشتباهتون آشکار میشن. ✅ مغز از حالت گیر کردن درمیاد. ✅ بدون قضاوت، بدون قطع حرف!👀 امتحانش کن. لازم نیست حتماً اردک باشه، یه ماگ هم کارتو راه میندازه!
#اصطلاح_برنامهنویسی / #rubberduckdebugging / #اشکالزدایی / #برنامهنویس{ @RaziCSA }
📌 تفاوت == و is در پایتون
این دوتا همیشه یکی نیستن!
اما چرا این مهمه؟ چون خیلی وقتها آبجکتها توی حافظه جدا ذخیره میشن، حتی اگه شبیه هم باشن. حواست باشه که is فقط برای بررسی "این دقیقاً همونه؟" استفاده میشه، نه "شبیهشه؟"📍مثلاً ببین این مورد عجیب رو:
x = 1000
y = 1000
x == y # True
x is y # False
🤔 چرا؟ چون اعداد بزرگتر از محدوده کش پایتون، آبجکتهای جدا میشن!
💡 فرق کوچیکی که میتونه باگ بزرگی بشه!
#پایتون / #ترفند_کدنویسی / #RaziCSA / #Python{ @RaziCSA }
