Ada Programming/Algorithms/Chapter 1

< Ada Programming‎ | Algorithms

Ada Lovelace 1838.jpg

Chapter 1: IntroductionEdit

The following subprograms are implementations of the Inventing an Algorithm examples.

To LowerEdit

The Ada example code does not append to the array as the algorithms. Instead we create an empty array of the desired length and then replace the characters inside.

File: to_lower_1.adb (view, plain text, download page, browse all)
  function To_Lower (C : Character) return Character renames

  --  tolower - translates all alphabetic, uppercase characters
  --  in str to lowercase
  function To_Lower (Str : String) return String is
     Result : String (Str'Range);
     for C in  Str'Range loop
        Result (C) := To_Lower (Str (C));
     end loop;
     return Result;
  end To_Lower;

Would the append approach be impossible with Ada? No, but it would be significantly more complex and slower.

Equal Ignore CaseEdit

File: to_lower_2.adb (view, plain text, download page, browse all)
  --  equal-ignore-case -- returns true if s or t are equal,
  --  ignoring case
  function Equal_Ignore_Case
    (S    : String;
     T    : String)
     return Boolean
     O : constant Integer := S'First - T'First;
     if T'Length /= S'Length then
        return False;  --  if they aren't the same length, they
                       --  aren't equal
        for I in  S'Range loop
           if To_Lower (S (I)) /=
              To_Lower (T (I + O))
              return False;
           end if;
        end loop;
     end if;
     return True;
  end Equal_Ignore_Case;