In this section, we will guide you through the process of building a scientific calculator using Fortran. This project will help you apply various concepts learned throughout the course, including control structures, functions, and file handling.

Objectives

  • Understand the structure of a scientific calculator program.
  • Implement basic arithmetic operations.
  • Implement advanced mathematical functions.
  • Handle user input and output.
  • Organize the code using subroutines and functions.

Step-by-Step Guide

  1. Program Structure

First, let's outline the structure of our scientific calculator program. The main components will include:

  • A main program to handle user interaction.
  • Subroutines for basic arithmetic operations (addition, subtraction, multiplication, division).
  • Functions for advanced mathematical operations (e.g., sine, cosine, logarithm).

  1. Setting Up the Main Program

Create a new Fortran file named calculator.f90 and start by setting up the main program structure.

program scientific_calculator
    implicit none
    integer :: choice
    real :: num1, num2, result

    do
        call display_menu()
        read(*,*) choice

        if (choice == 0) exit

        call get_input(num1, num2)

        select case (choice)
            case (1)
                result = add(num1, num2)
            case (2)
                result = subtract(num1, num2)
            case (3)
                result = multiply(num1, num2)
            case (4)
                result = divide(num1, num2)
            case (5)
                result = sine(num1)
            case (6)
                result = cosine(num1)
            case (7)
                result = logarithm(num1)
            case default
                print *, "Invalid choice. Please try again."
                cycle
        end select

        print *, "Result: ", result
    end do

    print *, "Exiting the calculator. Goodbye!"
end program scientific_calculator

  1. Display Menu Subroutine

Create a subroutine to display the menu options to the user.

subroutine display_menu()
    print *, "Scientific Calculator"
    print *, "1. Addition"
    print *, "2. Subtraction"
    print *, "3. Multiplication"
    print *, "4. Division"
    print *, "5. Sine"
    print *, "6. Cosine"
    print *, "7. Logarithm"
    print *, "0. Exit"
    print *, "Enter your choice: "
end subroutine display_menu

  1. Get Input Subroutine

Create a subroutine to get input from the user. For simplicity, we will assume that advanced functions like sine, cosine, and logarithm only require one input.

subroutine get_input(num1, num2)
    real, intent(out) :: num1, num2
    print *, "Enter the first number: "
    read(*,*) num1
    print *, "Enter the second number (if applicable, otherwise enter 0): "
    read(*,*) num2
end subroutine get_input

  1. Basic Arithmetic Operations

Implement subroutines for basic arithmetic operations.

real function add(a, b)
    real, intent(in) :: a, b
    add = a + b
end function add

real function subtract(a, b)
    real, intent(in) :: a, b
    subtract = a - b
end function subtract

real function multiply(a, b)
    real, intent(in) :: a, b
    multiply = a * b
end function multiply

real function divide(a, b)
    real, intent(in) :: a, b
    if (b == 0.0) then
        print *, "Error: Division by zero"
        divide = 0.0
    else
        divide = a / b
    end if
end function divide

  1. Advanced Mathematical Functions

Implement functions for advanced mathematical operations.

real function sine(x)
    real, intent(in) :: x
    sine = sin(x)
end function sine

real function cosine(x)
    real, intent(in) :: x
    cosine = cos(x)
end function cosine

real function logarithm(x)
    real, intent(in) :: x
    if (x <= 0.0) then
        print *, "Error: Logarithm of non-positive number"
        logarithm = 0.0
    else
        logarithm = log(x)
    end if
end function logarithm

  1. Compiling and Running the Program

To compile and run the program, use the following commands in your terminal:

gfortran -o calculator calculator.f90
./calculator

  1. Practical Exercises

Exercise 1: Add More Functions

Add more mathematical functions to the calculator, such as:

  • Tangent
  • Exponential
  • Square root

Exercise 2: Error Handling

Improve the error handling in the program. For example, handle cases where the user inputs non-numeric values.

Exercise 3: Modularize the Code

Refactor the code to use modules for better organization and reusability.

  1. Summary

In this section, we built a simple scientific calculator using Fortran. We covered:

  • Setting up the main program structure.
  • Implementing basic arithmetic operations.
  • Implementing advanced mathematical functions.
  • Handling user input and output.

This project helped reinforce various Fortran concepts and provided a practical application to solidify your understanding. In the next section, we will explore numerical methods in Fortran.

© Copyright 2024. All rights reserved