مفاهیم برنامه نویسی

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

در اینجا چند مفهوم پایه‌ای وجود دارد که می‌توانند در شروع به شما کمک کنند:

متغیرها / Variables:

age30Variable Name → Value= assignage30Stored in memoryif age> 18?Use later

یک متغیر در برنامه نویسی شبیه به جعبه ای در دنیای واقعی کار می کند که می توانید چیزی را در آن قرار دهید. در این حالت، شما اشیاء فیزیکی را در آن قرار نمی دهید، بلکه اطلاعات یا داده ها را در آن قرار می دهید. در برنامه نویسی به فرآیند «قرار دادن چیزی» می گویند.

برای اینکه بتوانید به این کادر (متغیر) ارجاع دهید، نامی به آن می دهید. این نام به شما کمک می کند بعدا به راحتی به اطلاعات ذخیره شده در آن دسترسی داشته باشید. به عنوان مثال، اگر متغیری به نام سن دارید، مانند این است که یک جعبه با برچسب "سن" دارید که می توانید سن یک فرد را در آن ذخیره کنید.

مثال:

تصور کنید می خواهید سن یک فرد را در برنامه خود ذخیره کنید. ابتدا یک متغیر ایجاد می‌کنید و نامی برای آن می‌گذارید که آنچه را که ذخیره می‌کند، به عنوان مثال سن، توصیف می‌کند. سپس به این متغیر یک مقدار اختصاص می‌دهید، مثلاً 30. در بسیاری از زبان‌های برنامه‌نویسی به این صورت است:

age = 30;

در این مثال:

  • age نام متغیر است مانند برچسب روی جعبه ما.
  • = عملگر (Operator) انتساب است که برای تخصیص یک مقدار به متغیر استفاده می شود مانند قرار دادن یک آیتم در کادر.
  • 30 مقداری (Value) است که به متغیر اختصاص می دهیم مانند موردی که در کادر قرار داده ایم.

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

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

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

انواع داده / Data:

این‌ها انواع مختلفی از اطلاعاتی هستند که می‌توانید در متغیرها ذخیره کنید، مثل اعداد، متن (همچنین شناخته شده به عنوان رشته‌ها) یا مقادیر بولی (درست/غلط). البته، بیایید نگاهی دقیق‌تر به انواع مختلف داده‌های موجود در بیشتر زبان‌های برنامه‌نویسی بیندازیم و نمونه‌ای از هر کدام را ذکر کنیم:

  • اعداد صحیح (Integer, Int)
    اعداد صحیح اعداد بدون اعشار هستند. آنها می توانند مثبت یا منفی باشند.
    – مثال: 42, -7
  • اعداد ممیز شناور (Float)
    اعداد ممیز شناور یا به سادگی شناور اعدادی هستند که اعشار دارند. آنها برای مقادیر دقیق تر استفاده می شوند.
    – مثال: 3.14, -0.001
  • رشته های کاراکتر (Strings)
    رشته ها دنباله ای از کاراکترها هستند که متن را نشان می دهند. آنها در گیومه قرار می گیرند.
    – مثال: "سلام جهان", "1234"
  • ارزشهای حقیقت (بولیان Boolean)
    بولی ها مقادیر حقیقت را نشان می دهند و فقط می توانند دو مقدار بگیرند: true یا false.
    – مثال: true, false
  • فهرست Arrays
    لیست ها مجموعه های مرتب شده ای از عناصر هستند که میتوانند انواع مختلفی از داده ها را در بر گیرند. آنها قابل تغییر هستند، یعنی محتوای آنها قابل تغییر است.
    – مثال: [1, 2, 3], ["سیب", "موز", "گیلاس"]
  • تاپل ها (Tuple)
    تاپل ها شبیه به لیست ها هستند، اما تغییر ناپذیر. پس از ایجاد، عناصر در یک تاپل قابل تغییر نیستند.
    – مثال: (1, "سلام", true)
  • فرهنگ لغت (Dictionaries)
    دیکشنری ها جفت کلیدها و مقادیر را ذخیره می کنند. هر کلید به یک مقدار اشاره می کند و کلیدها منحصر به فرد هستند.
    – مثال: {"name": "Emma", "age": 30}
  • تعداد (مجموعه Set)
    مجموعه ها مجموعه ای از عناصر منحصر به فرد بدون ترتیب خاصی هستند. آنها برای جلوگیری از تکراری و انجام تست های عضویت سریع مفید هستند.
    – مثال: {1, 2, 3, 4}

هر یک از این نوع داده ها حوزه های کاربردی و ویژگی های خاص خود را دارند. هنگام برنامه نویسی، انتخاب نوع داده مناسب برای اطلاعات ذخیره شده به منظور نوشتن کد کارآمد و خوانا مهم است.

3. عملگرها (Operators):

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

  • حسابگری: +, -, *, / برای محاسبات.
  • مقایسه: ==, !=, >, < برای مقایسه مقادیر.
  • منطقی: and, or, not برای ترکیب شرایط.

4. شرط‌ها / Conditional Statements (If-Else):

if (condition)condition?truefalseif blockexecute codeelse blockskip or else

شرایط یک عنصر کلیدی در برنامه‌نویسی هستند، زیرا به برنامه اجازه می‌دهند تا بسته به اینکه معیارهای خاصی برآورده شده باشند یا نه، رفتارهای متفاوتی داشته باشد. دستورالعمل "if" اساسی‌ترین ابزار برای کنترل جریان برنامه بر اساس شرایط است. بیایید این مفهوم را با چند جزئیات و مثال بررسی کنیم:

ساختار پایه دستورالعمل "if"

نحو پایه ای یک دستورالعمل "if" در اکثر زبان های برنامه نویسی مشابه است و از این اصل پیروی می کند:

شرط ارزیابی می شود و اگر true باشد، دستورات داخل بلاک اجرا می شوند. اگر شرط false باشد، بلاک نادیده گرفته می شود.

دستورالعمل های "if" پیشرفته

برای تصمیم گیری های پیچیده تر، می توان "if" را با "else" و "else if" گسترش داد که چندین شرط و اقدامات مربوطه را امکان پذیر می کند:

مثال

فرض کنید می خواهیم برنامه ای بنویسیم که بر اساس دما، نوع لباس مناسب را انتخاب می کند:

در این مثال، برنامه ابتدا بررسی می کند که آیا دما بالاتر از 25 درجه است یا خیر. در صورت مثبت بودن، پوشیدن تی شرت را توصیه می کند. اگر دما بین 15 تا 25 درجه باشد، پوشیدن پیراهن را توصیه می کند. برای دمای 15 درجه و پایین تر، پوشیدن ژاکت توصیه می شود.

عملگرهای منطقی

برای بیان شرایط پیچیده تر، می توانید از عملگرهای منطقی مانند && (و)، || (یا) و ! (نه) برای ترکیب چندین شرط استفاده کنید:

در اینجا، برنامه می گوید که اگر هوا گرم (بالای 20 درجه) و آفتابی باشد، روز perfectی برای ساحل است.

استفاده از شرایط با دستورات "if"، "else if" و "else" به شما امکان می دهد برنامه هایی بنویسید که به طور هوشمندانه به موقعیت های مختلف پاسخ می دهند. درک و استفاده ماهرانه از این مفاهیم گامی اساسی در جهت توسعه برنامه های موثر و مفید است.

5. حلقه‌ها / Loops:

Startcondition?false → exittrueLoop Bodyexecute coderepeat

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

1. حلقه‌های For

یک حلقه For زمانی استفاده می‌شود که دقیقاً می‌دانید چند بار باید یک بلوک از دستورات اجرا شود. این حلقه برای پیمایش در لیست‌ها (آرایه‌ها) یا سایر مجموعه‌ها بسیار مفید است.

مثال عملی:

فرض کنید می‌خواهید اعداد 1 تا 5 را روی صفحه نمایش دهید:

for (int i = 1; i <= 5; i++) {
   print(i);
}

در این مثال، متغیر i از 1 شروع می‌شود و تا زمانی که i کوچکتر یا مساوی 5 باشد، حلقه اجرا می‌شود. بعد از هر بار اجرا، i به اندازه 1 افزایش می‌یابد.

2. حلقه‌های While

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

مثال عملی:

فرض کنید یک شمارنده دارید که تا زمانی که یک عدد تصادفی بزرگتر از 0.8 باشد، افزایش می‌یابد:

while (random() > 0.8) {
   counter++;
}

در این مثال، یک عدد تصادفی تولید می‌شود و با 0.8 مقایسه می‌شود. تا زمانی که این عدد کوچکتر یا مساوی 0.8 باشد، حلقه ادامه می‌یابد.

3. حلقه‌های Do-While

حلقه Do-While شبیه به حلقه While است، با این تفاوت که دستورات حداقل یک بار قبل از بررسی شرط اجرا می‌شوند.

مثال عملی:

فرض کنید می‌خواهید یک پیام را حداقل یک بار نمایش دهید و سپس تا زمانی که کاربر می‌خواهد، آن را نمایش دهید:

do {
   print("Continue? (y/n)");
} while (input == "y");

حلقه‌ها ابزاری قدرتمند در برنامه‌نویسی برای جلوگیری از تکرار کد و کنترل اجرای دستورات بر اساس شرایط هستند. انتخاب بین حلقه‌های For، While و Do-While به موقعیت خاص و نوع شرطی که تکرار باید تحت آن انجام شود بستگی دارد.

6. توابع / Functions:

InputparametersFunctionaddiere(a, b)return a + bOutputreturn value

یک تابع (Function) مجموعه‌ای از انجام دستورالعمل‌ها است که برای دادن یک کار خاص جمع‌آوری شده‌اند. می‌توان یک تابع را مثل یک برنامه کوچک درون برنامه‌ای خود تصور کرد. اگر بخواهید یک کار را چند بار انجام دهید، می‌توانید یک تابع بنویس و هر زمانی که نیاز دارید، آن را فراخوانی کنید.

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

تعریف تابع

تعریف یک تابع معمولاً شامل یک نام، لیست پارامترها و بلوکی از دستورات است که منطق واقعی تابع را شامل می‌شود.

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

