Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.76
kaheu
34 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 246
#1

Какую ide лучше использовать для c++ - C++

27.07.2014, 12:18. Просмотров 5559. Ответов 51
Метки нет (Все метки)

какой ide лучше использовать для c++?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2014, 12:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Какую ide лучше использовать для c++ (C++):

Какую бесплатную среду (IDE) разработки для С++ 2013/2014 года выпуска лучше скачать? - C++
Существуют множество как и бесплатные, так и платные среды разработок для С++ , но что делать, если вы можете скачать только один раз и то...

Какую библиотеку лучше использовать для работы с файлами в с++? - C++
Какую библиотеку лучше использовать для работы с файлами в с++? stdlib\fstream?

Простая графика для Пятнашек. Какую библиотеку лучше использовать ? - C++
Задача такая: нужно написать игру пятнашки с алгоритмом поиска А*. Я хочу реализовать ее в графическом режиме, ясно, что графика там...

Какую среду разработки лучше использовать новичку? - C++
Пытаюсь начать изучать c++ и нужно несколько советов: 1) Какую среду разработки лучше использовать новичку? (Желательно с возможностью...

Какую запись переменных в цикле for лучше использовать? - C++
Какую запись переменных в цикле for лучше использовать? 1) for(int i = 1; i <= 12; i++) 2) for(int i = 0; i < 12; i++) Что...

Множество вершин треугольника - какую лучше структуру использовать? - C++
Допустим, каждый треугольник задан 3 вершинами. Я хочу создать некий контейнер, который будет содержать эти треугольники. Но...

51
DrOffset
7351 / 4451 / 1009
Регистрация: 30.01.2014
Сообщений: 7,292
27.07.2014, 18:45 #16
Цитата Сообщение от CyberSolver Посмотреть сообщение
А вот тем, что начал с простенькой IDE, что такое Makefile и раздельная компиляция уже не объяснить никогда.
Категорично слишком. Это вообще сугубо индивидуально: хочет человек развиваться и выходить из зоны комфорта или нет. С чего конкретно он начал, уже не столь важно.
2
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 692
Записей в блоге: 1
27.07.2014, 18:52 #17
DrOffset, может и так. Но вы учтите, какая клоака эти ваши российские провинциальные вузы. Я читал университетские учебники, авторы которых (кандедаты в дохтора) явно ничего сложнее хеловорда не писали. Где все лабы состоят в создании проектика под студию.

Ну или вот ещё: сразу видно идиотию в виде #include <stdafx.h> (ну куда без них), int _tmain и прочих LPSTRZ. Откуда она по вашему? Не из-за того ли, что при использовании IDE надо "создать проект, написать свой первый "Hello World!", жмакнуть F9 и радоваться"? И дело ведь не в студии как таковой. Ослиные уши NetBeans, Eclipse и прочей мути будут торчать отовсюду.

Добавлено через 2 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
С чего конкретно он начал, уже не столь важно.
То есть вы серьёзно считаете, что начать прогать с Forth или Haskell - это то же самое, что с pascal и си? Синдром утенка кто-то отменил? Жалко не могу дать ссылку на подробный разбор того, как первый язык создателей языков повлиял на их детища. Вспомните Кернигана и Ричи со Страуструпом хотя бы.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4189 / 1837 / 198
Регистрация: 20.02.2013
Сообщений: 4,976
Записей в блоге: 21
27.07.2014, 18:58 #18
Цитата Сообщение от CyberSolver Посмотреть сообщение
что такое Makefile и раздельная компиляция уже не объяснить никогда
Опять же спорно. Читаешь книжку, всё пошагово выполняешь:
Кликните здесь для просмотра всего текста

