• اگر سمپادی هستی همین الان عضو شو :

    ثبت نام عضویت

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

  • شروع کننده موضوع شروع کننده موضوع hasangolab
  • تاریخ شروع تاریخ شروع
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از ندا.م :
قرار نیست اینجا مسئله ی 10 هیلبرت رو از روش نوینی حل کنیم! ;D
اگه هم دقت کرده باشی، اسم تاپیک هست "مقدمات برنامه نویسی با ++C" !
تو اینترنت هم بگردی library ، mouse.h چندین مدل هست. حالا لینکاشونو میذارم، ببین کدوم به دردت میخوره. خودت هم میتونی بنویسیشون بسته به کاری که داری، ولی خب کار آسونی نیست! ;D
اولاً که بنده به هیچ وجه مسئله 10 هیلبرت وو تو سمینار حل نکردم!(خوب 700 صفحه اس!بعدش هم همینی که ما می گفتیم هم هیشکی هیچی نمی فهمید چه برسه...)
بدش هم روش نوینی برای حل این مسئله فعلاً وجود ندارد(ماتیاسویچ فعلا فقط حل کرده اونم از راه نظریه اعداد ،n میلیون تا هم لِم داره!، استاد دانشگاه MIT،رجوع کنید به:
www.logic.pdmi.ras.ru/~yumat)
ثانیاً؛ خوب انتقاد پذیر باشید؛کلاً کارگاه فرزانگان (دربخش رایانه) همه اش SNAKE بود(اونم بدون for ;D ;D)یه دونه امضا بود که تابلو بود خفن کپی شده(فکر کنم عملیات فارسی سازیش رو نیروهای غیور فرزانگانی انجام داده بودن :D) یک دونم فکر کنم پرتابه بود که ای بابا!

حالا پروژه ی ناتمامیت ما، واقعاً خوف تر نبود؟ ;D بعدش از این به بعد پروژه رو خوب گوش بده!حل نوین 10 هیلبرت نبود! مسائل هیلبرت بود که هیچ ربطی به 10 نداش!
برای اطلاعتون مسئله 10 هیلبرت اینه:آیا معادله ی دیوفانتی (سیاله) وجود داره که تصمیم ناپذیر باشه؟ ، جوابش هم نه هست!(رجوع کنید به : hilbert tenth problem,MIT PRESS,Written by Yuri Matiyasevich)

زیاد شد ها ;D
 
پاسخ : مقدمات برنامه نویسی با ++C

جای مقایسه کارگاه و سمینار اینجا نیست. لطفا.
 
پاسخ : مقدمات برنامه نویسی با ++C

ببخشید 1 سوال:
این تاپیک قرار نیست ادامه داشته باشه؟!
یعنی آموزش ادامه داره یا تعطیل شد؟؟!!!!!
 
پاسخ : مقدمات برنامه نویسی با ++C

َما لطف کن ادامه بده. خودت رو آماده کن تا ادامه بدی ;)
پست های بی ربط هم بعد از یه مدت پاک می شن.
 
پاسخ : مقدمات برنامه نویسی با ++C

خب، حالا می رسیم به حلقه های تکرار و ساختارهای تصمیم:
در حالت عادی، دستورات برنامه، از اولین دستور به آخین دستور اجرا می شن. اما اگه بخوایم بعضی از دستورات چندین بار اجرا بشن و بعضی دیگر در شرایط خاصی اجرا شود و بعضی دیگر اجرا نشود، از ساختار های تکرا و تصمیم استفاده می کنیم. ساختارهای تکرار برای تکرار اجرای دستورات و ساختارهای تصمیم برای بررسی شرایطی در برنامه و تصمیم گیری بر اساس آن شرایط، مورد استفاده قرار می گیرد.
اولین و ساده ترین ساختار تکرار، ساختار while هست.
از این ساختار به این صورت استفاده می شود:
While(شرط)
دستور;​

یا

While()
{
دستور 1
دستور 2
.
.
.
دستور n
}​

داخل پرانتز جلوی while شرط تکرار رو می نویسیم. یعنی تا موقعی که این شرط برقرار بود، دستور(های) زیر while رو اجرا کن. این شرط رو مثل شرط هایی که توی if گفته بودم می نویسیم. مثلا a<10 یا a==10 و ...
حالا یه مثال:
برنامه ای بنویسید که جمله ای را از ورودی خوانده و تعداد کاراکترهای آن را شمرده و چاپ کند. انتهای جمله به Enter ختم میشه. در این جمله count تعداد کاراکترهای ورودی است.
#include<iostream.h>
#include<conio.h>
Int main()
{
int count = 0;
clrscr();
cout<<"type a statement and ENTER to end:";
while(cin.get() != '\n')
count++;
cout<<"lenght of statement is:" << count;
getch();
return 0;
}​



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

for(گام حرکت;شرط حلقه;مقدار اولیه اندیس حلقه)
{
دستور 1;
دستور 2;
.
.
.
n دستور;
}

یا

for(;;)
{

دستور 1;
دستور 2;
.
.
.
n دستور;
}​

حالت اول که معلومه چه جوریه. ولی تو حالت دوم می بینین که هیچ گام حرکت و مقدار اولیه و شرطی در کار نیست! به این حلقه ها، حلقه های بی نهایت می گن که اگه واردشون بشین، دیگه نمی توننین خارج بشین! مگر با Ctrl+Break ! سعی کنید توی برنامه هاتون هیچ وقت ازش استفده نکنین، مگر در مواقعی که واقعا مجبور باشید! کلا چیز خوبی نیست! :دی
مثال:
حالا برنامه ای بنویسید که 5 عدد صحیح از ورودی خوانده و میانگین آن ها را محاسبه و چاپ کنه:

#include<iostream.h>
#include<conio.h>
Int main()
{
int sum = 0, num;
float ave;
const int n = 5;
clrscr();
for(int i=0; i<n; i++)
{
cout<< "Enter number:" << i+1 << ":";
cin>>num;
sum += num;
}
ave = (float) sum/n;
cout<< "The average is:" << ave;
getch();
return 0;
}​

در اینجا n یک ثابت (constant) است که یعنی مقدار آ« تغییر نمی تواند بکند. اینجا لزومی به استفاده ازش نیست، فقط محض اطلاعه!
دقت داشته باشید که تو این برنامه، واسه به دست آوردن خارج قسمت اعشاری از type casting استفاده شده. تو اینجا 5 عدد ما عددهایی صحیح هستند و پس از تقسیم شدن بر 5، حاصل آن نیز صحیح خواهد شد. یعنی تقسیم به صورت صحیح انجام می شود. در حالی که انتظار داریم تقسیم به صورت اعشاری انجام بشه و به صورت اعشاری در خروجی چاپ شود! واسه همین باید تبدیل نوع انجام بشه. پس چون می خوایم که حاصل تقسیم به صورت اعشاری باشه، قبل از تقسیم، نوع اعشاری، یعنی float رو داخل پرانتز می ذاریم.این روش تبدیل نوع رو type casting میگن.
 
پاسخ : مقدمات برنامه نویسی با ++C

و این هم ساختار تکرا do…while :
این ساختار مانند while هست، با این تفاوت که تو while شرط حلقه همون اول حلقه چک میشه و در صورتی که درست نبود، اصلا واردش نمیشه. ولی تو do…while شرط آخر حلقه چک میشه و اگر درست نبود، در هر حال یه بار انجام شده.
به این صورت استفاده ش می کنن:
do{

دستور 1;
دستور 2;
.
.
.
n دستور;
}while(شرط);​

انتقال کنترل غیر شرطی:
دستور if شرطی را بررسی کرده، بر اساس نتیجه ی شرط، دستور عمل هایی رو انجام میده. در C دستور عمل هایی وجود دارن که بدون تست شرطی می تونن کنترل اجرای برنامه رو از نقطه ای به نقطه ای دیگه منتقل کنند. این دستورات رو انتقال کنترل غیر شرطی می گویند.

دستور break :
این دستور موجب خروج از حلقه های تکرار میشه. نحوه ی کاربردش هم این طوریه:
Break;
مثال:
برنامه ای بنویسید که تعدادی عدد را از ورودی بخواند، سپس تعداد اعداد زوج و فرد را مشخص و به خروجی ببرد. آخرین عدد ورودی صفر است:
#include<iostream.h>
#include<conio.h>
Int main()
{
int num, count = 0, n = 0;
clrscr();
while(1)
{
cout<< "Enter a number:";
cin>> num;
if(num == 0)
break;
n++;
if(num%2 == 0)
count++;
}
cout<< "\n evens = " << count << " odds = " << n - count;
getch();
return 0;
}​
توی این برنامه از یک حلقه ی بی نهایت استفاده شده که در صورتی که عدد ورودی صفر باشد، خاتمه می یابد و از حلقه می یاد بیرون.

دستور continue :
این دستور هر جا تو حلقه بیاد، کنترل برنامه بر میگرده به اول حلقه. پس از انتقال کنترل به ابتدای حلقه، شرط حلقه مورد بررسی قرار می گیره، در صورتی که درست بود وارد میشه و اگه نبود خارج میشه. خیلی چیز جالبیه! :دی
به این صورت می نویسنش:
Continue;
حوصله ندارم واسش مثال بذارم، اگه مشکلی دارین بگین که بذارم!

دستور goto :
این دستور به ندرت استفاده میشه و سبب انتقال کنترل از نقطه ای به نقطه ی دیگه از برنامه میشه.
همیشه تاکید میشه که ازش استفاده نکنین، چون اصولی نیست و از این جور چیزا! منم تو کل این مدت فقط یه بار ازش استفاده کردم! در نتیجه نمی ذارمش اینجا که یه وقت یاد نگیرین و برین ازش استفاده کننین!
ولی اگه خیلی مشتاق باشین میذارمش!!


ادامش رو هم به زودی میذارم!! ;D
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از ندا.م :
یک محیط خوب برای شروع یاد گرفتن ++Turbo C، C هستش

وقتی که کد بالا رو اجرا کنید، یه لحظه ی خیلی کوتاه شاید بشه گفت 1 ثانیه، برنامه اجرا میشه ،خارج میشه و شما هیچی نمیبینید!
به همین منظور از دستور ()getch استفاده میکنیم که همان get character هستش، یعنی در واقع منتظر میشه تا کاربر یک کاراکتر وارد کند، مثلا دکمه ی enter رو فشار بده.
این دستور رو آخر از همه ی دستورات مینویسیم. البته این دستور کاربردهای دیگری هم داره که ایشالا بعدا میگم! ;D
البته اگه با C کار کرده باشید با C فرق داره آخر نام همه ی تابع های کتابخانه ای" h." وجود نداره، البته بعضی کتابخانه ها هم h داره مثل : gtk.h
حالا این کد به این صورت میشه:

وای خوب شد گفتی GTK! یه تاپیک براش باز می کنم به طور مفصل! ;D
 
پاسخ : مقدمات برنامه نویسی با ++C

برای شروع کار Turbo C رو میتونیم یه محیط خوب معرفی کنیم چون از دستورات زیادی مثل همین ()clrscr استفاده کرد یعنی استفادشون کاربرد داره اما اگه میخواین با کامپایلر های محیط های 30 سال پیش کار نکنین و محیطتون به روز شده باشه پیشنهاد میکنم از++Microsoft visual C که داخل Microsoft Visual stodio قرار داره استفاده کرد چون مزایاش خیلی زیاده از جمله تنوع پروژه ها و Text file ها ;)
 
پاسخ : مقدمات برنامه نویسی با ++C

آقای علی . ن ؛ برنامه نویسی شیء گرا به درد لای جرز دیوار هم نمی خوره؛

فکر می کنم ابتدا باید C رو یاد گرفت بغد رفت سراغ اونها، ضمن اینکه اونها هم چنگی به دل نمی زنند !
اگر در حوزه ی وب می پرسید، به نظر من همین PHP خودمون مگه چشه ؟ MySQL هم به این نازی !
 
پاسخ : مقدمات برنامه نویسی با ++C

جناب eAJ برنامه نویسی شی گرا که میفرمائید به درد نمیخوره کلی هم کاربرد داره!اگه بخواین دفعه بعد که بیام سایت کاملا یک لیست همین جا میزنم!
هرچند که از ابعادی میتونه حق با شما باشه و شی گرایی به درد بعضی جاها نخوره ولی همین شی گرایی شدن ++C خودش خیلی به پیشرفت و گسترش حوزه برنامه های c کمک کرد
 
Back
بالا