diff options
Diffstat (limited to 'basics')
| -rw-r--r-- | basics/basics.gpr | 5 | ||||
| -rw-r--r-- | basics/src/main.adb | 108 |
2 files changed, 113 insertions, 0 deletions
diff --git a/basics/basics.gpr b/basics/basics.gpr new file mode 100644 index 0000000..a217eed --- /dev/null +++ b/basics/basics.gpr | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | project Basics is | ||
| 2 | for Source_Dirs use ("src"); | ||
| 3 | for Object_Dir use "obj"; | ||
| 4 | for Main use ("main.adb"); | ||
| 5 | end Basics; | ||
diff --git a/basics/src/main.adb b/basics/src/main.adb new file mode 100644 index 0000000..63339ae --- /dev/null +++ b/basics/src/main.adb | |||
| @@ -0,0 +1,108 @@ | |||
| 1 | with Ada.Text_IO; use Ada.Text_IO; | ||
| 2 | with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; | ||
| 3 | |||
| 4 | procedure Main is | ||
| 5 | procedure Read_Number is | ||
| 6 | N : Integer; | ||
| 7 | begin | ||
| 8 | Put_Line ("Please enter a number"); | ||
| 9 | Get (N); | ||
| 10 | if N > 0 then | ||
| 11 | Put_Line ("The number is positive"); | ||
| 12 | elsif N = 0 then | ||
| 13 | Put_Line ("The number is zero"); | ||
| 14 | else | ||
| 15 | Put_Line ("The number is negative"); | ||
| 16 | end if; | ||
| 17 | end Read_Number; | ||
| 18 | |||
| 19 | procedure Test_Loop is | ||
| 20 | N : Integer := 0; | ||
| 21 | begin | ||
| 22 | loop | ||
| 23 | exit when N = 5; | ||
| 24 | N := N + 1; | ||
| 25 | Put_Line ("Test loop"); | ||
| 26 | end loop; | ||
| 27 | end Test_Loop; | ||
| 28 | |||
| 29 | procedure Test_Even_Odd is | ||
| 30 | begin | ||
| 31 | for I in 0 .. 10 loop | ||
| 32 | Put_Line (I'Image & " is " & (if I mod 2 = 1 then "Odd" else "Even")); | ||
| 33 | end loop; | ||
| 34 | end Test_Even_Odd; | ||
| 35 | |||
| 36 | procedure My_Swap (A : in out Integer; B : in out Integer) is | ||
| 37 | C : Integer; | ||
| 38 | begin | ||
| 39 | C := A; | ||
| 40 | A := B; | ||
| 41 | B := C; | ||
| 42 | end My_Swap; | ||
| 43 | |||
| 44 | procedure Test_My_Swap is | ||
| 45 | A : Integer := 1; | ||
| 46 | B : Integer := 3; | ||
| 47 | begin | ||
| 48 | Put_Line ("Before swap: " & A'Image & B'Image); | ||
| 49 | My_Swap (A, B); | ||
| 50 | Put_Line ("After swap: " & A'Image & B'Image); | ||
| 51 | end Test_My_Swap; | ||
| 52 | |||
| 53 | function Fib (N : Integer) return Integer is | ||
| 54 | F0 : Integer := 0; | ||
| 55 | F1 : Integer := 1; | ||
| 56 | F : Integer := 0; | ||
| 57 | begin | ||
| 58 | for I in 2 .. N loop | ||
| 59 | F := F0 + F1; | ||
| 60 | F0 := F1; | ||
| 61 | F1 := F; | ||
| 62 | end loop; | ||
| 63 | return F; | ||
| 64 | end Fib; | ||
| 65 | |||
| 66 | function Factorial (N : Integer) return Integer is | ||
| 67 | F : Integer := 1; | ||
| 68 | begin | ||
| 69 | for I in 2 .. N loop | ||
| 70 | F := F * I; | ||
| 71 | end loop; | ||
| 72 | return F; | ||
| 73 | end Factorial; | ||
| 74 | |||
| 75 | procedure Test_Functions is | ||
| 76 | N : Integer; | ||
| 77 | begin | ||
| 78 | Put_Line ("Enter a number:"); | ||
| 79 | Get (N); | ||
| 80 | Put_Line ("Fib(" & N'Image & ") = " & Fib (N)'Image); | ||
| 81 | Put_Line ("Factorial(" & N'Image & ") = " & Factorial (N)'Image); | ||
| 82 | end Test_Functions; | ||
| 83 | |||
| 84 | procedure Test_Integers is | ||
| 85 | type Day is range 1 .. 7; | ||
| 86 | My_Day : Day := 3; | ||
| 87 | Other_Day : Day; | ||
| 88 | begin | ||
| 89 | for D in Day loop | ||
| 90 | Put_Line ("Day" & D'Image); | ||
| 91 | end loop; | ||
| 92 | Put_Line (My_Day'Image); | ||
| 93 | Other_Day := My_Day + Day (4); | ||
| 94 | Put_Line (Other_Day'Image); | ||
| 95 | end Test_Integers; | ||
| 96 | |||
| 97 | begin | ||
| 98 | -- This is a comment. | ||
| 99 | Put_Line ("Hello world!"); | ||
| 100 | |||
| 101 | Test_Loop; | ||
| 102 | Test_Even_Odd; | ||
| 103 | Test_My_Swap; | ||
| 104 | Test_Integers; | ||
| 105 | |||
| 106 | --Read_Number; | ||
| 107 | Test_Functions; | ||
| 108 | end Main; | ||
