Условные конструкции, циклы, массивы и библтотеки

This commit is contained in:
SkrinVex
2025-12-25 16:59:15 +05:00
parent 8ca31ea877
commit 47368b374f
12 changed files with 599 additions and 172 deletions
+38
View File
@@ -0,0 +1,38 @@
print(">>> Library 'lib_utils.fox' loaded successfully!");
// Глобальные переменные для передачи "аргументов" в функции
// (так как в v4.0 аргументы передаются через глобальную память)
int arg_val = 0;
int return_val = 0;
// --- Функция 1: Вычисление факториала ---
void factorial() {
int counter = 1;
int result = 1;
// Цикл while
while (counter < arg_val + 1) {
result = result * counter;
counter = counter + 1;
}
return_val = result;
}
// --- Функция 2: Красивый заголовок ---
void printHeader() {
print("===================================");
print(" FOX LANG v4.0 DEMO SYSTEM ");
print("===================================");
fox(); // Вызов встроенной лисы
}
// --- Функция 3: Проверка четности ---
void checkParity() {
// Используем оператор остатка %
int rem = arg_val % 2;
if (rem == 0) {
print("Number " + arg_val + " is EVEN (Chetnoe).");
} else {
print("Number " + arg_val + " is ODD (Nechetnoe).");
}
}
+102
View File
@@ -0,0 +1,102 @@
// 1. Подключаем нашу библиотеку
include("lib_utils.fox");
// Используем функцию из библиотеки
printHeader();
// ==========================================
// ЧАСТЬ 1: Работа с вводом и условиями
// ==========================================
print("");
print("--- Step 1: User Interaction ---");
print("Enter your name:");
string name = input();
if (name == "Fox") {
print("Hello, Creator!");
} else {
print("Welcome, user " + name);
}
// ==========================================
// ЧАСТЬ 2: Математика и Библиотечные функции
// ==========================================
print("");
print("--- Step 2: Math & Logic ---");
print("Enter a small number to calculate Factorial:");
string inputNum = input();
int num = inputNum; // Автоматическое преобразование типов (строка -> число)
// Передаем аргумент через глобальную переменную библиотеки
arg_val = num;
factorial(); // Вызываем функцию из lib_utils.fox
print("Factorial of " + num + " is: " + return_val);
// Проверяем на четность
checkParity();
// ==========================================
// ЧАСТЬ 3: Массивы и Сортировка (Bubble Sort)
// ==========================================
print("");
print("--- Step 3: Array Sorting (Bubble Sort) ---");
// Объявляем массив на 5 элементов
int arrSize = 5;
array myNumbers arrSize;
// Заполняем массив случайными числами
int i = 0;
while (i < arrSize) {
int rnd = random();
set(myNumbers, i, rnd);
i = i + 1;
}
// Выводим исходный массив
print("Original Array:");
int k = 0;
while (k < arrSize) {
print("Index " + k + ": " + get(myNumbers, k));
k = k + 1;
}
print("Sorting now... please wait...");
// Реализация сортировки пузырьком
int n = arrSize;
int pass = 0;
// Внешний цикл
while (pass < n) {
int j = 0;
// Внутренний цикл (n - 1)
while (j < n - 1) {
// Получаем два соседних элемента
int val1 = get(myNumbers, j);
int val2 = get(myNumbers, j + 1);
// Если левый больше правого - меняем местами
if (val1 > val2) {
set(myNumbers, j, val2);
set(myNumbers, j + 1, val1);
}
j = j + 1;
}
pass = pass + 1;
}
// Выводим отсортированный массив
print("Sorted Array (Result):");
k = 0;
while (k < arrSize) {
print("Index " + k + ": " + get(myNumbers, k));
k = k + 1;
}
// ==========================================
// ФИНАЛ
// ==========================================
print("");
print("Test Complete. FoxLang is working perfectly!");