Tp hunters cpp
635 subscribers
69 photos
41 videos
7 files
12 links
📌 چنل متمرکز روی زبان ++C به زبان فارسی

آموزش مفهومی همراه با چالش های جذاب و کاربردی

رفع اشکال در گروه
@Tphunterscpp_Group

ارتباط با ادمین‌ها
@h3li0p4us3_moharami
@systemchemist

زیر مجموعه تیم استارتاپی تی‌پی‌هانترز
@tphunters
Download Telegram
یک فرم ساده و زیبای ساخته شده تحت ویندوز توسط cpp
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
#پیشرفته
قسمت 14: تعریف کلاس، شی و نمونه سازی ، سطح دسترسی و access modifier ها
مدرس: محمدصالح حق محمدلو
🟢لطفا سوالات، نظرات و کدهای خود را برای ما کامنت کنید
#نکته
در مهندسی نرم افزار به عنوان یه قانون عضو های داده ای (data members ) یا همون متغییر های خودمونو و صفات خودمونو بهتره به صورت private و عضو های تابعی(member functions) یا همون توابع و رفتار های خودمونو به صورت public تعریف کنیم.
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.
💬 #چالش
برنامه ای بنویسید که دو عدد a و b را از کاربر دریافت کند و اعداد اول بین آنهارا بصورت نزولی چاپ کند. اعداد خروجی را با کاما از یکدیگر جدا کنید.

🟥درجه سختی: متوسط
🟢لطفا کد، سوالات و نظرات خود را برای ما کامنت یا داخل گروه ارسال کنید.
🧠 #کد_چالش
حل توسط جناب: amir
#include<iostream>
using namespace std;
bool isAval(int number)
{
for (size_t i = 3; i < number; i += 2)
{
if(number % i == 0){
return false;
}
}
return true;
}
int main()
{
int first_number, second_number;
cout << "Enter first number" << endl;
cin >> first_number;
cout << "Enter second number" << endl;
cin >> second_number;
string result = "";
if(first_number < 2 && second_number > 2){
result += "2,";
}
first_number = first_number % 2 == 0 ? first_number + 1 : first_number + 2;
second_number = second_number % 2 == 0 ? second_number - 1 : second_number - 2;
for (size_t i = second_number; i >= first_number; i -= 2)
{
if(isAval(i)){
result += to_string(i) + ",";
}
}
cout << result.substr(0, result.length() - 1) << endl;
}

🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید.
Tp hunters cpp
🧠 #کد_چالش حل توسط جناب: amir #include<iostream> using namespace std; bool isAval(int number) { for (size_t i = 3; i < number; i += 2) { if(number % i == 0){ return false; } } return true; } int main() { int…
💬 #شرح_کد
توضیحات توسط جناب :amir
یه تابع isAval نوشتم که یه عدد دریافت میکنه و بررسی میکنه اوله یا نه
عددی اوله که به جز یک و خودش، مقسوم علیهی نداشته باشه
حلقه رو از ۳ شروع میکنم (چون اگر قرار باشه به ۲ بخش پذیر باشه قطعا اول نیست)
و تا قبل خود عدد میرم جلو پس قاعدتا باید نباید مقسوم علیهی داشته باشه اگر اول باشه
اگر داشت ک ریترن فالس و تابع تموم میشه
اگر حلقه تموم شد و عددی پیدا نشد ریترن ترو


تو مین هم اومدم عددارو دریافت کردم. یه رشته هم گذاشتم که رشته مقسوم علیه ها رو قراره تو خودش نگه داره. اگر ۲ بین دوتا عدد بود، همینجا به رشته اضافه میکنمش. چون مرحله های بعدی میخوام با عددای زوجو حذف کنم که سریع تر شه برنامه
برای اینکه عددای اول بین دوتا عددو بگیرم به شروع یکی اضافه و از انتها یکی کم میکنم
ولی خب ممکنه زوج بشه و حلقه بعدی رو خراب کنه. واس همین میگم اگر فرد بودن (که به +- ۱ زوج شن) ، +- ۲ میکنم
بعدشم از تابع اول بودن عددای بین بازه رو بررسی میکنم
اگر اول بود به رشته اضافه میکنم با کاما

یه کاما اخرش اضافی میمونه که با substr حرف اخرو حذف میکنم
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.
#نکته
در برنامه نویسی گاهی پیش میاد که بخوایم نوع متغیری که تعریف کرده ایم رو عوض کنیم بدون اینکه در تعریف اولیه متغیر ها دستکاری کنیم.
مثلاً نوع متغیر را int تعریف کردیم و می‌خواهیم برنامه‌ی تقسیمی بنویسیم که حاصل تقسیم رو با اعشار هم نمایش دهد. برای این منظور می‌توانیم به طریق زیر عمل کنیم:

int x, y;
float z = (float) x / (float) y;


با اینکار بدون اینکه تغییری در نوع متغیر هامون ایجاد کرده باشیم، می‌تونیم حاصل تقسیم رو به صورت اعشاری هم نمایش بدیم.
(بررسی کنید که در همین برنامه تقسیم، اگر فقط یکی از متغیر هامون رو با ساختار بالا بنویسیم، نتیجه‌اش یکسان خواهد بود؟)
پ.ن: به این عمل type casting گفته می‌شود.

🟢 لطفا سوالات و نظرات خود را برای ما کامنت کنید.
@tphunterscpp
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
#پیشرفته
قسمت 15: توابع و کلاس های دوست یا friend
مدرس:محمدصالح حق محمدلو
🟢لطفا نظرات، کد و سوالات خود را برای ما کامنت کنید.
گفتگو های صوتی کانال رو در کلاب هاوس اجرا کنیم یا داخل همین ویس چت تلگرام؟
Anonymous Poll
8%
کلاب هاوس
78%
تیلگرام
14%
فرقی به حالم نمیکنه جفتشو میام
Media is too big
VIEW IN TELEGRAM
#سی_پلاس_ساده_و_خوشمزه
#پیشرفته
قسمت 16: سازنده و مخرب و انواع آن ها، constructor , destructor
مدرس: محمدصالح حق محمدلو
🟢لطفا سوالات، کد و نظرات خود را برای ما کامنت کنید
طبق برنامه همیشه, هر هفته سه شنبه ها ساعت 9 شب ویس چت داخل چنل برگزار میشه در پیرامون مباحث کامپیوتر زبان ها و... به صورت آزاد , همه دوستان میتونن شرکت کنن و از تجربیات یا دانش خودشون در اختیار ما بزارن.🌹
ویس چت فردا در مورد تاریخچه و ظهور سی پلاس و کاربرد های اون هست
ساعت 9 شب منتظرتون هستیم😄👌🌹
Live stream started
Live stream finished (36 minutes)
Forwarded from Tp hunters (No Name!)
🟢💬درود دوستان، در حال تشکیل یک استارتاپ در حوزه blockchain هستیم.

