Ada Programming/Algorithms/Chapter 1

From Wikibooks, open books for an open world
Jump to navigation Jump to search

float

Chapter 1: Introduction[edit]

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

To Lower[edit]

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
     Ada.Characters.Handling.To_Lower;

  --  tolower - translates all alphabetic, uppercase characters—in str to lowercase
   function To_Lower (Str : String)  return String  is
     Result : String (Str'Range);
   begin
      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 Case[edit]

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
   is
     O :  constant Integer := S'First - T'First;
   begin
      if T'Length /= S'Length  then
         return False;  --  if they aren't the same length, they—aren't equal
      else
         for I  in  S'Range  loop
            if To_Lower (S (I)) /=
              To_Lower (T (I + O))
            then
               return False;
            end  if;
         end  loop;
      end  if;
      return True;
   end Equal_Ignore_Case;