پنجره ای به جهان فناوری اطلاعات
 
             
   

راهنما

 

اینجا هستید :

مطالب سایت

برنامه نویسی

مرتبط با "برنامه نویسی" :

»Visual Basic 2008

»ASP.NET

»C# - S Sharp .NET

»VB - Visual Basic 6.0

»ASP

 

 

مطالب مشابه

 

»

کتاب برنامه نویسی الگوریتم و فلوچارت

»

همه چیز درباره Directx

»

7 موضوع آزاردهنده در نرم افزارها

»

قالبهای فایل تصویر

»

قفل های سخت افزاری و نرم افزاری

»

معرفی زبان برنامه نویسی پرل Perl

»

معرفی مجوز GNU GPL یا پروانه جامع همگانی گنو

»

راه اندازی یک سرور DHCP در ویندوز

»

شیوه فشرده سازی فایل ها در ویندوز

»

کامپیوتر چگونه شطرنج بازی می کند؟ - آناتومی یک نرم افزار شطرنج

»

قفل های سخت افزاری و نرم افزاری

»

UML دستاورد بزرگ جنگ متدها

»

XML و ده نکته مهم

»

درباره Outsourcing ساده لوحانه عمل نکنید

»

معماری برنامه های مبتنی بر داده

»

قفل های نرم افزاری چگونه طراحی می شوند؟

 

 

جستجو های مشابه

 

G الگوریتم

G چگونه برنامه نویسی کنیم

G چگونه برنامه نویسی را شروع کنیم

G کج نوشتن در ورد

G برنامه ی نوشتن فاکتوریل در مطلب

G نمونه فاکتور

G معرفی زبان های برنامه نویسی

G چرا زبان های برنامه نویسی را مطالعه می کنیم

G تعریف مساله

G معرفی کتاب کامپیوتر

G زبان

G زبان برنامه نویسی

G تگ های متا

G چگونه دو کامپیوتر را به هم وصل کنیم

G هوش و تفکر

G نمونه فاکتور

 

 

سایر بخش های سایت

 
صفحه اول پنجره ای به جهان فناوری اطلاعات صفحه اول

درباره من درباره من

About me About me

تماس با من تماس

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

جستجوی پیشرفته در سایت جستجوی پیشرفته

فید خوان آر اس اس - RSS Feeds

فیدخوان (RSS)

فید خوان اتم - ATOM Feeds

فیدخوان (ATOM)

 

 

پنجره ای به جهان فناوری اطلاعات

 
صفحه اول پنجره ای به جهان فناوری اطلاعات صفحه اول

طراحی وب سایت

تازه های رایانه و تکنولوژی

برنامه نویسی

پایگاه داده ها و بانک های اطلاعاتی

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

امنیت

نکته ها و ترفند ها

معرفی نرم افزار

سخت افزار

گرافیک کامپیوتری

سیستم عامل

بازی های رایانه ای

کتاب الکترونیک ebook

تجارت، مدیریت و بازاریابی

حسابداری و امور مالی

تحقیق و توسعه

پیوند ها
 

 

 

پیوند های روزانه

   
 

توسعه نرم افزار منظم
ارائه راهکار های اینترنتی
نرم افزار های مالی و اداری

 
 

 
 

دارای مقام مشورتی ویژه از اکوسوک سازمان ملل متحد
اولین موسسه خیریه دریافت کننده مجوز ملی از وزارت کشور
سوئیس SGS دارای گواهی استاندارد جهانی موسسات غیر دولتی از

 
 

 

تبلیغات

   
 

 
 

 

 

پارامترهای مهم در برنامه نویسی

کد مطلب : 103 چاپ - پارامترهای مهم در برنامه نویسی عضویت در خبرنامه سایت تماس با من

 

 

 

پارامترهای مهم در برنامه نویسی

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

 

به این مثال توجه کنید؛ فرض کنید بخواهیم برنامه ای بنویسیم که مقدارn! را حداکثر تا n=7 محاسبه کند و فرض کنید برنامه ی زیر را در پاسخ نوشته ایم:

▪ 10 INPUT N

▪ 20 IF N>7 OR N<0 THEN GOTO 10

▪ 30 FOR I=1 TO N

▪ 40 Factoriel =Factoriel * i

▪ 50 NEXT I

▪ 60 PRINT N, "!= ", Factoriel

▪ 70 END

اگر این برنامه را در محیط برنامه نویسی Basic اجرا کنید با هیچ نوع خطایی مواجه نخواهید شد، ولی هربار و به ازای هر مقدار N فقط پاسخ 0(صفر) را دریافت خواهید نمود! برنامه ظاهرا" درست است ولی یک مشکل کوچک وجود دارد. گرچه حلقه ی نوشته شده در سطر 30 برای محاسبه ی فاکتوریل کاملا" درست است ولی نتیجه ی درست از برنامه به دست نمی آید. علت چیست؟ علت این است که متغیر صحیح Factoriel مقدار دهی اولیه نشده است و Basic هر متغیری را که مقدار دهی اولیه نشده باشد در اولین استفاده از آن، صفر فرض می کند . پس در اولین اجرای سطر 40 ، مقدار Factoriel مساوی صفر است و به همین دلیل حلقه ی فوق در واقع عبارت را محاسبه می کند که به طور قطع 0 (صفر) خواهد بود. البته مثال فوق، مثال بسیار کوچکی است و پیدا کردن علت و رفع نقص برنامه هم بسیار ساده است ولی هر قدر حجم برنامه بیشتر شود، کار عیب یابی و رفع نقص هم بسیار دشوار و طاقت فرسا خواهد بود.

