Простые задачи для обучения программированию "с нуля" -- Pascal/Паскаль

[материалы по Pascal см. здесь]

Задачи к уроку #1

  1. Напишите программу, выводит на экран три строки "Мир", "Труд" и "Май" (кавычки не нужны). Причём сделайте чтобы выводилось сначала так:
    Мир Труд Май

    А потом так:

    Мир
       Труд
            Май 

    Подсказка: помните, что печатая строковые литералы, вы можете печатать не только любые буквы, но и любое количество пробелов, не только между словами, но и в конце или в начале фраз.

  2. Напишите программу с тремя переменными целого типа, первым двум присвойте значения, а третьей переменной присвойте их сумму. Выведете значение третей переменной на экран.
  3. Напишите программу, которая просит пользователя ввести два числа (сначала одно, потом второе), а затем выведете на экран сумму этих двух чисел.
  4. Напишите программу, которая просит пользователя вводить числа до тех пор, пока не встретится число больше 12-ти, когда оно встретится напечатайте (выведете в консоль) сообщение об этом и завершите выполнение программы.

Задачи к уроку #2 (типы данных)

  1. Напишите программу, в которой используются две переменные логического типа (boolean), присвойте им значения и выведете для каждой переменной на экран строку "истина", если переменная имеет значение true и "ложь", если переменная имеет значение false.
  2. Переделайте предыдущую задачу для 3-х переменных, литералы "истина" и "ложь" запишите в переменные, и используйте эти две строковые переменные для уведомления пользователя об истинности/ложности каждой из трёх логических переменных (предварительно присвойте им логические значения).
  3. Напишите программу, где двум строковым переменным присваиваются значения, третей же строковой переменных присвойте объединение (конкатенацию) двух предыдущих строк. Затем напечатайте значение третьей строковой переменной.
  4. Напишите программу, сравнивающую вещественное число с целым (сами присвойте им значения), записывающую логический результат сравнения в логическую (boolean) переменную и использующую эту переменную для вывода с помощью условного оператора if фраз "выражения истинно", "выражение ложно". Обе фразы выводите на экран с помощью переменных строкового типа (string).

Задачи к уроку #3 (ввод/вывод данных)

  1. Напишите программу которая просит пользователя ввести два символа (сначала один, потом второй). Выведите полученные значения на экран с комментариями
  2. Напишите программу которая просит пользователя ввести две строки, затем проводит их конкатенацию и выводит на экран результат конкатенации с комментарием.
  3. Напишите программу, где пользователю предлагается ввести строку, считайте первые три символа в переменные символьного типа (char), первый и третий символы выведите на экран.
  4. Пусть пользователь вводит строку:
    1234567

    (или любую другую, но достаточно длинную)

    • считайте из неё 5-й символ, используя возможность read() записывать значений во многие переменные сразу (если эти значения есть в потоке ввода), например:
      read(a, b, c);

      Выведите полученный символ на экран.

    • Также считайте 5-ый символ (и выведите его на экран), но используя в read() только одну переменную.

Задачи к уроку #4 (условный оператор if)

  1. Создайте программу с двумя переменными целого типа, присвойте им значения, если первая переменная больше второй, то увеличьте её значение на 3, иначе увеличьте значение второй переменной на 8. В конце программы выведите значения обоих чисел на экран.

    Подсказка: напоминаем, что в Pascal возможны выражения вида:

    a = a + 2; // увеличение значение на 2

    или

    a = a + b; // увеличение значения на значение переменной b
  2. Напишите программу, которая считывает из консоли (от пользователя) два числа. Если 1-ое больше 2-ого, то второму присвойте значение 1, иначе 1-ому присвойте значение 5, а второму 7.
    В конце программы выведите значения обоих чисел на экран.
  3. Пользователь вводит целое число. Сообщите в консоли о его (числа) четности/нечётности.

    Подсказка: для проверки четности можно использовать операцию получения остатка mod.

  4. Пусть пользователь указал 3 целых числа, напишите программу которая:
    • Выведет на экран максимальное из них.
    • Выведет на экран минимальное из них.

Задачи к уроку #5 (циклы)

  1. Выведете на экран все числа от 1 до 100 с помощью цикла (можно все три варианта в одной программе):
    • for
    • while
    • repeat
  2. Модифицируйте предыдущую задачу так, чтобы на экран выводились только нечетные числа.
  3. Пользователь вводит целое положительное число, если оно не соответствует критериям (то есть не является целым и положительным), выведете сообщение об ошибке, в противном случае выведете на экран все числа от 1 до введённого пользователем.
  4. Модифицируйте предыдущую задачу так, чтобы в случае, если число удовлетворяет требованиям (целое, положительное), то на экран выводились четные числа.
  5. Выведете на экран числа от 1 до 5 два раза с помощью вложенных циклов. Так чтобы в консоли было:
    1 2 3 4 5
    1 2 3 4 5
    
  6. M раз выведете на экран числа от 1 до N с помощью вложенных циклов. Так чтобы в консоли было:
    $
    \left.
    \begin{array}{ccc}
    1 & ... & N \\
    1 & ... & N \\
    \end{array}
    \right\} \text{M раз}
    $
  7. Модифицируйте предыдущую задачу так, чтобы в каждой чётной (той, у которой номер чётный) строке выводилось N символов, а в каждой нечетной N/2 символов (сделайте проверку того, что $N/2$ больше нуля)
  8. Пользователь вводит числа до тех пор пока им не будет передан ноль. В ответ на каждое число программа должна сообщать чётное оно или нет.
  9. Пользователь вводит четное целое число (если нечетное сообщите об ошибке). Делите это число в цикле на $2$ до тех пор пока оно делится, выводя каждый промежуточный результат, например для $12$ в консоли получим:
    6
    3

    А для 8:

    4
    2
    1
  10. Пользователь два целых числа $M$ и $N$ целое число, если $M$ четное, делайте то же, что и в предыдущей задачи, а если нечётное, то умножайте $M$ в цикле на $3$ до тех пор пока результат не станет больше $N$ (и выводите ), например для:
    M := 2;
    N := 15;

    Получим:

    6
    18
  11. С помощью вложенных циклов выведите на экран таблицу умножения числе от 1 до 9, начнётся она как-то так:
    1x1 = 1
    1x2 = 2
    ......
  12. С помощью вложенных циклов выведите на экран таблицу деления чисел от 1 до 9.
  13. Пользователь вводит целое положительное число$N$, если оно не соответствует критериям (то есть не является целым и положительным), выведете сообщение об ошибке, в противном случае выведите на экран все числа последовательности, не большие $N$, сформированной следующим образом:
    8 10 3 12 14 3 16 18 3 20 22 3 и т.д.

    -- то есть всё начинается с восьмерки, затем число увеличивается на 2, затем выводит тройка и ещё пара увеличенных на 2 чисел и т.д.

  14. Модифицируйте решение предыдущей задачи. так чтобы пользователь вводил второе число $M$, которое отвечало бы за длину возрастающего фрагмента, например для $M=4$:
    $ \underbrace{8 \;10 \;12 \;14}_{\text{четыре числа}} \;3 \underbrace{\;16 \;18 \;20 \;22}_{\text{четыре числа}} \;3 \; .... \;3 \;.... \;\text{и т.д.} $

    Заметьте. что в предыдущей задаче $M$ было зафиксировано $=2$:
    $ \underbrace{8 \;10}_{\text{два числа}} \;3 \underbrace{\;14 \;16}_{\text{два числа}} \;3 \; .... \;3 \;.... \;\text{и т.д.} $

  15. Пользователь передает целое положительное число $N$, выведете на экран последовательность от $1$ до $N$ "ёлочкой", например для $N = 17$:
    1
    2 3
    4 5 6
    7 5 9 10
    12 13 15 16
    17 
  16. Пользователь передает целые положительные число $N$ и $M$, выведете на экран последовательность от $1$ до $N$, так чтобы ширина "ёлочки" увеличивалась до $M$ чисел, то уменьшалась до $1$. Например, для $M = 3$ и $N = 25$ получим:
    $
    1\; \\
    2\; 3\; \\
    4\; 5\; 6\;\;\;\;\;\;\;\;\; \text{--максимум три числа} \\
    7\; 5\; \\
    9\; \\
    10\; 17\; \\
    18\; 19\; 20\;\;\;\;\;\;\; \text{--снова три числа} \\
    21\; 22\; \\
    23\; \\
    24\; 25\;.....
    $
  17. Пользователь передает целые положительные число $N$, выведете на экран последовательность от $1$ до $N$, так чтобы ширина "ёлочки" росла волнами. Например, для $M = 49$ получим:
    $
    1\; \\
    2\; 3\; \;\;\;\;\;\;\;\; \text{--сначала до двух} \\
    4\; \\
    5\; 6\; \\
    7\; 8\; 9\; \;\;\;\;\;\;\;\; \text{--потом до трёх} \\
    10\; 11\; \\
    12\; \;\;\;\;\;\;\;\; \text{--возвращаемся к одному} \\
    13\; 14\; \\
    15\; 16\; 17\; \\
    18\; 19\; 20\; 21\; \;\;\;\;\;\;\;\; \text{--тут уже четыре} \\
    22\; 23\; 24\; \\
    25\; 26\; \;\;\;\;\;\;\;\; \text{--снова убывает } \\
    27\; \\
    28\; 29\; \\
    30\; 31\; 32\; \\
    33\; 34\; 35\; 36\; \\
    37\; 38\; 39\; 40\; 41\; \\
    42\; 43\; 44\; 45\; \\
    46\; 47\; 48\; \\
    49\;
    $
fgh's picture

 $j=1;
$k=1;
$m = 17;
while ( $j<= $m) {
    for ($i=1; $i<=$k;$i++) {
        if ($j <= $m){
           echo " ",$j," ";
        } else {
            break;
        }
        $j++;
    }
    $k++;
    echo "<BR>";
}
 ?>