Сообщество - Лига программистов C/C++
Добавить пост

Лига программистов C/C++

63 поста 4 766 подписчиков

Популярные теги в сообществе:

Как достичь успеха в изучении С++: советы и практика

Приветствую вас, друзья! Сегодня я хочу поделиться своим опытом изучения языка программирования С++. За шесть месяцев я наткнулся на множество трудностей и хочу дать вам несколько советов, которые помогут вам решить часть из них.

Сразу вынужден сделать оговорку что материал несет в себе чисто субъективный характер, так же он обобщен и является лишь инструкцией для поиска методов и концепций которые подойдут именно вам.

Первым шагом в изучении С++ является выбор подходящей книги. Это может быть сложным выбором, так как многие книги предназначены для разных уровней знаний и стилей мышления. Я провел много времени, чтобы найти книгу, которая бы соответствовала моему уровню знаний и стилю мышления. Мой выбор пал на книгу "Язык программирования С++" 6-ое издание Стивена Прата. Я также начал читать книгу Липмана для начинающих, чтобы иметь возможность сравнить два подхода и убедиться в правильности своего выбора. По этому я могу дать вам следующую рекомендацию, начинайте изучение любой книги, в процессе анализируйте задавая себе вопросы: Хорошо ли я понимаю материал? Подходит ли мне стиль написания материала? , если ответ будет нет, предлагаю вам попробовать продолжить изучение с другой книгой, в интернете есть множество рекомендаций по книгам, перебирайте и выберите самую подходящую конкретно для вас.
*Хочу сделать примечание: не используйте этот метод для прокрастинации, не стоит тратить слишком много времени для выбора "идеальной книги" такой не существует, её можете написать вы сугубо для себя, исходя из того опыта, предпочтений т.д., которые вы получите за годы программирования и изучения материала.

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

Не стоит перегружать себя информацией , стоит сохранять умеренность в изучении материала и отдыхать, когда чувствуете усталость просто отложите книгу, и приступите за её изучение когда ваш мозг будет готов потреблять и усваивать новую информацию.

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

a)Человек с предрасположенность в этой сфере не нуждается в моих советах по мотивации, он мотивирован заниматься этим потому что ему нравиться сам процесс.

b)Человек с конкретной целью или размытой также разобьются на подгруппы и к ним будет применяться различные методы которые помогут им сохранить мотивацию или отказаться от такого рода деятельности.

b.1)Человек с конкретной целью будет держать всегда свою цель перед глазами и сможет отслеживать процент проделанной работы по её достижению, анализируя усвоенный материал, задавая себе вопрос: приближает ли меня к этой цели усвоенный материал или же он был бесполезен для её достижения?

*Примечание: Есть ситуации и их возникает весьма много, когда мы не способны правильно ответить на этот вопрос, в связи с тем что не достаточно компетентны в этой области, в этих случая все покажет время, далее в тексте будет упомянут метод для нивелирования подобных проблем.

Для того что бы иметь конкретную цель вам необходимо разобраться в структуре поставленной цели наметить пластичный план, в самом начале этот план будет поверхностным, но в процессе благодаря его пластичности вы сможете редактировать его под уже имеющиеся у вас знания, возможно имея новую информацию на руках вы сочтете нужным убрать какую-то часть , а какую-то наоборот добавить, также вы можете прибегнуть к советую опытных людей в этой области, их можно найти в сообществах по интересующей вас тематике.

Интернет полон ресурсов и уроков, которые могут помочь вам в изучении языка С++. Однако, чтобы достичь успеха, необходимо не только знания, но и практика. Лично я пользуюсь codwars для практики, вы же можете найти в интернете множество других ресурсов для практики, opensours проекты тоже будут хороши вариантом для вас.

Не забывайте отдыхать и не перегружать себя информацией. В конце концов, вы изучаете язык программирования для того, чтобы достигнуть своих целей и создавать новые, уникальные и полезные программы.

Я уверен, что с достаточным упорством, терпением и мотивацией вы сможете достичь своих целей и стать опытным программистом на С++. Желаю удачи в вашем путешествии в мир программирования!

Буду рад конструктивной критики .

Показать полностью

Using namespace std;

В C++ пространство имен (namespace) — это механизм, который позволяет группировать идентификаторы (например, переменные, функции, классы и т.д.) в отдельные области. Это помогает избежать конфликтов имен и упрощает организацию кода.

Стандартная библиотека C++ содержит множество полезных функций и классов, которые объединены в пространство имен std. Чтобы использовать эти функции и классы в своем коде, необходимо указывать префикс std:: перед каждым идентификатором. Например, чтобы вывести на экран сообщение, можно использовать следующий код:
***********************************************************************************************************
#include <iostream>

int main() {

std::cout << "Hello, world!" << std::endl;

return 0;

}

***********************************************************************************************************
Здесь мы используем функцию std::cout из пространства имен std для вывода текста на экран. Обратите внимание на двоеточие и двойной слеш, которые указывают на принадлежность функции к пространству имен std.

