پیادهسازی یک ماشین حساب ساده با قابلیتهای پیشرفته
مقدمه
در این مقاله، به پیادهسازی یک ماشین حساب ساده میپردازیم که عملیات پایهای مانند جمع، تفریق، ضرب و تقسیم را انجام میدهد. همچنین، قابلیتهای پیشرفتهتری مانند محاسبه توان، جذر و درصد نیز به آن اضافه میشود. این پروژه برای دانشجویانی که تازه با مفاهیم برنامهنویسی آشنا شدهاند، مناسب است و به آنها کمک میکند تا با ساختارهای پایهای برنامهنویسی، توابع و الگوریتمها آشنا شوند.
توضیح پروژه
هدف این پروژه، ایجاد یک برنامه ماشین حساب است که بتواند عملیاتهای ریاضی پایه و پیشرفته را انجام دهد. کاربر میتواند دو عدد وارد کند و عملیات مورد نظر خود را انتخاب نماید. برنامه پس از انجام محاسبات، نتیجه را نمایش میدهد.
قابلیتهای پروژه:
انجام عملیاتهای پایه: جمع (
+
)، تفریق (-
)، ضرب (*
) و تقسیم (/
).انجام عملیاتهای پیشرفته: محاسبه توان (
^
)، جذر (√
) و درصد (%
).نمایش خطا در صورت وارد کردن عملیات نامعتبر یا تقسیم بر صفر.
امکان تکرار عملیاتها تا زمانی که کاربر برنامه را ببندد.
ساختارها و ساختمان دادههای مورد نیاز
برای پیادهسازی این پروژه، به ساختارها و مفاهیم زیر نیاز داریم:
متغیرها: برای ذخیرهسازی اعداد و نتایج عملیات.
توابع: برای سازماندهی کد و انجام هر عملیات به صورت جداگانه.
ساختارهای کنترلی: مانند
if-else
وswitch-case
برای بررسی عملیات انتخاب شده توسط کاربر.حلقهها: مانند
while
برای تکرار برنامه تا زمانی که کاربر تصمیم به خروج بگیرد.ورودی و خروجی: برای دریافت اعداد و عملیات از کاربر و نمایش نتیجه.
روش حل مسئله و الگوریتم
شروع برنامه: نمایش منوی عملیات به کاربر.
دریافت ورودی: دریافت دو عدد و عملیات مورد نظر از کاربر.
انجام عملیات: با استفاده از ساختار
if-else
یاswitch-case
، عملیات انتخاب شده را انجام دهید.بررسی خطا: در صورت تقسیم بر صفر یا انتخاب عملیات نامعتبر، خطا نمایش داده شود.
نمایش نتیجه: نتیجه عملیات به کاربر نشان داده شود.
تکرار برنامه: از کاربر بپرسید آیا میخواهد عملیات دیگری انجام دهد یا خیر
پیاده سازی پروژه :
در ادامه به پیاده سازی این پروژه در سه زبان برنامه نویسی پر کاربرد python, java, Cpp خواهیم پرداخت و این پروژه را در هر سه این زبان ها برای شما پیاده سازی خواهیم کرد:
پیاده سازی در python:
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
if y == 0:
return "خطا: تقسیم بر صفر مجاز نیست!"
return x / y
def power(x, y):
return x ** y
def square_root(x):
if x < 0:
return "خطا: جذر اعداد منفی مجاز نیست!"
return x ** 0.5
def percentage(x, y):
return (x * y) / 100
def calculator():
while True:
print("\nعملیاتهای موجود:")
print("1: جمع (+)")
print("2: تفریق (-)")
print("3: ضرب (*)")
print("4: تقسیم (/)")
print("5: توان (^)")
print("6: جذر (√)")
print("7: درصد (%)")
print("8: خروج")
choice = input("عملیات مورد نظر خود را انتخاب کنید (1-8): ")
if choice == '8':
print("خروج از برنامه...")
break
if choice in ['1', '2', '3', '4', '5', '7']:
num1 = float(input("عدد اول را وارد کنید: "))
num2 = float(input("عدد دوم را وارد کنید: "))
elif choice == '6':
num1 = float(input("عدد را وارد کنید: "))
else:
print("عملیات نامعتبر!")
continue
if choice == '1':
print(f"نتیجه: {add(num1, num2)}")
elif choice == '2':
print(f"نتیجه: {subtract(num1, num2)}")
elif choice == '3':
print(f"نتیجه: {multiply(num1, num2)}")
elif choice == '4':
print(f"نتیجه: {divide(num1, num2)}")
elif choice == '5':
print(f"نتیجه: {power(num1, num2)}")
elif choice == '6':
print(f"نتیجه: {square_root(num1)}")
elif choice == '7':
print(f"نتیجه: {percentage(num1, num2)}")
else:
print("عملیات نامعتبر!")
if __name__ == "__main__":
calculator()
در قطعه کد بالا با کمک یک حلقه while از کاربر عملیات مورد نظرش را سوال میکنیم و با کمک توابع پیاده سازی شده برای هر عملیات ریاضی محاسبات مورد نیاز را انجام داده و حاصل را در خروجی به نمایش در خواهیم آورد در ادامه بررسی توابع نوشته شده در قطعه کد بالا خواهیم پرداخت :
add(x, y)
: جمع دو عدد.subtract(x, y)
: تفریق دو عدد.multiply(x, y)
: ضرب دو عدد.divide(x, y)
: تقسیم دو عدد با بررسی تقسیم بر صفر.power(x, y)
: محاسبه توان.square_root(x)
: محاسبه جذر با بررسی اعداد منفی.percentage(x, y)
: محاسبه درصد.()calculator
: تابع اصلی که منو را نمایش میدهد و عملیات را مدیریت میکند.
پیاده سازی در ++C:
#include
#include
using namespace std;
double add(double x, double y) {
return x + y;
}
double subtract(double x, double y) {
return x - y;
}
double multiply(double x, double y) {
return x * y;
}
double divide(double x, double y) {
if (y == 0) {
cout << "خطا: تقسیم بر صفر مجاز نیست!" << endl;
return 0;
}
return x / y;
}
double power(double x, double y) {
return pow(x, y);
}
double square_root(double x) {
if (x < 0) {
cout << "خطا: جذر اعداد منفی مجاز نیست!" << endl;
return 0;
}
return sqrt(x);
}
double percentage(double x, double y) {
return (x * y) / 100;
}
void calculator() {
while (true) {
cout << "\nعملیاتهای موجود:" << endl;
cout << "1: جمع (+)" << endl;
cout << "2: تفریق (-)" << endl;
cout << "3: ضرب (*)" << endl;
cout << "4: تقسیم (/)" << endl;
cout << "5: توان (^)" << endl;
cout << "6: جذر (√)" << endl;
cout << "7: درصد (%)" << endl;
cout << "8: خروج" << endl;
int choice;
cout << "عملیات مورد نظر خود را انتخاب کنید (1-8): ";
cin >> choice;
if (choice == 8) {
cout << "خروج از برنامه..." << endl;
break;
}
double num1, num2;
if (choice >= 1 && choice <= 7) {
cout << "عدد اول را وارد کنید: ";
cin >> num1;
if (choice != 6) {
cout << "عدد دوم را وارد کنید: ";
cin >> num2;
}
} else {
cout << "عملیات نامعتبر!" << endl;
continue;
}
switch (choice) {
case 1:
cout << "نتیجه: " << add(num1, num2) << endl;
break;
case 2:
cout << "نتیجه: " << subtract(num1, num2) << endl;
break;
case 3:
cout << "نتیجه: " << multiply(num1, num2) << endl;
break;
case 4:
cout << "نتیجه: " << divide(num1, num2) << endl;
break;
case 5:
cout << "نتیجه: " << power(num1, num2) << endl;
break;
case 6:
cout << "نتیجه: " << square_root(num1) << endl;
break;
case 7:
cout << "نتیجه: " << percentage(num1, num2) << endl;
break;
default:
cout << "عملیات نامعتبر!" << endl;
}
}
}
int main() {
calculator();
return 0;
}
در قطعه کد بالا که در زبان ++C پیاده سازی شده است در تابع calculator با کمک یک حلقه while از کاربر عملیات مورد نظرش را سوال میکنیم و با کمک توابع پیاده سازی شده برای هر عملیات ریاضی محاسبات مورد نیاز را انجام داده و حاصل را در خروجی به نمایش در خواهیم آورد در ادامه بررسی توابع نوشته شده در قطعه کد بالا خواهیم پرداخت :
add(x, y)
: جمع دو عدد.subtract(x, y)
: تفریق دو عدد.multiply(x, y)
: ضرب دو عدد.divide(x, y)
: تقسیم دو عدد با بررسی تقسیم بر صفر.power(x, y)
: محاسبه توان با استفاده از تابعpow
از کتابخانهcmath
.square_root(x)
: محاسبه جذر با استفاده از تابعsqrt
از کتابخانهcmath
.percentage(x, y)
: محاسبه درصد.()calculator
: تابع اصلی که منو را نمایش میدهد و عملیات را مدیریت میکند.
پیاده سازی در Java:
import java.util.Scanner;
public class Calculator {
public static double add(double x, double y) {
return x + y;
}
public static double subtract(double x, double y) {
return x - y;
}
public static double multiply(double x, double y) {
return x * y;
}
public static double divide(double x, double y) {
if (y == 0) {
System.out.println("خطا: تقسیم بر صفر مجاز نیست!");
return 0;
}
return x / y;
}
public static double power(double x, double y) {
return Math.pow(x, y);
}
public static double squareRoot(double x) {
if (x < 0) {
System.out.println("خطا: جذر اعداد منفی مجاز نیست!");
return 0;
}
return Math.sqrt(x);
}
public static double percentage(double x, double y) {
return (x * y) / 100;
}
public static void calculator() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("\nعملیاتهای موجود:");
System.out.println("1: جمع (+)");
System.out.println("2: تفریق (-)");
System.out.println("3: ضرب (*)");
System.out.println("4: تقسیم (/)");
System.out.println("5: توان (^)");
System.out.println("6: جذر (√)");
System.out.println("7: درصد (%)");
System.out.println("8: خروج");
System.out.print("عملیات مورد نظر خود را انتخاب کنید (1-8): ");
int choice = scanner.nextInt();
if (choice == 8) {
System.out.println("خروج از برنامه...");
break;
}
double num1, num2 = 0;
if (choice >= 1 && choice <= 7) {
System.out.print("عدد اول را وارد کنید: ");
num1 = scanner.nextDouble();
if (choice != 6) {
System.out.print("عدد دوم را وارد کنید: ");
num2 = scanner.nextDouble();
}
} else {
System.out.println("عملیات نامعتبر!");
continue;
}
switch (choice) {
case 1:
System.out.println("نتیجه: " + add(num1, num2));
break;
case 2:
System.out.println("نتیجه: " + subtract(num1, num2));
break;
case 3:
System.out.println("نتیجه: " + multiply(num1, num2));
break;
case 4:
System.out.println("نتیجه: " + divide(num1, num2));
break;
case 5:
System.out.println("نتیجه: " + power(num1, num2));
break;
case 6:
System.out.println("نتیجه: " + squareRoot(num1));
break;
case 7:
System.out.println("نتیجه: " + percentage(num1, num2));
break;
default:
System.out.println("عملیات نامعتبر!");
}
}
scanner.close();
}
public static void main(String[] args) {
calculator();
}
}
در قطعه کد بالا که در زبان java پیاده سازی شده است در تابع calculator با کمک یک حلقه while و ساختار switch از کاربر عملیات مورد نظرش را سوال میکنیم و با کمک توابع پیاده سازی شده برای هر عملیات ریاضی محاسبات مورد نیاز را انجام داده و حاصل را در خروجی به نمایش در خواهیم آورد در ادامه بررسی توابع نوشته شده در قطعه کد بالا خواهیم پرداخت :
add(x, y)
: جمع دو عدد.subtract(x, y)
: تفریق دو عدد.multiply(x, y)
: ضرب دو عدد.divide(x, y)
: تقسیم دو عدد با بررسی تقسیم بر صفر.power(x, y)
: محاسبه توان با استفاده از تابعMath.pow
.squareRoot(x)
: محاسبه جذر با استفاده از تابعMath.sqrt
.percentage(x, y)
: محاسبه درصد.()calculator
: تابع اصلی که منو را نمایش میدهد و عملیات را مدیریت میکند.
دیدگاهتان را بنویسید