یکی از رایج ترین دلایل بروز این نوع مشکل در برنامه های کامپیوتری، عدم مقدار دهی اولیه ی متغیرهاست و این موضوع زمانی جدی می شود که متغیرهای استفاده شده از نوع اشاره گر (Pointer) باشند که گاهی ممکن است حتی بدون آن که شما متوجه شوید، باعث صدمه زدن به دستگاه کامپیوتر هم بشوند.

متاسفانه این نوع مشکل به گونه ای است که مفسرها و کامپایلرهای زبان های برنامه نویسی هیچگونه اخطار یا گزارشی در خصوص آنها به استفاده کننده نمی دهند و تنها راه برای یافتن این اشکالات، آزمودن نتایج برنامه و اطمینان از صحت آنهاست. اما اگر در یک برنامه با چنین اشکالی مواجه شدید و نتوانستید در بررسی اولیه علت آن را بیابید، به شما توصیه می کنیم با اجرای خط به خط برنامه و کنترل عملیات اجرایی هر سطر، سعی کنید علت مشکل را بیابید. برای این منظور در محیط C ، Basic و Pascal می توانید از کلید F8 برای اجرای سطر به سطر برنامه استفاده کنید. توجه داشته باشید که یکی از پنهان ترین مشکلات در امر برنامه نویسی این است که برنامه نتواند به طور دقیق همان پاسخ مورد نظر را تولید کند. به خصوص زمانی که طول برنامه از حدود 100 خط تجاوز کند، یافتن منشا مشکلات فوق به قدری مشکل خواهد شد که گاهی برنامه نویس را از ادامه ی کار برنامه نویسی دلسرد خواهد کرد . همانگونه که گفته شد این اشکالات به آن دلیل بسیار پنهان هستند که کامپایلرها و مفسرهای زبان های برنامه نویسی هرگز هیچگونه گزارش و هشداری به برنامه نویس نمی دهند، اما با این وجود، نگارش های جدید زبان های برنامه نویسی امکانات خاصی جهت کنترل روند اجرای برنامه در اختیار برنامه نویس قرار می دهند. از جمله این که این برنامه ها به برنامه نویس امکان می دهند در حال اجرای برنامه، محتویات تمام متغیرهای معرفی شده در برنامه را هم در هر لحظه مشاهده کند. پرهیز از این اشکالات فقط با دقت زیاد در زمان برنامه نویسی و آزمایش نتایج حاصل از برنامه ممکن خواهد شد. لیکن توجه به نکات زیر می تواند مفید باشد:

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

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

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

2) الگوریتم

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

1-2) ارایه ی الگوریتم

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

2-2) کوتاه تر بودن مراحل الگوریتم

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

3-2) صحیح بودن الگوریتم

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

4-2) هوشمندانه بودن الگوریتم

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

5-2) عدم پیچیدگی زیاد

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

▪ در اینجا لازم است نکاتی تذکر داده شود:

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

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

ولی کسی که دارای تجربه ی بیشتر است بنویسد

این تفاوت در مورد برنامه های بزرگ بسیار قابل توجه خواهد بود. مثلا" یک برنامه نویس با تجربه الگوریتم سیستم اطلاعاتی دانش آموزان یک کلاس را چنین می نویسد:

0- شروع کن

1) کلیه ی اطلاعات فردی و نمره ای دانش آموزان را بگیر

2) وضعیت تحصیلی هر دانش آموز را چاپ کن

3) پایان

فکر می کنید یک برنامه نویس مبتدی همین الگوریتم را در چند مرحله بنویسد؟!

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

کامپیوتر جوان

 

 

 

 

موضوعات مرتبط با این مطلب :

  برنامه نویسی

 

 

مطالب مشابه (مطالبی که هم گروه این مطلب هستند یا دارای ارتباط موضوعی هستند) :

 
کتاب برنامه نویسی الگوریتم و فلوچارت

همه چیز درباره Directx

7 موضوع آزاردهنده در نرم افزارها

قالبهای فایل تصویر

قفل های سخت افزاری و نرم افزاری

معرفی زبان برنامه نویسی پرل Perl

معرفی مجوز GNU GPL یا پروانه جامع همگانی گنو

راه اندازی یک سرور DHCP در ویندوز

شیوه فشرده سازی فایل ها در ویندوز

کامپیوتر چگونه شطرنج بازی می کند؟ - آناتومی یک نرم افزار شطرنج

قفل های سخت افزاری و نرم افزاری

UML دستاورد بزرگ جنگ متدها

XML و ده نکته مهم

درباره Outsourcing ساده لوحانه عمل نکنید

معماری برنامه های مبتنی بر داده

قفل های نرم افزاری چگونه طراحی می شوند؟