Nano C - интерпретатор языка C

Программа доступна на AppStore.

Превращаем мобильные устройства в полноценный компьютер

Что делает компьютер компьютером? Собственно, это следует из его название, происходящего от слова compute – вычислять. Да, он должен вычислять. Но не как калькулятор или даже программируемый калькулятор. Компьютер должен давать нам возможность запрограммировать сложные алгоритмы расчёта, вводить исходные данные и получать результаты не только в виде чисел, но и текстов, графиков и диаграмм.

Nano C – это интерпретатор языка Си для iPhone и iPad. Nano C позволяет производить произвольные расчёты на мобильном устройстве и выводить на экран результаты в текстовом и графическом представлении.

Программу и результаты её работы можно отправить на email. Поддерживаются шаблоны быстрого ввода языковых конструкций.

В данной версии реализованы следующие элементы языка Си:

  • Оператор if – else
  • Оператор switch
  • Операторы цикла for, while, do – while. Поддерживается break и continue.
  • Переменные int, float и char.
  • Массивы типов int, float и char.
  • Функции типов void, int, float и char. Оператор возврата из функции return.
  • Математические функции abs, acos, asin, atan, ceil, cos, random, exp, fabs, floor, log, log10, rint, sin, sinh, sqrt, tan, tanh, atan2, fmod, pow.
  • Функции текстового вывода printf и print.
  • Функция консольного ввода get.
  • Специфические функции графического вывода moveto, line, circle, pixel, setcolor, setwidth.
  • Специфические функции построения диаграмм linechart, barchart, piechart.
  • Функция sizeof.
  • Функции chr, ord, strlen, strcmp, strchr, strstr, strlwr, strupr, substr, str_replace.
  • Операторы +, -, *, /, %, <, >, <=, >=, ==, !=, ++, --, +=, -=, /=, *=, %=.

Примеры программ на языке C

1. Переменные
float gl_a, gl_b; // Глобальные переменные
int main()
{
   // Локальные переменные
   int x = 5, y = 6, z;
   char c = 'Some text';
   gl_a = 8.25;
   z = x * y + 3 - gl_a;
   if(z > 10) print('text 1'); else print('text 2');
   print('Hello, World! ' + z);
}

2. Строковые функции
void main()
{
   char str1 = "Hello";
   char str2 = "World";
   char str3;
   int  len;

   // Копирование str1 в str3
   str3 = str1;
   printf("strcmp(str1, str3) :  %d\n", strcmp(str1, str3));
   printf("strcmp(str1, str2) :  %d\n", strcmp(str1, str2));

   // Объединение строки str1 с str2
   str1 = str1 + str2;
   printf("strcat(str1, str2):   %s\n", str1);

   // Длина строки str1 после объединения
   len = strlen(str1);
   printf("strlen(str1) :  %d\n", len);

   // Найти символ в строке
   printf("strchr(str1, 'y'):   %d\n", strchr(str1, 'y'));
   printf("strchr(str1, 'W'):   %d\n", strchr(str1, 'W'));

   // Найти подстроку в строке
   printf("strstr(str1, 'lli'):   %d\n", strstr(str1, 'lli'));
   printf("strstr(str1, 'llo'):   %d\n", strstr(str1, 'llo'));

   // Преобразовать строку в нижний регистр
   printf("strlwr(str3):   %s\n", strlwr(str3));

   // Преобразовать строку в верхний регистр
   printf("strupr(str3):   %s\n", strupr(str3));

   // Получить подстроку в строке
   printf("substr(str1, 2, 5):   %s\n", substr(str1, 2, 5));


   // Заменить все совпадения подстроки
   // str_replace (string, substr, replacement)
   printf("str_replace (str1, 'o', 'a'):   %s\n", str_replace (str1, 'o', 'a'));

}
3. Массивы и циклы
int main()
{
   // Массив без данных
   int ar[];\n
   // Массив с данными
   char ch[] = {'one', 'two', 'three'};
   // Массив размером в 100 ячеек
   float f[100] = {1.5, 2.2, 3};\n
   // Добавление данных в массив
   for(int i = 0; i < 5; i++)
   {
       ar[] = i * 10;
   }\n
   print('Data from array ar');
   // Печать данных из массива
   for(i = 0; i < sizeof(ar); i++)
   {
       print(ar[i]);
   }\n
   // For - цикл
   print('');
   print('for');
   for(int j = 0; j < sizeof(ch); j++) { print(ch[j]); }
   // do-while - цикл
   print('');
   print('do - while');
   i = 0;
   do
   {
       print( ++i * 5);
   } while(i < 5)\n
   // while - цикл
   print('');
   print('while');
   int x = 5;
   while(x > 0)
   {
       print(x--);
   }
}

