Точка, точка, запятая…

Категория: ABC, Культура кода Автор: Алексей Захаренков Опубликовано: 15-04-2012

Метки: , ,

В предыдущей своей статье я рассказывал, как можно с пользой употреблять точку с запятой в качестве пустого оператора в языке С++. Здесь я рассмотрю, какие неприятные эффекты может породить слишком свободное и безответственное обращение с этим служебным символом.

Точкой с запятой в С++ должны завершаться многие команды. Среди них:

  1. объявления переменных:
    int a, b, arr[10], *p;
  2. определение типа структуры/класса/объединения/перечисления. Например:
    struct Point { int x; int y; };

    В общем случае такое определение может выглядеть приблизительно так:

    struct Point { int x; int y; } p1, p2, points[15], *pPointer;

    Здесь, кроме того что вводится новый тип данных Point, ещё определяются четыре переменные: две переменные типа Point, один массив элементов типа Point и один указатель на Point. Сравните это объявление с примером из пункта 1. Теперь вы должны увидеть, что пункт 2 – это усложнённый вариант объявления переменных. Т.е., на самом деле, последняя точка с запятой в определении типа структуры (или класса) завершает не определение типа структуры, а список переменных этого типа, который, как частный случай, может оказаться пустым. Правда, на практике такой «частный случай» чаще всего и реализуется, поэтому многие программисты давно забыли, откуда происходит необходимость ставить точку с запятой в конце определения класса.

  3. Объявление элементов данных структуры/класса. Это две точки с запятой в определении структуры Point из пункта 2, стоящие после определения полей x и y этой структуры.
  4. Читать полностью »

Видеоурок «Амортизационный анализ»

Категория: Культура кода, Курсы, Уроки Автор: Александр Никитин Опубликовано: 10-04-2012

Метки:

Добрый день! Семен Давыдов, автор курса C++. Управление памятью, или, как мы его успели прозвать в ШП, «человек из Яндекса» подготовил бесплатный видеурок не для новичков. Все, кому интересно по-настоящему профессиональное программирование, посвящается.

P.S. В ближайшее время появится видеопрезентация курса Семена C++. Управление памятью, который стартует уже в субботу. Не пропустите последнюю возможность записаться!

О «пустых» языковых конструкциях

Категория: Культура кода Автор: Алексей Захаренков Опубликовано: 19-09-2011

Метки: ,

В С++ и других Си-подобных языках есть несколько конструкций, которые ничего не делают.

Начнём с пустого оператора. Хотя трудно себе представить что-то синтаксически более примитивное, пустой оператор хранит в себе и великие возможности, и многия печали. О печалях потом, а в этой статье только позитив!

Начнём с того, что такое оператор вообще. В мире программирования существует большой разброд как в переводе этого термина с английского языка, так и в толковании уже переведённого слова. Для определённости, на время чтения этой статьи, считайте, что оператор – это законченная инструкция языка, участвующая в реализации алгоритма. Каждый простой оператор в С++ должен заканчиваться точкой с запятой. Простые операторы называются так в противовес составным (блок операторов) и структурным (операторы ветвления и циклов). Напишем несколько простых операторов:

z = sin(x)*cos(y) + cos(x)*sin(y);
z = x + y;
z += x;
z++;
z;
;

Как видите, каждый оператор короче предыдущего, а апофеозом такого упрощения является пустой оператор – одинокая точка с запятой.

Читать полностью »

Запоминание приоритетов операторов vs расстановка скобок

Категория: Культура кода Автор: Дмитрий Лаврик Опубликовано: 07-07-2011

Метки: , ,

Недавно, проверяя домашние задания участников живых курсов Школы Программирования, заметил, что иногда они сталкиваются с проблемами из-за того, что не используют скобки, например:

     $a = false;
     $b = true;
     $c = $a xor $b;

Xor – исключающее ИЛИ, в данном случае переменной $c по логике должно быть присвоено значение true, однако, оператор присваивания имеет больший приоритет, чем xor, в результате чего

     $c = $a xor $b;

отработает как

     $c = $a;

.
Читать полностью »

Цикл for

Категория: Культура кода Автор: Дмитрий Ляпин Опубликовано: 29-08-2010

Метки: , , , , , ,

Примеры в статье приведены на языке Си

Достаточно давно мы опубликовали статью о тернарном операторе. Еще один шедевр, пришедший из языка Си, – цикл for.

Это мощнейшая конструкция, позволяющая организовать любой цикл. Например, можно обойтись без привычного while:

while (< условие>)
{
}

эквивалентно

for (; < условие>;)
{
}

Вот самый обычный пример, вывод на экран чисел от 1 до 100:

for (int i = 1; i < = 100; i++)
{
	printf("%d\r\n", i);
}

А вот пример сложнее Читать полностью »