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
Ссылки:
Примеры:
Hello, World!:
Пример для версий Pike 7.6, Pike 7.8int 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.8int 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
]]>