singlepost

Как продолжить изучение С++? << На главную или назад  

Здравствуйте!
Я учусь по специальности "вычислительные машины, комплекы, системы и сети", к сожалению по данной программе дают поверхностные знания о программировании, а оно меня очень заинтересовало (С++), я самостоятельно изучил материал книги Джес Либерти "С++ за 21 день", посоветуйте дальнейший материал для изучения языка: книги, ссылки на ресурсы, пособия.
Пишу в среде VisualStudio 2008, но хотелось бы научиться программировать и в окружении Linux, но пока даже не разобрался как в ней компилировать простую программу…
Заранее спасибо!

48 ответов в теме “Как продолжить изучение С++?”

  1. 47
    Иван Секерин ответил:

    #30
    А что всё-таки лучше, Джефф Элджер или Скотт Майерс, как на ваш взгляд?

  2. 46
    Иван Секерин ответил:

    Имел ввиду эти Скотта: //hire7.net/2007/09/26/skott_majjers_jeffektivn...

  3. 45
    Михаил Иванов ответил:

    REQ: Альтернативы QT?

  4. 44
    Васька Клещ ответил:

    Реально, для этого нужно 3 вещи:
    1) упорство (потому как по началу многое будет казаться непонятно, изучение языка – не очень последовательная вещь, там нет отправных точек с которых надо начинать изучение, всё очень сильно взаимосвязанно, полная картина прояснится лишь в конце пути твоего изучения)
    2) практика (без практики написания программ все твои полученные знания быстро выветриваются из головы, поэтому надо писать, писать, писать…)
    3) хорошая литература по изучению языка, желательно зарубежных авторов (Бьерн Страуструп, Джесс Либерти, Брэдли Джонс, Керниган Ричи…)

  5. 43
    Василий Some ответил:

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

  6. 42
    Баир Якашев ответил:

    ребята в вобше реально изучить с++ самому сидя за книжками?
    какой язык легче с++ или c#??? и с какого начинать???

  7. 41
    Леонид Максимов ответил:

    комментарии к вашему творчеству:

    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    void main()
    {
    clrscr();
    int z=0,k=0,Z[30],i;
    z[30]=z; // какая-то ошибка
    for(i=0,i<29,i++) // для всех i от 0 до 29
    if(k!=0) and (n!=0) // какая-то ошибка
    z=k/q; // какая-то ошибка
    if(i<z) // условие, судя по всему, не выполняется
    k=k+1; // увеличить k на единицу
    z=i; // присвоить переменной z значение переменной i
    printf("%d%d",Z,k); // напечатать адрес массива Z и число k (равное 1).
    getch();
    }

  8. 40
    Леонид Максимов ответил:

    ваша программа не работает. в частности, две ошибки в строке z[30]=z; (это надо уметь): во-первых, z не является массивом или указателем, а во-вторых, обращение к элементу с индексом 30 приведет к сегфолту.

  9. 39
    Владислав Sharenko ответил:

    Задача
    Дана последовательность действительных чисел.Заменить все её члены,большие данного числа Z,этим числом.Подсчитать количество замен

    [code]
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    void main()
    {
    clrscr();
    int z=0,k=0,Z[30],i;
    z[30]=z;
    for(i=0,i<29,i++)
    if(k!=0) and (n!=0)
    z=k/q;
    if(i<z)
    k=k+1;
    z=i;
    printf("%d%d",Z,k);
    getch();
    }[/code]

  10. 38
    Леонид Максимов ответил:

    >> Коллега,а не подскажешь что делает кусок кода :
    >> а то я чёт запутался ??? и почему убрав после for ; прога не работает ???

    по поводу программы – будьте любезны разобраться самостоятельно. или даже на это сил не хватает?

    >> она работает ток с 2-3 значными числами,введи ей 65789 она выдаст ерунду (((

    это ваш компилятор виноват – слишком усердно следует букве спецификаций. спецификатор формата %d, если мне не изменяет память, хочет целое, которое на 16-битных системах является 16-битным. 65789 в 16 бит не укладываются.

    >> мдя, это такой в меру черный юмор на с++

    ничего не черный юмор. тупое решение в лоб.

  11. 37
    Василий Some ответил:

    #34
    мдя, это такой в меру черный юмор на с++

    чтобы понять первую строчку нужно внимательно прочитать у Страуструпа про циклы for.
    for(b=1;a/10/b;b*=10); <- тут вычисляется сколько порядков содержит твое число (т.е. сколько раз оно на 10 делится без того, чтобы стать меньше 1)
    условие выхода из цикла a/10/b, т.е. когда a/10/b станет ==0.
    тела у цикла нет, потому как не нужно
    смысл этих действий описывается примерно так:
    b=1;
    while(a/10/b > 0)
    {
    b*=10
    }

    вторая строка a+=(a%10-a/b)*(b-1); собственно и получает нужно е число (сам разберись с приличным учебником типа Страструпа что там делается)

  12. 36
    Влад Одинцов ответил:

    ну так может с типами грешишь?
    если int, то понятно, почему так

  13. 35
    Владислав Sharenko ответил:

    Дано числоN,Переставить местами 1 и последнюю цифру числа,она работает ток с 2-3 значными числами,введи ей 65789 она выдаст ерунду (((

  14. 34
    Влад Одинцов ответил:

    ну и вычисления….) а что она [программа] считать должна?)

  15. 33
    Владислав Sharenko ответил:

    #33
    Леонид maxleo Максимов Коллега,а не подскажешь что делает кусок кода :
    for(b=1;a/10/b;b*=10);
    a+=(a%10-a/b)*(b-1);
    а то я чёт запутался ??? и почему убрав после for ; прога не работает ???

  16. 32
    Леонид Максимов ответил:

    отлично. товарищ "хакер", ответьте, пожалуйста, на простой вопрос: что в си/си++ делает оператор –>
    ?

  17. 31
    Евгений Иванович ответил:

    Даю уроки по Си++ & Паскалю как просто для программирования так и для взлома!!!
    Обучение предпологает начальные знания Си++ либо, Паскаля.

  18. 30
    Владислав Sharenko ответил:

    #28
    Леонид maxleo Максимов спасиб

  19. 29
    Андрей Юрьевич ответил:

    Васька Клещ , совет прочитай книгу C++ for Real Programmers она есть на русском языке //www.rsdn.ru/res/book/cpp/cpp_real_programmers...
    Бьярна Страуструпа Язык С++ читать не советую – книга очень мутная.

  20. 28
    Леонид Максимов ответил:

    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    clrscr();
    long a=0,b=0;
    printf("Введите число= ");
    scanf("%d",&a);
    if(a<0)
    printf("Negative numbers are not supported.");
    else
    {
    for(b=1;a/10/b;b*=10);
    a+=(a%10-a/b)*(b-1);
    printf("%d",a);
    }
    getch();
    }

    вроде должно работать. как обычно, писал без компилятора.

  21. 27
    Леонид Максимов ответил:

    мне понравилось :)

    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    clrscr();
    int n,c;
    long a;
    printf("Введите число= ");
    sacanf("%d",&a); // явно опечатка.
    if(n!=0); // если эн не равно нулю… а впрочем, забейте.
    if(c=n%10); // цэ есть остаток деления эн на десять
    else // если эн все-таки делится на десять
    {c=n; // положить цэ равным эн
    }
    printf("%d",a); // напечатать введенное ранее число.
    getch();
    }

    ЗЫ: решил помочь.

  22. 26
    Владислав Sharenko ответил:

    кстати перед if надо дописать for(i=0;i<10;i++)

    И по моему у меня а без дела болтается,Плиз помогите с задачей )))

  23. 25
    Владислав Sharenko ответил:

    Эх забыл,дано натуральное число n ,переставить местами 1 и последнюю цифру числа

  24. 24
    Василий Some ответил:

    так она будет компилится но выдавать идиотский результат (всегда 0)

    #include<conio.h>
    void main()
    {
    clrscr();
    int n = c = 0;// инициализировать очень полезно
    long a = 0.0;// инициализировать очень полезно
    printf("Введите число= ");
    scanf("%d",&a);// очепятка была
    if(n!=0)// очепятка была
    { // фигурные скобки ставить очень полезно
    if(c=n%10)// очепятка была
    else
    {
    c=n;
    }
    }
    printf("\n%d\n",n); // не было переводов строк
    getch();
    }

  25. 23
    Василий Some ответил:

    а если хотелось выводить число кратное 10 – то нужно дописывать
    действительно, ты скажи, чего сделать хотел..

  26. 22
    Василий Some ответил:

    а что в ней помогать?

  27. 21
    Васька Клещ ответил:

    В коде без комментариев трудно разбираться, напиши что за задача (что твоя программа делать должна).

  28. 20
    Владислав Sharenko ответил:

    помогите с задачой [code]#include<stdio.h>
    #include<conio.h>
    void main()
    {
    clrscr();
    int n,c;
    long a;
    printf("Введите число= ");
    sacanf("%d",&a);
    if(n!=0);
    if(c=n%10);
    else
    {c=n;
    }
    printf("%d",a);
    getch();
    }[/code]
    ПС-знаю не в тему (((

  29. 19
    Влад Одинцов ответил:

    Джес Либерти "С++ за 21 день – Это не та мальленькая и тоненькая с кучей опечаток???

    врядли ))
    там 820 страниц…)

  30. 18
    Алексей Золотухин ответил:

    Джес Либерти "С++ за 21 день – Это не та мальленькая и тоненькая с кучей опечаток???
    Васька Клещ – прям герой. Ну и терпение же с этим бредом возиться.
    Найди 1) достойную проблему 2) Книгу по описанию IDE +ГлушаковПрограммирование на С++ (новая книга)

  31. 17
    Василий Some ответил:

    как писать в визуал студии //firststeps.ru/mfc/winapi/winapi1.html

  32. 16
    Василий Some ответил:

    изучай, причем обязательно.
    на одном языке далеко не уедешь, а знание нескольких расширяет кругозор и добавляет паттерны программирования.
    причем бери разные языки, т.е. например что-нить типа fort, lisp, python
    посмотри
    пригодится потом все, причем чем более разные языки ты посмотришь – тем легче потом будешь разбираться в ноых языках.

    использование библиотек (типа qt/gtk/…) даст некоторый плюс, но меньший чем знание разных языков (имхо). Библиотек слишком много, все не выучишь все равно…

    программирование под разные оси (де-факто сталкивался с тремя разными требованиямм – под винды, posix, под монстра который используется только в определенном месте) тоже полезно. но винды слишком быстро меняются, как только паерестаешь их отслеживать – знания тут же устаревают. Posix все-таки более стабилен и там меньше системных вызовов, следовательно он проще.А монстров пруд пруди, как правило это или клон линукса с примочками сверху или какая-нить РТОСина.

    Кста, еще полезно почитать теорию, типа Таненбаума "Современные операционные системы"

    а еще неплохо иметь хотя бы какое-то понятие о базах данных, sql , сетях (протоколы, как устроено итд…)

    многое нужно учить :)

  33. 15
    Константин Нежберт ответил:

    главно не все одновременно изучай, а то в голове получится хороший понос, и будешь хреново прогить и на одном, и на другом, и на третьем

  34. 14
    Шашунькин Денис ответил:

    что ты писать планируешь? ответь себе на этот вопрос – дальше сам определишься что тебе нужно

  35. 13
    Васька Клещ ответил:

    Спасибо всем за ответы, но возник ещё вопрос: стоит ли изучать ещё какойнибудь язык программирования кроме С++, или ограничеца одним? Если стоит, то какой посоветуете?

  36. 12
    Александр Вассерман ответил:

    Обнаружено слово Qt. Надобно ссылку дать: //qt.nokia.com/downloads/downloads
    Выбрать LGPL версию под свою ОС.
    ^_^
    Не мог удержаться… :)

  37. 11
    Алексей Крикунов ответил:

    Артем Четвертаков
    На каком курсе вам дают кутэ?

  38. 10
    Артем Четвертков ответил:

    на втором.
    сначала был семестр паскаля, семестровая – база данных.
    потом семестр основ c++.
    потом появилось qt.
    следующий семестр -qt и приложения типа клиент\сервер.

  39. 9
    Алексей Крикунов ответил:

    Хм…. ну у нас где-то так же. В первом семестре была "технология программирования" -ANSI C. Во втором начнутся БД.
    Потом начнется ООП, дальше не знаю.Специальность "Информационные системы и технологии".

    А вообще, ВУЗ и не должен давать языки программирования. В первую очередь он должен дать математику, основы алгоримов, сетей. Устройство компьютера. Языки – это уже дело каждого: как изучать, и что изучать.

  40. 8
    Артем Четвертков ответил:

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

  41. 7
    Николай Терентьев ответил:

    Универ универу – мразь ))

    Ой, рознь ))

  42. 6
    Константин Нежберт ответил:

    У меня специальность та же была)
    Так вот. Для начала разберись вообще, что такое линукс. Поставь его, потрогай ручками. КОгда будешь хорошо в нем разбираться, уже можно лезть в программирование под него. Для начала обрати внимание на Qt, она позволяет писать кроссплатформенные приложения. А вообще..изчать с++…главно понять основы, и далее опыт, опыт…

  43. 5
    Николай Терентьев ответил:

    Подпишусь. Ибо с той же специальности

  44. 4
    Артем Четвертков ответил:

    может немного не то, что тебе интересно, но: поставь qt. это межплатформенная библиотека для С++, больше можешь почитать в вики //ru.wikipedia.org/wiki/Qt

  45. 3
    Шашунькин Денис ответил:

    если есть определенные знания, что б читать такие книги в пользу, то стоит естественно
    что же касается "Разработка ядра Linux" – перевод гавно, читать стоит оригинал
    "Искусство программирования для Unix", читал и на русском и в оригинале,
    перевод годиться

  46. 2
    Алексей Крикунов ответил:

    Бъерн Страуструп «Язык программирования C++»
    Стивен Дьюхерст «С++ Священные знания»

    Кстати, что можете сказать о книгах Эрика C. Реймонда
    "Искусство программирования для Unix" и Роберта Лава
    "Разработка ядра Linux" ?

  47. 1
    Шашунькин Денис ответил:

    начни с Робачевского "ОС UNIX", есть еще книга Иванова "Программирование в Linux", достаточно понятна для начинающего

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.