Здравствуйте, уважаемые подписчики!
В еженедельных выпусках мы будем представлять вам обзоры бесплатных и свободных программ; описание функциональных возможностей и документацию по работе с этими программами. Для тех, кто не только использует программы, но и пишет собственные, будут интересны полезные статьи и заметки по программированию.
Вам срочно нужно решить задачу, но нет соответствующей программы? Мы собрали основные свободные и открытые программы вместе. Вы можете загрузить обновленный (от 12.04.2009) список всех бесплатных и свободных программ, представленных на нашем сайте.
Хотите получать полезную информацию каждую неделю прямо на почтовый ящик? Посмотрите все наши рассылки. Каждый найдет для себя что-то интересное и полезное. Выпуски выходят раз в неделю в воскресенье.
Аудиокниги на английском для детей
В этом выпуске мы для пробы добавили несколько аудиокниг. Если вам интересно, то мы продолжим включать в выпуски информацию о свободных аудиокнигах.
- Piggis Play Games - аудиокнига и текст (mp3-формат)
- The Tale of Peter Rabbit - самая популярная история для детей - аудиокнига и текст (mp3-формат)
Игры
- Freeciv 2.1.9 - постройте свою цивилизацию. Версия под ОС Windows и GNU/Linux.
- SimuTrans 102 - транспортный симулятор. Версия под ОС Windows и GNU/Linux. Отдельно предлагается 8 графических тем для транспорта и городов.
Запись CD/DVD
- InfraRecorder 0.46.2 - установочная и портативная версия под ОС Windows.
Программирование
- Python 3.0.1. Версия под ОС Windows и GNU/Linux.
Утилиты
- doPDF 6.2.294 - виртуальный PDF принтер (печать в PDF файл) под ОС Windows.
- UPX 3.03. UPX (the Ultimate Packer for eXecutables) — упаковщик исполняемых файлов, поддерживающий несколько различных платформ и форматов файлов. Является свободным и открытым программным обеспечением, и распространяется по лицензии GNU GPL.
Программирование в Си. Урок #2.
В этом уроке напишем не самую простую программу на Си. Главная цель урока - попробовать написание программ с использованием основных типов данных.
Хорошим стилем будет в начале каждой программы и в наиболее сложных местах кода помещать комментарии. Многострочный комментарий помещается между символами /*
и */
. Строчный комментарий начинается символами //
- все содержимое до конца строки игнорируется компилятором.
/* Первая программа на Си. С комментариями */
Далее подключаются библиотеки и заголовочные файлы. Подключим стандартную библиотеку ввода вывода
Каждая программа на Си (как и на С++) должна содержать основную функция main(). Если эта функция возвращает значение, то перед ней указывается тип, если же функция ничего не возвращает, то вместо типа указывается void
. Логично, если главная функция будет возвращать целое значение, т.к. это значение указывает успешно или аварийно завершилось выполнение программы (значение переменной %errorlevel% в ОС Windows или $status в GNU/Linux). Успешно завершенная программа возвращает 0, аварийно завершенная программа - значение отличное от 0 (разные значение указывают на вид ошибки). Минимальная программа будет содержить следующий код:
int main(){ // Здесь код программы return 0; // успешное завершение }
Для того, чтобы понять работу статуса завершения (или кода завершения) создадим файл first.c
и запишем в него код примера. Далее компилируем, запускаем и проверяем возвращаемый статус завершения (GNU/Linux):
gcc first.c ./a.out echo $status
После третьей команды в консоль выведется значение 0. Если мы укажем в return
другое значение, то и после завершения работы программы результат переменной $status соответственно изменится. В ОС Windows для проверки используйте команду echo %errorlevel%
в командной оболочке. Отметим, что по такому принципу работают все стандартные команды. Например, если в команде перехода в каталог, вы укажите несуществующую папку, то изменится статус завершения команды на значение 1 (попробуйте команду cd qqq
, где qqq - имя несуществующего каталога).
Следующий код показывает работу с целыми числами и числами с плавающей точкой. Для описания пременной мы указываем тип данных, далее, через запятую, список переменных данного типа. В объявлении переменных мы можем сразу же присвоить значение. В Си нет необходимости описывать переменные начале программы - описание может происходить в любом месте программы перед использованием данной переменной. Все команды в Си разделяются символом точки с запятой. Повторяющиеся пробелы и переносы строк игнорируются. В примере объявляются целочисленные переменные a, b, c и переменная с плавающей точкой d. Для присваивания значения переменной используется символ "=", для арифметических операций: "+" (сложить), "-" (вычесть), "*" (умножить), "/" (разделить). Приоритет у операций умножение и деления выше, чем у сложения и вычитания.
int a = 1, b = 2, c; // Целочисленные переменные c = a + b; // c = 3 printf("c = %i\n", c); // Форматный вывод c = a / b; // Целочисленное деление c = 0 printf("c = %i\n", c); // Форматный вывод float d; d = a / b; // Целочисленное деление d = 0 printf("d = %.4f\n", d); // Форматный вывод d = (float) a / b; // Нецелочисленное деление printf("d = %.4f\n", d); // Форматный вывод
Чтобы избежать в дальнейшем головной боли запомните, что при делении целых чисел используется целочисленное деление. Поэтому c = a / b
и d = a / b
дает результат 0. Использование преобразования типов данных дает уже правильный результат d = (float) a / b
равный 0,5, т.к. переменная a преобразуется к числу с плавающей точкой.
Для вывода данных мы используем команду форматного вывода printf
. В качестве первого параметра указывается строка, содержащая спецификацию формата начинающуюся с символа процента. После идут параметры (переменные), которые последовательно подставляются согласно формату. Для целых чисел мы используем %i
, для фиксированного формата (числа с фиксированной точкой) %f
или %.xf
, где x - число значащих цифр после точки.
Для вещественных чисел с большей точностью, чем float
используется тип double
.
Для символьного типа используется тип char
. Об этом типе мы поговорим подробно в одном из следующих уроков. Пока пример для размышления:
char e = 'a'; printf("e = %c %c\n", e, 85); // Форматный вывод
В данном уроке мы изучили основные типы данных и научились форматному выводу значений переменных. В последующих урокам мы будем расширять наши знания о типах данных и видах форматного вывода.
В заключение приведем полный текст нашей программы. Это уже не привет, мир!.
/* Первая программа на Си. С комментариями */ #include// Стандартная библиотека ввода-вывода int main(){ // Здесь код программы int a = 1, b = 2, c; // Целочисленные переменные c = a + b; // c = 3 printf("c = %i\n", c); // Форматный вывод c = a / b; // Целочисленное деление c = 0 printf("c = %i\n", c); // Форматный вывод float d; d = a / b; // Целочисленное деление d = 0 printf("d = %.4f\n", d); // Форматный вывод d = (float) a / b; // Нецелочисленное деление d = 0.5 printf("d = %.4f\n", d); // Форматный вывод char e = 'a'; printf("e = %c %c\n", e, 85); // Форматный вывод return 0; // успешное завершение }
Благодарим за внимание. В следующем выпуске Вы ознакомитесь с новой информацией, оставайтесь с нами.