]]> ]]>
Править | Обсудить | История

Pike

Дата создания:
1994
Создан под влиянием:
Парадигма:
Типизация:
Принятые расширения файлов:
.pike
Реализации и версии (свернуть все | развернуть все):
Язык программирования

Pike — динамический интерпретируемый язык с C-подобным синтаксисом.

Pike был создан в 1994 году как GPL-версия языка LPC, который нельзя было использовать в коммерческих целях. Изначально он назывался µLPC (микро-LPC), но позднее был переименован.

Pike — объектно-ориентированный язык, со встроенным сборщиком мусора и гибкой системой типов. Он считается одним из самых быстрых существующих скриптовых языков.

Элементы синтаксиса:

Комментарий до конца строки //
Комментарии, которые не могут быть вложенными /* ... */
Регистрозависимость да
Присваивание значения переменной varname = value
Группировка выражений ( ... )
Блок { ... }
Равенство ==
Неравенство !=
Тождественное равенство equal
Сравнение < > <= >=
Определение функции returntype f(type1 p1, type2 p2, ...)
Вызов функции f(a,b,...)
Вызов функции без параметров f()
Последовательность , ;
Если - то if (condition) ...
Если - то - иначе if (condition) ... else ...
Цикл с предусловием while (condition) ...
Цикл с постусловием do ... while (!condition)
Цикл for - next для диапазона целых чисел с инкрементом на 1 for (int i = 1; i <= 10; i++) ...
Цикл for - next для диапазона целых чисел с декрементом на 1 for (int i = 10; i >= 1; i--) ...

Логотип Pike
Логотип Pike

Примеры:

Hello, World!:

Пример для версий Pike 7.6, Pike 7.8
int main() {
    write("Hello, World!\n");
    return 0;
}

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

Пример для версий Pike 7.6, Pike 7.8

Используется рекурсивное определение чисел Фибоначчи.

int fibonacci(int n) {
    return ( n<=2 ? 1 : fibonacci(n-1) + fibonacci(n-2) );
}

int main() {
    for (int n=1; n<=16; n++)
        write(fibonacci(n)+", ");
    write("...\n");
    return 0;
}

Факториал:

Пример для версий Pike 7.6, Pike 7.8

Используется рекурсивное определение факториала. Тип int может содержать произвольно большие числа.

int factorial(int n) {
    return ( n<=1 ? 1 : n * factorial(n-1) );
}

int main() {
    for (int n=0; n<=16; n++)
        write(n+"! = "+factorial(n)+"\n");
    return 0;
}

Квадратное уравнение:

Пример для версий Pike 7.6, Pike 7.8
int main() {
    int A = (int)Stdio.stdin->gets();
    if (A == 0) {
        write("Not a quadratic equation.\n");
        return 0;
    }
    int B = (int)Stdio.stdin->gets();
    int C = (int)Stdio.stdin->gets();
    int D = (B*B-4*A*C);
    write(D+"\n");
    if (D == 0)
        write(sprintf("x = %f\n",-B/2.0/A));
    else if (D > 0) {
        write(sprintf("x1 = %f\n", (-B+sqrt(D))/2.0/A));
        write(sprintf("x2 = %f\n", (-B-sqrt(D))/2.0/A));
    }
    else {
        write(sprintf("x1 = (%f, %f)\n", -B/2.0/A, sqrt(-D)/2.0/A));
        write(sprintf("x1 = (%f, %f)\n", -B/2.0/A, -sqrt(-D)/2.0/A));
    }
    return 0;
}

CamelCase:

Пример для версий Pike 7.6, Pike 7.8

Эта программа обрабатывает введенную строку посимвольно. Единственный нюанс — в системе типов Pike отсутствует тип “символ”, поэтому text[i] — не строка, а число — ASCII-код символа. Чтобы получить строку, нужно использовать text[i..i] — операцию извлечения подстроки.

int main() {
    string text = lower_case(Stdio.stdin->gets()), cc = "";
    int i, lastSpace = 1;
    for (i=0; i<strlen(text); i++) {
        if (text[i] >= 'a' && text[i] <= 'z') {
            if (lastSpace == 1)
                cc += upper_case(text[i..i]);
            else
                cc += text[i..i];
            lastSpace = 0;
        }
        else
            lastSpace = 1;
    }
    write(cc+"\n");
    return 0;
}

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам