Skip to main content
InterSystems IRIS Data Platform 2024.3
AskMe (beta)
Loading icon

Right Triangle Example Class

Click here to return to Class Methods at the beginning of the tutorial.

VS Code - ObjectScript


/// Right triangle class, with examples of ObjectScript features
Class ObjectScript.RightTriangle
{

/// Compute area and hypotenuse of a right triangle
ClassMethod Main()
{
    write !, "Compute the area and hypotenuse of a right triangle",
          !, "given the lengths of its two sides."
    read !!, "First, choose a unit of measurement: ",
          !, "1) inches", !, "2) feet", !, "3) miles", !,
             "4) centimeters", !, "5) meters", !, "6) kilometers ", !!, 
             "Option? ", units
    // Translate units to a word
    set units = $case(units, 1:"inches", 
                             2:"feet",
                             3:"miles",  
                             4:"centimeters",
                             5:"meters",
                             6:"kilometers",
                              :"units")
    do { 
        read !!, "Length of side 1: ", side1
        quit:(side1 = "")   // Exit the do loop
    }
    while ..IsNegative(side1)
    quit:(side1 = "")       // Exit the method
    do {
        read !, "Length of side 2: ", side2
        quit:(side2 = "")   // Exit the do loop
    }
    while ..IsNegative(side2)
    quit:(side2 = "")       // Exit the method
    do ..Compute(units, side1, side2)
    write !!, "Current date: "
    do ^%D
    write !, "Current time:"
    do ^%T
}

/// Is num negative?
ClassMethod IsNegative(num as %Numeric) 
{ 
    if (num '> 0) {
        write "  Enter a positive number."
        return 1      // Return true
    }
    else {
        write "  Accepted."
        return 0      // Return false
    }    
}

/// Compute and display area and hypotenuse
ClassMethod Compute(units as %String, A as %Numeric, B as %Numeric) [Private]
{
    set area = (A * B) / 2, 
        area = $justify(area, 0, 2),    // Round area to 2 places
        squaredSides = (A ** 2) + (B ** 2)  
    set hypot = $zsqr(squaredSides)     // $zsqr function computes square root                
    set hypot = $justify(hypot, 0, 2)   // Round hypot to 2 places
    write !!, "The area of this triangle is ", area, " square ", units, ".",
          !!, "The hypotenuse is ", hypot, " ", units, "."
}
}
FeedbackOpens in a new tab