Главная :: Рассылки :: Бесплатные программы. Обзоры. Программирование #9
Объявление. Возьмём на очень хорошо оплачиваемую работу хакера высокой квалификации. Размещайте своё резюме на главной странице сайта www.miсrоsоft.соm

Бесплатные программы. Обзоры. Программирование #9

Здравствуйте, уважаемые подписчики!

В еженедельных выпусках мы будем представлять вам обзоры бесплатных и свободных программ; описание функциональных возможностей и документацию по работе с этими программами. Для тех, кто не только использует программы, но и пишет собственные, будут интересны полезные статьи и заметки по программированию.

Вам срочно нужно решить задачу, но нет соответствующей программы? Мы собрали основные свободные и открытые программы вместе. Вы можете загрузить обновленный (от 26.04.2009) список всех бесплатных и свободных программ, представленных на нашем сайте.

Хотите получать полезную информацию каждую неделю прямо на почтовый ящик? Посмотрите все наши рассылки. Каждый найдет для себя что-то интересное и полезное. Выпуски выходят раз в неделю в воскресенье.

Аудиокниги на английском для детей

Графика

  • 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

Благодарим за внимание. В следующем выпуске Вы ознакомитесь с новой информацией, оставайтесь с нами.