تبليغاتX
,علمی,کتاب,مجله,مقاله,خبری,برنامه,جزوه,هک,دانلود,science
در کامپيوتر براي ذخيره‌سازي داده‌ها از روش‌هاي متفاوتي استفاده مي‌شود. در شماره‌هاي پيشين انواع داده (Data type) را معرفي کرديم، در اين شماره نيز قصد داريم يک نوع داده انتزاعي (Abstract) ديگر را که کاربرد زيادي در پياده‌سازي پايگاه‌هاي داده دارد، معرفي کنيم.

درخت يک ساختار مرتبه‌اي دارد که از اتصال چند گره بهم به‌وجود مي‌آيد. درخت‌ها انواع متفاوتي دارند، در اين مقاله يکي از انواع آن را به نام درخت جستجوي دودويي (Binary search tree) را به‌همراه پياده‌سازي آن بررسي مي‌کنيم.

درخت جستجوي دودويي چيست؟

اين درخت خود از درخت دودويي مشتق شده است. درخت دودويي درختي است که هر گره آن دو فرزند دارد. درخت جستجوي دودويي يک تفاوت اصلي با درخت دودويي دارد. در درخت جستجوي دودويي (برخلاف درخت دودويي که ترتيب ذخيره‌سازي داده‌ها در آن مهم نيست)، مقدار فرزند راست بايد از گره پدر بيشتر باشد و مقدار فرزند چپ از گره پدر کوچکتر. اين تفاوت باعث افزايش سرعت جستجوي اطلاعات در درخت جستجو دودويي مي‌شود.

پياده‌سازي

براي پياده‌سازي درخت جستجو دودويي نياز به تعريف ساختار زير داريم:

class BSTnode{

public:

   int data;

   BSTnode *left, *right;

   BSTnode(){

      left = right = NULL;  }

   BSTnode(int dat, BSTnode *lft

=NULL, BSTnode *rgt=NULL){

      data = dat;

      left = lft;

      right = rgt; }

}

هر شيء از کلاس BSTnode نمايانگر يک گره از درخت است. براي ساخت درخت ابتدا بايد ريشه آنرا تعريف کنيم. ريشه، اولين عضو درخت است و هيچ فرزندي هم ندارد. بنابراين دستور توليد آن به‌اين صورت مي‌شود:

BSTnode *root = new BSTnode(data,NULL,NULL);

براي درج عناصر بايد قاعده بالا را رعايت کنيم، براي افزودن گره به درخت از تابع زير استفاده مي‌کنيم:

void insert (int el, BSTnode* &myroot){

if (myroot == NULL){

   myroot = new BSTnode (el,NULL,NULL);

   cout «« el «« " inserted\n"; }

else if (el « myroot-»data){

   insert(el , myroot-»left); }

else if (el » myroot-»data){

   insert(el,myroot-»right);}

}

همان‌طور که مي‌بينيد، اگر مقدار myRoot تهي باشد، ابتدا مقداردهي مي‌شود، سپس گره مشخص در جاي خود قرار مي‌گيرد، براي ساخت درخت، زماني که درخت هيچ داده‌اي را ذخيره نکرده است، مقدار myRoot برابر ريشه درخت است.

پيمايش درخت

منظور از پيمايش درخت نمايش داده‌هاي درون درخت و پردازش آنها است. سه روش براي پيمايش درخت وجود دارد:

1- روش پيشوندي: ابتدا پردازش گره و سپس پيمايش پيشوندي فرزند چپ، سپس پيمايش پيشوندي فرزند راست.

?- روش ميانوندي: ابتدا پيمايش ميانوندي فرزند چپ، سپس پردازش گره، و پس از آن پيمايش پسوندي فرزند راست.

?- روش پسوندي: ابتدا پيمايش پسوندي فرزند چپ، سپس پيمايش پسوندي فرزند راست، پس از آن پيمايش پردازش داده.

جستجو در درخت جستجو دودويي

جستجو در درخت جستجوي دودويي سريع‌تر از جستجو در درخت دودويي است، به اين علت که فقط نيمي از درخت مورد بررسي قرار مي‌گيرد. به‌عنوان مثال شما دنبال داده‌اي به‌نام X هستيد. اگر مقدار X از ريشه بزرگتر باشد، فرزندان سمت راست و در غير اين‌صورت فرزندان چپ درخت را بررسي مي‌كنيد. نوشتن برنامه جستجو براي درخت جستجو دودويي اين‌گونه است:

bool search(int el, BSTnode* &start) {

   if (start != NULL){

      if (el « start-»data) {

         return search(el,start-»left); }

else if (el » start-»data){

         return search(el,start-»right); }

else{

      return true; }

return false;}

}

مقدار عمق درخت

براي اين کار از يک تابع برگشتي استفاده مي‌کنيم:

int depth(BSTnode* start){

if(start == NULL){

   return 0; }

else{

   return max(depth(start-»left),

   depth(start-»right)) + 1; }

}

خالي بودن يک درخت

اگر مقدار ريشه برابر تهي باشد يعني درخت خالي است. به‌همين ترتيب اگر مقدار leftChild برابر تهي باشد، درخت فرزند چپ ندارد و همين‌طور براي rightChild اگر برابر تهي باشد درخت فرزند راست ندارد. براي مطالعه بيشتر و دريافت متن برنامه به لينک زير برويد:

http://www.esnips.com/web/jamejam-click/

اميربهاالدين سبط‌الشيخ


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

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

Game Programming Golden Rules (Game Development Series)
Publisher: Charles River Media | ISBN: 1584503068 | edition 2005 | PDF | 383 pages

دانلود


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

