لطفا از تمام مطالب ديدن فرماييد.
تاريخ : دو شنبه 19 بهمن 1398برچسب:, | 9:20 بعد از ظهر | نويسنده : احسان صمدی فرد |

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


برچسب‌ها:

ادامه مطلب
تاريخ : جمعه 17 مهر 1398برچسب:سورس برنامه نویسی,سورس نرم افزار,سورس,سورس نوت پد,سورس ویرایشگر,, | 10:57 بعد از ظهر | نويسنده : احسان صمدی فرد |

???سی شارپ چیست؟؟؟

سی شارپ ( C#)، زبانی شیءگرا و سطح بالا از خانوادهٔ زبان‌های چارچوب دات‌نت شرکت مایکروسافت است.

زبان سی شارپ، زبان برنامه‌نویسی چند الگویی است و منظم شده مدل‌های تابعی، امری، عمومی، شیءگرا و جز گرا و در بستر دات نت می‌باشد. این زبان توسط مایکروسافت و جزئی از دات نت به وجود آمد و بعداً استانداردهای ECMA و ISO را نیز در بر گرفت. سی شارپ یکی از ۴۴ زبان برنامه‌نویسی میباشد که توسط زمان اجرای زبان مشترک از چارچوب دات‌نت پشتیبانی می‌شوند و در همه جا به وسیله مایکروسافت ویژوال استودیو شناخته می‌شود.

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

این زبان برپایه سادگی، مدرن بودن، همه منظوره و شیءگرا بودن ساخته شد. آندرس هجلزبرگ، طراح زبان برنامه‌نویسی دلفی، سرپرستی تیم طراحان زبان سی شارپ را بر عهده داشت. این زبان دارای دستوری شیءگرا مشابه ++C است و به شدت از زبان‌های جاوا و دلفی نیازمندمدرک تأثیر پذیرفته‌است. در ابتدا نام این زبان COOL بود که مخفف C like Object Oriented Language بود، هر چند در ژوئیه ۲۰۰۰، زمانی که مایکروسافت پروژه را عمومی اعلام کرد، اسم آن به سی شارپ تغییر پیدا کرد.


برچسب‌ها:

ادامه مطلب
تاريخ : جمعه 17 مهر 1398برچسب:سی شارپ,سی شارپ چیست,سی شارپ چیست؟,اموزش سی شارپ,سی شارپ,تاریخچه سی شارپ,اهداف طراحی زبان سی شارپ,ویژگی سی شارپ, | 10:25 بعد از ظهر | نويسنده : احسان صمدی فرد |

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

جهت سفارش با شماره 09397911504 تماس حاصل و یا از طریق ایمیل prpcweb@gmail.com با ما در تماس باشید

***با آرزوی موفقیت برای تک تک شما کاربران عزیز***


برچسب‌ها:

تاريخ : جمعه 17 مهر 1398برچسب:, | 10:23 بعد از ظهر | نويسنده : احسان صمدی فرد |

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


برچسب‌ها:

تاريخ : جمعه 17 مهر 1398برچسب:, | 10:21 بعد از ظهر | نويسنده : احسان صمدی فرد |

ادامه بخش دوم ( قسمت پایانی )

عملگرها 

6. عملگر هاي مقايسه اي 

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

با این موضوع معنی صحبت اول بخش دوم رو می فهمید که گفتم :

«اصل الفبا، يك مطلب است اما نوع دستور ، اسم دستور  ، نحوه به كارگيري دستور و ... هر برنامه با يكديگر متفاوت است .»

مثلا علامت <> در زبان QBASIC به معنای مخالف بودن است . 

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

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

به همین دلیل وقتی شما مفاهیم و کاربرد مفاهیم را یاد بگیرید در هر زبانی به سادگی می توانید کد بنویسید.

مثلا در الگوریتم ، شرطی دارید که شرط می گوید اگر مخالف مقداری بود عملیات 1 انجام شود. 

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


اين عملگر ها براي مقايسه ي مقادير عددي و رشته اي به كار مي روند و در واقع آمده اند تا نشان دهند عبارت ارزش درستی دارد یا نه ؟

مثلا :

Pass$ <> Password$

این عبارت کدی است از زبان QBASIC و با توجه به جدول بدین معنی است که متغیر رشته ای Pass با متغیر رشته ای Password مخالف است یا نه ؟ در واقع شرطی است که مخالف بودن را بررسی می کند.

- عملگر منطقی

دسته ي ديگر از عملگر هايمان ، عملگر هاي منطقي است در هر  زباني اين عملگر ها يك اسمي دارند ولي همانطور که گفتم دانستن مفهوم مهم است.

ما در QBASIC  عملگر هاي منطقي And, or , not  را داريم كه همين مفهوم در زبان هاي ديگر هم هست .

عملگر AND , OR : ترکیب عبارات منطقی است.

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

 

اين عبارات در عبارات كنترلي بيشتر ديده مي شود . و شيوه اي كه به شما كمك مي كند تا براحتي بتوانيد از اين عملگر ها استفاده كنيد این است که :

1.معادل شرط

 هر بار كه به شرطي برخوردید و از اين عملگر ها در آن استفاده شده بود ، اگر شرط درست بود به جای آن شرط ، 1 بگذارید و اگر نادرست بود صفر بگذارید.  

 

2.معادل عملگر

AND را مساوی با «ضرب یا و » بدانید.

OR را مساوی با «جمع یا یا» بدانید.

NOT رو هم قرینه کننده بدانید.


3.ریاضیات عملگرهای منطقی

این ریاضیات مثل همان ریاضی خودمان هست به جز 1+1.

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

1*1=1                                     1*0=0                     0*1=0
1+1=؟                                     1+0=1                     0+1=1

خب حاصل 1+1 چند میشود؟ همانطور که گفتم مثل ریاضیات خودمان عمل می کنیم . 1+1 می شود 2. اما در برنامه نویسی 2 نداریم پس خانه ی پر یعنی 1 را در نظر می گیریم. پس 1+1 در برنامه نویسی میشود 1.


مثال :


Name$="maryam"
If (name$ =="maryam" or name$=="mona") then A
Else                 B

خب شرط مي گوید : اگر name$  (نشانه ی متغیر رشته ای در زبان QBASIC است ) مريم يا مونا بود  A را انجام بده . 
خب ما بايد بدانيم شرط درسته يا نادرست . که اگه درست باشه بايد دستور  A  انجام شه و اگه نه بايد دستور B انجام بشه. پس تشخيص برامون مهمه .

خب قسمت اول  name$=="maryam"درسته (چون اول کد name را maryam مقدار دهی کرده است. ) پس چون شرط درست است معادل آنرا قرار میدهیم یعنی 1 به جای آن میگذاریم.
قسمت 2 name$ =="mona" نادرسته پس معادل آنرا میگذاریم یعنی 0
حالا به جاي  OR  معادلشو مي گذاریم +
حالا پرانتز شد (0+1)

حاصل پرانتز را حساب می کنیم . جواب میشود 1 .

1 هم یعنی درست بودن. پس شرط درست است و برقرار. در نتیجه خط اول اجرا میشود و A جواب نهایی خواهد بود.


<جلسه قبل ــ جلسه بعد>


برچسب‌ها:

تاريخ : 19 مهر 1394برچسب:, | 3:25 بعد از ظهر | نويسنده : احسان صمدی فرد |

ادامه بخش دوم

عبارات کنترلی

در هر مساله ای حداقل با يك عبارت كنترلي روبرو مي شويد پس تسلط در اين قسمت بسیار اهمیت دارد.


1.عبارات شرطي

حالت اول شرط

شما در مسأله به مرحله اي مي رسيد كه بايد از راه مستقيمتان منحرف شويد و اين انحراف با شرطي معلوم مي شود كه: به كدام جهت منحرف شويد ؟

پس : 
فلوچارت شرط مي شود :

و كد آن در زبان QBASIC  مي شود 


Then  شرط If 
كارهايي كه در صورت درست بودن شرط ، بايد انجام شود .
End if . 



براي شرط ها در هر زبان برنامه نویسی مي گوييم :

اگر  شرط درست بود پس : اين سري كارها انجام شوند و تمام . 

نکته 1 : در هر زباني يادتان باشد   If با تمام متعلقاتش جدا شود و بعد از تمام شدن حتماً پايان زده شود.

نکته 2 : هميشه در قسمت عبارات كنترلي سعي كنيد بعد از كد دستور ، عمليات را با يك Tab  زدن شروع كنيد تا حالت تورفتگي ايجاد  شود برای اینکه خوانايي برنامه بيشتر شود.

حالت دوم شرط 
اماهميشه شرط ما درست نيست پس نياز داريم شرطمون اجزاي ديگه اي هم  داشته باشد جزء Else 
 اين جزء به معني : در غير اينصورت است .

يعني اگر شرط درسته عمليات 1 رو انجام بده و اگر درست نبود عمليات 2 .
 فلوچارت آن مي شود :

و كد آن مي شود : 


Then  شرط If 
كارهايي كه در صورت درست بودن شرط ، بايد انجام شود 
Else 
كارهايي كه در صورت نادرست بودن شرط ، بايد انجام شود 
End if .

حالت سوم شرط 
ممكنه شرط اينطور باشه :

اگر شرط درسته عمليات 1 انجام شود درغير اينصورت اگر شرط 2 درسته عمليات 2 و الي آخر تا برسيم به درست نبودن تمام قسمتها.
 كه فلوچارت آن مي شود:

و كد برنامه آن مي شود : 


Then  شرط1  If 
كارهايي كه در صورت درست بودن شرط 1 ، بايد صورت بگيرند . 
Then  شرط 2  Else if 
كارهايي كه در صورت درست بودن شرط 2 ، بايد صورت بگيرند .
.
.
Then      شرط n  Else if    
كارهايي كه در صورت درست بودن شرط، بايد صورت بگيرند .

Else 
 
كارهايي كه در صورت نادرست بودن تمام شرط هاي بالا بايد صورت بگيرند . 
End if .

نكته ی خیلی مهم :

يه نكته رو بگم كه در عبارات شرطي If  ، هميشه روال اجرا به اين نحو است كه : 
قسمت اول كامل خوانده ميشود اگر درست بود انجام مي شود و به End if  پرش مي كند و تمام ميشود يعني :
شرط هاي بعد ديده نمي شود . 


ولي اگر قسمت اول درست نبود به خط بعد ، به خط بعدتر و ... مي رود تا به شرط صحيح برسد و همگي به End if  مي پرند . به همین دلیل است که گفته میشود  IF و متعلقاتش را حتما ببندیم.

پس نتيجه اينكه : IF در واقع تلاش و گذر براي رسيدن به حالت درست است .

 

توجه داشته باشيد كه براي قسمت  Else  نياز به شرط نمي باشد و در صورتي كه شروط قبل نادرست باشند اين قسمت اجرا مي شود.

 

2.تکرار یا حلقه

حلقه ها براي تكرار يك يا چند عبارت به كار مي روند.

حلقه ها به طور كلي 2 نوعند : 


1/for … next 


در اين عبارت براي شمارش ، يك شمارنده يا كانتر counter  وجود دارد كه با رسيدن به انتهاي حلقه به وسيله next  به يك نسبت ثابت تغيير مي كند . 


شكل كد آن : 


مقدار تغيير شمارنده step  مقدار نهايي  to  مقدار اوليه = متغير شمارنده for 
عباراتي كه بايد تكرار شوند
 
متغير شمارنده  next 


شكل فلوچارت آن :

این کد و الگوریتم منظورشان این است که : آنقدر شرط تکرار شود که شمارنده به حد نهایی خود برسد.

 

 

2/Do… Loop  


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

شکل کد آن :

شرط  DO WHILE

عباراتی که باید تکرار شود

LOOP

شکل فلوچارت آن :

این کدها و الگوریتم منظورشان این است که : تا وقتی که شرط درست است تکرار شو.

 

کاملا واضح است که این دو نوع حلقه تفاوتشان در بررسی شرط است. وقتی در الگوریتم بررسی شرط اهمیت داشت از نوع 2 حلقه استفاده می کنیم و اگر در الگوریتم بررسی شرط مطرح نبود  از نوع 1 حلقه استفاده می کنیم.

 

این موضوعات را در حل مساله بهتر می فهمید. درک عمیق این مطالب بماند برای جلسات حل مساله. 


<جلسه قبل ــ جلسه بعد>


برچسب‌ها:

تاريخ : 19 مهر 1394برچسب:, | 3:25 بعد از ظهر | نويسنده : احسان صمدی فرد |


ادامه بخش دوم

در هر زبان برنامه نويسي ، بعد از دانستن انواع داده ها یعنی : 
1. در آن زبان چه طور داده ها تفكيك مي شوند؟
2. نحوه ي نمايش آنها چگونه است ؟
3. انواع داده در آن زبان چندتاست و چگونه است ؟ [ممكن است داده هاي يك زبان از آن انواعي كه در جلسه ی قبل گفتيم بيشتر باشد (حالت پايه اي گفته شده) پس لازم است آنها را هم بشناسيد. [


بايد راجع به نحوه ي ورود و ارسال داده و اطلاعات بدون اتلاف وقت ، اطلاع حاصل كنيد .

 

2. نحوه ي ورود و ارسال داده و اطلاعات


ورود داده : منظور این است که سریعا یاد بگیرید آن زبان،چطور از کاربر ورودی می گیرد ؟ چه دستوری این کار را انجام میدهد؟ 

ارسال اطلاعات : منظور اين است كه آن زبان با چه دستوري اطلاعات را در محيط اجرا نمايش مي دهد ؟


 3. قرار دادن مقادير در متغير ها 

بايد حتماً در هر زباني بدانيد كه چطور مقادير گرفته شده، در متغير ها قرار مي گيرند يا چطور نتيجه ي عمليات در يك متغير قرار مي گيرد ؟

 

4. عبارات كنترلي 

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

 

5. محاسبات رياضي 

در زبان هاي برنامه نويسي عملگر هاي محاسباتي داراي تقدم و تأخر هستند كه  ترتيب اولويت پايه اي آنها به قرار زير است: 

1.  پرانتز ()

2. توان ^
3. ضرب و تقسیم * /
4. تقسيم صحيح 
5. باقي ماندهMod 
6. جمع و تفريق +-

سوالات مطرح در این مبحث :


1. منظور از اولويت چيست ؟ اگر در يك عبارت رياضي، چندين عملگر محاسباتي باشد،  برنامه اول به سراغ آن عملگري مي رود كه اولويتش بالاتر است . که در اینجا الویت از بالا به پایین کمتر می شود.


2. بعضی عملگرها در یک خط اند و در واقع هم الویت هستند، چطور الویتشان تشخیص داده می شود؟  آنهایی كه در یک خط هستند، الویتشان در سؤال معلوم ميشه يعني : در سؤال هر دو عملگر آمده اند ، آن عملگری كه سمت چپ تر هست ، زودتر حل مي شود.

3. چرا باید الویت عملگرها را بدانیم ؟ موقع انجام محاسبات ، برای داشتن مقدار مورد نظر، بايد بدانیم برنامه چگونه برای محاسبه ، مساله را می خواند.

4. منظور از تقسيم ، تقسيم صحيح ، باقي مانده چیست ؟ 


تقسيم /: خارج قسمت را به ما میدهد . يعني 3 تقسیم بر 2 ( 2/3 ) ميشود 1.5=  خروجی این عملگر در این مساله 1.5 است.
تقسيم صحيح : قسمت صحیح و روند خارج قسمت را به ما میدهد. يعني 3 تقسیم صحیح بر 2 ( 23 ) ميشود 1=  خروجی این عملگر در این مساله 1 است.

 باقي مانده  Mod: باقیمانده را به ما میدهد. یعنی 3mod2  ميشود 1 = خروجی این عملگر در این مساله 1 است.

 
مثال 1 :  حاصل عبارت روبرو چند مي شود ؟ 3-2^2*3

در اين سؤال ، 3 عملگر *^- داريم اگر اولويت بندي را ندانيم ، 
اين طور عمل مي كنيم

 3*2=6    

2^6 =36           

2-36=34


اين يك روش است وبينهايت روش بهتر هم وجود دارد. اما کدام روش صحیح است ؟

 در برنامه نویسی باید همان راه اصلي "اولويت بندي  " را بكار ببريم .چرا که برنامه به این روش مساله را حل می کند.


روش الویت بندی :

طبق اين روش ما ابتدا به سراغ {توان و دو عدد طرفین آن} مي رويم  پس داريم 2^2=4
حالا شد 3-4*3

بين اين دو عملگر {* و - }،  {* و دو عدد طرفين آن } اولويت دارد حالا شد 3-12=9 

پس خروجی برنامه برای این مساله 9 است . حالا ببینید 9 کجا 34 کجا ؟!

مثال 2 : حاصل اين عبارت را بيابيد .      5+3/2^2*3


^ و اعداد طرفينش : 3^2=8
حالا هم * داريم هم / كدام ؟ چون هر دو یک الویت دارند طبق نکته ای که بالا گفتم ،از چپ سؤال رو مي خونيم ،آن عملگری که چپ تر هست اول حل می شود. 
پس : * و اعداد طرفينش : 8*3=24
/و اعداد طرفينش :  كدوم؟  24/2=12
و در آخر + و اعداد طرفينش : 5+12 =17
پس حاصل شد : 17


6. عملگر هاي مقايسه اي 

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

با این موضوع معنی صحبت اول بخش دوم رو می فهمید که گفتم :

«اصل الفبا، يك مطلب است اما نوع دستور ، اسم دستور  ، نحوه به كارگيري دستور و ... هر برنامه با يكديگر متفاوت است .»

مثلا علامت <> در زبان QBASIC به معنای مخالف بودن است . 

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

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

به همین دلیل وقتی شما مفاهیم و کاربرد مفاهیم را یاد بگیرید در هر زبانی به سادگی می توانید کد بنویسید.

مثلا در الگوریتم ، شرطی دارید که شرط می گوید اگر مخالف مقداری بود عملیات 1 انجام شود. 

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


موضوع عملگرها بسیار دقیق و کاربردی هستند به همین دلیل در یک جلسه به طور کامل به آنها می پردازیم.


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

در اینجا بحث جلسه ی 4 به پایان می رسد، در جلسه ی بعد به موضوع عبارات کنترلی- که مهم ترین بخش هر زبان برنامه نویسی است – می پردازیم.

موفق باشید.


<جلسه قبل ــ جلسه بعد>


برچسب‌ها:

تاريخ : 19 مهر 1394برچسب:, | 3:25 بعد از ظهر | نويسنده : احسان صمدی فرد |


بخش دوم

 هدف كلي 

                                      الفباي برنامه نويسي


هدفهاي رفتاري

          پس از پايان مطالعه اين بخش از فراگير انتظار مي رود كه :

 

1. در اولين برخورد با هر زبان برنامه نويسي  بداند اول، به دنبال فراگيري چه مطالبي باشد . 
2. در هر مرحله از دستورات، تسلط كافي براي تبديل كد به الگوريتم و بلعكس را داشته باشد 
3. تقدم عملگر ها را بداند و به خوبي به كار ببندد . 
4. با توجه به نوع مسأله بداند كه از كدام دستور بهتر است استفاده شود .

  
در این بخش به این موضوع می پردازیم که : راه حل یا الگوریتم خود را چطور به هر زبانی تبدیل کنیم ؟

از نگرشی دیگر در این بخش یاد میگیریم برای یادگیری هر زبان برنامه نویسی ، اول چه مباحثی را یاد بگیریم؟

 

 شروع بخش دوم :
مقدمه 
در اين بخش شما با الفباي برنامه نويسي آشنا مي شويد . اين بخش بسيار حائز اهميت است . 
زيرا شما با دانستن اين مطالب به راحتي مي توانيد، با داشتن الگوريتم  در زماني اندك آنرا به كد چندين برنامه ترجمه كنيد حتي اگر با آن زبان، آشنايي حرفه اي نداشته باشيد با دانستن الفباي آن ، تا 80% كارتان پيش مي رود . 


اصل الفبا، يك مطلب است اما نوع دستور ، اسم دستور  ، نحوه به كارگيري دستور و ... هر برنامه با يكديگر متفاوت است . به همين دليل در بعضي قسمتها مجبور خواهم بود براي تفهيم مطلب از كدهاي برنامه QBASIC  استفاده كنم. 
اين زبان بسيار ساده و البته كاربردي و پيش برنده به سوي برنامه نويسي حرفه اي است زيرا همانطوركه استدلال مي كنيد مي نويسيد و اين خيلي به نفع شماست . زيرا برنامه نويس، آن كسي نيست كه از حفظ، كدهايي را براي مسأله خاصي بنويسد ، بلكه برنامه نويس ،كسي است كه در هر مرحله با Trace   و توضيحات خود كه در هر مرحله همراه نوشتن كد انجام مي دهد به مرحله بعد هدايت شود ، درست است كه اين عمل در مرحله الگوريتم نويسي انجام مي شود اما 
هيچ وقت به خودتان ظلم نكنيد هميشه از فكرتان در هر مرحله اي استفاده كنيد . آن وقت است كه شما فكر برنامه نويس خواهيد داشت.

توجه :  تا بر روي بخش اول  به خوبي و به طور كامل تسلط نداريد وارد اين بخش نشويد زيرا علم  برنامه نويسي كاملاً  به هم پيوسته است اگر در قسمتي لنگ بزنيد مطمئن باشيد كه تا آخر لنگان خواهيد بود .

خوب وارد درس شويم .

1. نوع داده  

اولین مبحثی که در هر کتاب آموزشی به سراغ یادگیری اش می روید این است که بدانید چه نوع داده هایی در آن زبان وجود دارد ؟


خب قبل آن ببينيم خود داده چيست ؟ 


داده : اطلاعات خام ِورودي پيـــش از پردازش است .

مثال 1. در سؤال "محاسبه ميانگين دو عدد 10 و 20   " داده كدام است؟
ورودي : 10 و 20 است . 
خوب ورودي  معلومات  مسأله است كه در اختيار ما قرار مي گيرد تا رويشان پردازش كنيم .

پـــس : 10 و 20 داده هاي ما هستند . 

مثال 2. در سؤال "مرتب شده اسامي زير به طريق صعودي كدام است؟ ( علي حسين رضا محمد  )  "داده كدام است؟

كليه اسامي كه سؤال مطرح كرده است و به ما مي دهد تا رويشان پردازش كنيم  براي ما داده محسوب مي شوند . 


اما يك سؤال : در مثال 1، 10 و 20 داده بودند و در مثال 2 اسامي ،در  هر دو حالت داده داريم اما آيا اينها به هم شبيه اند ؟ 
مطمئناً خير . پس معلوم است كه داده انواعي دارد . 


داده ها در وحله اول دو نوع هستند ، يا ثابت اند و يا متغير . 


داده ثابت : داده اي است كه ثابت مي ماند يعني مقدار آن در تمام مدت اجراي برنامه تغيير نمي كند . 
داده متغير : داده اي است كه تغيير مي كند يعني در طول اجراي برنامه مِــي تواند مقادير متفاوتي داشته باشد .

نكته : هر داده ي متغير داراي نامي است كه آن را از داده هاي ديگر متمايز  مي سازد . به عبارت ديگر مي توان گفت كه نام متغير ، نام محلي از حافظه است كه در آن مي توان مقادير مختلف را نگه داري كرد  - در این باره در ادامه بیشتر صحبت خواهیم کرد-


مثال 3. در سؤال "محاسبه ميانگين 10 و 20 "داده متغير كدام است ؟ 

داده متغير به كد برنامه بر مي گردد و از نكته در مي يابيم كه : هر داده اي كه ممكن است در طول برنامه بخواهيم مقدار آن را تغيير دهيم ، براي آن مقادير، محلي از حافظه را اشغال و براي آن نامي انتخاب مي كنيم ، كه هر وقت بخواهيم بتوانيم با نامِ آن، به محتويات آن دسترسي داشته باشيم و يا محتويات را تغيير دهيم . 


خوب اما در اين سؤال : اگر سؤال مي گفت" ميانگين دو عدد را حساب كنيد." درآن  موقع، در هر لحظه، هر كاربري دو عدد دلخواه وارد مي كند پس متفاوت مي شود ولي پردازش هماني است كه در سؤال قبل انجام ميشد پس اينجا از متغير استفاده مي كنيم تا مشكل برطرف شود .(مشكل اين جا بود كه اگر داده ثابت تعريف مي شد كاربر نمي توانست دو عدد دلخواه وارد برنامه كند.)
پس پاسخ مثال 3  اين است كه : داده متغير نداريم 10 و 20 داده هاي ثابت اند . 


تذكر : اشتباه نشه . داده متغير در واقع اسم متغير است يعني : كاربر از روي صفحه ي كيبورد 10 را به برنامه مي دهد
برنامه ، 10 را وارد محيط اجرا مي كند، 10 سردرگم نمي ماند به محض گرفتن، برنامه آنرا در متغيري مثلاً به نام مي اندازد. پس : A  داده متغير است نه 10. در حال حاضر 10 است دفعه بعد كاربر به دلخواه 40 را وارد مي كند باز 40 درمي افتد بدون هيچ مشكلي . 

اما همانطور كه در مثال 1و 2 ديديم ، هردو داده، ثابت بودند اما با نوع متفاوت . 
اسم اين متفاوت بودن موجب مي شود كه داده ثابت خودش هم تقسيم شود : 
1. داده ثابت عددي : ثابت است و عدد.
2. داده ثابت رشته اي : ثابت است و رشته اي .


منظور از رشته اي چيست ؟
هر وقت يك يا چند كاراكتر با هم تركيب شوند[ كه معمولاً در برنامه هاي مختلف با گذاشتن /دبل كوتيشن / يعني :  "" آنرا معلوم مي كنند] رشته تشكيل مي شود .


منظور از كاراكتر چيست ؟
 كاراكتر به هرنوع حرف ، رقم ، علامت نشانه گذاري و ... مي گويند . مثل : ! @ # % بو ... 
مثلاً : ايران مجموع چند كاراكتر است و مثلا داده ای رشته ای است ، پس آنرا به اين نحو نمايش مي دهيم "ايران".

اما داده متغير هم 2 نوع دارد :

يك حالت ميشه داده ي متغير  ما، عدد باشه و حالت ديگر ممكن است داده ي ما اسم و ... باشه. 
حالت 1:  داده متغير عددي.
حالت 2 : داده متغير رشته اي .

 

این بخش را با یک سوال به خاتمه می رسانم که مشخص می کند چقدر مفاهیم بالا را یاد گرفته اید .


اين جمله چه مفهومي را بيان مي كند ؟

"ما داده های مختلفی داريم : چون ممكن است يكبار سؤال طوري باشد كه داده از طريق برنامه به محيط اجرا ، وارد شود و يكبار ممكن است داده از طريق كاربر به برنامه و محيط اجر وارد شود ."

موفق باشید.


 <جلسه قبل ــ جلسه بعد>


برچسب‌ها:

تاريخ : 19 مهر 1394برچسب:, | 3:25 بعد از ظهر | نويسنده : احسان صمدی فرد |


ادامه بخش اول ( قسمت پایانی )

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

حال در این جلسه مطالب تکمیلی آنرا با هم ادامه می دهیم.

 

استفاده از Trace

نکته ای که باید حین الگوریتم نویسی بدان توجه داشته باشیم این است که :

بهتر است همزمان با نوشتن الگوريتم آنرا Trace  كنيم تا در جريان الگوريتم باشيم و اگر الگوريتم ما مشكلي داشت 

قبل از اجرا با كامپيوتر آنرا رفع كنيم و همچنين با Trace  مي توان مراحل بعدي الگوريتم را حدس زد و در صورت درستي به  حل مساله اضافه کرد

اما Trace  چیست ؟   Traceيعني آزمودن دستي همراه با داده ی نمونه 

برای Trace برنامه جدولی میکشیم ، متغیرها و خروجی یا خروجی های برنامه را در سطر اول می چینیم ، و در سطر های بعدی مقادیر آنها را می گذاریم.

مرحله به مرحله جلو میرویم و همینطور مقادیر آنها را با توجه به روند برنامه میگذاریم. تا اینکه به خروجی برسیم .

خروجی بدست آمده را با خروجی مورد انتظار خود مقایسه می کنیم. اگر درست بود که یعنی ، الگوریتم درست است و اگر نبود الگوریتم را اصلاح میکنیم تا به جواب برسیم.

مثال قبل را با هم Trace  می کنیم ببینیم که آیا خروجی مدنظر ما را می دهد یا نه. 

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

سوالهایی که در اینجا مطرح است ، این است که :

چرا در فلوچارت متغیرهای A,B را نداشتیم و در اینجا داریم ؟

و چرا مقدار c در مرحله ی اول صفر است ؟ 

اینها به نکات متغیرها باز می گردد که در جلسه ای جداگانه به آنها می پردازیم. در اینجا فقط روش Trace  را یاد بگیرید.

چگونگي نوشتن يك پروژه به زبان خاص 

مراحل 5 گانه حل پروژه

1.حل مساله (همان مراحل 5 گانه حل مساله) (روی کاغذ) – بدست آمدن الگوریتم یا راه حل مساله

2.تبدیل الگوریتم به کد زبان مورد نظر (روی کاغذ) – بدست آمدن کد برنامه

وقتی بخش دوم را یاد گرفتیم به سادگی می توانیم هر الگوریتمی را به هر زبانی که می خواهیم تبدیل کنیم.

3.انتقال کد به کامپیوتر

 -نامي متناسب با برنامه در نظر گرفته و ذخيره اوليه را انجام مي دهيم . 

-در موقع افزودن كد بعد از هر چند خط عمليات ذخيره سازي را بروز مي كنيم كه به آن مي گوييم : ذخيره سازي مكرر 

و بعد از اتمام كار و رفع اشكالات و ... ذخيره سازي نهايي را انجام مي دهيم .

4. آزمايش برنامه و رفع اشكال 

بعد از اينكه برنامه ي كد شده وارد كامپيوتر شد ، زمان آن مي رسد كه برنامه را مورد آزمايش قرار دهيم ( از طريق كامپيوتر (وقتی برنامه را اجرا می کنیم ، قبل اجرا برنامه کامپایل می شود تا خطاهای آن را نشان دهد جهت اشکال زدایی.

هدف از آزمايش برنامه اشكال زدايي است .

5. تعميم و نگه داری 

درصد زيادي از هزينه هاي خرج شده براي يك برنامه كاربردي مربوط به نگه داري و ارتقاي آن است . 

هدف از نگه داريتصحيح و توسعه ، ارتقاء و بهبود برنامه بعد از نصب آن است .

                    

نکات مهم :

نکات مرحله 1 و 2 :

دلیل اینکه گفته میشود مراحل 1 و 2 را روی کاغذ بنویسیم این است که : حتما حین الگوریتم نویسی و کد نویسی Trace کنیم تا منطق برنامه درست باشد بعد از اینکه اطمینان پیدا کردیم منطق برنامه درست است ، کد را منتقل به کامپیوتر کنیم.

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

حالا سوال اینجاست که چرا هم در مرحله ی الگوریتم نویسی و هم در مرحله ی کد نویسی Trace  کنیم ؟

چون ممکن است در الگوریتم نویسی برنامه جواب دهد ولی در کد نویسی نه! ممکن است تبدیل الگوریتم به کد را به درستی انجام نداده باشیم و جواب نهایی دچار اشکال شود. پس بهتر است در این مرحله هم Trace  کنیم.

نکات مرحله 4 :

لازم به ذکر است که

 معمولا اشتباهاتی که حین برنامه نویسی در  مرحله 4 رخ می دهد 2 دسته اند :

1. دستوري (Syntax Errors )  : يعني عدم رعايت قواعد زبان برنامه نويسي يا همان اشكال در کدنویسی.

مثلا به جاي نوشتن if  مي نويسيم iff  كه مطمئنا برنامه اين اشتباه را به ما گوشزد مي كند .که مشکلی نداره راحت برطرف می کنیم.

2. منطقي (Semantic Errors ) : يعني قواعد زبان رعايت شده اما منطق درست نيست . كه يافتن اين مشكلات بسيار سخت و اصولي است که برای بروز چنین مشکلاتی گفته شد Trace  کنیم.

مثلا در فارسي ، جمله اي مثل " من ديروز به زمين خوردند . " از هر لحاظ درست است فاعل ، فعل و ...  سر جاشونن اما با دقت متوجه مي شويم كه صرف فعل مشكل دارد و اين نشان از بد فهمي مطلب دارد و نياز به يادگيري دوباره دارد ، در برنامه نويسي هم همين طور است

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

نکات مرحله 5 :

مرحله ی نگهداری مرحله ی بسیار مهمی است چرا که :

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

نکته ی مهم دیگری که باید به آن اشاره کنم این است که :

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

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

پس بهتر است حتما در حین برنامه نویسی مستندسازی داشته باشیم یعنی برنامه چطور نوشته شده ، متغیرها کدام ها هستند ، بر روی چه سیستمی کار می کند و ... در کنار کدها هم توضیحات لازم را بنویسیم تا بتوانیم به خوبی این مرحله را هم بگذرانیم.

خب بخش اول به پایان رسید. ان شاءالله در جلسه ی  آینده الفبای برنامه نویسی را با هم یاد می گیریم.

موفق باشید.


 <جلسه قبل ــ جلسه بعد>



برچسب‌ها:

تاريخ : 19 مهر 1394برچسب:, | 3:25 بعد از ظهر | نويسنده : احسان صمدی فرد |

صفحه قبل 1 2 3 4 5 ... 11 صفحه بعد

لطفا از ديگر مطالب نيز ديدن فرماييد
.: Weblog Themes By SlideTheme :.
?

  • ميني ويکي نت