|
|
C++
Описание языка программирования С++: синтаксиса, базовых библиотек и классов, реализации алгоритмов и структур данных, использование основных технологий программирования и проектирования, оптимизация кода, вопросы многопоточности.
|
|
C++
|
|
Некоторые люди испытывают проблемы с пониманием логических операторов, поэтому была создана данная статья, объясняющая и обучающая их использовать. |
|
|
C++
|
|
Лучшие приемы программирования на C. |
|
|
C++
|
|
Продолжение книги Марченко А.Л. "C++. Бархатный путь". |
|
|
C++
|
|
Книга Марченко А.Л. "C++. Бархатный путь" является результатом преподавательской деятельности автора в МГУ им М.В. Ломоносова (курс лекций для студентов 2-го курса геологического факультета кафедры сейсмометрии и геоакустики) и Лицее Информационных Технологий (специальный курс по языку программирования C++ для учащихся 10-х классов). В предлагаемой работе рассматривается язык программирования C++ как формальный язык. |
|
|
C++
|
|
В этой книге делается попытка дать средство для преодоления этой трудности в виде собрания практических правил программирования на С++ и С - правил, которые, надеюсь, уберегут вас от неприятностей, если вы будете их использовать с самого начала. Хотя большинство из приводимых здесь правил применимы равно при программировании как на С, так и на С++, я включил много материала, относящегося лишь к миру С++ и сконцентрированного по мере возможности в заключительном разделе. Если вы программируете лишь на С, то просто игнорируйте материал по С++, встречающийся вам в более ранних разделах. |
|
|
C++
|
|
Название этой книги отражает то, что я считаю основной трудностью при работе как с С++, так и с С: эти языки дают вам столько гибкости, что если у вас нет желания и способности призвать себя к порядку, то в итоге вы можете получить гигантский модуль не поддающейся сопровождению тарабарщины, притворяющейся к тому же компьютерной программой. Вы можете поистине делать все при помощи этих языков, даже если вы этого не хотите. |
|
|
C++
|
|
Хотя все компиляторы с языка Си предназначены для генерации наиболее быстрых и компактных программ, качество оптимизации кода у них может быть совершенно различное. Разработчики компиляторов с языка Си первоначально стремились к полному согласию со стандартом Кернигана и Ричи. В последствии - к уменьшению времени компиляции. Затем - к полной поддержке моделей памяти семейства микропроцессоров 80х86. Затем пытались поддерживать переносимость исходных текстов программ путем предоставления совместимых с UNIX библиотек функций. После этого создавали специализированные библиотеки функций для обеспечения низкоуровневого доступа к характерным для персональных компьютеров (PC) возможностям. За этим следовали попытки придерживаться развивающегося стандарта ANSI C. После чего следовал возврат к началу, но с развитым интегрированным окружением. И так далее. |
|
|
C++
|
|
Главы 11 - 13 посвящены вопросам, связанным с применением С++ для проектирования и реализации больших программных систем. В главе 11 в основном рассматриваются вопросы проектирования и управления программными проектами. В главе 12 обсуждается взаимосвязь между языком С++ и проблемами проектирования. В главе 13 показаны способы создания библиотек. Завершается книга справочным руководством по С++. |
|
|
C++
|
|
Глава 8 посвящена шаблонам типа, т.е. такому средству С++, которое позволяет определить семейство типов и функций. В главе 9 обсуждается обработка особых ситуаций, рассматриваются возможные реакции на ошибки и методы построения устойчивых к ошибкам систем. В главе 10 определяются классы ostream и istream, предоставляемые стандартной библиотекой для потокового ввода-вывода. |
|
|
C++
|
|
Главы 5 - 7 посвящены средствам построения новых типов, которые не имеют аналогов в С. В главе 5 вводится основное понятие - класс. В ней показано, как можно определять пользовательские типы (классы), инициализировать их, обращаться к ним, и, наконец, как уничтожать их. Глава 6 посвящена понятию производных классов, которое позволяет строить из простых классов более сложные. Оно дает также возможность эффективной и безопасной (в смысле типа) работы в тех ситуациях, когда типы объектов на стадии трансляции неизвестны. В главе 7 объясняется, как можно определить унарные и бинарные операции для пользовательских типов, как задавать преобразования таких типов, и каким образом можно создавать, копировать и удалять объекты, представляющие пользовательские типы. |
|
|
C++
|
|
В главах 2, 3 и 4 описываются средства С++, которые не используются для определения новых типов: основные типы, выражения и структуры управления. Другими словами, эти главы содержат описание той части языка, которая по сути представляет С. Изложение в указанных главах идет в углубленном виде. |
|
|
C++
|
|
Книга Б. Страуструпа "Язык программирования С++" дает описание языка, его ключевых понятий и основных приемов программирования на нем. Это завершенное руководство, написанное создателем языка, которое содержит описание всех средств С++, в том числе управление исключительными ситуациями, шаблоны типа (параметризованные типы данных) и множественное наследование. |
|
|
C++
|
|
С++ является надмножеством языка С. Он полностью реализован и уже использовался в ряде нетривиальных проектов. В настоящее время С++ применяется в более чем сотне мест. Данная статья описывает средства абстракции данных предоставляемые языком С++. |
|
|
C++
|
|
Обычно C/C++-программа опирается на мощную поддержку С Run-Time Library - библиотека времени исполнения языка C, далее - CRT; более редкое название - RTL (Run-Time Library). Многим функциям этой библиотеки для правильной работы требуется дополнительная инициализация (CRT startup code). В частности, для вывода текста на консоль с помощью функции printf необходимо, чтобы дескриптор стандартного вывода stdout был предварительно связан с устройством вывода операционной системы (например, стандартным выводом и консолью Win32). То же самое справедливо и для функций работы с кучей - таких, как malloc для C и оператора new для C++. |
|
|
C++
|
|
В статье рассматриваются методы синхронизации потоков одного или нескольких процессов. Все методы основаны на создании специальных объектов синхронизации. Эти объекты характеризуются состоянием. Различают сигнальное и несигнальное состояние. В зависимости от состояния объекта синхронизации один поток может узнать об изменении состояния других потоков или общих (разделяемых) ресурсов. |
|
|
C++
|
|
В пособии приведено подробное описание наиболее распространенного языка программирования СИ для персональных компьютеров, совместимых с IBM PC, и описано применение средств языка на примерах задач работы со списками. Учебное пособие предназначено для студентов всех специальностей, аспирантов и инженерно-технических работников использующих вычислительную технику. Может быть использовано как справочное пособие для широкого круга программистов, как профессионалов, имеющих большой опыт работы на СИ, так и начинающих программировать на СИ. |
|
|
C++
|
|
Иногда очень хочется добавить в программу возможность интерпретации внешнего скрипта. Одна из сравнительно простых и мощных возможностей – использовать ActiveX Scripting Engines и использовать VBScript или JavaScript. На первый взгляд, для этого требуются глубокие знания OLE COM технологии. Имеющиеся на сайте Microsoft примеры могут отпугнуть чем-нибудь совсем непонятным, например, объявлением METHOD_PROLOGUE и последующим использованием непонятно откуда взявшегося указателя pThis. |
|
|
C++
|
|
Язык JAVA во многом произошел от С/С++, у которых были позаимствованы синтаксис и базовая семантика. Однако связь между ними не ограничивается только этим. Используя JNI (JAVA NATIVE INTERFACE), можно вызывать С/С++-функции из JAVA-программы и, наоборот, из программы, написанной на С/С++, можно создавать JAVA-объекты и вызывать JAVA-методы. Несмотря на то, что использование JNI в большинстве случаев ведет к потере многоплатформенности JAVA-кода, данная возможность расширяет сферу применения самого языка JAVA на приложения, для которых это условие не является необходимым. В таких системах использование JNI позволяет сочетать современный объектно-ориентированный подход JAVA - главное преимущество этой технологии, с существующим (LEGACY) системно-зависимым (PLATFORM SPECIFIC) кодом на С/С++. Это является важным и необходимым условием перехода к использованию JAVA-технологии при разработке компонентов сервера. |
|
|
C++
|
|
Принципы использования "умных" указателей известны каждому программисту на C++. Идея предельно проста: вместо того, что бы пользоваться объектами некоторого класса, указателями на эти объекты или ссылками, определяется новый тип для которого переопределен селектор ->, что позволяет использовать объекты такого типа в качестве ссылок на реальные объекты. |
|
|
C++
|
|
Язык С представляет программисту очень ограниченные возможности обработки исключений, возникших при работе программы. В этом отношении С++ намного развитее С. Здесь у программиста существенно большие возможности по непосредственной обработке исключений. Комитет по разработке стандартов С++ предоставил очень простую, но мощную форму обработки исключений. |
|
|
C++
|
|
Список как структура для хранения данных известна достаточно широко. Фактически, наверняка в любом курсе программирования ее изучают в том или ином виде. |
|
|
C++
|
|
В данной статье я попытаюсь рассказать, что такое traits. Будут рассмотрены некоторые примеры применения traits, которые будут заключаться как в использовании traits в нашем коде, так и в возможных способах расширения стандартной библиотеки C++, которая тоже использует traits. Также будут рассмотрены возможные проблемы, которые могут возникнуть при расширении стандартной библиотеки C++. |
|
|
C++
|
|
Диалоговое окно для Windows программы является тем же, чем является вызов функции для программы на языке C. Сначала, Windows программы передают некоторые данные диалоговому окну, чтобы инициализировать его. Затем диалоговое окно обменивается информацией с пользователем. Когда пользователь решает, что любопытство программы было удовлетворено, он (или она) нажимает кнопку OK. Вновь полученные данные возвращаются обратно программе. |
|
|
C++
|
|
К сожалению, выбор компилятора часто обусловлен, опять-таки, идеологией и соображениями вроде "его все используют". Конечно, среда разработки Microsoft Visual C++ несколько более удобна, чем у портированного gcc - но это ведь вовсе не значит, что релиз своего продукта вы должны компилировать с использованием MSVC++. Используйте оболочку, компилируйте промежуточные версии на MSVC++ (кстати, время компиляции у него гораздо меньше, чем у gcc), но релиз можно собрать с использованием другого компилятора, например от Intel. И, в зависимости от компилятора, можно получить прирост в производительности на 10% просто так, на ровном месте. Но какой "правильный" компилятор выбрать, чтобы он сгенерировал максимально быстрый код? К сожалению, однозначного ответа на этот вопрос нет - одни компиляторы лучше оптимизируют виртуальные вызовы, другие - лучше работают с памятью. |
|
|
C++
|
|
DirectSound - сравнительно новый программный интерфейс, входящий в семейство <мультимедийных> интерфейсов DirectX (DirectDraw, Direct3D, DirectInput и т.п.). Первым продуктом данного семейства является интерфейс Direct Draw, созданный почти одновременно с Windows 95 и предназначенный для оптимизации работы игровых приложений с видеоадаптером. Затем к нему добавились интерфейсы Direct3D, DirectInput, а впоследствии для многих классических интерфейсов с оконечными устройствами были введены Direct-версии. |
|
|
C++
|
|
Очень часто в программах имеется набор функций для работы с буфером обмена, будь то текстовые редакторы или графические, поскольку с использованием буфера обмена упрощается обмен данными между программами. На форуме часто задают вопросы о том, как поместить изображение или текст в буфер обмена и потом извлечь эти данные, следовательно, в этой статье речь пойдет именно об этом. |
|
|
C++
|
|
Использовать макроопределения иногда удобно. Во многих случаях, конечно, стоит предпочесть использование параметризованных функций (шаблонов) и других механизмов, обеспечивающих проверку типов. Но использование препроцессора и макросов также имеет свою сферу применения. |
|
|
|
|
|
|