Однако, если мы хотим использовать много функций и классов из пространства имен std, то придется каждый раз писать префикс std::. Это может затруднить чтение и понимание кода, а также увеличить объем написанного текста. Чтобы избежать этого, можно использовать директиву "using namespace std;". Она позволяет использовать все идентификаторы из пространства имен std без указания префикса std::.

Пример использования директивы "using namespace std;" выглядит следующим образом:

***********************************************************************************************************
#include <iostream>

using namespace std;

int main() {

cout << "Hello, world!" << endl;

return 0;

}

***********************************************************************************************************

Здесь мы указали, что будем использовать все идентификаторы из пространства имен std, и теперь можем обращаться к функции cout без указания префикса std::. Такой код выглядит более компактно и легче читается.

Однако, необходимо быть осторожным при использовании директивы "using namespace std;", так как это может привести к конфликтам имен и ошибкам компиляции. Например, если у вас есть своя функция с именем cout, то при использовании директивы "using namespace std;" возникнет конфликт и компилятор не сможет определить, какую именно функцию cout использовать. Поэтому рекомендуется использовать директиву "using namespace std;" только внутри функций, а не в глобальной области видимости.

Также можно использовать частичную директиву "using", которая позволяет использовать только определенные идентификаторы из пространства имен std. Например, если мы хотим использовать только функцию cout и не хотим загромождать пространство имен другими идентификаторами из std, можно написать следующий код:

***********************************************************************************************************
#include <iostream>

using std::cout;

int main() {

cout << "Hello, world!" << std::endl;

return 0;

}

***********************************************************************************************************
Здесь мы использовали частичную директиву "using", чтобы указать, что будем использовать только идентификатор cout из пространства имен std. Теперь можем обращаться к функции cout без указания префикса std::.

В целом, использование директивы "using namespace std;" может упростить написание кода и сделать его более читаемым, но необходимо быть осторожным, чтобы избежать конфликтов имен и ошибок компиляции.

Кроме того, существуют и другие пространства имен, которые могут быть полезны при написании программ на C++. Например, пространство имен std::chrono содержит классы для работы со временем, а пространство имен std::vector содержит классы для работы с динамическими массивами. Также в стандартной библиотеке C++ есть множество других полезных классов и функций, которые могут быть использованы при написании программ.

Но про эти пространства имен мы поговорим в следующих постах.

Показать полностью

Прошу помощи

Здравствуйте уважаемые пикабушники, я разрабатываю приложение авиакомпании с базой данных POSTGRESQL на языке C++ фреймворк QT. В приложении есть админская часть и пользовательская. В админской части как раз таки возникла проблема. В админской части мы можем создавать, обновлять, удалять рейсы, самолеты, маршруты и т.д. В начале данные вносились в tableView напрямую, но потом от такой реализации было решено отказаться. Теперь данные должны вносится через формы ввода. Мне необходимо, чтобы данные из при нажатии на tableView переносились в форму ввода. С обычными значениями проблем нет, но с данными, которые ссылаются на объект из другой таблицы возникают проблемы. Данные передающиеся по foreign key при клике на tableView должны передаваться на ComboBox в форме ввода данных. Частично у меня получилось это реализовать, но при первом заходе в таблицу, содержащую foreign key у меня не передаются данные в comboBox (при клике на таблицу все работает корректно) (эта проблема отражена на гифке). В данных формах ввода я проверяю введенные в них данные, если значения корректные, то они отправляются в БД. Полагаю, что при решении первой проблемы у меня может возникнуть проблема с отправкой данных из comboBox формы в БД и tableView (с этим тоже хотелось бы разобраться). Данной работе в БД вносятся изменения в 5 таблицах (аэропорты, рейсы, самолеты, маршруты, вариант билета). Буду очень признателен, если хотя в одной из таблиц удаться решить описанные мною проблемы.

гифка и файлы необходимые для запуска проекта.

Заранее спасибо! Верю в силу Пикабу!

https://disk.yandex.ru/d/SolJbQT5-32vGw

Прошу помощи Программирование, C++, Помощь, Без рейтинга, Проблема, Сила Пикабу, Гифка
Показать полностью 1

Вопрос по обучению

Решила поучиться С++. Читаю книгу Майкла Доусона "Изучаем С++ через программирование игр". И здесь речь идёт о Microsoft visual studio express 2013 для windows ПК. Попыталась найти на официальном сайте, выходит языковой пакет для рабочего стола. При этом русского языка нет. Не понимаю, куда копать? Помогите, плиз! Или программного обеспечения сейчас в принципе на русском языке нет?

Выбор курса

Доброго времени суток. Ситуация такая: я студент 3-го курса вечернего обучения направления ИСИТ. И дело в том, что я о С++ знаю толком ничего. Самые основы, например, циклы for, if/else, switch, while написать могу, но на этом всё. Мои знания остались поверхностные с первого курса, как только дело дошло до указателей. В универе толком ничему не учат, дают только херовые методички, задания и делайте с этим что хотите, главное, чтобы прислали к дедлайну.
У кого не спрошу какие курсы лучше пройти, какие толковые, какие отстойные, никто ничего сказать не может.
Может быть здесь кто-то сможет что-нибудь посоветовать. Меня, например, заинтересовал способ изучения языка через создание игр на UE4. Но при этом всегда демотивирует неуверенность в том, толковый ли этот курс или он будет такой же бессмысленный как те, что дают нам преподаватели (неразвернутая информация, кучу всего нужно искать самостоятельно в других источниках и тп)
Вот, собственно, сама книга, про которую я говорю:

Выбор курса Вопрос, Текст, C++, Образование, Обучение, Учеба, Помощь, Программирование

Буду благодарна, если здесь заверят этот курс как годный, или подскажут на своем опыте другие.

Показать полностью 1

С++ Книги Для Начинающего Программиста

Здравствуйте уважаемые программисты, хочу задать вопрос на тему какую книгу по программированию начать изучать первой.

Во многих источника есть списки топ книг для изучения, но не в одном из источников не указываются  недостатки книги, а в связи с этим о объективности речи не идет.

Вопрос насущный заключается в том, какую книгу вы посоветуете имея уже свой опыт в изучении и почему именно, какие в ней минусы и плюсы?

Для лиги тупости пост... Не пучается makefile

Туплю второй день, стыдно даже публиковать под своим именем )


Нужно собрать мелкий проект под mingw (gcc.exe (MinGW.org GCC Build-2) 9.2.0), подключив билиотеку  libGFL версии 3.40 (от разрабов XnView, последняя версия, и уже не разрабатывается - но для моей мелкой задачи  её вполне хватает). Библиотека libgfl.lib находится в той же директории, что и сам компилируемый исходник.


Проблема возникает на этапе линковки.

Если тупо задать сборку из командной строки

gcc -opicinfo.exe picinfo.cpp -L . -lgfl
Все молча собирается.

А вот если все то же самое, но в два этапа, и через мэйкфайл - то результат несколько иной.


Ниже мэйкфайл с удаленными комментариями и пустыми строками (небходимые по спецификации табуляции, не переносятся в пост, поэтому заменены пробелами):

OBJS = picinfo.o
CFLAGS=
LFLAGS= -L . -lgfl
all: picinfo.exe
picinfo.exe: $(OBJS)
  g++ -o $@ $(LFLAGS) $^
%.o: %.cpp
g++ $(CFLAGS) -c $<
picinfo.o: picinfo.cpp

То почему-то на выходе получается куча неразрешенных ссылок на функции:


C:\Projects\Picinfo>make
g++ -c picinfo.cpp
g++ -o picinfo.exe -L. -lgfl picinfo.o
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x7): undefined reference to `gflLibraryExit@0'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0xca): undefined reference to `gflGetDefaultLoadParams@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x107): undefined reference to `gflLoadBitmap@16'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x12f): undefined reference to `gflGetErrorString@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x359): undefined reference to `gflBitmapHasEXIF@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x37f): undefined reference to `gflBitmapGetEXIF@8'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x4ca): undefined reference to `gflFreeEXIF@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x4db): undefined reference to `gflFreeFileInformation@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x4ec): undefined reference to `gflFreeBitmap@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x566): undefined reference to `gflSetPluginsPathname@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x56e): undefined reference to `gflLibraryInit@0'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x5a8): undefined reference to `gflEnableLZW@4'
collect2.exe: error: ld returned 1 exit status
makefile:10: recipe for target 'picinfo.exe' failed
make: *** [picinfo.exe] Error 1

Отчего проиходит такая печаль - ума не приложу... Что скажут аксакалы?

Показать полностью

Сможете найти на картинке цифру среди букв?

Справились? Тогда попробуйте пройти нашу новую игру на внимательность. Приз — награда в профиль на Пикабу: https://pikabu.ru/link/-oD8sjtmAi

Сможете найти на картинке цифру среди букв? Игры, Награда

Мобильная 1С и внешние компоненты

Очень надеюсь, что здесь есть люди, которые делают/сделали компоненты для мобильного приложения/клиента 1С.

Хочу сделать компоненту для мобильного приложения (Android), но не понимаю как её собрать. Пишу на C++. DLL получается и всё круто, а SO, для ARM/ARM64, при подключении на мобилке вылетает. Причем и моя, и с ИТС. И как отладить не понимаю. Собирал через Visual Studio. Тестил на своем телефоне (ARM64) и на ТСД (ARM). В процессе гугления нашёл ещё способы:
1. Собрать под Linux и, вроде как, оно будет работать
2. Собрать SO в Android Studio

Но тут уже не хватает знаний как и что делать и по итогу просто запутался. И спросить совсем не у кого(

Прошу подсказать, скинуть какой-нибудь материал для подсказки, мини-инструкцию, пример или хоть как-нибудь помочь

P.S. Пишу на Пикабу уже от отчаяния, ибо три дня гугления ничего не дают. Естественно без рейтинга

Отличная работа, все прочитано!