Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Методика изучения С++


Автор: Gal78rus 27.11.2008, 19:49
Здравствуйте
Мне один товарищ посоветовал начать обучение С++ с идеи создания собственной программы, какую я ума не приложу, посоветуйте что придумать.
Вопрос второй; как лучше читать учебник по С++? От корки до корки? или по мере нужды? и надо ли перепечатовать все примеры из книги в Visual С++?(мне не лень, просто думаю что время зря трачу) 
Посоветовали книгу по программированию, нашего русского автора женщины, а как зовут забыл.

Ваши советы по изучению С++:

Автор: barin_Student 27.11.2008, 20:06
Какие нибудб другие языки хоть чуть чуть знаешь?
И какие?

Автор: IKM2007 27.11.2008, 20:09
Начни с Дейтела. Прочти внимательно, а не так, как будто план делаешь. Будут вопросы, пиши на форуме.

Цитата(Gal78rus @  27.11.2008,  19:49 Найти цитируемый пост)
Мне один товарищ посоветовал начать обучение С++ с идеи создания собственной программы, какую я ума не приложу, посоветуйте что придумать.

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

Автор: Gal78rus 27.11.2008, 20:51
barin_Student, 
Qbasic в школе smile 

IKM2007, 
Читаю Герберт Шилдт "С++ руководство для начинающих" пока дочитал до 1 глава 2 модуль
Это нормально что от фраз "исключающее ИЛИ" становится страшно и ничего не понятно? smile  
По математике 3 с натягом smile может повесится легче?
на самом деле очень хочется научится smile  


Автор: 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
Цитата(Gal78rus @  27.11.2008,  20:51 Найти цитируемый пост)
Это нормально что от фраз "исключающее ИЛИ" становится страшно и ничего не понятно?

А что тут непонятного? НУ, если вообще не слышал об "исключающее ИЛИ", то все нормально, если что-то непонятно, погугли.
Цитата(Gal78rus @  27.11.2008,  20:51 Найти цитируемый пост)
По математике 3 с натягом

Ну, если в алгоритмах разбираешься, то все впереди.
Цитата(Gal78rus @  27.11.2008,  20:51 Найти цитируемый пост)
может повесится легче?

Да, повесится легче, но не полезнее.
Цитата(Gal78rus @  27.11.2008,  20:51 Найти цитируемый пост)
на самом деле очень хочется научится

Тогда должно быть и интерес есть, что главное.

Автор: afanp 27.11.2008, 21:34
Gal78rus,  я начал программировать только когда начал учится в универе - тоесть 2 с небольшим месяца назад. Могу тебе посоветовать найти в инете несколько книжек разных авторов, тк. в каждой из них какието вещи описаны проще и доступнее, но другие замудрены. Конеш нужен Лафоре(там уйма элементарных примеров) ну а как дополнеине Либерти - освой си за 21 день, там както объясняется механизм работы. А посоветовали тебе наверное Павловскую, ниче хорошего о ней сказать не могу :(

Автор: taiven 27.11.2008, 22:08
Цитата

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

Игру "крестики-нолики" в консоли  smile 
Цитата

Вопрос второй; как лучше читать учебник по С++? От корки до корки? или по мере нужды? и надо ли перепечатовать все примеры из книги в Visual С++?(мне не лень, просто думаю что время зря трачу) 

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

Автор: J0ker 28.11.2008, 07:49
начинать с темы "что такое компьютер и как он работает"

Автор: Lazin 28.11.2008, 09:02
Цитата(Gal78rus @  27.11.2008,  20:51 Найти цитируемый пост)
Это нормально что от фраз "исключающее ИЛИ" становится страшно и ничего не понятно?

вон из профессии smile 
шутка
начать нужно не с языка программирования с++ а с теории: математики, особенно дискретной, а так-же с теории вероятностей, потом изучить алгоритмы и структуры данных, а потом уже учить какой-нибудь язык программирования

Автор: Goliaf777 28.11.2008, 13:03
Ну у кого как я раньше тож не соображал а когда всю книгу прочел понял))) 7 классе и изучаю С++ пока все по маслу.Канеш я мудился с подборкой литературы много качал но теперь все ок))))Я делаю так : вижу пример проги которую надо скомпилировать беру ее за основу и создаю более крутую прогу.Например была прога по нахождению квадрата числа я откапал функцию возведения в степень и дополнил свое)

Автор: mekhanikus 28.11.2008, 13:10
Могу подкинуть идею.
Один мой приятель начал освоение С++ с сугубо прагматичной задачи - расчета графика работы.
Он работает 2 суток через 2-е.
Задача программы - при введении даты вычислить какой это будет день - рабочий или выходной.
За точку отсчета можно взять 1,2 января 2008г - выходные дни.
Приятель с задачей справился, а Вам слабо?