از دوستانی که در این زمینه به صورت تخصصی‌کار میکنند( SWFT ) یا دوستانی که میخواهند بلاکچین را به صورت حرفه ای و تخصصی(تصمیم‌ مطمعن گرفتن) شروع کنند برای عضو شدن به آیدی زیر پیام دهند، دقت کنید شرایط سنی حتما زیر 23 سال هست
دوستان حتما باید به زبان انگلیسی مسلط باشن، و اهل تهران یا کرج(یا در غیر این صورت بتوانند در صورت نیاز به این دو شهر سفر‌کنند.
آیدی جهت ارتباط:
@systemchemist
(احتمال زیاد این پروژه در آینده توسط بانک مرکزی و وزارت ارتباطات پوشش داده شود)
#نکته
در مهندسی نرم افزار یه نکته بسیار مهمی برای بهینه کردن برناممون داریم که مربوط به رشته ها و string میشه(وقتی بخوایم یک رشته رو به ورودی یک تابع پاس بدیم) کد زیر رو ببینید:
Void set(string name){
Firstname = name;}

این کد بهینه نیست ، دلیلش هم اینه که از آرگومان name دوبار کپی ایجاد میشه یک بار داخل ارسال پارامتر، یک بار هم داخل انتساب اون به firstname ، برای اینکه این اتفاق نیفته میایم با refference همرو یه پارامتر فرض میکنیم😃 پس کد درستمون این شکلی میشه، وقتی بخوایم داخل تابع انتساب رشته ای بدیم
void set(const string &name){
Firstname=name;}

دقیقا ورودی مثل کپی کانستراکتوره.
سوال: حالا یه سوال اینجا پیش میاد زرنگاتون بگید ببینم، چرا این اتفاق اینجا میفته؟ مثلا برای استرینگ میفته برای int نه نیازی نیست😃 منتظر جوابتون هستم😉
🟢لطفا سوالات، نظرات و کد های خود را برای ما کامنت کنید.
جواب در کامنت قرار داده شد
⭕️ کد نویسی تمیز یا clean code:

برنامه نویسی و کد زدن شامل ۳ بخش اصلی می‌شود:

- درستی و کارآمدی یا correctness
- طراحی و نقشه یا design
- شیوه‌ نگارش یا style

از بین موارد بالا، اولویت با درستی کد و بعد از آن، اولویت با طراحی کد می‌باشد.
بنابراین شاید اینطور به نظر برسد که استایل کد اهمیت چندانی ندارد!
خب باید عرض کنم که این طرز تفکر کاملاً اشتباهه و اگر می‌خواهید که برنامه‌نویس خوبی بشید لازمه که هر ۳ مورد رو رعایت بفرمایید.
خب برویم سراغ معرفی این موارد:

correctness

اصلی ترین و مهم ترین بخش یک برنامه، درستی آن می‌باشد؛ یعنی بعد از آنکه ورودی را وارد کردیم، برنامه بر اساس انتظار ما عمل کند و خروجی مناسب را نمایش دهد.
----------------------------------------
🐆 design 🐌

بعد از کارآمدی باید بررسی کنیم که سرعت اجرای کد ما مطلوب است یا خیر.
اگر جواب منفی بود، احتمالاً کد شما بهترین طراحی ممکن را نداشته و باید به فکر یه راه جدید باشید!
طراحی در برنامه نویسی یعنی همون الگوریتم یا راه‌حلی که برای حل مسئله ازش استفاده می‌کنیم.
----------------------------------------
👨🏻‍💻 style 👩🏼‍💻

و اما بخش استایل که خیلی بهش توجه نمیشه و اهمیت آن زمانی مشخص می‌شود که بخواهیم در یک تیم، استارتاپ و یا شرکت مشغول به کار شویم و مجبور می‌شویم کد همکارمون رو ادامه بدیم و یا همکارمون کد ما رو ادامه بده و وای از اون روزی که کد استایل خوبی نداشته باشه!
استایل به طور کلی یعنی جوری کدمون رو نگارش کنیم که استاندارد باشه و برای بقیه قابل فهم باشد.
----------------------------------------
از این پس نکات مربوط به کدنویسی تمیز با #clean_code، به چنل اضافه خواهد شد.

🟡 منتظر سوالات و نظرات شما هستیم.
@tphunterscpp
ویس چت امشب ساعت ۹ در پیرامون امنیت فضای سایبری خواهد بود👌
منتظر شما هستیم😃
Live stream started
Live stream finished (46 minutes)
💬 #چالش
برنامه ای بنویسید که به ازای هر کلمه n حرفی که از کاربر دریافت میکند؛ n کلمه چاپ شود؛ بطوریکه هر بار یک حرف از اول کلمه که قبلا حذف نشده حذف می شود سپس حرف بعدی کلمه جایگزین حرف حذف شده، می شود.(برای درک بهتر سوال به عکس بالا مراجعه کنید)

🟥درجه سختی: آسان
🟢لطفا سوالات، نظرات و کد های خود را برای کامنت یا داخل گروه کنید.