|
|
|
|
|
در مورد کتاب چندین پست در همین تاپیک داده ام و به اندازه ی کافی توضیح داده ام ... لطفا صفحات قبلی رو مطالعه بفرمایید ... یک کتاب خیلی خوب و جالب جدید دیده ام و خودم در حال مطالعه ی آن هستم که به زودی در همین تاپیک آنرا به طور کامل معرفی می نمایم ...
__________________
دیدی از Pow استفاده کردی ؟!!!!!!!!!!!  اصلا" هدف من چیز دیگه ای بود..... بذار سوال اصلی رو که همون یکی از پروژه هامون بود بذارم. یه برنامه بنویسید که عدد و مبنا رو از کاربر بگیره و عدد در مبنای 10 تحویل کاربر بده. من که تو زبان C فرمول pow رو نخونده بودم ، میخوام بدون این فرمول مسئله بالا رو بنویسی . |
|
|
ببخشید میشه من یک سوالی از شما بپرسم : شما تا حالا با ++C کد نوشتید ؟ آخه IQ برنامه ی قبلی برنامه ای است که تازه من نتونم اونرا بنویسم تازه بدون pow ... این یک نوع فحش حساب میشه ...  لطفا دیگه تکرار نشه ...  آخه IQ اگه دقت کنی ( البته دقت نمیخواد فقط چشمهات رو باز کنی ) میبینی من یک بار بدون pow نوشته ام و برای هر چه کاملتر شدن کد یک بار هم با pow نوشته ام و چون شما فرموده بودید بدون pow اونها را comment کردم ... یعنی از هر 2 روش ... ایشالا میدونی comment چیه دیگه ...  سبز رنگه و compile هم نمیشه ...  یک بار دیگه یک سوال مهم : شما مبانی رو پاس کرده اید ؟؟؟؟؟ مهم نیست ... ولی دیگه نبینم به کسی در تاپیک توهین بشه ...  من برام مهم نیستش ولی آشیانه آبرو داره ...
__________________ ========================= ***A Man With Nothing To Lose***
.
آهان در مورد سوالتون در مورد مبنا ... آخه چند بار بگم صفحات و پستهای قبلی رو نگاه کنین ... یک بار هم که شده قوانین رو مطالعه بفرمایید : http://ashiyane.org/forums/showthread.php?t=9497در مورد مبنا من قبلا یک کد کانل و خوب گذاشته ام ... این برنامه یک عدد به همراه مبنایش ( هر چی که می خواد باشه ) به همراه عدد بعدی که مبنای خواسته شده است ( هر چی که می خواد باشه ) میگیره بعد نتیجه رو تحویل میده ... اینم لینکش که قبلا هم داده ام :   http://h1.ripway.com/omid55/c++/Radix.rar
دلم نمیخواد بیشتر از این قضیه کش پیدا کنه ... لطفا هم اول مطمئن شوید بعد پست بدید ... من دوست دارم بچه ها بیان و سوال مطرح کنن بقیه یا من حلش کنیم و به هم کمک کنیم نه اینکه بگیم : " دیدی نتونستی بدون pow بنویسی !!! " امیدوارم بچه ها با هم خیلی بهتر از این صحبت کنند ...  من بازم آموزش میذارم ...  به همراه مثال ...
__________________
برنامه 2
اینم یک مثال خیلی کامل شئ گرای مناسب در مورد اعداد مختلط ( complex ) به همراه تعریف چنیدن operator به حالت های دوست و عضو برای یادگیری تعریف اپراتور ها در زبان ++C و کار با آنها ... مثال جامعی است به همراه استفاده از اپراتورهای مختلف در main به همراه چندین مثال در main ... امیدوارم استفاده ی کامل از آنرا ببرید ...   پيوست 4015اینم لینک دانلود : http://h1.ripway.com/omid55/c++/Progr02.rar
خیلی ممنون Azazel جون که اینطوری از من حمایت می کنید ...   من قول میدم این تاپیک رو خیلی خیلی بهتر از اینها هم بکنم ... به همه ی سوالات دوستان هم ان شاء الله جواب می دم ... فقط یکم به من مهلت بدید تا یک سری از کارهام رو راست و ریست کنم ... با آموزشهای بهتر و بیشتر برمی گردم ...  فعلا یا حق
__________________ ========================= ***A Man With Nothing To Lose***
اول از همه سلام ... خیلی خیلی خیلی خیلی خیلی ببخشید که چند وقتی نبودم و تاپیک رو زمین مونده بود ... یک تعطیلات نوروزی که بیشتر نداریم که آخه ... من هم یکم استراحت کردم بعدشم دیگه وقت برای تایپ مقاله و آموزش و کد نکردم ... از همه ی دوستان به خاطر نبودنم به خصوص در این تاپیک عذر می خوام ... آخه میدونین دوستان من کدها یا آموزشهایی که در این تاپیک گذاشته ام , می گذارم , و ان شاء الله خواهم گذاشت رو از جایی copy و paste نمی کنم یا از روی کتابی نمی نویسم . همش رو خودم از اول تا آخر می نویسم به همین خاطر نوشتن کدها و آموزشها کار وقت گیریه و من هم وقت اضافی چندانی بدبختانه ندارم به همین خاطره که بعضی وقتا پستهام دیر میشه ... خلاصه امیدوارم بهم خرده نگیرید ... خوب بریم سر وقت کارهای امروز ...
__________________ ========================= ***A Man With Nothing To Lose***
ببخشید که من نبودم و جواب سوالتون رو هم دفعه ی پیش ندادم ولی به نظر من این سوالات شما بی مورد است . میدونی دوست من اولا من این تاپیک رو زدم که زبان ++C را به صورت پایه ای و کامل و به طور ریشه ای آموزش بدم به صورتی که اگر کسی برای اولین بار میخواد کد نویسی یاد بگیره و پیشرفت کنه این تاپیک بتونه به اون فرد کمک کنه ان شاء الله ولی همینطور که پیش میره به قسمتهای پیشرفته و سخت تر هم میرسیم ( اگه خدا بخواد ) . پس به نظر من چنین کاری خیلی به تنظیم و دقت عمل نیاز داره یعنی بایستی یک ترتیب و در واقع یک سیلابسی رعایت بشه . شما با این سوالاتتون دارید یک دفعه می پرید روی پله ی آخر و به نظر من این به ضرر بچه ها میتونه تموم بشه ... من عاجزانه از بچه ها این درخواست رو دارم لطفا سوالاتی رو در تاپیک مطرح کنید که به میزان آموزشها و در واقع Level آنها نزدیک باشه تا از موضوع بیخودی پرت نشیم . اگه سوال از مطالب و مبحثهای قبلی دارید حتما بپرسید ولی در مورد مطالب بعدی لطفا بحث به میان نیاورید . اگه سوالی در مورد مطالب و موضوعات بعدی دارید لطفا از طریق پست خصوصی یا حتی chat مطرح نمایید . ID من که خیلی تابلو شده =>ah_walid111_jan@yahoo.com. پس لطفا حق اعضا رو بیهوده زیر پا نذارید ...   در مورد سوالتون هم که مورد بحث گرافیکی در زبان هستش من حداقل 4 یا 5 پست در صفحات قبلی اعم از کد به عنوان مثال و pdf برای آموزش بهتر و بیشتر و آموزشهای خودم داده ام که در جواب یکی دیگر از دوستهامون هستش ولی دیگه نمی خوام بیش از این بحث خودم رو منحرف کنم ...  پیشاپیش از دوستانی که قوانین رو رعایت می کنن کمال تشکر رو دارم ... 
__________________
خوب بحث ما به شئ گرایی رسید ... قبل از بحث Object Oriented که بحث خیلی خیلی مهمیه لطفا هر سوالی از مطالب قبلی دارید و یا مثال Functional ی که می خواهید حتما بگید ... من قول داده بودم یکم در مورد لزوم شئ گرایی و مزیتهای آن صحبت کنم ... الوعده وفا ===>>>>>>>>>>      یکی از دلایلی که همه می گویند از زبانهای جدید استفاده کنید به خاطر همین شئ گرایی هستش . زبانهای جدید مثل VB و JAVA و مخصوصا ++C و #C این قابلیت را دارا می باشند . شئ گرایی یعنی اینکه شما یک برنامه ای که می خواهید بنویسید را به چندین موجود یا به عبارتی دیگه مدل یا المان خیلی کوچک ( module ) که هر کدام یک کار خیلی ساده و کوچک و قابل فهم را انجام می دهند تقسیم کنید . یعنی این که شما یک کار بزرگ به چندین کار کوچک تقسیم کنید که همه ی آن کار های ساده و کوچک در کنار هم کار آن کار بزرگ رو اصطلاحا انجام می دهند . به عنوان مثال یک کارخانه ی اتومبیل سازی را در نظر بگیرید . برای ساختن یک اتومبیل 2 راه وجود دارد : 1- یک قسمت در کارخانه طراحی کنیم که اتومبیل رو به طور کامل طراحی کند و آن را ساخته وتحویل مشتری بدهد . 2- ده ها قسمت در کارخانه طراحی کنیم که هر کدام یک قسمت از اتومبیل را می سازند و سپس یک قسمت هم کار همه ی قسمت ها را با هم تنظیم می کند و ارتباط بین آنها را برقرار می کند و هم آنها را در کنار هم قرار می دهد و اتومبیل را می سازد و هدف ما را بر آورده می کند . ( این قسمت در واقع در کد نویسی مصداق همان قسمت main برنامه هستش )( بعدا در مورد کدنویسی به این شیوه صحبت به صورت کامل خواهم کرد ) شاید از خواندن راه اول حتی خندتون بگیره ولی باید بهتون بگم این دقیقا همان کاریه که ما تا حالا انجام می دادیم  ( یعنی تا قبل از مثال های شئ گرایی چون من چندین مثال در مورد شئ گرایی هم در پست های قبلی داده ام ) . پس به نظرتون با این مثال کاملا روشن و واضح بهتر نیست ما هم در کد نویسی از راه دوم استفاده کنیم ؟  البته باید گفت برای برنامه های ساده و کوچک راه اول که همون برنامه های اصطلاحا functional قبلی خودمونه بهتر هستش ولی وقتی بحث از برنامه های بزرگ یا مهم یا پروژه ها به میان میاد راه دوم خیلی خیلی بهتر خواهد بود .  
__________________ ========================= ***A Man With Nothing To Lose***
مزیتهای شئ گرایی در برنامه نویسی
مزیتهای راه دوم یا همان شئ گرایی در برنامه نویسی ( Object Oriented ) : کد نویسی شئ گرا فایده و مزیتهای بسیاری دارد که من به چندتاشون اشاره می کنم : یکی از مهمترین مزیتهایش اینه که کد شما خیلی واضح میشه یعنی خیلی راحت میشه کد را فهمید و آن را درک کرد چون برنامه به چندین بخش تقسیم شده که کار هر کدام خیلی ساده و معلوم و مشخصه و به راحتی می توان آنها را در کنار هم متوجه شد . این امر به شما کمک می کنه که بتونید کدتان را همیشه خیلی راحت بخوانید و بفهمید و اگر به فرد دیگری هم خواستید بدهید آن فرد هم از کدتان سر در بیاورد . مثلا چند سال پیش شرکت Microsoft کد ویندوز اولیه ی خودش رو روی وب گذاشت . همانطور که می دانید سیستم عامل پر طرفدار جهان که همان Windows خودمونه بوسیله ی ++C نوشته شده است . اگر به کد این Windows اولیه یک نگاه می انداختید می دیدید که از شاید میلیون ها module یا قسمت خیلی کوچک و ساده و قابل فهم و به همراه چنیدن خط Comment در کنار هر قسمت تشکیل شده است . برای هر کار خیلی ساده و کوچکی یک Class نوشته بودند و تابع در آن تعریف کرده بودند . همه ی این قسمت ها در کنار هم یک سیستم عامل مشهور و دوست داشتنی مثل Winodows را تشکیل می دهند . مزیت دیگر شئ گرایی اینه که شما وقتی یک برنامه ی خوب می نویسید و در بازار وارد می کنید اگر برنامه ی شما مشهور و پر خریدار بشه ( ایشالا !!!!!!!! ) باید بتونید در این صحنه ی مبارزه و رقابت همچنان باقی بمونید و این امر فقط وقتی ممکنه که برنامه ی شما اصطلاحا قابلیت update داشته باشد یعنی شما بتوانید مثلا بعد از یک سال Version جدید برنامتون را به بازار عرضه کنید تا همچنان برنامه ی شما مشهور بماند . وقتی شما کدتان را به صورت شئ گرا بنویسید خیلی خیلی راحت تر و بهتر میشود آن را ارتقا داد و بهبود بخشید به همین خاطر باز هم Object Oriented خودش را نشان می دهد . به عنوان مثال شاید اغلب شما دوستان گرامی نرم افزار Zarnegar را یادتون هست . یک زمانی این نرم افزار در ایران حرف اول را در زمینه ی نرم افزارهای Editor متن و تایپ میزد ولی چون نتونست خودش رو ارتقا بده و اصطلاحا Update کنه کم کم فراموش شد و کنار گذاشته شد و نرم افزار قدرتمند Word جای آن را به طور کامل گرفت چون نرم افزار Word هر سال یک ورژن جدید و جالب بیرون می دهد که کاملا از ورژنهای قبلیش متمایزه و برای من که خیلی جالبه ( اینا چقدر هر سال ایده های نو دارند !!!!!!!!!!! ) هر چقدر در مورد شئ گرایی حرف بزنیم کم هستش ... من بازم در مورد این موضوع حتما می نویسم ... امیدوارم با این توصیفات تقریبا کامل به همراه مثال توانسته باشم دلیل و ضروریت Object Oriented را بیان نموده باشم ...     
__________________ ========================= ***A Man With Nothing To Lose***
راستی یکی از دوستان یک سوال در Messenger از من پرسید که مربوط به بحثهای قبلی هستش ... ساده هستش ولی برای مرور حداقل خوبه ... سوال ایشان : یک کد بنویسید که شکل پروانه ای با دو مثلث متساوی الساقین در روبروی هم رسم کند . یعنی در ورودی یک عدد بگیرد و شکل را رسم نماید . من هم اطاعت امر کردم و کدش را نوشتم و در تاپیک قرار می دهم ... امیدوارم ایشان هم استفاده کنند ...     Butterfly.rarاینم لینک دانلود : http://h1.ripway.com/omid55/c++/Butterfly.rar
__________________
برنامه 3
اینم یک مثال خیلی کامل شئ گرای دیگر که سوال آن به صورت زیر هستش : کلاس fmatrix را برای تعریف ماتریسهای 2 بعدی اعداد اعشاری تایپ float تعریف کنید . الف - عملیات پر کردن ماتریس با خواندن از کیبورد , اطلاع از محتوای یک خانه از آن و اطلاع از ابعاد ماتریس را برای آن به صورت توابع عضو ایجاد کنید . ب - اپراتور عضو >> برای چاپ محتویات ماتریس و اپراتورهای دوست + و - برای جمع و تفریق دو ماتریس هم سایز را نیز اضافه نمایید . در صورتیکه ماتریسها هم سایز نباشند برنامه بایستی اعلام خطا کند . ج - در برنامه ی main تعدادی ماتریس از کلاس fmatrix تعریف و عملیات فوق را برای آنها انجام دهید . اینم جواب این سوال ===>>>>>>     Progr 03.rarاینم لینک دانلود : http://h1.ripway.com/omid55/c++/Progr03.rar
__________________
مثال برای کار با فایلها و کلاس fstream
بچه ها این هم یک مثال کامل در رابطه ی کار با فایلها البته با مثالهای قبلی فایلها متفاوت است چون این بار بوسیله ی کلاس fstream و ایجاد شئ از آن و کار با آنهاست و می توان گفت در واقع به نوعی شئ گرا است ... در این مثال کار با string ها هم وجود دارد ... از دو تابع خیلی ساده که در هدر string قرار دارند در این مثال استفاده شده است که به اختصار در مورد آنها توضیح می دهم : 1- تابع strlen که در واقع به صورت strlen(string name) استفاده می شود یا به عبارت علمی تر:
کد: size_t strlen(const char *_Str) استفاده می گردد طول یک رشته را به ما می دهد البته این تابع طول رشته را به همراه کارکتر null یا به عبارتی دیگر '\0' به ما می دهد پس طول واقعی رشته که ما با آن سر و کار داریم معادل یکی کمتر از عدد داده شده است . این تابع حاصل را به صورت size_t بر می گرداند پس اگر long long تعریف شود بهتر است و Warning هم نمی دهد . 2- تابع stricmp که در واقع دو رشته را می گیرد و با هم مقایسه می کند . اگر دقیقا یکسان بودند مقدار 0 بر می گرداند در غیر اینصورت مقداری غیر صفر بر می گرداند. تابع trimstr که خودمان در این مثال تعریف نموده ایم هم blank های انتهای هر رشته را پاک می نماید . مثال ساده ولی مفیدی است ...  امیدوارم مورد استفاده قرار گیرد ...    WorkWithFiles.rarاینم لینک دانلود : http://h1.ripway.com/omid55/c++/WorkWithFiles.rar
اولا خواهش میکنم وظیفه هستش ... ثانیا خیلی ممنون که نظر می دهید ... ثالثا به نظر من ++C خیلی برنامه ی خوب و کاملی هستش و آموزش آن هم ضروری ... رابعا اگر دقت کرده باشید در این تاپیک من همیشه به بچه ها ورژن 2008 یا حداقل 2005 را توصیه میکنم پس برنامه ی قدیمی و کهنه ای را آموزش نمی دهیم ... ( در سال 2008 هستیم !!!!!!!!!) خامسا این قضیه ی کرک کردن و استفاده ی میلیونها نفر در ایران از برنامه ها به خاطر نبود قانون copy right هستش و روز قیامت هم خودشون جوابگو هستن به من و شما دیگر ربطی ندارد ...    البته خودمونیم اگر این قانون بود که هیچ کس دیگر نمی تونست با خرید یک CD فوقش 2000 تومنی 2000000 نرم افزار توپ و جدید را بخرد در ایران ...    در کل از شما به خطر پستتان متشکرم ...
__________________
ببخشید درست می فرمایید , من درست متوجه صحبتتون نشدم ... خیلی ممنون که باز هم پست دادید ... تقصیر خودم شد یکم عجله کردم ...    در کل از شما سپاس گذارم ... من خیلی خوشحال میشم اگه شما هم در این تاپیک پست بدید و آموزش یا مثال بذارید و از شما و همه ی اعضای گل دیگه هم همین مهم را خواستارم ... بچه ها لطفا شما هم در بحثها شرکت کنید و آموزش و مثال بذارید تا همه استفاده ببرند ... قربان همه ی شما ...      
جواب
یکی از دوستان عزیز از طریق Messenger یک سوال در مورد مثالهای قبلی و مبحثهای ماقبل مطرح نمودند و یک کد خواستند ... اولا خیلی ممنون که کدها و مثالهای تاپیک را مطالعه می فرمایید ولی از همه ی دوستان می خواهم اگر سوال در مورد مبحثهای قبلی یا کدها دارند در تاپیک مطرح کنند تا بقیه هم استفاده ببرند ان شاء الله ... خوب سوال ایشان این بود که در یکی مثالهای ابتدایی که در آن میانگین دانشگاه از طریق حلقه های تو در تو for بدست می آمد آیا می توان این کد را از طریق توابع هم نوشت در حالی که یک تابع برای چاپ نمرات باشه ... و خلاصه یک سری تابع و کد جدید ...  اینم جوابتون :   Average.rarاینم لینک دانلود : http://h1.ripway.com/omid55/c++/Average.rar
__________________
سلامی دوباره
سلام به همه ی دوستان گلم ... ببخشید که چندوقته نیستم ... به خدا امتحان و کار و دردسر احاطه ام کرده ... امروز چند تا مثال توپ و جالب آوردم امیدوارم لذتشونو ببرید ...
str2array
صورت سوال : این یک مثال است که درآن یک رشته از ورودی گرفته می شود و در یک آرایه ریخته میشود که 7*11 هستش و این کار مرتبا با یک فاصله در آرایه تکرار می شود تا اینکه آرایه دیگر جای یک رشته ی کامل را نداشته باشد آنگاه کل آخرین رشته که ناقص بود پاک می گردد ... این سوال را یکی از دوستان عزیز در messenger از من پرسیدند من هم گفتم در تاپیک هم قرار بدهم ...    str2array.rarاینم لینک دانلود : http://h1.ripway.com/omid55/c++/str2array.rar
خوب این هم دو کد در جواب یک دوست عزیز دیگرم ... یکی در مورد کار با struct ها و تعریف اشیا از یک کلاس و استفاده از عملگر point to به شکل <- در کد در هنگام تعریف یک شئ از کلاس یا struct به صورت اشاره گر ... دیگری هم با در مورد کار با رشته ها ...      Ans.rarاینم لینک دانلود : http://h1.ripway.com/omid55/c++/Ans.rar
find
اینم یک کد دیگه ...  صورت سوال : در ابتدا از ورودی یک رشته ی کوتاه و یک رشته ی بلند را بگیرد و سپس عملیات جستجو در رشته ی بلند برای پیدا کردن رشته ی کوتاه انجام گردد و در نهایت تعداد دفعه ی یافت شده در کنسول نمایش داده شود ...  کد خوبیه ...   http://www.ashiyane.org/forums/attac...1&d=1210225171اینم لینک دانلود : http://h1.ripway.com/omid55/c++/find.rar
__________________ =========================
چاپ
random access
اینم یک کد به عنوان مثال از کار کردن با فایلهای باینری با دسترسی تصادفی ( random access ) کامل و به همراه main هم هست و البته شئ گرا هم هستش ... در کل برای کار با فایلهای باینری با دسترسی تصادفی فقط باید اولا در هنگام باز کردن به صورت زیر عمل گردد :
کد: fstream f("test.dat",ios::in | ios::out | ios::binary); و از توابع seekg و seekp استفاده شود :   VmArray.rarاینم لینک دانلود : Ripway.com - fast, free file hosting and website hosting
__________________
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
چشم دوست عزیزم ... اولا به آشیانه خوش آمدید ... ثانیا حتما قوانین رو کامل مطالعه بفرما ... ثالثا در مورد pointer ها و کار با آنها چندین مثال ساده قبلا داده ام ... رابعا حتما حتما باز هم در مورد کار با آنها در همین تاپیک مطلب می نویسم ... مطمئن باشید اگه همه ی مثالها را download کرده و بخونید و آموزشها را هم مطالعه کنید و آموزشهای بعدی pointer هم ارائه گردد هیچ مشکلی در ++C نخواهید داشت ...  فقط خواستار دعای شما دوستانیم ... 
بچه ها من به زودی بر می گردم و جواب تمام سوالات رو میدم و آموزشهای جدید با مثالهای متنوع میذارم ... روی همین تاپیک توپ ... قول میدم ... بازگشت اژدها ...  
__________________ ========================= ***A Man With Nothing To Lose***
حاجی ماشروع کردیم به دانلود آموزش ها ولی... 1- این برنامه که 5 عدد میگیره نه 6 تا !! 2- یه مثال با حلقه for میتونی برام بنویسی که توانهای مختلف (n ها)یک عدد رو حساب کنه ، ( X0,X1,X2,...) و هر بار با مقدار جدید x ، فرمولی مثل S=R-Xn رو در خروجی چاپ کنه. خواهشا" از Pow استفاده نشود. |
|
|
اون 6 و 5 اشتباه چاپی است ... edit شد ... ( خوبه ) خودمونیم شما مبانی رو پاس کردید ؟؟؟ جوابش خیلی ساده است اما با این حال جوابش رو میذارم که نگید امید ... است البته با pointer نوشته ام ( اینم یک تمرین ساده ی دیگه برای اشاره گر ها )   Answer.rarاینم لینک دانلود : http://h1.ripway.com/omid55/c++/Answer.rar
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
سلام ولید جان ، من با دیدن این تاپیک امروز عضو سایت شدم. (خوش اومدم!! ) رشته ی دانشگاهیم مهندسی نرم افزاره و تو مبانی کامپیوتر و برنامه سازی به ما زبان C رو آموزش دادند که متاسفانه من تا یه جایی این زبان رو یاد گرفتم و در جلسات پایانی که بحث اشاره گرها و آرایه ها.... مطرح شد ، چیز زیادی دستگیرم نشد. در واقع مطالب ساده زبان C رو میدونم. بزرگترین شاهکارمم این بود که واسه پروژه دو تا برنامه ، (یکی حدس عدد و دیگری تبدیل عدد در مبنای غیر 10 به 10) رو نوشتم !! خوب خوشبختانه درس رو با نمره 15 پاسوندیم..... حالا رسیدیم به برنامه سازی پیشرفته که ++c داره اذیتم می کنه... استاد این ترممون بسیار سخت گیر در درس ونمره است ، و درس هارو هم طوری توضیح میده که تنها دانشجویانی مطلب رو می گیرند که حتما" حتما" C رو خیلی خوب بلد باشند. 
به نظرت برای اینکه این ذهن ما ، ++C رو خوب و روان درک کنه ، باید چیکار کنم ؟! همین کتاب ++Cمهندس ابراهیم زاده قلزم رو از اول شروع کنم به خوندن خوبه ؟! تو کتاب C جعفر نژاد قمی(که ساده هم توضیح داده) ، به قسمت های پیچیده تر مثل پوینتر و آرایه ها میرسم ، چیزی دستگیرم نمیشه... منتظر نظرات کارشناسانه ی شما هستیم...
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اولا من خیلی کمتر از اونی هستم که من رو " استاد " خطاب کنید من خاک زیر پای همه ی بچه ها هم نیستم ...  سینا جون به شما قبلا هم عرض کردم که اگر نظر من حقیر را می خواهید زبان توپ و کامل ++C را کامل و حرفه ای یاد بگیرید . بله تقریبا همه ی دستورات در حالت Win32 Console استفاده میشه در حالت App هم کاربرد دارد البته اگه منظورتون C# یا بهتر از اون C#.Net است باید بگم که دستورات یکم متفاوته اما همانطور که گفته ام ++C پایه و پیشنیاز آموزش C# و C#.Net است . پس بهتره که شما اول ++C را به طور کامل یاد بگیرید بعد برید سر وقت C# و ... همانطور که باز هم گفته ام در ++C هم قابلیت نوشتن برنامه با گرافیک ویندوزی هم وجود دارد ( یادمون نره که خود ویندوز را با ++C نوشته اند )( در پستهای قبلی هم در همین تاپیک یک مثال از آن و هم یک pdf آموزشی از آن را برای دوستان گذاشته ام ) البته خیلی مشکله اما این مشکل بودن به خاطر اینه که شما در ++C از پایه به کد نویسی می پردازید و این امر باعث میشه شما بتونید کارهای خیلی بدیع و جدید و جالب با آن بکنید که همین یکی از دلایلی است که ++C را اینقدر قوی کرده است ... درست مثل اینه که شما یک کارخانه ی مونتاژ داشته باشید . در این صورت می توانید یک یا چند چیز معمولی که خیلی ها قبلا آن را ساخته اند یا حداقل می توانند آن را بسازند درست نمایید اما اگر یک کارخانه ی ساخت قالب و قطعات اولیه یا مثلا تراشکاری و فرزکاری ( یا هر چی شبیه با اینها ) داشتید می توانستید همه چیز را از ابتدا جدید با طرحی و شکلی نو بسازید و به این ترتیب دست شما بازتر خواهد بود البته حالت دوم کمی سخت تر و مشکل تر است ولی به امتحانش می ارزد ...
__________________
برنامه 1
یک سوال ساده برای تمرین روی کلاسها و وراثت آنها : كلاس فرزند Array به نام NewArray را تعريف كنيد كه داراي توابع عضو جديد زير باشد : 1- تابع printall براي چاپ كليه عناصر يك بردار بصورت سطر به سطر . 2- توابع Min و Max كه مقادير ماكزيموم ومينيموم يك بردار را مي يابند و برمي گردانند . 3-تابع resize براي تغيير اندازه يك بردار . اگر سايز جديد بزرگتر است عناصر بردار در خانه ها ابتدايي قرار مي گيرند و اگر بزرگتر است عناصر انتهايي بردار حذف مي شوند . سپس يك برنامه اصلي main بنويسيد كه به كمك اشيائي از كلاس NewArray شماره دانشجويي و نمره 10 نفر دانشجو را از صفحه كليد بخواند و در بردارهايي ذخيره نمايد . تايپ هر دو بردار ميتواند double باشد . سپس شماره هاي دانشجويي و نمرات را چاپ نمايد. شاگرد اول و شاگرد آخر كلاس را نيز بيابد و اطلاعات انها را چاپ كند . سپس سايز بردار شماره دانشجويي را به 20 تغيير دهد و آنرا مجددا چاپ نمايد . اینم جوابش ===>>>   Progr 01.rarاینم لینک دانلود : http://h1.ripway.com/omid55/c++/Progr01.rar
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
بازم معذرت می خوام که سوالها رو دیر جواب میدم ... )): واقعا سرم شلوغه ( کلی بدبختی ریخته روی سرم ) خلاصه اگه یک وقت جواب سوالات یا صحبتها دیر میشه لطفا خرده نگیرید و هم این امر را به عنوان بیشعوری یا بی تفاوتی ام نذارید ... سینا جان , دوست من به نظر من همه ی زبونها خوبند . اگه هر زبونی رو یادبگیری به نفعت است اما اصل کدنویسی به بازبودن ذهن و تفکر و حدس زدن خوب الگوریتم است ( البته زبون هم بی تاثیر نیست ) . اگر شما بتونید در هر مورد و هر سوال مطرح شده یک نظر بدهید و یک راه حل ارائه بدهید و یک روش پیدا کنید یک کدنویس خوب هستید ( شک نکنید ) که اینکار را در آموزش زبونها بوسیله مبحث مهمی به نام فلوچارت یاد می دهند . فلوچارت مزیتی که دارد مستقل از زبان است یعنی وقتی شما توانستید الگوریتم یک برنامه رو در حالت فلوچارت طراحی کنید میتونید اونرا به تمام زبان ها هم کد کنید . البته همه ی افراد فلوچارت را چیز مسخره و زایدی می انگارند ولی باید گفت که با تمرین روی همین موضوع به نظر وقت گیر و مزاحم می توان کدنویسی را شروع کرد و الگوریتم نویسی را هرچه بیشتر تقویت کرد . به خاطر همینه که اگر کسی با فلوچارت شروع کرد و بعد کدنویسی را با یک زبون خوب به صورت پایه ای و بنیادی ادامه داد از آن وقت به بعد یادگیری سایر زبونها خیلی سخت نیست . تفاوت زبانها با هم فقط در شکل کدنویسی و دستوراتشان است و اگر فقط یکم وقت روی هر زبونی بذارید می تونید دستوراتشون رو یاد بگیرید و از اونجا به بعد دوباره حدس الگوریتم و روش حل مسئله میاد وسط ... اما در مورد زبان خوب برای شروع : اگه پستهای قبلی خود من رو مطالعه بفرمایید متوجه میشید که در این مورد کامل توضیح داده ام ... ولی به خاطر گل روی شما و آشیانه ای ها یک گریز دیگر هم میزنم : ببنید به نظر من بهتره با زبانی شروع کنید که اولین جدید باشه ثانیا قوی باشه و معروف ( تا بتوان در موردش همه جا مطلب و کد پیدا کرد ) اگه از قیافه ی console خوشتون نمیاد به نظر من بهترین گزینه فقط C# است . من شخصا عاشقشم و به نظر من قوی ترین زبونه ( به نظر من حقیر ... ( به زبونهای دیگه توهین نشه ) ) قیافه ی Windows ای هم داره ولی شما برای اینکه به C# برسید باید پله ی C و ++C را حتما گذرانده باشید . البته زبان C خیلی خوبه ولی زبان ++C هم خیلی کاملتره به خصوص .NET اش که عالیه ... البته در این تاپیک 100 دفعه گفتم سعی کنین از کامپایلر Microsoft Visual C++ 2008 Express Edition یا حداقل Microsoft Visual C++ 2005 Express Edition استفاده کنید . خوبیه ++C اینه که برای شروع کردن باهاش نیازی نیست که زبون C را بلد باشید ( البته اگه بلد باشید بهتره ) . به نظر من یک راست برید سر وقت ++C خیلی بهتره اما اگه کلاستون آموزش C هم هست اونرا از دست ندید همونطور که گفتم زبون زبونه ( بالاخره کلاس C هم کلی صفا داره ) در ورژن .NET اولا به مقدار خیلی زیادتری Library ها به خصوص در بخش MDSN اضافه شده و کدنویسی برای وب ( در کنار زبان Java Script ) خیلی گسترده تر شده و به نظر من اگه کسی ++C را اصولی یاد بگیره هیچ زبون دیگه ای نیاز نداره . بازم میگم سعی کنید همیشه در حال یادگیری باشید ( حالا هر چی ... ) سعی میکنم بازم بعدا در مورد کامپایلرهای مختلف
بازم معذرت می خوام که سوالها رو دیر جواب میدم ... )): واقعا سرم شلوغه ( کلی بدبختی ریخته روی سرم ) خلاصه اگه یک وقت جواب سوالات یا صحبتها دیر میشه لطفا خرده نگیرید و هم این امر را به عنوان بیشعوری یا بی تفاوتی ام نذارید ... سینا جان , دوست من به نظر من همه ی زبونها خوبند . اگه هر زبونی رو یادبگیری به نفعت است اما اصل کدنویسی به بازبودن ذهن و تفکر و حدس زدن خوب الگوریتم است ( البته زبون هم بی تاثیر نیست ) . اگر شما بتونید در هر مورد و هر سوال مطرح شده یک نظر بدهید و یک راه حل ارائه بدهید و یک روش پیدا کنید یک کدنویس خوب هستید ( شک نکنید ) که اینکار را در آموزش زبونها بوسیله مبحث مهمی به نام فلوچارت یاد می دهند . فلوچارت مزیتی که دارد مستقل از زبان است یعنی وقتی شما توانستید الگوریتم یک برنامه رو در حالت فلوچارت طراحی کنید میتونید اونرا به تمام زبان ها هم کد کنید . البته همه ی افراد فلوچارت را چیز مسخره و زایدی می انگارند ولی باید گفت که با تمرین روی همین موضوع به نظر وقت گیر و مزاحم می توان کدنویسی را شروع کرد و الگوریتم نویسی را هرچه بیشتر تقویت کرد . به خاطر همینه که اگر کسی با فلوچارت شروع کرد و بعد کدنویسی را با یک زبون خوب به صورت پایه ای و بنیادی ادامه داد از آن وقت به بعد یادگیری سایر زبونها خیلی سخت نیست . تفاوت زبانها با هم فقط در شکل کدنویسی و دستوراتشان است و اگر فقط یکم وقت روی هر زبونی بذارید می تونید دستوراتشون رو یاد بگیرید و از اونجا به بعد دوباره حدس الگوریتم و روش حل مسئله میاد وسط ... اما در مورد زبان خوب برای شروع : اگه پستهای قبلی خود من رو مطالعه بفرمایید متوجه میشید که در این مورد کامل توضیح داده ام ... ولی به خاطر گل روی شما و آشیانه ای ها یک گریز دیگر هم میزنم : ببنید به نظر من بهتره با زبانی شروع کنید که اولین جدید باشه ثانیا قوی باشه و معروف ( تا بتوان در موردش همه جا مطلب و کد پیدا کرد ) اگه از قیافه ی console خوشتون نمیاد به نظر من بهترین گزینه فقط C# است . من شخصا عاشقشم و به نظر من قوی ترین زبونه ( به نظر من حقیر ... ( به زبونهای دیگه توهین نشه ) ) قیافه ی Windows ای هم داره ولی شما برای اینکه به C# برسید باید پله ی C و ++C را حتما گذرانده باشید . البته زبان C خیلی خوبه ولی زبان ++C هم خیلی کاملتره به خصوص .NET اش که عالیه ... البته در این تاپیک 100 دفعه گفتم سعی کنین از کامپایلر Microsoft Visual C++ 2008 Express Edition یا حداقل Microsoft Visual C++ 2005 Express Edition استفاده کنید . خوبیه ++C اینه که برای شروع کردن باهاش نیازی نیست که زبون C را بلد باشید ( البته اگه بلد باشید بهتره ) . به نظر من یک راست برید سر وقت ++C خیلی بهتره اما اگه کلاستون آموزش C هم هست اونرا از دست ندید همونطور که گفتم زبون زبونه ( بالاخره کلاس C هم کلی صفا داره ) در ورژن .NET اولا به مقدار خیلی زیادتری Library ها به خصوص در بخش MDSN اضافه شده و کدنویسی برای وب ( در کنار زبان Java Script ) خیلی گسترده تر شده و به نظر من اگه کسی ++C را اصولی یاد بگیره هیچ زبون دیگه ای نیاز نداره . بازم میگم سعی کنید همیشه در حال یادگیری باشید ( حالا هر چی ... ) سعی میکنم بازم بعدا در مورد کامپایلرهای مختلف
واقعا ترکوندی 
خیلی خیلی ممنون امید جان که اینقدر قابل میدونی و جواب میدی 
پس به این نتیجه رسیدم که C رو فول یاد بگیرم یا حداقل خوب یا بگیرم و C++ رو شروع کنم البته محیط ویژالش رو بعد اگه خدا خواست C#.NET رو شروع میکنم چون خیلی ازش شنیدم میگن هم تو وب کاربرد داره و هم تو ویندز ! پس باید واقعا مفید باشه 
درضمن فرق بین win 32 console app و win 32 applaction تو چیه ؟
البته میدونم که consol همون محیط داس و اون یکی دیگه هم محیط ویژوال ویندز !
من اینو تازه بهش دقت کردم
و سوالی که میخوام بپرسم : دستوراتی که تو win 32 consol کار برد داره ایا تو app هم یکی هست ؟؟
امیدوارم دقیقا منظورمو گرفته باشید 
و خدایی خیلی خیلی شرمندم که اینقدر اذیت میشین ولی چه کنیم که باید یه ادم بزرگتر یا همون استاد دستمون رو بگیره و راهنماییمون بکنه یا به عبارتی راه رو از چاه بهمون نشون بده 
دوست عزیزم سینا جان و سایر دوستان گل سایت از همه معذرت می خواهم که این چند روز نبودم قول میدم در روزهای آتی جبران کنم همین امروز هم با دست پر آمده ام ...  یک سری مثال کامل و توپ که همه رو خودم نوشتم فقط و فقط برای آشیانه و اعضای با مرامش ...   ( راستی این مدت که نبودم آشیانه چه خبرا بود ؟ )
__________________ ========================= ***A Man With Nothing To Lose***
ن خسته شدم ولیدی من از بین رفت خودتان می فامید و weblog من
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
امید جان من چند تا سورس c دارم ولی وقتی میخوام تو c++ یعنی همون visual 2005 اجرا کنم ارور میده
نمونشم پیوست میکنم اگه یکیشو تبدیل کنی بقیه سورسها رو خودم تبدیل میکنم البته زبان نوشته هاش ترکیه
سلام دوستان جان  هنوزم منتظر جواب سوالات بالام شرمنده که اذیت میشی ولی خدایی خیلی ذهنمو مشغول کردن !  درضمن یه سوال جدید هم که واسم پیش اومده : فرق بین نرمفزار های C# .NET با C# معمولی چیه ؟ و همچنین فرق بین C++.NET با c++ که تو مجموعه Microsoft viual stdio هست چیه ؟  البته فرق بین vb6 معمولی با اینی که تو 2005 یا همون .net هست هست رو تا جایی که میدونم اینه که درکل برای نوشتن یه برنامه خیلی از کارها اسانتر میشه و کد نویسیها کمتر میشه درکل برنامه نویس رو راحتر میکنه  به هرحال دمت گرم اگه توضیحات دیگه ای بدی و به سوالات بالا هم خواهشا جواب بده امید جان |
|
|
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اولا خیلی ببخشید دوست عزیز که جوابتون یکمی دیر شد . ( خدا شاهده سرم شلوغه ولی با این همه تا حالا نشده هر سوال رو بیشتر از حداکثر یک روز بذارم بدون جواب بمونه تو این تاپیک ) ثانیا خیلی ممنون که این سوال را مطرح کردید چون واقعا مسئله ی مهم و جالبی است . تقریبا 90% کدنویسهایی که یک زبانهایی مانند Visual Basic یا Delphi یا ... را بلد هستند و یا حداقل یکم باهاش کار کرده اند وقتی برای اولین بار با زبان C و یا ++C روبرو می شوند و قصد یادگیری آن را می کنند خیلی از این زبان و محیط آن زده می شوند و چون به خصوص برنامه های ساده ی آن در CMD باز می شود از قیافه ی برنامه بدشان می آید همچنین دستورهایش هم کاملا با VB یا Delphi یا Pascal یا ... خیلی متفاوت است . بر خلاف زبان ++C مثلا زبان VB از همان ابتدا در محیط گرافیکی Windows یا هر سیستم عامل دیگر کار می کند . ( بین خودمون هم باشه منم اولین بار از همین موضوع اجرا در Dos بدم اومد اما بعدها ... )  اطلاعات و خبرهایی که از زبان ++C شنیده اید حقیقت دارد . Windows و خیلی از برنامه ها و حتی بازیهای با کیفیت و خوش گرافیکی مشهور را با آن نوشته اند . برای مثال بازی به یاد ماندنی و توپ Max Payne رو حتما دیده اید اگر به قسمت Credits بروید در پایان لیست اسامی نوشته شده : " Coded By C++ " یک همچین بازی با حال و پرفروشی خود حاکی از قوی بودن و کامل بودن زبان ++C است . در زبان ++C چون همه ی مسائل بنیادی و ریشه ای است کامپایلر به گونه ای طراحی شده است که شما بتوانید بوسیله ی چند class و توابع مخصوص و چند Library ویژه هر کاری بکنید . در واقع زبان VB خیلی ساده تر و کار با آن راحت تر است اما شما در زبان ++C می توانید خودتان Command Button یا هر فیلد دلخواه را به صورت گرافیکی با هر قابلیت مورد نظرتان از پایه و بنیاد بسازید . ( البته کمی مشکل است ) در واقع شما قادرید بوسیله ی Header های به خصوص موسوم به MFC که توسط شرکت Microsoft طراحی شده است و توابع موجود در آنها و کلاسهای مورد نظر هر شکل گرفیکی در محیط سیستم عامل را در برنامه ی خودتان بگنجانید و برای آنها کد بنویسید و برنامه های زیبا تولید کنید . زبان ++C در وب هم خیلی مورد استفاده قرار می گیرد مثلا در فیلدهایی که Username و Password می طلبند و بعد اجازه ی Login می دهند یا اعلام Wrong Password می کنند به وفور می توان از زبان ++C استفاده کرد و ... ( اگر وقت کردم یک برنامه ی ++C تحت وب می نویسم و در تاپیک میذارم تا بفهمید که ++C یک چیز دیگس ... )    Header ها و کلاسهای MFC در سایت Microsoft یا در سایت : http://doc.ddart.net/msdn/header/include/winnt.h.htmlمی توان یافت کرد . امیدوارم کامل توضیح داده باشم در پستهای بعدی هم کمی به این موضوع خواهم پرداخت ...
__________________ =========================
این هم یک مثال برای اجرا در حالت گرافیکی Windows : ( البته ربطی به کدنویسی مقدماتی نداره و فقط برای این است که خدای نکرده نگند : نتونست یک کد هم برای مثال از این موضوع در جواب دوستمون بذاره ... ) ( از مبتدی ها معذرت و پوزش می طلبم ... )  ( راستی حتما باید MDSN روی سیستم عامل نصب باشه یا اینکه Header های MFC به طور کامل در شاخه ی include موجود باشد )   MFC.rarلینک دانلود : http://h1.ripway.com/omid55/c++/MFC.rar
__________________
اینم یک pdf یکم بزرگ که خودم هم هنوز download نکرده ام ولی به نظر جالبه ... لطفا یکی download کنه و روی یک Host خوب یا روی آشیانه بذاره تا بچه ها مرتب اسم ... و ... RapidShare رو مرتبا نبینند ... پیشاپیش Mer30 لینک دانلود pdf آموزش کار با کلاسهای MFC :   http://rapidshare.com/files/31356352...___Classes.pdf
__________________
عرض سلام خدمت اقا ولید جون استاد دوست داشتنی  .واقعا روشنم کردی چون میدونی تا حالا من یه چیز دیگه فکر میکردم که واقعا خوب شد فهمیدم من فکر میکردم این زبان c تحت win32 فرقی با محیط MFC نداره فقط یه خورده که یاد بگیرم میتونم با همین دستورات تو MFC هم برنامه نویسی کنم ! پس نگو ای دل قافل که کجای کارم  خوب حالا به نظرت کلاس C رو تو دانشگاه ادامه بدم یا نرم ؟؟ به نظرت C به درد میخوره یا نه ؟ چون همونطور که گفتم من از محیط کنسول خوشم نمیاد خیل خشکه ولی قدرتشو قبول دارم  و علاقه شدیدی به محیط ویژوال دارم حالا به نظرت چی کار کنم ؟ این کلاس رو ادامه بدم یا یه راست برم کلاس C++ یا ............... حالا درضمن ؟ من تاحالا با هیچ گونه زبان برنامه نویسی هم کار نکردم به نظرت خوبه که با همین C شروع کنم یا از برنامه های سبکتر که راحتر باشن شروع کنم مثه پاسکال ؟ حالا هرچی شما بگید من تابع امرم ولی به نظر خودم سنگ مفت گنجیشک مفت برم بهتره
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اولا خیلی ببخشید دوست عزیز که جوابتون یکمی دیر شد . ( خدا شاهده سرم شلوغه ولی با این همه تا حالا نشده هر سوال رو بیشتر از حداکثر یک روز بذارم بدون جواب بمونه تو این تاپیک ) ثانیا خیلی ممنون که این سوال را مطرح کردید چون واقعا مسئله ی مهم و جالبی است . تقریبا 90% کدنویسهایی که یک زبانهایی مانند Visual Basic یا Delphi یا ... را بلد هستند و یا حداقل یکم باهاش کار کرده اند وقتی برای اولین بار با زبان C و یا ++C روبرو می شوند و قصد یادگیری آن را می کنند خیلی از این زبان و محیط آن زده می شوند و چون به خصوص برنامه های ساده ی آن در CMD باز می شود از قیافه ی برنامه بدشان می آید همچنین دستورهایش هم کاملا با VB یا Delphi یا Pascal یا ... خیلی متفاوت است . بر خلاف زبان ++C مثلا زبان VB از همان ابتدا در محیط گرافیکی Windows یا هر سیستم عامل دیگر کار می کند . ( بین خودمون هم باشه منم اولین بار از همین موضوع اجرا در Dos بدم اومد اما بعدها ... )  اطلاعات و خبرهایی که از زبان ++C شنیده اید حقیقت دارد . Windows و خیلی از برنامه ها و حتی بازیهای با کیفیت و خوش گرافیکی مشهور را با آن نوشته اند . برای مثال بازی به یاد ماندنی و توپ Max Payne رو حتما دیده اید اگر به قسمت Credits بروید در پایان لیست اسامی نوشته شده : " Coded By C++ " یک همچین بازی با حال و پرفروشی خود حاکی از قوی بودن و کامل بودن زبان ++C است . در زبان ++C چون همه ی مسائل بنیادی و ریشه ای است کامپایلر به گونه ای طراحی شده است که شما بتوانید بوسیله ی چند class و توابع مخصوص و چند Library ویژه هر کاری بکنید . در واقع زبان VB خیلی ساده تر و کار با آن راحت تر است اما شما در زبان ++C می توانید خودتان Command Button یا هر فیلد دلخواه را به صورت گرافیکی با هر قابلیت مورد نظرتان از پایه و بنیاد بسازید . ( البته کمی مشکل است ) در واقع شما قادرید بوسیله ی Header های به خصوص موسوم به MFC که توسط شرکت Microsoft طراحی شده است و توابع موجود در آنها و کلاسهای مورد نظر هر شکل گرفیکی در محیط سیستم عامل را در برنامه ی خودتان بگنجانید و برای آنها کد بنویسید و برنامه های زیبا تولید کنید . زبان ++C در وب هم خیلی مورد استفاده قرار می گیرد مثلا در فیلدهایی که Username و Password می طلبند و بعد اجازه ی Login می دهند یا اعلام Wrong Password می کنند به وفور می توان از زبان ++C استفاده کرد و ... ( اگر وقت کردم یک برنامه ی ++C تحت وب می نویسم و در تاپیک میذارم تا بفهمید که ++C یک چیز دیگس ... )    Header ها و کلاسهای MFC در سایت Microsoft یا در سایت : http://doc.ddart.net/msdn/header/include/winnt.h.htmlمی توان یافت کرد . امیدوارم کامل توضیح داده باشم در پستهای بعدی هم کمی به این موضوع خواهم پرداخت ...
__________________ =========================
این هم یک مثال برای اجرا در حالت گرافیکی Windows : ( البته ربطی به کدنویسی مقدماتی نداره و فقط برای این است که خدای نکرده نگند : نتونست یک کد هم برای مثال از این موضوع در جواب دوستمون بذاره ... ) ( از مبتدی ها معذرت و پوزش می طلبم ... )  ( راستی حتما باید MDSN روی سیستم عامل نصب باشه یا اینکه Header های MFC به طور کامل در شاخه ی include موجود باشد )   MFC.rarلینک دانلود : http://h1.ripway.com/omid55/c++/MFC.rar
__________________
اینم یک pdf یکم بزرگ که خودم هم هنوز download نکرده ام ولی به نظر جالبه ... لطفا یکی download کنه و روی یک Host خوب یا روی آشیانه بذاره تا بچه ها مرتب اسم ... و ... RapidShare رو مرتبا نبینند ... پیشاپیش Mer30 لینک دانلود pdf آموزش کار با کلاسهای MFC :   http://rapidshare.com/files/31356352...___Classes.pdf
__________________
عرض سلام خدمت اقا ولید جون استاد دوست داشتنی  .واقعا روشنم کردی چون میدونی تا حالا من یه چیز دیگه فکر میکردم که واقعا خوب شد فهمیدم من فکر میکردم این زبان c تحت win32 فرقی با محیط MFC نداره فقط یه خورده که یاد بگیرم میتونم با همین دستورات تو MFC هم برنامه نویسی کنم ! پس نگو ای دل قافل که کجای کارم  خوب حالا به نظرت کلاس C رو تو دانشگاه ادامه بدم یا نرم ؟؟ به نظرت C به درد میخوره یا نه ؟ چون همونطور که گفتم من از محیط کنسول خوشم نمیاد خیل خشکه ولی قدرتشو قبول دارم  و علاقه شدیدی به محیط ویژوال دارم حالا به نظرت چی کار کنم ؟ این کلاس رو ادامه بدم یا یه راست برم کلاس C++ یا ............... حالا درضمن ؟ من تاحالا با هیچ گونه زبان برنامه نویسی هم کار نکردم به نظرت خوبه که با همین C شروع کنم یا از برنامه های سبکتر که راحتر باشن شروع کنم مثه پاسکال ؟ حالا هرچی شما بگید من تابع امرم ولی به نظر خودم سنگ مفت گنجیشک مفت برم بهتره
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اولا خیلی ببخشید دوست عزیز که جوابتون یکمی دیر شد . ( خدا شاهده سرم شلوغه ولی با این همه تا حالا نشده هر سوال رو بیشتر از حداکثر یک روز بذارم بدون جواب بمونه تو این تاپیک ) ثانیا خیلی ممنون که این سوال را مطرح کردید چون واقعا مسئله ی مهم و جالبی است . تقریبا 90% کدنویسهایی که یک زبانهایی مانند Visual Basic یا Delphi یا ... را بلد هستند و یا حداقل یکم باهاش کار کرده اند وقتی برای اولین بار با زبان C و یا ++C روبرو می شوند و قصد یادگیری آن را می کنند خیلی از این زبان و محیط آن زده می شوند و چون به خصوص برنامه های ساده ی آن در CMD باز می شود از قیافه ی برنامه بدشان می آید همچنین دستورهایش هم کاملا با VB یا Delphi یا Pascal یا ... خیلی متفاوت است . بر خلاف زبان ++C مثلا زبان VB از همان ابتدا در محیط گرافیکی Windows یا هر سیستم عامل دیگر کار می کند . ( بین خودمون هم باشه منم اولین بار از همین موضوع اجرا در Dos بدم اومد اما بعدها ... )  اطلاعات و خبرهایی که از زبان ++C شنیده اید حقیقت دارد . Windows و خیلی از برنامه ها و حتی بازیهای با کیفیت و خوش گرافیکی مشهور را با آن نوشته اند . برای مثال بازی به یاد ماندنی و توپ Max Payne رو حتما دیده اید اگر به قسمت Credits بروید در پایان لیست اسامی نوشته شده : " Coded By C++ " یک همچین بازی با حال و پرفروشی خود حاکی از قوی بودن و کامل بودن زبان ++C است . در زبان ++C چون همه ی مسائل بنیادی و ریشه ای است کامپایلر به گونه ای طراحی شده است که شما بتوانید بوسیله ی چند class و توابع مخصوص و چند Library ویژه هر کاری بکنید . در واقع زبان VB خیلی ساده تر و کار با آن راحت تر است اما شما در زبان ++C می توانید خودتان Command Button یا هر فیلد دلخواه را به صورت گرافیکی با هر قابلیت مورد نظرتان از پایه و بنیاد بسازید . ( البته کمی مشکل است ) در واقع شما قادرید بوسیله ی Header های به خصوص موسوم به MFC که توسط شرکت Microsoft طراحی شده است و توابع موجود در آنها و کلاسهای مورد نظر هر شکل گرفیکی در محیط سیستم عامل را در برنامه ی خودتان بگنجانید و برای آنها کد بنویسید و برنامه های زیبا تولید کنید . زبان ++C در وب هم خیلی مورد استفاده قرار می گیرد مثلا در فیلدهایی که Username و Password می طلبند و بعد اجازه ی Login می دهند یا اعلام Wrong Password می کنند به وفور می توان از زبان ++C استفاده کرد و ... ( اگر وقت کردم یک برنامه ی ++C تحت وب می نویسم و در تاپیک میذارم تا بفهمید که ++C یک چیز دیگس ... )    Header ها و کلاسهای MFC در سایت Microsoft یا در سایت : http://doc.ddart.net/msdn/header/include/winnt.h.htmlمی توان یافت کرد . امیدوارم کامل توضیح داده باشم در پستهای بعدی هم کمی به این موضوع خواهم پرداخت ...
__________________ =========================
این هم یک مثال برای اجرا در حالت گرافیکی Windows : ( البته ربطی به کدنویسی مقدماتی نداره و فقط برای این است که خدای نکرده نگند : نتونست یک کد هم برای مثال از این موضوع در جواب دوستمون بذاره ... ) ( از مبتدی ها معذرت و پوزش می طلبم ... )  ( راستی حتما باید MDSN روی سیستم عامل نصب باشه یا اینکه Header های MFC به طور کامل در شاخه ی include موجود باشد )   MFC.rarلینک دانلود : http://h1.ripway.com/omid55/c++/MFC.rar
__________________
اینم یک pdf یکم بزرگ که خودم هم هنوز download نکرده ام ولی به نظر جالبه ... لطفا یکی download کنه و روی یک Host خوب یا روی آشیانه بذاره تا بچه ها مرتب اسم ... و ... RapidShare رو مرتبا نبینند ... پیشاپیش Mer30 لینک دانلود pdf آموزش کار با کلاسهای MFC :   http://rapidshare.com/files/31356352...___Classes.pdf
__________________
عرض سلام خدمت اقا ولید جون استاد دوست داشتنی  .واقعا روشنم کردی چون میدونی تا حالا من یه چیز دیگه فکر میکردم که واقعا خوب شد فهمیدم من فکر میکردم این زبان c تحت win32 فرقی با محیط MFC نداره فقط یه خورده که یاد بگیرم میتونم با همین دستورات تو MFC هم برنامه نویسی کنم ! پس نگو ای دل قافل که کجای کارم  خوب حالا به نظرت کلاس C رو تو دانشگاه ادامه بدم یا نرم ؟؟ به نظرت C به درد میخوره یا نه ؟ چون همونطور که گفتم من از محیط کنسول خوشم نمیاد خیل خشکه ولی قدرتشو قبول دارم  و علاقه شدیدی به محیط ویژوال دارم حالا به نظرت چی کار کنم ؟ این کلاس رو ادامه بدم یا یه راست برم کلاس C++ یا ............... حالا درضمن ؟ من تاحالا با هیچ گونه زبان برنامه نویسی هم کار نکردم به نظرت خوبه که با همین C شروع کنم یا از برنامه های سبکتر که راحتر باشن شروع کنم مثه پاسکال ؟ حالا هرچی شما بگید من تابع امرم ولی به نظر خودم سنگ مفت گنجیشک مفت برم بهتره
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اولا خیلی ببخشید دوست عزیز که جوابتون یکمی دیر شد . ( خدا شاهده سرم شلوغه ولی با این همه تا حالا نشده هر سوال رو بیشتر از حداکثر یک روز بذارم بدون جواب بمونه تو این تاپیک ) ثانیا خیلی ممنون که این سوال را مطرح کردید چون واقعا مسئله ی مهم و جالبی است . تقریبا 90% کدنویسهایی که یک زبانهایی مانند Visual Basic یا Delphi یا ... را بلد هستند و یا حداقل یکم باهاش کار کرده اند وقتی برای اولین بار با زبان C و یا ++C روبرو می شوند و قصد یادگیری آن را می کنند خیلی از این زبان و محیط آن زده می شوند و چون به خصوص برنامه های ساده ی آن در CMD باز می شود از قیافه ی برنامه بدشان می آید همچنین دستورهایش هم کاملا با VB یا Delphi یا Pascal یا ... خیلی متفاوت است . بر خلاف زبان ++C مثلا زبان VB از همان ابتدا در محیط گرافیکی Windows یا هر سیستم عامل دیگر کار می کند . ( بین خودمون هم باشه منم اولین بار از همین موضوع اجرا در Dos بدم اومد اما بعدها ... )  اطلاعات و خبرهایی که از زبان ++C شنیده اید حقیقت دارد . Windows و خیلی از برنامه ها و حتی بازیهای با کیفیت و خوش گرافیکی مشهور را با آن نوشته اند . برای مثال بازی به یاد ماندنی و توپ Max Payne رو حتما دیده اید اگر به قسمت Credits بروید در پایان لیست اسامی نوشته شده : " Coded By C++ " یک همچین بازی با حال و پرفروشی خود حاکی از قوی بودن و کامل بودن زبان ++C است . در زبان ++C چون همه ی مسائل بنیادی و ریشه ای است کامپایلر به گونه ای طراحی شده است که شما بتوانید بوسیله ی چند class و توابع مخصوص و چند Library ویژه هر کاری بکنید . در واقع زبان VB خیلی ساده تر و کار با آن راحت تر است اما شما در زبان ++C می توانید خودتان Command Button یا هر فیلد دلخواه را به صورت گرافیکی با هر قابلیت مورد نظرتان از پایه و بنیاد بسازید . ( البته کمی مشکل است ) در واقع شما قادرید بوسیله ی Header های به خصوص موسوم به MFC که توسط شرکت Microsoft طراحی شده است و توابع موجود در آنها و کلاسهای مورد نظر هر شکل گرفیکی در محیط سیستم عامل را در برنامه ی خودتان بگنجانید و برای آنها کد بنویسید و برنامه های زیبا تولید کنید . زبان ++C در وب هم خیلی مورد استفاده قرار می گیرد مثلا در فیلدهایی که Username و Password می طلبند و بعد اجازه ی Login می دهند یا اعلام Wrong Password می کنند به وفور می توان از زبان ++C استفاده کرد و ... ( اگر وقت کردم یک برنامه ی ++C تحت وب می نویسم و در تاپیک میذارم تا بفهمید که ++C یک چیز دیگس ... )    Header ها و کلاسهای MFC در سایت Microsoft یا در سایت : http://doc.ddart.net/msdn/header/include/winnt.h.htmlمی توان یافت کرد . امیدوارم کامل توضیح داده باشم در پستهای بعدی هم کمی به این موضوع خواهم پرداخت ...
__________________ =========================
این هم یک مثال برای اجرا در حالت گرافیکی Windows : ( البته ربطی به کدنویسی مقدماتی نداره و فقط برای این است که خدای نکرده نگند : نتونست یک کد هم برای مثال از این موضوع در جواب دوستمون بذاره ... ) ( از مبتدی ها معذرت و پوزش می طلبم ... )  ( راستی حتما باید MDSN روی سیستم عامل نصب باشه یا اینکه Header های MFC به طور کامل در شاخه ی include موجود باشد )   MFC.rarلینک دانلود : http://h1.ripway.com/omid55/c++/MFC.rar
__________________
اینم یک pdf یکم بزرگ که خودم هم هنوز download نکرده ام ولی به نظر جالبه ... لطفا یکی download کنه و روی یک Host خوب یا روی آشیانه بذاره تا بچه ها مرتب اسم ... و ... RapidShare رو مرتبا نبینند ... پیشاپیش Mer30 لینک دانلود pdf آموزش کار با کلاسهای MFC :   http://rapidshare.com/files/31356352...___Classes.pdf
__________________
عرض سلام خدمت اقا ولید جون استاد دوست داشتنی  .واقعا روشنم کردی چون میدونی تا حالا من یه چیز دیگه فکر میکردم که واقعا خوب شد فهمیدم من فکر میکردم این زبان c تحت win32 فرقی با محیط MFC نداره فقط یه خورده که یاد بگیرم میتونم با همین دستورات تو MFC هم برنامه نویسی کنم ! پس نگو ای دل قافل که کجای کارم  خوب حالا به نظرت کلاس C رو تو دانشگاه ادامه بدم یا نرم ؟؟ به نظرت C به درد میخوره یا نه ؟ چون همونطور که گفتم من از محیط کنسول خوشم نمیاد خیل خشکه ولی قدرتشو قبول دارم  و علاقه شدیدی به محیط ویژوال دارم حالا به نظرت چی کار کنم ؟ این کلاس رو ادامه بدم یا یه راست برم کلاس C++ یا ............... حالا درضمن ؟ من تاحالا با هیچ گونه زبان برنامه نویسی هم کار نکردم به نظرت خوبه که با همین C شروع کنم یا از برنامه های سبکتر که راحتر باشن شروع کنم مثه پاسکال ؟ حالا هرچی شما بگید من تابع امرم ولی به نظر خودم سنگ مفت گنجیشک مفت برم بهتره
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اولا خیلی ببخشید دوست عزیز که جوابتون یکمی دیر شد . ( خدا شاهده سرم شلوغه ولی با این همه تا حالا نشده هر سوال رو بیشتر از حداکثر یک روز بذارم بدون جواب بمونه تو این تاپیک ) ثانیا خیلی ممنون که این سوال را مطرح کردید چون واقعا مسئله ی مهم و جالبی است . تقریبا 90% کدنویسهایی که یک زبانهایی مانند Visual Basic یا Delphi یا ... را بلد هستند و یا حداقل یکم باهاش کار کرده اند وقتی برای اولین بار با زبان C و یا ++C روبرو می شوند و قصد یادگیری آن را می کنند خیلی از این زبان و محیط آن زده می شوند و چون به خصوص برنامه های ساده ی آن در CMD باز می شود از قیافه ی برنامه بدشان می آید همچنین دستورهایش هم کاملا با VB یا Delphi یا Pascal یا ... خیلی متفاوت است . بر خلاف زبان ++C مثلا زبان VB از همان ابتدا در محیط گرافیکی Windows یا هر سیستم عامل دیگر کار می کند . ( بین خودمون هم باشه منم اولین بار از همین موضوع اجرا در Dos بدم اومد اما بعدها ... )  اطلاعات و خبرهایی که از زبان ++C شنیده اید حقیقت دارد . Windows و خیلی از برنامه ها و حتی بازیهای با کیفیت و خوش گرافیکی مشهور را با آن نوشته اند . برای مثال بازی به یاد ماندنی و توپ Max Payne رو حتما دیده اید اگر به قسمت Credits بروید در پایان لیست اسامی نوشته شده : " Coded By C++ " یک همچین بازی با حال و پرفروشی خود حاکی از قوی بودن و کامل بودن زبان ++C است . در زبان ++C چون همه ی مسائل بنیادی و ریشه ای است کامپایلر به گونه ای طراحی شده است که شما بتوانید بوسیله ی چند class و توابع مخصوص و چند Library ویژه هر کاری بکنید . در واقع زبان VB خیلی ساده تر و کار با آن راحت تر است اما شما در زبان ++C می توانید خودتان Command Button یا هر فیلد دلخواه را به صورت گرافیکی با هر قابلیت مورد نظرتان از پایه و بنیاد بسازید . ( البته کمی مشکل است ) در واقع شما قادرید بوسیله ی Header های به خصوص موسوم به MFC که توسط شرکت Microsoft طراحی شده است و توابع موجود در آنها و کلاسهای مورد نظر هر شکل گرفیکی در محیط سیستم عامل را در برنامه ی خودتان بگنجانید و برای آنها کد بنویسید و برنامه های زیبا تولید کنید . زبان ++C در وب هم خیلی مورد استفاده قرار می گیرد مثلا در فیلدهایی که Username و Password می طلبند و بعد اجازه ی Login می دهند یا اعلام Wrong Password می کنند به وفور می توان از زبان ++C استفاده کرد و ... ( اگر وقت کردم یک برنامه ی ++C تحت وب می نویسم و در تاپیک میذارم تا بفهمید که ++C یک چیز دیگس ... )    Header ها و کلاسهای MFC در سایت Microsoft یا در سایت : http://doc.ddart.net/msdn/header/include/winnt.h.htmlمی توان یافت کرد . امیدوارم کامل توضیح داده باشم در پستهای بعدی هم کمی به این موضوع خواهم پرداخت ...
__________________ =========================
این هم یک مثال برای اجرا در حالت گرافیکی Windows : ( البته ربطی به کدنویسی مقدماتی نداره و فقط برای این است که خدای نکرده نگند : نتونست یک کد هم برای مثال از این موضوع در جواب دوستمون بذاره ... ) ( از مبتدی ها معذرت و پوزش می طلبم ... )  ( راستی حتما باید MDSN روی سیستم عامل نصب باشه یا اینکه Header های MFC به طور کامل در شاخه ی include موجود باشد )   MFC.rarلینک دانلود : http://h1.ripway.com/omid55/c++/MFC.rar
__________________
اینم یک pdf یکم بزرگ که خودم هم هنوز download نکرده ام ولی به نظر جالبه ... لطفا یکی download کنه و روی یک Host خوب یا روی آشیانه بذاره تا بچه ها مرتب اسم ... و ... RapidShare رو مرتبا نبینند ... پیشاپیش Mer30 لینک دانلود pdf آموزش کار با کلاسهای MFC :   http://rapidshare.com/files/31356352...___Classes.pdf
__________________
عرض سلام خدمت اقا ولید جون استاد دوست داشتنی  .واقعا روشنم کردی چون میدونی تا حالا من یه چیز دیگه فکر میکردم که واقعا خوب شد فهمیدم من فکر میکردم این زبان c تحت win32 فرقی با محیط MFC نداره فقط یه خورده که یاد بگیرم میتونم با همین دستورات تو MFC هم برنامه نویسی کنم ! پس نگو ای دل قافل که کجای کارم  خوب حالا به نظرت کلاس C رو تو دانشگاه ادامه بدم یا نرم ؟؟ به نظرت C به درد میخوره یا نه ؟ چون همونطور که گفتم من از محیط کنسول خوشم نمیاد خیل خشکه ولی قدرتشو قبول دارم  و علاقه شدیدی به محیط ویژوال دارم حالا به نظرت چی کار کنم ؟ این کلاس رو ادامه بدم یا یه راست برم کلاس C++ یا ............... حالا درضمن ؟ من تاحالا با هیچ گونه زبان برنامه نویسی هم کار نکردم به نظرت خوبه که با همین C شروع کنم یا از برنامه های سبکتر که راحتر باشن شروع کنم مثه پاسکال ؟ حالا هرچی شما بگید من تابع امرم ولی به نظر خودم سنگ مفت گنجیشک مفت برم بهتره
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اولا خیلی ببخشید دوست عزیز که جوابتون یکمی دیر شد . ( خدا شاهده سرم شلوغه ولی با این همه تا حالا نشده هر سوال رو بیشتر از حداکثر یک روز بذارم بدون جواب بمونه تو این تاپیک ) ثانیا خیلی ممنون که این سوال را مطرح کردید چون واقعا مسئله ی مهم و جالبی است . تقریبا 90% کدنویسهایی که یک زبانهایی مانند Visual Basic یا Delphi یا ... را بلد هستند و یا حداقل یکم باهاش کار کرده اند وقتی برای اولین بار با زبان C و یا ++C روبرو می شوند و قصد یادگیری آن را می کنند خیلی از این زبان و محیط آن زده می شوند و چون به خصوص برنامه های ساده ی آن در CMD باز می شود از قیافه ی برنامه بدشان می آید همچنین دستورهایش هم کاملا با VB یا Delphi یا Pascal یا ... خیلی متفاوت است . بر خلاف زبان ++C مثلا زبان VB از همان ابتدا در محیط گرافیکی Windows یا هر سیستم عامل دیگر کار می کند . ( بین خودمون هم باشه منم اولین بار از همین موضوع اجرا در Dos بدم اومد اما بعدها ... )  اطلاعات و خبرهایی که از زبان ++C شنیده اید حقیقت دارد . Windows و خیلی از برنامه ها و حتی بازیهای با کیفیت و خوش گرافیکی مشهور را با آن نوشته اند . برای مثال بازی به یاد ماندنی و توپ Max Payne رو حتما دیده اید اگر به قسمت Credits بروید در پایان لیست اسامی نوشته شده : " Coded By C++ " یک همچین بازی با حال و پرفروشی خود حاکی از قوی بودن و کامل بودن زبان ++C است . در زبان ++C چون همه ی مسائل بنیادی و ریشه ای است کامپایلر به گونه ای طراحی شده است که شما بتوانید بوسیله ی چند class و توابع مخصوص و چند Library ویژه هر کاری بکنید . در واقع زبان VB خیلی ساده تر و کار با آن راحت تر است اما شما در زبان ++C می توانید خودتان Command Button یا هر فیلد دلخواه را به صورت گرافیکی با هر قابلیت مورد نظرتان از پایه و بنیاد بسازید . ( البته کمی مشکل است ) در واقع شما قادرید بوسیله ی Header های به خصوص موسوم به MFC که توسط شرکت Microsoft طراحی شده است و توابع موجود در آنها و کلاسهای مورد نظر هر شکل گرفیکی در محیط سیستم عامل را در برنامه ی خودتان بگنجانید و برای آنها کد بنویسید و برنامه های زیبا تولید کنید . زبان ++C در وب هم خیلی مورد استفاده قرار می گیرد مثلا در فیلدهایی که Username و Password می طلبند و بعد اجازه ی Login می دهند یا اعلام Wrong Password می کنند به وفور می توان از زبان ++C استفاده کرد و ... ( اگر وقت کردم یک برنامه ی ++C تحت وب می نویسم و در تاپیک میذارم تا بفهمید که ++C یک چیز دیگس ... )    Header ها و کلاسهای MFC در سایت Microsoft یا در سایت : http://doc.ddart.net/msdn/header/include/winnt.h.htmlمی توان یافت کرد . امیدوارم کامل توضیح داده باشم در پستهای بعدی هم کمی به این موضوع خواهم پرداخت ...
__________________ =========================
این هم یک مثال برای اجرا در حالت گرافیکی Windows : ( البته ربطی به کدنویسی مقدماتی نداره و فقط برای این است که خدای نکرده نگند : نتونست یک کد هم برای مثال از این موضوع در جواب دوستمون بذاره ... ) ( از مبتدی ها معذرت و پوزش می طلبم ... )  ( راستی حتما باید MDSN روی سیستم عامل نصب باشه یا اینکه Header های MFC به طور کامل در شاخه ی include موجود باشد )   MFC.rarلینک دانلود : http://h1.ripway.com/omid55/c++/MFC.rar
__________________
اینم یک pdf یکم بزرگ که خودم هم هنوز download نکرده ام ولی به نظر جالبه ... لطفا یکی download کنه و روی یک Host خوب یا روی آشیانه بذاره تا بچه ها مرتب اسم ... و ... RapidShare رو مرتبا نبینند ... پیشاپیش Mer30 لینک دانلود pdf آموزش کار با کلاسهای MFC :   http://rapidshare.com/files/31356352...___Classes.pdf
__________________
عرض سلام خدمت اقا ولید جون استاد دوست داشتنی  .واقعا روشنم کردی چون میدونی تا حالا من یه چیز دیگه فکر میکردم که واقعا خوب شد فهمیدم من فکر میکردم این زبان c تحت win32 فرقی با محیط MFC نداره فقط یه خورده که یاد بگیرم میتونم با همین دستورات تو MFC هم برنامه نویسی کنم ! پس نگو ای دل قافل که کجای کارم  خوب حالا به نظرت کلاس C رو تو دانشگاه ادامه بدم یا نرم ؟؟ به نظرت C به درد میخوره یا نه ؟ چون همونطور که گفتم من از محیط کنسول خوشم نمیاد خیل خشکه ولی قدرتشو قبول دارم  و علاقه شدیدی به محیط ویژوال دارم حالا به نظرت چی کار کنم ؟ این کلاس رو ادامه بدم یا یه راست برم کلاس C++ یا ............... حالا درضمن ؟ من تاحالا با هیچ گونه زبان برنامه نویسی هم کار نکردم به نظرت خوبه که با همین C شروع کنم یا از برنامه های سبکتر که راحتر باشن شروع کنم مثه پاسکال ؟ حالا هرچی شما بگید من تابع امرم ولی به نظر خودم سنگ مفت گنجیشک مفت برم بهتره
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اولا خیلی ببخشید دوست عزیز که جوابتون یکمی دیر شد . ( خدا شاهده سرم شلوغه ولی با این همه تا حالا نشده هر سوال رو بیشتر از حداکثر یک روز بذارم بدون جواب بمونه تو این تاپیک ) ثانیا خیلی ممنون که این سوال را مطرح کردید چون واقعا مسئله ی مهم و جالبی است . تقریبا 90% کدنویسهایی که یک زبانهایی مانند Visual Basic یا Delphi یا ... را بلد هستند و یا حداقل یکم باهاش کار کرده اند وقتی برای اولین بار با زبان C و یا ++C روبرو می شوند و قصد یادگیری آن را می کنند خیلی از این زبان و محیط آن زده می شوند و چون به خصوص برنامه های ساده ی آن در CMD باز می شود از قیافه ی برنامه بدشان می آید همچنین دستورهایش هم کاملا با VB یا Delphi یا Pascal یا ... خیلی متفاوت است . بر خلاف زبان ++C مثلا زبان VB از همان ابتدا در محیط گرافیکی Windows یا هر سیستم عامل دیگر کار می کند . ( بین خودمون هم باشه منم اولین بار از همین موضوع اجرا در Dos بدم اومد اما بعدها ... )  اطلاعات و خبرهایی که از زبان ++C شنیده اید حقیقت دارد . Windows و خیلی از برنامه ها و حتی بازیهای با کیفیت و خوش گرافیکی مشهور را با آن نوشته اند . برای مثال بازی به یاد ماندنی و توپ Max Payne رو حتما دیده اید اگر به قسمت Credits بروید در پایان لیست اسامی نوشته شده : " Coded By C++ " یک همچین بازی با حال و پرفروشی خود حاکی از قوی بودن و کامل بودن زبان ++C است . در زبان ++C چون همه ی مسائل بنیادی و ریشه ای است کامپایلر به گونه ای طراحی شده است که شما بتوانید بوسیله ی چند class و توابع مخصوص و چند Library ویژه هر کاری بکنید . در واقع زبان VB خیلی ساده تر و کار با آن راحت تر است اما شما در زبان ++C می توانید خودتان Command Button یا هر فیلد دلخواه را به صورت گرافیکی با هر قابلیت مورد نظرتان از پایه و بنیاد بسازید . ( البته کمی مشکل است ) در واقع شما قادرید بوسیله ی Header های به خصوص موسوم به MFC که توسط شرکت Microsoft طراحی شده است و توابع موجود در آنها و کلاسهای مورد نظر هر شکل گرفیکی در محیط سیستم عامل را در برنامه ی خودتان بگنجانید و برای آنها کد بنویسید و برنامه های زیبا تولید کنید . زبان ++C در وب هم خیلی مورد استفاده قرار می گیرد مثلا در فیلدهایی که Username و Password می طلبند و بعد اجازه ی Login می دهند یا اعلام Wrong Password می کنند به وفور می توان از زبان ++C استفاده کرد و ... ( اگر وقت کردم یک برنامه ی ++C تحت وب می نویسم و در تاپیک میذارم تا بفهمید که ++C یک چیز دیگس ... )    Header ها و کلاسهای MFC در سایت Microsoft یا در سایت : http://doc.ddart.net/msdn/header/include/winnt.h.htmlمی توان یافت کرد . امیدوارم کامل توضیح داده باشم در پستهای بعدی هم کمی به این موضوع خواهم پرداخت ...
__________________ =========================
این هم یک مثال برای اجرا در حالت گرافیکی Windows : ( البته ربطی به کدنویسی مقدماتی نداره و فقط برای این است که خدای نکرده نگند : نتونست یک کد هم برای مثال از این موضوع در جواب دوستمون بذاره ... ) ( از مبتدی ها معذرت و پوزش می طلبم ... )  ( راستی حتما باید MDSN روی سیستم عامل نصب باشه یا اینکه Header های MFC به طور کامل در شاخه ی include موجود باشد )   MFC.rarلینک دانلود : http://h1.ripway.com/omid55/c++/MFC.rar
__________________
اینم یک pdf یکم بزرگ که خودم هم هنوز download نکرده ام ولی به نظر جالبه ... لطفا یکی download کنه و روی یک Host خوب یا روی آشیانه بذاره تا بچه ها مرتب اسم ... و ... RapidShare رو مرتبا نبینند ... پیشاپیش Mer30 لینک دانلود pdf آموزش کار با کلاسهای MFC :   http://rapidshare.com/files/31356352...___Classes.pdf
__________________
عرض سلام خدمت اقا ولید جون استاد دوست داشتنی  .واقعا روشنم کردی چون میدونی تا حالا من یه چیز دیگه فکر میکردم که واقعا خوب شد فهمیدم من فکر میکردم این زبان c تحت win32 فرقی با محیط MFC نداره فقط یه خورده که یاد بگیرم میتونم با همین دستورات تو MFC هم برنامه نویسی کنم ! پس نگو ای دل قافل که کجای کارم  خوب حالا به نظرت کلاس C رو تو دانشگاه ادامه بدم یا نرم ؟؟ به نظرت C به درد میخوره یا نه ؟ چون همونطور که گفتم من از محیط کنسول خوشم نمیاد خیل خشکه ولی قدرتشو قبول دارم  و علاقه شدیدی به محیط ویژوال دارم حالا به نظرت چی کار کنم ؟ این کلاس رو ادامه بدم یا یه راست برم کلاس C++ یا ............... حالا درضمن ؟ من تاحالا با هیچ گونه زبان برنامه نویسی هم کار نکردم به نظرت خوبه که با همین C شروع کنم یا از برنامه های سبکتر که راحتر باشن شروع کنم مثه پاسکال ؟ حالا هرچی شما بگید من تابع امرم ولی به نظر خودم سنگ مفت گنجیشک مفت برم بهتره
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اینم یک مثال خیلی ساده و ابتدایی از کلاسها ... در مثال قبلی کلاس فرزند هم داشتیم ... اما این مثال خیلی ساده تر و قابل فهمتر است ... ( برای مبتدی ها بهتره )    class.rarاینم لینک : http://h1.ripway.com/omid55/c++/class.rar
__________________
اینم یک مثال برای آرایه ی بدون طول اولیه ( pointer ها ) به همراه کلاس ... در واقع یک سری را محاسبه و چاپ می نماید ...   array.rarاینم لینک : http://h1.ripway.com/omid55/c++/array.rar
__________________
عرض سلام خدمت محمد ولید جون که دارن به تاپیک و فروم حال میدن  اقا امید یه سوال : ببین من تازه یکی دو جلسس میرم کلاس c تو دانشگاه کتاب تدریسمونم : اموزش زبان c نوشته عین الله قمی ویراست 4 ببین این برنامه ها که ما مینویسیم همشون که تو داس اجرا میشن !! پس به چه درد میخورن ؟؟؟  البته قدرت داس وwin 32 رو درک میکنم ولی برنامه ای که قیافه نداشته باشه به درد لای جرز هم نمیخوره  ولی درکل بخدا خیلی خیلی برنامه نویسی دوست دارم !!!!  و همیشه در حال تمرین c یا vb هستم مثلا میگن ویندز رو با همینC نوشتن !! من که باور نمیکنم !!!  یعنی C اینقدر قدرتمنده ؟ خوب حالا چطوری واسه خود ویندز برنامه بنویسم ؟؟ منظورم اینه که ایا همین دستوراتی که تو نوشتن تحط WIN32 app کاربرد دارن ایا تو MFC APP wizard Exe هم میتونن کار کنن ؟؟؟ مثلا من میخوام یه برنامه ساده بنویسم تا وقتی کاربر رو دکمه command کلیک میکنه بهش یه پیغام بده مثه msgbox تو vb ! ولی هر کاری کردم نشد که نشد !!!!!!!!!!!!! خواهشا منو روشن کن که چرا اصلا اینجوریه و یه راست نمیان خود MFC APP EXE رو یاد بدن و هی دارن حاشیه میرن به سمت داس ؟؟؟ |
|
|
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
سوال : یک برنامه به زبان ++C بنویسید که در ابتدا یک عدد t به عنوان تعداد دفعات ( test case ) دریافت کرده که t<=30 و t>=0 سپس به ازای هر تست کیس یک عدد n بگیرد . توجه کنید که عدد n می تواند خیلی بزرگ باشد و در واقع در بازه ی زیر قرار می گیرد : n<=9000000000000000000 و n>=0 سپس در خروجی عددی را چاپ نماید که نشانگر تعداد صفرهای سمت راست عدد n! است یعنی برای هر عدد محاسبه کند که فاکتوریل آن چند صفر در سمت راستش دارد . همچنین می بایستی ورودی از فایل A.in و خروجی بر فایل A.out اعمال گردد . درثانی برنامه می بایستی بدون کوچکترین وقفه ای محاسبات را انجام داده و خروجی را در فایل مذکور ذخیره کند . خودمونیم خیلی ساده است اگر کسی بنویسه عمرا بیشتر از 25 تا 30 خط نمیشه ... اینم از ورودی نمونه :
کد: 9
3
60
100
1024
23456
8735373
1000000000
9448948948948945
9000000000000000000 واینم خروجی آن :
کد: 0
14
24
253
5861
2183837
249999998
2362237237237222
2249999999999996472
ببینم چه میکنید ...   
__________________
ایشالا حتما در آینده سوالهای خیلی بهتر و جالبتری هم میذارم ... قول میدم ... دوباره هم آموزشها رو شروع میکنم ... در همین تاپیک ... فقط لطفا وقتی سوال یا مسابقه ای مطرح میشه حتی اگه خیلی هم سخته لطفا یکی پست بده و بگه خیلی سخته یا خیلی آسونه من خودم با کمال میل کمکتون می کنم ... به گونه ای در دفعات بعدی سوال میدم که هم کد نویسی تون تقویت بشه و هم الگوریتمهای جالبی هم بکار برده بشه ... به فرموده ی دوستان و مدیران محترم هم در این تاپیک Attach میکنم هم لینک میدم ...   یا حق
__________________ =========================
کلاسها و طریقه ی تعریف آنها
بچه ها این هم یک مثال کامل ولی ساده از کلاسها و طریقه ی تعریف توابع و اشیا در آنها ... امیدوارم مثمرثمر باشه ... کد تمام عیاری است ( حدود 210 خط ) اما حجم فایل 2 کیلوبایته ...    classes.rarاینم لینک : http://h1.ripway.com/omid55/c++/classes.rar
__________________
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
همانطور که قول داده بودم : اینم جواب مسابقه ===>>>      ( خیلی ساده بود ولی اگه نتونستید حلش کنید حتما دانلودش کنید و کدش رو بخونید ...) ( 1 کیلو بایت بیشتر نیست ... )  لینک دانلود : http://h1.ripway.com/omid55/code/SUM.rar
__________________
Omid55 جان دو تا .h كم گذاشتي  به قول azazel جون همين جا اتچ كني بهتره... آخه الان كلانتر سايت مياد و ...  ========================== Azazel : هر کسی بخواد این تاپیک رو به حاشیه بکشه و گند بزنه تو این تاپیک برای همیشه BAN میشه!!! یه تاپیک درست حسابی بعد عمری تو این آشیانه زده شد ........
چشم هر چی بزرگان امر کنند ... ولی آخه چند تا فایل 1 کیلو بایتی که این حرفها رو نداره ... اینجوری همیشه یک folder دارم و میبینم که کدومها رو گذاشتم و کدومها رو نذاشتم ... از این به بعد رو تاپیک upload میکنم ...  
دوست عزیز کدها کاملا صحیح می باشند و .h لازم ندارند چون در زیر آنها جمله ی :
نوشته شده ... ای کدها برای کامپایلر Microsoft Visual C++ 2005 Express Edition نوشته شده اند ... اگر شما از کامپایلر VC6 استفاده مینمایید بایستی برای Header ها .h گذاشته و دستور بالا را پاک کنید ...     
__________________ ========================= ***A Man With Nothing To Lose***
__________________ ========================= ***A Man With Nothing To Lose***
سلام امید جان خسته نباشید اگه اینترنت با سرعت پاییین داری به نظر من اگه میخوای راحت باشی و بعد بتونی آموزش ها تو دسته بندی کنی اول آموزش ها تو ورد تایپ کن بجای این که تو تاپیک بخوای تایپ کنی و تبدیل کن به فایل pdf و تو سایت آپلود کن اینجوری هم دسته بندی شده و وقتت هم صرفه جویی شده و نمیخوای با اینترنت dial up زیاد وصل باشی البته نظر با خودته اینجوری بعد آموزش ها رو در قسمت آموزش های سایت بصورت طبقه بندی شده میتونی بزاری
__________________
چشم فرزاد جون ... سعی میکنم ولی خدا شاهده خیلی مشغله دارم ... پایان ترم + میان ترم زودرس + quiz + ... سعی می کنم رضایت همه رو جلب کنم ... مرسی از پیشنهاد ها و راهنمایی های شما دوست عزیز و سایر اعضای گل سایت ... 
__________________ ========================= ***A Man With Nothing To Lose***
*** مسابقه مسابقه مسابقه ***
من اومدمممممم ...... بچه ها امروز با یک سوال خیلی ساده و کوتاه و در عین حال جالب اومدم ( البته سوال ACM بوده است ولی خداییش خیلی راحته ) فقط کافیه الگوریتمش رو پیدا کنید ... اگه میشه از مدیران گل سایت هم یک درخواست داشتم : لطفا برای این سوال یک جایزه ی کوچک در نظر بگیرید ( درسته سوالش خیلی ساده است اما بالاخره با سوالهای ساده شروع میکنند دیگه ... )( درست نمیگم ؟؟؟ )( با این کار بچه ها بیشتر ترغیب می شوند ) من هم کمال تشکرم را پیشاپیش تقدیم می کنم ...    Mer30
__________________ ========================= ***A Man With Nothing To Lose***
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
خوب به دلیل اینکه منم Dial Up هستم معذوزم ... امیدوارم دوستان و سروران زحمت این کار را بکشند ...  خدا را شکر یکم داره سرم خلوت میشه ... ان شاء الله بر میگردم با دست پر ...   
__________________
لود کردن این 300 مگ اونم 5 مگابایتی کاره حضرت فیله!!!! ولی ولی اگه مدیران بخواند و اجازاه بدن من میتونم با سیدی بفرستم واسه بچه ها البته بازم میگم این چیزی که میگم نه به داره نه به بار فقط باید مدیران سایت تایید کنند
***** مسابقه ***** *** مسابقه ***
*** مسابقه *** یک سوال خیلی ساده : یک برنامه به زبان ++C بنویسید که دو عدد را با هم جمع کند و جمع آن را چاپ کند ( مانند نمونه ) البته این دو عدد می توانند خیلی بزرگ باشند ( مثلا حتی 100 رقم هم داشته باشند ) این برنامه باید از روی فایل بخواند و بر روی فایل هم بنویسد یک عدد در ابتدا به عنوان test case میگیرد خداییش اگه مثالها و آموزشها را بخونید کار 2 دقیقه است ...
کد: َA.in
5
1 2
123 58
99 9
112233445566778899 998877665544332211
4647674645486746748774694753 474867469749643545345345373545345454753454354 َ و
کد: A.out
Case 1 :
1 + 2 = 3
Case 2 :
123 + 58 = 181
Case 3 :
99 + 9 = 108
Case 4 :
112233445566778899 + 998877665544332211 = 1111111111111111110
Case 5 :
4647674645486746748774694753 + 474867469749643545345345373545345454753454354 = 474867469749643549993020019032092203528149107 بچه ها امیدوارم هر چه زودتر کدش رو بذارید ...  
بچه ها اینو حل کنید ( خداییش ساده تر از این دیگه نمیشه ) ... دفعه ی بعدی یک سوال توپ ACM میذارم ... فقط کدش را آپلود کنید و بذارید روی تاپیک ...  قربان هر چی بچه آشیانه ای ...   
یک سوال خیلی ساده : یک برنامه به زبان ++C بنویسید که دو عدد را با هم جمع کند و جمع آن را چاپ کند ( مانند نمونه ) البته این دو عدد می توانند خیلی بزرگ باشند ( مثلا حتی 100 رقم هم داشته باشند ) این برنامه باید از روی فایل بخواند و بر روی فایل هم بنویسد یک عدد در ابتدا به عنوان test case میگیرد خداییش اگه مثالها و آموزشها را بخونید کار 2 دقیقه است ...
کد: َA.in
5
1 2
123 58
99 9
112233445566778899 998877665544332211
4647674645486746748774694753 474867469749643545345345373545345454753454354 َ و
کد: A.out
Case 1 :
1 + 2 = 3
Case 2 :
123 + 58 = 181
Case 3 :
99 + 9 = 108
Case 4 :
112233445566778899 + 998877665544332211 = 1111111111111111110
Case 5 :
4647674645486746748774694753 + 474867469749643545345345373545345454753454354 = 474867469749643549993020019032092203528149107 بچه ها امیدوارم هر چه زودتر کدش رو بذارید ...   
ببین farzad جان خداییش از این آسونتر دیگه وجود نداره ... فقط باید دو عدد خیلی خیلی بزرگ رو با هم جمع کنه و در فایل A.out ذخیره کنه ... سوالهای بعدی خیلی توپتره ...  قول میدم ...   
__________________ =========================
آقا من الگوریتم رو میگم ولی وقته نوشتن ندارم شما عدد ها رو بصورت رشته میگیرین بعد از اون شروع به جمع کردن میکنید بدین صورت که عدد ها از سمت راست جمع میشند اینجوری 123456789 123456789 مثلا 9 با 9 جمع میشه و جوابش در آرایه رشته ای و یک رقم نقلی که ایجاد میکنه باید در یک متغیر ذخیره کردیم رو با 8+رقم نقلی+8 جمع کنیم و به همین ترتیب تا پایان کار ادامه میدیم به همین راحتی
البته نه به این راحتی که شما فرمودید ... ولی خداییش خیلی آسونه ... باید دو تا رشته را بوسیله ی صفرها هم طول کرده و از یک آرایه که مرتبا با خودش و ارقام این دو رشته جمع میشود استفاده کرد ( جمله رو حال کن ...  ) خلاصه بوسیله ی روش فرزاد جان و راهنمایی این حقیر دیگه امیدوارم یکی کدش را upload کنه ... خودم فردا حتما upload میکنم ولی اگه میشه یکی امروز بذاره ... لطفا ....  
__________________ ========================= ***A Man With Nothing To Lose***
-------------------------
سوال
سلام
سلام . دارم روی مسئله کار میکنم.برام سخته چون مبتدی ام  در ضمن یکی از دوستام از من راهنمایی در مورد کتاب خوب برای یادگیری C کرده بود منم بهش گفتم یکی از برنامه نویسهای حرفه ای که میشناسم کتای آقای دیتل رو پیشنهاد میکنه.ام رفته بود ولی کتاب C رو پیدا نکرده بود.بلکه مشتقات C بودن.(منضورم کتاب دقیقآ واسه Cخالی بود) حالا لطف میکنی یه کتاب در حد دیتل رو که به فارسی ترجمه شده رو بهم معرفی کنی   .
جواب
دوست عزیز همانطورکه قبلا هم گفتم کتاب Deitel بهترینه که یک ترجمه ی فارسی بی نقص هم دارد که ترجمه ی دکتر قولزوم است و در پست شماره ی 101 اطلاعات کامل از آن را بیان نموده ام لطفا حتما مطالعه بفرمایید ... اگر میخواهید کتاب دیگری بخوانید که فارسی هم باشه من کتاب های دکتر عین الله جعفر نژاد قمی را ترجیح می دهم ( نمی خوام تبلیغ کنم ) ولی به نظر من خیلی کتابهای ایشون مفیده که هم کتاب برای زبان C و هم برای زبان ++C و هم برای زبان #C دارند که هر کدام را که بخواهید به راحتی میتونید گیر بیارید ... ( کتابهای مشهوری هستند و در عین حال مفید ) اما یک پیشنهاد دوستانه : دوست عزیز من تقریبا اغلب زبانها را بلدم و میدانم که کدامیک پایه و بنیاد دیگری است و کدام بهتر و کدام قویتر است . به نظر من ( به عنوان یک دوست با IQ میگو !!! ) اگر شما تصمیم دارید یک زبان را به صورت پایه ای یاد بگیرید و پیشرفت کنید بهتر است با زبان ++C شروع کرده و بعد از کاملا حرفه ای شدن زبانهای #C و Java را بیاموزید اگرچه اگر شما زبان ++C به صورت حرفه ای یاد بگیرید دیگر نیازی به یادگیری زبان دیگری ندارید و همچنین چون زبان C دیگر تقریبا زبان قدیمی است و ++C خیلی بهتر و جدید تر و قوی تر است و اینکه آموزش ++C نیازی به یادگیری C به عنوان پیشنیاز ندارد ... قربان همه ی بچه های گل آشیانه ...  
__________________
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
بابا امتحانهای ما که تموم شده هیچی تازه 1 هفته است ترم جدید هم شروع شده ...  تازه فردا هم حذف و اضافه است ...  پدرمون رو در آوردند ...  در ادامه ی آموزش قبلی هم : حالا که بحث حلقه های for و حلقه های تو در تو را کردیم یک مثال ساده در مورد آن به سایر مثالهای تاپیک اضافه می کنم ... مثلث پاسکال خیام : این برنامه از طریق ورودی یک عدد دریافت می کند که نشان دهنده ی تعداد سطر های مثلث است و سپس برنامه مثلث پاسکال خیام را با تعداد خطوط خواسته شده چاپ می کند ... ( به همین راحتی )   لینک دانلود : http://h1.ripway.com/omid55/code/PascalKhayam.rar
__________________ =========================
یک مثال جدید : تبدیل همه ی مبناهای مختلف ( حتی بالاتر از 10 ) به همدیگر از دو روش در یک کد : لینک دانلود : http://h1.ripway.com/omid55/code/Radix.rar
__________________ =========================
بچه ها ان شاء الله در روزهای آینده که حتما وقت میکنم ادامه ی آموزشها را می ذارم ...  ببخشید این چند روزه مشغله زیاده ...  به امید خدا بعدا حتما جبران می کنم ...
__________________ =========================
ن بار خودم جوابش رو می ذارم به امید اینکه یکم به ذهنتون فشار بیارید و سوال های بعدی را حل کنید ...  خداییش بعدا میگند چرا هیچی یاد نمی گیریم ...    ان شاء الله بازم در روزهای آینده آموزشهای بیشتر و کاملتری میذارم ... شاید بازم سوال با حال گذاشتم ...    جواب سوال مسابقه == >    لینک دانلود : http://h1.ripway.com/omid55/code/Wood.rar
__________________ =========================
بچه ها یک سوال تاریخ : " اولین بار چه کسی ++C را اختراع کرد ؟ " لطفا جوابش رو پست بدید ... بالاخره یک کد نویس باید بدونه کامپایلرش رو کی طراحی کرده برای اولین بار ... در مورد آموزشها هم من تا یکی 2 روز دیگه بر میگردم ...
__________________
جایزم رو بده  c++ : http://en.wikipedia.org/wiki/C%2B%2Bسازنده : http://en.wikipedia.org/wiki/Bjarne_Stroustrup==== امتحاناتم تموم شد ...!!! فردا از پست اولت شروع می کنم به خوندن
__________________
محتوای قوانین سایت ممکن است به مرور زمان و یا در شرایط خاص بروز رسانی شود،لذا آگاهی از جدید ترین محتوای این بخش وظیفه شما بعنوان کاربر این فروم میباشد
ایول Error عزیز ... دستت درست ... راستی اسم شما چیه ؟؟؟ اگه هم میشه این مسئولین دانشگاهتون را با دانشگاه آشنا کن شاید اینها هم یکم یاد بگیرن چه جوری میشه به دانشجوها حال بدهند ... ما 2 هفته است ترم شروع شده و quiz های اولیه از 1 هفته ی دیگه شروع میشه حتی استاد ها امتحان میان ترم رو هم زمانش رو تعیین کردند ... پدرمون رو دارن در میارن ... ( جات خالیه ) در مورد سوال در تائید لینکهای Error جان : بیارنه استرااستروپ ( Bjarne Stroustrup ) پدید آورنده ی زبان شیرین ++C است که متولد شهر آرهوس از کشور دانمارک میباشد . ایشان زبان ++C را به عنوان تز دکترایشان در دانشگاه کمبریج انگلستان ارائه دادند البته اصل این زبان را در کشور آمریکا و در شرکت معروف AT & T منتشر نمودند . ابتدا چون در سال 1984 این کامپایلر طراحی شد خود بیارنه نامش را C84 نهاد اما پس از مدتی به پیشنهاد همکارش Rick Mascitti نام ++C برای آن انتخاب و مورد تائید قرار گرفته شد . اینم یکم اطلاعات عمومی برای دوستان کد نویس آشیانه ای گل ...  
__________________ ========================= ***A Man With Nothing To Lose***
خواهش .. اسم من علی هست ..!!! راستی دوست من من این تمرینات رو دیدیم ..!! اما با کتابی که من دارم زمین تا اسمان فرق می کنه از شانس هم این استاد حدود 10 تا تمرین از فصل 2 و 3 و 4 گفته به عنوان پروژه بیارین ..!! نوشتنش که حوصله می خواد پس برام این تمریناتش رو پیدا کن .. مترجم هم فکر کنم صاحب الزمانی هست .. شب دقیق می گم
آقا مجموعه سورس کد های c++ سایت planet source code رو که میسشناسید می تونید آدرس لینک رو واستون بزارم دانلود کنید حدودا 300مگابایت هست اینم لینک: http://www.exhedra.com/Exhedra/Plane.../Download.aspxآقا دانلود نکنید از دست دادید یه مثالاش اینه!!!! فایل بانک اکسس رو تو c++ باز کنید!!!!!!!!!!! واقعا توپه
آقا مجموعه سورس کد های c++ سایت planet source code رو که میسشناسید می تونید آدرس لینک رو واستون بزارم دانلود کنید حدودا 300مگابایت هست اینم لینک: http://www.exhedra.com/Exhedra/Plane.../Download.aspxآقا دانلود نکنید از دست دادید یه مثالاش اینه!!!! فایل بانک اکسس رو تو c++ باز کنید!!!!!!!!!!! واقعا توپه لینک مستقیم :
error جان قربونش اینکه تو همون سایت هم میرفتید همین لینکا بود مستقیم هم هست واسه اونایی که سرعتشون پایینه اگه کسی نمیتونه دانلود کنه پیغام بده
__________________
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
سازمانهای کنترلی : سازمان کنترلی for : به کمک این سازمان می توان اجرای تعدادی از دستورات را تکرار نمود ولی این تکرار با توجه به شرایط مشخص شده در سازمان for تعیین خواهد شد . فرم کلی :
کد: for(عبارت1;عبارت2;عبارت3)
{
statement1;
statement2;
statement3;
.
.
.
} که به جای statement ها دستورات مورد نظرتون رو می گذارید و عبارت 1 مقدار اولیه ی شمارنده و عبارت 2 شرط اجرای سازمان و عبارت 3 هم گام تغییر شمارنده است چنانچه تنها یک دستور در سازمان for قرار میگیرد میتوان از نوشتن آکولاد باز و بسته خودداری کرد طبیعتا لازم است در صورتی که بیش از یک دستور داشتید باید ابتدا و انتهای حلقه با آکولادهای باز و بسته مشخص گردد . چنانچه عبارت 2 نوشته نشود کامپایلر آن را True در نظر میگیرد و در این صورت در یک حلقه ی بی پایان می افتد . همچنین اگر عبارت 2 یا همان شرط همیشه صحیح باشد باز هم برنامه ی شما در یک loop بی پایان می افتد . اگر شرط غلط باشد اصلا وارد حلقه نمی شود ... پس اگر برنامه را اجرا کردید و دیدید که برنامه خروجی به شما نمی دهد و در عین حال در حال محاسبه هم هست فورا به شرط حلقه یک نگاهی بیندازید .... حلقه های for می توانند تو در تو هم باشند ( مثال از حلقه های for در برنامه های صفحات اولیه ی تاپیک فراوان هست ) از من به شما نصیحت اگر می توانید یک کد را با حلقه های مختلف بنویسید و یکی از آنها هم for است ( یعنی اگر می توانید آن کد را با for بنویسید ) حتما for را به بقیه ترجیح دهید و از for استفاده نمایید چون هم خواندن آن کد برای مخاطب ساده تر می شود هم امکان اشتباه کم می شود و کد کاملا شفاف و روشن می گردد )
مخاطبان این تاپیک 2 گروه هستند : 1- کسانی که اصلا برنامه نویسی به زبان C++ را بلد نیستند . 2- کسانی که برنامه نویسی به زبان C++ را بلد هستند ولی نه زیاد و آمده اند که در این تاپیک بهتر بیاموزند و قدرت کد نویسی آنها بیشتر شود .
من می بایست هر 2 گروه را راضی نگه دارم . آموزش هایی که در این تاپیک گذاشته ام و می گذارم و ان شاء الله باز هم خواهم گذاشت برای گروه اول است که خیلی خیلی ابتدایی و بنیادی است و به کمک آنها بچه ها راه می افتند و بعد با مثال ها به صورتی عملی تر به یادگیری هرچه بیشتر این زبان می پردازند . اما برای گروه دوم من سعی می کنم هر چند روز یکبار یک سوال جالب پیدا کنم و بگذارم تا بچه ها حل کرده و کدش را روی سایت upload کنند تا آنها هم راضی گردند اگر هیچ کس احیانا سوال رو حل نکرد ( که همچین چیزی غیر ممکنه ) خودم کدش رو می ذارم ( مگه میشه کسی IQ اش از منم کمتر باشه
تراش چوبها
سوال امروز خیلی خیلی ساده است ( چون اولشه با سوال های ساده شروع میکنیم )( سوال ACM بوده )
تراش چوبها :
یک دستگاه در یک کارخانه ی چوب بری وجود دارد . این دستگاه چوب ها را تراش می دهد . هر چوب دو ویژگی دارد : طول و وزن این دستگاه چوب ها را یکی یکی می گیرد . تراش اولین چوب 2 دقیقه وقت می گیرد . اگر چوب بعدی هر دو مولفه اش ( طول و وزن ) از این چوب کوچکتر باشد تراش آن هیچ وقتی نمی گیرد در غیر اینصورت 2 دقیقه وقت می گیرد و به همین صورت ... در ابتدا از ورودی یک عدد به منزله ی تعداد قطعه چوب ها وارد می گردد سپس از ورودی برای هر چوب 2 عدد به منزله ی طول و وزن وارد می گردد و در پایان در خروجی بایستی یک عدد که نمایانگر کمترین مدت زمان بر حسب دقیقه است که این دستگاه می طلبد تا همه ی آن چوبها را بتراشد ...
مدت زمان upload کردن کد جواب 3 روز ...
شما سعی کن مبتدی بزاری .. برای اون عده که تازه می خواند شروع کنند ...!!! یا یه کاری کن ( با حمایت خوده من ) یه تاپیک دیگه بزن .. قدم به قدم آموزش بده به زبان ساده واسه کسایی که می خواند تازه شروع کنند ( چون این مطالب رو اکثر کتاب ها دارند .. ما می خواهیم روان باشه مطالب ..) یا علی ------- اولین کار تو برنامه نویسی اینه که برنامه نویس باید بتونه برنامه رو به صورت فلوچارت بیاره رو کاغذ ( که بیشترشون نمی تونند ) . پس اولین کاری که می تونی انجام بدی این هست که بیای روی فلوچارت کار کنی ( من نمیدونم سطح علمی تون در چه حدی هست اما کلی می گم) . بعدش میای رو مفاهیم برنامه نویسی کار می کنی و اینکه چرا برنامه می نویسیم و ...!!!! فعلا این ها رو داشته باش تا بعد .. در ضمن اگه خواستی می تونم به مرور پیشرف زمان پست های این تاپیک رو منتقل کنم رو اون یکی ( با پیشرفت مطالب) -------- در ضمن اعضای خصوصی ( اعضای فعال سایت ) هم انتظار داریم در این ضمینه فعالیت کنند ..!!! خیلی وقتی فعالیتی ندیدیم ازشون
__________________
محتوای قوانین سایت ممکن است به مرور زمان و یا در شرایط خاص بروز رسانی شود،لذا آگاهی از جدید ترین محتوای این بخش وظیفه شما بعنوان کاربر این فروم میباشد
|
دوست عزیز و مدیر محترم , ERroR جان صحبت شما کاملا متین است اما من در صفحات ابتدایی این تاپیک به صورت خیلی خیلی ساده شده درباره ی زبان ++C و کد نویسی با آن نوشته ام و هر چند پست یکبار هم آموزشی بسیار ساده و پایه ای می گذارم تا بچه ها راه بیافتند ( همانطور که مثلا چندین پست به صورت کامل در مورد متغییر ها و ویژگی ها ی آنها در همین تاپیک داده ام ) و ان شاء الله آموزشهای بیشتری به کمک دوستان و شما مدیر محترم میذارم ... اما اگر یک نگاهی به صفحات قبلی تاپیک بیاندازید خواهید دید در قسمت های آموزش هیچ سوال یا پیشنهاد یا نظری ارائه نشده است . من به همین خاطر فکر کردم اگر یک مسابقه هم در این تاپیک راه بیاندازیم بقیه ی بچه های قوی تر هم به این تاپیک رو آورده و آنها هم آموزشهایی بیشتر و بهتر و کاملتر از من میذارند و خیلی ممنون که از من حمایت می کنین و سایر بچه ها رو به کمک من و خدمت بیشتر به سایت فرا میخوانید ...
__________________ ========================= ***A Man With Nothing To Lose*** |
|
|
خلاصه اگه بچه ها بخواند و مدیرها هم استقبال کنند می تونیم یک مسابقه ی جالب کدنویسی به زبان ++C راه بیاندازیم و اگه نه من جواب این سوال را میذارم و دیگه هم مسابقه ای در این تاپیک قرار نمی دهم ... هرجور که مایلید ...  
__________________ =========================
من با مسابقه کاملا موافقم!!! البته من پست های قبلی رو نخوندم که سوال گذاشتی یا نه؟؟؟ اما در کل سوالی که میزاری بهتره یه جوری باشه که یه نفر همین آموزش هایی که دادی رو بخونه ، بتونه تو مسابقه شرکت کنه!!! ( بسته به نوع سوال مسابقه و .... جایزه هم داریم )!!!
__________________
ازا جان مرسی از موافقت شما ...    سوال در پست شماره ی 93 هست و سوال ساده ای است اگه بچه ها همه ی مثالها رو دانلود کنن و آموزشها رو هم بخونن و مثالها را جدی یاد بگیرند 5 دقیقه بیشتر وقت لازم نداره ( با اینکه سوال ACM بوده ولی ساده است ) 2 روز دیگه هم وقت داره اگه بچه ها بخواند با اجازه ی مدیرها تمدیدش می کنیم ... اگه بحث جایزه هم باشه بچه ها بیشتر راغب می شند ... هر جور که صلاح می دونین ...   
__________________ ========================= ***A Man With Nothing To Lose*** |
|
|
راستی بچه ها داشت یادم می رفت در مورد کتاب که چند نفر سوال کرده بودید :
نمی خوام تبلیغ کتابی یا کسی را بکنم ( چون سودی برای من ندارد ) اما به نظر من همان طور که قبلا هم اشاره کردم بهترین کتاب برای آموزش زبان ++C کتاب " چگونه با ++C برنامه بنویسیم " یا به عبارتی دیگر " ++How To program C" است که نوشته ی یک پدر و پسر خیلی خیلی مشهور به نام های هاروی ام.دیتل و پال جی.دیتل است و به همین دلیل به کتاب Deitel Deitel شهرت دارد . به نظر من بهترین ترجمه ی این کتاب ( که با کلی تحقیق و پرس و جو متوجه شده ام ) ترجمه ی " دکتر حسین ابراهیم زاده ی قلزم " است ...
ایشان در دانشگاه مونترال کانادا تدریس می کنند و ترجمه ی بسیار بسیار بسیار خوب و روان و علمی از این کتاب فراهم آورده اند . این کتاب در 2 جلد است به همراه یک CD و این کتاب همه جا گیر می آید ( بگردی پیدا میشه ... )
کل مثالهاش حدود 1 مگابایت است که اگه بچه ها خواستند روی همین تاپیک میذارم ...
__________________ ========================= ***A Man With Nothing To Lose***
اطاعت امر شد ... اینم کل مثال های کتاب مفید Deitel Deitel : امیدوارم نهایت استفاده رو ببرید ... لینک دانلود : http://h1.ripway.com/omid55/code/examples.rarدر ضمن حجم آن هم حدود 644 کیلو بایت است ... ( برای dial up ای ها گفتم )     
__________________ ========================= ***A Man With Nothing To Lose***
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
اگه میشه The Matrix جان سوال را کامل بذارید تا با هم حلش کنیم ( برای یادگیری بیشتر ) ( اگه متن انگلیسی باشه بهتره )
شرمندگی و عذرخواهی
سلام سر و کله ی من دوباره پیدا شد ... دوباره بچه ها باید من رو تحمل کنند ...
اولا از همه ی بچه ها به خاطر دیرکرد آموزشهایم عذر می خواهم . به خدا از روی تنبلی نیست . ترم جدید شروع شده و 100000 تا بدبختی هم به همراش ... ثانیا تا حذف و اضافه وضعمون پادرهواست . ان شاء الله جبران خواهم کرد ...
امید جان user شما به علت زحمتی که کشیدی و فعالیت مفیدی که داشتی تبدیل به members شد. ایشالا تا چند وقت آینده به درجات بالاتر هم ارتقا پیدا کنی.
موفق باشی
بهروزجان خیلی خیلی خیلی ممنونم ... من مستحق این همه محبت نبودم ... تمام سعیم رو میکنم تا شما و همه ی بچه ها را راضی نگه دارم ... از 0261 و ERROR و mohammad6006 و ... سایر بچه ها هم متشکرم ...   
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
1-من نمیدونم چرا فکر نمیکنی جواب میدید- 2- چرا پست رو نمیخونی جواب میدی!!! 3- وقتی از برنامه نویسی چیزی نمیدونی چرا جواب میدی!!! 4-تو هر برنامه ای که با c++ مینویسی -همینجا پالیک کن -من با چندین خط کد کمتر با c# مینوسیم ---زبان C# خودش برگرفته از C++ -C -java هست. و opp کامل هست.(اینه که میگم تحقیق کن-یا در تایپیک هایی شرکت کن که در حد خودت باشه. 5-من گفتم C++ را از پایه در محیط لینوکس یاد بگیرن -اینجوری هم به زبان C++ مسلط میشید -و هم برنامه نوشت تحت لینوکس -و یا فعالیت در کد نویسی سیستم عامل . در این مورد باید به زبان های سطح پاییین مثل اسمبلی تسلط داشته باشید. 6-شما میتونید کدهای تحت لینوکس خودتونا با کمپایلرهایی نظیر gcc در ویندوز کمپایل کنید. اینه که میگم نمیخونی جواب میدید--یا درک نمیتونی بکنی جواب میدی.
خب منم چیز زیادی نمیدونم ونوشتم که اینطوری میگن چون تو بیشتر تاپیک ها همین رو خوندم و اینطور متوجه شدم که c++ یکی از زبان های مهم هست که باید برای هک بلد بود از راهنمایی شما هم ممنون
ولی لحن صحبتت خیلی بچه گانه بود واقعا متاسفم
امیدوارم یکی کامل تر این مساله رو در مورد برنامه نویسی توضیح بده لطفا بیشتر از این تاپیک رو منحرف نکنید و ادامه بدین
سلام به همه ی بچه های گل سایت آشیانه ... من برگشتم ... ( بازگشت اژدها !!! ) بخشید که یک روزی هست به تاپیک سر نزده ام ( جای شما اصلا خالی نبود با قویترین و سمج ترین ویروس جهان دست و پنجه نرم می کردم ( virus Virus.Win32.Sality.s ) ) خوب بریم سر بحث و جدل ها ...
ببین دوست عزیز اولا ان شاء الله من خودم به کمک بچه های گل سایت حتما تاپیکهایی برای سایر زبان ها خواهم زد ( البته اگر بچه ها بخواهند و ما را از کمک و یاری سبزشان بی دریغ نکنند ... ) ثانیا دوست من اگر شما خودتون #C بلد باشید در آن صورت حتما خواهید دانست که زبان C++ پایه و بنیاد یادگیری بسیاری از زبانهای دیگر اعم از C# و Java و ... است پس ما کار درستی کردیم ( گاماس گاماس ) ثالثا من که خودم با این IQ ی میگو تقریبا اکثر زبانها را بلدم به نظر خودم هیچ زبانی به کاملی و جامعی و به روز بودگی C++ نیست و من می تونم بهتون قول بدم اگر هر کس زبان C++ را به صورت کامل و حرفه ای و جدی یادبگیره نیازی به هیچ زبان برنامه نویسی دیگه ندارد ( البته زبانهای تحت وب بحثشون جداست ... )
تبدیل نوع
خوب همونطور که قول داده بودم آخرین بحث از متغییر ها یعنی تبدیل نوع :
در موارد بسیار زیادی اتفاق می افتد که می خواهیم دو عدد را با هم جمع یا از هم تفریق یا در هم ضرب و یا بر هم تقسیم کنیم و همچنین دو عدد ما از یک نوع ( type ) نیستند . همان طور که می دانید ALU فقط توانایی انجام عملیات بر روی داده های مشابه را دارد ( مثلا نمی تواند یک عدد 16 بیتی را با یک عدد 32 بیتی پردازش کند ) این جاست بحث تبدیل نوع به میان می آید . تبدیل نوع به عملیاتی گفته می شود که compiler با توجه به کد شما انجام می دهد تا دو عدد از یک نوع شوند و ALU بتواند بر روی آنها پردازش انجام دهد ... 2 نوع تبدیل نوع وجود دارد : 1- تبدیل نوع اتوماتیک 2- تبدیل نوع موقت تبدیل نوع اتوماتیک توسط خود compiler انجام می شود به این صورت که اگر مثلا شما دو عدد که یکی از int و دیگری double است را با هم جمع میکنید دو عدد را به صورت double تبدیل میکند و حاصل هم double می شود به فرض 2 با 1.55 آنگاه 2 تبدیل می شود 2.00 و پس از عملیات انجام می شود ... در کل همیشه داده با نوع بزرگتر بر بقیه غلبه می کند ... اما اگر عملیات شما انتساب بود در آن صورت اگر یک متغییر با طول کمتر را ( مثلا int ) به درون یک متغییر با طول بیشتر ( مثلا float ) ریختید آنگاه با گذاشتن 0 در انتهای عدد ( البته پس از ممیز ) عمل انتساب به راحتی و بدون هیچ مشکلی انجام میشود . اما اگر برعکس یعنی خواستید که یک متغییر با طول بیشتر ( مثلا float ) را درون یک متغییر با طول کمتر ( مثلا int ) بریزید آنگاه compiler به شما Warning می دهد ( loss of data ) به این معنا که مقداری از عدد شما نابود می شود ... ( البته این کار بعضی از اوقات نیاز میشود اما سعی کنید همیشه همه ی warning ها را نیز برطرف کنید ) تبدیل نوع موقت یا static به این صورت است که شما در بعضی از موارد می خواهید حتما جوابتان مثلا double شود بدون اینکه هیچ کدام از متغییر هاتون که int هستند تغییری پیدا کنند در این حالت به compiler میگویید که جواب را به double بدست بیار اما تغییری در متغییر هاتون ایجاد نشه . طریقه نوشتن آن : double avg=static_cost (x+y+z)/3; یا double avg=(double) (x+y+z)/3;
البته روش دوم بهتره به خصوص برای ورژنهای جدید ...
با سلام خدمت بچه های گل سایت ... مرسی ار اینکه واقعا خیلی زحمت می کشید و نظر می دید و سوال می کنید و یا آموزش می دید ( واقعا خسته نباشید !!!!!!)  جدی میگم آدم را دلسرد می کنید ... نه پیشنهادی نه انتقادی نه آموزشی نه ... شاید این آخرین آموزشهای من باشه ( اگه بخواد اینطوری پیش بره ... ) منو بگو برای کیا 6 صفحه تاپیک تا حالا دادم ...
حوزه ی شناسایی
آخرین مبحث از متغییرها ( جدا این آخرین درس متغییرهاست )( من دوست دارم یک درس رو که شروع میکنیم تا تهش جلو بریم ... )  متغییرها و حوزه ی شناسایی آنها : متغییرها را از لحاظ حوزه ی شناسایی ( scope ) در کل به دو دسته تقسیم می کنند : 1- local یا محلی 2-global یا سراسری متغییرهای local یا همان متغییرهای محلی به متغییرهایی می گویند که درون تابع تعریف می شوند و حوزه ی شناسایی آنها درون تابع است ( همانطور که میدانید main هم یک نوع تابع است ) به همین دلیل است که در دو تابع مختلف می توان دو متغییرهمنام ولی کاملا متفاوت تعریف کرد . در زبان C++ یک نوع متغییر دیگر هم وجود دارد که global یا سراسری نامیده می شوند . این نوع متغییرها همانطور که از اسمشان بر می آید به صورت سراسری هستند به این معنا که در تمامی تابع ها قابل شناسایی هستند و همواره در هر تابع می توان از آنها استفاده کرد و مقدار آنها در گذر از هر تابع مرتبا می تواند تغییر کند و کاربرد آنها این است که می توان از آنها به عنوان مقدار بازگشتی از یک تابع برای ورودی به تابع دیگر استفاده کرد یعنی اینکه آن را وارد یک تابع void کرده سپس درون تابع آنرا تغییر داده و حاصل را به تابع بعدی وارد کنیم و به همین ترتیب ... ( البته این روش کار جالبی است و گاهی از اوقات واقعا به درد می خورد اما در کل استفاده از این روش پیشنهاد نمی شود چون نگهداری از متغییرهای سراسری مشکل است ) ***یکی از مهمترین تفاوتهای متغییر های سراسری با متغییر های محلی این است که متغیر های محلی تا زمانی که مقدار اولیه نگرفته باشند معتبر نیستند اما متغیر های سراسزی دارای مقدار اولیه ی 0 هستند ( اگر مقدار اولیه داده نشده باشند ) ***در حالتی که در تابعی متغیر محلی همنام با متغیر سراسری تعریف گردد در این صورت در آن تابع متغیر سراسری قابل دسترسی نخواهد بود مگر آنکه از عملگر حوزه ی تفکیک :: استفاده کنید . بحث متغییر ها تمام شد ان شاء الله در درس های بعدی می رویم سر ساختارهای کنترلی ...
یک موضوع خیلی مهم :
برنامه ی VC++ یک قسمت خیلی خیلی خیلی جالب دارد که من خودم عاشقش هستم ... با دکمه ی F10 و F11 تا حالا کار کردید ؟؟؟ ( از حرفه ای ها پوزش می خواهم ... ) ببنید وقتی شما یک کد را می نوسید و دکمه های Ctrl + F7 را می زنید و در واقع آن را compile می کنید compiler با error ها و warning ها و یا message ها به شما خطاهای syntax ایتون رو گوشزد می کنه و به شما می گه که فلان خط چه چیزی اشتباه نوشتید اما به هیچ وجه خطای logical یا منطقی کدتون رو بهتون نمی گه ( یعنی نمی تونه که بگه ) و شما وقتی که برنامتون رو برای یک ورودی موردنظر چک می کنید می بینید که جواب خیلی پرت و پلایی بهتون می ده ( اون وقته که آدم می خواد شیشه مانیتور رو خورد کنه )( جو گیر نشید )( پیام اخلاقی !!! ) در این مواقع دکمه ی F10 بهترین است . جدی میگم من خیلی از کدنویسها را میشناسم که این دکمه را اصلا نمی دونند ( البته توهین به هیچ کسی نشه ... ) اول یک واژه را تعریف کنیم : Trace = به معنای این است که شما یک جدول به صورت دستی روی کاغذ ( مثلا ) بکشید و به تعداد متغیرها ستون رسم کنید و سپس مرتبا تمامی اعداد درحال تغییر هر کدام از متغیر ها را بنویسید . اینکار باعث می شود که شما مطمئن شوید کدتان درست است و همچنین اگر مشکلی داشتید دلیل آن را متوجه شوید ... حال دکمه ی F10 به صورت کامپیوتری اینکار را برای شما انجام می دهد . با هر بار زدن دکمه ی F10 یک مرحله ( یک خط ) برنامه جلو می رود و شما می توانید مرتبا مقدار تمام متغیر ها یتان را در جدولی در پایین صفحه ( اگر محلی باشند در جدول local ) ببینید به این ترتیب با دیدن مقادیر متغیرهایتان در هر مرحله می توانید مشکل logical کدتان را به راحتی رفع کنید ... ( به نظر من این روش بهترینه ) اگر در کدتان تابع داشتید ( غیر از main ) از F11 استفاده کنید که در این حالت بهتره . البته F10 و F11 یک تفاوت مهم با هم دارند که فهمیدنش خیلی ساده است پس به عنوان تمرین به عهده ی خودتون ... خوشحال میشم کسی تفاوتشون را بگه ... اگه کسی ننوشت خودم می نویسم ... به امید فعالیت های شما ...
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
1-من نمیدونم چرا فکر نمیکنی جواب میدید- 2- چرا پست رو نمیخونی جواب میدی!!! 3- وقتی از برنامه نویسی چیزی نمیدونی چرا جواب میدی!!! 4-تو هر برنامه ای که با c++ مینویسی -همینجا پالیک کن -من با چندین خط کد کمتر با c# مینوسیم ---زبان C# خودش برگرفته از C++ -C -java هست. و opp کامل هست.(اینه که میگم تحقیق کن-یا در تایپیک هایی شرکت کن که در حد خودت باشه. 5-من گفتم C++ را از پایه در محیط لینوکس یاد بگیرن -اینجوری هم به زبان C++ مسلط میشید -و هم برنامه نوشت تحت لینوکس -و یا فعالیت در کد نویسی سیستم عامل . در این مورد باید به زبان های سطح پاییین مثل اسمبلی تسلط داشته باشید. 6-شما میتونید کدهای تحت لینوکس خودتونا با کمپایلرهایی نظیر gcc در ویندوز کمپایل کنید. اینه که میگم نمیخونی جواب میدید--یا درک نمیتونی بکنی جواب میدی.
خب منم چیز زیادی نمیدونم ونوشتم که اینطوری میگن چون تو بیشتر تاپیک ها همین رو خوندم و اینطور متوجه شدم که c++ یکی از زبان های مهم هست که باید برای هک بلد بود از راهنمایی شما هم ممنون
ولی لحن صحبتت خیلی بچه گانه بود واقعا متاسفم
امیدوارم یکی کامل تر این مساله رو در مورد برنامه نویسی توضیح بده لطفا بیشتر از این تاپیک رو منحرف نکنید و ادامه بدین
سلام به همه ی بچه های گل سایت آشیانه ... من برگشتم ... ( بازگشت اژدها !!! ) بخشید که یک روزی هست به تاپیک سر نزده ام ( جای شما اصلا خالی نبود با قویترین و سمج ترین ویروس جهان دست و پنجه نرم می کردم ( virus Virus.Win32.Sality.s ) ) خوب بریم سر بحث و جدل ها ...
ببین دوست عزیز اولا ان شاء الله من خودم به کمک بچه های گل سایت حتما تاپیکهایی برای سایر زبان ها خواهم زد ( البته اگر بچه ها بخواهند و ما را از کمک و یاری سبزشان بی دریغ نکنند ... ) ثانیا دوست من اگر شما خودتون #C بلد باشید در آن صورت حتما خواهید دانست که زبان C++ پایه و بنیاد یادگیری بسیاری از زبانهای دیگر اعم از C# و Java و ... است پس ما کار درستی کردیم ( گاماس گاماس ) ثالثا من که خودم با این IQ ی میگو تقریبا اکثر زبانها را بلدم به نظر خودم هیچ زبانی به کاملی و جامعی و به روز بودگی C++ نیست و من می تونم بهتون قول بدم اگر هر کس زبان C++ را به صورت کامل و حرفه ای و جدی یادبگیره نیازی به هیچ زبان برنامه نویسی دیگه ندارد ( البته زبانهای تحت وب بحثشون جداست ... )
تبدیل نوع
خوب همونطور که قول داده بودم آخرین بحث از متغییر ها یعنی تبدیل نوع :
در موارد بسیار زیادی اتفاق می افتد که می خواهیم دو عدد را با هم جمع یا از هم تفریق یا در هم ضرب و یا بر هم تقسیم کنیم و همچنین دو عدد ما از یک نوع ( type ) نیستند . همان طور که می دانید ALU فقط توانایی انجام عملیات بر روی داده های مشابه را دارد ( مثلا نمی تواند یک عدد 16 بیتی را با یک عدد 32 بیتی پردازش کند ) این جاست بحث تبدیل نوع به میان می آید . تبدیل نوع به عملیاتی گفته می شود که compiler با توجه به کد شما انجام می دهد تا دو عدد از یک نوع شوند و ALU بتواند بر روی آنها پردازش انجام دهد ... 2 نوع تبدیل نوع وجود دارد : 1- تبدیل نوع اتوماتیک 2- تبدیل نوع موقت تبدیل نوع اتوماتیک توسط خود compiler انجام می شود به این صورت که اگر مثلا شما دو عدد که یکی از int و دیگری double است را با هم جمع میکنید دو عدد را به صورت double تبدیل میکند و حاصل هم double می شود به فرض 2 با 1.55 آنگاه 2 تبدیل می شود 2.00 و پس از عملیات انجام می شود ... در کل همیشه داده با نوع بزرگتر بر بقیه غلبه می کند ... اما اگر عملیات شما انتساب بود در آن صورت اگر یک متغییر با طول کمتر را ( مثلا int ) به درون یک متغییر با طول بیشتر ( مثلا float ) ریختید آنگاه با گذاشتن 0 در انتهای عدد ( البته پس از ممیز ) عمل انتساب به راحتی و بدون هیچ مشکلی انجام میشود . اما اگر برعکس یعنی خواستید که یک متغییر با طول بیشتر ( مثلا float ) را درون یک متغییر با طول کمتر ( مثلا int ) بریزید آنگاه compiler به شما Warning می دهد ( loss of data ) به این معنا که مقداری از عدد شما نابود می شود ... ( البته این کار بعضی از اوقات نیاز میشود اما سعی کنید همیشه همه ی warning ها را نیز برطرف کنید ) تبدیل نوع موقت یا static به این صورت است که شما در بعضی از موارد می خواهید حتما جوابتان مثلا double شود بدون اینکه هیچ کدام از متغییر هاتون که int هستند تغییری پیدا کنند در این حالت به compiler میگویید که جواب را به double بدست بیار اما تغییری در متغییر هاتون ایجاد نشه . طریقه نوشتن آن : double avg=static_cost (x+y+z)/3; یا double avg=(double) (x+y+z)/3;
البته روش دوم بهتره به خصوص برای ورژنهای جدید ...
با سلام خدمت بچه های گل سایت ... مرسی ار اینکه واقعا خیلی زحمت می کشید و نظر می دید و سوال می کنید و یا آموزش می دید ( واقعا خسته نباشید !!!!!!)  جدی میگم آدم را دلسرد می کنید ... نه پیشنهادی نه انتقادی نه آموزشی نه ... شاید این آخرین آموزشهای من باشه ( اگه بخواد اینطوری پیش بره ... ) منو بگو برای کیا 6 صفحه تاپیک تا حالا دادم ...
حوزه ی شناسایی
آخرین مبحث از متغییرها ( جدا این آخرین درس متغییرهاست )( من دوست دارم یک درس رو که شروع میکنیم تا تهش جلو بریم ... )  متغییرها و حوزه ی شناسایی آنها : متغییرها را از لحاظ حوزه ی شناسایی ( scope ) در کل به دو دسته تقسیم می کنند : 1- local یا محلی 2-global یا سراسری متغییرهای local یا همان متغییرهای محلی به متغییرهایی می گویند که درون تابع تعریف می شوند و حوزه ی شناسایی آنها درون تابع است ( همانطور که میدانید main هم یک نوع تابع است ) به همین دلیل است که در دو تابع مختلف می توان دو متغییرهمنام ولی کاملا متفاوت تعریف کرد . در زبان C++ یک نوع متغییر دیگر هم وجود دارد که global یا سراسری نامیده می شوند . این نوع متغییرها همانطور که از اسمشان بر می آید به صورت سراسری هستند به این معنا که در تمامی تابع ها قابل شناسایی هستند و همواره در هر تابع می توان از آنها استفاده کرد و مقدار آنها در گذر از هر تابع مرتبا می تواند تغییر کند و کاربرد آنها این است که می توان از آنها به عنوان مقدار بازگشتی از یک تابع برای ورودی به تابع دیگر استفاده کرد یعنی اینکه آن را وارد یک تابع void کرده سپس درون تابع آنرا تغییر داده و حاصل را به تابع بعدی وارد کنیم و به همین ترتیب ... ( البته این روش کار جالبی است و گاهی از اوقات واقعا به درد می خورد اما در کل استفاده از این روش پیشنهاد نمی شود چون نگهداری از متغییرهای سراسری مشکل است ) ***یکی از مهمترین تفاوتهای متغییر های سراسری با متغییر های محلی این است که متغیر های محلی تا زمانی که مقدار اولیه نگرفته باشند معتبر نیستند اما متغیر های سراسزی دارای مقدار اولیه ی 0 هستند ( اگر مقدار اولیه داده نشده باشند ) ***در حالتی که در تابعی متغیر محلی همنام با متغیر سراسری تعریف گردد در این صورت در آن تابع متغیر سراسری قابل دسترسی نخواهد بود مگر آنکه از عملگر حوزه ی تفکیک :: استفاده کنید . بحث متغییر ها تمام شد ان شاء الله در درس های بعدی می رویم سر ساختارهای کنترلی ...
یک موضوع خیلی مهم :
برنامه ی VC++ یک قسمت خیلی خیلی خیلی جالب دارد که من خودم عاشقش هستم ... با دکمه ی F10 و F11 تا حالا کار کردید ؟؟؟ ( از حرفه ای ها پوزش می خواهم ... ) ببنید وقتی شما یک کد را می نوسید و دکمه های Ctrl + F7 را می زنید و در واقع آن را compile می کنید compiler با error ها و warning ها و یا message ها به شما خطاهای syntax ایتون رو گوشزد می کنه و به شما می گه که فلان خط چه چیزی اشتباه نوشتید اما به هیچ وجه خطای logical یا منطقی کدتون رو بهتون نمی گه ( یعنی نمی تونه که بگه ) و شما وقتی که برنامتون رو برای یک ورودی موردنظر چک می کنید می بینید که جواب خیلی پرت و پلایی بهتون می ده ( اون وقته که آدم می خواد شیشه مانیتور رو خورد کنه )( جو گیر نشید )( پیام اخلاقی !!! ) در این مواقع دکمه ی F10 بهترین است . جدی میگم من خیلی از کدنویسها را میشناسم که این دکمه را اصلا نمی دونند ( البته توهین به هیچ کسی نشه ... ) اول یک واژه را تعریف کنیم : Trace = به معنای این است که شما یک جدول به صورت دستی روی کاغذ ( مثلا ) بکشید و به تعداد متغیرها ستون رسم کنید و سپس مرتبا تمامی اعداد درحال تغییر هر کدام از متغیر ها را بنویسید . اینکار باعث می شود که شما مطمئن شوید کدتان درست است و همچنین اگر مشکلی داشتید دلیل آن را متوجه شوید ... حال دکمه ی F10 به صورت کامپیوتری اینکار را برای شما انجام می دهد . با هر بار زدن دکمه ی F10 یک مرحله ( یک خط ) برنامه جلو می رود و شما می توانید مرتبا مقدار تمام متغیر ها یتان را در جدولی در پایین صفحه ( اگر محلی باشند در جدول local ) ببینید به این ترتیب با دیدن مقادیر متغیرهایتان در هر مرحله می توانید مشکل logical کدتان را به راحتی رفع کنید ... ( به نظر من این روش بهترینه ) اگر در کدتان تابع داشتید ( غیر از main ) از F11 استفاده کنید که در این حالت بهتره . البته F10 و F11 یک تفاوت مهم با هم دارند که فهمیدنش خیلی ساده است پس به عنوان تمرین به عهده ی خودتون ... خوشحال میشم کسی تفاوتشون را بگه ... اگه کسی ننوشت خودم می نویسم ... به امید فعالیت های شما ...
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
یه سوال لطفا همه نظرشون و هر چی میدونن رو بگن برنامه نویسی نمیدونم و می خواستم c++ رو یاد بگیرم چون اینجا زیاد گفته شده که اینو یاد بگیرین برای شروع برنامه نویسی با c++ از کجا شروع کنم؟ وبا چی یاد بگیم؟ cd آموزشی یا کتاب یا اگه چیزه دیگه ای میدونین بگین اگه میشه بگین مثلا چه کتابی یا چه cd ؟
عزیز من چند تا کتاب و سی دی اموزشی دارم که در حال مطالعه و یادگیری اونا هستم در ضمن خلاصه مطالبی رو که یاد میگیرم به طور ساده در این تاپیک قرار میدم از مثالهای امید هم استفاده کنید
برای اینکه شروع کنید یک کامپایلر مثل visual c++ 2005 که امید در پستهای اول گفتن تهیه کنید
مثالها رو باز کنید
بعد سطر به سطر کدها رو بخونید و بدونید چه کاری انجام میدن من این کارو دارم انجام میدم اینطوری بهتر یاد میگیرم
منظورتون زبان اصلی DEITEL DEITEL که میگین سرچ کن؟
میشه با کتاب زبان اصلی c++ رو یاد گرفت؟
ممنون منظورتون زبان اصلی DEITEL DEITEL که میگین سرچ کن؟
میشه با کتاب زبان اصلی c++ رو یاد گرفت؟ | ببین دوست عزیز در هر مورد کتاب انگلیسی حرف اول رو میزنه اینجا هم همینطور اما این کتاب ترجمه شده اش هم موجود است ... کتابخانه ی دانشکده ی ما که داشت ...
ببین دوست عزیز در هر مورد کتاب انگلیسی حرف اول رو میزنه اینجا هم همینطور اما این کتاب ترجمه شده اش هم موجود است ... کتابخانه ی دانشکده ی ما که داشت ... جاهایی که کتابهای دانشگاهی رو میفروشند این کتاب ازرشمند رو حتما دارند ...
مسابقه ی برنامه نویسی ++C در همین تاپیک ... بزودی ... قول می دم ...
|
متغییرها
آموزش درمورد متغییرها : با اجازه ی Tabriz-info عزیز من هم میخواستم به بحث متغییرها اضافه بشم = > متغییرها در زبان ++C چند دسته اند : Char => داده هایی هستند شامل حرف و علائم و ... که 8 بیت یا 1 بایت فضا اشغال میکنند پس 256=28 کاراکتر داریم که در زبان ++C این کاراکتر ها از جدول ASKII خوانده می شوند ... ( با یک search در سایت Google.com می توانید نسخه ای از آن را دریافت کنید )( من هم قول میدم که کد برنامه ی ساده ای که کد اسکی هر دکمه ای را که میزنید را به شما می گوید را بذارم )( جمله را بپا !!! )( لطفا مسخره نکنید ... ) Int => داده هایی هستند که به منظور ذخیره ی اعداد صحیح تعریف می گردند و فضای اشغالی آنها هم به OS بستگی دارد مثلا اگر از Windows 32 bit استفاده می کنید معادل 32 بیت یا 4 بایت است و ... =Float> این نوع داده ها جهت ذخیره کردن اعداد اعشاری هستند که تا 7 رقم اعشار دارند و فضای 4 بایت یا 32 بیت را اشغال می کند . Double=> این نوع داده ها جهت ذخیره کردن اعداد اعشاری هستند که تا 15 رقم اعشار دارند و فضای 8 بایت یا 64 بیت را اشغال می کند . Short=> از داده های نوع int است با این تفاوت که 2 بایت یا 16 بیت را اشغال می کند . Long Double=> مانند Double است و تقریبا همان فضا را هم اشغال می کند فقط با این تفاوت که 19 رقم اعشار می پذیرد. Boolean=> داده ای است جهت ذخیره ی مقادیر 0و1 که می تواند معرف False و True باشد . ( در تعریف می نویسیم : bool ) ***نکته : یک عملگر وجود دارد که حجم هریک از type های متغییر ها را میدهد : Sizeof() دو مثال از استفاده از آن می گذارم : ( خیلی خیلی ساده اند )( لطفا مسخره نکنید ... ) ***نکته : می توانید از عبارت unsigned قبل از تعریف متغییر ها استفاده کنید : unsigned int x;
این کار باعث می شود که محدوده ی متغییر شما دو برابر شود ولی باید مواظب باشید که دیگر به این متغییر عدد منفی نسبت داده نشود . چون بحث ثابتها توسط Tabriz-info عزیز شد من به دو مثال بسنده می کنم : #define Pi 3.1415 Const int Pi=3.1415; ان شاءالله در پستهای آینده در مورد تبدیل نوع متغییرها صحبت می کنم ...
|
|
Askii
برنامه : ASKII توضیح : این برنامه کد اسکی هر دکمه ای را که می زنید را نمایش می دهد . لینک دانلود : http://h1.ripway.com/omid55/code/ASKII.rar
مثال1 برای ()sizeof
برنامه : سیستم عامل چند بیتی توضیح : این برنامه نشان می دهد که سیستم عامل اجرایی چند بیتی است . لینک دانلود : http://h1.ripway.com/omid55/code/OS.rar
مثال2 برای ()sizeof
برنامه : متغییرها توضیح : این برنامه نشان می دهد که هر متغییر چه مقدار فضا روی حافظه اشغال می کند . لینک دانلود : http://h1.ripway.com/omid55/code/variables.rar
سوالات
خدا قوت
با عرض سلام و خسته نباشید خدمت تموم دوستان عزیزی که این تاپیک رو زده و گرمش می کنن دوستان من تو برنامه نویسی یه مشکل پیدا کردم  سیستم من موقع کامپایل کردن برنامه نوشته شده ارور میده و میگه یکی از توابعی که مورد استفاده بوده اونو پیدا نکردم...کلا به اون تابع کتابخانه ای که مورد استفاده قرار می دهم ارور میده خلاصه دم همتون گرم
ببين دوست عزيز شما مي بايستي پس از نوشتن كد دكمه هاي Crtl+F7 را بزني تا compile بشه يعني اينكه به زبان سطح پايين ماشين تبديل بشه و براي سخت افزار قابل فهم . پس از آن اگر هيچ Error اي نداشته باشي ( Warning اگه داشت مهم نيست )( البته Warning ها رو هم حتما بخونيد ) اگر كمه هاي Crtl+F5 را با هم بزني execute شده با فايل linker ادغام ميشه و يك فايل اجرايي با پسوند exe و با نام كدتان ميسازد كه در مسير D:\Documents and Settings\omid_as1988\My Documents\Visual Studio 2005\Projects سپس نام پروژه و در فولدر debug قرار ميگيرد كه مي توانيد آنرا هركجا كپي كرده و استفاده كنيد ...  
|
|
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
برنامه 14 : Bisection توضیح : آموزش الگوریتم Bisection به دو صورت لینک دانلود : http://h1.ripway.com/omid55/code/Prog14.rar
برنامه 15 : Fibonachi توضیح : الگوریتم سری Fibonachi تا قبل از رسیدن به OverFlow و آموزش دستور ULONG_MAX البته باید limits حتما باید include گردد لینک دانلود : http://h1.ripway.com/omid55/code/Prog15.rar
برنامه 16 : پروژه ی خودم در درس مبانی کامپیوتر( یک برنامه ی کامل ) برای آموزش string و تابع و آرایه و Sort به صورت مخلوط ( یاد بستنی مخلوط افتادممممممم ....... ) توضیح : این برنامه ابتدا یک متن کامل را از ورودی دریافت می کند ( کاربر می تواند Enter کند و هر چه می خواهد به هر میزان تایپ نماید ) سپس برای اتمام کار یک end بزند و سپس Enter کند ولی این واژه ی end نباید به هیچ وجه جزء متن به حساب بیاید و فقط نشان دهنده ی پایان متن است سپس برنامه باید تعداد کلمات متن را حساب کرده و چاپ نماید بعد از آن کلمه با بزرگترین طول به همراه طول آن و کلمه با کمترین طول به همراه طول آن را چاپ کند( در خطوط مجزا ) سپس کلمات را بر حسب طول بوسیله ی سپس کلمات را بر حسب طول بوسیله ی Bubble Sort مرتب کند و آنها را در خطوط مجزا چاپ نماید آنگاه یک مرتبه هم آنها را برحسب حروف الفبا مرتب کند و بعد از آن آنها را در خطوط مجزا چاپ کند و در پایان چاپ نماید که در هر کلمه چه تعداد از چه حرفی استفاده شده است دو مرتبه در خطوط مجزا و ... لینک دانلود : http://h1.ripway.com/omid55/code/Prog16.rar
ان شاء الله اگر بچه ها استقبال کنند و کمک بدهند چند تا از سوالات AC M را نیز که خودم حلشون کردم ( البته با IQ میگوی خودم !!!!! ) را میذارم ... نظر , انتقاد, پیشنهاد , کمک یا هرچی کرمتونه بذارید ... قربانه هرچی بچه آشیانه ای است ... فعلا بای ...     
اگه میشه از سوالهای ACM توی همین تاپیک قرار بدید تا به کمک هم حلشون کنیم و با کمک هم هرچه بیشتر تاپیک را پر بار تر کنیم ( زرشککککککککککککک ) از مدیران سایت هم می خواهم کمکی برسانند ...  
از استاد 0261 عزیز دل ( مرتضی جون !!! ) خواستاریم یک نگاهی به این پایین مایین هم بیاندازند و یک کمکی هم به ما بدهند ...
راستی اینم یکی از لینکهای ACM برای شما : http://www.acm.inf.ethz.ch/ProblemSetArchive.htmlنظر یادتون نره ...
اینم یه سری مسایل اولیه و ابتدایی برای شروع برنامه نویسی در محیط سی ++
دستور العملهای برنامه c++ دارای ویژگیهای زیر هستند :
1- هردستور در این زبان به ; ختم می شود . 2- حداکثر طول یک دستور 255 کاراکتر است . 3- هر دستور میتواند در یک یا چند سطر ادامه داشته باشد 4- در هر سطر میتوان چند دستور را تایپ کرد ( این کار توصیه نمی شود ) 5- توضیحات میتواند در بین /* */ قرار گیرند و یا بعد از // ظاهر شوند ( درست مثل سطر اول برنامه هایی که امید قرار میده ) /* This is a sample comment */ //this is a another sample comment 6 - حساس به بزرگی و کوچکی حروف
انواع داده ها در C++ :
char : برای ذخیره داده های کاراکتری int : برای ذخیره اعداد صحیح float : برای ذخیره اعداد اعشاری double : برای ذخیره اعداد اعشاری که بزرگتر از float باشد void bool : برای ذخیره مقادیر منطقی به کار میرود
با استفاده از کلماتی مثل signed , unsigned , long , short میتوان مقادیر جدیدی ایجاد کرد
int (signed , unsigned , short , long ) char ( signed , unsigned ) double ( long)
بعدا عکس جدول انواع داده ها و مقادیر قابل قبول رو براتون میزارم
تعیین نوع متغیر : ; نام متغیر نوع داده
مثال : ;int x,y; float m,n; char ch1,ch2; double d1
مقدار دهی به متغیرها : int x,y=5; char ch1='a' , ch2='m'; bool b1=false , b2=true
یا
int x,y,m; x=y=m=0; یا
int x,y; cin>>x>>y;
ثوابت :
<مقدار > <نام ثابت> define# دقت : علامت ; وجود ندارد
const <نوع داده > < نام ثابت > = < مقدار>;
v
ممنون منظورتون زبان اصلی DEITEL DEITEL که میگین سرچ کن؟
با تشکر از تیم آشیانه و دوست مهربانم سمیرا جان
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
|
اولا خیلی ممنون که دوست عزیز این سوال رو پرسیدید . من هیچ کس رو مسخره نمی کنم چون خودم از همه بیسوادترم   ابتدا به سربرگ New رفته و گزینه ی New Project را انتخاب می کنید سپس در سمت چپ Win32 را انتخاب می کنید و از سمت راست هم Win32 Console Application , در قسمت Name هم یک نام می نویسید و OK می کنید سپس Next را میزنیم و بعد از آن Empty Project را تیک کرده و Finish می کنیم بعد از آن از Project باز شده روی Source Files کلیک راست کرده و از گزینه ی Add قسمت New Item را بر می گزینیم آنگاه در سمت چپ Code و در سمت راست ++C فایل که در داخل پرانتز (cpp.) است و سپس در قسمت Name هم نام دلخواه خود وارد می کنید و در پایان Add را می زنیم ... لطفا هر سوال دیگری دارید باز هم مطرح نمایید ... |
اقا دستت درد نکنه ممنونم من با c++ 6 کار کرده بودم خیلی روشن و خوب توضیح دادید میرم کدهایی رو که دادید امتحان کنم
برنامه 7 : همان برنلمه ی شماره ی 5 فقط به کمک آرایه ها توضیح : یک برنامه ی 5 قسمتی به کمک آرایه ها لینک دانلود : http://h1.ripway.com/omid55/code/Prog07.rar
برنامه 8 : ماتریسها توضیح : ضرب یک ماتریس 3*2 در یک ماتریس 4*3 ( استفاده از آرایه ها 2 بعدی ) لینک دانلود : http://h1.ripway.com/omid55/code/Prog08.rar
برنامه 9 : Sort توضیح : الگوریتم sort های معمولی و حبابی ( Bubble Sort ) لینک دانلود : http://h1.ripway.com/omid55/code/Prog09.rar
برنامه 10 : تمرین هر چه بیشتر Sort ها و آرایه ها با هم توضیح : مرتب کردن 35 عدد به طوری که در هنگام رسیدن به عدد 0 طریقه ی sort کردن عوض شود ( صعودی و نزولی بودن آن ) به وسیله هر دو الگوریتم sort لینک دانلود : http://h1.ripway.com/omid55/code/Prog10.rar
برنامه 11 : تلفیقی از ماتریسها و استفاده از توابع توضیح : ضرب یک ماتریس 3*2 در یک ماتریس 4*3 از طریق استفاده از تابع و به دست آوردن مجموع درایه های روی قطر اصلی و همچنین ترانهاده ی 2 ماتریس مربعی لینک دانلود : http://h1.ripway.com/omid55/code/Prog11.rar
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
من از Microsoft Visual C++ 2005 Express Edition استفاده میکنم اگر ممکنه اول بفرمائید چطوری یک project باز کنم که بتونم کدهایی که شما میفرمائید رو امتحان کنم |
اولا خیلی ممنون که دوست عزیز این سوال رو پرسیدید . من هیچ کس رو مسخره نمی کنم چون خودم از همه بیسوادترم  
ابتدا به سربرگ New رفته و گزینه ی New Project را انتخاب می کنید سپس در سمت چپ Win32 را انتخاب می کنید و از سمت راست هم Win32 Console Application , در قسمت Name هم یک نام می نویسید و OK می کنید سپس Next را میزنیم و بعد از آن Empty Project را تیک کرده و Finish می کنیم بعد از آن از Project باز شده روی Source Files کلیک راست کرده و از گزینه ی Add قسمت New Item را بر می گزینیم آنگاه در سمت چپ Code و در سمت راست ++C فایل که در داخل پرانتز (cpp.) است و سپس در قسمت Name هم نام دلخواه خود وارد می کنید و در پایان Add را می زنیم ... لطفا هر سوال دیگری دارید باز هم مطرح نمایید ...
برنامه 6 (ساده) : مرتب کردن نمرات و قرار دادن آنها در بازه های مشخص توضیح : به این برنامه یک نمره در ابتدا وارد می گردد( که می تواند اعشاری هم باشد ) سپس پرسیده می شود " آیا عدد دیگری وجود دارد یا خیر ؟ " و به این ترتیب تعدادی نمره وارد می گردد و آنگاه اگر 20=>نمره=>17 بود A و اگر 17>نمره=>15 بود B و 15>نمره=>13 بود C و 13>نمره=>10 بود D و اگر کمتر از 10 بود F می گردد. ( یک مرتبه با ساختار کنترلی IF … ELSE و یک مرتبه با ساختار کنترلی SWITCH ) لینک دانلود : Ripway.com - fast, free file hosting and website hosting
برنامه 6 (مشکل) : مرتب کردن نمرات و قرار دادن آنها در بازه های مشخص توضیح : به این برنامه تعداد زیادی نمره به صورت پشت سر هم که با یک space فقط از هم جدا شده اند وارد می گردد( با getche() بنویسید )( conio.h را باید include کنید ) و آنگاه اگر 20=>نمره=>17 بود A و اگر 17>نمره=>15 بود B و 15>نمره=>13 بود C و 13>نمره=>10 بود D و اگر کمتر از 10 بود F می گردد. ( یک مرتبه با ساختار کنترلی IF … ELSE و یک مرتبه با ساختار کنترلی SWITCH ) لینک دانلود : Ripway.com - fast, free file hosting and website hosting
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
در ابتدا باید یک چیزهایی رو بدونید : هر کد C++ از یک سری توابع ( بحث در مورد تابع در پایان تاپیک خواهد آمد ) و همیشه از یک تابع main که تابع اصلی است تشکیل شده است . تمامی کد اصلی باید در این قسمت نوشته شود . در کد نویسی در زبان C و C++ باید از هر دستوری که می خواهید استفاده کنید قبلا کل بخشی که آن دستور و دستورهای دیگری در آن وجود دارد را به کدتان اضافه کنید . اصطلاحا می گویند فلان Header را Include کنید ... برای مثال iostream هدری است که در آن دستوراتی مانند cin و cout و endl و ... در آن وجود دارد که به ترتیب برای ورودی و خروجی و رفتن به خط بعدی است ... اگر \n را در " " بزنید به خط بعدی می ره و اگر \t را در " " بزنید 6 ستون جلو می ره و ...
قبل از شروع مثالها به شما پیشنهاد می کنم که از Microsoft Visual C++ 2008 Express Edition یا حداقل از Microsoft Visual C++ 2005 Express Edition برای کد نویسی استفاده کنید ... امیدوارم بقیه ی بچه ها هم از این تاپیکها بزنن . ( مثلا برای زبان Perl که من هم خیلی دوست دارم یاد بگیرم ... )  اگه خدا بخواد ان شاء الله در آینده برای زبانهای Java و Delphi هم تاپیک خواهم زد ...
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
آموزش زبان C++ قدم به قدم از طریق مثال
از آنجایی که برنامه نویسی و کد نویسی یکی از مهمترین موضوعات کامپیوتر است و متاسفانه اغلب ایرانیان از این موهبت بسیار مهم بی بهره می باشند و بسیاری از اعضای تازه وارد سایت آشیانه نیز ممکن است کد نویسی بلد نباشند یا یک زبان قدیمی را بدانند بر آن شدم تاپیکی در مورد آموزش زبان C++ بزنم و این زبان بسیار زیبا و قوی و کامل و جدید را یاد بدهم (البته من خودمم هم هیچی بلد نیستم و کوچیکه همه ی بروبکس آشیانه هم هستم ... )( امید وارم بچه ها ی گل آشیانه کمکم کنند ... ) در این تاپیک من تمام سعیم را می کنم که از مثال های خیلی خیلی خیلی ساده شروع کنم ... در واقع این تاپیک آموزش مقدماتی زبان C++ است ( ان شاء الله در آینده یک تاپیک هم برای آموزش پیشرفته خواهم زد )( گاماس گاماس ... ) پس به امید خدا می خواهم در این تاپیک زبان C++ را از پایه و به صورت بسیار بسیار بسیار ساده آموزش دهم از طریق مثال اما چون اگر تمامی کد ها را در تاپیک قرار دهم(به طوری که بتونید با باز شدن تاپیک آنها را ببینید) تاپیک خیلی بزرگ می شه پس آنها را روی Server خودم آپلود می کنم و فقط لینک دانلودشون را می ذارم ... ( فایلها خیلی خیلی کوچکند و اگر دانلود همشون رویهم بیشتر از 1 دقیقه طول کشید من اسم خودم رو به ... تغییر می دم )( حتی با dial up )
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه دوازدهم آذر 1388
|
|
| | | |
|
|
|
|
دیدید وقتی ميخواهيد كامپيوترتان را خاموش كنيد چند دقيقه طول ميكشه. براي كم كردن اين مدت زمان ابتدا بايد:
ابتدا وارد ريجيستری شويد و سپس به دنبال کليد زير بگرديد :
HKEY_CURRENT_USER\ control panel\ Desktob
سمت راست صفحه يك سري فايل مياد روي HungAppTimeout اينتر كنيد.دوباره يك صفحه مياد كه عددي رو نوشته شما به جاي اون عدد هر عدد كمتري كه ميخواهيد بذاريد .
توجه : فقط عددش كمتر از 100 نباشه چون دستگاهتون خراب ميشه
| +| نوشته شده توسط
Afghan Hacker در پنجشنبه هفدهم اردیبهشت 1388
|
|
| | | |
|
|
|
|
|
ساعت ٥:٥٩ ب.ظ روز ۱۳۸۸/٢/٧ |
|
|
مکانیزم جدیدی در SQL Server 2008 وجود دارد که به شما این اجازه را میدهد تا تغییرات داده ای در یک جدول را پیگیری کنید. تغییرات از لاگ مربوط به تراکنشها توسط پروسس capture خوانده شده و در جداول تغییر ذخیره میشود. جداول تغییر ستونهای جدول منبع و همچنین اطلاعات حاوی metadata را که میتواند برای دریافتن تغییراتی که رخ داده استفاده شود را mirror میکند. آن تغییرات میتوانند در یک فرمت ارتباطی مناسب در TVF ها مصرف شوند. پروسس transform و load (ETL) در سرویسهای Integration در SQL Server که به روزرسانیهای نهایی را به انبار داده ها اعمال میکند تنها یک مثال از برنامه هایی است که از این خاصیت سود برده است. در اینجا یک فرآیند ساده برای گرفتن تغییرات جدول Employee در پایگاه داده ای که testdb صدا زده میشود نشان خواهم داد. قبل از اینکه بتوانید جداول را برای این خصوصیت فعال کنید، باید ابتدا این خاصیت را برای پایگاه داده توسط stored procedure با نام sys.sp_cdc_enable_db فعال کنید. این sp چندین آبجکت سیستمی مربوط به این کار را که شامل cdc schema و cdc user ، جداول، job ها، sp ها و توابع میشود را میسازد. برای اینکه چک کنید آیا این خصوصیت در پایگاه داده شما فعال است یا نه، query با نام is_cdc_enabled را روی sys.databases اجرا نمایید. کد زیر پایگاه داده testdb را ساخته و این خصوصیت را روی آن فعال میکند:
USE master; IF DB_ID('testdb') IS NOT NULL DROP DATABASE testdb; CREATE DATABASE testdb; GO USE testdb; EXECUTE sys.sp_cdc_enable_db;
برای از کار انداختن رهگیری داده ای روی پایگاه داده، از sp با عنوان sys.sp_cdc_disable_db استفاده نمایید. پردازش رهگیری به محض اینکه اولین جدول در پایگاه داده برای رهگیری توانا میشود، تغییرات را از log خوانده و آنها را در جداول تغییر ثبت میکند. برای راه انداختن رهگیری داده ای برای یک جدول از sp با نام sys.sp_cdc_enable_table استفاده کنید. توجه داشته باشید که برای جمع آوری تغییرات باید SQL Server Agent در حال اجرا باشد. کد زیر یک جدول با نامEmployees در testdb ساخته و یک سطر در آن وارد میشود :
CREATE TABLE dbo.Employees ( empid INT NOT NULL, name VARCHAR(30) NOT NULL, salary MONEY NOT NULL ); INSERT INTO dbo.Employees(empid, name, salary) VALUES(1, 'Emp1', 1000.00);
کد زیر به جدول این توانایی را میدهد که تغییرات داده ای را رهگیری کند :
EXECUTE sys.sp_cdc_enable_table @source_schema = N'dbo' , @source_name = N'Employees' , @role_name = N'cdc_Admin';
چون این اولین جدولیست که در پایگاه داده برای این کار آماده شده است، این کد سبب میشود که پردازش مربوط به این کار شروع شود (دو job اجرا میشود : cdc.testdb_capture و cdc.testdb_cleanup). آرگومان @role_name شما را قادر میکند تا یک database role تعیین کنید که دارای دسترسی برای تغییر داده خواهد بود. اگر role معین شده وجود نداشته باشد، SQL Server خود آن را خواهد ساخت. به صورت پیش فرض، تغییرات برای تمام ستونهای جدول جمع آوری میشود. برای جمع آوری تغببرات فقط برایزیرمجموعه ای از ستونها میتوانید لیست ستونها را در آرگومان @captured_column_list مشخص نمایید. برای گرفتن اطلاعات metadata درباره ستونهایی که نمونه جمع آوری به حساب آمده اند، میتوانید از procedure با نام sys.sp_cdc_get_captured_columns استفاده نمایید. اگر بعدا خواستید که رهگیری تغییرات داده را غیرفعال نمایید از sys.sp_cdc_disable_table استفاده نمایید. و اگر میخواهید ببینید که آیا یک جدول برای این کار فعال شده است، روی view با نام sys.tables ستون is_tracked_by_cdc را جستجو کنید. برای بدست آوردن اطلاعات درباره پیکربندی رهگیری تغییر داده برای هر جدول فعال شده، sp با نام sys.sp_cdc_help_change_data_capture را مانند زیر استفاده نمایید :
EXECUTE sys.sp_cdc_help_change_data_capture;
استفاده ازاین تغییرات به صورت مستقیم از جداول تغییرمیسر نیست بلکه باید از توابع table-valued استفاده نمایید. داده برای تغییراتی که درون یک محدوده مشخص شده از شماره سریالهای log (LSNs) قرار گرفته باشند درخواست شده است. SQL SERVER 2008 همچنین توابع نگاشت sys.fn_cdc_map_time_to_lsn و sys.fn_cdc_map_sln_to_time را مهیا کرده که به شما کمک میکند تا یک محدوده date-time را به محدوده ای از LSNs و بالعکس تبدیل کنید. توابع مجزا تمامی تغییرات داخل یک ورودی (cdc.fn_cdc_get_all_changes_) و تغییرات شبکه که در مقابل سطرهای مجزا جای گرفته اند (cdc.fn_cdc_get_net_changes_) را مهیا میکنند، البته اگر که توسط sys.sp_cdc_enable_table فعال شده باشند. SQL Server 2008 همچنین یک sp با نام sys.sp_cdc_get_ddl_history دارد که به شما تاریخچه تغییرات DDL پیوسته با یک نمونه خاص رهگیری را میدهد
|
|
ساعت ۱۱:٠۸ ق.ظ روز ۱۳۸۸/۱/۱٥ |
|
|
در سال ۲۰۰۳ یک add-on به SQL Server نسخه 2000 به عنوان یک سرویس گزارشگیری افزوده شد. این سرویس تا نسخه 2005 خیلی کاربردی نبود. از سال 2005 مایکروسافت سرمایه گذاری خوبی را در این زمینه که قبل از آن شرکتهایی در آن فعالیت میکردند آغاز کرد. اینگونه بود که از این مقطع زمانی به بعد مایکروسافت اقدامات خوبی را در این زمینه شروع کرد و آن را از حالت یک add-on خارج کرد.
نصب زمانی که میخواهید نسخه های 2005 و 2008 از SQL Server را نصب کنید در یکی از مراحل باید Reporting Service را برای نصب انتخاب کنید. در ادامه باید تیک مربوط به Configure کردن خودکار Reporting Server را بزنید. اگر این گزینه را انتخاب نکنبد باید عملیات پیکربندی را به صورت دستی انجام دهید.
معماری SSRS سه کامپوننت اصلی وجود دارد که با یکدیگر کار کرده و SSRS را به یک برنامه چندلایه واقعی تبدیل میکند. این سه عبارتند از :
- Client
- Report Server
- SQL Server Report Databases
شکل زیر یک تفکیک مفهومی از این سه بخش و اجزا آن است.

در اینجا data source و SSRS databases ، ReportServer و ReportServerTempDB موجودیتهای مجزایی هستند. Data Source منبع و منشا اصلی داده ها برای پر کردن گزارشات است و Report Server Databases وظیفه ذخیره سازی اطلاعات مربوط به گزارشات را بر عهده دارند. هر دوی این دو میتوانند به صورت فیزیکی در یک SQL Server مشترک قرار گیرند، فزض کنید که data source یک پایگاه داده SQL Server است. Data source میتواند data provider های مختلف مثل SQL Server، Oracle، LDAP و یا Analysis Service را پشتیبانی نماید. این امر ممکن است که شما یک سرور واحد را هم برای SSRS Report Server Web Service و هم برای Report Server Database پیکربندی کنید. اگر چه این کار توصیه نمیشود مگر اینکه تعداد کاربر شما کم باشد.
نصب SSRS دو پایگاه داده برای شما میسازد : ReportServer : این پایگاه داده اصلی است که تمامی اطلاعات را از فایل RDL منتشر شده (published) در حود ذخیره میکند. همچنین مواردی چون خصوصیات گزارش (مانند data sourceها)، پارامترها و فایلهای لاگ را در خود نگهداری میکند.
ReportServerTempDB : این پایگاه داده کپیهای cach شده گزارشات را برای بالا بردن کارایی به جهت استفاده همزمان کاربران در خود دارد. با این مکانیزم این اطمینان را داشته باشیم که حتی در صورت restart شدن سرور باز هم گزارشات در دسترس هستند.

SSRS Report Server SSRS Report Server مهمترین نقش را در مدل SSRS ایفا میکند. در میانه کار کرده و برای هر درخواست از سمت client برای render کردن یک گزارش یا برای انجام یک درخواست مدیریتی مانند ساخت یک subscription مسیول است. شما متوانید یک report server را با توجه به عملیاتهای مختلف به چندین زیربخش تفکیک کنید :
- Programming interface
- Report processing
- Data processing
- Report rendering
- Report scheduling and delivery
SSRS Web Service Interface رابط برنامه نویسی که به عنوان API های .NET Web Service و متدهای دسترسی URL ظاهر میشوند، تمامی درخواستهای ورودی از client ها را خواه درخواست گزارش باشد، خواه درخواست مدیریتی، اداره میکند.با توجه به نوع درخواست، رابط برنامه نویسی با دسترسی به پایگاه داده Report Server یا ارسال آن به کامپوننت دیگر برای پردازش اقدام میکند.
Report Processor این کامپوننت مسیول تمامی درخواستهای گزارش است. مانند رابط برنامه نویسی، مستقیما به پایگاه داده ReportServer متصل میشود تا اطلاعات مربوط به تعریف گزارش را دریافت کند که این اطلاعات بعدا برای ترکیب با اطلاعات data source و ساخت گزارش به کار میرود.
Data Processing SSRS چهار نوع الحاقیه برای اتصال به پایگاه داده حمایت میکند :
- SQL Server
- Oracle
- OLE DB
- ODBC
وقتی که این کامپوننت یک درخواست را Report Processor دریافت میکند، یک اتصال به data source میزند و آن را به query منبع ارسال میکند. داده بازگردانده شده و به Report Processor فرستاده میشود تا با تعریف گزارش ترکیب شود.
Report Rendering این کامپوننت وظیفه render گزارش در فرمت مورد نظ را دارد. فرمتهای مورد حمایت عبارتند از :
- HTML
- PDF
- HTML با استفاده از کامپوننتهای وبی Office
- Excel
- CSV
- MHTML
- TIFF
برنامه های Client SSRS شامل چندی برنامه است که از آن استفاده میکنند. این برنامه ها و ابزارها، مدیریت Report Server ، پیاده سازی امنیت و وظایف render کردن گزارش را برای مهیا میکنند. این ابزارها مانند زیرند :
• Report Manager این یک برنامه browser base همراه با SSRS است که محیطی گرافیکی را برای کاربران مهیا میکند که توسط آن میتوانند گزارشات را ببینند یا چاپ کنند، یا اینکه گزارشات را برای بخشهای مختلف مدیریت کنند.

• SQL Server Business Intelligence Development Studio (BIDS) اگر شما روی سیستم خود Visual Studio نداشته باشید و SSRS را نصب کنید، خود SQL Server برای شما Visual Studio IDE را برای شما نصب میکند تا شما بتوانید به راحتی به طراحی و تست گزارشات خود بپردازید. این IDE را با نام SQL Server Business Intelligence Development Studio نصب کرده و با انتخاب آن میتوانید به راحتی به آن دست یابید. البته باید بگویم برای ساخت گزارشات وجود این IDE الزامی نیست.

• ابزارهای Command-line شما میتوانید از چندین ابزار Command-line مانند rs ، rsconfig و RSKeyMgmt برای پیکربندی و مدیریت محیط SSRS استفاده نمایید.
• Custom Clients
• Reporting Services Configuration Manager ابزاری برای پیکربندی به صورت گرافیکیست که از نسخه ۲۰۰۵ به بعد به وجود آمد.

انواع گزارشات و ساختار آنها
به طور کلی دو نوع گزارش در RS موجود است:
- Client Report
- Server Report
در Visual Studio 2005 به بعد کنترل جدیدی به آن افزوده شد با نام MicrosoftReportViewer که مخصوص نمایش گزارشات بود. گزارشات فایلهایی با پسوند rdl برای گزارش remote و rdlc برای گزارش clientهستند که میتوانید آن را به پروژه خود بیفزایید. پس از افزودن آن چندین ابزار به شما برای ساخت گزارش داده خواهد شد. شما میتوانید با این ابزارها گزارش مورد نظر خود را بسازید. RDL یک مدل بر مبنای XML است که هر عنصر گزارش مانند قالب بندی، اطلاعات dataset، grouping و sorting، پارامترها و فیلترها را تعریف میکند. همانطور که شما آیتمی را اضافه میکنید، این ساختار دچار تغییرات میشود. در IDE این ساختار از شما مخفیست ولی در صورت نیاز به تغییر کلی در گزارشات ، میتوانید از find and replace در این ساختار به صورت مستقیم استفاده نمایید. در VS 2005 و بعد از آن با زدن دکمه F7 در زمان کار با گزارش میتوانید این ساختار را ببینید. به تکه ای از این ساختار در یک گزارش توجه کنید :

در نسخه ۲۰۰۵ نه ابزار برای ساخت گزارش وجود داشت که در نسخه ۲۰۰۸ کمی تغییر کردند. لیست این ابزار در تصویر زیر آمده است:

هر گزارش شامل سه بخش ۱- Header ۲- Body ۳- Footer است که در هرکدام از برخی از این ابزار میتوان استفاده کرد. شما میتوانید از امکانات زیر در گزارشات استفاده نمایید که من فقط آنها را نام میبرم :
• نوشتن expression برای اکثر اجزای گزارش مثلا امکان visibility و ... • استفاده از توابع از قبل آماده در نوشتن expression • نوشتن expression با زبان VB (مثلا مد تغییر تاریخ) • استفاده از پارامترها برای نوشتن query پویا • استفاده از فایلهای اسمبلی (dll) : مثلا نوشتن تابعی با زبان c# و استفاده ازآن در گزارش • کنترل قوی روی اجزا گزارش • امکان قرار دادن sorting و filter بر اساس عناصر محتلف گزارش • امکان استفاده از گروه بندی های داده ای تودرتو • امکان استفاده از stored procedure و text query به عنوان dataset • امکان ساخت گزارشات تعاملی مثلا استفاده از زیرگزارشات • استفاده از چندین dataset به عنوان تامین کننده داده • امکان دادن به کاربر برای ساختن گزارشات دلخواه با استفاده از report model

تفاوتهای موجود بین دو نوع گزارش
ساختار گزارشات rdl و rdlc کاملا شبیه هم است ولی در نحوه اجرا و تامین داده با هم کم متفاوت هستند. تفاوتهای موجود را به ترتیب در زیر بیان میکنم :
۱- گزارشات server باید در یک پروژه از نوع report server project و در محیط BIDS افزوده شوند در صورتیکه گزارشات client در یک پروژه معمولی .NET اضافه میشوند.
۲- گزارشات server از یک query مستقیم که به صورت stored procedure یا text است به عنوان تامین کننده داده استفاده میکنند در حالی که گزارشات client باید در کد مقداردهی شوند. مثلا داده مربوط به آنها میتواند توسط یک dataset یا یک xml data source تامین شود. در ضمن برای انجام این کار احتیاج به نوشتن مقداری کد مثلا در c# است.
۳-برای نمایش داده شدن گزارشات server کنترل MicrosoftReportViewer صرفا وظیفه نمایش گزارش در انتهای عملیات را دارد و تمام عملیات برای تهیه گزارش و render آن در report server انجام میشود. این در حالیست که برای نمایش گزارش client کنترل MicrosoftReportViewer نقش اساسی را انجام میدهد و عملیات render شدن گزارش در این کنترل انجام میشود.
۴-گزارشات client به نصب SSRS نیازی ندارند در حالیکه گزارشات server بدون این کار قابل دسترسی نیستند.
۵- کنترل MicrosoftReportViewer در گزارشات client و در نسخه ۲۰۰۵ دارای دکمه چاپ نبودند ولی گزارشات server این مشکل را نداشتند. البته لازم به ذکر است این مشکل در نسخه ۲۰۰۸ حل شده است.
۶-گزارشات client نیازی به publish روی report server ندارند در حالیکه گزارشات server برای اجرا شدن حتما باید publish شوند.
نکته : من این نوشته را بر اساس نسخه ۲۰۰۵ نوشتم و باید بیان کنم که نسخه ۲۰۰۸ بهبودهای خوبی داشته است. البته اصول تغییری نکرده است. در نوشته های آینده سعی میکنم مثالهایی را بر اساس نسخه ۲۰۰۸ بنویسم.
|
|
ساعت ٢:٠٠ ب.ظ روز ۱۳۸٧/۱٢/٢٧ |
|
|
SQL Server 2008 چندین آبجکت ارائه داده که اکتشاف وابستگیهای آبجکتها را به صورت قابل اطمینانی فراهم میکند، و جایگزین view قدیمی وغیرقابل اطمینان sys.sql_dependencies وهمچنین stored procedure قدیمی sp_depends شده است. آبجکتهای جدید اطلاعاتی درباره وابستگیها فراهم کرده که در یک کد ثابت ظاهر میشود، آنها شامل هر دوی آبجکتهای schema-bound و non-schema-bound و نیز cross-database و حتی وابستگیهای cross-server میشوند. آبجکتهای جدید وابستگیهایی را که در کد SQL یا کد CLR به وجود بیایند را پوشش نمیدهند. برای اینکه ببینید چگونه اطلاعات مربوط به وابستگیها را جستجو کنید، ابتدا کد زیر را اجرا کنید تا چند آبجکت در پایگاه داده tempdb برای تست ساخته شود :
USE tempdb; IF OBJECT_ID('dbo.Proc1', 'P') IS NOT NULL DROP PROC dbo.Proc1; IF OBJECT_ID('dbo.V1', 'V') IS NOT NULL DROP VIEW dbo.V1; IF OBJECT_ID('dbo.V2', 'V') IS NOT NULL DROP VIEW dbo.V2; IF OBJECT_ID('dbo.T1', 'U') IS NOT NULL DROP TABLE dbo.T1; IF OBJECT_ID('dbo.T2', 'U') IS NOT NULL DROP TABLE dbo.T2; GO CREATE PROC dbo.Proc1 AS SELECT * FROM dbo.T1; EXEC('SELECT * FROM dbo.T2'); GO CREATE TABLE dbo.T1(col1 INT); CREATE TABLE dbo.T2(col2 INT); GO CREATE VIEW dbo.V1 AS SELECT col1 FROM dbo.T1; GO CREATE VIEW dbo.V2 AS SELECT col1 FROM dbo.T1; GO
SQL Server 2008 سه آبجکت جدید را معرفی کرده که اطلاعاتی درباره وابستگی آبجکت به ما میدهد : catalog view با نام sys.sql_expression_dependencies ، و توابع مدیریت پویا (DMF) با نامهای sys.dm_sql_referenced_entities و sys.dm_sql_referencing_entities . View اول وابستگیهای آبجکت را توسط نام فراهم میکند. این جایگزین view قدیمیتر با نام sys.sql_dependencies شده است. Query زیر در مقابل sys.sql_expression_dependencies تمام وابستگیها در پایگاه داده کنونی را نشان میدهد:
SELECT OBJECT_SCHEMA_NAME(referencing_id) AS srcschema, OBJECT_NAME(referencing_id) AS srcname, referencing_minor_id AS srcminorid, referenced_schema_name AS tgtschema, referenced_entity_name AS tgtname, referenced_minor_id AS tgtminorid FROM sys.sql_expression_dependencies;
Query بالا خروجی زیر را تولید میکند :
srcschema srcname srcminorid tgtschema tgtname tgtminorid --------- ------- ---------- --------- ------- ---------- dbo Proc1 0 dbo T1 0 dbo V1 0 dbo T1 0 dbo V2 0 dbo T1 0
توجه کنید که query تمام وابستگیها در کد ثابت را شناسایی میکند نه وابستگیها در کد پویا را (ارتباط از dbo.T2 به dbo.Proc1). DMF با نام sys.dm_sql_referenced_entities تمام entity هایی که entity ورودی به آن مراجعه میکند را مهیا میکند – به عبارت دیگر، تمام entity هایی که entity ورودی به آن وابسته است. به عنوان مثال، کد زیر تمام entity هایی که dbo.Proc1 به آن وابسته است را برمیگرداند :
SELECT referenced_schema_name AS objschema, referenced_entity_name AS objname, referenced_minor_name AS minorname, referenced_class_desc AS class FROM sys.dm_sql_referenced_entities('dbo.Proc1', 'OBJECT');
این کد خروجی زیر را برمیگرداند :
objschema objname minorname class --------- --------- --------- ---------------- dbo T1 NULL OBJECT_OR_COLUMN dbo T1 col1 OBJECT_OR_COLUMN
خروجی نشان میدهد که dbo.Proc1 به جدول dbo.T1 و ستون dbo.T1.col1 وابسته است. مجددا بیان میکنم که وابستگیهایی که در کد پویا نشان داده میشود، شناسایی نمیشود. DMF با نام sys.dm_sql_referencing_entities تمام entity هایی که به entity ورودی ارجاع داده اند را فراهم میکند – به عبارت دیگر، تمام entity هایی که به entity ورودی وابسته هستند. برای مثال،کد زیر تمام entity هایی را که dbo.T1 وابسته هستند را بر میگرداند:
SELECT referencing_schema_name AS objschema, referencing_entity_name AS objname, referencing_class_desc AS class FROM sys.dm_sql_referencing_entities('dbo.T1', 'OBJECT');
این کد خروجی زیر را بازمیگرداند :
objschema objname class --------- --------- ---------------- dbo Proc1 OBJECT_OR_COLUMN dbo V1 OBJECT_OR_COLUMN dbo V2 OBJECT_OR_COLUMN
خروجی نشان میدهد که dbo.Proc1 و dbo.V1 و dbo.V2 به dbo.T1 وابسته اند.
|
|
ساعت ٥:٤٤ ب.ظ روز ۱۳۸٧/۱٢/۱٢ |
|
|
بهبود در توابع Table-Valued
در حال حاضر CLR TVF ها یک عبارت ORDER جدید را به عنوان بخشی از عبارت CREATE FUNCTION DDL پشتیبانی میکنند. شما میتوانید از این عبارت برای مشخص کردن نام ستونها در جدول خروجی زمانیکه میدانید که سطرها همیشه با آن ترتیب برگردانده خواهند شد، استفاده نمایید. این میتواند بهینه ساز را زمانیکه روی تابع جدول query میزنید و به ستونهای آن برای مرتب سازی (Ordering) استناد میکنید کمک نماید.( مانند زمانیکه برای ORDER BY و GROUP BY و DISTINCT استفاده میشود.) به عنوان مثال، کد C# زیر یک تابع با نام fn_split که لیستی مجزا از مقادیر و یک Seprator را میپذیرد و سپس رشته ورودی را به عناصر مجزا میشکند. تابع یک جدول با دو ستون (pos و element) با یک ردیف برای هر عنصر به عنوان نتیجه باز میگرداند. Pos موقعیت عنصر در لیست را نشان میدهد و ستون element خود عنصر را نمایش میدهد :
using System; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.Collections; using System.Collections.Generic; public partial class TVF { // Struct used in string split functions struct row_item { public string item; public int pos; } // Split array of strings and return a table // FillRowMethodName = "ArrSplitFillRow" [SqlFunction(FillRowMethodName = "ArrSplitFillRow", DataAccess = DataAccessKind.None, TableDefinition = "pos INT, element NVARCHAR(MAX)")] public static IEnumerable fn_split(SqlString inpStr, SqlString charSeparator) { string locStr; string[] splitStr; char[] locSeparator = new char[1]; locSeparator[0] = (char)charSeparator.Value[0]; if (inpStr.IsNull) locStr = ""; else locStr = inpStr.Value; splitStr = locStr.Split(locSeparator, StringSplitOptions.RemoveEmptyEntries); //locStr.Split(charSeparator.ToString()[0]); List SplitString = new List(); int i = 1; foreach (string s in splitStr) { row_item r = new row_item(); r.item = s; r.pos = i; SplitString.Add(r); ++i; } return SplitString; } public static void ArrSplitFillRow( Object obj, out int pos, out string item) { pos = ((row_item)obj).pos; item = ((row_item)obj).item; } }
تابع اغلب سطرها را مرتب شده بر اساس pos برمیگرداند. اگرچه شما نمیتوانید به این ترتیب تا زمانیکه در query خارجی و در ORDER BY ترتیب را مشخص نکرده باشید، اعتماد کنید. فرض کنید که مسیر فایل dll برابر باشد با : C:\TVF\TVF\bin\Debug\TVF.dll . کد زیر اسمبلی مربوطه را در tempdb برای تست میسازد:
USE tempdb; CREATE ASSEMBLY TVF FROM 'C:\TVF\TVF\bin\Debug\TVF.dll';
کد زیر دو تابع بر اساس تابع fn_split CLR ثبت میکند : تابع fn_split_no_order عبارت ORDER ندارد و fn_split_order_by_pos عبارت ORDER را برای مرتب سازی بر اساس pos مشخص کرده است :
CREATE FUNCTION dbo.fn_split_no_order (@string AS NVARCHAR(MAX), @separator AS NCHAR(1)) RETURNS TABLE(pos INT, element NVARCHAR(4000)) EXTERNAL NAME TVF.TVF.fn_split; GO CREATE FUNCTION dbo.fn_split_order_by_pos (@string AS NVARCHAR(MAX), @separator AS NCHAR(1)) RETURNS TABLE(pos INT, element NVARCHAR(4000)) ORDER (pos) EXTERNAL NAME TVF.TVF.fn_split; GO
حال به query های زیر توجه نمایید:
SELECT * FROM dbo.fn_split_no_order( N'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z', N',') AS T ORDER BY pos;
SELECT * FROM dbo.fn_split_order_by_pos( N'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z', N',') AS T ORDER BY pos;
اولی تابع جدولی را که بدون عبارت ORDER ثبت شده را جستجو میکند و دومی این کار را روی تابع جدولی که با ORDER ثبت شده (pos) را جستجو میکند.هر دو داده ها را مرتب شده بر اساس pos درخواست میکنند.اگر شما هر دو را برای آزمایش اجرا کنید خواهید دید که اولی شامل اطلاعات sort شده است اما دومی اینطور نیست. همچنین هزینه برای ارزیابی کردن اولی حدود 10 برابر بیشتر از دومی است.
|
|
ساعت ۳:٤۱ ب.ظ روز ۱۳۸٧/۱٢/٥ |
|
|
پشتیبانی CLR (Common Language Runtime) در SQL SERVER 2008 در روشهای مختلف بهبود یافته است. بهبودهای UDT ها که در قبل توضیح داده شد. این بخش بهبودهای UDA ها (user defined aggregates) و TVF ها (table valued function) را بیان میکند.
بهبود در UDA
پشتیبانی از UDT های بزرگ در مطالب قبلی بیان شد. به همین نحو SQL Server 2008 از UDA های بزرگ نیز پشتیبانی میکند. اندازه ماکزیمم در این نسخه از 8000 بایت تجاوز کرده و میتواند تا 2 گیگابایت افزایش یابد. برای اجازه دادن به یک UDA برای تجاوز از 8000 بایت، ویژگی MaxByteSize را برابر 1- قرار دهید. در غیر این صورت شما باید یک مقدار کهکمتر یا مساوی 8000 است را معین کنید، که در این مورد دیگر سایز UDA شما نباید از مقدار مشخص شده تجاوز کند.
UDA ها در راه دیگری نیز به همین خوبی بهبود یافته اند.آنها هم اکنون از چندین ورودی پشتیبانی میکنند.یک مثال از UDA ای که میتواند از هر دو بهبود بهره ببرد موارد مربوط به الحاق رشته هاست. UDA میتواند دو پارامتر ورودی قبول کند: ستون رشته را برای الحاق و کاراکتری را که به عنوان separator استفاده میشود نگهداری میکند. UDA میتواند خروجی را با حجم یش از 8000 را برگرداند. |
|
ساعت ۱٢:٤٢ ب.ظ روز ۱۳۸٧/۱۱/٢٦ |
|
  |
یکی از خصوصیات جدیدی که به SQL Server 2008 افزوده شده است این است که به صورت پیش فرض اجازه تغییر در ساختار جداول از طریق Desgin View داده نمیشود. این خصیصه به خاطر این اضافه شده که از تغییرات تصادفی روی DB Server ها جلوگیری کند. خصیصه جدید ممکن است مقداری برای توسعه دهندگان دردسر آفرین باشد زیرا اگر بخواهند تغییر خود را اعمال کنند با خطای زیر مواجه میشوند :
برای رفع این مشکل توسعه دهندگان باید این خصوصیت را از مسیر ارائه شده در زیر غیر فعال کنند :
Tools > Options > Designers > Table and Database Designers > Prevent saving changes that require table re-creation
حال شما میتوانید جدول مورد نظر خود را ویرایش کنید. |
|
ساعت ۳:۳٥ ب.ظ روز ۱۳۸٧/۱۱/۸ |
|
|
SQL Server 2008 اندیسهای فیلتر شده و آمار را معرفی کرد. شما اکنون میتوانید یک اندیس گروهبندی نشده بر اساس یک گزاره بسازید، و فقط زیرمجموعه ای از سطرها برای اینکه گزاره در اندیس B-Tree ذخیره شده صحیح بماند، موجودند. به همین نحو، شما میتواند به صورت دستی بر اساس یک گزاره آمار بسازید. بهینه ساز برای زمانی که چنین اندیسهای فیلتر شده و آماری به صورت منطقی استفاده میشوند مفید هستند. اندیسهای فیلترشده با طراحی خوب میتوانند کارایی و کیفیت طرح را بالا ببرند زیرا آنها از اندیسهای فیلتر نشده کوچکترند. همچنین، آمار فیلتر شده – خواه به صورت خودکار برای یک اندیس فیلتر شده ساخته شده باشد خواه به صورت دستی – از آمار فیلترنشده دقیقترند زیرا آنها نیاز دارندتنها زیرمچموعه ای از سطرهای جدول را کاور کنند. شما همچنین میتوانید هزینه نگهداری اندیس را به دلیل موجود بودن اطلاعات کمتر جهت نگهداری در اندیسهای فیلتر شده کاهش دهید. این شامل تغییرات در اندیس، بازسازیهای اندیس، و هزینه به روزرسانی آمار میشود. اندیسهای فیلتر شده همچنین به صورت واضح هزینه های storage را کم میکند. اجازه بدهید نگاهی به چند مثال درباره اندیسهای فیلتر شده بیندازیم. کد زیر یک اندیس روی CurrancyRateID در جدول Sales.SalesOrderHeader میسازد که فیلتر آن نمیگذارد NULL ها وارد شوند :
USE AdventureWorks; GO CREATE NONCLUSTERED INDEX idx_currate_notnull ON Sales.SalesOrderHeader(CurrencyRateID) WHERE CurrencyRateID IS NOT NULL;
نظر به فیلترهای query ، کنار گزاره IS NULL که به صریحا به دنبال مقادیر NULL میگردد، تمام گزاره های دیگر NULL ها را رد میکنند، بنابراین بهینه ساز میفهمد که پتانسیل اینکه از اندیس استفاده شود وجود دارد. برای مثال، طرح query زیر نشان میدهد که اندیس استفاده شده است :
SELECT * FROM Sales.SalesOrderHeader WHERE CurrencyRateID = 4;
ستون CurrencyRateID درصد زیادی از NULL ها را در خود دارد، بنابراین این اندیس اساسا حافظه کمتری برای ذخیره کردن نسبت به یک اندیس فیلتر نشده در یک ستون مشابه مصرف میکند. شما همچنین میتوانید از این چنین اندیسهایی در ستونهای sparse استفاده کنید. کد زیر یک اندیس فیلتر نشده روی ستون Freight میسازد، سطرهایی که مقدار Freght در آنها بزرگتر یا مساوی 5000.00 باشد فیلتر میشوند :
CREATE NONCLUSTERED INDEX idx_freight_5000_or_more ON Sales.SalesOrderHeader(Freight) WHERE Freight >= 5000.00;
بهینه ساز ملاحظه میکند استفاده یک اندیس وقتی فاصله فرعی یک اندیس ورودی فیلتر شده مورد نیاز است آن را فیلتر میکند :
SELECT * FROM Sales.SalesOrderHeader WHERE Freight BETWEEN 5500.00 AND 6000.00;
اندیسهای فیلتر شده همچنین میتوانند به عنوان unique تعریف شوند و یک عبارت INCLUDE داشته باشند.
|
|
ساعت ٥:٤۸ ب.ظ روز ۱۳۸٧/۱٠/٢٤ |
|
|
برای انجام کارها در SQL SERVER به صورت خودکار باید JOB تعریف کرد. این کار میتواند به صورت دستی از داخل برنامه انجام شود یا اینکه برای آن Script نوشت و آن را اجرا کرد. یکی سوالات متداول این است که چگونه میتوانیم به صورت خودکار از SQL SERVER پشتیبانگیری کنیم، این کار با JOB ها قابل انجام است. در زیر چند Job کاربردی برای نمونه آورده شده است:
Back up به صورت کامل : کد مثال برای تمام Job ها یک دایرکتوری به ازای هر پایگاه داده خواهد ساخت و از آن پشتیبانگیری میکند :
DECLARE @basePath varchar(300); SET @basePath = N'M:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\';
DECLARE @db sysname; DECLARE user_db_cursor CURSOR FOR SELECT name FROM sys.databases WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb') OPEN user_db_cursor FETCH NEXT FROM user_db_cursor INTO @db
WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @backupPath varchar(1000); SET @backupPath = @basePath + @db + '\';
DECLARE @backupName varchar(1000); DECLARE @time datetime2; SET @time = SYSDATETIME(); SET @backupName = @db + '_backup_' + REPLACE(REPLACE(REPLACE(CONVERT(varchar, @time, 20),'-','_'),':',''),' ','_') + '_' + CAST(DATEPART(NANOSECOND, @time)/100 as varchar)
--Create sub-directory EXECUTE master.dbo.xp_create_subdir @backupPath DECLARE @backupFileName varchar(1000); SET @backupFileName = @backupPath + @backupName + '.bak'; --Backup database BACKUP DATABASE @db TO DISK=@backupFileName WITH RETAINDAYS=14, NOFORMAT, NOINIT, NAME=@backupName , SKIP, REWIND, NOUNLOAD, STATS=10
CLOSE user_db_cursor DEALLOCATE user_db_cursor
پشتیبان Differential :
DECLARE @basePath varchar(300); SET @basePath = N'M:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\';
DECLARE @db sysname; DECLARE user_db_cursor CURSOR FOR SELECT name FROM sys.databases WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb') OPEN user_db_cursor FETCH NEXT FROM user_db_cursor INTO @db
WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @backupPath varchar(1000); SET @backupPath = @basePath + @db + '\';
DECLARE @backupName varchar(1000); DECLARE @time datetime2; SET @time = SYSDATETIME(); SET @backupName = @db + '_backup_' + REPLACE(REPLACE(REPLACE(CONVERT(varchar, @time, 20),'-','_'),':',''),' ','_') + '_' + CAST(DATEPART(NANOSECOND, @time)/100 as varchar)
--Create sub-directory EXECUTE master.dbo.xp_create_subdir @backupPath DECLARE @backupFileName varchar(1000); SET @backupFileName = @backupPath + @backupName + '.bak'; --Backup database BACKUP DATABASE @db TO DISK=@backupFileName WITH DIFFERENTIAL, RETAINDAYS=14, NOFORMAT, NOINIT, NAME=@backupName , SKIP, REWIND, NOUNLOAD, STATS=10 CLOSE user_db_cursor DEALLOCATE user_db_cursor
پشتیبان Transaction Log :
DECLARE @basePath varchar(300); SET @basePath = N'M:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\';
DECLARE @db sysname; DECLARE user_db_cursor CURSOR FOR SELECT name FROM sys.databases WHERE name NOT IN ('master', 'model', 'msdb', 'tempdb') OPEN user_db_cursor FETCH NEXT FROM user_db_cursor INTO @db
WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @backupPath varchar(1000); SET @backupPath = @basePath + @db + '\';
DECLARE @backupName varchar(1000); DECLARE @time datetime2; SET @time = SYSDATETIME(); SET @backupName = @db + '_backup_' + REPLACE(REPLACE(REPLACE(CONVERT(varchar, @time, 20),'-','_'),':',''),' ','_') + '_' + CAST(DATEPART(NANOSECOND, @time)/100 as varchar)
--Create sub-directory EXECUTE master.dbo.xp_create_subdir @backupPath DECLARE @backupFileName varchar(1000); SET @backupFileName = @backupPath + @backupName + '.trn'; --Backup database BACKUP LOG @db TO DISK=@backupFileName WITH RETAINDAYS=14, NOFORMAT, NOINIT, NAME=@backupName , SKIP, REWIND, NOUNLOAD, STATS=10 CLOSE user_db_cursor DEALLOCATE user_db_cursor
اجرای Job Agent Task در SQL SERVER :
EXEC msdb.dbo.sp_start_job '';
نکته : این عملیات به کمک SQL Server Agent انجام میشود. اطمینان حاصل کنیدکه سرویس مربوط به آن run است. |
|
ساعت ٩:٢٧ ب.ظ روز ۱۳۸٧/۱٠/۱٦ |
|
|
ستونهای پراکنده، ستونهایی هستند که برای ذخیره سازی NULL ها بهینه شده اند. برای تعریف یک ستون به عنوان Sparse ، مشخصه های آن را به عنوان بخشی از تعریف ستون مشخص کنید. Sparse ها هیچ فضایی را برای NULL مصرف نمیکنند، مطابق با انواع با طول ثابت; اگرچه وقتی یک ستون به عنوان sparse مشخص میشود، ذخیره مقادیر غیر Null از همیشه پر هزینه تر میشود. بنابراین شما فقط باید زمانی یک ستون را از نوع Sparse تعریف کنید که درصد زیادی از اطلاعات آن Null باشد. کتابهای online مربوط به SQL Server پیشنهاداتی در این زمینه دارد که چه مقدار از داده ها از هر نوع باید null باشد تا استفاده از sparse برای آن ستون مفید باشد. Query زدن و پر کردن ستونهای sparse مانند ستونهای معمولیست با یک تفاوت که در جلوتر بیان خواهد شد. به عنوان مثال کد زیر یک جدول با نام T1 در tempdb (برای تست) میسازد، سه تا از ستونها با مشخصه sparse علامت گذاری میشوند، یک زوج از سطرها در آن insert میشوند و روی جدول query زده میشود :
USE tempdb; IF OBJECT_ID('dbo.T1', 'U') IS NOT NULL DROP TABLE dbo.T1; CREATE TABLE dbo.T1 ( keycol INT NOT NULL PRIMARY KEY, col1 VARCHAR(20) NOT NULL, col2 INT SPARSE NULL, col3 CHAR(10) SPARSE NULL, col4 NUMERIC(12, 2) SPARSE NULL ); INSERT INTO dbo.T1(keycol, col1, col2) VALUES(1, 'a', 10); INSERT INTO dbo.T1(keycol, col1, col4) VALUES(2, 'b', 20.00); SELECT keycol, col1, col2, col3, col4 FROM dbo.T1;
محدودیتهای زیادی برای استفاده از ستونهای Sparse موجود است که بحث در رابطه با آنها در اینجا نمیگنجد. SQL Server 2008 به شما این اجازه را میدهد که مجموعه ای از ستونها که تمامی ستونهای sparse یک جدول را در یک ستون XML واحد ترکیب میکند تعریف کنید. شما ممکن است که بخواهید به این گزینه، وقتیکه تعداد زیادی از ستونهای sparse را در جدولتان دارید (بیشتر از ۱۰۲۴) فکر کنید و کار کردن روی آنها به صورت شخصی ممکن است طات فرسا باشد. برای تعریف یک مجموعه از ستونها(column set)، عبارت زیر را به عنوان بخشی از عبارت CREATE TABLE مشخص کنید:
XML column_set FOR ALL_SPARSE_COLUMNS
به عنوان مثال، کد زیر جدول T1 را مجددا با یک مجموعه ستون با نام cs میسازد:
IF OBJECT_ID('dbo.T1', 'U') IS NOT NULL DROP TABLE dbo.T1; CREATE TABLE dbo.T1 ( keycol INT NOT NULL PRIMARY KEY, col1 VARCHAR(20) NOT NULL, col2 INT SPARSE NULL, col3 CHAR(10) SPARSE NULL, col4 NUMERIC(12, 2) SPARSE NULL, cs XML column_set FOR ALL_SPARSE_COLUMNS );
شما همچنین میتوانیداز کد مشابهی که قبلتر استفاده شده برای insert سطرها در جدول و query زدن روی آن استفاده کنید :
INSERT INTO dbo.T1(keycol, col1, col2) VALUES(1, 'a', 10); INSERT INTO dbo.T1(keycol, col1, col4) VALUES(2, 'b', 20.00);
SELECT keycol, col1, col2, col3, col4 FROM dbo.T1;
اما شما میتوانید روی column set با استفاده از اعمال XML به جای اعمال رابطه ای کار کنید. به عنوان مثال، کد زیر یک سطر با استفاده از column set در جدول درج میکند :
INSERT dbo.T1(keycol, col1, cs) VALUES(3, 'c', 'CCCCCCCCCC30.00');
NULL برای ستونی که در مقدار XML نیامده است در نظر گرفته میشود که در این مثال col2 است. دقت کنید که اگر شما یک column set در جدول تعریف کنید، SELECT * مقادیر مشابه SELECT که در آن تمام ستونها به صورت واضح نام برده شده اند را بر نمیگرداند. SELECT * تمام ستونهای sparse را به عنوان یک مقدار XML در column set برمیگرداند. برای نمایش این، کد زیر را اجرا کنید :
SELECT * FROM dbo.T1;
این کد خروجی زیر را برمیگرداند:
keycol col1 cs ----------- ---------- ------------------------------------------ 1 a 10 2 b 20.00 3 c CCCCCCCCCC30.00
اگر شما به صورت صریح ستونها را در عبارت SELECT لیست کنید، تمام ستونهای نتیجه به عنوان مقادیر رابطه ای باز گردانده میشوند. خصیصه جدید دیگری که میتوانند در مقارنه با ستونهای sparse استفاده شوند اندیسهای فیلتر شده (filtered index) هستند. این خصیصه در بخش بعدی توضیح داده خواهد شد. |
|
ساعت ۳:٤٧ ب.ظ روز ۱۳۸٧/۱٠/۱۱ |
|
|
چند روزی بود که درگیر مشکلی با SSRS برای چاپ گزارش در روی Client بودیم. جدیداگزارشات نرم افزار خودمان را روی RS 2008پیاده سازی کرده بودیم.خطای موجود به شکل زیر بود :
SSRS: Unable to Load Client Print Control error
دلیل این خطا یکی از موارد زیر است :
۱) اگر جدیدا ویندوز شما Update شده باید یک patch امنیتی با عنوان KB956391 نصب شده باشد. نصب این patch باعث مشکل در client print در Reporting Service میشود و دیگر اجازه دانلود به ActiveX مربوط داده نمیشود. برای حل این مشکل میتوانید patch باعنوان KB954606 را نصب کنید. سپس MS Report Viewer Distribute Package 2008 SP1 را نصب کنید. احتمالا مشکل شما حل خواهد شد.
۲) مورد دیگر این است که شاید گزارشات و RS را به ۲۰۰۸ ارتقا داده باشید ولی کنترل ReportViewer شما یک کنترل مربوط به VS 2005 باشد. اگر کنترل را با کنترل موجود در VS 2008 جایگزین کنید این مشکل حل خواهد شد. |
تشکر از شما : محمد ولید احمدزی
تشکر از Black Shadom ( Hackers ) thanks !!! Me walid Ahmadzai
| +| نوشته شده توسط
Afghan Hacker در سه شنبه هشتم اردیبهشت 1388
|
|
| | | |
|
|
|