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

Как эффективно изучать программирование? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
guitarman
0 / 0 / 0
Регистрация: 13.07.2013
Сообщений: 10
23.07.2013, 11:53     Как эффективно изучать программирование? #1
Всем привет, хотелось бы услышать рекомендации по эффективному изучению языка C++. Изучаю его по книге Дейтелов, пишу и разбираю примеры из книги. Прошёл 7 глав, а дальше уже очень сложно понимать информацию. Осознаю, что теория это хорошо, но не хватает практических навыков.
1) Может нужно учить какие-то алгоритмы или разделы математики? Посоветуйте литературу.
2) Подскажите книгу, где есть базовые задания с решениями.
3) Что может быть полезным на Coursera?
4) Разбор олимпиадных задач.
Расскажите как вы видите изучения программирования. Какую литературу и ресурсы использовать.
Заранее благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2013, 11:53     Как эффективно изучать программирование?
Посмотрите здесь:

C++ Как изучать С++ ?
Как начать изучать C++? C++
C++ Как эффективно заменить подстроку в строке на другую подстроку?
Как научиться эффективно читать чужой код С++ C++
C++ Как изучать boost?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
23.07.2013, 11:57     Как эффективно изучать программирование? #2
Цитата Сообщение от guitarman Посмотреть сообщение
4) Разбор олимпиадных задач.
если нужны олимпиадные задачи с разборами посмотри книгу Меньшиков. Олимпиадные задачи по программированию
guitarman
0 / 0 / 0
Регистрация: 13.07.2013
Сообщений: 10
23.07.2013, 12:10  [ТС]     Как эффективно изучать программирование? #3
Жаль, что примеры написаны на паскале.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
23.07.2013, 12:14     Как эффективно изучать программирование? #4
guitarman, посмотрите здесь
Nerock
8 / 7 / 0
Регистрация: 02.05.2012
Сообщений: 92
23.07.2013, 18:38     Как эффективно изучать программирование? #5
В тему, на этом сайте есть даже небольшая обучалка по С++ и задачи, разбитые по темам

прошу прошения ,не только С++, но и другим языкам
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
23.07.2013, 18:47     Как эффективно изучать программирование? #6
Цитата Сообщение от guitarman Посмотреть сообщение
по книге Дейтелов
Так там же есть очень много упражнений самых различных уровней сложности
Old_Daniel
0 / 0 / 0
Регистрация: 13.08.2014
Сообщений: 9
18.08.2014, 18:32     Как эффективно изучать программирование? #7
Цитата Сообщение от Nerock Посмотреть сообщение
В тему, на этом сайте есть даже небольшая обучалка по С++ и задачи, разбитые по темам
прошу прошения ,не только С++, но и другим языкам
Сложно проверить, потому что на сайт ****.com как-то не удалось зайти.
gru74ik
Модератор
 Аватар для gru74ik
3119 / 1345 / 167
Регистрация: 20.02.2013
Сообщений: 3,820
Записей в блоге: 17
18.08.2014, 22:26     Как эффективно изучать программирование? #8
Цитата Сообщение от guitarman Посмотреть сообщение
Прошёл 7 глав, а дальше уже очень сложно понимать информацию.
Есть такое дело. Поэтому иногда бывает полезно отвлечься, разгрузить мозги, просто поржать, например.

Либо вот ещё способ - посмотреть как ту же тему, на которых ты у Дейтелов "впадаешь в ступор" объясняют другие авторы (например, Липпман или Прата).

Можно попробовать обучение в игровом процессе.

Главное, не впадать в уныние.

Добавлено через 26 минут
Вот ещё кое-что (от создателя С++):
Кликните здесь для просмотра всего текста
Цитата Сообщение от Бьярне Страуструп
1.2. Как изучать C++

