• Страница 1 из 1
  • 1
Форум » Программирование » C++ » Урок пятый - забытый switch + цикл своими руками
Урок пятый - забытый switch + цикл своими руками
Администратор
Уровень 999
Сообщений: 2104
Дата: Понедельник, 04.06.2012, 09:44:23 | Сообщение # 1
Offline
Вначале я хотел бы рассказать о таком спорном элементе как метки. Спорном, потому как спорят касательно целесообразности их применения, но об этом можно почитать отдельно (возможно как-нибудь напишу статью в соседнем разделе), а сейчас главное научиться с ними работать.
Итак, меткой можно отметить определенное место в тексте програмы, на которое впоследствии можно будет перейти с помощью оператора goto. Например эта програма никогда не кончится (готовтесь закрывать вручную):

Code
#include <stdio.h>
void main()**
  here: // Отметили место
  puts("I'm here");
  goto here; // Т.к. команда перехода выполняется без условия (т.е.
                 //всегда) мы будем вечно возвращаться...
}

Теперь попробуем добавить условие, например так:

Code
#include <stdio.h>
#include <conio.h>
void main()**
short n, i = 1;
unsigned long fact = 1;
printf("Enter n: ");
scanf("%d", &n);
//////////////////
some_label:
fact = fact * i;
i = i + 1;
if(i <= n) goto some_label;
//////////////////
printf("n! = %d\n", fact);
getch();
}

Итак, эта программа вычисляет факториал введенного числа. Я выдеделил кусок кода представляющий для нас интерес. По сути это цикл. Строка "i = i + 1;" увеличивает i на единицу, а "if(i <= n) goto some_label;" кидает нас обратно к метке, если только i не больше чем n. Т.е. этот код повторяется n раз и каждый раз i всё больше, что мы и используем для вычисления факториала. Ведь если i пробегает путь от 1 до n, то нам нужно только перемножить все i, что мы и делаем. Роль циклов в программировании невозможно переоценить, они используются повсемесно. На следующем уроке мы рассмотрим готовые циклические конструкции.
Задание 1 - вывести на экран числа от 1 до n, где n - введённое пользователем число.

Теперь о switch. Это ещё один способ ветвления основанный на метках. Но работает он иначе.

Code
...
int n;
...// здесь n стало чему-то равно
switch(n) // Передаём её switch
**
case 1: // если она равна 1, то перейдём сюда
puts("one");
case 2: // сюда если равна дву или единице, т.к. ничто не останавливает
            //програму идти дальше
puts("two");
break; // А вот после этой инструкции програма закончит выполнение
          //блока switch
case 3: // И это выполнится только при тройке
puts("three");
default: // А это будет выполнено если не подошли другие метки
            //(указывать необязательно) и при тройке, ибо мы не указали
            //break
puts("To big");
}
...

Задание 2 - модифицируйте программу так, чтобы всегда выводилась только одна строка и чтобы она различала 5 чисел.
Подпись пользователя
Форум » Программирование » C++ » Урок пятый - забытый switch + цикл своими руками
  • Страница 1 из 1
  • 1
Поиск: