راسخون

♣<<▐▐ ساختمان داده ▐▐>>♣

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 




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

امروز بعد از مدتها دوباره تصمیم گرفتم که یه تاپیک آموزشی باز کنم 

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

در کل می توان به جرات گفت که درس ساختمان داده پایه و اساس کار یه برنامه نویسه بطوری که اگر در ویکی پدیا سرچ کنید چنین توضیح مختصری وجامعی داده که :

*******************************


http://fa.wikipedia.org/wiki/%D8%B3%...8C%D9%87%D8%A7
******************************************

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





++++++++++++++++++++++





++++++++++++++++++++++

تشکر یادتون نره

++++++++++++++++++++++++



siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬




Data شکل جمع واژه لاتینی Datum به معنای "حقیقتی که استنباطی بر آن مبتنی است" می باشد.

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

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

مثال: برای داده ها مثالی ذکر کنید.
ساختمانی را در نظر بگیرید که هنوز ساخته نشده است. مواد اولیه برای آن مانند آجر، سیمان و ... نسبت به ساختمان که
موجودیت دارند و ملموس هستند مانند داده ها می باشند.
کاراکترها مانند a ، z ، $ و .... .
3.2 ، و .... . ،3 ، اعداد مانند 2





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

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

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

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

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

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



در این مثال ترسیم ساده ای از یک سیستم حاوی سه عنصر "ورودی"، "پردازش دستورالعمل" و "خروجی" را داریم.
•ورودی ها: اعداد صحیح 2 و 3
•دستورالعمل: عمل جمع بر روی ورودی ها
•پردازش: انجام دستورالعمل
•خروجی: نتیجه دستورالعمل











داده ها: حقایق و واقعیتهای خام می باشند و اطلاعات داده های پردازش شده و با معنا می باشند.

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

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

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



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

حل مسئله توسط کامپیوتر نیازمند استفاده از سخت افزار و نرم افزار است. توسعه نرم افزار فرآیند پیچیده ای است که هم علم است و هم هنر. به این دلیل هنر است که مستلزم ابتکار، خلاقیت و مهارت است.

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





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




ورودی : یک الگوریتم می تواند هیچ یا چندین کمیت ورودی داشته باشد.
خروجی: الگوریتم باید حداقل یک کمیت به عنوان خروجی ایجاد (تولید) کند.
قطعیت: هر دستورالعمل باید بدون ابهام و کاملاً واضح باشد.
محدودیت: الگوریتم باید پس از طی مراحل محدودی خاتمه یابد.
نکته: هر دستورالعمل باید به گونه ای باشد که با استفاده از قلم و کاغذ بتوان آن را با دست نیز اجراء کرد. به عبارت دیگر هر
دستورالعمل باید انجام پذیر (Tracable ) باشد.
نکته: در علم کامپیوتر الگوریتم باید پایان پذیر باشد ولی برنامه لزوماً پایان پذیر نیست.

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



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









1- با استفاده از کلمه Start یا شروع آغاز می شوند.

2- دستورالعمل ها مانند زبان C++ نوشته می شود.

3- نمادهایی مانند +، ، * و / برای عملیات محاسباتی به -
کار می روند.

4- نمایش و نامگذاری متغیرها مانند زبان C++ می باشد.

5- پایان هر خط دستورالعمل با یک ; مشخص می گردد.

6- برای ورود داده ها از کلمه کلیدی cin استفاده می شود.

7- برای نمایش خروجی داده ها از کلمه کلیدی cout
استفاده می شود.

8- برای بیان توضیحات در یک خط از نماد // بعد از
دستورالعمل ها استفاده می کنیم.

