]]> ]]>

Objeck 2.0.3

Версия реализации Objeck языка программирования Objeck

Версия компилятора Objeck, выпущенная 23 августа 2011 года. Список изменений:

  • Исправлена критическая ошибка, из-за которой ряд программ сбоили при компиляции со встраиванием методов (этот режим был включен по умолчанию, начиная с версий 2.0.x).
  • Открытие файла в режиме записи или чтения/записи удаляет существующий файл с тем же именем.
  • Все файлы открываются в бинарном режиме.
  • Исправлен метод Post класса HttpClient
  • Улучшен метод хеширования строк

Примеры:

Hello, World! - Objeck (395):

bundle Default {
	class Hello {
		function : Main(args : String[]) ~ Nil {
			"Hello, World!"->PrintLine();
		}
	}
}

Факториал - Objeck (396):

Используется встроенная функция Factorial.

bundle Default {
    class Factorial {
        function : Main(args : String[]) ~ Nil {
            for (i := 0; i <= 16; i += 1;) {
                i->Print();
                "! = "->Print();
                i->Factorial()->PrintLine();
            };
        }
    }
}

Числа Фибоначчи - Objeck (397):

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

bundle Default {
    class Fib {
        function :  Fibonacci (n: Int) ~ Int {
            if (n<=2) {
                return 1;
            };
            return Fibonacci(n-1) + Fibonacci(n-2);
        }
        function : Main(args : String[]) ~ Nil {
            for (i := 0; i <= 16; i += 1;) {
                Fibonacci(i)->Print();
                ", "->Print();
            };
            "..."->PrintLine();
        }
    }
}

Квадратное уравнение - Objeck (398):

use IO;

bundle Default {
    class Quadratic {
        function : Main(args : String[]) ~ Nil {
            A := Console->ReadString()->ToInt();
            if (A=0) {
                "Not a quadratic equation."->PrintLine();
                return;
            };
            B := Console->ReadString()->ToInt();
            C := Console->ReadString()->ToInt();
            D := 1.0*(B*B-4*A*C);
            if (D=0) {
                "x = "->Print();
                (0-B/2.0/A)->PrintLine();
            };
            if (D>0) {
                "x1 = "->Print();
                ((0-B+(D->SquareRoot()))/2.0/A)->PrintLine();
                "x2 = "->Print();
                ((0-B-(D->SquareRoot()))/2.0/A)->PrintLine();
            };
            if (D<0) {
                out := "x1 = (";
                out->Append(0-B/2.0/A);
                out->Append(",");
                out->Append(((D->Abs())->SquareRoot())/2/A);
                out->Append(")");
                out->PrintLine();
                out := "x2 = (";
                out->Append(0-B/2.0/A);
                out->Append(",");
                out->Append(0-((D->Abs())->SquareRoot())/2/A);
                out->Append(")");
                out->PrintLine();
            };
        }
    }
}

Комментарии

]]>

blog comments powered by Disqus

]]>

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