使用迴圈顯示字母 (A-Z) 的 Haskell 程式


本教程將討論編寫一個在 Haskell 程式語言中顯示 A-Z 字元的程式。Haskell 是一種函式式、宣告式和強型別語言。Haskell 中的計算是數學函式。

在本教程中,我們將看到兩種在 Haskell 中顯示字母的方法。

  • 一個迭代程式來顯示字母。

  • 一個遞迴程式來顯示字母。

注意− Haskell 不支援迴圈,因此我們使用其他迭代和遞迴實現來模擬迴圈的功能。

演算法步驟

  • 實現列印字母的邏輯。

  • 列印/顯示字母。

使用列表推導式以迭代方式顯示字母。

示例

使用列表推導式以迭代方式顯示字母的程式。

import Data.Char main :: IO() main = do -- generating alphabets from A-Z as list of characters let alphabets=[chr x | x<-[65..90]] -- printing the list of Characters print ("Alphabets from A-Z are:") print alphabets

輸出

"Alphabets from A-Z are:"
"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"

注意 - 使用空格區分字母。實際輸出中字元之間沒有空格。字元列表是字串。

在上面的程式中,我們匯入了 Char 模組,因為預設情況下並非所有函式都對使用者可用。匯入模組的語法是 import Data.MODULE_NAME。在主函式中,我們使用列表推導式生成 A-Z 的字元列表。其中,我們生成從 65 到 90 的整數。我們知道大寫字母的 ASCII 值範圍是 65 到 90。生成數字後,我們使用生成的數字作為引數呼叫 chr 函式並將它們載入到列表中。其中 chr 是 Char 模組中提供的函式,它接收一個整數(ASCII 值)作為輸入,並將其轉換為與該數字的 ASCII 值對應的字元。如果輸入數字是 66,因為 'B' 的 ASCII 值是 66,則返回 'B'。

使用遞迴函式以遞迴方式顯示字母

示例

使用遞迴函式以遞迴方式顯示字母的程式。

import Data.Char import Data.Char -- function to print uppercase letters a-z -- function declaration printAlphabets :: Int -> IO() -- function definition -- base case printAlphabets 25 = do print ('Z') printAlphabets d = do putStr (show (chr (65+d)) ++ " ") printAlphabets (d+1) -- function to print lowercase letters a-z -- function declaration printAlphabets2 :: Int -> IO() -- function definition printAlphabets2 25 = do print ('z') printAlphabets2 d = do putStr (show (chr (97+d)) ++ " ") printAlphabets2 (d+1) main :: IO() main = do -- invoking printAlphabets function print ("Alphabets from A-Z are:") printAlphabets 0 print ("Alphabets from a-z are:") printAlphabets2 0

輸出

"Alphabets from A-Z are:"
'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z'

"Alphabets from a-z are:"
'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'

在上面的程式中,我們匯入了 Char 模組以獲取對字元的有用函式。我們實現了 printAlphabets 函式來列印 A-Z 的大寫字母。我們宣告此函式,使其接收一個整數作為輸入並返回 IO。在函式定義中,此函式將整數 d 作為初始偏移量。它將偏移量新增到 65,因為大寫字母的 ASCII 值從 65 開始。我們使用了 Char 模組中的內建函式,該函式接收 ASCII 值並返回與該 ASCII 數字對應的字元。我們使用 show 函式列印返回的字元,該函式將字元轉換為字串,因為 putStr 函式僅列印字串。最後,我們遞迴呼叫同一個函式,直到滿足基本情況,即 d = 25。類似地,我們實現了 printAlphabets2 來列印小寫字母,其中偏移量為 97,因為小寫字母的 ASCII 值從 97 開始。

結論

在本教程中,我們討論了兩種不同的方法來編寫一個在 Haskell 程式語言中顯示字母 (A-Z) 的程式。

更新於:2022年10月27日

548 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.