Здравствуйте, уважаемые подписчики!
В еженедельных выпусках мы будем представлять вам обзоры бесплатных и свободных программ; описание функциональных возможностей и документацию по работе с этими программами. Для тех, кто не только использует программы, но и пишет собственные, будут интересны полезные статьи и заметки по программированию.
Вам срочно нужно решить задачу, но нет соответствующей программы? Мы собрали основные свободные и открытые программы вместе. Вы можете загрузить обновленный (от 26.04.2009) список всех бесплатных и свободных программ, представленных на нашем сайте.
Хотите получать полезную информацию каждую неделю прямо на почтовый ящик? Посмотрите все наши рассылки. Каждый найдет для себя что-то интересное и полезное. Выпуски выходят раз в неделю в воскресенье.
Аудиокниги на английском для детей
- Rapunzel - аудиокнига и текст (mp3-формат)
- Guppy Goop & The Adventure of the Big Bad Fish - аудиокнига и текст (mp3-формат)
- The City Zoo - аудиокнига и текст (mp3-формат)
- The Emperor's New Clothes - аудиокнига и текст (mp3-формат)
- How The Leopard Got His Spots - аудиокнига и текст (mp3-формат)
Графика
- K-3D 0.6.7 - система 3D-моделирования и компьютерной анимации. Версия под Windows и GNU/Linux.
- Wings 3D 3.43-4 - система 3D-моделирования. Версия под Windows и GNU/Linux.
Игры
- Dark Oberon 1.0.2RC2 - стратегия реального времени похожая на Warcraft II. Версии под Windows и GNU/Linux.
- 8 Kingdoms - пошаговая фэнтези стратегия под Windows и GNU/Linux.
Интернет
- Mozilla FireFox 3.0.9 - веб-браузер. Версия под Windows (установочная и портативная) и GNU/Linux.
- Httrack 3.43-4 - свободный кроссплатформенный оффлайн-браузер. Версия под Windows (установочная и портативная) и GNU/Linux.
Мультимедия
- Songbird 1.1.2 - свободный проигрыватель под Microsoft Windows XP/Vista, GNU/Linux, Mac OS X и другие платформы.
Утилиты
- Krusader 2.0.0 - двухпанельный файловый менеджер под GNU/Linux.
Программирование в Си. Урок #4.
В этом уроке закончим изучение управляющих конструкций Си.
Оператор выбора switch. Форма оператора следующая:
switch (выражение) { case константа_1 : операторы ; break; ... case константа_n : операторы ; break; default : операторы ; break; }
Оператор switch вычисляет выражение и переходит к первому совпадающему значению после case. Далее выполняются операторы этого блока и по команде break происходит выход из структуры. Если ни одно из значений не совпадает с константами из case, то выполняются операторы блока default. Отметим, что константы в case блоке определяются на этапе компиляции, поэтому они не могут содержать переменных и функций.
Следующий пример показывает работу оператора выбора.
int a = 2, b = 5; ... for (i = 0; i <= 5; i++) { switch (i) { case 0 : c = a + b; break; case 1 : c = a - b; break; case 2 : c = a * b; break; case 3 : c = (float) a / b; break; default : c = 0; break; } printf("Результат: i = %i, c = %f\n", i, c); }
Оператор switch может быть заменен вложеным условным оператором. Следующий пример показывает аналогичную рассмотренной конструкцию, но основанную на условных операторах:
for (i = 0; i <= 5; i++) { if ( i == 0 ) c = a + b; else if ( i == 1 ) c = a - b; else if ( i == 2 ) c = a * b; else if ( i == 3 ) c = (float) a / b; else c = 0; printf("Результат: i = %i, c = %f\n", i, c); }
Результат выполнения кода будет одинаковым для обоих примеров (блок default выполняется во всех случаях, когда i не равно 0, 1, 2, 3):
Результат: i = 0, c = 7.000000 Результат: i = 1, c = -3.000000 Результат: i = 2, c = 10.000000 Результат: i = 3, c = 0.400000 Результат: i = 4, c = 0.000000 Результат: i = 5, c = 0.000000
Оператор выхода из структуры break может быть опущен. В этом случае, поиск совпадений будет продолжен после выполнения соответствующего блока case. Этот момент покажем на следующем примере:
i = 2; j = 0; switch (i) { case 0 : i = 5; j++; case 1 : i = 0; j++; case 2 : i++; j++; case 3 : i += 2; j++; case 4 : i = 0; j++; case 5 : i = i - 2; j++; default : j++; } printf("Результат: i = %i, выборов: %i\n", i, j);
Счетчик j подсчитывает реальное число исполненых блоков case. В начале i = 2 и первый выполняемый блок case 2. В этом блоке i увеличивается на 1 и проверка продолжается, т.ч. следующим выполняется блок case 3 (i становиться равным 4), далее case 4 (i зануляется) и блок по умолчанию (он выполняется всегда, если до этого не был выполнен оператор break). Окончательно получаем:
Результат: i = -2, выборов: 5
Операторы break и continue. Использование оператора break мы уже видели на примере структуры switch. Оператор break - это выход из цикла или конструкции switch. Пример (цикл по i от 0 до 4, но при i = 2 происходит выход из цикла):
for (i = 0; i < 5; i++) { if ( i == 2 ) break; printf("Индекс: i = %i\n", i); }
Результат:
Индекс: i = 0 Индекс: i = 1
Оператор continue - переход на конец цикла (т.е. пропуск всех операторов от continue до конца структуры цикла). Пример (цикл по i от 0 до 4, но при i = 2 происходит переход на конец цикла):
for (i = 0; i < 5; i++) { if ( i == 2 ) continue; printf("Индекс: i = %i\n", i); }
Результат:
Индекс: i = 0 Индекс: i = 1 Индекс: i = 3 Индекс: i = 4
Благодарим за внимание. В следующем выпуске Вы ознакомитесь с новой информацией, оставайтесь с нами.