قبل از شروع قسمت سوم، این نکته را که باید در قسمت دوم ذکر میکردم ، اینجا عنوان میکنم: برای اجرای برنامه خود باید از کلید F5 استفاده کنید.
مفاهیم حافظه و متغیر
متغیر: محلی در حافظه کامپیوتر است، که ما انواع دادهها را درون آن میریزیم؛ برای فهم بهتر متغیر را به عنوان یک ظرف فرض کنید که درون آن میتواند انواع مواد غذایی وجود داشته باشد.
حافظه: محلی است در کامپیوتر شما که تمام اطلاعات، درون آن ذخیره میشود؛ در این مورد نیز حافظه را همانند یک یخچال فرض کنید که درون آن میتواند هر نوع مواد غذایی و غیر خوراکی با هر نوع بسته بندی و ظرفی وجود داشته باشد.
در این جا یک نکته را یادآوری میکنم که شاید نام بعضی از مفاهیم برنامه نویسی مانند متغیر، تابع و… این ذهنیت را در خوانندگان ایجاد کند که برای برنامه نویسی نیاز به دانش ریاضیات دارند، در پاسخ این توضیح را میدهم که برای برنامه نویسی نیازی به دانش خاصی از ریاضیات ندارید ولی باید سعی در درک منطقی و ریاضی وار داشته باشید و در کل علت اینکه این نامها را به کار میبرند، این است که کارهایی که ما در برنامه نویسی و با استفاده از همین مفاهیم انجام میدهیم در اصل همان اعمال ریاضی است که ما روی کاغذ انجام میدهیم؛ این توضیح را برای این موضوع دادم که باید سعی کنید در نوشتن برنامهها تمام کارها را پیش بینی کرده و آن ها را در برنامه بگنجانیم.
خب با استفاده از مفاهیمی که توضیح دادم، به تشریح کد زیر میپردازیم که شامل توضیحهای بالا است:
در اصل این برنامه کد الگوریتمی است که در قسمت اول به توضیح آن پرداختم، البته در آن قسمت نیز ذکر کردم که الگوریتم ما استاندارد نبود و جزئیات در آن رعایت نشده بود، که قصد دارم الان الگوریتم صحیح آن را بنویسم:
شروع کن.
عدد اول را از کاربر بگیر و در number1 بریز.
عدد دوم را از کاربر بگیر و در number2 بریز.
عدد اول را با عدد دوم جمع کن و در sum بریز.
sum را به کاربر نمایش بده.
از توضیح درباره خطوط 1 تا 4 پرهیز میکنم، چون در قسمت قبل درباره آنها توضیح دادهام.
خطوط 8 تا 10، معرفی متغیر ها را نمایش میدهند، که به این صورت متغیرها معرفی میشوند:
مقدار متغیر = نام متغیر نوع متغیر
ما برای اینکه بتوانیم محاسبات خود را در برنامه بنویسیم، نیاز داریم تا آنها را در جایی انجام دهیم (همانند اینکه ما برای انجام محاسبات ریاضی به کاغذ نیاز داریم)، این جای مورد نیاز ما متغیر نام دارد، که دارای نام، نوع داده و یک مقدار است. (البته قواعدی در نامگذاری متغیرها وجود دارد که در نکات تکمیلی به آن میپردازم)
پس با توجه به توضیح بالا ما برای جمع دو عدد، به زبان ساده به سه ظرف نیاز داریم، یکی برای ذخیرهی عدد اول، یکی برای ذخیرهی عدد دوم و دیگری برای ذخیرهی حاصل جمع دو عدد، که معرفی آنها در خطوط 8 تا 10 نوشته شده است.
مقدار 0 برای مقدار متغیرها، به این علت نوشته میشود تا متغیر ما دارای مقداری معلوم و بی تاثیر باشد و از به وجود آمدن خطاهای منطقی (در نکات تکمیلی در این باره توضیح میدهم) جلوگیری شود، زیرا در غیر این صورت خود کامپیوتر مقداری را برای آن در نظر میگیرد که ممکن است در برنامه دچار مشکل شویم، به همین دلیل سعی کنید همیشه برای متغیرها مقداری در نظر بگیرید.
درباره نوع متغیرها در قسمت بعد توضیح میدهم، زیرا خود بخشی است جداگانه که باید شرح داده شود.
خط 12، به کاربر اعلام میکند که عدد اول را وارد کند. (باید در برنامه نویسی سعی کنیم تا کاربران در کار کردن با برنامه دچار ابهام نشوند، به همین دلیل باید کوچکترین کارها را نیز در برنامه بنویسیم.)
خط 13، در این خط ابتدا درباره دستور <<cin توضیح میدهم؛ این دستور بر خلاف دستور cout که پیغامی را برای ما نمایش میداد، هر چیزی را که کاربر با استفاده از صفحهکلید در برنامه وارد کند را گرفته و در متغیر مورد نظر ما ذخیره میکند.
در خط 13، پس از نمایش داده شدن پیغام please enter the first number هر عددی را که کاربر وارد کند و کلید Enter را بزند آن عدد در متغیر number1 ذخیره میشود و مقدار قبلی این متغیر که مقدار صفر بود از بین میرود و مقدار جدید جایگزین آن میشود. (به عبارت دیگر وقتی ما دستور خط 13 را مینویسیم، عدد مستقیما وارد ظرف number1 میشود)
خط 15، نیز همانند خط 12، پیغام گرفتن عدد دوم را اعلام میکند.
خط 16، نیز همانند خط 13، عدد دوم را از کاربر گرفته و در متغیر number2 میریزد.
خط 18، کار جمع دو عدد را نمایش میدهد؛ میتوان این خط را به این صورت خواند: عدد اول را با عدد دوم جمع میکند و در متغیر سوم میریزد.
یعنی محتویات ظرف اول و دوم را درون ظرف سوم میریزد و آن ها را با هم جمع میکند.
اگر دقت کنید، میبینید که در اینجا علامت = (مساوی) کاری که ما در محاسبات خود انجام میدهیم را انجام نمیدهد و در اصل این علامت، علامت جایگزینی نام دارد، یعنی تمام مقادیر سمت راست این علامت درون متغیر سمت چپ این علامت ریخته میشود. (یا به عبارت دیگر جایگزین میشود)
خط 20، با نمایش پیغام اینکه، “حاصل جمع این دو عدد برابر است با مقدار متغیر sum” نوشته شده است، همان طور که میبینید، میتوانید برای نمایش مقدار یک متغیر در خروجی برنامه، از علامت >> که در ادامهی دستور چاپ پیغام مورد نظر خود قرار دارد، استفاده کنید و نام متغیر را بنویسید، در این صورت مقدار متغیر پس از پیغام چاپ میشود.
دستور endl مکان نما را به خط بعد میبرد، که به تمیزی و استانداردسازی برنامه کمک میکند، همچنین میبینید که این دستور نیز همانند یک متغیر با علامت >> قبل از خودش همراه میشود، زیرا در اصل متنی است که پس از پیغام نوشته میشود! البته متنی نامرئی!
نکات تکمیلی
1- در نامگذاری متغیرها، قانونهایی وجود دارند که عبارتند از:
1. باید با کاراکتر شروع شود.
2. نباید از واژههای کلیدی در آن استفاده شود.
3. نباید در آنها از علائم (همانند : . ، ؛ – + = , ” ) استفاده شود و تنها علامت قابل قبول _ (underline) است. از نامهای صحیح میتوان این نمونهها را نام برد: under_a, a, m98
2- در این نکته درباره انواع خطاها توضیح میدهم، ما در برنامه نویسی دو نوع خطا داریم:
1. خطاهای دستوری (syntax error)
2. خطاهای منطقی (logical error).
در خطاهای دستوری (syntax error)، کد برنامه دارای اشکال است که معمولا خود کامپایلر با پیغامی خطا در زمان کامپایل، آن خطا را به ما تذکر میدهد و تا زمانی که آن خطا را برطرف نکنیم برنامه اجرا نمیشود. (به این خطا، خطای زمان کامپایل نیز میگویند.) به عنوان مثال فرض کنید دستور cout را به صورت coot بنویسید، در این صورت کامپایلر با پیغامی، این خطا را به شما هشدار میدهد. اما در خطای منطقی (logical error)، کد برنامه مشکلی ندارد، ولی الگوریتم برنامه دارای مشکل است، رایجترین خطای منطقی، خطای تقسیم بر صفر است. (زیرا اگر هر عدد بر صفر تقسیم شود، حاصلی مبهم دارد) این نوع خطاها توسط کامپایلر تشخیص داده نمیشود، و حتی ممکن است برنامه اجرا شود، ولی پس از اجرا، برنامه نتایجی به همراه دارد که با پیش بینی ما از برنامه متفاوت خواهد بود و حتی ممکن است در خروجی برنامه مشکل ایجاد کند.
3- در این نکته دربارهی انواع عملگرها توضیح میدهم: عملگرهای موجود در زبان ++C شامل * ، / ، +، – ، % (عملگرهای محاسباتی) == ، > ، < ، => ، =< و =! (عملگرهای مقایسهای) هستند، که کار هر کدام در جدولهای زیر آورده شده است:
- در این نکته دربارهی تقدم عملگرها و اولویت ارزیابی آنها توضیح میدهم، که در جدول زیر آورده شده است:
دو علامت در ++C وجود دارد که شامل ++ و – هستند، که هرکدام یک واحد از متغیر همراه خود کم میکنند و به این صورت نوشته میشوند:
++a که یک واحد به مقدار عددی متغیر a اضافه میکند.
—b که یک واحد از مقدار عددی متغیر b کم میکند.
موضوع قسمت بعد: دستورهای شرطی و کنترلی، انواع دادهها