نام کتاب: توسعه برنامه های حقیقت مجازی : مبانی طراحی تاثیر گذار

Developing Virtual Reality Applications: Foundations of Effective Design
Morgan Kaufmann | 2009 | ISBN: 0123749433 | 448 pages | PDF

 

دانلود


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

نام کتاب و مشخصات:

Beginning DirectX 10 Game Programming by Wendy Jones
Publisher: Course Technology PTR | Number Of Pages: 384 | ISBN-10: 1598633619

دانلود


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

دريافت دستورات در برنامه‌هاي مختلف، به‌شيوه‌هاي مختلف انجام مي‌پذيرد. ممکن است از طريق صفحه نمايش چند لمسي دستورات به برنامه وارد شود، ممکن است از طريق ماوس، و يا حتي ممکن است با تايپ دستورات، بخواهيم برنامه را کنترل کنيم.

کنترل برنامه‌ها با تايپ دستورات، زماني به‌کار مي‌آيد که دسترسي مستقيم يا دسترسي گرافيکي به برنامه نداريم و يا بايد از طريق کنسول با برنامه خود ارتباط برقرار کنيم و پاسخ را دريافت کنيم. در اين حالت، قابليت اجرا از طريق خط فرمان يک مزيت براي برنامه‌مان به‌حساب خواهد آمد.

در اين مقاله قصد نداريم به‌سراغ دستورات پيچيده برويم و تلاش بر اين است که با مفاهيم شي‌گراي فعلي، يک پارسر براي خط فرمان بنويسيم. با بسط و گسترش همين کدها مي‌توان هر برنامه‌اي را به موتور تشخيص دستور از راه خط فرمان مجهز کرد.

نخست آن‌که وجه شباهت تمامي دستورات با همديگر، اين است که همه‌شان داراي پارامترهاي ورودي هستند و همه آنها بايد به‌شيوه‌اي صحيح اجرا شوند. به‌عبارت ديگر وقتي دستوري وارد مي‌شود، بايد تشخيص داده شده، اجرا شده، و در صورت عدم شناسايي دستور، پيغام خطا ارسال کند. قدم نخست براي راه‌اندازي يک خط فرمان، توليد کلاسي پايه به‌صورت زير است:‌

 class baseCommand {

public :

          baseCommand(int argc,char** argv);

          baseCommand();

          virtual void execute();

          virtual bool contain(const char* arg);

          virtual void printHelp();

private :

          int argc;

          char** argv;

{

اين کلاس چيست و چه کاري قرار است انجام دهد؟

اين کلاس تمامي متدها و فيلدهاي مورد نياز براي اجرا و نگهداري هر دستور را در خود دارد، و به‌عبارت بهتر يک شي‌ از يک دستور است. بقيه دستورات از اين کلاس ارث بري مي‌کنند و مستلزم بازنويسي متدهايي هستند که به‌صورت مجازي (Virtual) تعريف شده‌اند. اين کلاس دو فيلد با دسترسي خصوصي (Private) دارد. دليل اين امر اين است که اشيا ديگر نيازي به دانستن مقدار آنها و ديدن آنها از يک شي ديگر ندارند و در واقع اين در اين فيلدها مشخص مي‌شود که چه دستوري چگونه بايد اجرا بشود. فيلد اول argc تعداد آرگومان‌هاي ورودي هر دستور را مشخص مي‌کند و فيلد argv يک آرايه دو بعدي از کاراکترها (آرايه‌اي از رشته‌ها) است، که شامل دستور و پارامترهاي ورودي آن دستور است.

اين کلاس دو سازنده دارد که يکي از آنها مقدارهاي argc و argv را از ورودي مي‌گيرد و ديگري هيچ آرگوماني را نمي پذيرد و از آن به سازنده پيش فرض (Default Constructor) ياد مي‌شود. متد execute دستور را اجرا مي‌کند و وظيفه آن مديريت اجراي صحيح دستور است. و  متد ديگر printHelp است، اين متد زماني اجرا مي‌شود که دستور با پارامتر /? اجرا شود و هدف آن نشان دادن اطلاعاتي در مورد دستور است. متد ديگر contain است اين متد بررسي مي‌کند آيا پارامتر خاصي در argv موجود است يا خير.

بسيار خب، حالا به يک فرمت کلي دست پيدا کرديم و مي‌دانيم براي پياده‌سازي هر دستور به چه چيزهايي نياز است و هر دستور بايد از چه الگويي بايد پيروي کند. حالا مي‌توان به‌شيوه‌اي ديگري به هر دستور نگاه کرد تا پياده‌سازي راحت‌تري داشته باشد. هر دستور يکسري پارامتر را به عنوان ورودي دريافت مي‌کند.  خوب هر پارامتر براي انجام عمل خاصي است، پس در کلاس‌هاي مربوط به هر دستور علاوه بر دستورات فوق بايد متدهايي براي انجام هر عمل نوشته شود. به‌طور مثال دستور Copy، اين دستور بايد دو پارامتر را به‌صورت پيش‌فرض دريافت کند. اولين پارامتر فايل منبع و دومي فايل مقصد را مشخص مي‌کند حال اگر دستور copy با فرمان /x اجرا شود بايد فايل منبع به مقصد منتقل شود و کپي گرفته نشود. بنابراين، دو متد به نام‌هاي CopyFile و MoveFile را بايد در کلاس مربوط به دستور copy بنويسيم که عمليات مربوطه را انجام دهند.

مشکلي که در اين ميان ممکن است رخ بدهد، اين است که متدهاي MoveFile و CopyFile‌را بايد به‌چه صورتي تبديل کنيم که امنيت کافي داشته باشد؟ آيا اين متدها private باشند يا public؟ از آنجا که اين متدها براي کلاس مربوط به دستور copy هستند پس بايد به‌صورت private تعريف شوند. اما اگر طور ديگري به اين دو متد نگاه کنيم، و اگر دستور ديگري داشتيم که نياز به کپي و کات کردن فايل‌ها داشت نتيجه چه مي‌شد؟ بايد اين متدها هر بار نوشته شوند؟ يا اينکه آنها را بصورت عمومي تعريف کنيم؟

اگر به‌صورت عمومي تعريف کنيم، طراحي ما غلط است چون ديگر کلاس‌ها نبايد متدهايي که براي اجراي پارامترهاي ورودي هر دستور هستند را ببينند، راه حل چيست؟مي‌توانيم با نوشتن يک کلاس جداگانه براي کارکردن با فايل‌ها، اين مشکل را حل کنيم. اين کار دو مزيت دارد:

1-  متدهاي CopyFile و MoveFile از سطح کلاس دستورها جدا خوهد شد و بطور مستقل کار مي‌کنند. اين کار debug (اشکال زدايي) برنامه را راحت‌تر و نگهداري کد را ساده‌تر مي‌کند.

در ضمن طراحي يکپارچه‌اي خواهيم داشت، بدين ترتيب کلاس File را براي کار با فايل‌ها را به‌صورت زير مي‌نويسيم:

class File{

          const static int BUF_SIZE = 4096;

public:

          static void Copy(char* source,char* destination);

          static void Move(char* source,char* destination);

          static void Delete(char* filename);

          static void Rename(char* oldname,char* newname);

          static bool Exist(char* filename);

          static void Create(char* filename,bool overwrite);

};

نيازي به توضيح در مورد متدهاي کلاس نيست، بسيار خوب پس پياده‌سازي متد execute از کلاس مربوط به دستور copy به صورت زير خواهد  شد:

          void execute(){     

                   if(this-»contain("/X") || this-»contain("/x")){

                             File::Move(this-»argv[1],this-»argv[2]);

                   }

                   else

                             File::Copy(this-»argv[1],this-»argv[2]);

}

حالا که موفق شديم کلاس مربوط به Copy را پياده کنيم، به بررسي کلاس ديگري مي پردازيم. اين کلاس براي ايجاد رابطه با کاربر مورد استفاده قرار مي‌گيرد، نام اين کلاس را Helper مي‌گذاريم، اين کلاس قرار است دستوراتي را که کاربر وارد مي‌کند، اعتبارسنجي کند و با توجه به دستورات وارد شده، عمليات مناسب را اجرا ‌کند. اين کلاس بصورت زير تعريف شده است :

class utility{

public :

          utility(char* command);

          utility();

          void Run();

private :

          char* command;

          char** argv;

          int argc;

          baseCommand* internaleCommand;

          void parse();

          void createCommand();

{;

اين کلاس شامل 3 فيلد است يکي argv وديگري argc که قبلا درمورد آنها و کاربردشان صحبت کرده‌ايم. ديگري يک شي از baseCommand. همانطور که گفتيم کلاس baseCommand کلاس پدر همه کلاس‌هاي مربوط به دستورات است و مقدار آن مي‌تواند تمامي دستورات را قبول کند، متد Run اين کلاس در واقع دستوري که کاربر وارد کرده است، را تجزيه و تحليل مي‌کند و فرمان مربوطه را اجرا مي‌کند. در اين متد ابتدا عبارت وارد شده توسط متد parse تجزيه و تحليل مي‌شود  و فيلدهاي argv و argc مقدار دهي مي‌شوند، و سپس متد createCommand اجرا مي‌شود و بر اساس مقدار argv فيلد internalCommand مقدار دهي مي‌شود و سپس متدexecute از کلاس baseComman اجرا مي‌شود. با اين کار دستور مورد نظر انجام شده و خروجي‌ها چاپ مي‌شود، تا اينجا ما موفق شديم دستوري را وارد و آن را اجرا کنيم. حال بگذاريد شرايطي را بررسي کنيم که ما بخواهيم دستورات را پست سر هم وارد كنيم و اينکار تا آنجا ادامه پيدا کند که کاربر دستور exit را وارد کند و از برنامه خارج شود (يعني يک محيط خط فرمان براي کاربر ايجاد کنيم)، وظيفه اين کار بر عهده متد main يا متد اجرايي برنامه است که به اين صورت پياده سازي شده است:
با اين پياده‌سازي، يک محيط خوب براي برنامه خود داريد که مي‌توانيد در آن دستورات مختلف را پياده کنيد. در اين مقاله، دستورات اجرايي، همان دستورات سيستم عامل ويندوز بود. آيا مي‌توانيد توابع و کلاس‌هاي داخلي سيستم خود را با استفاده از اين روش، راه‌اندازي و اجرا کنيد. موفق باشيد.

اميربهاالدين سبط‌الشيخ


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

Sams Teach Yourself Perl in 24 Hours

perl24
Publisher: Sams | ISBN: 0672327937 | edition 2005 | PDF | 665 pages | 6,7 mb

Learn Perl programming quickly and easily with 24 one-hour lessons in Sams Teach Yourself Perl in 24 Hours. The book’s step-by-step lessons teach you the basics of Perl and how to apply it in web development and system administration. Plus, the third edition has been updated to include five chapters on new technologies, information on the latest version of Perl, and a look ahead to Perl 6. Sams Teach Yourself Perl in 24 Hours focuses on real-world development, teaching you how to:
* Effectively use Perl for large development projects using Perl modules
* Use Perl for data processing
* Utilize Perl as a “glue” language with other programming languages
* Use Perl as a web development language


Dowload from Depositfiles


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

حتما تا به‌حال دقت کرده‌ايد که مغز انسان چه پيچيدگي‌هاي عجيبي دارد. به‌سادگي قادر است چيزهايي را که هيچ ربطي به‌هم ندارند، به‌هم ربط دهد، تعداد و مقدار را به‌سادگي کنار هم قرار دهد يا حتي با هم جمع کند. زبان‌هاي شيء‌گرا1 که با هدف پياده‌سازي مدل طبيعي پا به عرصه وجود گذاشته‌اند نيز در اصل به‌دنبال ساده‌سازي کدنويسي و پياده‌سازي هر چه بهتر دنياي واقعي هستند.

بياييد يک تلفنچي را مثال بزنيم؛ اين شخص ممکن است به‌خاطر فشار شديد کاري در يک روزگرم تابستاني، به‌شدت از کوره در رفته باشد و حتي چند تماس را با بدخلقي تمام پاسخ داده باشد، اما وقتي يک تماس شخصي از سوي يکي از اعضاي خانواده‌اش دريافت مي‌کند، اخلاق خوشي از خود نشان مي‌دهد و صورت ديگري از خود را بروز مي‌دهد. اين قابليت، يعني چندريختي2 يکي از ويژگي‌هاي پياده‌شده در برنامه‌نويسي شيء‌گرا است.

انواع مختلفي از چندريختي ممکن است وجود داشته باشد، يکي از آن‌ها که مثال زديم، بازنويسي رفتار3 است. يکي ديگر از انواع بازنويسي، بازنويسي عملگرها4 است که به‌آن بيشتر خواهيم پرداخت.

هدف از بازنويسي عملگرها، تغيير رفتار عملگرهاست، تا جايي که عملگرها با توجه نوع عملوندها رفتاري متفاوتي از خود نشان بدهند. برخي از اين عملوندها را خود زبان برنامه‌نويسي بازنويسي کرده است، اما برخي ديگر را برنامه‌نويس به‌دلخواه خود بازنويسي مي‌کند.

بگذاريد يک مثال بزنيم تا بهتر مشخص شود چه کاري مي‌خواهيم انجام بدهيم. عملگر جمع (+) را فرض کنيد. در زبان سي‌شارپ اگر 2 عملوند عدد صحيح از نوع int باشد، خروجي int خواهد بود و 2 عدد را جمع مي‌کند و حاصل را بر مي‌گرداند، حالا اگر 2 عملوند از نوع رشته متني باشند، چه؟ در اينجا زبان سي‌شارپ يک بازنويسي عملگر دروني دارد و در آن، 2 رشته ورودي را با هم ترکيب مي‌کند و نتيجه به‌صورت يک رشته‌متني باز مي‌گردد، مثلا اگر بنويسيم: "Jamejam" + " Click!" خروجي عبارت Jamejam Click! خواهد بود، در ادامه نحوه بازنويسي عملگرها را براي کلاسي که خودمان تعريف کرديم بررسي مي‌کنيم.

پيش از اينکه نحوه بازنويسي کردن عملگرها را توضح دهيم، لازم است ببينيم کدام عملگرها قابليت بازنويسي دارند:

عملگرهاي دودويي (عملگرهايي که به دو عملوند (Operand) براي اجرا شدن نياز دارند)، مانند: + (جمع)، - (تفريق)، *، /، %، &، |، ^، «« و »» .

عملگرهاي يگاني (عملگرهايي که تنها به يک عملوند نياز دارند)، مانند: + (مثبت)، - (منفي)، !، ~، ++، --، true و false.

بقيه عملگرها قابليت باز نويسي ندارند ولي بعضي از آن‌ها را مي‌توان به‌صورت ديگري بازنويسي کرد؛ مثلا عملگر += خلاصه عملگر + است، که خود + قابليت بازنويسي را دارد يا عملگر () (تبديل نوع يا cast) ، قابل بازنويسي را ندارد، ولي شما با استفاده از explicit و implicit که هر دو از keywordهاي سي‌شارپ هستند مي‌توانيد آن‌را بازنويسي کنيد.

کار خود را با يک مثال شروع مي‌کنيم. ما يک کلاس به اسم Matrix تعريف کرديم. اين کلاس عمليات خاصي را  روي يک ماتريس انجام مي‌دهد. مثلا دترمينان يک ماتريس را حساب مي‌کند، يا 2ماتريس را جمع يا ضرب مي‌کند و ... . حال فرض کنيد بدون استفاده از بازنويسي عملگرها بخواهيم اين کلاس را بنويسيم. براي جمع 2 ماتريکس، 2 روش وجود دارد، نخست اين‌که يک متد استاتيک تعريف کنيم تا 2 ماتريس را جمع کند و حاصل را به‌صورت يک ماتريس برگرداند. اين متد به‌صورت زير خواهد بود:

System.Math.Matrix mx1 =

new System.Math.Matrix(4,5);

System.Math.Matrix mx2 =

new System.Math.Matrix(4,5);

System.Math.Matrix result =

System.Math.Matrix.Add(mx1, mx2);

اين روش اشتباه نيست، اما بگذاريد کمي آن را به‌تر بنويسيم. در کلاس ماتريکس متد Add را از حالت استاتيک در مي‌آوريم، و به‌جاي دريافت 2 پارامتر ورودي، يک پارامتر ورودي به‌آن مي‌دهيم و با خودش جمع مي‌کنيم:

mx1.Add(mx2);

به‌هرحال اين هم يک روش است که به‌نظر ساده‌تر و منطقي‌تر مي‌رسد. حتي از اين هم مي‌توان زيباتر نوشت. اينجا همانجايي است که بازنويسي عملگرها وارد صحنه مي‌شود:‌

mx1 = mx1 + mx2;

اگر بتوانيم ماتريکس‌ها را همان‌طور که روي کاغذ مي‌نويسيم و جمع مي‌زنيم، در کد خود بنويسيم،‌ هم خواندن کد براي ما ساده‌تر مي‌شود، هم در کار تيمي جلوه بهتري دارد.

ما چه کار خواهيم كرد؟ عملگر + (جمع) را براي کلاس ماتريس خودمان بازنويسي مي‌کنيم و به کامپايلر نشان مي‌دهيم که اگر 2 عملوند عملگر + از جنس ماتريس بود، فلان کار را انجام بده. که اين فلان کار يعني 2 ماتريس را با هم جمع کن و خروجي را از نوع ماتريکس برگردان. خوب اين هم کار ما را خيلي ساده‌تر کرد، البته بيشتر براي کساني که از کلاس ما استفاده مي کنند ساده شده است، حال بررسي مي‌کنيم ببينيم اين عمل چگونه اتفاق مي‌افتد يعني کامپايلر از کجا مي‌فهمد که بايد هنگام برخورد با +، به‌سراغ متد خاصي برود و آن را اجرا کند؟ بياييد متدي را تعريف کنيم:

public class Matrix {

   public static Matrix operator +

   (Matrix mx1, Matrix mx2)

   return mx1.Add(mx2); }

همان‌طور که مي‌بينيد، در اين جا ما عملگر + را به‌صورت عملگري دوگانه تعريف کرده که 2 پارامتر mx1 و mx2 را دريافت مي‌کند و mx1 را با mx2 جمع کرده و نتيجه را باز مي‌گرداند (با استفاده از متد فرضي Add).

و در نهايت کد بسيارساده‌اي خواهيم داشت. اما فراموش نکنيد، استفاده از بازنويسي عملگرها، کد را به‌شدت ساده مي‌کند، اما همين سادگي مي‌تواند کار دست برنامه‌نويس بدهد. به‌فرض، اگر عملگر + را براي يک پارامتر از هر نوعي و يک پارامتر از نوع int بگيريد  به‌خاطر تقدم و تاخر پارامترها، C+2 مجاز است،‌ اما 2+C غير مجاز است چون در ترتيب آرگومان‌ها، بازنويسي‌ ندارد. اين اشتباهات ساده ممکن است صدمات بزرگي به کد نوشته شده بزند و آن را کاملا غيرقابل اعتماد بکند.

پي‌نوشت‌ها

1. Object Oriented

2. Polymorphism

3. Method Overloading

4. Operator Overloading

اميربهاالدين سبط‌الشيخ


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

C# Network Programming

<!--enpts-->coversybex.jpg<!--enpte-->

Richard Blum
Publisher: Sybex | ISBN: 9780782141764 | 672 pages chm | 6.14 mb

On its own, C# simplifies network programming. Combine it with the precise instruction found in C# Network Programming, and you’ll find that building network applications is easier and quicker than ever.

This book helps newcomers get started with a look at the basics of network programming as they relate to C#, including the language’s network classes, the Winsock interface, and DNS resolution. Spend as much time here as you need, then dig into the core topics of the network layer. You’ll learn to make sockets connections via TCP and “connectionless” connections via UDP. You’ll also discover just how much help C# gives you with some of your toughest chores, such as asynchronous socket programming, multithreading, and multicasting.

Network-layer techniques are just a means to an end, of course, and so this book keeps going, providing a series of detailed application-layer programming examples that show you how to work with real protocols and real network environments to build and implement a variety of applications. Use SNMP to manage network devices, SMTP to communicate with remote mail servers, and HTTP to Web-enable your applications. And use classes native to C# to query and modify Active Directory entries.

Rounding it all out is plenty of advanced coverage to push your C# network programming skills to the limit. For example, you’ll learn two ways to share application methods across the network: using Web services and remoting. You’ll also master the security features intrinsic to C# and .NET–features that stand to benefit all of your programming projects.

Download from Rapidshare


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes



بخش همکاري‌هاي MSDN‌ (Microsoft Developer Network) اعلام کرد که پروژه جديدي را آغاز کرده است که در آن، مي‌توان زبان برنامه‌نويسي PHP را به کتابخانه .NET پيوند داد. در واقع، اين پروژه شامل ارائه سرويس‌هاي داده‌اي مبتني بر ADO.NET مي‌شود. اين جعبه ابزار برنامه‌نويسان PHP را قادر مي‌سازد از سرويس‌هاي داده‌اي ADO.NET راحت‌تر استفاده کنند. اين پروژه، پروژه‌اي منبع باز است که توسط مايکروسافت بنيان نهاده شده است و توسط شرکت Persistent Systems توسعه مي‌يابد و در وب‌سايت کدهاي منبع‌باز دات‌نتي، CodePlex در آدرس زير قابل دسترسي است:

http://www.phpdataservices.codeplex.com

شرح مختصر در مورد سرويس‌هاي داده‌اي ADO.NET

سرويس‌هاي داده‌اي ADO.NET (که قبلا با عنوان پروژه آستوريا شناخته مي‌شد)، فناوري است براي استفاده از انواع مختلفي از داده‌ها از طريق رابط سرويس REST. منابع‌ داده‌اي مي‌توانند پايگاه‌هاي داده‌، فايل‌هاي XML و ... باشند. سرويس‌هاي داده‌اي ADO.NET آدرس‌دهي قابل انعطافي دارند و مي‌توان از طريق قراردادهاي URL، به داده‌ها دسترسي پيدا کرد. همچنين مي‌توان امور عادي منابع‌داده‌اي را (از جمله ايجاد/خواندن/به‌روزرساني/حذف) به‌سادگي انجام داد.

در ويژوال استوديو 2008 سرويس‌پک 1، و قطعا ويژوال استوديو 2010، به‌طور کامل از ايجاد و مصرف منابع داده‌اي مختلف پشتيباني مي‌شود.

معماري ابزارهاي PHP و سرويس‌هاي داده‌اي ADO.NET

بايد دو ديدگاه ابزارهاي PHP را در نظر گرفت:

1- زمان طراحي:

مجموعه‌ابزار PHP کلاس‌هاي مبتني بر Proxy را با فراداده‌هاي سرويس‌هاي داده‌اي ADO.NET (که در ويژوال استوديو ايجاد شده است) پيوند مي‌زند.

2- زمان اجرا:

از کلاس پراکسي PHP يک تابع صدا زده مي‌شود و بعد برنامه به‌سادگي از سرويس‌هاي داده‌اي ADO.NET استفاده مي‌کند. کلاس‌هاي پراکسي و کتابخانه‌هايي که در اين جعبه‌ ابزار وجود دارند، با استفاده از سرويس‌هاي مبتني بر REST که در پروتکل HTTP فعاليت مي‌کنند، ارتباط ميان سرويس‌هاي داده‌اي ADO.NET و نرم‌افزار PHP را برقرار مي‌کنند.

براي تست اين سرويس، کافي است از سرويس‌هاي داده‌اي پيش‌فرض ADO.NET استفاده کنيم و ديتابيس معروف Northwind‌ را تست کنيم. با کمک پياده‌سازي درست سرويس، از طريق URL مي‌توان به نتيجه XML معتبر رسيد.

مرحله بعدي استفاده از فايلي است که سرويس‌هاي داده‌اي را کنترل کرده و فايل‌هاي کلاس پراکسي را براي اتصال به اين ديتابيس بسازد:

از اين به بعد تنها کافي است کد کلاس پراکسي را در بخشي از برنامه که بايد اجرا شود، فراخواني کرده و بعد آدرس سرويس را تعيين کرد.

بعد از آن، مي‌توان از کد استفاده کرد تا داده‌ها را از منابع مختلف جمع‌آوري نمود.

يک نمونه از خروجي کد در PHP به صورت زير خواهد بود:

اميربهاالدين سبط الشيخ


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

بسياري از برنامه‌‌نويسان هيچ‌گاه از نسخه Express ويژوال استوديو استفاده نمي‌کنند، در صورتي که اغلب‌شان تفاوت‌هاي ميان نسخه‌هاي استاندارد، حرفه‌اي و اکسپرس ويژوال استوديو را نمي‌دانند و صرفا به‌خاطر اين‌که آن يکي حجم بيشتري دارد آن را انتخاب مي‌کنند. اما اگر تفاوت‌ نسخه‌هاي اکسپرس، استاندارد و حرفه‌اي بدانيم، درمي‌يابيم كه در بسياري از مواقع، استفاده از نسخه‌ حرفه‌اي ضروري نيست.

زبان‌هاي برنامه‌نويسي اکسپرس، تنها به VB، VC#، VC++، و VJ# محدود مي‌شود. در حوزه نرم‌افزارهاي وب هم Visual Web Developer و Visual C# و Visual Basic حضور دارند.

در مورد مستندها، نسخه اکسپرس کتابخانه کامل MSDN را ندارد، و 210 مگابايت کتابخانه‌هاي پايه و تنها خلاصه‌اي از MSDN را دارد. اما مهم نيست؛ MSDN به‌طور آنلاين در اختيار همگان است.

در نرم‌افزار Visual Web Developer، تنها فرق اکسپرس با دو نسخه ديگر اين است که طراحي ويندوز فرم ندارد. و طراح فرم‌هاي تحت وبش  نيز به‌طور برعکس در بخش ويندوزي قابل دسترسي نيست.

براي برنامه‌نويسي با موبايل بايد به‌سراغ نسخه‌هاي استاندارد يا حرفه‌اي برويد. همچنين در نسخه اکسپرس، طراح کلاس، Object Test Bench و کنترل سورس کد وجود ندارد. همچنين نمي‌توانيد نرم‌افزارهاي آفيس را گسترش بدهيد و کامپايلر 64 بيتي هم در آن وجود ندارد. همچنين با SQL Server 2005 به‌طور يک‌پارچه نيست و بايد به آن متصل شويد.

در غير از اين موارد، نسخه اکسپرس بسيار شبيه به نسخه استاندارد و حتي حرفه‌اي است. با اين تفاوت که اگر در ايران نبوديم، بايد مبلغ زيادي را صرف مجوز و هزينه‌هاي مرتبط با آن مي‌کرديم در صورتي که نسخه اکسپرس رايگان، سبک و کار راه بيانداز است.


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

پروژه Appweb، نسخه سوم سرور وب چند سيستم عامله embedded خود را منتشر کرد. گفته مي‌شود اين نگارش کوچک‌تر، سريع‌تر و ماژولارتر از نسخه قبلي است. در اين نگارش همچنين از يک بستر نرم‌افزاري جاوااسکريپت سمت سرور به‌نام EJscript هم پشتيباني شده است و با بهره‌گيري از روش پايپ‌ها، CGI سريع‌تري ارائه مي‌شود.

اين پروژه که توسط گروه نرم‌افزاري Embedthis Software مديريت مي‌شود، براي شرکت‌ها نيز نسخه تجاري با پشتيباني دارد و تحت GPLv2 منتشر مي‌شود و تحت تمام سيستم‌هاي عامل ويندوز، مک و لينوکس کار مي‌کند.

اين سرور وب تنها به 800 کيلوبايت حافظه نياز دارد و با سيستم جديد پردازش دستورات، دوبرابر سريع‌تر از گذشته است.

اين سرور وب از PHP، OpenSSL و XML، SOAP و REST پشتيباني مي‌کند. همچنين براي شبکه‌هاي IPv6 هم سرويس‌دهي مي‌کند.


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

نام كتاب و مشخصات: توسعه بازيهاي جاوا

Developing Games in Java
David Brackeen
Publisher: New Riders Games | 2003-08-31 | 1008 Pages | ISBN: 1592730051 | CHM

دانلود


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

نام کتاب: Sams Teach Yourself Dynamic HTML in a Week

نام کتاب: آموزش DHTML در یک هفته

مشخصات: Publisher: Sams 1997-09 | 508 Pages | ISBN: 1575213354 | PDF | 5.3 MB

دانلود


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

C# Network Programming

<!--enpts-->coversybex.jpg<!--enpte-->

Richard Blum
Publisher: Sybex | ISBN: 9780782141764 | 672 pages chm | 6.14 mb

On its own, C# simplifies network programming. Combine it with the precise instruction found in C# Network Programming, and you’ll find that building network applications is easier and quicker than ever.

This book helps newcomers get started with a look at the basics of network programming as they relate to C#, including the language’s network classes, the Winsock interface, and DNS resolution. Spend as much time here as you need, then dig into the core topics of the network layer. You’ll learn to make sockets connections via TCP and “connectionless” connections via UDP. You’ll also discover just how much help C# gives you with some of your toughest chores, such as asynchronous socket programming, multithreading, and multicasting.

Network-layer techniques are just a means to an end, of course, and so this book keeps going, providing a series of detailed application-layer programming examples that show you how to work with real protocols and real network environments to build and implement a variety of applications. Use SNMP to manage network devices, SMTP to communicate with remote mail servers, and HTTP to Web-enable your applications. And use classes native to C# to query and modify Active Directory entries.

Rounding it all out is plenty of advanced coverage to push your C# network programming skills to the limit. For example, you’ll learn two ways to share application methods across the network: using Web services and remoting. You’ll also master the security features intrinsic to C# and .NET–features that stand to benefit all of your programming projects.

Download from Rapidshare


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

The Finite Element Method Using Matlab

(Crc Mechanical Engineering Series)

<!--enpts-->0849396530.jpg<!--enpte-->

CRC Press; Har/Dsk edition | ISBN: 0849396530 | 519 pages | August 1996 | PDF | 25 Mb

The finite element method (FEM) has become one of the most important and useful tools for scientists and engineers. This new book features the use of MATLAB to present introductory and advanced finite element theories and formulations. MATLAB is especially convenient to write and understand finite element analysis programs because a MATLAB program manipulates matrices and vectors with ease. The book is suitable for introductory and advanced courses in the Finite Element Method, as well as a reference for practicing engineers.

3.5 MB DJVU version:

Download from Rapidshare Djvu

Download from Filefactory


29 MB PDF download :

Download from Rapidshare


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

فایل pdf  آموزش کد نویسی با جاوا اسکریپت را می توانید از لینک زیر دانلود کنید.

برای دانلود فایل، بر روی آن راست کلیک کرده و save target as را بزنید.

برای باز کردن فایل نیاز به برنامه adobe reader خواهید داشت.

http://www.afp30.info/wp-content/uploads/2008/12/java-script.jpg

لینک دانلود مستقیم – با حجم 277 کیلو بایت


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes


پروژه رایگان رزرو بلیط هواپیما به زبان ویژوال بیسیک

جهت دانلود آماده  است.

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

1-استفاده از بانک اطلاعاتی اکسس

2-استفاده از پوسته و اسکین مختلف

3-اضافه کردن مشخصات هواپیما

4-اضافه نمودن مشخصات آژانس

5- انجام کلیه امور مسافرین اعم از اضافه،حذف،ویرایشو...

6-چاپ فاکتور بسیار زیبا همراه با نشان دادن تمامی جزئیات

7-انتخاب نمودن پرینتر دلخواه

http://www.parsmosafer.com/iranair.jpg

و ... اشاره نمود.

 دانلود

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


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes

ویژوال بیسیک 6 فارسی

فارسی ساز ویژوال بیسیک 6 به همراه تغییر پوسته برنامه به ویندوز ویستا

به کمک این فایل ها محیط برنامه نویسی ویژوال بیسیک فارسی می شود که مناسب برای کلیه افراد مبتدی و حتی حرفه ای خواهد بود.

ابتدا این سه فایل رو در مسیر "C:\Program Files\Microsoft Visual Studio\VB98\" کپی کنید بعد

برنامه رو اجرا کنید. البته این فایل ها ترجیحا برای ویندوز xp نوشته شده است
http://www.developercenter.ir/download/Vb6.GIF

کارهایی که این فایل ها میکنند عبارتند از :
- 1 فارسی کردن کامل محیط ویژوال بیسیک 6
- 2 قالب زشت ویژال بیسیک را به صورت Xp در می آورد.

 توجه:

برای راحتی شما عزیزان فایل به دو پارت تقسیم شده است.

دانلود قسمت اول

دانلود قسمت دوم

نکته مهم  :
اول از فایل VB6IDE.DLL و VB6.exe موجود در پوشه خود VB یک کپی در جای دیگر برای پشتیبان در صورتت بروز خطا نگه دارید و اگر برنامه کارنکرد برشون گردانید سر جاشون البته من خودم تست کردم 100% جواب می دهد.


Addthis to otherارسال به شبکه هاي اجتماعی Addthis to otherباکلیک روی ستاره یک امتیازبه این مطلب بده OyaxMohandes



عناوين آخرين مطالب ارسالي
داویدنکو، آخرین قهرمان سال 2009
حرکت قوی‌ترین لیگ بسکتبال جهان به سوی خودکشی؟
فیفا تغییر مقررات داوری در بازیهای جام جهانی را بررسی می کند
شیفتگان بازی‌های ویدئویی در 'واقعیت' رقابت می‌کنند
تکنولوژی تفاوت مردان و زنان را آشکار می کند
ارتباطات در بریتانیا تحت نظارت دقیق‌تر قرار می‌گیرد
گام بعد بازی‌های قابل حمل از آن کیست؟
اینتل با ۱.۲۵ میلیارد دلار رضایت AMD را جلب کرد
تاثیر مواد شیمیایی موجود در کالاهای پلاستیکی بر رفتار پسربچه ها
استقبال گرم استرالیایی ها از پانداهای چینی
تلاش برای کاهش آروغ گوسفندان استرالیا
وقتی سراپا "گوش" می شویم
توصیه های دارویی برای ایدز تغییر کرد
دست‌نوشته‌های استاندال فرانسوی بر روی شبکه جهانی اینترنت
ژنهای موجود در اسپرم 'عمر مردها را کوتاه می کند'
گوگل دسترسي رايگان به مقالات روزنامه‌ها محدود مي‌کند
ثبت‌نام دانشجويان انصرافي و اخراجي در كنكور
حل مسائل فیزیک هالیدی
پمپ ها و علم هیدرولیک
ركوردهایی كه شكسته شد
اسوس، نت‌بوک با قابلیت ارتباط لمسی را روانه بازار کرد
پیوند اولین دست بیونیک با توانایی برقراری ارتباط با مغز
برنامه مخرب؛ عامل صفحه سیاه مرگ
برترین جستجوهای سال 2009 یاهو اعلام شد
امشب ماه به دیدار خوشه پروین می رود
جريمه 2.6 ميليون دلاري شركت eBay
جايگزيني براي آکروبات
صفحه‌کليد با شماره!
تکثير سازمان يافته پرتوآبي
مرگ پرتو آبي با ورود لوح فشرده 5 بعدي بي انتهاي 10ترابايتي
درباره وبلاگ
این سایت/ وبلاگ با اصلاحات سئو توصیه شده توسط گوگل موفق به افزایش پیج رنک شده است شما هم قادر به استفاده از« آنالیزر گوگل» هستید ( توضیحات بیشتر در google-analysts.com)
oonieknafar.blogfa.com
amir hossein sotoudeh beydokhti
امیر حسین ستوده بیدختی
منو اصلی
صفحه نخست
آرشيو مطالب
پروفایل مدیر
عناوین مطالب
نقشه
پست الکترونیک
آرشیو موضوعی
پر بازديدترين هاي وبلاگ
بهترين هاي وبلاگ
منتخب کاربران
بهترین مطالب سایت به توصیه گوگل
بیشترین ورودی
زبان ها,languages
سيستم خبرنامه و خوراک
تماس با ما
rss
موضوعات مطالب
کتاب الکترونیکی,ebook
Magazine,مجله
ریاضیات,Mathematics
مکانیک,Mechanics
علوم هوافضا,Aerodynamic
فیزیک,Physics
جزوات درسی,NoteBooks
تکنولوژی,نانو,Nano,technology
معرفی سایت,WebSites
مقالات,Article
نجوم,Astronomy
برق,Electrical
برنامه نویسی,Programming
نرم افزار,Softwares
فرهنگ,هنر,ادب,مذهب,تصویر
سیاست,نظامی
اجتماعی,حوادث,خانواده
علم,فناوری
دانستنی ها
ورزش
Mobaile,موبایل,بازی,تم,آهنگ
الكترومغناطيس
طنز
اخبار,News
دانشمندان
جواب بة سوالات
کنکور,آموزش عالی
Civil,عمران
گوگل,google
یاهو,yahoo
اینترنت,internet
کامپیوتر ,بینگ,bing,Computer
مناسبت ها
تاریخ,تاریخچه,باستان شناسی
نمونه سوال,آزمون
سینما,تلویزیون,رادیو
زیست شناسی,محیط زیست
زمین شناسی،جغرافيا,آب وهوا
گیاه شانسی,میوه شانسی
کارگاه,آزمایشگاه,گزارش,تحقیق
شیمی,Chemistry
ایمنی,بهداشت,کار
معماري
ترفند
پزشکی,تغذیه,بهداشتی
آرشيو مطالب
هفته دوم آذر 1388
هفته اوّل آذر 1388
دیگر صفحات
نويسندگان وبلاگ
امیرحسین amir hossein ستوده بیدختی sotoudeh beydokhti
پيوندهاي روزانه
دانلود سرای کتب و جزوات دانشگاهی
مرجع سریال فارسی 1
طراحان گرافیک
سيستم سوخت رساني انژكتوري
مرکز آموزش مهندسی عمران
خطای دید باورنکردنی!
♥♥امار سـایت خودتون رو بترکونیــد♥♥
پاییز عشق
سرگرمي و تفريحي
عنوان دیدنی های اینترنت
آمار و امكانات
وضعیت مدیر در یاهو :



لوگو ی ما :


پيوند به وبلاگ :

علمی





widgeo.net

counter