هر آنچه به شما نمی‌آموزند...

۴ مطلب در ارديبهشت ۱۳۹۵ ثبت شده است

اشتباه رایج در مقداردهی اولیه توسط کانستراکتور

یکی از مهمترین ویژگی‌های ++C کارایی و سرعت آن است، اما این امر بخوبی میسر نخواهد شد مگر آنکه ما نیز به عنوان برنامه‌نویس نقش خود را به درستی ایفا کنیم.

امروز میخواهیم یکی از رایج‌ترین اشتباهات برنامه‌نویسان ++C (بخصوص برنامه‌نویسانی که از زبان دیگری به این زبان روی آورده‌اند) را به هنگام ایجاد کانستراکتور یک کلاس تشریح کنیم. فرض کنید کلاسی به نام شخص (Person) داریم که Member Variableهای آن عبارتند از: نام(firstname)، نام خانوادگی (lastname) و سن (age).

این کلاس را به صورت زیر مینویسیم:

class Person
{
private:
std::string firstname;
std::string lastname;
int age;
public:
Person (std::string pFirstname, std::string pLastname, int pAge)
{
firstname = pFirstname;
lastname = pLastname;
age = pAge;
}
};

شما کد را کامپیایل و اجرا میکنید، هیچ خطا یا هشداری داده نمیشود و کد هم به درستی و بدون کوچکترین مشکلی اجرا میشود. اما اگر این نمونه کد را به یک برنامه‌نویس خبره در زبان ++C نشان دهید به شما خواهد گفت این کد درست نیست.

اون موقع هست که از خودتون میپرسید وقتی کد داره به درستی اجرا میشه مشکل من کجاست؟

ادامه مطلب...
۲۴ ارديبهشت ۹۵ ، ۲۳:۴۴ ۰ نظر موافقین ۲ مخالفین ۰

محاسبه ظرفیت واقعی پاوربانک

شاید برای شما پیش اومده باشه که پاوربانک مثلاً 10.000 میلی آمپری خریدید و انتظار دارید باتری گوشی 1500 میلی آمپری شما رو رو حداقل 6 بار بطور کامل از صفر تا 100 پر کنه، اما چیزی که در عمل مشاهده میکنید رقمی پایین تر از حد انتظار شماست.

علت این موضوع چیست و ظرفیت واقعی یک پاور بانک چگونه محاسبه میشود؟ اگر این سوال برای شما هم پیش آمده و قصد خرید پاوربانک جدیدی را دارید، در این پست با ما همراه باشید.

ادامه مطلب...
۱۶ ارديبهشت ۹۵ ، ۱۰:۰۰ ۷۸ نظر موافقین ۲ مخالفین ۰

چرا کتابخانه استاندارد iostream در ++C بدرستی خطاها را نمایش نمیدهد؟

یکی از مواردی که برنامه‌نویسان ++C بخصوص برنامه‌نویسانی که تازه به این زبان روی آورده‌اند با آن مواجه هستند این است که به هنگام کار کردن با کتابخانه iostream نمیتوانند به درستی خطاها (Exception) را پوشش دهند. بطور مثال در کد زیر قصد داریم فایلی که وجود ندارد را باز کنیم و با استفاده از بلاک Try...Catch خطاهای احتمالی را پوشش دهیم:

#include <iostream>
#include <fstream>
using namespace std;

int main() {
ifstream file;
try {
file.open("IceCat.ir");
while (!file.eof()) {
cout << file.get();
}
}
catch (...) {
cout << "Error openning file..." << endl;
return 1;
}
file.close();
return 0;
}

اما با اجرای کد بالا با اینکه از بلاک Try...Catch برای هندل کردن Exceptionهای احتمالی استفاده کرده‌ایم،  مشاهده میکنیم که در صورت بوجود آمدن خطا (مانند وجود نداشتن فایل) بطور پی در پی عدد 1- در کنسول چاپ خواهد شد.

در این پست به علت بروز این امر و نحوه حل آن خواهیم پرداخت.

ادامه مطلب...
۰۶ ارديبهشت ۹۵ ، ۲۳:۴۰ ۲ نظر موافقین ۲ مخالفین ۰

وی‌بی دات نت یا سی شارپ؟

یکی از مواردی که بنده خودم زیاد با اون مواجه بودم اینه که بسیاری از برنامه‌نویسان ایرانی، زبان وی بی دات را زبانی کم قدرت میداند. اگر شما نیز جز آن دسته از دوستان هستید باید به صراحت به شما بگویم که سخت در اشتباه هستید! چراکه هر آنچه که در #C قابل پیاده‌سازی باشد در VB.Net هم قابل پیاده‌سازیست و قدرت این دو زبان به دلیل استفاده از یک Framework مشترک عملاً تفاوتی ندارد.

اگر به تازگی قصد یادگیری یک زبان برنامه‌نویسی را دارید و نمیدانید کدامیک از زبان‌های ذکر شده قدرتمندتر است و یا اگر برنامه‌نویس #C هستید و میخواهید اطلاعات خود را بالا ببرید، پیشنهاد میکنم حتماً در ادامه این مقاله با ما همراه باشید.

ادامه مطلب...
۰۱ ارديبهشت ۹۵ ، ۰۱:۰۰ ۴ نظر موافقین ۴ مخالفین ۰