Автор: Tobuk 28.11.2008, 13:32
Цитата(Lazin @ 28.11.2008,  09:02)
начать нужно не с языка программирования с++ а с теории: математики, особенно дискретной, а так-же с теории вероятностей, потом изучить алгоритмы и структуры данных, а потом уже учить какой-нибудь язык программирования

Не согласен. 
Если вы не увлекаетесь 3D графикой, вам не понадобятся кватернионы, матрицы и вектора. 
Алгоритмы и структуры данных это хорошо, но современный программист может использовать STL и не знать как он работает. Его знания алгоритмов и структур пригодятся лишь для создания собственных контейнеров, всяких деревьев и т.д., что бывает не часто.
И как теория вероятности относится к программированию?

Автор: mekhanikus 28.11.2008, 13:50
Цитата(Tobuk @ 28.11.2008,  13:32)
И как теория вероятности относится к программированию?

Отклмпилится - не откомпилится?
Заработает - не заработает?

Какова вероятность?  smile 

Автор: Frog 28.11.2008, 13:57
Доброго времени всем. Мне нужна рекомендация по книгам о сетевом программировании на С/С++ для Windows - желательно с полными листингами рабочих примерoв. Под VC 2005. Уровень - для начинающих и среднячков. На русском или английском языках. Спасибо smile

Автор: Lazin 28.11.2008, 14:27
Цитата(Tobuk @  28.11.2008,  13:32 Найти цитируемый пост)
И как теория вероятности относится к программированию?

Рандомизироваными алгоритмами и вероятностным анализом.

Цитата(Tobuk @  28.11.2008,  13:32 Найти цитируемый пост)
Алгоритмы и структуры данных это хорошо, но современный программист может использовать STL и не знать как он работает.

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

Автор: J0ker 28.11.2008, 20:27
Цитата(Lazin @  28.11.2008,  14:27 Найти цитируемый пост)
Если ты кнопки на формах рисуешь, то да. Если ты пишешь программу, которая обрабатывает данные, то тебе как минимум нужно знать сложность выполнения того или иного алгоритма над контейнером того или иного типа. И в каком случае какой контейнер использовать. Например, тебе нужно проиндексировать кучу текстовых файлов, от того какой контейнер ты выберешь зависит, будет это работать в течении секунд, часов, или суток smile 


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

Автор: SABROG 28.11.2008, 21:52
Цитата(Gal78rus @  27.11.2008,  19:49 Найти цитируемый пост)
Мне один товарищ посоветовал начать обучение С++ с идеи создания собственной программы

Это тот стимул, который подталкивает изучать язык. Естественно сама программа тебе должна быть интересна, должно "загореться" ее сделать. По мере возникновения трудностей и препятствий начнешь понимать, что эту программу уже писать не хочется. Но хоть какие-то знания ты уже получишь к этому времени.

Цитата(Gal78rus @  27.11.2008,  19:49 Найти цитируемый пост)
как лучше читать учебник по С++? От корки до корки? или по мере нужды?

Я переходил на C++ с ассемблера, года 2-3 читал книжку по C++, но задач, которые я бы не мог решить с помощью асма не возникало. У меня выработалось стойкое чувство отвращения к языку, из-за того, что программы получались большими и тащили за собой то, что мне совсем было не нужно. А еще эта омерзительная надпись внутри exeшника "Borland compiler". 

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

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

Цитата(Gal78rus @  27.11.2008,  19:49 Найти цитируемый пост)
надо ли перепечатовать все примеры из книги в Visual С++?(мне не лень, просто думаю что время зря трачу) 

Я задавался этим вопросом раньше. При чтении книжки все было понятно, понимал исходники, где что делается. Но когда начинал сам писать исходник с нуля, то банально не помнил как прописывать заголовок #include в кавычках или угловых скобках, какие параметры у main и как писать: using namespace std; или просто namespace std;. Забывал ставить точку с запятой, какие параметры у цикла for и как писать switch(){case:}.

Т.ч. лучше перепечатывать, чтобы пальцы запомнили расположение часто используемых клавиш. 

Цитата(Gal78rus @  27.11.2008,  20:51 Найти цитируемый пост)
Это нормально что от фраз "исключающее ИЛИ" становится страшно и ничего не понятно?

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

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

Цитата(Gal78rus @  27.11.2008,  20:51 Найти цитируемый пост)
По математике 3 с натягом smile может повесится легче?

Аналогично. В связи с этим у меня было 3 неловких момента, когда я почувствовал себя ущербным. Первый случай, когда я пытался заставить крутится вокруг своей оси карточку. Там надо было периодически уменьшать карточку по координате X до тех пор пока она не принимала отрицательной значение и не показывалась ее оборотная сторона. А потом также увеличивать. Человек из мирка мне тогда посоветовал использовать толи синус, толи косинус. До сих пор не помню что именно. Вроде синус... Все работало и до того, но теперь была одна единственная функция без своего цикла.
Второй случай был с определением номера строки в массиве. В памяти даже текстовый файл это всего-лишь длинная линия байтов. Не помню точно как все было, все уже работало. Но в какой-то момент я понял, что единственное что делает мой код это берет остаток от деления и несколько строк кода заменилось на "%".
Третий случай это работа с трехмерными объектами. Все что касается координат чего-либо. Я как-то писал бота для игры, у меня был массив координат с месторождением ископаемых. Я поставил себе задачу узнать количество шагов, которое необходимо мне сделать, чтобы достигнуть точки. По сути все сводилось к тому, чтобы найти длину гипотенузы прямоугольного треугольника. Честно, взял учебник по геометрии со шкафа, хотя школу закончил 10 лет назад, чтобы посмотреть формулу. Я ее забыл через месяц.

Цитата(Lazin @  28.11.2008,  09:02 Найти цитируемый пост)
начать нужно не с языка программирования с++ а с теории: математики, особенно дискретной, а так-же с теории вероятностей, потом изучить алгоритмы и структуры данных, а потом уже учить какой-нибудь язык программирования 

Я математику начал понимать только в 9ом классе, когда начал программировать. Уж много параллелей проводилось. Я просто тупо начал понимать, что функции типа логарифмов, синусов, суммы, интегралы и т.п. просто краткая запись математической программы, которая сокрыта за значками, но на самом деле внутри находятся все те же простые математические операции, которые не нужно проводить человеку самостоятельно, потому что великие математики уже сами вычислили возможные результаты и запихнули в таблицу, чтобы ученику не пришлось каждый раз проводить вычисления вновь и вновь. А для тех цифр, которых нет в таблице придумали калькулятор. А алгоритмы в учебник не включили. Я например не помню, чтобы в учебнике была формула вычисления числа Пи с точностью до любого знака. Хотя она и существует.

Автор: Lazin 28.11.2008, 22:39
Ну вообще, для новичка, с++ не лучий выбор. Для обучения лучше использовать простой язык программирования, который позволяет сосредоточится на проблеме, а не на тонкостях и ньюансах самого языка программирования. Это как велосипед, никто ведь не учится кататься сразу на дорогом навороченом велосипеде, все в детстве начинают с 3-х колесного smile  

Автор: taiven 28.11.2008, 22:47
Цитата(Gal78rus @  27.11.2008,  19:51 Найти цитируемый пост)
Это нормально что от фраз "исключающее ИЛИ" становится страшно и ничего не понятно?

Возьми любую книгу по ассемблеру почитай(того же Зубкова например скачай, в сети легко найти): что такое биты, байты.., и т.д. 

Автор: IKM2007 28.11.2008, 23:18
Цитата(taiven @  28.11.2008,  22:47 Найти цитируемый пост)
Возьми любую книгу по ассемблеру почитай(того же Зубкова например скачай, в сети легко найти): что такое биты, байты.., и т.д. 

Лучше оставвить ассемблер, в инете полно инфы. Хотя бы в википедии.
http://ru.wikipedia.org/wiki/Двоичная_система_счисления

Автор: taiven 29.11.2008, 00:48
Цитата(IKM2007 @  28.11.2008,  22:18 Найти цитируемый пост)
Лучше оставвить ассемблер, в инете полно инфы. 

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

Автор: Kallikanzarid 29.11.2008, 10:40
Цитата

Это нормально что от фраз "исключающее ИЛИ" становится страшно и ничего не понятно?

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

А пока ты все это учишь, начни с более простых языков - Ruby, например.

Автор: taiven 29.11.2008, 11:09
Цитата(Lazin @  28.11.2008,  21:39 Найти цитируемый пост)
Ну вообще, для новичка, с++ не лучий выбор. Для обучения лучше использовать простой язык программирования,

Цитата(Kallikanzarid @  29.11.2008,  09:40 Найти цитируемый пост)
А пока ты все это учишь, начни с более простых языков - Ruby, например.

ИМХО это для уже знающего какой-то язык программиста может показаться, что тот или иной язык проще для изучения, а для новичка всё одинаково сложно. 

Автор: ilyuha 29.11.2008, 14:44
имхо, С++ для новичка в программировании будет очень сложен. как уже сказал Lazin, надо начинать с чего-то попроще(например, с того же паскаля), что позволит сосредоточится на основных структурах данных, и базовых алгоритмах, не забивая голову фичами самого языка. разве сможет новичек понять конструкцию вида while(*p++=*q++)? smile 
при должном рвении, можно попробовать начать с С. тогда дальнейший переход на С++ будет проще

Автор: Dmi3ev 29.11.2008, 15:02
 smile 
Цитата

разве сможет новичек понять конструкцию вида while(*p++=*q++)?

 smile 
ты похоже понимаешь  smile  и у тебя надпись - Новичек  smile Значит, ответ - может  smile  

Автор: taiven 29.11.2008, 15:20
Цитата(ilyuha @  29.11.2008,  13:44 Найти цитируемый пост)
имхо, С++ для новичка в программировании будет очень сложен. как уже сказал Lazin, надо начинать с чего-то попроще(например, с того же паскаля)

ты хочешь сказать, что после изучения паскаля конструкция вида while(*p++=*q++), станет более понятной..? Разве С++ обязывает использовать именно такие конструкции? Я кстати начинал именно с плюсов.

Автор: ilyuha 29.11.2008, 15:21
Dmi3ev,  smile
не иронизируй  smile да, я в С++ новичек и не могу пока похвастатся обширными знаниями этого языка. до  этого 2 года кодил на дельфи, но тем не менее, подобные конструкции мне было сложно понять(без Страуструпа бы вообще не понял  smile )

Добавлено через 4 минуты и 30 секунд
taiven, нет. не хочу я так сказать. но.... ммм... после "разворачивания" подобных конструкций, все будет более понятно smile

Автор: IKM2007 29.11.2008, 19:12
Цитата(ilyuha @  29.11.2008,  14:44 Найти цитируемый пост)
имхо, С++ для новичка в программировании будет очень сложен. как уже сказал Lazin, надо начинать с чего-то попроще(например, с того же паскаля), ...

Я конкретно начинал с C++, до этого в школе "проходили" Pascal, так и не выучил smile (вообще ничего), а потом в универе начали C++. Я это к чему, что нет никакой разницы, с какого языка начать, я например не осилил паскаль, так как с самого начала мне в крайней степени не понравился этот язык, а C++ понравился. Да и еще, если начинаешь, начни сразу с языка высокого уровня(такой как C++). А сейчас изучаю PHP, и вроде после C++ легко. smile 
И вообще, так можно спорить вечность, каждый начал по-своему, у думает что так правильно. smile 

Автор: ilyuha 29.11.2008, 19:23
Цитата(IKM2007 @  29.11.2008,  19:12 Найти цитируемый пост)
каждый начал по-своему, у думает что так правильно.

хм, ты прав smile быть может после других языков С++ кажется сложноватым - вполне возможно...

Автор: Dmi3ev 30.11.2008, 01:16
Конечно, это все субъективно. Я могу рассказать вам свою историю. В школе программировал на Pascal, но делал только то, что надо, не больше. Сортировал массивы, находил максимальные и минимальные элементы, рисовал разные фигуры и тд. Потом, когда столкнулся с программированием в институте, захотелось научиться. Установил себе компилятор Turbo C++ 3.1 от Borland, Builder 6, VS и погнал шпарить. Очень понравилось мне тогда в билдере работать, пара движений руками, ноль понимания, но раз, два и уже вполне хорошее приложение получалось. Это меня очень заинтересовало, потом начали появляться ситуации, когда нужно было действительно подумать и почитать литературу по языку, дальше таких ситуаций становилось больше, приходилось изучать, сейчас таких ситуаций полно, и я изучаю по мере потребностей. Конечно хорошо знать все функции с++, свободно ими пользоваться, знать все библиотеки и алгоритмы, но это НЕВОЗМОЖНО. Поэтому я изучаю с++ по мере поступления трудностей, а что не могу понять сам спрашиваю на форумах, пока не встречал не решаемых задач. Рано или поздно находил решения, иногда даже они были уже не актуальны (сделал по-другому и все тут). Вообщем, каждый должен сам решить. Мне было важно, чтобы язык заинтересовал, поэтому я работал в билдере, там мне было проще, не вникал в указатели, классы, структуры и тд, а потом понял, что пользоваться всем этим делом можно и нужно. Начал изучать... Изучаю... Уже два года... Надеюсь, интерес не пропадет)))

Автор: Kallikanzarid 30.11.2008, 07:55
Цитата

while(*p++=*q++)?

Точку с запятой забыл ;)

Я, кстати, тоже из Делфи пришел, еще в восьмом классе тогда был, ЕМНИП. Помню, как безуспешно пытался разобраться в коде MFC smile Тут главное обучаться по хорошим руководствам, а потом будешь собирать знания уже с миру по нитке.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)