跳至內容

Ada 程式設計/演算法/第 1 章

來自華夏公益教科書,開放的書籍,為開放的世界

Ada. Time-tested, safe and secure.
Ada。經久考驗,安全可靠。

第 1 章:介紹

[編輯 | 編輯原始碼]

以下子程式是 發明演算法 示例 的實現。

轉為小寫

[編輯 | 編輯原始碼]

Ada 示例程式碼不會像演算法那樣追加到陣列。相反,我們建立一個指定長度的空陣列,然後替換其中的字元。

檔案:to_lower_1.adb (檢視, 純文字, 下載頁面, 瀏覽所有)
  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;

使用 Ada 無法實現追加方法嗎?不,但這樣做會更加複雜和緩慢。

忽略大小寫比較

[編輯 | 編輯原始碼]
檔案:to_lower_2.adb (檢視, 純文字, 下載頁面, 瀏覽所有)
  --  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;
華夏公益教科書