Раздельная компиляция
Язык C++, как и С, позволяет и даже поощряет размещение функций программы в
отдельных файлах. Как говорилось в главе 1, файлы можно компилировать раздельно,
а затем связывать их с конечным продуктом — исполняемой программой. (Как прави*
ло, компилятор C++ не только компилирует программы, но и управляет работой ком*
поновщика.) При изменении только одного файла можно перекомпилировать лишь
этот файл и затем связать его с ранее скомпилированными версиями других файлов.
Этот механизм облегчает работу с крупными программами. Более того, большинство
сред программирования на C++ предоставляют дополнительные средства, упрощаю*
щие такое управление. Например, в системах Unix и Linux имеется программа make,
хранящая сведения обо всех файлах, от которых зависит программа, и о времени их
последней модификации. После запуска make обнаруживает изменения в исходных
файлах с момента последней компиляции, а затем предлагает выполнить соответ*
ствующие действия, необходимые для воссоздания программы. Большинство интег*
рированных сред разработки (integrated development environment — IDE), включая
Embarcadero C++ Builder, Microsoft Visual C++, Apple Xcode и Freescale CodeWarrior,
предоставляют аналогичные средства, доступ к которым осуществляется с помощью
меню Project (Проект).
Рассмотрим простой пример. Вместо того чтобы разбирать детали компиляции,
которые зависят от реализации, давайте сосредоточим внимание на более общих ас*
пектах, таких как проектирование.
Предположим, что решено разделить программу из листинга 7.12 на части и по*
местить используемые ею функции в отдельный файл. Напомним, что эта программа
преобразует прямоугольные координаты в полярные, после чего отображает резуль*
тат. Нельзя просто вырезать из исходного файла часть кода после окончания функции
main (). Дело в том, что main () и другие две функции используют одни и те же объяв*
ления структур, поэтому необходимо поместить эти объявления в оба файла. При про*
стом наборе объявлений в коде можно допустить ошибку. Но даже если объявления
скопированы безошибочно, при последующих модификациях нужно будет не Забыть
внести изменения в оба файла. Одним словом, разделение программы на несколько
файлов создает новые проблемы.
Кому нужны дополнительные сложности? Только не разработчикам С и C++. Для
решения подобных проблем была предоставлена директива #include. Вместо того
чтобы помещать объявления структур в каждый файл, их можно разместить в заголо*
вочном файле, а затем включать его в каждый файл исходного кода. Таким образом,
изменения в объявление структуры будут вноситься только один раз в заголовочный
файл. Кроме того, в заголовочный файл можно помещать прототипы функций.
Итак, исходную программу можно разбить на три части:
  • заголовочный файл, содержащий объявления структур и прототипы функций,
    которые используют эти структуры;
  • файл исходного кода, содержащий код функций, которые работают со структурами;
  • файл исходного кода, содержащий код, который вызывает функции работы со
    структурами.
Такая стратегия может успешно применяться для организации программы. Если,
например, создается другая программа, которая пользуется теми же самыми функция*
ми, достаточно включить в нее заголовочный файл и добавить файл с функциями в
проект или список make. К тому же такая организация программы соответствует прин*
ципам объектно-ориентированного программирования (ООП). Первый файл — заго*
ловочный — содержит определения пользовательских типов. Второй файл содержит
код функций для манипулирования типами, определенными пользователем. Вместе
оба файла формируют пакет, который можно использовать в различных программах.
В заголовочный файл не следует помещать определения функций или объявления
переменных. Хотя в простейших проектах такой подход может работать, обычно он
приводит к проблемам. Например, если в заголовочном файле содержится определе*
ние функции, и этот заголовочный файл включен в два других файла, которые явля*
ются частью одной программы, в этой программе окажется два определения одной и
той же функции, что вызовет ошибку, если только функция не является встроенной.
В заголовочных файлах обычно содержится следующее:
  • прототипы функций;
  • символические константы, определенные с использованием #define или const;
  • объявления структур;
  • объявления классов;
  • объявления шаблонов;
  • встроенные функции.
Объявления структур можно помещать в заголовочные файлы, поскольку они не
создают переменные, а только указывают компилятору, как создавать структурную пе*
ременную, когда она объявляется в файле исходного кода. Подобно этому объявления
шаблонов — это не код, который нуэдю компилировать, а инструкции для компиля*
тора, указывающие, каким образом генерировать определения функций, чтобы они
соответствовали вызовам функций, встречающимся в исходном коде. Данные, объяв*
ленные как const, и встроенные функции имеют специальные свойства связывания
(вскоре они будут рассмотрены), которые позволяют размещать их в заголовочных
файлах, не вызывая при этом каких-либо проблем.
В листингах 9.1, 9.2 и 9.3 показан результат разделения программы из листинга 7.12
на отдельные части. Обратите внимание, что при включении заголовочного файла
используется запись "coordin.h", а не <coordin.h>. Если имя файла помещено в
угловые скобки, компилятор C++ ищет его в той части базовой файловой системы,
где расположены стандартные заголовочные файлы. Но когда имя файла представле*
но в двойных кавычках, компилятор сначала ищет файл в текущем рабочем каталоге
или в каталоге с исходным кодом (либо в другом аналогичном месте, которое зависит
от версии компилятора). Не обнаружив заголовочный файл там, он ищет его в стан*
дартном местоположении. Таким образом, при включении собственных заголовочных
файлов должны использоваться двойные кавычки, а не угловые скобки.
На рис. 9.1 показаны шаги по сборке этой программы в системе Unix. Обратите
внимание, что пользователь только выдает команду компиляции СС, а остальные
действия выполняются автоматически. Компиляторы командной строки g++, gpp и
Borland C++ (Ьсс32 .ехе) ведут себя аналогичным образом. Среды разработки Apple
Xcode, Embarcadero C++ Builder и Microsoft Visual C++ в сущности выполняют те же
самые действия, однако, как упоминалось в главе 1, процесс инициируется по-друго*
му, с помощью команд меню, которые позволяют создавать проект и ассоциировать с
ним файлы исходного кода. Обратите внимание, что в проекты добавляются только
файлы исходного кода, но не заголовочные файлы. Дело в том, что заголовочными
файлами управляет директива #include. Кроме того, не следует использовать дирек*
тиву #include для включения файлов исходного кода, поскольку это может привести
к дублированным объявлениям.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// coordin.h -- structure templates and function prototypes
// structure templates
#ifndef COORDIN_H_
#define COORDIN_H_
 