4. Факториал
int main()
{
   int number = get('Введите число');
   int fact = 1;
   printf('%d! = %d', number, factorial(number));
}
int factorial(int n)
{
   int result = 1;
   for (int c = 1; c <= n; c++)
   {
       result = result * c;
   }
   return result;
}



Скриншоты

Нано C: Редактор Нано C: Файлы
Нано C: Помощь Нано C: Линейчатый график
Нано C: Гистограмма Нано C: Круговая диаграмма
Нано C: Фрактал дерево Нано C: Фрактал Серпинского

Ограничения Nano C.

  • Блоки операторов цикла всегда должны быть заключены в фигурные скобки.
  • Ограниченная библиотека стандартных функций, которая будет дополнена в следующих релизах программы.

Описание встроенных функций Nano C.

  • Print – вывод на экран текстовой информации. Всегда печатает с новой строки.
    Формат print(<Выражение или константа 1>, <Выражение или константа 2>, <Выражение или константа>….);
    Примеры
    Print(‘Hello, World!’);
    Int x = 10;
    char name = “John”;
    print(“Hi, ”, name, “. You get ”, x * 2 + 3);
  • Printf – форматированный вывод на экран текстовой информации
    Формат printf(<Строка формата>, <Значение плейсхолдера 1>, <Значение плейсхолдера 2>…);
    Примеры
    Printf(‘Hello, World!’);
    Int x = 10;
    char name = “John”;
    printf(“Hi, %s . You get %d”, name, x * 2 + 3);
    Типы поддерживаемых плейсхолдеров %s – строка, %d – целое число, %f – дробное число.
  • get – Ввод данных с консоли.
    Формат get(<Сообщение>);
    Примеры
    char name = get('What is your name?');
    print(“Hi, ”, name);

    char c;
    while((c = get("Enter your name")) != '')
    {
    printf("Hi, %s\n",c);
    }
  • Sizeof – Размер переменной.
    Вычисляет длину строки или количество элементов в массиве.
  • Moveto – переместиться к заданным координатам.
    Формат moveto(<X>, <Y>);
  • Line (Addline) – нарисовать линию от текущего положения до заданных координат.
    Формат line(<X>, <Y>);
  • Circle – нарисовать окружность
    Формат circle(<X>, <Y>, <Радиус>);
  • Pixel – нарисовать точку
    Формат pixel(<X>, <Y>);
  • Setcolor – установить цвет линии
    Формат setcolor(<R>, <G>, <B>); // RGB 0...255
  • Setwidth – установить толщину линии
    Формат setwidth(<Толщина линии>);
  • linechart – нарисовать линейную диаграмму
    Формат linechart(<массив значений>, <массив названий>);
    Пример

    float vals[] = {-10,-24,14};
    char labels[] = {'January', 'February', 'March'};
    linechart(vals, labels);\n"

    Пример мультидиаграммы
    float vals[];
    vals[] = {-10,-24,14,18,28};
    vals[] = {10,24,20,18,16};
    vals[] = {20,30,25};
    char labels[] = {'January', 'February', 'March', 'April', 'May'};
    linechart(vals, labels);
  • barchart – нарисовать столбчатую диаграмму
    Формат barchart(<массив значений>, <массив названий>);
    Пример

    float vals[] = {-10,-24,14};
    char labels[] = {'January', 'February', 'March'};
    barchart(vals, labels);\n"

    Пример мультидиаграммы
    float vals[];
    vals[] = {-10,-24,14,18,28};
    vals[] = {10,24,20,18,16};
    vals[] = {20,30,25};
    char labels[] = {'January', 'February', 'March', 'April', 'May'};
    barchart(vals, labels);
  • piechart – нарисовать круговую диаграмму
    Format piechart(<массив значений>, <массив названий>);
    Пример

    float vals[] = {10,24,14,18,28,40,30,20,15,16,8,4,3,1};
    char labels[] = {'January', 'February', 'March', 'April', 'May'};
    piechart(vals, labels);\n"
Оглавление
Новости

01.04.2017
Новое приложение Нано бронирование гостиниц для Android опубликовано на Google Play.

07.03.2017
На сайте MacDigger опубликован обзор приложения Нано менеджер продаж.

06.12.2016
Опубликован пресс-релиз на prMac приложения Нано менеджер продаж.

05.07.2016
Новое приложение Нано менеджер продаж опубликовано на AppStore.

Все новости »