Изучая C++, нужно сконцентрироваться на концепциях и не потеряться в
технических деталях. Цель изучения — стать квалифицированным программистом,
который эффективно проектирует и реализует новые разработки, а также умело
поддерживает уже существующие. Для этого важнее понять методологию
проектирования и программирования, чем исчерпывающе изучить все детали языка —
последнее постепенно приходит вместе с опытом.
<...>
C++ поддерживает постепенный подход к обучению. Ваш собственный путь
изучения нового языка программирования зависит от того, что вы уже знаете,
и чему именно хотите научиться. В этом деле нет единого подхода для всех и
каждого. Я предполагаю, что вы изучаете C++, чтобы повысить эффективность в
проектировании программ и их реализации. То есть я полагаю, что вы не только хотите
изучить новый синтаксис, чтобы с ним писать новые программы старыми
методами, но в первую очередь стремитесь научиться новым, более продуктивным
способам построения программных систем. Это надо делать постепенно, так как
приобретение и закрепление новых навыков требует времени и практики. Подумайте,
сколько времени обычно занимает качественное овладение иностранным языком,
или обучение игре на музыкальном инструменте. Конечно, стать
квалифицированным программным архитектором и разработчиком можно быстрее, но не
настолько, как многим хотелось бы.
Отсюда следует, что вы будете использовать C++ (зачастую для построения
реальных систем) еще до того, как овладеете всеми его нюансами. Поддерживая
несколько парадигм программирования (глава 2), C++ обеспечивает возможность
продуктивной работы программистов разной квалификации. Каждый новый стиль
программирования добавляет новый штрих в ваш совокупный инструментарий, но
каждый стиль ценен и сам по себе, так как увеличивает эффективность вашей
работы как программиста. Язык C++ организован таким образом, что вы можете
изучать его концепции последовательно, постепенно наращивая свои возможности.
Это важно, так как ваши возможности будут расти практически пропорционально
затраченным на обучение усилиям.
<...>
Вопрос «Как писать хорошие программы на C++?» практически полностью
аналогичен вопросу « Как писать хорошую английскую прозу?». Здесь есть два совета:
«Знай то, что хочешь сказать» и «Практикуйся. Подражай успешным образцам».
Оба совета походят и для C++, и для английского языка, но обоим из них так
трудно следовать.



1.8. Советы

Ниже дан набор «правил», которые могут пригодиться при изучении C++. По
мере продвижения в этом процессе вы можете переработать их в нечто, более
пригодное для ваших задач и вашего индивидуального стиля программирования.
Перечисленные правила являются упрощенными и не отражают множества деталей. Не
воспринимайте их слишком буквально. Для написания хороших программ
требуются ум, вкус и терпение. Вряд ли эти правила помогут вам с самого начала.
Экспериментируйте!
1. В процессе программирования вы реализуете конкретное представлений
концепций решения некоторой проблемы. Постарайтесь, чтобы структура
программы отражала эти концепции как можно более непосредственно:
• [а] Если вы мыслите об «этом» как о некой общей сущности, сделайте
«это» классом.
• [Ь] Если вы мыслите об «этом» как о конкретном экземпляре сущности,
сделайте «это» объектом класса.
• [с] Если два класса имеют общий интерфейс, оформите его в виде
абстрактного класса.
• [d] Если реализации двух классов имеют что-то общее, вынесите это общее
в базовый класс.
• [е] Если класс является контейнером объектов, сделайте его шаблоном.
• [f] Если функция реализует алгоритм работы с контейнером, сделайте ее
функциональным шаблоном, реализующим алгоритм для работы с
семейством контейнеров.
• [g] Если классы, шаблоны и т.д. логически связаны, поместите их все
в единое пространство имен.
2. Определяя класс (если только это не математический класс вроде матриц или
комплексных чисел, или низкоуровневый тип вроде связного списка):
• [а] Не используйте глобальные данные (применяйте классовые поля
данных).
• [Ь] Не используйте глобальные функции.
• [с] Не делайте поля данных открытыми.
• [d] He используйте дружественные функции, разве что во избежание [а]
и [с].
• [е] Не используйте в классах «поля типа»; применяйте виртуальные
функции.
• [f] He используйте встраиваемые функции, разве что для значительной
оптимизации.
Более конкретные или подробные правила вы найдете в разделе советов в конце
каждой главы. Помните, что это лишь советы, а не непреложные законы. Советами
стоит пользоваться только там, где это разумно. Они не заменяют ум, опыт,
здравый смысл и хороший вкус.
Я считаю советы вроде «не делайте этого никогда» бесполезными. Поэтому
большинство советов формулируются в виде предложений, что желательно делать,
а негативные утверждения не формулируются в виде абсолютных запретов. Я не
знаю ни одного важного элемента языка C++, примеры полезного применения
которого на практике не встречаются. Раздел «Советы» не содержит пояснений.
Вместо этого, каждый совет снабжается ссылкой на соответствующий раздел книги.
В случае негативных советов, указанный раздел содержит позитивную
альтернативу.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
18.08.2014, 22:28     Как эффективно изучать программирование? #9
gru74ik, думаю ТС ненужны глубокие знания в С++, он СП интересуется
gru74ik
18.08.2014, 22:36
  #10

