برنامه نویسی و دیگر هیچ

فضایی برایه یادگیری برنامه نویسی

برنامه نویسی و دیگر هیچ

فضایی برایه یادگیری برنامه نویسی

۲۱ مطلب با موضوع «درسنامه» ثبت شده است


براکت (جزء صحیح)(کف):

#include <iostream>
#include <conio.h>
using namespace std;
main()
{
  double num;
int b;

cout << "input  number:";
cin >> num;
b = num;
cout << "["<<num<<"]= ";
if ( num - b < 0)
    cout << b - 1;
else
cout << b;
getch();
}

جذر:

  • علیرضایی


برنامه ای بنویسید که در آن ابعاد 2 ماتریس دلخواه را گرفته ابتدا بررسی کند که حاصلضرب آنها ممکن است یا نه! 

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

  • علیرضایی


سلام، روزتون بخیر بچه ها

اینجا چندتا تمرین  از آرایه ها هست /برای روز 2شنبه همین هفته حل کنید. بیشترش آسونه، ببینم چه میکنید;)

دریافت
حجم: 42 کیلوبایت
توضیحات: تمرین آرایه/ مباحث ابتدایی


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



  • علیرضایی

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

توابعی مثل:( )sqrt() ,pow(2,3) ,rand

این توابع به صورت آماده در اختیار ما بود تا هر زمان که لازم داشتیم از آنها استفاده کنیم، اما ممکن است ما به یک تابعی احتیاج داشته باشیم که در مجموعه توابع آماده وجود نداشته باشد! پس لازم است که ما هم بتوانیم تابع هایی بر اساس نیاز خود تعریف و پیاده سازی کنیم!

 

اول از مثال های ساده شروع میکنیم:

تابعی بنویسید که 2 برابر یک عدد را حساب کند.

توجه: قدم اول برای نوشتن یک تابع این است که بفهمیم که تابع ما چه چیزی میگیرد و چه چیزی رو برمیگردونه:

 مثلا تابع توان((pow(2,3 )  دو تا عدد میگیره و حاصل اولی به توان دومی را به ما میدهد( در اینجا 2 به توان 3 یعنی 8) ! خب حالا تابع ساده ای که ما  داریم مینویسیم قراره چی بگیره؟

یک عدد میگیره و 2 برابر آنرا برمیگردونه!

به اون چیزی که تابع میگیره میگن ورودی و به اون چیزی که برمیگردونه هم میگن خروجی.

در واقع تابع یه سری عملیات رویه ورودی انجام میده تا به خروجی نهایی برسه!

 

نحوه تعریف تابع ها در زبان++c:

 

(انواع ورودی)    اسم تابع       نوع خروجی    

  دستورات       }

{                         

 

توجه!توجه!توجه: تعریف تابع حتما قبل از main است.

 

نوع خروجی: خروجی یک تابع ممکن است عدد صحی، عدد اعشاری، کارکتر، رشته، پوچ و ... باشد.

انواع ورودی: یک تابع ممکن است یک، دو یا تعداد زیادی ورودی داشته باشد و در مواقعی هم اصن وردی نداشته باشه! اما اگر تابع شما ورودی داره باید نوع اون مشخص باشه که عدد صحیحه ، کاراکتر ، عدد اعشاری و یا ...

 

اسم تابع : همانند اسم متغیرها میتوان اسامی مختلفی برای توابع در نظر گرفت!

 

دستورات: شامل عملیاتی است که بر روی ورودی(ها) مورد نظر انجام میشود!

 

تعریف تابعی که 2 برابر یک عدد را حساب میکند!

 

( double f2 (double a 

}

 ; a= a*2

 ; return a

 {

 

اسم تابع رو به دلخواه f2 انتخاب شده! نوع ورودی رو عدد اعشاری در نظر گرفتم و چون این تابع قراره 2 برابر یک عدد رو حساب کنه و ورودی ما اعداد اعشاری رو هم شامل میشه نوع خروجی رو هم اعشاری انتخاب کردم!

 

دستورات این تابع: ابتدا 2 برابر a را حساب کردم و در a ریختم. سپس مقدار a رو برگردوندیم!

 

return   حاصل عملیاتی که تابع بر روی ورودی ها انجام داده با استفاده از دستور return برگردانده میشود.

 

سوال؟ به کجا برگردونده میشه؟ ما از توابع همانند گذشته در برنامه هامون استفاده خواهیم کرد و برنامه هامون رو هم که مثل قبل داخل main مینویسیم! پس هر جایی از main که ا ز یک تابع استفاده میکنیم اون تابع خروجی خودش رو که حساب کرده به همون نقطه برمیگردونه.

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

 

درون main یک متغییر به اسم s داریم که اون رو برابر مقدار تابع f2 قرار دادیم به ازای عدد 7. در اینجا main که به این تابع مبرسه، از درون این تابع خبر نداره و فقط ازش میخواد مقدار ورودی که در اختیارش قرار داده(7) رو بگیره و یک خروجی به اون بده! که در اینجا خروجی تابع f2 وقتی به درون main برگردونده میشه دورن متغیر s ذخیره میشه! چون در برنامه s برابر با این تابع است.

 

مثال: تابعی بنویسید که 2 عدد بگیرد و مقدار کوچکتر رو برگردونه:

 

 

مثال: تابعی بنویسید که یک عدد گرفته اگر زوج است چاپ کند "zoj" و اگر فرد است "fard" .

 

 

 

 

نوع خروجی در تابع بالاvoid است؟! چرا؟ زمانیکه تابع ما قرار است نهایتا نوعی خروجی به صورت دستور cout و یا رسم شکلی داشته باشد میگوییم خروجی از نوع void یا پوچ است چرا که رسم شکل و یا cout ،خروجی لحظه ای است و یک لحظه قابل رویت است و بعد از آن در ادامه برنامه به آن دسترسی نداریم.

 

در تابعی که نوع خروجی void است از return به هیچ عنوان استفاده نمیشود.

 

 توابع به طور کلی به 4 قسمت تقسیم میشوند:

 

1- با ورودی-با خروجی

2-با ورودی-بدون خروجی

3--بدون ورودی-با خروجی

4-بدون ورودی-بدون خروجی

 

1-با وردی -با خروجی

 

مثال: تابعی بنویسید که یک عدد بگیرد قرینه آنرا حساب کند:

 

 

توجه کنید که این تابع مقدار قرینه را حساب میکند و بعد ما در جایی دیگر از برنامه(main) میتوانیم نتیجه کار تابع مورد نظر را چاپ کنیم.

 

 

2- با ورودی- بدون خروجی

 

مثال: تابعی بنویسید که یک عدد گرفته قرینه آنرا چاپ کند.

 

 

توجه کنید که وقتی قرار است خود تابع کار چاپ را انجام دهد خروجی آن از نوع void  میشود.

 

 

3- بدون ورودی- با خروجی

 

مثال: تابعی بنویسید که عدد 3.14 را برگرداند.

 

 

 

 

 

 

 

 

 

تان

  • علیرضایی

سلام

سوالات در یک فایل pdf میباشد و کد جواب ها در فایل c++ .

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


دریافت فایل سوالات
حجم: 70.9 کیلوبایت


دریافت فایل کد جواب ها
حجم: 108 کیلوبایت



  • علیرضایی

     

برنامه ای بنویسید که یک آرایه با m سطر و n  ستون ایجاد کند(m و n را از ورودی میخواند) ، آرایه را به صورت رندوم از 1 تا 50 مقدار دهی  و چاپ کند ، سپس با تعریف متغیرها و ساختارهای مناسب با توجه به مقادیر دریافتی از ورودی عملیات shift یا rotate در جهات مختلف و به تعداد دلخواه را انجام دهد.

مثلا اگر کاربر موارد زیر را وارد کرد:

sوu

نتیجه باید 3 بار shift بالا باشد.

مثال دیگر:

11وrوr

نتیجه: 11 بار rotate به راست

توجه: نحوه  و ترتیب دریافت اعداد و یا ورودی های دیگر را به شیوه خود طراحی کنید

  • علیرضایی

ماتریس چیست؟ هر ماتریس یک آرایش منظم از یه سری عدد هست!

مثلا به A میگن یه ماتریس .

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


الان A یه ماتریس 3 در 3 است !


و هر عنصر از ماتریس را از طریق سطر و ستون آن مشخص میکنیم ، aij  یعنی عنصر موجود در سطر i ام و ستون j ام.

مثلا اگر سطر ها و ستون ها را از 0 شماره گذاری کنیم عدد 3 در ماتریس A در سطر 0 ام و ستون 1 ام قرار دارد.3=a01 

سوال:

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

  • علیرضایی


 

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


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

ولی یه لحظه فکر کنید اگه نمره ها داخل آرایه به صورت صعودی مرتب بود یعنی کمترین نمره در اولین خانه(با اندیس 0) و بیشترین نمره در خانه آخر ( با اندیس 999)بود خیلی راحت بدون انجام مقایسه با چاپ خانه آخر بیشنرین نمره رو چاپ میکردیم.


یا حتی اگه قرار بود نمرات  را به صورت صعودی چاپ کنیم از خونه اول تا آخر آرایه رو چاپ میکریم.

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


الان بیاید ببینیم چه روش هایی وجود داره که یک آرایه نامرتب رو مرتب کرد!

  • علیرضایی

1-ده عدد را از ورودی دریافت کنید مشخص کنید کدام مثبت است.


خب برای این سوال بهتره از حلقه استفاده کنید بجای اینکه 10 تا متغیر یا بیشتر برای ورود اعداد ینویسید


#include <conio.h>
#include <iostream>

using namespace std;

int main()
{
int num[10]; //num ye araye ba andaze 10 hast baraye zakhiraye 10 ta addad
int i;
for( i=0;i<=9;i++){
cin>>num[i];
}
for( i=0;i<=9;i++){
if(num[i]>0)
cout<<num[i]<<" mosbat"<<endl;
}


getch();
}

2-دو عدد از ورودی دریافت کنید مشخص کنید کدام مضرب 5 است.

#include <conio.h>
#include <iostream>

using namespace std;

int main()
{

int a,b;
cin>>a>>b;

if(a%5==0)
cout<<a<<" mazrab 5 hast"<<endl;

if(b%5==0)
cout<<a<<" mazrab 5 hast"<<endl;

if(a%5!=0 && b%5!=0)
cout<<" hich yek mazrab 5 nist!!!!!"<<endl;

getch();
}

3-ده عدد از ورودی دریافت کنید میانگین اعداد زوج را محاسبه کنید.


این سوال رو میشه هم با آرایه نوشت هم بدون آرایه! من بدون آرایه نوشتم.

#include <conio.h>
#include <iostream>

using namespace std;

int main()
{

int i;
int a;
double sum=0;
int c=0;

for( i=0;i<=9;i++)
{
cin>>a;
if(a%2==0)
{
sum=sum+a;
c++;
}
}

if(c!=0)
cout<<"miangin adad mosbat = "<<sum/c;




getch();
}

4- برنامه ای بنویسید که یک عدد از ورودی گرفته اگر عدد زوج بود کل صفحه را با کاراکتر "@" پر کند و اگر فرد بود هیچ چیز چاپ نشود.

main()
{int n,t;
cin>>n;
if (n%2==0)
t=1;
else
t=0;
while(t)
{
cout<<'@';
}

getch();}

توجه: زمانیکه از حلقه while استفاده میکنیم اگر شرط حلقه درست باشد مقدار "1" برمیگردد و اگر غلط باشد مقدار "0" . پس زمانی حلقه اجرا نمیشود که شرط داخل آن 0 شود و در حالتی که شرط آن 1 باشد حلقه اجرا میشود.

حالا اگر حلقه ای داشته باشیم که شرط آن همیشه 1 باشد ( مثل بالا وقتی که عدد زوج است مقدار  t را 1 قرار دادیم )  یک حلقه داریم که مدام تکرار میشود یعنی حلقه بینهایت!



  • علیرضایی


آرایه 2 بعدی


برای وارد شدن به این بحث سراغ یه مثال کلاسیک میرم.

خب اگه قرار باشه که نمرات یک دانش آموز را در حافظه ذخیره کنید چکار میکنید؟ فرض کنید تعداد نمرات 10 تاست!

خیلی راحت میشه یه آرایه 10 تایی تعریف کرد و نمرات در اون ذخیره کرد!

مثلا double a[10];

حالا اگه یک کلاس 30 نفره داشته باشیم و قرار باشه نمرات همه رو ذخیره کنیم باید چکار کرد؟

الان دیگه نمیشه برای هر دانش آموز یه آرایه 10 تایی تعریف کرد ! فکرش رو کنید 30 تا اسم مختلف باید برا آرایه ها قرار بدیم!

اینجاست که با خودمون میگیم چه خوب بود اگه میشد تو حافظه کامپیوتر یه جدول درست میکردیم که 30 تا ردیف داشت و 10 تا ستون .

30 تا ردیف داشته باشه به تعداد دانش آموزا و 10 تا ستون چون قراره برای هر دانش آموز 10 تا نمره ذخیره کنم.


  • علیرضایی