برترین دانلود های این ماه


نرم افزار قرآن کریم برای اندروید، انوار وحی (ـ29102 دانلود )
نسخه جدید بازی کرم ها (شورش) - Worms Revolution PC Game (ـ27702 دانلود )
نرم افزار پخش آنلاین رادیو و تلویزیون‌های فارسی - myTV 9.0 (ـ23875 دانلود )
نرم افزار حرفه ای پخش فیلم - PowerDVD Ultra 14 (ـ17552 دانلود )
نرم افزار ضبط مکالمه اندروید - Total Recall Call Recorder 1.9 Android (ـ13112 دانلود )
اینترنت اکسپلورر 11 مخصوص ویندوز هفت - Internet Explorer 11 Windows 7 (ـ12471 دانلود )
مجموعه کامل آهنگ های ترنس، رمیکس آرمین ون بیورن - Armin Van Buuren, A State Of Trance, Full Collection (ـ12101 دانلود )
نرم افزار تبدیل عکس به نقاشی سیاه قلم (نقاشی با مداد) - Sketch Drawer 1.4 (ـ12086 دانلود )
نرم افزار افزایش کیفیت عکس - Simply Good Pictures 2 (ـ11124 دانلود )
نرم افزار بازیابی اطلاعات موبایل اندروید - Wondershare Data Recovery for Android (ـ10674 دانلود )
نرم افزار پخش فیلم های بلوری - Aiseesoft Bluray Player 6.2 (ـ9565 دانلود )
مجموعه چیت، رمز، و کد تقلب برای بازی ها - CheMax 15.2 (ـ9561 دانلود )
نرم افزار ویرایش عکس - ACDSee Photo Editor 6 (ـ8989 دانلود )
محبوب ترین نرم افزار نمایش عکس - ACDSee 17 (ـ8470 دانلود )
تم شیشه ای (Aero) برای ویندوز هشت - Aero Theme for Windows 8 Rev 3 (ـ8414 دانلود )
نرم افزار تبدیل فرمت فیلم - ACDSee Video Converter Pro 3.5 (ـ8314 دانلود )
نرم افزار ترکیب چند فایل PDF با هم - VeryPDF PDF Stitcher 2.1 (ـ6928 دانلود )
نرم افزار حذف پس زمینه عکس - OnOne Perfect Mask 5.2 (ـ6840 دانلود )
نرم افزار ساخت عکس های متحرک - Easy GIF Animator Pro 6 (ـ6719 دانلود )
نرم افزار طراحي دكوراسيون داخلي منزل - Sweet Home 3D 4.2 (ـ6644 دانلود )



دسته بندی دانلود

بخش نرم افزار
مالتی مدیا
پخش کننده فیلم و صدا
ویرایشگر فیلم و صدا
تبدیل فرمت فیلم و صدا
ابزارهای CD و DVD
امنیت
آنتی ویروس و فایروال
مخفی سازی و رمز گذاری
بازیابی و پشتیبانی اطلاعات
آپدیت آنتی ویروس ها
گرافیک
نمایشگر و ویرایشگر عکس
انیمیشن سازی
فلش و ابزار های آن
گالری گرافیک و پلاگین
گالری فونت و ابزارهای آن
گالری آیکون و ابزارهای آن
اینترنت و شبکه
نرم افزار اینترنت
طراحی و مدیریت سایت
Server و شبکه
اداری و کاری
آفیس و PDF
نرم افزارهای اداری
نرم افزار های مهندسی
برنامه نویسی
ویندوز
سیستم عامل ویندوز
سرگرمی های دسکتاپ
بهینه سازی ویندوز
درایور PC
درایور لپ تاپ
کاربردی
فشرده سازی
ابزار سخت افزار
فرهنگ لغت و دیکشنری
سایر نرم افزار های کاربردی
بخش لینوکس
بخش مکینتاش
بخش موبایل
عمومی
زنگ موبایل
عکس زمینه موبایل
تبدیل فیلم و آهنگ موبایل
جاوا
نرم افزار جاوا
بازی جاوا
سیمبین
نرم افزار سیمبین
بازی سیمبین
آیفون
نرم افزار آیفون
بازی آیفون
اندروید
نرم افزار اندروید
بازی اندروید
ویندوز موبایل
نرم افزار ویندوز موبایل
بازی ویندوز موبایل
بخش عمومی
بازی و سرگرمی
بازی های کامپیوتری
بازی های آنلاین
فیلم مستند و انیمیشن
موسیقی
گالری عکس
مذهبی و فرهنگی
آموزش
فیلم های آموزشی
نرم افزار های آموزشی
آموزش زبان انگلیسی
کتاب و مجلات الکترونیکی


[ آرشیو موضوعی ]
[ آرشیو ماهانه ]










آموزش


