آموزش کامل برنامه نویسی به زبان C – فصل اول (آشنایی با کامپیوتر) – جلسه دوم

گفتیم برای اینکه برنامه‌نویسی یاد بگیریم باید ابتدا با کامپیوتر آشنا شویم و تا اینجا با برخی از اجزای کامپیوتر آشنا شدیم. در ادامه بیشتر به این موضوع خواهیم پرداخت.نرم افزارمنظور از نرم افزار همان برنامه است که از مجموعه‌ای از دستورالعمل ها تشکیل شده است و توسط آن، با استفاده از ابزار فیزیکی کامپیوتر روی داده ها پردازش مورد نظر صورت می گیرد. سه دسته از نرم افزارهای رایج که لزوما باید با آن ها آشنا بود به شرح زیر می باشد:سیستم های عاملسیستم عامل از مجموعه‌ای از برنامه ها تشکیل شده است که وظیفه آن ها ایجاد تسهیلات در کار کردن با کامپیوتر و دستگاه های جانبی می باشد. به عبارت دیگر کار سیستم عامل مدیریت بر اجرای برنامه ها و ایجاد ارتباط مناسب میان کاربر و کامپیوتر در جهت استفاده بهینه از امکانات سخت افزاری آن می باشد.چند وظیفه مهم سیستم عامل:ایجاد تعادل مناسب بین پردازش دهنده و ورودی – خروجی، که موجب می شود زمان بیکاری پردازش دهنده تقلیل یابد.کاهش زمان رفت و برگشت اطلاعاتاستفاده بهینه از سرعت پردازش و گنجایش حافظهاختصاص وقت پردازنده به امور مختلف بر اساس حق تقدم های تعیین شدهثبت و نگهداری اشکالات برای استفاده مهندسین تعمیرنرم افزارهای کاربردی و خدماتینرم افزار های کاربردی، برنامه هایی هستند که در زمینه خاص مانند امور تجاری، مالی، اداری، علمی و … ارائه شده اند. مانند : ویرایشگر های متنبرنامه های خدماتی برای امور متداول و عمومی به کار می روند و معمولا جهت کمک به کاربران کامپیوتر مستقل از نوع استفاده از سیستم عرضه می شوند. مانند: برنامه کپی کردن محتویات دیسک روی دیسک دیگر و آنتی ویروس ها.کامپایلرها و مفسرها (Compilers/Interpreters)کامپیوتر فقط قادر به فهم ارقام 0 و 1 است. بنابراین دستورات یک سری ارقام 0 و 1 می باشند. برنامه ای که اینگونه نوشته شده باشد، برنامه به زبان ماشین نام دارد. نوشتن برنامه به زبان ماشین مشکل و زمان بر است، ولی دارای سرعت زیاد می باشد. در زبان اسمبلی برای انجام یک دستور از حروف بجای کد مبنای دوی دستور استفاده می شود. آنگاه توسط یک مترجم که اسمبلر نامیده می شود به زبان ماشین تبدیل می گردد. زبان اسمبلی هم دارای سرعت بالاست ضمن آن که از زبان ماشین آسان تر است. اما آن هم زمان بر و مشکل می باشد. این گونه زبان ها را زبان های سطح پایین (low level language) می نامند.برنامه را می توان طوری نوشت که به زبان انگلیسی نزدیک باشد و درک و اصلاح آن برای برنامه نویسان آسان باشد. این گونه زبان ها که یادگیری آن ها آسان تر است را زبان های پیشرفته یا سطح بالا (high level language) می نامند. از جمله زبان های برنامه نویسی پیشرفته می توان فرترن، کوبال، بیسیک، پاسکال، پایتون، C، C++ و Java را نام برد. برنامه ای که به زبان پیشرفته نوشته شده باشد برنامه مبدا (source) نام دارد و باید به زبان ماشین ترجمه شود تا قابل اجرا باشد.-کامپایلر مترجمی است که برنامه منبع را دریافت کرده و خط به خط آن را تا انتها بررسی و ترجمه نموده، چنانچه برنامه دارای خطای نحوی (syntax error) نبود، برنامه ترجمه شده به زبان ماشین را که برنامه مقصد (object) نامیده می شود، بوجود می آورد. اما اگر در ترجمه به خطا برخورد نمود، در انتهای بررسی بجای تولید برنامه مقصد، خطاهای برنامه را اعلام می کند.-در مقابل، مفسر برنامه ای را که به زبان سطح بالا نوشته شده دریافت کرده، آن را خط به خط ترجمه و اجرا می کند. بنابراین تا اجرای یک دستور کامل نشده به ترجمه دستور بعدی نمی پردازد.بنابراین جهت تست برنامه و اشکال زدایی، استفاده از مفسر مناسب تر است. اما پس از اطمینان از صحت اجرای برنامه، چنانچه استفاده مکرر از برنامه مد نظر باشد، ترجمه آن توسط کامپایلر و ایجاد برنامه مقصد، و سپس تولید برنامه اجرایی آن، توصیه می شود.مراحل پیاده سازی یک مساله بصورت برنامه کامپیوتریمراحلی که در پیاده سازی یک مساله به صورت یک برنامه کامپیوتری، باید گام به گام طی نمود، به شرح زیر است:اول: صورت مساله بدرستی مطالعه و کاملا درک شود. بسیار اتفاق افتاده است که برنامه نویس پس از صرف وقت و هزینه زیاد جهت نوشتن برنامه، در انتها متوجه شده است که از صورت مساله در ابتدا استنباط درستی نداشته است. گاهی اوقات بعضی از فرضهای اولیه یا برخی از خواسته های مطرح شده در مساله بدرستی مورد توجه قرار نمی گیرند. این بی توجهی ها موجب میشوند که کل برنامه عملا بلا استفاده شود.دوم: الگوریتم کار پیاده شود. هر دستورالعملی که مراحل مختلف انجام کاری را به زبان دقیق و با جزئیات کافی بیان نماید، به طوری که ترتیب مراحل و شرط خاتمه عملیات در آن کاملا مشخص باشد، الگوریتم نامیده میشود. بجای نوشتن الگوریتم میتوان از فلوچارت یا نمودار جریان کار استفاده نمود.سوم: بر اساس الگوریتم تهیه شده، شبه کد (pseudo code) برنامه به زبان انتخابی نوشته شود. به این ترتیب ساختار کلی برنامه مشخص می گردد.چهارم: برنامه مبدا با کد زبان مربوطه نوشته شود و جهت تست، خطایابی و اشکال زدایی، با داده های فرضی اجرا گردد. هنگام اجرای برنامه در سطوح مختلف ممکن است با خطا برخورد شود. خطاهای برنامه می تواند در کد گذاری باشد، که در آن صورت کامپایلر و یا مفسرخطا را اعلام می کند. ممکن است در مرحله ی پیوند زدن توابع مورد نیاز، یا در حین اجرا به اشکال برخورد کند، که در این صورت خطای مربوطه، توسط کامپیوتر اعلام می شود. ولی چنانچه در منطق برنامه اشتباه صورت گرفته باشد (logical error) معمولا خطایی اعلام نمی شود، فقط نتیجه نادرست می دهد. هر نوع خطا را باید به گونه خاص خود برطرف نموده برنامه اصلاح شده را دوباره تست و اجرا نمود.پنجم: اغلب در زمانی که برنامه نویس اشتباهات برنامه را رفع می کند، از داده های آزمایشی و نمونه استفاده می کند. در نهایت پس از اطمینان از درستی برنامه، باید آن را با داده های واقعی اجرا نمود.ششم: معمولا برنامه ای که یک نفر نوشته است توسط اشخاص دیگر نیز مورد استفاده قرار می گیرد. حتی ممکن است لازم باشد توسط همین افراد تغییراتی در آن داده شود. بنابراین، برنامه نویس باید مدارک مورد نیاز را تهیه نموده و جهت تحویل به این اشخاص، به برنامه ضمیمه نماید. اینگونه مدارک معمولا شامل اطلاعات زیر است:تیتر، مولف و تاریخ اتمام برنامهسیستم کامپیوتر و زبان به کار رفتهخلاصه ای از مسالهاحتیاجات ورودی – خروجیالگوریتم اجرالیست کدهای برنامه (برنامه مبدا)نتیجه اجرای برنامهخصوصیات یک برنامه مطلوبدر نوشتن یک برنامه اولین اصلی که باید رعایت شود، صحت پیاده سازی الگوریتم برنامه می باشد. ولی برنامه به هر زبان برنامه نویسی پیشرفته ای که نوشته شده باشد، برای آن که یک برنامه مطلوب با کیفیت خوب باشد، لازم است علاوه بر درستی اجرا، دارای چند خصوصیت دیگر نیز باشد. خصوصیاتی که بطور کلی یک برنامه مطلوب باید دارا باشد به ترتیب به شرح زیر است:– درستی (integrity): اولین و مهمترین خصوصیتی که در نوشتن یک برنامه باید رعایت شده باشد، درستی و بدون نقص بودن آن است. نه تنها الگوریتم برنامه باید صحیح پیاده شده باشد، بلکه فرمولهای محاسباتی بگونه ای نوشته شده باشد که دقت محاسبات را پایین نیاورده باشد.وضوح (clarity): برنامه باید واضح و خوانا نوشته شده باشد. بگونه ای که یک برنامهن ویس دیگر براحتی بتواند هنگام خواندن آن منطق برنامه را دنبال کند. خود برنامه نویس نیز باید بتواند پس از مدت طولانی که از نوشتن برنامه گذشت، آن را دنبال نماید. اصولا در طراحی زبان C یکی از نکاتی که مورد توجه قرار گرفته است، کمک به ارائه برنامه بصورت واضح و خوانا می باشد.-سادگی (simplicity): چنانچه ساختار برنامه به صورت ساده و مستقیم طراحی شده باشد، نه تنها به وضوح برنامه کمک می کند، بلکه درستی برنامه را نیز بهتر تضمین می نماید. این خصوصیت آنقدر مهم است که گاهی ترجیح داده میشود کارایی برخی محاسبات را قربانی پیاده سازی ساده و مستقیم دستورالعملها نمود.-کارآیی (efficiency): یکی از نکات مهم در برنامه نویسی، توجه به سرعت اجرای برنامه و استفاده مناسب از حافظه میباشد. البته یک برنامه با کارآیی بالا و استفاده بهینه از سرعت و حافظه سیستم برنامه بسیار مطلوبی است، اما نباید در این راستا از وضوح یا سادگی برنامه هزینه کرد. یک برنامه نویس باتجربه به راحتی میتواند در مواقع ضروری در برنامه های پیچیده میان این خصوصیات انتخاب مناسب را برگزیند.– پیمانه ای (modularity): اغلب برنامه های بزرگ را می توان به مجموعه ای از چند زیربرنامه کوچک و مستقل تقسیم نمود. این زیر برنامه ها را ماجول یا پیمانه مینامند. در زبان C اینگونه ماجول ها بصورت توابع نوشته میشوند. استفاده از این روش در برنامه نویسی به وضوح و صحت برنامه کمک می کند. علاوه براین چنانچه در آینده تغییراتی در برنامه مد نظر بود، به راحتی قابل پیاده سازی خواهد بود.عموميت (generality): برنامه خوب باید تا حد ممکن کلی باشد. مثلا پارامترهای اصلی بجای آن که مقدار ثابت اختیار کنند، خوانده شوند. به این ترتیب برنامه نوشته شده به ازای مقادیر مختلف قابل اجرا می شود و محدود به مقادیر خاص نخواهد بود.دوستان در این دو جلسه به آشنایی با کامپیوتر و مقدمات پرداختیم و از جلسات دیگر برنامه نویسی با زبان C رو شروع می کنیم.پایان جلسه دوم!توجه: مطالب این دو جلسه به دلیل حفظی بودن به صورت خلاصه از فصل اول کتاب دکتر علی آبادی آورده شده اند. در صورتی که تمایل دارید بیشتر بدانید توصیه می کنیم فصل اول این کتاب رو مطالعه کنید. همچنین اگر دانشجوی دانشگاه صنعتی امیرکبیر هستید، برای آمادگی امتحان حتما باید این فصل کتاب رو به طور کامل یادگرفته باشید.کپی رایتینگ : تمامی حقوق این دوره آموزشی برای پرودرس محفوظ است و هرگونه کپی برداری ممنوع است.توجه : در این دوره آموزشی سوالات خودتون رو می تونید از طریق کامنت بپرسید و ما در اسرع وقت پاسخگو خواهیم بود. (در صفحه این مطلب در وب سایت پرودرس)