
polevoi_cpp_2013_spring_lecture_02
.pdf
Объявление в for-инструкции
•переменную можно объявить в части инициализации for-инструкции
•область видимости простирается до конца for-инструкции
пример:
for (int i(0); i < n; ++i)
16.02.2013 |
21 |

Пример (for-инструкция)
for (int i(0); i < n; ++i)
{
// основная работа
}
for (int i(n - 1); i >= 0; i -= 2)
{
// основная работа
}
16.02.2013 |
22 |

Пример (while-инструкция)
bool isReady(false); while (!isReady)
{
// основная работа
}
16.02.2013 |
23 |

“Бесконечные” циклы
•“ в природе” не встречаются
•явно вводите и проверяйте управляющую выполнением цикла переменную
16.02.2013 |
24 |

Логическая стройность
•избегайте длинных блоков
•избегайте глубокой вложенности
•упрощайте сложные выражения и конструкции
•сначала делайте основную работу
16.02.2013 |
25 |

Правило одной точки выхода
•у функции д.б. одна точка выхода
•может нарушаться при обработке входных параметров
16.02.2013 |
26 |

Комментарии
•актуальные
•понятные
•достаточные
•не должны дублировать конструкции языка
•отражают намерение и существенные детали
16.02.2013 |
27 |

l-value
•именующее выражение, ссылается на объект (м.б. const)
•может стоять в левой части оператора присваивания (если не const)
пример:
int num(1); num = 5;
*(p + 15)
16.02.2013 |
28 |

r-value
• не l-value
пример:
5 |
//< литерал |
a + b //< временные объекты
new int |
//< новый объект |
string(“0”) //< временный объект
s.size() |
//< вызов функции |
16.02.2013 |
29 |

Указатель (pointer)
•тип Т* - тип “указатель на Т”
•переменная типа Т* содержит адрес объекта типа Т
•разыменование (косвенное обращение)
пример:
char с1 = ‘а’;
char* p = &с1; //< адрес переменной с1
char с2 = *p; //< с2 == ‘а’
16.02.2013 |
30 |