پرندگان خشمگین به فضا سفر می کنند ( +عکس)

پرندگان خشمگین به فضا سفر می کنند ( +عکس)


شرکت Rovio سری جدید بازی پرندگان خشمگین را با عنوان Angry Birds Space رونمایی کرد که در این سری جدید قرار است تا پرندگان خشمگین و خوک‌های ناقلا در فضا به جنگ و گریز خود ادامه دهند. این شرکت این بازی را بزرگ‌ ترین بازی از تاریخ عرضه نسخه اریجینال پرندگان خشمگین دانسته است.

 


این بازی فقط برای تلفن‌های همراه هوشمند ارائه خواهد شد و انیمیشن و سایر محصولات مرتبط با این عنوان نیز به صورت همزمان در تاریخ 22 مارس منتشر خواهد شد.
از جمله خصوصیات عنوان Space، شخصیت‌های جدید به همراه بکار رفتن فیزیک بهتر و واقعی‌ تر است و نسخه جدید دارای حالت اسلومویشن یا همان حرکت آهسته (به خاطر غوطه‌ ور بودن در فضا) و تخریب با سرعت نور است.

 

 


مجموعه بازی های پرندگان خشمگین تاکنون در حدود 700 میلیون بار دانلود شده است.

 

دانلود بازی پرندگان خشمگین در فضا (Angry Birds Space) مخصوص کامپیوتر

 


 آموزش

جدیدترین ابداعات امنیتی اندروید توسط گوگل

 جدیدترین ابداعات امنیتی اندروید توسط گوگل


سال گذشته میلادی یکی از خارق العاده ترین سال ها برای سیستم عامل اندروید به شمار می رود. در سال 2011 میلادی، آمار تولیدات محصولاتی که از سیستم عامل اندروید پشتیبانی می کردند 250 درصد رشد داشته است. همین رشد بسیار بالا نیز منجر به  رسیدن عدد دانلود به بیش از 11 میلیارد اپلیکیشن از فروشگاه اینترنتی اندروید شد.

این سیستم عامل موفق،  مسیر پیشرفت را یافته و تخته گاز می تازد، و البته در زمینه های امنیتی هم همواره نوآوری ها و ابداعات تازه ای در آستین دارد. در اینجا به ذکر چند مورد از جدیدترین ابداعات امنیتی اندروید گوگل می پردازیم

 

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

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

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

 
کاهش میزان دانلود بدافزارها :
سرویس بانسر در حال حاضر در فروشگاه اینترنتی اندروید فعالیت دارد و در نتیجه آن و در مقایسه با دو نیمه سال گذشته میلادی، میزان دانلود بدافزارها از اندروید مارکت حدود 40 درصد کاهش داشته است. این کاهش چشمگیر درست هنگامی روی داد که شرکت های تولید کننده و فروشنده های نرم افزارهای امنیتی و ضد ویروس اعلام کرده بودند که تعداد بدافزارهای فروشگاه اینترنتی اندروید در حال افزایش بی رویه است.

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

 
اندروید، قدرت نفوذ بدافزارها را کاهش می دهد :
علاوه بر طراحی سرویسی جدید برای جلوگیری از نفوذ بدافزارها، گروه همکاری هیروشی لاخی‌میِر، سیستم عامل  اندروید را به منظور کاهش درصد نفوذ بدافزارها از نو طراحی کرده اند. در نمونه های کامپیوتری، بدافزارها به راحتی می توانند اطلاعات کاربر را به دست بیاورند و از آن سوءاستفاده کنند. اما گروه همکاری هیروشی لاخی‌میِر با توجه به این موضوع، سیستم عامل اندروید را برای اتصال به اینترنت طراحی کرده اند.

برخی از قابلیت های اصلی امنیتی اندروید شامل موارد زیر هستند:

1- سندباکسینگ (sandboxing): پلتفورم اندروید از تکنیکی به نام سندباکسینگ استفاده می کند. این تکنیک برای امنیت دستگاه، بین اپلیکیشن ها و دیگر نرم افزارها موجود در گوشی یا تبلت، دیواری مجازی ایجاد می کند. به این ترتیب، اگر کابر بدون آگاهی بدافزاری را روی دستگاه خود دانلود کند، آن ویروس نمی تواند به بخش های دیگر دستگاه برود و از اطلاعات آن استفاده کند. در واقع چارچوبی مجازی اطراف هرکدام از نرم افزارهای دانلودی ایجاد می شود تا امکان ایجاد ارتباط با دیگر اپلیکیشن های دستگاه را به صفر برساند.

2- اجازه نامه: اندروید سیستمی به نام نام اجازه نامه دارد که به کابر امکان مدیریت دانلودهایش را می دهد. به طور مثال، هنگام دانلود، اگر یک بازی از شما اجازه دسترسی به دفترچه تلفن یا اطلاعات مخاطبین موجود در گوشی را خواست، می توانید تشخیص بدهید که اپلیکیشن مورد نظر به احتمال زیاد یک بدافزار است. زیرا یک بازی به اطلاعات دفترچه تلفن گوشی نیازی ندارد.

3- سیستم حذف بدافزار: اندروید‌ به صورت داخلی امکان حذف بدافزارها از سیستم عامل را دارد. همچنین اندروید مارکت نیز می تواند در صورت نیاز،  از راه دور بدافزارها و ویروس ها را از گوشی موبایل یا تبلت کاربر حذف کند.

 
باید توجه داشته باشید که هیچ روش امنیتی بدون خطا و اشکال نیست و بررسی های بهتر و دقیق تر می تواند باعث تسریع بخشیدن به روند امنیت بیشتر آنها بشود. سیستم و سرویسی که گروه همکاری هیروشی لاخی‌میِر طراحی و تولید کرده اند بسیار کارآمد است. اما باز هم، آنها به طور دائم و روزانه در حال بهبودبخشیدن و ارتقا سطح دقت آن هستند. این سرویس برای کاربران سیستم عامل اندروید بسیار مفید و کاربردی است و می تواند به امنیت بیشتر آنها کمک فراوانی بکند.


 آموزش

سامسونگ گلکسی تب 2 معرفی شد (+ عکس )

سامسونگ گلکسی تب 2 معرفی شد (+ عکس )


بخش خبری سرزمین دانلود  به نظر می رسد سامسونگ تبلت های 7 اینچی را دوست دارد. چرا که بعد از معرفی تبلت گلکسی و Galaxy Tab 7.0 Plus حالا با یک 7 اینچی جدید وارد بازار شده است. با Galaxy Tab 2 آشنا شوید. محصولی که لقب نخستین تبلت سامسونگ با اندروید 4.0 را به همراه دارد.

 


 این تبلت با نمایشگری از نوع PLS و باطری 4000mAh و دوربینی 3 مگاپیکسلی در عقب و یک دوربین VGA در جلو به شما اعلام می کند که جزو محصولات رده بالا به حساب نمی آید و میانه بازار را هدف گرفته است.

تبلت گلکسی 2 دارای پردازشگری دو هسته ای با سرعت 1GHz است و به همراه یک گیگابایت رم و با مدلی به همراه 3G و حافظه 32 گیگابایتی داخلی ارایه می شود. میزان حافظه قابلیت افزایش از طریق کارت حافظه میکرو اس دی را نیز دارد.

ضخامت گلکسی تب 2 معادل 1.04 سانتیمتر است و با وزن 343 گرمی اش، باریک تر و سبک تر از تبلت گلکسی اول به حساب می آید. اما تغییر ابعاد آنقدرها هم فاحش نبوده است. (ضخامت گلکسی تب اول 1.19 سانتیمتر و وزن اش 368 گرم بود)

 

 



زمان ارایه به بازار از ماه آینده میلادی است و شروع ارایه از بریتانیا خواهد بود. قیمت Galaxy Tab 2 هنوز اعلام نشده. اما پیش بینی می شود که در خارج از ایران قیمتی زیر 200 دلار داشته باشد.


 آموزش

تفاوت ارسال پارامترهای تابع به صورت مقدار، ارجاع و اشاره گر

تفاوت ارسال پارامترهای تابع به صورت مقدار، ارجاع و اشاره گر


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


