| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Методика изучения С++ |
| Автор: Gal78rus 27.11.2008, 19:49 |
| Здравствуйте Мне один товарищ посоветовал начать обучение С++ с идеи создания собственной программы, какую я ума не приложу, посоветуйте что придумать. Вопрос второй; как лучше читать учебник по С++? От корки до корки? или по мере нужды? и надо ли перепечатовать все примеры из книги в Visual С++?(мне не лень, просто думаю что время зря трачу) Посоветовали книгу по программированию, нашего русского автора женщины, а как зовут забыл. Ваши советы по изучению С++: |
| Автор: barin_Student 27.11.2008, 20:06 |
| Какие нибудб другие языки хоть чуть чуть знаешь? И какие? |
| Автор: Gal78rus 27.11.2008, 20:51 |
| barin_Student, Qbasic в школе IKM2007, Читаю Герберт Шилдт "С++ руководство для начинающих" пока дочитал до 1 глава 2 модуль Это нормально что от фраз "исключающее ИЛИ" становится страшно и ничего не понятно? По математике 3 с натягом на самом деле очень хочется научится |
| Автор: Tobuk 27.11.2008, 21:01 |
| Лучшая книга для начала изучения С++ это "Язык программирования С". Написана она великолепно + справочник по библиотеке С. Начинать со всяких cout << "Hello world"; Не зная ни о пространствах имен, ни о классах, ни о перегруженных операциях. |
| Автор: Gal78rus 27.11.2008, 21:11 |
| Tobuk, Даже сам что то писал #include <iostream> using namespace std; int main() { double lun; double zem; int counter; counter = 0; for(lun = 1.0; lun <= 100; lun++) { zem = lun / 17; cout << lun << "Gravitacia luni ravna " << zem << "zemnih.\n"; counter++; if(counter == 25) { cout << "\n"; counter = 0; } } return 0; } |
| Автор: IKM2007 27.11.2008, 21:17 | ||
А что тут непонятного? НУ, если вообще не слышал об "исключающее ИЛИ", то все нормально, если что-то непонятно, погугли. Ну, если в алгоритмах разбираешься, то все впереди. Да, повесится легче, но не полезнее. Тогда должно быть и интерес есть, что главное. |
| Автор: afanp 27.11.2008, 21:34 |
| Gal78rus, я начал программировать только когда начал учится в универе - тоесть 2 с небольшим месяца назад. Могу тебе посоветовать найти в инете несколько книжек разных авторов, тк. в каждой из них какието вещи описаны проще и доступнее, но другие замудрены. Конеш нужен Лафоре(там уйма элементарных примеров) ну а как дополнеине Либерти - освой си за 21 день, там както объясняется механизм работы. А посоветовали тебе наверное Павловскую, ниче хорошего о ней сказать не могу :( |
| Автор: taiven 27.11.2008, 22:08 | ||||
Игру "крестики-нолики" в консоли
да первый раз прочитать от корки до корки, а потом "по мере нужды" периодически перечитывать. А вот перепечатывать чужие исходники.... изучать да, а вот перепечатывать не советую. |
| Автор: J0ker 28.11.2008, 07:49 |
| начинать с темы "что такое компьютер и как он работает" |
| Автор: Lazin 28.11.2008, 09:02 | ||
вон из профессии шутка начать нужно не с языка программирования с++ а с теории: математики, особенно дискретной, а так-же с теории вероятностей, потом изучить алгоритмы и структуры данных, а потом уже учить какой-нибудь язык программирования |
| Автор: Goliaf777 28.11.2008, 13:03 |
| Ну у кого как я раньше тож не соображал а когда всю книгу прочел понял))) 7 классе и изучаю С++ пока все по маслу.Канеш я мудился с подборкой литературы много качал но теперь все ок))))Я делаю так : вижу пример проги которую надо скомпилировать беру ее за основу и создаю более крутую прогу.Например была прога по нахождению квадрата числа я откапал функцию возведения в степень и дополнил свое) |
| Автор: mekhanikus 28.11.2008, 13:10 |
| Могу подкинуть идею. Один мой приятель начал освоение С++ с сугубо прагматичной задачи - расчета графика работы. Он работает 2 суток через 2-е. Задача программы - при введении даты вычислить какой это будет день - рабочий или выходной. За точку отсчета можно взять 1,2 января 2008г - выходные дни. Приятель с задачей справился, а Вам слабо? |
| Автор: Tobuk 28.11.2008, 13:32 | ||
Не согласен. Если вы не увлекаетесь 3D графикой, вам не понадобятся кватернионы, матрицы и вектора. Алгоритмы и структуры данных это хорошо, но современный программист может использовать STL и не знать как он работает. Его знания алгоритмов и структур пригодятся лишь для создания собственных контейнеров, всяких деревьев и т.д., что бывает не часто. И как теория вероятности относится к программированию? |
| Автор: mekhanikus 28.11.2008, 13:50 | ||
Отклмпилится - не откомпилится? Заработает - не заработает? Какова вероятность? |
| Автор: Frog 28.11.2008, 13:57 |
| Доброго времени всем. Мне нужна рекомендация по книгам о сетевом программировании на С/С++ для Windows - желательно с полными листингами рабочих примерoв. Под VC 2005. Уровень - для начинающих и среднячков. На русском или английском языках. Спасибо |
| Автор: Lazin 28.11.2008, 14:27 | ||
Рандомизироваными алгоритмами и вероятностным анализом.
Если ты кнопки на формах рисуешь, то да. Если ты пишешь программу, которая обрабатывает данные, то тебе как минимум нужно знать сложность выполнения того или иного алгоритма над контейнером того или иного типа. И в каком случае какой контейнер использовать. Например, тебе нужно проиндексировать кучу текстовых файлов, от того какой контейнер ты выберешь зависит, будет это работать в течении секунд, часов, или суток |
| Автор: J0ker 28.11.2008, 20:27 | ||
самое смешное, что большинство таких умозаключений можно сделать исходя чисто из здравого смысла - и порой это бывает полезней тупого заучивания формулы для каждого вида контейнера. Понимание принципа работы - 90% успеха. Но безусловно сложные алгоритмы требуют знания математики, хотя-бы исключительно прикладной |
| Автор: SABROG 28.11.2008, 21:52 | ||||||||||
Это тот стимул, который подталкивает изучать язык. Естественно сама программа тебе должна быть интересна, должно "загореться" ее сделать. По мере возникновения трудностей и препятствий начнешь понимать, что эту программу уже писать не хочется. Но хоть какие-то знания ты уже получишь к этому времени.
Я переходил на C++ с ассемблера, года 2-3 читал книжку по C++, но задач, которые я бы не мог решить с помощью асма не возникало. У меня выработалось стойкое чувство отвращения к языку, из-за того, что программы получались большими и тащили за собой то, что мне совсем было не нужно. А еще эта омерзительная надпись внутри exeшника "Borland compiler". Тему классов я вообще не понимал, да и сейчас полно пробелов. Более менее начал понимать, когда стал использовать готовые чужие классы, приходилось их наследовать и попутно изучать свойствах. Я не советую читать книжку от корки до корки как учебник в школе. Во-первых это скучно, во вторых не терпится уже начать писать что-то свое. А пробелы в знаниях можно восполнять открытием нужной главы. Как правило все тянется по цепочке и начав что-то изучать придется в любой случае возвращаться к истокам. Т.ч. только беглое ознакомление, а потом выборочно то, что интересно.
Я задавался этим вопросом раньше. При чтении книжки все было понятно, понимал исходники, где что делается. Но когда начинал сам писать исходник с нуля, то банально не помнил как прописывать заголовок #include в кавычках или угловых скобках, какие параметры у main и как писать: using namespace std; или просто namespace std;. Забывал ставить точку с запятой, какие параметры у цикла for и как писать switch(){case:}. Т.ч. лучше перепечатывать, чтобы пальцы запомнили расположение часто используемых клавиш.
Мне до сих пор страшно от такой фразы, но я понимаю что это всего-лишь какая-то операция с битами и я знаю где найти ответ. Нас в колледже по информатике учили как переводить цифры из одной системы счисления в другую. Но, т.к. я этим не занимался каждый день, то естественно забыл. А раз мне это не нужно было, значит эта информация бесполезна. Главное знать, что такие вещи существуют и ты сможешь их найти если возникнет желание стать гуру, который пишет программы на листке бумаги без книжек и интернета, а потом все написанное компилится с первого раза, т.к. ты учел даже такую мелочь как разную реализацию стандарта в компиляторах. Аналогично. В связи с этим у меня было 3 неловких момента, когда я почувствовал себя ущербным. Первый случай, когда я пытался заставить крутится вокруг своей оси карточку. Там надо было периодически уменьшать карточку по координате X до тех пор пока она не принимала отрицательной значение и не показывалась ее оборотная сторона. А потом также увеличивать. Человек из мирка мне тогда посоветовал использовать толи синус, толи косинус. До сих пор не помню что именно. Вроде синус... Все работало и до того, но теперь была одна единственная функция без своего цикла. Второй случай был с определением номера строки в массиве. В памяти даже текстовый файл это всего-лишь длинная линия байтов. Не помню точно как все было, все уже работало. Но в какой-то момент я понял, что единственное что делает мой код это берет остаток от деления и несколько строк кода заменилось на "%". Третий случай это работа с трехмерными объектами. Все что касается координат чего-либо. Я как-то писал бота для игры, у меня был массив координат с месторождением ископаемых. Я поставил себе задачу узнать количество шагов, которое необходимо мне сделать, чтобы достигнуть точки. По сути все сводилось к тому, чтобы найти длину гипотенузы прямоугольного треугольника. Честно, взял учебник по геометрии со шкафа, хотя школу закончил 10 лет назад, чтобы посмотреть формулу. Я ее забыл через месяц.
Я математику начал понимать только в 9ом классе, когда начал программировать. Уж много параллелей проводилось. Я просто тупо начал понимать, что функции типа логарифмов, синусов, суммы, интегралы и т.п. просто краткая запись математической программы, которая сокрыта за значками, но на самом деле внутри находятся все те же простые математические операции, которые не нужно проводить человеку самостоятельно, потому что великие математики уже сами вычислили возможные результаты и запихнули в таблицу, чтобы ученику не пришлось каждый раз проводить вычисления вновь и вновь. А для тех цифр, которых нет в таблице придумали калькулятор. А алгоритмы в учебник не включили. Я например не помню, чтобы в учебнике была формула вычисления числа Пи с точностью до любого знака. Хотя она и существует. |
| Автор: Lazin 28.11.2008, 22:39 |
| Ну вообще, для новичка, с++ не лучий выбор. Для обучения лучше использовать простой язык программирования, который позволяет сосредоточится на проблеме, а не на тонкостях и ньюансах самого языка программирования. Это как велосипед, никто ведь не учится кататься сразу на дорогом навороченом велосипеде, все в детстве начинают с 3-х колесного |
| Автор: taiven 28.11.2008, 22:47 | ||
Возьми любую книгу по ассемблеру почитай(того же Зубкова например скачай, в сети легко найти): что такое биты, байты.., и т.д. |
| Автор: IKM2007 28.11.2008, 23:18 | ||
Лучше оставвить ассемблер, в инете полно инфы. Хотя бы в википедии. http://ru.wikipedia.org/wiki/Двоичная_система_счисления |
| Автор: taiven 29.11.2008, 00:48 |
так я за сам ассемблер ничего и не говорю, я говорю именно об основополагающих вещах, которые описанны, как мне кажется в любой книге по ассемблеру. |
| Автор: Kallikanzarid 29.11.2008, 10:40 | ||
Изучи хотя бы булеву алгебру. А вообще лучше, в том числе и для мозга в общем, изучить также остальные начала дискретной математики, классический вещественный анализ (полезно для мозга + больше будешь знать про О-нотацию), линейную алгебру и аналитическую геометрию. А пока ты все это учишь, начни с более простых языков - Ruby, например. |
| Автор: taiven 29.11.2008, 11:09 | ||||
ИМХО это для уже знающего какой-то язык программиста может показаться, что тот или иной язык проще для изучения, а для новичка всё одинаково сложно. |
| Автор: ilyuha 29.11.2008, 14:44 |
| имхо, С++ для новичка в программировании будет очень сложен. как уже сказал Lazin, надо начинать с чего-то попроще(например, с того же паскаля), что позволит сосредоточится на основных структурах данных, и базовых алгоритмах, не забивая голову фичами самого языка. разве сможет новичек понять конструкцию вида while(*p++=*q++)? при должном рвении, можно попробовать начать с С. тогда дальнейший переход на С++ будет проще |
| Автор: Dmi3ev 29.11.2008, 15:02 | ||
ты похоже понимаешь |
| Автор: taiven 29.11.2008, 15:20 | ||
ты хочешь сказать, что после изучения паскаля конструкция вида while(*p++=*q++), станет более понятной..? Разве С++ обязывает использовать именно такие конструкции? Я кстати начинал именно с плюсов. |
| Автор: ilyuha 29.11.2008, 15:21 |
| Dmi3ev, не иронизируй Добавлено через 4 минуты и 30 секунд taiven, нет. не хочу я так сказать. но.... ммм... после "разворачивания" подобных конструкций, все будет более понятно |
| Автор: IKM2007 29.11.2008, 19:12 | ||
Я конкретно начинал с C++, до этого в школе "проходили" Pascal, так и не выучил И вообще, так можно спорить вечность, каждый начал по-своему, у думает что так правильно. |
| Автор: ilyuha 29.11.2008, 19:23 |
хм, ты прав |
| Автор: Dmi3ev 30.11.2008, 01:16 |
| Конечно, это все субъективно. Я могу рассказать вам свою историю. В школе программировал на Pascal, но делал только то, что надо, не больше. Сортировал массивы, находил максимальные и минимальные элементы, рисовал разные фигуры и тд. Потом, когда столкнулся с программированием в институте, захотелось научиться. Установил себе компилятор Turbo C++ 3.1 от Borland, Builder 6, VS и погнал шпарить. Очень понравилось мне тогда в билдере работать, пара движений руками, ноль понимания, но раз, два и уже вполне хорошее приложение получалось. Это меня очень заинтересовало, потом начали появляться ситуации, когда нужно было действительно подумать и почитать литературу по языку, дальше таких ситуаций становилось больше, приходилось изучать, сейчас таких ситуаций полно, и я изучаю по мере потребностей. Конечно хорошо знать все функции с++, свободно ими пользоваться, знать все библиотеки и алгоритмы, но это НЕВОЗМОЖНО. Поэтому я изучаю с++ по мере поступления трудностей, а что не могу понять сам спрашиваю на форумах, пока не встречал не решаемых задач. Рано или поздно находил решения, иногда даже они были уже не актуальны (сделал по-другому и все тут). Вообщем, каждый должен сам решить. Мне было важно, чтобы язык заинтересовал, поэтому я работал в билдере, там мне было проще, не вникал в указатели, классы, структуры и тд, а потом понял, что пользоваться всем этим делом можно и нужно. Начал изучать... Изучаю... Уже два года... Надеюсь, интерес не пропадет))) |
| Автор: Kallikanzarid 30.11.2008, 07:55 | ||
Точку с запятой забыл ;) Я, кстати, тоже из Делфи пришел, еще в восьмом классе тогда был, ЕМНИП. Помню, как безуспешно пытался разобраться в коде MFC |