9- برای بیان توضیحات در چند خط از نماد */ برای شروع
توضیحات و /* برای پایان توضیحات بعد از دستورالعمل
ها استفاده می کنیم.

10- برای خوانا بودن دستورالعمل ها از تورفتگی ها استفاده
می کنیم.

11- وقتی یک دستورالعمل در چند خط ادامه می یابد،
تورفتگی ها را رعایت کنید.

12- تمامی دستورالعمل ها با استفاده از حروف کوچک نوشته
می شوند.
13- هر یک از } یا { را در یک خط جداگانه قرار دهید.

14- شبه کد به گونه ای نوشته شود که هر } با { تنظیم شود.

15- با استفاده از کلمه End یا پایان خاتمه می یابند.

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

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬�� �▬▬







siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 




siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 





خط 1 و 2: دو کتابخانه ای را نشان می دهند که بیشترین دفعات استفاده در برنامه ها را دارند.
خط 3 تا 8 در فرم اول و خط 3 تا 7 در فرم دوم تابع main() را در برنامه نشان می دهند. در یک برنامه به زبان c++ همواره دارای یک تابع به نام main() هستیم که این تابع وظیفه مدیریت توابع زیرشاخه را بر عهده دارد. توابع زیرشاخه ای یا توسط خود برنامه نویس تعریف می شود یا از توابعی که در داخل زبان C++ تعریف شده، استفاده می گردد.

در فرم اول تابع main() از نوع عدد صحیح ( int ) بوده و خط 7 مقدار برگشتی تابع را نشان می دهد( return 0; .)

در فرم دوم main() از نوع void و فاقد خروجی می باشد.

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

استفاده از کتابخانه <conio.h> صرفا برای استفاده از تابع getch(); در برنامه می باشد.این تابع در بحث رشته ها بحث می شود.



کتابخانه (Library) مجموعه ای از توابع از قبل آماده شده در قالب یک بسته می باشد که برنامه نویس را از بازنویسی مجدد آنها راحت می کند و در زمان برنامه نویسی صرفه جویی می کند. کتابخانه استاندارد زبان c++
<iostream.h> می باشد./و کتابخانه <math.h> جهت توابع ریاضی می تواند استفاده گردد.

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



1- در برنامه نویسی به زبان c++ باید از حروف کوچک انگلیسی استفاده نمود.استفاده از حروف بزرگ سبب ایجاد خطا در برنامه می شود.

2- هر خط برنامه در زبان c++ یک دستورالعمل نامیده می شود و به علامت semi-colon یا سمی کالن ; ختم می شود.

3- استفاده از علامت آکولاد یا brace باز و بسته سبب می شود یک بلاک برنامه ایجاد گردد که مجموعه ای از دستورالعمل ها در آن قرار میگیرد.

4- معیار هزینه ها در یک سیستم کامپیوتری تعداد محاسبات انجام شده توسط cpu در واحد زمان می باشد. پس زمان صرف شده جهت انجام یک برنامه بسیار مهم می باشد و هدف کاهش این هزینه می باشد.

5- #include جهت افزودن سرآیندها یا فایل های کتابخانه ای به زبان c++ استفاده می شود. این فایل ها معمولا پسوند (.h) که مخفف header به معنای سرآیند می باشد دارند.





siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



▬▬▬▬▬▬▬▬▬▬▬▬


برای دریافت داده از کاربر از دستور cin به شکل زیر استفاده می شود ومعادل دستور scanf
در زبان c می باشد:
 

کد PHP:
cin>>نام متغیر ;  

کد PHP:
cin>>a;  

برای چاپ پیام یا مقدار متغیر در خروجی از دستور cout استفاده می شود که معادل با دستور printf()
در زبان C می باشد:
 

کد PHP:
cout<<یک پیام یا یک متغیر ;  

کد PHP:
cout<<”please enter value of n”
cout<<a;  

•استفاده از دو نماد >> و << در هنگام برنامه نویسی مستلزم دقت می باشد.
•برای اینکه بعد از چاپ یک پیام نشانگر به ابتدای خط بعد برود از endl استفاده می کنیم.

کد PHP:
cout<<”please enter value of n”<<endl
cout<<n<<endl;  



▬▬▬▬▬▬▬▬▬▬▬▬▬▬

•برای ایجاد یک عبارت شرطی در زبان c++ از دستور if…else استفاده می شود که syntax آن به صورت زیر می باشد:
 

کد PHP:
if(شرط 

مجموعه دستورات 

else 

مجموعه دستورات 
}  

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

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



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

متغیرها خانه هایی در حافظه هستند که می توانند مقادیر مختلفی را بر اساس نوع در خود نگهداری کنند. •
•برای استفاده از متغیرها به شیوه زیر عمل می کنیم:
 

کد PHP:
نام متغیر   نوع داده;  

•جهت نامگذاری متغیر بایستی از نام های ملموس و معنادار یا ترکیبی از کاراکترها و اعداد استفاده نمود. تعدادی از کاراکترها هستند که جهت نامگذاری غیرمجازند.

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

به = عملگر انتسابمی گوییم. این عملگر مقدار سمت راست علامت انتساب را در مقدار سمت چپ قرار می دهد(یا کپی می کند) که این ترتیب مهم است.

•می توان در هنگام تعریف متغیر، به متغیر مقدار اولیه نسبت داد.
مثال:

کد PHP:
 int a=5;  

•می توان پس از تعریف متغیر به آن مقدار اولیه نسبت داد.

•برای تعریف چندین متغیر در یک زمان از علامت کاما می توان بهره گرفت. 
مثال:

کد PHP:
 int a,b,c,d,e;  

•برای بیان تساوی از عملگر == و برای بیان عدم تساوی از عملگر != می توان استفاده نمود.

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



▬▬▬▬▬▬▬▬▬
در ساختار استاندارد c++ سه نوع حلقه استفاده می شود:
for( ; ; )
while
do-while

1. حلقه
syntax حلقه for به صورت زیر می باشد:

کد PHP:
for(مقدار دهی اولیه متغیر شرط حلقه ;تعداد گام های تکرار 

مجموعه دستورات 
}  


 

کد PHP:
for(i=1;i<=n;i++) 

cout<<i
}  

می توان نوع متغیر i مرتبط با حلقه for را در ابتدای برنامه تعریف نمود یا اینکه قبل از مقداردهی اولیه در for .
 

کد PHP:
for(int i=1;i<=n;i++) 

cout<<i
}  

حلقه for برای زمانی که تعداد معینی از تکرار یک برنامه خاص را داریم کاربرد دارد.
برای استفاده از حلقه for به صورت بی نهایت بار تکرار می توانیم آن را به صورت زیر بنویسیم:
 

کد PHP:
for(;;) 

مجموعه دستورات 
}  



syntax حلقه while به صورت زیر می باشد:
 

کد PHP:
while(شرط حلقه 

مجموعه دستورات 
}  

تا زمانی که شرط برقرار باشد حلقه اجرا می گردد.
حلقه while برای زمانی که تعداد زیادی از تکرار یک برنامه خاص را داریم کاربرد دارد.

شبیه سازی حلقه for برای حلقه while به صورت زیر می باشد:



برای بی نهایت اجرا شدن حلقه while آن را به صورت زیر می نویسیم:

کد PHP:
while(1

مجموعه دستورات 
}  



syntax حلقه do-while به شکل زیر می باشد:
 

کد PHP:
do 

مجموعه دستورات 
} while(شرط حلقه )  

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

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 



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


 

کد PHP:
)ورودی های تابع
نام تابع 
نوع تابع 


مجموعه دستورات 
return مقدار برگشتی 
}  

1- یک تابع می تواند هیچ یا چندین ورودی داشته باشد.
2- نوع تابع از همان نوع متغیرها می باشد.
3- قاعده نامگذاری تابع مانند قاعده نامگذاری متغیرها می باشد.
4- اگر نوع تابع void باشد تابع فاقد مقدار برگشتی می باشد و در نتیجه از دستور return استفاده نمی شود.



siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389 

برای نوشتن برنامه به زبان C++ می توان از یکی از چهار برنامه زیر استفاده نمود:

.1 Turbo C++ 4.5
.2 Borland C++ 5.02
.3 DEV-C++ 4.9.9.2
.4 یکی از نسخه های Microsoft Visual Studio C++.net

در این درس گزینه سوم مد نظر است که به صورت خلاصه طرز استفاده از این برنامه شرح داده می شود.

siryahya کاربر طلایی1
|
تعداد پست ها : 158652
|
تاریخ عضویت : اسفند 1389