Examples
Practical code examples to help you learn SAPL programming
This page contains a collection of SAPL code examples organized by category. Each example includes the code, expected output, and an explanation of key concepts. Use these examples to learn SAPL programming and as a reference for your own projects.
Try it yourself
Basic Examples
Hello World
The traditional first program that displays "Hello, World!" to the console:
እስቲ("ሰላም ዓለም!")Output:
ሰላም ዓለም!
The እስቲ function displays the value of its argument to the console.
Basic Arithmetic
Performing simple arithmetic operations:
እስቲ(5 + 3) # ድምር
እስቲ(10 - 4) # ልዩነት
እስቲ(3 * 7) # 곱셈
እስቲ(20 / 5) # ክፍፍል
እስቲ(10 % 3) # ቀሪ
እስቲ(2 ^ 3) # ኃይልOutput:
8
6
21
4
1
8
Variables & Data Types
Variable Declaration
Declaring variables and performing operations:
ሀ = 5
ለ = 10
እስቲ(ሀ + ለ)Output:
15
Variables are created by assigning a value to a name. No declaration keyword is needed.
String Operations
Working with text strings:
ስም = "አበበ"
ሰላምታ = "ሰላም " + ስም + "!"
እስቲ(ሰላምታ)Output:
ሰላም አበበ!
ሰላም አበበ!
Lists and Arrays
Creating and manipulating lists:
ቁጥሮች = [1, 2, 3, 4, 5]
እስቲ(ቁጥሮች)Output:
[1, 2, 3, 4, 5]
Dictionaries
Working with key-value pairs:
ሰው = {
"ስም": "አበበ",
"ዕድሜ": 25,
"ከተማ": "አዲስ አበባ"
}
እስቲ(ሰው)Output:
{"ስም": "አበበ", "ዕድሜ": 25, "ከተማ": "አዲስ አበባ"}
Control Flow
If-Else Statements
Making decisions in your code:
ዕድሜ = 18
ከሆነ ዕድሜ >= 18:
እስቲ("አዋቂ ነህ")
ካልሆነ:
እስቲ("ልጅ ነህ")Output:
አዋቂ ነህ
The ከሆነ statement evaluates a condition and executes code based on whether it's true or false.
Nested Conditionals
Using multiple conditions with elif:
ውጤት = 85
ከሆነ ውጤት >= 90:
እስቲ("አማካይ ነው")
ወይም_እንደሆነ ውጤት >= 80:
እስቲ("ጥሩ ነው")
ወይም_እንደሆነ ውጤት >= 70:
እስቲ("አማካይ ነው")
ካልሆነ:
እስቲ("አሳሳች ነው")Output:
B
For Loops
Iterating through a range of numbers:
ለ ሀ በ 1 እስከ 5:
እስቲ(ሀ)
ጨርስOutput:
1
2
3
4
5
The ለ loop iterates through a range of values, executing the code block for each value.
While Loops
Executing code while a condition is true:
ሀ = 1
በሚሆንበት ሀ <= 5
እስቲ(ሀ)
ሀ = ሀ + 1
ጨርስOutput:
1
2
3
4
5
Break and Continue
Controlling loop execution:
# አቋርጥ ምሳሌ
ለ ሀ በ 1 እስከ 10
ከሆነ ሀ == 6
አቋርጥ
ጨርስ
እስቲ(ሀ)
ጨርስ
እስቲ("---")
# ቀጥል ምሳሌ
ለ ሀ በ 1 እስከ 10
ከሆነ ሀ % 2 == 0
ቀጥል
ጨርስ
እስቲ(ሀ)
ጨርስOutput:
1
2
3
4
5
---
1
3
5
7
9
አቋርጥ exits the loop completely, while ቀጥል skips the current iteration and continues with the next one.
Functions
Basic Functions
Creating and calling functions:
ፈንክሽን ሰላምታ()
እስቲ("ሰላም ዓለም!")
ጨርስ
# ፈንክሽን መጥራት
ሰላምታ()Output:
ሰላም ዓለም!
Functions with Parameters
Creating functions that accept parameters:
ፈንክሽን ሰላምታ(ስም)
እስቲ("ሰላም " + ስም + "!")
ጨርስ
ሰላምታ("አበበ")
ሰላምታ("ከበደ")Output:
ሰላም አበበ!
ሰላም ከበደ!
Return Values
Functions that return values:
ፈንክሽን ድምር(ሀ, ለ)
መልስ ሀ + ለ
ጨርስ
ውጤት = ድምር(5, 3)
እስቲ(ውጤት)
# ሌላ ምሳሌ
ፈንክሽን ከፍተኛ(ሀ, ለ)
ከሆነ ሀ > ለ
መልስ ሀ
ካልሆነ
መልስ ለ
ጨርስ
ጨርስ
እስቲ(ከፍተኛ(10, 5))
እስቲ(ከፍተኛ(7, 12))Output:
8
10
12
The መልስ keyword is used to return a value from a function.
Recursive Functions
Functions that call themselves:
ፈንክሽን ፋክቶሪያል(ቁጥር)
ከሆነ ቁጥር <= 1
መልስ 1
ካልሆነ
መልስ ቁጥር * ፋክቶሪያል(ቁጥር - 1)
ጨርስ
ጨርስ
እስቲ(ፋክቶሪያል(5)) # 5! = 5 * 4 * 3 * 2 * 1 = 120Output:
120
Caution
Advanced Examples
File I/O
Reading from and writing to files:
# ፋይል መጻፍ
ፋይል = ፋይልክፈት("ምሳሌ.txt", "ጻፍ")
ፋይል.ጻፍ("ይህ የSAPL ፕሮግራሚንግ ቋንቋ ምሳሌ ነው።")
ፋይል.ዝጋ()
# ፋይል ማንበብ
ፋይል = ፋይልክፈት("ምሳሌ.txt", "አንብብ")
ይዘት = ፋይል.አንብብ()
ፋይል.ዝጋ()
እስቲ(ይዘት)Output:
ይህ የSAPL ፕሮግራሚንግ ቋንቋ ምሳሌ ነው።
Error Handling
Handling exceptions with try-except:
ሞክር
ቁጥር = ወደቁጥር("abc")
እስቲ(ቁጥር)
ያዝ ስህተት
እስቲ("ስህተት ተከስቷል: " + ስህተት)
ጨርስ
# ፋይል ማንበብ ሞክር
ሞክር
ፋይል = ፋይልክፈት("የለም.txt", "አንብብ")
ይዘት = ፋይል.አንብብ()
ፋይል.ዝጋ()
ያዝ ስህተት
እስቲ("ፋይሉ አልተገኘም: " + ስህተት)
ጨርስOutput:
ስህተት ተከስቷል: Invalid conversion
ፋይሉ አልተገኘም: File not found
Working with Modules
Importing and using modules:
# ሂሳብ ሞጁል አስመጣ
አስመጣ ሂሳብ
# ሞጁል ተግባራትን መጠቀም
እስቲ(ሂሳብ.ስኩዌር(4))
እስቲ(ሂሳብ.ስኩዌርሩት(16))
እስቲ(ሂሳብ.ፓይ)
እስቲ(ሂሳብ.ሲን(ሂሳብ.ፓይ / 2))
# ሌላ ሞጁል ምሳሌ
አስመጣ ጊዜ
እስቲ(ጊዜ.አሁን())Output:
16
4
3.141592653589793
1.0
2023-06-12 23:34:13
Data Processing
Processing data with lists and dictionaries:
# ተማሪዎች ዝርዝር
ተማሪዎች = [
{"ስም": "አበበ", "ውጤት": 85},
{"ስም": "ከበደ", "ውጤት": 92},
{"ስም": "አልማዝ", "ውጤት": 78},
{"ስም": "ሰላም", "ውጤት": 95},
{"ስም": "ፍቅር", "ውጤት": 88}
]
# አማካይ ውጤት ማግኘት
ድምር = 0
ለ ተማሪ በ ተማሪዎች
ድምር = ድምር + ተማሪ["ውጤት"]
ጨርስ
አማካይ = ድምር / ተማሪዎች.ርዝመት()
እስቲ("አማካይ ውጤት: " + አማካይ)
# ከፍተኛ ውጤት ያለው ተማሪ ማግኘት
ከፍተኛውጤት = 0
ከፍተኛተማሪ = ""
ለ ተማሪ በ ተማሪዎች
ከሆነ ተማሪ["ውጤት"] > ከፍተኛውጤት
ከፍተኛውጤት = ተማሪ["ውጤት"]
ከፍተኛተማሪ = ተማሪ["ስም"]
ጨርስ
ጨርስ
እስቲ("ከፍተኛ ውጤት ያለው ተማሪ: " + ከፍተኛተማሪ + " (" + ከፍተኛውጤት + ")")Output:
አማካይ ውጤት: 87.6
ከፍተኛ ውጤት ያለው ተማሪ: ሰላም (95)
Simple Game
A simple number guessing game:
አስመጣ ዘፈቀደ
# ዘፈቀደ ቁጥር ማመንጨት
ቁጥር = ዘፈቀደ.ከ(1, 100)
ሙከራዎች = 0
ገምት = 0
እስቲ("ከ1 እስከ 100 ያለ ቁጥር አስብኩ። ልትገምት ትችላለህ?")
በሚሆንበት ገምት != ቁጥር
ገምት = ወደቁጥር(አስገባ("ገምት: "))
ሙከራዎች = ሙከራዎች + 1
ከሆነ ገምት < ቁጥር
እስቲ("ከፍ በል!")
ከሆነደግሞ ገምት > ቁጥር
እስቲ("ዝቅ በል!")
ካልሆነ
እስቲ("እንኳን ደስ አለህ! በ" + ሙከራዎች + " ሙከራዎች አግኝተሃል።")
ጨርስ
ጨርስInteractive Game - Sample Output:
ከ1 እስከ 100 ያለ ቁጥር አስብኩ። ልትገምት ትችላለህ?
ገምት: 50
ከፍ በል!
ገምት: 75
ከፍ በል!
ገምት: 87
ዝቅ በል!
ገምት: 82
ከፍ በል!
ገምት: 85
እንኳን ደስ አለህ! በ5 ሙከራዎች አግኝተሃል።
Interactive Example
Project Examples
To-Do List Application
A simple to-do list manager:
# ቱዱ ሊስት አፕሊኬሽን
ፈንክሽን ዋና()
ቱዱዎች = []
ምርጫ = ""
በሚሆንበት ምርጫ != "5"
# ምናሌ አሳይ
እስቲ("
=== የቱዱ ሊስት አፕሊኬሽን ===")
እስቲ("1. ቱዱ አሳይ")
እስቲ("2. ቱዱ አክል")
እስቲ("3. ቱዱ አጠናቅቅ")
እስቲ("4. ቱዱ አጥፋ")
እስቲ("5. ውጣ")
ምርጫ = አስገባ("
ምርጫህን አስገባ: ")
ከሆነ ምርጫ == "1"
ቱዱዎችአሳይ(ቱዱዎች)
ከሆነደግሞ ምርጫ == "2"
ቱዱዎችአክል(ቱዱዎች)
ከሆነደግሞ ምርጫ == "3"
ቱዱአጠናቅቅ(ቱዱዎች)
ከሆነደግሞ ምርጫ == "4"
ቱዱአጥፋ(ቱዱዎች)
ከሆነደግሞ ምርጫ == "5"
እስቲ("ስለተጠቀምክ እናመሰግናለን!")
ካልሆነ
እስቲ("ልክ ያልሆነ ምርጫ። እባክህ እንደገና ሞክር።")
ጨርስ
ጨርስ
ጨርስ
ፈንክሽን ቱዱዎችአሳይ(ቱዱዎች)
ከሆነ ቱዱዎች.ርዝመት() == 0
እስቲ("
ምንም ቱዱዎች የሉም።")
መልስ
ጨርስ
እስቲ("
=== ቱዱዎች ===")
ለ መረጃ በ ቱዱዎች
ምልክት = "[x]" ከሆነ መረጃ["ተጠናቅቋል"] ካልሆነ "[ ]"
እስቲ(መረጃ["መታወቂያ"] + ". " + ምልክት + " " + መረጃ["ስራ"])
ጨርስ
ጨርስ
ፈንክሽን ቱዱዎችአክል(ቱዱዎች)
ስራ = አስገባ("
አዲስ ቱዱ: ")
ቱዱዎች.አክል({
"መታወቂያ": ቱዱዎች.ርዝመት() + 1,
"ስራ": ስራ,
"ተጠናቅቋል": ሐሰት
})
እስቲ("ቱዱ ተጨምሯል።")
ጨርስ
ፈንክሽን ቱዱአጠናቅቅ(ቱዱዎች)
ከሆነ ቱዱዎች.ርዝመት() == 0
እስቲ("
ምንም ቱዱዎች የሉም።")
መልስ
ጨርስ
ቱዱዎችአሳይ(ቱዱዎች)
መታወቂያ = ወደቁጥር(አስገባ("
የትኛውን ቱዱ ጨርሰሃል? (መታወቂያ ቁጥር አስገባ): "))
ለ መረጃ በ ቱዱዎች
ከሆነ መረጃ["መታወቂያ"] == መታወቂያ
መረጃ["ተጠናቅቋል"] = እውነት
እስቲ("ቱዱ ተጠናቅቋል።")
መልስ
ጨርስ
ጨርስ
እስቲ("ልክ ያልሆነ መታወቂያ።")
ጨርስ
ፈንክሽን ቱዱአጥፋ(ቱዱዎች)
ከሆነ ቱዱዎች.ርዝመት() == 0
እስቲ("
ምንም ቱዱዎች የሉም።")
መልስ
ጨርስ
ቱዱዎችአሳይ(ቱዱዎች)
መታወቂያ = ወደቁጥር(አስገባ("
የትኛውን ቱዱ ማጥፋት ትፈልጋለህ? (መታወቂያ ቁጥር አስገባ): "))
ለ መረጃ በ ቱዱዎች
ከሆነ መረጃ["መታወቂያ"] == መታወቂያ
ቱዱዎች.አስወግድ(መረጃ)
እስቲ("ቱዱ ተወግዷል።")
መልስ
ጨርስ
ጨርስ
እስቲ("ልክ ያልሆነ መታወቂያ።")
ጨርስ
# አፕሊኬሽን አስጀምር
ዋና()Interactive Application - Sample Output:
=== የቱዱ ሊስት አፕሊኬሽን ===
1. ቱዱ አሳይ
2. ቱዱ አክል
3. ቱዱ አጠናቅቅ
4. ቱዱ አጥፋ
5. ውጣ
ምርጫህን አስገባ: 2
አዲስ ቱዱ: ሪፖርት መጻፍ
ቱዱ ተጨምሯል።
=== የቱዱ ሊስት አፕሊኬሽን ===
...
Complete Project
Simple Calculator
A basic calculator application:
# ቀላል ካልኩሌተር
ፈንክሽን ዋና()
እስቲ("=== ቀላል ካልኩሌተር ===")
እስቲ("ለመውጣት 'exit' ይጻፉ")
በሚሆንበት እውነት
ግባት = አስገባ("
ምሳሌ (5 + 3): ")
ከሆነ ግባት == "exit"
አቋርጥ
ጨርስ
ሞክር
ውጤት = ግምት(ግባት)
እስቲ("ውጤት: " + ውጤት)
ያዝ ስህተት
እስቲ("ስህተት: " + ስህተት)
ጨርስ
ጨርስ
ጨርስ
ፈንክሽን ግምት(ግባት)
# ቀላል ግምት ፈንክሽን
መልስ ግምትአድርግ(ግባት)
ጨርስ
# አፕሊኬሽን አስጀምር
ዋና()Interactive Application - Sample Output:
=== ቀላል ካልኩሌተር ===
ለመውጣት 'exit' ይጻፉ
ምሳሌ (5 + 3): 5 + 3
ውጤት: 8
ምሳሌ (5 + 3): 10 * 2
ውጤት: 20
ምሳሌ (5 + 3): exit

Comments
Adding comments to your code for documentation:
Output:
ይህ ኮድ ነው
Comments start with the
#character and are ignored by the interpreter.