int increase(int x, int count = 1) // count variable has a default value: 1
{
   x += count; // The copy of x will be changed, not the orginal x sent from caller
   return x;
}
int main(int argc, char* argv[])
{
   int i = 10;
   int j = increase(i, 5); // The first parameter is a variable and the second is a constant
   cout << "i = " << i << "n"; // i = 10
   cout << "j = " << j << "n"; // j = 15
 
   j = increase(10, 5); // Both parameters are constant!
   cout << "j = " << j << "n"; // j = 15
   return 0;

 

 

ارسال پارامتر به صورت ارجاع
این حالت دو تفاوت عمده با روش ارسال با مقدار دارد: اول این که خود متغیر اصلی به تابع ارسال شده و هر گونه تغییری که تابع روی متغیر بدهد، روی متغیر اصلی اعمال خواهد شد. دوم  اینکه به همین دلیل، نمی توان عدد ثابت را به عنوان پارامتر ارسال کرد! چون در این صورت متغیری وجود نخواهد داشت که تابع با آن کار کند. نکته دیگر این که این متغیرها نمی توانند مقدار  پیش فرض داشته باشند.
برای معرفی یک پارامتر به صورت ارجاع از علامت & استفاده می کنیم. در مثال زیر، تنها تابع increase تغییر کرده است دقت کنید که در اینجا متغیر i پس از فراخوانی تابع تغییر خواهد کرد، ضمنا خط ماقبل آخر خطایی ایجاد می کند، چرا؟

 

int increase(int &x, int count = 1) // The first parameter is declared by reference, but the second is declared by value
{
   x += count;
   return x;
}
 
int main(int argc, char* argv[])
{
   int i = 10;
   int j = increase(i, 5);
   cout << "i = " << i << "n"; // i = 15
   cout << "j = " << j << "n"; // j = 15
 
   j = increase(10, 5); //WRONG, since the first parameter can not be constant
 
   return 0;
}

 


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

 

int increase(int *x, int count = 1) // The first parameter is declared as a pointer
{
   (*x) += count;
   return x;
}
 
int main(int argc, char* argv[])
{
   int i = 10;
   int j = increase(&i, 5);
   cout << "i = " << i << "n"; // i = 15
   cout << "j = " << j << "n"; // j = 15
   return 0;
}
 

 

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

 

 

int StdDev(double* pData, int len, double* pMean, double* pStdDev)
{
   if( !pData || !pMean || (len < 1) ) return -1; // Indicate an error
   *pMean = 0;
   for (int i = 0; i < len; i++)
      *pMean += pData[i];
   *pMean /= (double)len;
   if(! pStdDev) return -2; // Indicate another error
   *pStdDev = 0;
   if(len < 2) return 0; // No Error
 
   for(int i = 0; i < len; i++)
      (*pStdDev) += (pData[i] - (*pMean)) * (pData[i] - (*pMean));
 
   *pStdDev = sqrt( (*pStdDev) / (len - 1) );
   return 0;
}
 

 


2. اگر می خواهیم یک شیء (متغیر از نوع کلاس) را به تابعی ارسال کنیم، بهتر است که آن را به صورت اشاره گر یا ارجاع ارسال کنیم، چرا که کلاس حجم زیادی از حافظه را می گیرد و اگر ارسال با مقدار را استفاده کنیم، تابع سازنده ی کپی آن کلاس فراخوانی شده و یک کپی از آن روی پشته ایجاد می شود که حاوی تمام متغیرها و توابع کلاس است! لذا اصلا صلاح نیست که کلاسها را به صورت مقدار به توابع ارسال کنیم

.


 آموزش

تفاوت برنامه نویسی MFC و WIN32 در ویژوال سی

تفاوت برنامه نویسی MFC و WIN32 در ویژوال سی


در محیط ++Visual C پروژه های متنوعی می توانید ایجاد کرد که دو نوع آنها استفاده بیشتری دارد. یکی پروژه های MFC و دیگری Win32.
این دو نوع پروژه چه تفاوتی دارند و به چه کارمان می‌آیند؟
تفاوت آنها با پروژه‌ی کنسول ساده چیست؟
با ما همراه باشید...


پروژه های Win32:
از اسم win32 پیداست که منظور پروژه هاییست که برای ویندوز 32 بیتی نوشته می شود (البته اگر شما برنامه 64 بیتی هم بخواهید بنویسید باز همین نوع پروژه را می توانید استفاده کنید). ویندوز یک سری کتابخانه های پویا یا همان dll دارد که در این کتابخانه ها توابع متعددی برای کار با پنجره ها در محیط ویندوز وجود دارد. این توابع که به عنوان API (مخفف Application Programming Interface) مشهور هستند نوشته شده اند که کار میکروسافت و سیستم عامل ویندوزش راه بیفتد. لیکن مایکروسافت زحمت کشیده و بخش عظیمی از این API را در اختیار برنامه نویسان هم قرار داده که کار آنها هم لنگ نماند. مثلا تابع MessageBox که یک پیام را نمایش می دهد، یا تابع CreateWindowEx که یک پنجره ایجاد می کند، یا تابع ShellExecute که یک برنامه را اجرا می کند و یا تابع GetCommState که وضعیت پورت Com (ارتباط سریال) را مشخص می کند و توابعی از این دست، همگی در فایلهایی مثل user32.dll و kernel32.dll و ... تعریف شده اند.
به کمک این توابع شما می توانید پنجره بسازید، دکمه تعریف کنید، منو بسازید، نوار ابزار ایجاد کنید و هر آنچه در یک برنامه تحت ویندوز نوعی می بینید، ایجاد کنید. لیکن تمام کارها در قالب کدنویسی صورت می گیرد.

با تعریف پروژه win32 به طور پیش فرض فایل سرآیه‌ی windows.h به پروژه شما اضافه شده، فایلهای lib لازم (مثل user32.lib و kernel32.lib) هم در تنظیمات پروژه اضافه شده و تقریبا تمام توابع لازم برای کار با پنجره ها در اختیار شما قرار می گیرد. اگر این کارها را به صورت دستی در یک پروژه کنسول ساده انجام دهید نیازی به تعریف پروژه win32 ندارید!

پروژه های Microsoft Foundation ClassesMFC:
MFC مخفف Microsoft Foundation Classes یعنی کلاسهای پایه ای میکروسافت، کتابخانه ای است که شرکت میکروسافت جهت تسهیل برنامه نویسی برای ویندوز توسعه داده است. این کتابخانه چیزی نیست جز تعدادی کلاس که به صورت پوششی بر روی API ویندوز قرار گرفته و کار کردن با پنجره ها را باز هم آسانتر کرده است. به عبارتی هزاران توابع موجود در API در قالب تعدادی کلاس و به صورت مرتب درآمده اند. مثلا توابع کار با پنجره در کلاس CWnd قرار گرفته اند؛ توابع کار با دکمه در کلاس CButton و توابع کار با دیالوگ در کلاس CDialog واقع شده اند. بسیاری از کلاسهای MFC از جمله CButton، CDialog، CEdit و CRichEdit فرزند کلاس CWnd هستند.
به کمک این نوع پروژه شما می توانید، منو، دیالوگ، نوار ابزار و حتی ریبون (ویژوال استودیو 2010) را به صورت دیداری طراحی کنید و فقط کدهای لازم برای مدیریت رویدادها (مثل کلیک روی یک منوی خاص) را می نویسید. در این نوع پروژه کلاسهایی مثل CImage برای کار با تصاویر، CButton برای کار با دکمه، CFont برای کار با قلمهای ویندوز، CMenu برای منوها و ده ها کلاس متنوع دیگر وجود دارد که برنامه نویسی تحت ویندوز را بسیار تسهیل می کند.

با همه این تفاسیر کار کردن با پروژه های MFC نسبت به زبانهایی مثل #C و ویژوال بیسیک بسیار سخت تر است! به عنوان مثال در #C به محض ساختن یک Text Box با نام edit1 متغیری با همین نام در اختیار شما قرار می گیرد که به راحتی می توانید با آن کار کنید (متن آن را بخوانید یا تغییر دهید یا رنگ آن را عوض کنید) لیکن در MFC باید یک متغیر به آن تخصیص دهید و یا با دستوری مثل GetDlgItem پنجره مربوط به آن Text Box را گرفته و سپس با آن کار کنید. آن هم نه همه کاری! مثلا کارهای ساده ای مثل تغییر رنگ یک کنترل در MFC به سختی پشتک بارو زدن است! کاری که در سایر زبانها در زمان طراحی قابل انجام است. البته همین امر هم سبب شده که برنامه های نوشته شده با ویژوال سی نسبت به سایر زبانها بسیار سریعتر باشند.


 آموزش

آموزش متغیر string در پاسکال

آموزش  متغیر string در پاسکال

 

 متغیر string :
این متغیر مکانی از حافظه است که نوشته ها و متن (به تعداد 256 character) را می توان درون آن قرار داد . فرق آن با متغیر char در این است که متغیر char می تواند یک حرف را در خود جا دهد در حالی که string می تواند کلمه و یا حتی کلمات (متن) که تعداد حروف آن بیش تر از 256 character نباشد را در  آن جا داد .


بدست آوردن طول رشته (string):
دستور length  : از این دستور برای محاسبه تعداد حروف یک رشته استفاده می شود .

مثال : برنامه ای بنویسید که یک رشته ( متن) را از کاربر بگیرد و طول رشته (تعداد حروف آن) را چاپ کند .



;program sarzamin
;Uses WinCrt

var
;s:string

;begin

;(readln(s
;( (writeln( s , ' = ' , length(s

.end

 


توضیح مثال بالا :
 دو خط اول که برای نوشتن هر برنامه در پاسکال استفاده می شه.

  var را وقتی استفاده می کنیم که بعدش بخواهیم متغیر تعریف کنیم.

;s:string  یعنی این که یک متغیر از نوع  string تعریف کردیم (که می تواند حاوی متن باشد)

 begin یعنی برنامه نویسی شروع شد.

;(readln(s  یعنی از کاربر بخواه تا متنی که باید درون s قرار بگیرد را تایپ کند .

 ;( (writeln( s , ' = ' , length(s
 یعنی طول رشته (تعداد حروف متن) را به کاربر به صورت زیر نشان بده ( اگر s = متن تایپ شده توسط کاربر=welcome to ib )  :               
                      
end یعنی برنامه را تمام کن.


 آموزش

آموزش دستور if در پاسکال

آموزش دستور if در پاسکال

 

امروز می خواهم یک دستور مهم و پر کاربرد را به شما آموزش بدهم :

 دستور if :

این دستور را اگر بخواهیم با معنای فارسی آن که در ( ) نوشته ام بنویسیم اینطور می شود :

 

(سپس)then

(شروع)begin

;دستورات

;(پایان)end

 

 

که یعنی اگر شرط ما درست بود دستورات را انجام بده .

مثال :

در مثال زیر یک عدد از کاربر می گیریم و اگر آن عدد از 100 بزرگتر بود yes و اگر مساوی 100 بود yesnoو اگر کوچکتر از 100 بود noرا در جواب نمایش میدهد .

 

;Program sarzamin

;Uses WinCRT

var

;a:integer

Begin

;clr scr

;('write('enter greade of our weblog more than 100 or 100 or lessthan 100

;(readln(a

if a>100 then

begin

;('writeln ('yes

;end

if a=100 then

begin

;('writeln ('yesno

;end

if a<100 then

begin

;('writeln ('no

;end

.End

 

همانطور که در مثال بالا دیدید در بیان شرط از علامت های <>= استفاده کرده ایم . در زیر اینگونه علامت ها را به طور کامل توضیح می دهیم .

تساوی =

نامساوی<>

کوچکتر>

بزرگتر<

کوچکتر یا مساوی >=

بزرگتر یا مساوی <=

نکته :

اگر ما از دستور ifدر یک خط استفاده کنیم نیاز به brginو endنیست مانند این مثال :

 

('if a=100 then writeln('yesno

 

 

توجه :

از {} برای نوشتن توضیحات در وسط کد استفاده می شود . از این پس هر متنی را که در میان {} در کدها نوشتیم فقط برای توضیح بیشتر است .

 

# دستور ifبه همراه else

این دستور دقیقا" مثل ifاست ولی فقط قسمتی به نام elseدارد که توضیح می دهم :

 

 

(سپس)then

(شروع)begin

;دستورات

|(پایان)end

(در غیر اینصورت)else

(شروع)begin

;دستورات

;(پایان)end

;End

 

که یعنی اگر شرط ما درست بود دستورات قسمت اول را انجام بده و در غیر اینصورت اگر شرط درست نبود دستورات قسمت دوم را انجام بده .

نکته :

قبل از else , در خط بالایش نباید ; قرار بگیرد که من با | نشان داده ام .


 آموزش

آموزش دستور writeln و read در پاسکال

آموزش دستور writeln و read در پاسکال

 

دستور writeln :

همان دستور write می باشد با این تفاوت که بعد از عمل نوشتن نوشته به خط بعد می رود .



;Program sarzamin
;Uses WinCRT
Begin
;('writeln('sarzamin hopes to teach you pascal
.End


استفاده از متغیر :

داده ها اطلاعاتی هستند که از کاربر گرفته می شوند . مثلا اگر کامپیوتر باید عمل جمع را انجام دهد نیاز به اعدادی دارد تا آن ها را جمع کند که این اعداد همان داده هستند .

برای این که بتوان از کاربر داده گرفت ما نیاز به متغیری داریم که این داده در آن قرار گیرد. برای استفاده از متغیر ها ابتدا باید آن ها را تعریف کرد.

من در اینجا یک متغیر از نوع string (متنی) تعریف کرده ام .

 پس از تعریف متغیر باید داده را در آن قرار داد که برای این کار از علامت انتصاب یعنی := استفاده می کنیم .

 



;Program sarzamin
;Uses WinCRT
var
;a:string
;b:string
Begin
'a:='hello
;a:=b
;(write (a
;(write (b
.End


متغیر متغیر ها انواع مختلفی دارند که هر نوع آن ها استفاده مخصوص به خود را دارند . مثلا متغیر  strin برای متن و integer برای اعداد می باشد .



 دستورread :

این دستور برای گرفتن داده از کاربر مورد استفاده قرار می گیرد .

مثال :
این برنامه یرای مثال ابتدا 2 عدد از کاربر می گیرد و آن ها را جمع می کند ، سپس نتیجه را نمایش می دهد .
همچنین دستور readln داده ها را از کاربر در خط بعد می گیرد .

 



;Program sarzamin
;Uses WinCRT
var
;a:integer
;b:integer
Begin
;('write('enter two numbers to add
;(readln(a,b
;a:=a+b
;(write ('a=',a

.End


 آموزش

توابع و پردازه ها در پاسکال

توابع و پردازه هایPROCEDURES  &  FUNCTIONS در پاسکال


پردازه و تابع دو نوع متفاوت از بر نامه های فرعی(زیر بر نامه ها) می باشند . تفاوت تابع با سابروتین آن است که یک مقدار را به بر نامه باز می گرداند , در حالی که پردازه چند مقدار را می تواند منتقل سازد . هر دو نوع می توانند شامل  انواع ثابت و متغیر داده ها , پردازه ها و توابع باشند . اینها ایه بر نامه ریزی ساختاری هستند .

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

1. را ه پی گیری اشکالات ودنبال کردن مسیراجرای دستورالعملهاراکوتاه می سازد .

2. تست بر نامه جزء جزء انجام می شود . هر بخش را جداگانه می توان برسی نمود .

3. در ک مسئله و اعمال تغیرات روی آن بسیار ساده تر می شود.

4.  بساری از دستورات پاسکال که دستور العمل نامیده ایم در اصل پر دازه ها و تابع هایی هستند که بافر اخوانی آنها عمل را انجام می دهند. از آن جمله  پر دازه WRITELNکه متغیر های خودرابه دستورالعملهای خروجی و یابه فایل های موردنظرمی فرستد.همچنین تابعsucc( ) که عدد 6 را پس از انجام عملیات داخلی به خودگرفته وبه برنامه بازمی گرداند.
دامنه انتقال متغییر ها در رابطه باپردازه و تابع

دو نوع متغیر در رابطه باپردازه ها وتوابع وجود دارد :

1. داده های فراگیر یا global

2. داده های محلی local


داده های محلی LOCAL:

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


معرفی متغیر ها در پردازه و تابع:

متغیر ها در قبل از اینکه بتوانند به کار روند باید معرفی کرد .به همین دلیل داده های فراگیر راباید قبل از همه در خط های اولیه معرفی کرد .همچنان ,سابروتین ها در قبل از اینکه فراخوانده شوند باید معرفی کرد.


چگونگی تعریف پر دازه ها و توابع:

 
پردازه و توابع را باید پس از Varوقبل از بر نامه اصلی معرفی کرد معرفی هر پردازه یا تابع , اطلاعات زیر را شامل می باشد:

1. نام پر دازه که تابع ضوابط نام گذاری در تربو اسکال است.

2. نام پارامتر ها ونوع آنها هرقلم از اطلاعات که باید به بر نامه ها وارد شود, وهر اطلاعاتی که پس از پردازش از بر نامه صادر شود , باید در داخل پرانتز جلوی نام سابروتین آورده می شود.

3. در داخل پرانتز پارامترها می تواننند مقادیر باشندیا پارامتر های متغیری باشندکه قبل از آنها Var می آید . چنین پامتر هایی در داخل سابروتین تغییر کرده وتغییرات آن به خارج نفوذ می نماید.

4. در مورد تابع پس از پرانتز نوع اطلاعات باز گشتی به بر نامه اصلی که تحت نام خود تابع می باتشد , معرفی می گردد.نوع تابع لزوما" نباید با نوع رانتز آن یک باشدگرچه مثلا"  تابع  succ( )  همان نوعی از اطلاعات را برگشت می دهد که بکار می برد.


عبور وانتقال اطلاعات از پردازه هاوتوابع:

وقتی یک سابروتین رابه کارمی بریم ،معمولا می خواهیم مقداری را به آن وارد و اطلاعاتی را از آن خارج سازیم. اطاعات وارده ،گاه ثابت هایی هستند که دذر طول سابروتین تغیر نمی کنند بطوریکه قبلا نیز اشاره شد متغیر های وارد صادره از سابروتین ها می توانند محلی یا فراگیر باشند

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

نکاتی که باید در تهیه لیست پارامتر ها در نظر گرفت:

1. باید دید چه پارامتر هایی مورد نیاز است .

2. در نظر گرفت کدام مقادیر باید به سابروتین داده شود . در جلوی این پارامتر ها باید کلمه Var  ر ا قرار داد.

3. پارامتر هارا بایدنظم داد به تر تیبی که موقع فراخوانی نیز همان نظم را داشته باشد .

4. ترتیب و نوع پارامتر ها با اقلامی که موقع فراخوانی بکار می رود باید یکسان باشد.


 آموزش

آموزش مقادیر ومتغیر ها در لیست پارامتر ها در پاسکال

آموزش مقادیر ومتغیر ها در لیست پارامتر ها در پاسکال


وقتی در جلوی پارامترها Var قرار می دهیم با مراجعه به نام این پارامتر ها می توان آنرا به سابروتین وارد کرد و یا نتیجه گرفت . ولی در صورتیکه جلوی پارامتری Var قرار ندهیم ،مقدار آن پارامتر مورد نظر خواهدبود در حالت اول کامپیوتر محلی برای متغیر در نظر می گیریدو هر بار به آن محل مراجع می کند و محتوای آنرا انتقال می دهد . و این محتوا داخل و خارج برنامه قابل استفاده است .در حالت دوم کامپیووتر یک کپی از مقدار متغیر را به سابروتین می برد ومحلی را برای آن در نظر نمی گیردکه به تواند حاصل تغییر به بر نامه اصلی باز گردئد .تغییرات داخل سابروتین نیز روی کپی متغیر انجام می شود.بنابر این هر گاه تغییرات متغییری در داخل سابروتین مورد نظر مانیست آنرا بدون Var  قرار می دهیم.
معرفی قبلی سابروتین ها

 
گاه اتفاق می افتد که یک سابروتین در بر نامه سابروتین دیگری را فرا مکی خواند. از آنجا که قبل از تعریف هیچ عاملی نمی توان از آن استفاده کرد سابروتین فرا خوانده شده باید قبلا معرفی شده باشد حال اگر قرار باشد گاه سابروتین 2 را فرا خواند و گاه سابروتین 1 را ، در اینجا اشکالی بوجود می آید.

به مثال زیر توجه نمائید.

 



Procedure   test1 (some: integer);
Begin
If     some<10 then      test2 ('y');
{………..etc.}
Procedure   test2 (another parameter: char);
Begin
test1 (15);
{………..etc.}
End;


این اشکال به این صورت رفع می شود که از کلمه forward استفاده کرده و سابروتین دوم را قبلا معرفی می کنیم. گر چه سابروتین دومی به تفضیل شرح داده شده ولی معرفی آن قبلا از سابروتین 1 مشکل را رفع می کند.

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



Program test;
Var
A, b, c, x, y, z: integer;
Procedure   proc (Var   a, b: integer; c: integer);
Forward;
Procedure   proc2;
BEGIN
Clrscr ;
Readln(x);
Proc(x, y, z);
Writeln(x: 10, Y: 10);
End;
Procedure proc2 (Var A, B: Integer; c: Integer);
Begin
Writeln (A: 10);
B: =A*A*A;
C: =100;
END;
{*******************************}
Begin
Proc1;
End.


مثال:
1. برنامه فاکتوریل را با Procedure بنویسید.



Program t1;
Var
N: Integer;
M: Longint;
Procedure     fact (n :integer ; Var f: Longint);
Var
I: byte;
Begin
F: =1;
For   I: =1 to n do
F: =F*I;
End;
Begin
Write ("please enter n:");
Readln (n);
Fact (n, m);
Write (m);
Readln;
End.


2. برنامه فاکتوریل را با Function بنویسید.

 



Program t2;
Var
N: Integer;
K: real;
Function   fact (n: integer) Longint;
Var
I: byte;
f: Longint
Begin
F: =1;
For   I: =1 to n do
F: =F*I;
Fact: =F;
End;
Begin
Write ("please enter n:");
Readln (n);
Write (Fact (n));
Readln;
End.

 


 آموزش

تبلیغات


سرزمین دانلود را دنبال کنید !

عضویت در خبرنامه سرزمین دانلود

با وارد کردن ایمیل خود و سپس تایید آن،

جدیدترین مطالب و نرم افزار ها برای شما

ارسال می شود:




------------------------------------------

نصب تولبار سرزمین دانلود

تازه های سایت را از طریق تولبار دنبال کنید


------------------------------------------

     







دسته بندی مقالات

عمومی
گرافیک
انیمیشن
مالتی مدیا
آفیس
مهندسی
اداری و کاری
امنیت اطلاعات
طراحی سایت
شبکه و Server
نرم افزارهای کاربردی
لینوکس
دستگاه های دیجیتال
ویندوز
بوت ویندوز
امنیت در ویندوز
رجیستری ویندوز
بهینه سازی ویندوز
نرم افزارهای ویندوز
سخت افزار در ویندوز
کیبورد و ماوس در ویندوز
مقالات اختصاصی ویندوز 7 و Vista
مقالات اختصاصی ویندوز XP
سایر مقالات و ترفند های ویندوز
اینترنت
امنیت در اینترنت
ایمیل و مسنجرها
مرورگر های اینترنت
نرم افزارهای کاربردی اینترنت
ترفند های کار با اینترنت
جستجوی اطلاعات در اینترنت
خدمات وب سایت ها
سایر مقالات مربوط به اینترنت
سخت افزار
بایوس
مودم
هارد دیسک
کارت صدا و کارت گرافیک
مادر برد، CPU، حافظه Ram
ماوس، کیبورد و اسپیکر
CD - DVD – Bluray
پرینتر و اسکنر
حافظه های جانبی
مانیتور
تجهیزات شبکه
لپ تاپ
سخت افزارهای جدید
سایر مقالات مربوط به سخت افزار
موبایل
نوکیا
سونی اریکسون
اندروید
آیفون
ویندوز موبایل
سایر گوشی ها
تکنولوژی موبایل
همراه اول
ایرانسل
آموزش و ترفند های عمومی موبایل
آموزش های تخصصی موبایل
سایر مقالات مربوط به موبایل
برنامه نویسی
سی شارپ
VB و VB.Net ویژوال بیسیک
ASP و ASP.Net
کامپایلر های قدیمی
سایر مقالات مربوط به برنامه نویسی
سایر
سایر مقالات آموزشی
خواندنی ها !