قسمت چهارم اموزش++c
الگریتم ها
الگوریتم حل یک پروزه ++c از اهمیت بالای برخوردار هست
تعریف الگوریتم به مجموعه ای از دستورالعمل ها که با زبان دقیق و قابل فهم به همراه جزییات لازم و کافی به گونه ای اجرا(انجام) شود که در نهایت هدف خاصی دنبال شود در یک الگوریتم موارد زیر باید مد نظر قرار گیرد
1-هر الگوریتم باید دارای شروع و پایان باشد.
2-استفاده از زبان ساده ، دقیق و قابل فهم در الگوریتم
3-استفاده از جزییات کافی
4-ترتیب اجرا(انجام) دستور العمل ها
5-استفاده از حداقل دستورالعمل ها
6-آگاهی از حداقل امکانات مجری الگوریتم
7-تعمیم پذیری
8- هر الگورتیم باید داری فعل باشد و مرجع آن نیز کاملا مشخص باشد.(فاعل افعال باید کاملا معلوم باشد) تذکر : منظور از زبان دقیق در یک الگوریتم یعنی اینکه هر کاربر در انجام دستورالعمل ها یک برداشت یکسان داشته باشد.تذکر 2 : حداقل توانایی های مجری الگوریتم های زیر شناخت اعداد ، توانایی انجام چهار عمل اصلی در ریاضی و مقایسه اعداد از نظر بزرگتر و کوچکتری است .
مثال 0 : الگوریتم تلفن زدن
1-شروع
2-برداشتن گوشی
3-انداختن سکه 50 ریالی
4-گرفتن شماره
5-مکالمه
6-گذاشتن گوشی
7-پایان
مثال 1 : الگوریتمی بنویسید که اعداد کوچکتر از 5 را چاپ نماید. 1-شروع
2-چاپ کن اعداد 1و2و3و4
3-پایان
مثال 2 : الگوریتمی بنویسید که اعداد بین 10 و 20 را چاپ نماید. 1-شروع
2-چاپ کن اعداد 11و12و13و14و15و16و17و18و19
3-پایان
مثال 3 : الگوریتمی بنویسید که یک عدد را از ورودی بگیرد و سپس آنرا چاپ نماید. 1-شروع
2-دریافت کن عدد مورد نظر را
3-چاپ کن عدد فوق را
4-پایان
مثال 4 :الگوریتمی بنویسید که دو عدد را از ورودی دریافت نموده ،حاصل جمع آنها را به عنوان نتیجه چاپ نماید.
1-شروع
2-دو عدد را از ورودی دریافت نموده ، در متغیرهای A,B قرار بده
3- C= A + B
4-چاپ کن C را
5-پایان
مثال 5 :الگوریتمی بنویسید که شعاع یک دایره را از ورودی بگیرد و محیط دایره مورد نظر را چاپ نماید. 1- شروع
2- شعاع دایره را دریافت نموده ، در ظرفی بنام R ذخیره کن
R 3- را دو برابر کن و در عدد 3.14 ضرب کن (فرمول محاسبه محیط دایره)
4-نتیجه حاصل از عمل مرحله 3 را در ظرفی بنام M قرار بده.
5-محتویات M را چاپ کن
6- پایان
مثال 6:الگوریتمی بنویسید که طول و عرض یک مستطیل را از ورودی بگیرد و محیط و مساحت آنرا چاپ نماید. 1-شروع
2-عددی را به عنوان طول مستطیل دریافت کن و در ظرف T قرار بده
3-عددی را به عنوان عرض مستطیل دریافت کن و در ظرف A قرار بده
4-محتویات ظرف T را در ظرف A ضرب کن نتیجه را در ظرف Mo قرار بده.
5-محتویات ظرف Mo را چاپ کن
6-محتویات ظرف T را با محتویات ظرف A جمع کن و نتیجه را در ظرف S قرار بده
7-محتویات ظرف S را دو برابر کن و در ظرف Ma قرار بده
8-محتویات ظرف Ma را چاپ کن
9-پایان
مثال 7 :الگوریتمی بنویسید که عددی را از ورودی بگیرد و اگر عدد دریافت شده مثبت بود پیغام "Mosbat"در غیر اینصورت پیغام "Manfi" را چاپ نماید.
1-شروع
2-عددی را از ورودی بگیر و در ظرف N قرار بده
3-اگر N > 0 بود آنگاه چاپ کن پیغام "Mosbat" در غیر اینصورت چاپ کن پیغام "Manfi" را
4-پایان
مثال 8:الگوریتمی بنویسید که عددی را از ورودی دریافت نماید اگر عدد دریافت شده زوج بود پیغام "Zoj" در غیر اینصورت پیغام "ّFard" را چاپ نماید. 1-شروع
2-عددی را از ورودی دریافت نموده ، در ظرفی بنام N قرار بده
3-اگر باقی مانده تقسیم عدد بر 2 صفر بود چاپ کن "Zoj" در غیر اینصورت چاپ کن "Fard"
4-پایان
نکته : همانطور که در الگوریتم های بالا دیده می شود هر الگوریتم از 3 قسمت اساسی تشکیل شده است که بسته به نوع الگوریتم ممکن است یک یا دو قسمت از این سه قسمت را نداشته باشد این سه قسمت عبارتند از الف)ورودی های الگوریتم
ب)عملیات قابل انجام در الگوریتم(عملیات مورد نظر(ج)خروجی های الگوریتم
مثلا مثال 1 ورودی ندارد عملیاتی هم ندارد و فقط الگوریتم کافی است که اعداد مورد نظر را چاپ نماید.یعنی فقط خروجی دارد.در مثال 3 الگوریتم فقط دارای ورودی و خروجی است و سیستم عملیات خاصی که کاربر آن را معین کرده باشد انجام نمی دهد.در مثال 4 الگوریتم هر سه قسمت را دارا می باشد یعنی هم ورودی ، هم خروجی و هم عملیات خاص مورد نظر کاربر (یعنی جمع دو عدد را انجام می دهد( با توجه به موارد فوق گاهی اوقات ممکن است در یک الگوریتم یکی از سه قسمت فوق خود دارای چند مرحله باشد اما به هر حال قالب کلی همان سه قسمت فوق است اینک به ذکر الگوریتم هایی می پردازیم که یک قسمت ممکن است چند مرحله داشته باشد.
مثال 9 :
الگوریتمی بنویسید که اعداد 1 تا 10 را بر روی صفحه نمایش چاپ کند.
1- شروع
I=1 2- در اینگونه الگوریتم ها به ظرف I شمارنده یا Counter می گویند(
3- چاپ کن I را
4-I = I + 1
5- اگر محتوای ظرف I کوچکتر یا مساوی 10 بود آنگاه برو به مرحله 3
6- پایان
در مرحله 2 از مثال فوق I مساوی یک قرار داده شده است باید به این نکته توجه داشته باشیم که این یک مساوی ریاضی به معنای معادل بودن نیست بلکه به معنای این است که مقدار یک را در ظرفی بنام I قرار بده .
ضمنا از این به بعد به جای کلمه ظرف در کامپیوتر متغیر به کار می بریم که خود یک مفهوم است و عبارتست از :
تعریف متغیر :
هر متغیر یک خانه از حافظه اصلی)Ram) می باشد که در هر لحظه می تواند مقادیر مختلفی را به خود اختصاص دهد
تذکر : زمانی که عدد یا داده جدیدی وارد یک متغیر گردد مقدار قبلی آن از بین می رود.
تذکر :زمانی که مقدار یک متغیر را بخوانیم یا محتوای آن را چاپ نماییم مقدار متغیر تغییر نخواهد نمود.
مثال برای درک بهتر متغیر :
فرض کنیم دو متغیر با نامهای A,B با مقادیر 2و 4 داریم حال حاصل عبارت های زیر را ملاحظه نمایید.
در هر عبارت نتیجه چه خواهد بود
)الف A = A +1 à A= 3
)ب B = B + 3 à B = 7
)ج B = A +1 à A= 3 , B =4
)د A = B +3 A = 7 , B=4à
A= 7, B = 4 , C= 11à) یC = A + B
مثال 10 :
الگوریتمی بنویسید که اعداد 10 تا 1 را بر روی صفحه نمایش چاپ کند.
1- شروع
2- I=10
3- چاپ کن I را
4- یکی از I کم کن و نتیجه را دوباره در ظرف I قرار بده (I=I-1)
5- اگر محتویات ظرف I بزرگتر یا مساوی 1 بود آنگاه برو به مرحله 3
6 -پایان
چند مثال دیگر
مثال : الگوریتمی بنویسید که دو عدد از ورودی دریافت شود و سپس تعیین شود که مجموع دو عدد بزرگتر از 20 است یا نه.
0- شروع .
1- دو عدد a و b را از ورودی در یافت کن.
2- a+b را محاسبه کن.
3- آیا a+b>20 است؟ اگر بلی به مرحله 6 برو.
4- بنویس خیر.
5- به مرحله 7 برو.
6- بنویس بلی.
7- پایان.
با برنامه ریزی و ساماندهی دقیق می توان به راه حلی مناسب جهت حل یک مسئله به کمک کامپیوتر رسید. هرگونه کم توجهی و بی دقتی در نوشتن الگوریتم ضمن بروز مشکلات بسیار، برنامه نویس را نیز از هدف خود دور خواهد کرد؛ لذا برای به هدف رسیدن باید درک صحیح و کاملی از صورت مسئله داشت و سپس راه حل مورد نظر را به صورت الگوریتم بنویسیم. و در نهایت الگوریتم مورد نظر را به زبان برنامه نویسی مورد نظر تبدیل کنیم. برای درک بهتر شیوه حل مسائل و نوشتن الگوریتم به مثالهای زیر توجه کنید:
مثال : الگوریتمی بنویسید که مجموع اعداد طبیعی مضرب 7 و کوچکتر از 50 را حساب کند.
برای نوشتن این الگوریتم به دو خانه حافظه نیاز داریم.
0- شروع.
1- در خانه حافظه sum عدد صفر را قرار بده.
2- در خانه حافظه index عدد 7 را قرار بده.
3- مقدار index را با مقدارsum جمع کن
و حاصل را در sum قرار بده.
4- مقدار 7 را با مقدار index جمع کن
و حاصل را در index قرار بده.
5- آیاindex بزگتراز 50 است،اگر خیر به مرحله 3 برو.
6- محتوای sum را چاپ کن.
7- پایان.
در الگوریتم فوق همانند شکل مقادیر حافظه sum و index تغییر می کند، تا اینکه سرانجام شرط " آیا index بزرگتر از 50 است " بلی می شود لذا محتوای sum در خروجی چاپ خواهد شد و الگوریتم به پایان می رسد. اما در مراحل قبلی شرط فوق خیر می باشد، لذا همانند شکل فوق الگوریتم ادامه پیدا می کند.
مثال : الگوریتمی بنویسید که 1000 عدد را از ورودی دریافت کرده و کوچکترین را چاپ کند.
فرض کنید که به شما لیستی از اعداد را می دهند، برای پیدا کردن کوچکترین عدد در لیست اولین عدد را به عنوان کوچکترین در نظر می گیرید سپس عدد بعدی را با آن مقایسه می کنید، اگر عدد جدید از عدد قبلی کوچکتر بود عدد جدید را به عنوان کوچکترین در نظر می گیرید و گر نه همان عدد قبلی کوچکترین خواهد بود. این روند را تا انتهای لیست ادامه می دهید؛ در پایان عددی که در هر بررسی به عنوان کوچکترین عدد بود، جواب مورد نظر ما خواهد بود. توجه کنید که در این روال شما همواره یک عدد را در ذهن خود در نظر گرفته بودید، برای نوشتن الگوریتم مورد نظر ما یک خانه حافظه را به کوچکترین عدد درهر مرحله اختصاص می دهیم.
0- شروع.
1- min را دریافت کن.
2- i =1 .
3- a را دریافت کن.
4- اگر a<min آنگاه min = a .
5- i = i + 1 .
6- اگر i>=1000 به مرحله 8 برو.
7- به مرحله 3 برو.
8- min را چاپ کن.
9- پایان.
الگوریتم های قبلی به صورت جملات فارسی بودند که سبب طولانی و حجیم شدن الگوریتم می شدند. ولی الگوریتم اخیر بیشتر به صورت جملات ریاضی بود. این شیوه سبب راحتی درک الگوریتم و ساده شدن نگارش آن می شود. از این به بعد نیز الگوریتم ها را به شیوه جدید نگارش خواهیم کرد. شما نیز سعی کنید از این شیوه استفاده کنید.
مثال : الگوریتمی بنویسید که سه عدد از ورودی دریافت شود و تعیین شود که این اعداد می توانند اضلاع مثلث باشند یا خیر.
0- شروع.
1- a وb وc را از ورودی بگیر.
2- اگر a>b+c به 7 برو.
3- اگر b>a+c به 7 برو.
4- اگرc>a+b به 7 برو.
5- بنویس " بلی ".
6- به 8 برو.
7- بنویس " خیر ".
8- پایان.
چند مثال دیگه
این دفعه کمی فرق داره
نکته: منظور از CLS همون Clear Screen هست برای پاک کردن صفحه بکار میره
مثال 1 :برنامه ای بنویسید که یک عدد را از ورودی بگیرد و سپس آنرا چاپ نماید.
Input "Please Enter a number :" ,N
Print N
End
مثال 2 :برنامه بنویسید که دو عدد را از ورودی دریافت نموده ،حاصل جمع آنها را به عنوان نتیجه چاپ نماید.
Cls
Input "Enter a number :",a,b
C = a + b
Print a; "+";b; "=";C
Endمثال 3 :برنامه ای بنویسید که شعاع یک دایره را از ورودی بگیرد و محیط دایره مورد نظر را چاپ نماید.
CLS
INPUT "enter radius :", R
Mo = 2 * 3.14 * R
PRINT "Mohit = "; Mo
ENDمثال 4 :برنامه ای بنویسید که طول و عرض یک مستطیل را از ورودی بگیرد و محیط و مساحت آنرا چاپ نماید.
CLS
INPUT "Vared kon tol & Arz :", T, A
Mo = (T + A) * 2
Ma = T * A
PRINT "Mohit="; Mo
PRINT "Masahat="; Ma
ENDمثال 5 :برنامه ای بنویسید که عددی را از ورودی بگیرد و اگر عدد دریافت شده مثبت بود پیغام "Mosbat" در غیر اینصورت پیغام "Manfi" را چاپ نماید.
CLS
INPUT "Vared kon Yek adad :", N
IF N > 0 THEN
PRINT "Mosbat"
ELSE
PRINT "Manfi"
END IF
END
مثال 6 :برنامه ای بنویسید که عددی را از ورودی دریافت نماید اگر عدد دریافت شده زوج بود پیغام "Zoj" در غیر اینصورت پیغام "fard" را چاپ نماید.
CLS
INPUT "vared kon Yek adad :", N
IF N MOD 2 = 0 THEN
PRINT "zoj"
ELSE
PRINT "fard"
END IF
ENDمثال 7 :برنامه بنویسید که اعداد 1 تا 10 را بر روی صفحه نمایش چاپ کند.
CLS
FOR I = 1 TO 10
PRINT I;
NEXT I
Endمثال 8 :برنامه ای بنویسید که 3 عدد را از ورودی بگیرد و مشخص کند که هر عدد زوج است یا فرد ؟(ضمنا برنامه فوق را با حلقه For بنویسید(.
CLS
For I=1 To 3
INPUT "vared kon Yek adad :", N
IF N MOD 2 = 0 THEN
PRINT "zoj"
ELSE
PRINT "fard"
END IF
Next I
END
مثال 9 :برنامه ای بنویسید که 3 عدد را از ورودی بگیرد و مشخص کند که حاصل جمع آنها زوج است یا فرد ؟
روش اول (بدون استفاده از حلقه(
Cls
Input "Please enter 3 number :",A,B,C
D = A + B + C
If D Mod 2 = 0 Then
Print "Zoj"
Else
Print "Fard"
End if
End
روش دوم( با استفاده از حلقه (
Cls
For I = 1 To 3
Input "Vared kon yek adad",A
C = C + A
Next I
If C Mod 2 = 0 Then
Print "Zoj"
Else
Print "Fard"
End if
End
مثال 10 :برنامه ای بنویسید که مضارب 10 تا 100 و نیز مجموع آنها را محاسبه نموده و با پیغام های مناسب چاپ نماید
.روش اول :
Cls
For I = 1 to 10
Print I *10
Hj = Hj + I *10
Next I
Print "Hasel Jam =";Hj
End
روش دوم :
Cls
For I =10 to 100 Step 10
Print I
Hj = Hj + I
Next I
Print "Hasel Jam =";Hj
End
حلقه شرطی Whileحلقه While یک حلقه شرطی بوده و تا زمانی که شرط مقابل While درست باشد دستورات داخل حلقه اجرا خواهد شد فرم کلی این حلقه به صورت زیر می باشد.
While شرط
دستورات داخل حلقه
Wend
مثال 11 :برنامه بنویسید که اعداد 1 تا 10 را بر روی صفحه نمایش چاپ کند(با استفاده از حلقه (While
I = 1
While I < 10
Print I
I = I +1
Wend
Endمثال 12 :برنامه بنویسید که اعداد 10 تا 1 را بر روی صفحه نمایش چاپ کند(با استفاده از حلقه( While
I = 10
While I >= 1
Print I
I = I -1
Wend
End
مثال 13 :برنامه ای بنویسید که مضارب اعداد 10 تا 100 را با استفاده از حلقه While چاپ نماید.
Cls
I = 10
While I <= 100
Print I
I = I + 10
Wend
End
مثال 14 :برنامه ای بنویسید که سه عدد را از ورودی بگیرد و تشخیص دهد اعداد دریافت شده فرد است یا زوج (با استفاده از حلقه (While
Cls
I = 1
While I <= 3
Input "Enter a number ",N
If N Mod 2 = 1
Print "Fard"
Else
Print "Zoj"
End if
I = I +1
Wend
End
مثال 15 :برنامه ای بنویسید که 5 عدد را از ورودی بگیرد و حاصل جمع و میانگین آنها را چاپ نماید.
Cls
I = 1
While I < =5
Input "vared kon Yek adad:" ,n
Hj = Hj + n
I = i+1
Wend
Print "hasel jam = ";Hj
Mi = Hj / 5
Print "Miangin =";Mi
End
اینی که می بیننید در مورد الگوریتم هست و زیاد ربطی به C ,C++ نداره یعنی ماله همه زبون ها هست که قبل از همه باید الگوریتم بلد باشین
در عمل برای نمایش الگوریتم از یک فلوچارت ( شمای جریان عملیات ) استفاده می شود. در حقیقت فلوچارت روش تصویری و استاندارد نمایش الگوریتم است.
در رسم فلوچارت علائم و نمادهای استانداردی به کار می رود که هر کدام دارای معانی ویژه ای هستند.
از شکل بیضی افقی برای شروع و پایان عملیات استفاده می شود.
از شکل مستطیل برای نمایش مراحل پردازشی استفاده می شود و در داخل آن عمل مورد نظر نوشته می شود. این نماد ممکن است چندین ورودی داشته باشد ولی تنها یک خروجی دارد. |
از نماد لوزی برای نشان دادن مراحل تصمیم گیری استفاده می گردد و شرط یا سؤال مورد نظر در داخل لوزی نوشته می شود. |
از متوازی الاضلاع برای نشان دادن ورودی یا خروجی استفاده می شود.
مثال : فلوچارت الگوریتم اضلاع مثلث در مثال قبل به صورت زیر می باشد.
[گل][گل][گل][گل][گل][گل]
__$$$$_______$$$___$$$$$
_$$$$$$_____$$$___$$$$$$$
$$$_$$$$___$$$__$$$$____$
$____$$$$_$$$$_$$$
_______$$-$$$$$-$$----$$$$$
___**** جوادین***** ___
___$$$$$$$$$$$$$$$$$_____$$$
__$$$__$$$$$$$$$$$$________$
_$$___$$$$$$$$$$$$$$$$$
$$___$$$$_$$$_$$$__$$$$$
$___$$$$___$$__$$$$___$$$
____$$$_____$$___$$$____$$
____$$______$$$___$$$____$
____$$_______$$____$$$
____$________$$$____$$
____ _________$$$____$
_____________$$$
_____________$$$ســـــــلام
____________ $$$
____________$$$
___________$$$به روزم میای ؟
_________$$$$$
________$$$$$
______ $$$$$
[گل][گل][گل][گل][گل][گل][گل][گل][گل]ببــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــدو بیــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــا منـتظــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــرم
http://buyadipexonline.wackwall.com/ Buy Adipex Online