Не по теме:

Цитата Сообщение от dr.curse Посмотреть сообщение
он СП интересуется
Чем-чем?

dr.curse
18.08.2014, 22:38
  #11

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
Чем-чем?
СП - спортивное программирование

Евгений89
 Аватар для Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
18.08.2014, 23:51     Как эффективно изучать программирование? #12
По математике: Высшая математика, Дискретная, Вычислительная ну и Матан.
Насчет задачника , я бы посоветовал: Абрамян 1000 задач по программированию.
По алгоритмам: Томаса Кормен Алгоритмы построение и анализ.
или Кнута, Кормен по легче,
а так если хочешь научиться программировать, пиши программы.
Alexandr_1982
Нарушитель
175 / 71 / 17
Регистрация: 04.11.2013
Сообщений: 383
Записей в блоге: 4
19.08.2014, 06:34     Как эффективно изучать программирование? #13
Эффективного способа нет. Я начинал в 2001 , но некоторые базовые вещи я понял лишь в 2012. Предполагаю, что так и не понял.

Когда я начинал я упустил динамическое выделение памяти и одно связные и двусвязные списки. В ООП нужно понимать, что такое наследование, абстрактный класс, виртуальные функции, операторы. Если не можете сделать задачу, переходите к следующим главам. Вы не знаете теорию, а теорию нужно очень хорошо знать. То, чему вы из 7 глав научились это ерунда. Бросить задачи и читать теорию. Не заморачивацтесь пока что задачами, так как правильно вы их после 7 глав не сделаете. Читайте дальше теорию по книге.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2014, 06:43     Как эффективно изучать программирование?
Еще ссылки по теме:

Как лучше изучать программирование? C++
Какой язык изучать или что изучать? C++
C++ Не могу сдвинуться с места в изучении C++; Не знаю, как программировать эффективно

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

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
 Аватар для gru74ik
3119 / 1345 / 167
Регистрация: 20.02.2013
Сообщений: 3,820
Записей в блоге: 17
19.08.2014, 06:43     Как эффективно изучать программирование? #14
Цитата Сообщение от Alexandr_1982 Посмотреть сообщение
То, чему вы из 7 глав научились это ерунда. Бросить задачи и читать теорию. Не заморачивайтесь пока что задачами, так как правильно вы их после 7 глав не сделаете. Читайте дальше теорию по книге.
Поддерживаю. Максимум - упражнения в конце каждой главы. Тем более, что:
Цитата Сообщение от guitarman Посмотреть сообщение
Изучаю его по книге Дейтелов, пишу и разбираю примеры из книги. Прошёл 7 глав
Это ты только узнал про переменные, циклы, массивы и функции. Чуть-чуть прикоснулся к понятию класса.
Цитата Сообщение от guitarman Посмотреть сообщение
а дальше уже очень сложно понимать информацию.
А дальше, в 8 главе у Дейтелов указатели и ссылки, потом в 9 и 10 более подробно - классы, потом перегрузка операций - без этого точно никак.
Yandex
Объявления
19.08.2014, 06:43     Как эффективно изучать программирование?
Ответ Создать тему
Опции темы

Текущее время: 18:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru