Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Ответы на часто задаваемые вопросы! |
Автор: bsa 16.8.2009, 11:57 |
Ниже приводятся ссылки на статьи описывающие те или иные задачи, которые ставятся перед начинающими осваивать языки программирования. Уверен, что ответы на большинство из них вы найдете именно там. Вопросы в них задавать нельзя - будут удаляться модераторами! Если что-то непонятно, то надо создать отдельную тему, сослаться на статью и описать, что именно вызвало затруднения. Возможно, именно благодаря вам статья станет в будущем близка к идеалу. http://forum.vingrad.ru/forum/topic-287943/kw-faq-books-%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0-%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8.html © bsa (обсуждение, незавершено) http://forum.vingrad.ru/forum/topic-205361/kw-hello-world-iostream.html © archimed7592 (незавершено) http://forum.vingrad.ru/index.php?showtopic=269794&view=findpost&p=2099932 © bsa http://forum.vingrad.ru/forum/topic-269805/kw-faq-coding-style-стиль-кодирования.html © bsa (незавершено) http://forum.vingrad.ru/index.php?showtopic=269794&view=findpost&p=1981664 © bsa http://forum.vingrad.ru/forum/topic-272671.html © bsa (незавершено) http://forum.vingrad.ru/topic-189118.html © bsa (незавершено) http://forum.vingrad.ru/index.php?showtopic=269794&view=findpost&p=2086699 © bsa (незавершено) http://forum.vingrad.ru/faq/topic-190805.html © JackYF (Несколько файлов? Один включает другой? Компилятор ругается? Хотите знать почему и что делать?) http://forum.vingrad.ru/forum/topic-189260/kw-%25D0%25BF%25D1%2580%25D0%25B5%25D0%25BE%25D0%25B1%25D1%2580%25D0%25B0%25D0%25B7%25D0%25BE%25D0%25B2%25D0%25B0%25D0%25BD%25D0%25B8%25D0%25B5-%25D0%25BF%25D1%2580%25D0%25B8%25D0%25B2%25D0%25B5%25D0%25B4%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B5-%25D0%25BA%25D0%25BE%25D0%25BD%25D0%25B2%25D0%25B5%25D1%2580%25D1%2582%25D0%25B0%25D1%2586%25D0%25B8%25D1%258F-%25D1%2581%25D1%2582%25D1%2580%25D0%25BE%25D0%25BA%25D0%25B8.html © zkv (незавершено) Как создать проект: http://forum.vingrad.ru/topic-205782.html (незавершено) http://forum.vingrad.ru/forum/topic-270683/kw-compiler-linker-preprocessor.html © bsa (незавершено) http://forum.vingrad.ru/index.php?showtopic=269794&view=findpost&p=2347213 (незавершено) Если у вас есть большой опыт работы на Си и/или С++, а так же возникло желание поделиться своими знаниями с новичками, то вам http://forum.vingrad.ru/forum/topic-188473.html. |
Автор: bsa 30.9.2009, 11:08 | ||||||
Многие изучающие языки Си и С++ почти везде используют постфиксную форму операторов ++ и -- (i++), особенно в цикле for(;;), объясняя это тем, что выполняться они должны после тела цикла. Но все не так, как кажется. На самом деле цикл for(;;) работает несколько иным образом. Возьмем некий условный цикл for(EXP1; EXP2; EXP3) EXP4; и перепишем его с помощью while:
Теперь рассмотрим, а чем собственно эти формы операторов отличаются на примере ++: по описанию обе формы оператора увеличат переменную на 1, а вот результат операции будет отличаться - старое значение переменной для постфиксной формы и новое для префиксной:
В случае языка Си компилятор способен распознать неверное использование постфиксной формы и оптимизировать ее. А вот в С++ эти операторы могут применяться к сложные объектам (например, итераторам), которые уже компилятор оптимизировать не в силах. Поэтому, всегда используйте префиксную (++i и --i) форму этих операторов, кроме тех случаев, когда нужна функциональность постфиксной, даже если применяете к объектам стандартных типов (char, short, int, long, long long) - тем самым набьете руку и уже там, где разница чувствительна, будете использовать нужную форму автоматически. |
Автор: bsa 2.2.2010, 01:00 | ||||||||||
Многие начинающие (и не очень) программисты под Windows (в первую очередь) сталкиваются с проблемой русского языка. В код программы записывается строка содержащая кириллицу, а готовая программа в результате выводит какие-то кракозябры. Причина этого кроется в том, что текстовый редактор работает в одной кодировке (cp1251 под Windows), а консоль в другой (IBM866 под Windows). Для решения этих проблем уже придуманы стандартные средства. В частности, функция setlocale() и wchar_t. Например, нужно вывести на экран строку "Привет мир!". Для этого обычно пишут на С:
Чтобы на консоль поступали правильным образом подготовленные символы нужно указать программе, в какой кодировке работать надо. Для этого существует функция setlocale(). Документацию на нее легко можно найти в Интернет (функция стандартная), поэтому я только скажу, как ее нужно правильно вызывать. А именно: setlocale(LC_ALL, "") - установка текущих параметров локали пользователя. По началу можно подумать, что это все. На самом деле это не так! Предположим, что текущая локаль у пользователя английская, что будет тогда? Вместо кириллицы будут отображаться западно-европейские символы, а так же псевдографика. Поэтому следует использовать UNICODE. Итак, программы будут выглядеть так:
Данный метод работает под Windows только при использовании компилятора Microsoft (возможно, в MSVS 6.0 он тоже не работает). Чтобы он заработал при компиляции отличными от MS компиляторами, придется писать перекодировщики из cp1251 в 866 и обратно. Делается это функциями WinAPI: CharToOem() и OemToChar() Пример на С++:
|
Автор: bsa 19.2.2010, 00:43 | ||||
Новички использующие некоторые IDE (например, Dev-C++) под MS Windows часто сталкиваются с проблемой, когда при запуске программы появляется на мгновение черное окно и тут же исчезает, что не позволяет увидеть результат работы программы. Это связано с тем, что ОС автоматически закрывает окна завершивших свою работу приложений. Чтобы задержать окно на экране необходимо сделать задержку. Наиболее простой и универсальный способ - ждать пока пользователь нажмет клавишу Enter. Делается это так: На языке С:
|
Автор: bsa 16.5.2011, 17:31 |
У новичков часто возникают с проблемы выбора IDE (интегрированной среды разработки). Одни из них сложные и навороченные, другие не работают "из коробки", а третьи отсутствуют под требуемую операционную систему. Вот список бесплатных IDE, позволяющих создавать код на С/С++: Dev-C++ - среда разработки под Windows, имеет удобную возможность установки дополнительных библиотек. Qt Creator - кроссплатформенная IDE от создателей Qt. Быстрая и достаточно мощная. Qt SDK содержит и компилятор, и IDE. Code::Blocks - легкая кроссплатформенная среда разработки. Microsoft Visual Studio Express Edition - среда разработки под Windows и только. Eclipse CDT - очень мощная кроссплатформенная IDE, написанная на Java (очень сильно тормозит на больших и сложных проектах) NetBeans - мощная IDE, но имеющая некоторые проблемы с Windows (нужно дополнительно настраивать) KDevelop - среда разработки для KDE (Linux) Anjuta - среда разработки для Gnome (Linux) Новичкам рекомендую Dev-C++, Code::Blocks или Qt Creator. Они требуют минимальных настроек, имеют маленькие дистрибутивы (установщик Qt SDK позволяет отключить компоненты, занимающие львиную долю места), существуют версии для всех популярных настольных систем. |