فراخوانی تابع

پس از تعریف یک تابع، می‌توان آن را با ذکر نام آن و ارسال مقادیر پارامترهای مورد نیاز فراخوانی کرد.

مثال:

function addiere(a, b) {
   return a + b;
}

result = addiere(5, 3);
print(result); // Output: 8

در این مثال، یک تابع ساده addiere تعریف می‌شود که دو عدد را به عنوان پارامتر می‌گیرد و مجموع آنها را برمی‌گرداند. سپس تابع با مقادیر 5 و 3 فراخوانی می‌شود و نتیجه چاپ می‌شود.

پارامترها و آرگومان‌ها

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

مزایای توابع

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

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

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

  1. رسیدگی به استثناء / Exception Handling — مدیریت خطا برای پاسخ به خطاها یا موقعیت های غیرمنتظره ای که ممکن است در حین اجرای یک برنامه رخ دهد، مهم است. با استفاده از بلوک های try-catch، می توانید برنامه خود را قوی تر و پایدارتر کنید.
  2. برنامه نویسی شی گرا / OOP — برنامه نویسی شی گرا الگوی مبتنی بر مفاهیمی مانند کلاس ها، اشیا، وراثت، چندشکلی و کپسوله سازی است. OOP به سازماندهی کد به شیوه ای ساختاریافته و مدولار کمک می کند.
  3. ساختارهای داده / Data Structures — علاوه بر انواع داده های اساسی، درک ساختارهای داده پیچیده تر مانند پشته ها، صف ها، لیست های پیوندی، درختان و نمودارها برای ذخیره سازی، مدیریت و پردازش کارآمد داده ها مهم است.
  4. الگوریتم / Algorithms — مطالعه الگوریتم‌ها، از جمله الگوریتم‌های مرتب‌سازی و جستجو، برای بهبود استراتژی‌های حل مسئله و کارایی کد شما بسیار مهم است.
  5. پایگاه های اطلاعاتی / Databases — درک پایگاه های داده و SQL برای ذخیره، پرس و جو و مدیریت موثر داده ها ضروری است.
  6. نسخه و گیت / Versioning and Git — نسخه کد، به ویژه استفاده از Git، در توسعه نرم افزار مدرن ضروری است.
  7. تست / Testing — تست کد شما، از جمله تست های واحد، تست های یکپارچه سازی، و تست های سیستم، برای اطمینان از صحت، قابلیت اطمینان و کیفیت برنامه های شما حیاتی است.
  8. اصول توسعه نرم افزار / Software Development Principles — درک اصول اولیه توسعه نرم افزار مانند DRY، KISS، و YAGNI می تواند به شما در برنامه نویسی موثرتر و نوشتن کد بهتر کمک کند.

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

🎯 آنچه در این فصل یاد می‌گیرید:

  • متغیرها: جعبه‌های نام‌گذاری شده برای ذخیره داده‌ها (age = 30)
  • انواع داده: Integer, Float, String, Boolean, Array, Tuple, Dict, Set
  • عملگرها: حسابی (+, -, *, /)، مقایسه‌ای (==, !=, >, <)، منطقی (and, or, not)
  • شرط‌ها: if / else if / else برای کنترل جریان برنامه
  • حلقه‌ها: For (شمارش)، While (شرط)، Do-While (حداقل یک‌بار)
  • توابع: نام + پارامترها + دستورات + return → استفاده مجدد

آزمون / Quiz

سوال ۱: یک متغیر در برنامه‌نویسی چه کاربردی دارد؟+
کد را اجرا می‌کند
✅ داده‌ها را با یک نام ذخیره می‌کند تا بعداً قابل دسترسی باشد
متغیر مثل یک جعبه با برچسب است که مقداری در آن قرار می‌گیرد.
خطاها را برطرف می‌کند
سوال ۲: کدام نوع داده برای اعداد اعشاری استفاده می‌شود؟+
Integer
✅ Float
Float برای اعداد با اعشار استفاده می‌شود (مثلاً 3.14).
Boolean
سوال ۳: حلقه For چه زمانی استفاده می‌شود؟+
✅ وقتی دقیقاً می‌دانید چند بار باید تکرار شود
حلقه For برای پیمایش لیست‌ها و شمارش مشخص استفاده می‌شود.
وقتی تعداد تکرار نامعلوم است
فقط یک بار اجرا می‌شود
سوال ۴: تفاوت پارامتر و آرگومان چیست؟+
هیچ تفاوتی ندارند
✅ پارامترها در تعریف تابع مشخص می‌شوند، آرگومان‌ها مقادیر واقعی هنگام فراخوانی هستند
پارامتر = متغیر در تعریف، آرگومان = مقدار ارسالی.
آرگومان‌ها فقط در توابع بازگشتی استفاده می‌شوند
سوال ۵: دستور if چه کاری انجام می‌دهد؟+
یک حلقه ایجاد می‌کند
یک متغیر تعریف می‌کند
✅ یک شرط را بررسی می‌کند و فقط اگر true باشد کد را اجرا می‌کند
if شرط را ارزیابی می‌کند و جریان برنامه را کنترل می‌کند.