struct polar
{
    double distance;    // distance from origin
    double angle;        // direction from origin
};
struct rect
{
    double x;        // horizontal distance from origin
    double y;        // vertical distance from origin
};
 
// prototypes
polar rect_to_polar(rect xypos);
void show_polar(polar dapos); 
 
#endif
Управление заголовочными файлами
Заголовочный файл должен включаться в файл только один раз. Это кажется простым тре-
бованием, которое легко запомнить и придерживаться, тем не менее, можно
непреднамеренно включить заголовочный файл несколько раз, даже не подозревая об этом. Например,
предположим, что используется заголовочный файл, который включает другой
заголовочный файл. В C/C++ существует стандартный прием, позволяющий избежать многократных
включений заголовочных файлов. Он основан на использовании директивы препроцессора
#ifndef (if not defined — если не определено). Показанный ниже фрагмент кода
обеспечивает обработку операторов, находящихся между директивами #if ndef и #endif, только в
случае, если имя coordin_h_ не было определено ранее с помощью директивы
препроцессора #defіпе:
#ifndef COORDIN_H_
#endif
Обычно директива #def ine используется для создания символических констант, как в
следующем примере:
#define MAXIMUM 4096
Однако для определения имени достаточно просто указать директиву #def ine с этим
именем:
#define COORDIN_H_
Прием, применяемый в листинге 9.1, предусматривает помещение содержимого файла
внутрь #ifndef:
#ifndef COORDIN_H_
#define COORDIN_H_
// здесь размещается содержимое включаемого файла
#endif

