Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Основы Visual C++
Урок 4. Операторы ветвления

В C/C++, как и в любом языке программирования, существуют два вида операторов ветвления (или, иначе, их называют условными операторами). Первый из них (if) даёт возможным два дальнейших пути для нашей программы (или сюда, или сюда), второй (switch) - несколько (или сюда, или сюда, или сюда и т. д.).

Приведем сразу несколько примеров:

if(a>0){
 
     cout<<"а is positiv";  //a - положительное
 
 }
 
 else{
 
     cout<<"а is negativ or zero";  //a - отрицательное или нуль
 
 }

Обратите внимание, что в C/C++ нет ключевого слова then.

Ветвь else можно не писать. Если внутри фигурных скобок пишется только один оператор, то их можно не писать:

if(a>0)
 
     cout<<"а is positiv";  //a - положительное
 
 ...

Следующий оператор - это switch. Вот пример для него:

    int grade;
 
     cin>>grade;
 
     switch(grade){
 
     case 5:
 
         cout<<"Otlichnick\n"; //отличник
 
         break;
 
     case 4:
 
         cout<<"Choroshyst\n"; //хорошист
 
         break;
 
     case 3:
 
         cout<<"Troechnick\n"; //троечник
 
         break;
 
     case 1:
 
     case 2:
 
         cout<<"Dvoechnick\n"; //двоечник
         break;
 
     default:
 
         cout<<"Error\n"; //ошибка
 
     }

Действует он следующим образом: переменная grade сравнивается сначала со значением после первого case (5 в нашем случае). Если выполняется равенство, то выполняются операторы расположенные непосредственно сразу после строки

 case 5:

до первого break;. Если не равно, то grade сравнивается со вторым case (т. е. с 4 в нашем случае) и т. д. Если ни одна из проверок не выполняется, то выполняются операторы после строки

    default:

Ветвь default можно не писать, если не надо.

Обратите внимание на строки

    case 1:
 
     case 2:
 
         cout<<"Dvoechnick\n"; //двоечник
 
         break;
 
    ...
 
 

Здесь после case 1: нет break'а, это значит, что операторы

        cout<<"Dvoechnick\n"; //двоечник
 
         break;
 
 

будут выполняться и при grade равном 1, и при grade равном 2. Поэтому не забывайте писать break там, где это надо. Если забудете, компилятор ничего не скажет, так как синтаксической ошибкой это не является.

В C/C++ существует ещё и конструкция ? ; Ее применение ясно из следующего примера:

b = (k>0)?k:-k;

В данном примере в b запишется модуль числа k. Работает эта конструкция следующим образом: проверяется условие до знака ? (в нашем примере k>0). Если оно истинно, то в качестве результата возвращается значение выражения между ? и : (k в нашем примере). Если же выражение ложно, то возвращается значение выражения после знака двоеточия (-k в нашем примере).



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS