📖 Документация Qumir

← Вернуться в Playground

Примеры программ

Коллекция готовых программ для изучения языка и алгоритмов.

Базовые примеры

Hello World

алг
нач
    вывод "Привет, мир!", нс
кон

Ввод и вывод

алг
нач
    лит имя
    вывод "Как вас зовут? "
    ввод имя
    вывод "Привет, ", имя, "!", нс
кон

Сумма чисел

алг
нач
    цел a, b
    вывод "Введите два числа: "
    ввод a, b
    вывод a, " + ", b, " = ", a + b, нс
кон

Математика

Факториал (рекурсия)

алг
нач
    цел n
    вывод "n = "
    ввод n
    вывод n, "! = ", факториал(n), нс
кон

алг цел факториал(цел n)
нач
    если n <= 1
    то
        знач := 1
    иначе
        знач := n * факториал(n - 1)
    все
кон

Факториал (цикл)

алг цел факториал(цел n)
нач
    цел результат, i
    результат := 1
    нц для i от 2 до n
        результат := результат * i
    кц
    знач := результат
кон

Числа Фибоначчи

алг
нач
    цел i
    нц для i от 1 до 20
        вывод фибоначчи(i), " "
    кц
    вывод нс
кон

алг цел фибоначчи(цел n)
нач
    если n <= 2
    то
        знач := 1
    иначе
        знач := фибоначчи(n - 1) + фибоначчи(n - 2)
    все
кон

Наибольший общий делитель (НОД)

алг
нач
    вывод "НОД(48, 18) = ", нод(48, 18), нс
кон

алг цел нод(цел a, цел b)
нач
    нц пока b <> 0
        цел t
        t := b
        b := mod(a, b)
        a := t
    кц
    знач := a
кон

Проверка на простоту

алг
нач
    цел i
    вывод "Простые числа до 100:", нс
    нц для i от 2 до 100
        если простое(i)
        то
            вывод i, " "
        все
    кц
    вывод нс
кон

алг лог простое(цел n)
нач
    если n < 2
    то
        знач := ложь
    иначе
        цел i
        знач := истина
        нц для i от 2 до int(sqrt(n))
            если mod(n, i) = 0
            то
                знач := ложь
            все
        кц
    все
кон

Алгоритмы сортировки

Сортировка пузырьком

алг
нач
    цел N = 10
    цел таб A[1:N]
    цел i, j, t

    | Заполняем случайными числами
    нц для i от 1 до N
        A[i] := rnd(100)
    кц

    | Сортировка
    нц для i от 1 до N - 1
        нц для j от 1 до N - i
            если A[j] > A[j + 1]
            то
                t := A[j]
                A[j] := A[j + 1]
                A[j + 1] := t
            все
        кц
    кц

    | Вывод
    нц для i от 1 до N
        вывод A[i], " "
    кц
    вывод нс
кон

Сортировка выбором

алг
нач
    цел N = 10
    цел таб A[1:N]
    цел i, j, minIdx, t

    | Заполняем
    нц для i от 1 до N
        A[i] := N - i + 1  | обратный порядок
    кц

    | Сортировка
    нц для i от 1 до N - 1
        minIdx := i
        нц для j от i + 1 до N
            если A[j] < A[minIdx]
            то
                minIdx := j
            все
        кц
        если minIdx <> i
        то
            t := A[i]
            A[i] := A[minIdx]
            A[minIdx] := t
        все
    кц

    | Вывод
    нц для i от 1 до N
        вывод A[i], " "
    кц
    вывод нс
кон

Быстрая сортировка

алг
нач
    цел N = 10
    цел таб A[1:N]
    цел i

    | Заполняем случайными числами
    нц для i от 1 до N
        A[i] := rnd(100)
    кц

    быстрая_сортировка(A, 1, N)

    | Вывод
    нц для i от 1 до N
        вывод A[i], " "
    кц
    вывод нс
кон

алг быстрая_сортировка(цел таб A[], цел низ, цел верх)
нач
    если низ < верх
    то
        цел опорный, i, j, t
        опорный := A[div(низ + верх, 2)]
        i := низ
        j := верх

        нц пока i <= j
            нц пока A[i] < опорный
                i := i + 1
            кц
            нц пока A[j] > опорный
                j := j - 1
            кц
            если i <= j
            то
                t := A[i]
                A[i] := A[j]
                A[j] := t
                i := i + 1
                j := j - 1
            все
        кц

        быстрая_сортировка(A, низ, j)
        быстрая_сортировка(A, i, верх)
    все
кон

Работа со строками

Переворот строки

алг
нач
    вывод перевернуть("Привет"), нс  | тевирП
кон

алг лит перевернуть(лит s)
нач
    лит результат
    цел i
    результат := ""
    нц для i от длин(s) до 1 шаг -1
        результат := результат + s[i]
    кц
    знач := результат
кон

Проверка палиндрома

алг лог палиндром(лит s)
нач
    цел i, j
    i := 1
    j := длин(s)
    знач := истина
    нц пока i < j
        если s[i] <> s[j]
        то
            знач := ложь
        все
        i := i + 1
        j := j - 1
    кц
кон

Черепашья графика

Многоугольник

использовать Черепаха
алг
нач
    многоугольник(6, 80)  | шестиугольник
кон

алг многоугольник(цел n, вещ сторона)
нач
    вещ угол
    угол := 360.0 / n
    нц для i от 1 до n
        вперед(сторона)
        вправо(угол)
    кц
кон

Спираль из квадратов

использовать Черепаха
алг
нач
    вещ размер
    размер := 10
    нц для i от 1 до 30
        нц для j от 1 до 4
            вперед(размер)
            вправо(90)
        кц
        размер := размер + 5
        вправо(15)
    кц
кон

Робот

Закрасить диагональ

использовать Робот
алг
нач
    нц пока справа свободно и снизу свободно
        закрасить
        вправо
        вниз
    кц
    закрасить
кон

Найти и закрасить угол

использовать Робот
алг
нач
    | Идём в правый нижний угол
    нц пока справа свободно
        вправо
    кц
    нц пока снизу свободно
        вниз
    кц
    закрасить
кон

Онлайн-примеры

Больше примеров доступно в онлайн-песочнице:

См. также