| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Хотелось бы понять логику синтаксиса C++. ? |
| Автор: denes 25.8.2011, 11:32 |
| Синтаксис С++ За годы преподавания C++ я узнал, что подавляющее большинство программистов C++ (включая самых опытных) редко пользуется некоторыми возможностями языка. Конечно, дело это сугубо индивидуальное, но при всей сложности и глубине C++ небольшой обзор не повредит никому. В этой и двух следующих главах я постараюсь выровнять уровень подготовки читателей перед тем, как переходить к действительно интересным темам. Эта глава не заменит Annotated Reference Manual или другое справочное руководство - вы не найдете в ней полной спецификации языка. Я лишь рассмотрю некоторые языковые средства, которые часто понимаются неверно или не понимаются вовсе. Придержите шляпу и приготовьтесь к стремительному облету синтаксиса C++! этот Синтаксис он как типа философии или реально приминяеца ? понятнее ответе ? |
| Автор: denes 25.8.2011, 12:44 |
| Если не понял за каким хреном сюда влез ??? |
| Автор: azesmcar 25.8.2011, 13:08 |
У тебя все в порядке с головой? Ты вроде как создал тему и в конце что-то спрашиваешь, я тебе внятно объяснил, что твой вопрос непонятен, и судя по тому, что я вроде как русским языком владею неплохо и судя по количеству ответов в твоей теме непонятен он не мне одному. Если у тебя нет желания получить ответы на свой вопрос, то какого черта ты тогда тему создал? Ты годами преподаешь C++ и не знаешь что такое синтаксис? О чем вообще твой вопрос? |
| Автор: azesmcar 25.8.2011, 13:27 | ||
Эврика!
Это же цитата из книги Цитаты надо как-то выделять, чтобы они не путались с собственным сообщением, а желание отвечать все равно пропало. |
| Автор: Artemon 25.8.2011, 13:28 |
| Попробую внести ясность В середине первого топика идет вырезка из статьи. В конце топика идет примерно такой вопрос: "Неужели какие-то заковыристые конструкции применяются в реальных программах ?" |
| Автор: azesmcar 25.8.2011, 13:32 | ||
Вот я и спросил Какие именно заковыристые конструкции? Одни могут применяться, другие нет. Кто-то может и switch сочтет заковыристой конструкцией. |
| Автор: Artemon 25.8.2011, 14:43 |
Я думаю каразтаки сейчас именно этот случай |
| Автор: volatile 25.8.2011, 23:54 | ||
Приблизительный перевод: Применяется ли знание синтаксиса в реальном программировании, или это абстракция не имеющая практического применения ? Вобщем чел, хочет знать, нужно ли изучать ему синтаксис, или лучше не забивать голову всякой хренью,... denes, короче, эту хрень, к сожалению, придется изучать, если хочешь кодить... |
| Автор: Earnest 26.8.2011, 07:29 |
| Синтаксис и грамматику русского языка тоже неплохо бы изучить... |
| Автор: denes 26.8.2011, 10:19 |
| Применяется ли знание синтаксиса в реальном программировании, или это абстракция не имеющая практического применения ? ты прав volatile только где о ней подробно написано ? |
| Автор: newbee 26.8.2011, 10:39 |
| denes, Капитан Очевидность заявляет: знание синтаксиса применяется в реальном программировании, так как языков программирования без синтаксиса исчезающе мало, а у С++ сложный синтаксис, не зная который не получится писать программы. |
| Автор: azesmcar 26.8.2011, 10:45 |
| Под синтаксисом языка программирования понимают набор правил для построения корректных конструкций на данном языке. Не зная синтаксис языка на нем вообще нельзя написать ни строчки кода. |
| Автор: kemiisto 26.8.2011, 11:10 |
| Что-то я не могу отыскать, но... С++ - это не один язык программирования, а несколько. Это есть в Effective C++. Я бы слегка иначе сформулировал, чем там. С++ можно использовать как:
На первом уровне при сохранении процедурного подхода вы получаете аргументы по-умолчанию, ссылки, перегруженные функции, константы, ... На втором вы используете ООП. class и понеслась душа в рай. + Шаблоны, но по большей части, только как средство обобщённого программирования. Немного трогаете STL. На третьем шаблоны уже для метапрограммирования, исключения и прочие "прелести". Используете STL "на всю катушку". При этом некоторые синтаксические возможности трудно однозначно отнести к какому-либо уровню. Например, исключения. Кто-то считает, что ООП без исключение - это и не ООП. Поэтому включает исключения уже на уровень 2. |
| Автор: denes 26.8.2011, 14:26 |
| а где есть эти определения ? где эти правила ? |
| Автор: azesmcar 26.8.2011, 14:29 |
В стандарте языка и в любой книге по C++. Добавлено через 1 минуту и 51 секунду Видимо нужен пример. Описание того, как пишется тот или иной оператор и есть описание синтаксиса языка. Книга, описывающая как писать оператор if по сути описывает синтаксис. |
| Автор: denes 26.8.2011, 14:56 |
| у меня две книги по языку правил не видел ! только изучение написания и значения ! может это :Критика синтаксиса Операция присваивания обозначается как =, а операция сравнения как ==. Их легко спутать, при этом операция присваивания возвращает значение, поэтому присваивание на месте выражения является синтаксически корректным, а в конструкциях цикла и ветвления появление числа на месте логического значения также допустимо, так что ошибочная конструкция оказывается синтаксически правильной. Типичный пример подобной ошибки: if (x=0) { операторы } Здесь в условном операторе по ошибке написано присваивание вместо сравнения. В результате, вместо того, чтобы сравнить текущее значение x с нулём, программа присвоит x нулевое значение, а потом интерпретирует его как значение условия в операторе if. Так как нуль соответствует логическому значению «ложь», блок операторов в условной конструкции не выполнится никогда. Ошибки такого рода трудно выявлять, но во многих современных компиляторах предлагается диагностика некоторых подобных конструкций. Операции присваивания (=), инкрементации (++), декрементации (--) и другие возвращают значение. В сочетании с обилием операций это позволяет, хотя и не обязывает, создавать трудночитаемые выражения. Наличие этих операций в C было вызвано желанием получить инструмент ручной оптимизации кода[источник не указан 339 дней], но в настоящее время оптимизирующие компиляторы обычно генерируют оптимальный код и на традиционных выражениях. С другой стороны, один из основных принципов языков C и C++ — позволять программисту писать в любом стиле, а не навязывать «хороший» стиль. Некоторые преобразования типов неинтуитивны[источник не указан 339 дней]. В частности, операция над беззнаковым и знаковым числами выдаёт беззнаковый результат. Многие конструкции С++ позволяют делать то же самое, что и конструкции C, также присутствующие в С++. Это иногда сбивает с толку новичков. Например, приведение типов при помощи dynamic_cast позволяет привести указатель или ссылку строго в пределах иерархии классов. Это делает код более надёжным, декларативным и позволяет находить приведения в пределах иерархии при помощи инструментов типа grep. Однако вследствие требования высокой степени совместимости с C старое приведение типов всё ещё поддерживается. |
| Автор: newbee 26.8.2011, 15:04 |
| Дайте же успокоительного этому поциенту! denes, излагай ясно, чего ты хочешь понять. И помни, что правильно составленный вопрос - это половина ответа. А теперь попробуй перечитать, что ты нам сюда пишешь. |
| Автор: denes 26.8.2011, 15:26 |
| а ну тибя нафиг |
| Автор: azesmcar 26.8.2011, 15:29 | ||
| denes выдели сперва цитаты, а потом я постараюсь ответить на твой вопрос. А так мне совершенно непонятно где начинается и заканчивается твоя мысль, а где цитата.
этого не может быть, ты хочешь сказать, что твоя книга по C++ не описывает то, как составлять программу на языке C++? |
| Автор: denes 26.8.2011, 17:46 |
| да причом тут мысль ! мне ответ нужен на вапрос темы а ты не отвичаеш ! |
| Автор: azesmcar 26.8.2011, 18:08 | ||
http://lurkmore.ru/%D0%9D%D0%B8_%D0%B5%D0%B4%D0%B8%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B0%D0%B7%D1%80%D1%8B%D0%B2%D0%B0 Тебе на вопрос уже раз 8 ответили в теме. Синтаксис языка - это правила построения корректных конструкций на этом языке, учить его естественно надо, так-как без знаний синтаксиса языка на нем ничего не напишешь. Описан синтаксис C++ в любой книге по C++, что из этого тебе непонятно? Если твой вопрос в другом, то сформулируй его как следует. |
| Автор: denes 26.8.2011, 20:29 |
| а ясно но как тогда понять это :Конструкторы и деструктор В классах всегда есть специальные функции — конструкторы и деструкторы, которые могут быть объявлены явно или неявно. ? и как узнать когда их надо объявлять ? Добавлено через 34 секунды коль это правила разъясните его ! |
| Автор: denes 26.8.2011, 21:09 |
| а ты на мой |
| Автор: mes 26.8.2011, 21:15 | ||
внимательно читать книжки и въедчиво разбирать примеры.. другого пути нет.. форум преднозначен для иного, и поэтому тут ответа на подобные вопросы не получите.. |
| Автор: kuzulis 26.8.2011, 23:26 |
| Люди, ну хватит кормить тролля. Пусть пациент уже сам найдет ответ в книжках. ЗЫ: Учицца, учицца и еще раз учицца! ЗЫЗЫ: Я б не хотел иметь такого преподавателя. |
| Автор: denes 27.8.2011, 18:26 |
| да я и так пытаюсь одно дело прочитать а другое дело прочитать и понять как работает там примеров маловать ! а некоторые пробуеш они не работают ! некоторые компиляторы не совпадают а я не магу минять их как перчатки !!! если у вас скажим не получилось вы же не бижите покупать друой компилятор так ? и для чего по ващему нужен этот форум ? я думал для решения сложных или не понятных вопросов ! скажим можно до фига прочесть теории но в практики быть полным нулём вот ваши книги ! без практики они мусор !!! вот и думайте после этого нужно оно или нет ? а читал я много просто не всё получаеца и об ошибках не в одной книги нету !!! вот и лезу на форумы но каждому выскочки типа kuzulis мне это писать не ахото ! просто прошу помогите плиз !!! |
| Автор: mes 27.8.2011, 18:42 |
специализированные разделы, в том числе этот, нужны для вопросов, ответов на которые нет в книге, и при условии, что проявили желание сами с этим разобраться.. так если на вопрос уже сто раз отвечали и можно легко найти в гугле, вряд ли кому то захочется писать то же самое в 101й раз.. Добавлено @ 18:46 увидел kemiisto и подумал что тут как раз он был бы по теме.. denes, учитывая, какой напряг у Вас с формулировкой вопросов, думаю не стоит увлекаться C++, зря потратите время... есть куча более приятных и ненапряжных языков программированния.. |
| Автор: denes 27.8.2011, 18:49 |
| ну сам я не смог разобраца и в книгах не нашол ! искал нормально ! ответили нет нету ответа пока что ! ответ те чётко ! |
| Автор: mes 27.8.2011, 18:51 |
| Автор: denes 27.8.2011, 18:59 |
| так ответ те чотко ! C++ или другой язык один хрен просто он более востребован ! хотя смотря где ! |
| Автор: mes 27.8.2011, 19:33 |
Чотко отвечать не каждому дано, обратитесь к нашему специалисту по подобной практике : http://forum.vingrad.ru/users/%D0%94%D0%BE%D0%BA%D1%82%D0%BE%D1%80%D0%A2%D1%83%D0%B0%D0%BC%D0%9E%D1%81%D0%B5%D1%81 |