Когда компилятор впервые сталкивается с этим файлом, имя coordin_h_ должно быть
неопределенным. (Во избежание совпадения с существующими именами, имя строится на
основе имени включаемого файла и нескольких символов подчеркивания.)
В этом случае компилятор будет обрабатывать код между директивами #ifndef и #endif,
что, собственно, и требуется. Во время обработки компилятор читает строку с директивой,
определяющей имя coordin_h_. Если затем компилятор обнаруживает второе включение
соогdin.h в том же самом файле, он замечает, что имя coordin_h_ уже определено, и пере-
ходит к строке, следующей после #endif. Обратите внимание, что данный прием не предот-
вращает повторного включения файла. Вместо этого он заставляет компилятор игнорировать
содержимое всех включений кроме первого. Такая методика защиты используется в большин-
стве стандартных заголовочных файлов С и C++. Если ее не применять, одна и та же структура,
например, окажется объявленной в файле дважды, что приведет к ошибке компиляции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// file1.cpp -- example of a three-file program
#include <iostream>
#include "coordin.h" // structure templates, function prototypes
using namespace std;
int main()
{
    rect rplace;
    polar pplace;
 
    cout << "Enter the x and y values: ";
    while (cin >> rplace.x >> rplace.y)  // slick use of cin
    {
        pplace = rect_to_polar(rplace);
        show_polar(pplace);
        cout << "Next two numbers (q to quit): ";
    }
    cout << "Bye!\n";
// keep window open in MSVC++
/*
    cin.clear();
    while (cin.get() != '\n')
        continue;
    cin.get();
*/
    return 0; 
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// file2.cpp -- contains functions called in file1.cpp
#include <iostream>
#include <cmath>
#include "coordin.h" // structure templates, function prototypes
 
// convert rectangular to polar coordinates
polar rect_to_polar(rect xypos)
{
    using namespace std;
    polar answer;
 
    answer.distance =
        sqrt( xypos.x * xypos.x + xypos.y * xypos.y);
    answer.angle = atan2(xypos.y, xypos.x);
    return answer;      // returns a polar structure
}
 
// show polar coordinates, converting angle to degrees
void show_polar (polar dapos)
{
    using namespace std;
    const double Rad_to_deg = 57.29577951;
 
    cout << "distance = " << dapos.distance;
    cout << ", angle = " << dapos.angle * Rad_to_deg;
    cout << " degrees\n";
}
В результате компиляции и компоновки этих двух файлов исходного кода и нового
заголовочного файла получается исполняемая программа. Ниже приведен пример ее
выполнения:
Enter the x and у values : 120 80
distance = 144.222, angle = 33.6901 degrees
Next two numbers (q to quit) : 120 50
distance = 130, angle = 22.6199 degrees
Next two numbers (q to quit) : q
Кстати, хотя мы обсудили раздельную компиляцию в терминах файлов, в
стандарте C++ вместо термина файл используется термин единица трансляции, чтобы
сохранить более высокую степень обобщенности; файловая модель — это не единственный
способ организации информации в компьютере. Для простоты в этой книге будет
применяться термин "файл", но помните, что под этим понимается также и "единица
трансляции".

чего тут сложного?
1
Миниатюры
Какую ide лучше использовать для c++  
gru74ik
27.07.2014, 19:04
  #19

Не по теме:

del

0
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 692
Записей в блоге: 1
27.07.2014, 19:05 #20
Да ничего сложного. Если вас заставить учить китайский, вы его и по надписям на освежителе воздуха выучите. Я же вам говорю: мой личный печальный опыт состоит в том, что все виденные мной выпускники матфака и факультета компбютерных технологий умеют только открыть студию и чегой-то там подмудрить. И не надо мне говорить, что дело не в IDE, а в прогнившей системе. Я вам открою тайну: никто из моих почти 100 сокурсников даже не догадывается, что IDE просто пишет Makefile за вас. И препод не догадывается. Им что, книжки читать запретили? Нет. Или вы станете отрицать, что вполне отличная IDE Delphi версии ну хотя бы 7 никак не виновата в том, что прямо в обработчиках кнопок вся логика программы?
0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
27.07.2014, 19:07 #21
CyberSolver, а зачем им это знать? просто то что вы описываете - прошлый век, технология идет вперед, зачем нужна автоматизация если ей не пользоваться? в этом весь смысл IDE... язык от IDE не меняется и то что
Цитата Сообщение от CyberSolver Посмотреть сообщение
умеют только открыть студию и чегой-то там подмудрить
это не значит что они хуже вас знают язык...
0
Winorun
38 / 38 / 4
Регистрация: 03.05.2013
Сообщений: 177
27.07.2014, 19:07 #22
Для hello word'а подходит вполне geany, а так Qt creater + cmake, ну а вим + cmake для маленьких консольных.
Кстати сам начинал с VB. Хватило месяца что бы переучится на С.

Про вузы это вы загнули, или вам ОЧЕНЬ не везло.
0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
27.07.2014, 19:09 #23
Цитата Сообщение от Winorun Посмотреть сообщение
Кстати сам начинал с VB. Хватило месяца что бы переучится на С.

Не по теме:

а мы в школе паскаль изучали, а в универе си пошел

0
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 692
Записей в блоге: 1
27.07.2014, 19:14 #24
Цитата Сообщение от GetHelp Посмотреть сообщение
CyberSolver, а зачем им это знать?
Чтобы не быть индусом. Мне один вполне себе аспирант-джуниор говорил, что паскаль плох тем, что вместо { и } там begin и end.
Цитата Сообщение от GetHelp Посмотреть сообщение
просто то что вы описываете - прошлый век
Консоль вроде никуда не делась. Makefile'ы остались. Вы вообще о чём?
Цитата Сообщение от GetHelp Посмотреть сообщение
технология идет вперед
Ну да, и нам уже нужен Intel Pentium Core i7 для запуска блокнота.
Цитата Сообщение от GetHelp Посмотреть сообщение
зачем нужна автоматизация если ей не пользоваться?
Какая автоматизация нужна новичку?
Цитата Сообщение от GetHelp Посмотреть сообщение
это не значит что они хуже вас знаю язык...
Давайте я минут через 15, покатавшись по полу от приступа истерического смеха, вернусь на форум.

Добавлено через 2 минуты
Холивар так холивар. Два вопроса к Пустоте (который Пётр).

1. Первый язык - Паскаль или Си? Варианты Python/Logo и прочая дурь - не варианты (сами языки тут ни при чём, заметьте).

2. Сколько знакомых вам программистов (включая вас) знаёт о стек-фреймах? Инвариантах цикла?
Мой ответ: 0. Зато человек 10 знает, что такое рефакторинг.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4189 / 1837 / 198
Регистрация: 20.02.2013
Сообщений: 4,976
Записей в блоге: 21
27.07.2014, 19:14 #25
Цитата Сообщение от CyberSolver Посмотреть сообщение
мой личный печальный опыт состоит в том, что все виденные мной выпускники матфака и факультета компбютерных технологий умеют только открыть студию и чегой-то там подмудрить
Всё с Вами ясно. Может хватит причитать? Во все времена были те, кто выбирают "автомат" и те, кто за "тру-энд-ивел, только ручная коробка, только хард-кор". И чё теперь?
Всегда есть те, кому надо "всё работает из коробки" и те, кому интересно, а как оно устроено, как там внутри, и дальше, и ещё на один уровень абстракции ниже, и ещё, а что там, а ещё дальше...
0
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 692
Записей в блоге: 1
27.07.2014, 19:16 #26
Цитата Сообщение от Winorun Посмотреть сообщение
Про вузы это вы загнули, или вам ОЧЕНЬ не везло.
Мой вуз - четвертый в стране по рейтингам минобра. Видели учебник Лаврова по ООП (а по нему в МИФИ учат)? Если им так не повезло, то я уже и не знаю, что там за МКАДом творится
0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
27.07.2014, 19:17 #27
Цитата Сообщение от CyberSolver Посмотреть сообщение
Чтобы не быть индусом. Мне один вполне себе аспирант-джуниор говорил, что паскаль плох тем, что вместо { и } там begin и end.
ну синтаксис это конечно не основной его недостаток по сравнению с С-подобными языками, но все таки...
Цитата Сообщение от CyberSolver Посмотреть сообщение
Консоль вроде никуда не делась. Makefile'ы остались. Вы вообще о чём?
то что ее не выпилили из винды еще не значит что ей кто то пользуется...
Цитата Сообщение от CyberSolver Посмотреть сообщение
Ну да, и нам уже нужен Intel Pentium Core i7 для запуска блокнота.
я имел ввиду IDE
Цитата Сообщение от CyberSolver Посмотреть сообщение
Какая автоматизация нужна новичку?
IDE
Цитата Сообщение от CyberSolver Посмотреть сообщение
Давайте я минут через 15, покатавшись по полу от приступа истерического смеха, вернусь на форум.
давайте смех без причины - признак...
0
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 692
Записей в блоге: 1
27.07.2014, 19:17 #28
gru74ik, не обижайтесь, но если вам всё и так заранее ясно, чего вы от меня хотите? Пишите ответы тогда за меня, может и мне чего яснее станет.
0
Winorun
38 / 38 / 4
Регистрация: 03.05.2013
Сообщений: 177
27.07.2014, 19:18 #29
Паскаль, делфи, питон, FASM, PHP, JAVA. + базы данных, UML и многое другое сопудствующие, вроде патернов и парадигм - все это многообразие за 4 года. Преподы предлагающие на лабораторных алгоритмы которые по скорости делают всех остальные, свеже разработанные. И это далеко за МКАДом
0
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
27.07.2014, 19:22 #30
Цитата Сообщение от CyberSolver Посмотреть сообщение
2. Сколько знакомых вам программистов (включая вас) знаёт о стек-фреймах? Инвариантах цикла?
Мой ответ: 0. Зато человек 10 знает, что такое рефакторинг.
Ох, лол. Еще бы, знания о рефакторинге ( а точнее умение его правильно и вовремя проводить ) куда полезнее знаний о ранее перечисленном. Циклы не нужны, а что с стек-фреймами-то, чего там знать, элементарно ж все? ( да даже если и не знать, ничего страшного, нужны они только для отладки ( если конечно я правильно понял о чем речь ) )
0
27.07.2014, 19:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2014, 19:22
Привет! Вот еще темы с ответами:

Какую лучше всего в наше время использовать графическую библиотеку? - C++
Какую лучше всего в наше время использовать графическую библиотеку? в VS 2012, слышал об SFML, и Openg. Какую современную и легкую для...

Как лучше спроектировать систему и какую архитектуру разработки приложения использовать? - C++
Всем привет, ситуация такая: Сейчас появилось время и решил снова заняться разработкой САПР для машиностроения. Для чего? Считаю...

Какую лучше выбрать среду для графики - C++
Какая среда больше подходит для программирования графики с OpenGL, без конструктора визуальных компонентов, и бесплатная

Какую функцию STL использовать для работы с множеством ? - C++
Есть 2 множества : а и b for( int i = 0; i &lt; 5; i++) { a.insert(i); } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru