This is a set of elementary programming tasks that you should be able to implement in Free Pascal. The easiest tasks are at the beginning and they get somewhat harder as they progress.

I've included sample output below each task. (In some cases the sample output contains several program runs, separated by ===.)

Ask the user for a number N, then write the word "orange" N times.

How many oranges: 4 orange orange orange orange

Print the even numbers from 2 to 20 on the console. (Don't use a separate writeln statement for each number!)

2 4 6 8 10 12 14 16 18 20

Read integers representing the width, length and height of a room in meters, and print out the number of square meters of paint required to paint the walls and ceiling (but not the floor).

Width: 5 Length: 8 Height: 4 You need 144 square meters of paint.

Read two integers X and Y and report which is greater (or that they are equal).

Enter X: 4 Enter Y: 6 Y is greater

Read two integers X and Y, and print their quotient if X is exactly divisible by Y, or "indivisible" otherwise.

Enter X: 8 Enter Y: 2 8 divided by 2 is 4 === Enter X: 10 Enter Y: 3 indivisible

Read three integers on a single line, and print out the largest of them.

Enter 3 numbers: 4 17 2 The largest is 17.

Read a number N and print a table of the squares and cubes of all integers from 1 to N.

Enter N: 6 1^2 = 1, 1^3 = 1 2^2 = 4, 2^3 = 8 3^2 = 9, 3^3 = 27 4^2 = 16, 4^3 = 64 5^2 = 25, 5^3 = 125 6^2 = 36, 6^3 = 216

Read a number N, then print an N x N square of asterisks.

Enter N: 5 ***** ***** ***** ***** *****

Read a number N, then print an N x N triangle of asterisks.

Enter N: 6 * ** *** **** ***** ******

Read a number N, then use asterisks to print a letter L with height and width N, and a thickness of 3.

Size: 7 *** *** *** *** ******* ******* *******

Read a set of floating-point numbers from the console until the user presses ctrl+D (Unix, macOS) or ctrl-Z (Windows). Print their average.

2.5 3.5 5.5 6.5 ^D 4.500000000E+00

Read a number N from the console. Simulate rolling N 6-sided dice. Write the value of each die roll, followed by the sum of all of them.

How many dice? 4 6 2 6 1 total: 15 === How many dice? 2 6 2 total: 8

Read a set of integers from the console until the user presses ctrl+D or ctrl+Z. Print "all even" if they are all even, or "some odd" otherwise.

6 8 10 ^D all even === 6 8 9 ^D some odd

Here is a loop written using `for`:

var i: integer; begin for i := 1 to 5 do writeln(i); end

Write the same loop using `while` instead of `for`. Now
write the same loop again using `repeat`. Since you are
looping twice, your output should now look like this:

1 2 3 4 5 1 2 3 4 5

Read a password P, then clear the screen and repeatedly read password guesses until the password P is entered.

Hint: You can use the function `clrScr` from the `crt`
unit to clear the screen. Write `'uses crt;'` at the beginning
of the program to import this unit. The function takes no parameters,
so you can invoke it simply like this: `clrScr;`

Enter password: pineapple (screen clears) Password: apple wrong! Password: potato wrong! Password: pineapple correct!

Read a year from the console. Write the decade that it was in.

Year: 1995 1995 was in the 1990s === Year: 1821 1821 was in the 1820s === Year: 2010 2010 was in the 2010s

Read integers from the console until the user presses ctrl+D or ctrl+Z. Write the sum of the positive integers and the sum of the negative integers.

Enter numbers: 4 2 -6 -1 5 -2 ^D Positive sum: 11 Negative sum: -9

Read integers from the console until the user presses ctrl+D or ctrl+Z. Write a number indicating how many of the integers were equal to the first one (not including the first one itself).

Enter numbers: 4 2 2 8 4 4 3 ^D 2 numbers were equal to 4 === Enter numbers: 5 3 6 ^D 0 numbers were equal to 5

Read integers from the console until the user presses ctrl+D or ctrl+Z. Write the largest and the smallest of the integers.

Enter numbers: 4 6 2 8 10 5 ^D The largest was 10. The smallest was 2.

Solve Project Euler's problem 1.

Solve Project Euler's problem 2.

Simulate coin flips, printing an 'H' each time the coin falls on heads and 'T' each time it falls on tails. Once you reach the third H, stop and write how many coins were flipped.

HTTTHTH 7 flips === TTTHTTTTTHH 11 flips

Read a string and print it backwards without using the library
function `reverseString`.

Enter string: zyzzyva avyzzyz

Read a string and write it out with a space between each adjacent pair of characters.

Enter string: waffle w a f f l e

Read a string and print 'double' if any two adjacent characters are the same, or 'nothing' otherwise.

Enter string: abacuses nothing === Enter string: lionesses double

Read a string. Print out the number of uppercase or lowercase O's in the string.

Enter string: noodle 2 === Enter string: The Original Octopi 3

Read an integer. Print "pow" if it is a power of two,
"no" otherwise. (Note: 2^{0} = 1).

Enter number: 64 pow === Enter number: 68 no === Enter number: 256 pow === Enter number: 1 pow

Read a price in Czech crowns. Print out a combination of 20-Kč, 10-Kč, 5-Kč and 1-Kč coins that add up to the price, using the smallest possible number of coins.

Enter price: 67 20 Kc: 3 10 Kc: 0 5 Kc: 1 1 Kc: 2

Read a year from the console, and write out "leap" if it is a leap year, or "no leap" if it isn't.

A year is a leap year if it's divisible by 4, unless it's divisible by 100, in which case it isn't a leap year, unless it's divisible by 400, in which case it is actually a leap year.

Enter year: 1922 no leap === Enter year: 1900 no leap === Enter year: 2000 leap === Enter year: 2020 leap

Read two numbers on the same line representing a 24-hour time in hours and minutes. Print the time that is 20 minutes later, wrapping past midnight if necessary.

Time: 2 30 2:50 === Time: 5 50 6:10 === Time: 23 55 0:15

Read two numbers on the same line representing a 24-hour time in hours and minutes. Read another number representing an offset N in minutes. Print the time that is N minutes later, wrapping past midnight if necessary.

Time: 2 30 Offset: 20 2:50 === Time: 5 50 Offset: 100 7:30 === Time: 23 55 Offset: 1000 16:35