ایجاد پرسش های linq به صورت پویا

مقدمه

حتما تا به حال به این مسئله بر خورده اید که در برنامه ی نیاز به فیلتر کردن یک سری اطلاعات با استفاده از پارامتر های ورودی کاربر وجود داشته باشد. به طور مثال نیاز به جستجوی کالاها در پایگاه داده بر اساس قیمت یا اندازه یا سال ساخت یا دیگر خصوصیات آن، باشد. و بعضی از این پارامترها به صورت اختیاری ظاهر خواهند شد. در اینگونه مواقع یکی از راههایی که به ذهن می‌رسد این است که کد پرسش sql مربوط به جستجو را به صورت پویا و با در نظر گرفتن ورودی های کاربر درست کنیم. این راهی است که خیلی از ما معمولا از آن استفاده می‌کردیم. ولی وقتی از تکنولوژی ای مانند linq to sql برای ارتباط با پایگاه داده استفاده می‌کنیم و نیاز داریم اطلاعات بازگردانده شده از طریق پرسش به صورت تعریف نوع شده باشند، این روش چندان جالب به نظر نمی‌رسد. به طور مثال وقتی قصد داریم روی جدول products در یک datacontext یک پرس Linq اجرا کنیم، باید با توجه به ورودی‌های کاربر آن پرسش linq را تولید کنیم. (به زبان کاملا ساده!)

به طور مثال می‌خواهیم پرسشی به صورت زیر را در نهایت روی context مورد نظر خود اجرا نماییم.

ادامه در فایل پی دی اف ….

درس سوم برنامه نویسی ++C – ساختارها

سلام
این هفته درس سوم از مجموعه دروس را در اختیار شما قرار میذارم. به این دلیل که فهم درس سوم در این مرحله راحتتره و مطالب مربوط به درس دوم احتمالا ۲ هفته زمان خواهد برد. زیرا درس دوم شامل همه ی مطالب مربوط به حلقه های تکرار و دستورات شرطی در ++C است.

این جلسه تمرینی در آخر مطالب در نظر گرفته ام که امیدوارم حتما برنامه خواسته شده در تمرین رو بنویسید.

فایل مربوط به این درس را از اینجا دانلود کنید.
با آرزوی موفقیت

معرفی کلاس Lazy در دات نت ۴

 

کلاس Lazy

با سلام

احتمالا تا به حال این سوال در ذهن شما مطرح شده که آیا امکان دارد که ایجاد یک متغیر را تا زمانی که آن متغیر مورد استفاده قرار گیرد به تعویق اندازیم یا نه. این وضعیت در مواقعی نمود بیشتری پیدا میکند که متغیر یا فعالیت مرتبط با آن به نسبت سنگین باشد. در .net4 این امکان بوسیله کلاسی به نام lazy در فضای نام System ایجاد شده است. متغیری که با استفاده از کلاس مذکور اعلان و تعریف می شود هنگامی بوجود می آید (منظور از بوجود آمدن در این جا این است که به طور واقعی و به اندازه مورد نیاز فضای حافظه دریافت کند یا فعالیت مورد نظر همراه آن اجرا شود) که دسترسی که مقدار آن متغیر انجام شود (lazy<T>.Value) یا متد Lazy<T>.ToString از متغیر مربوطه فراخوانی شود.

مثال زیر نحوه استفاده از این کلاس را مشخص می نماید. برای درک بهتر این مثال نیاز است که مفاهیمی همچون delegate و anonymous function آشنایی داشته باشید.
تابع PrintSystemInfo در این برنامه عمل استفاده از متغیر را به صورت ساده انجام می دهد.تکه کد بالا نحوه ایجاد کردن یک شی از کلاس Lazy را نمایش میدهد. کلاس Lazy به صورتی است که باید نوع متغیری را که نیاز به ایجاد دیر هنگام داریم را مشخص کنیم. در اینجا نوع ما لیستی از رشته ها است (List<string> processes) تابع ایجاد کننده ای که در اینجا استفاده کرده ایم، تابعی را (delegate مربوط به آنرا) که متغیر مورد نظر ما را تولید می کند به عنوان پارامتر دریافت می کند. این تابع باید در نهایت متغیر مورد نظر ما را به عنوان خروجی بازگرداند.

 

این تابع پارامتر ورودی هم نوع با متغیر تعریف شده ما با استفاده از کلاس Lazy دریافت می کند (Lazy<List<string>> processNames). عمل دسترسی به مقدار متغیر و در نتیجه ایجاد آن متغیر به صورت زیر انجام می گیرد.
کد برنامه مثال را از اینجا دانلود کنید…در واقع در اولین دسترسی به این متغیر با استفاده از روش بالا متد مربوط به ایجاد آن متغیر اجرا شده و متغیر به صورت واقعی ایجاد می شود.

موفق و پیروز باشید…

شروع دوره آموزش برنامه نویسی با ++C

به نام خداوند بخشنده و مهربان

محتوای کلاس آنلاین آموزشی زبان ++C به صورت زیر است.

۱)‌ در هر جلسه از آموزش شما یک فایل با فرمت پی دی اف (در صورت آماده شدن امکانات فایل های تصویری) دریافت کرده و مطالعه می فرمایید.
۲)‌هر جلسه آموزشی حاوی یک سری آزمون های مربوط به آن جلسه می باشد که اکثرا به صورت پروژه های برنامه نویسی خواهند بود.(پروژه های عزیزانی که آنها را انجام داده اند در مقاطع مختلف به روی سایت قرار خواهد گرفت. )
۳) آزمون نهایی مربوط به درس که به صورت پروژه برنامه نویسی خواهد بود
۴)‌در طی کلاس های آموزشی یک یا پروژه برای داوطلبین در نظر گرفته خواهد شد که مطالب آموخته شده خود را در آن پروژه پیاده خواهند کرد و در اتمام کلاس ها انشاالله برنامه نویسان شرکت کننده در این دوره دارای محصول تولیدی خود خواهند بود. که به نام آنها روی اینترنت قرار خواهد گرفت.

تاریخ شروع دوره سی ام مهر ماه ۹۰
تاریخ اتمام دوره سی ام دی ماه ۹۰
هر هفته ۱جلسه ارائه خواهد شد.

فایل های مرتبط با دوره در هر دو سایت f-bekran.ir و ba-da.ir در دسترس خواهد بود.

www.ba-da.ir/forum/viewtopic.php?p=2127#2127

به امید دیدار!

کلاس هایی ساده برای ایجاد و استفاده از مجموعه ها در net.

برای استفاده از امکان ایجاد مجموعه ها و استفاده از عملگر های مجموعه ای در حال حاضر چند کتابخانه وجود دارد. که با استفاده از امکانات موجود در net. به این کار میپردازند. لیست این کتابخانه و مقالات رو در ادامه خواهید دید.

نام مقاله یا کتابخانه لینک دسترسی
Add Support for “Set”Collections to .NET http://www.codeproject.com/KB/recipes/sets.aspx
کلاس HashSet در net4.

http://msdn.microsoft.com/en-us/library/bb495294.asp

این فکر ۳ سال در ذهنم بود که یک کلاس ساده برای استفاده از مجموعه ها بنویسم! کلاس های موجود در لیست بالا کلاس های کارآمد و مناسبی برای فعالیت های مجموعه ای در .net هستند. ولی کلاس نوشته شده توسط من بیشتر جنبه ی آموزشی دارد. و برای فهم عملکرد آن نیازی به دانش چندانی از .net نیست.

… ادامه در فایل  pdf ….

فایل حاوی مستندات و سورس برنامه و کتابخانه در لینک زیر قابل دسترسی است…

صفحه ی پروژه در codeplex

محاسبات علمی در متلب یا دات نت؟

از لحاظ فنی مقایسه کردن این دو باهم کار چندان مناسبی نیست. متلب در وهله ی اول یک نرم افزار برای شبیه سازی و فعالیت های مربوط به محاسبات علمی است. برنامه متلب طی سالهایی که در حال توسعه و گسترش بوده به یک مجموعه در هم تنیده از نرم افزار و رابط های گرافیکی و یک سری امکانات اسکریپت نویسی تبدیل شده است. این مجموعه ابزارهای قدرتمندی را در اختیار محققان گذاشته تا بدون نیاز به دانش برنامه نویسی و مطالعه ی تکنولوژی های مختلف، به کار تحقیق یا پیاده سازی بپردازند. در اینکه متلب از لحاظ سادگی در استفاده یک شاهکار به حساب میاید شکی نیست. البته شایان ذکر است که متلب تنها برنامه برای محاسبات علمی و تحقیقاتی نیست. این نرم افزار معادل هایی دارد که قویترین آنها، نرم افزار متن باز اوکتاو (gnu octave) می باشد. این نرم افزار کاربرانی به وسعت متلب ندارد؛ ولی یکی از قویترین نرم افزار ها در این ردیف محسوب می شود…….
ادامه در فایل pdf

n وزیر در متلب

کد متلب برای حل مسئله ی n وزیر با استفاده از روش بکترکینک…

function R = MainNQueen(n)
%MainNQueen Compute NQueen with backtracking algorithm
% n is number of queens
% example: n = 8;
global COL ; % vector of queens column of queens
COL = zeros(n, 1);
Queens(0, n);
R = COL;
end
function returnValue = Queens(index , n)
global COL
if promising(index) == 1
if index == n
returnValue = COL;
else
for j=1:n
COL(index+1) = j;
Queens(index + 1, n)
end
end
end
end

function returnValue = promising(i)
global COL
swich = 1;
k = 1;
while (k < i) && (swich == 1)
if (COL(i) == COL(k)) || (abs(COL(i) - COL(k)) == i - k)
swich = 0;
end
k = k + 1;
end
returnValue = swich;
end


mفایل مربوطه رو هم از اینجا دانلود کنید.