Изучение С

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by c99, 10 Sep 2012.

  1. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Си -- основы алгоритмизации, С++ -- ООП. Без этих знаний и знаний БД в вебе, по-сути, делатиь нечего. Хотя по поводу выбора языков можно с ними поспорить, а вот VC++ и WinAPI веб-разрабам вообще жестоко.
     
  2. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    ООП как и алгоритмизацию можно почти на любом ЯП учить, практиковать, хотя ТС еще не раз спасибо скажет наверное преподам ибо C\C++ он в жизни пригодиться.
     
  3. monosons

    monosons New Member

    Joined:
    14 Sep 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Сам снова начал изучать С++ по Джесс Либерти С++ за 21 день.
    И в продолжение буду изучать С++ от разработчика. Те книги, которые представлены в Начинаем программировать на.. .

    Полгода назад начинал самостоятельно изучать.. Но в итоге "а да завтра полистаю" затянулось.

    В принципе сейчас, когда собрался с мыслями, начал по новой. Пока всё понятно, но думаю "понятно" не на долго.. Скоро буду мало чего понимать.
    Но когда сам пытаешься разобраться и ищешь ответы на свои вопросы в сети, то почему-то проще запоминается, чем если кто-то подскажет.

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

    Ну а по теме я отписал выше.. Как многие тут заметили, нужно самому хоть что-то дома делать, как минимум хотя бы читать соответствующую литературу. Думаю, на площадке 80% самоучек, ибо раньше программирование не преподавали.
    Всё дело в стремлении, понять чего ты хочешь и идти к этому, а не заниматься другими обыденными делами. Трудно порой сидя за компом отказаться от какого-нибудь сериальчика. :D
     
  4. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    выкинь этот треш. юзай нормальных авторов. Дейтел, Лимпман, Прата.

    Ты лучше покодь некоторое время перед тем как Страуструпа читать, поскольку многое из его книги выветривается из головы через 5 минут. другое дело если у тебя была задача и для ее решения нужно было уточнить кое какие детали. здесь страуструп нужен. а лучше стандарт.

    знакомо :D

    линупс ваш тут нахрен не вперся.
     
  5. c99

    c99 New Member

    Joined:
    15 Aug 2012
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Уже мысленно благодарю.
    Вчера на первой паре было что-то про структуры, а на второй он заявил что будем писать крестики-нолики.
    Я же не в зуб ногой, у меня опять депрессия: я не то что игру, я не знаю последовательно действий.

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

    К слову, игру нужно бы сделать уже на понедельник. Ещё он сказал: написание алогоритма за компьютер и самой игры это уже половина сданого екзамена

    Ещё из новостей: в воскресенье купил книжку от разрабов С, в описании конечно указано что она не для совсем зеленых, но
    думаю нужно было её раньше купить, ещё с месяц-полтора назад, как препод рассказал о её существовании, дря время терял
    с со своей по С++.
     
    #25 c99, 11 Oct 2012
    Last edited: 11 Oct 2012
  6. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Кнжка не самой простой окажется, а как игра должна быть организованна? Чел против компа или чел с челом?
     
  7. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Примерный план:
    двумерный массив(3 на 3) int(0 -- пусто,1 -- крест, 2 -- ноль) или char(тут все просто:))
    рисуем поле
    считываем с клавы ход чела(b2, например, в центр)
    делаем свой ход(рандомный для начала, потом можно и усложнить)
    проверяем на наличие строк, столбцов и диагоналей
    делаем выводы
     
  8. c99

    c99 New Member

    Joined:
    15 Aug 2012
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Забыл отписать.
    Каждому преподаватель старался изменить - что бы не брали алгоритмы и исходники друг у друга. Например, у меня первый ходит компьютер, и игровое поле должно быть по средине консоли в нижней части , у других в углу, по центру и тп.

    В тетрадке написал план такой:
    1)требования к игре:
    -
    -
    2)поведение (реакция на действия пользователя)
    -
    -
    то есть никакой.
     
    #28 c99, 11 Oct 2012
    Last edited: 12 Oct 2012
  9. c99

    c99 New Member

    Joined:
    15 Aug 2012
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Сейчас пытаюсь что-то сделать по книге Б. Керниган, Д. Ритчи - "Язык Си".
    В главе 1.2 есть код программы вывод таблицы температур по Фаренгейту и Цельсию"


    Вторая версия

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

    Упражнение 1.4. Напишите программу, которая будет печатать таблицу соответствия температур по Цельсию температурам по Фаренгейту.

    Ну первое я принтф вписал, а второе даже не представляю как делать :(.
     
  10. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Формулу изменит всего-то нужно.

    fahr = (9.0/5.0) * celsius+32.0;
     
  11. c99

    c99 New Member

    Joined:
    15 Aug 2012
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Спасибо, оказывается у меня логика напрочь отсутствует.

    До:

    После:
    Это правильный результат?
     
    #31 c99, 14 Oct 2012
    Last edited: 14 Oct 2012
  12. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Нет, результат неправильный. Даже если рассмотреть данную формулу как функцию где значение - это число, которое выражает градусы по Фаренгейту, а аргумент - заданное число в градусах по шкале Цельсия, то исходя из значения fahr = (9.0/5.0) * celsius+32.0 при аргументе равным 0, ф-ция должна вернуть значение 32, надеюсь понятно, почему :)

    [​IMG]
     
  13. c99

    c99 New Member

    Joined:
    15 Aug 2012
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Я исходник скопировал с книжки, не понимаю проблемы в програаме из-за которой не верный результат.
     
  14. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Какая уютная ЖЖешечка...

    с99, если ты не понимаешь, подойди к преподавателю! Блин, если человек нормальный, он тебе за так на перемене все разжует... Что за депрессии? Ты что кому-то боишься признаться, что не понимаешь предмет???

    Из курса мат-анализа я умею решать только дифференциальные уравнения и то только потому что ходил на платные консультации (это было обязательное условие, что бы мне поставили зачет) - и никакой депрессии от того что пара одногруппников были переведены с математического факультета и для них эти уравнения полная хрень была :)
     
    _________________________
  15. c99

    c99 New Member

    Joined:
    15 Aug 2012
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Не вижу ничего уютного :(

    И что я ему должен сказать? Он мне уже говорил что бы занимался по конспекту, только мало мы там что пишем. ТАк же подходил месяц назад к старшему преподавателю из фака. по программированию.
    Он сказал что бы разобрался с переменными, типами данных, операторами ветвления и подошел через 2 недели. Прошел почти месяц, и я не знаю зачем мне к нему опять подходить. И что у него тоже не сразу начало получатся, 3 раза книжку перечитывал, не сильно и верится: либо дано либо нет.

    Ну вы равняет, возможно, не обязательные знания с первостепенными.
    Это как фундамент : если он не крепкий то в скором времени конструкция рухнет или вообще не построится.
     
    #35 c99, 20 Oct 2012
    Last edited: 20 Oct 2012
  16. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Возможно Си для тебя сразу слишком круто.
    Первое что нужно понять это что такое алгоритм и как строить его. Если ты в голове понимаешь какую последовательность данных тебе нужно реализовать - то просто владея синтаксисом языка ты уже сможешь ее реализовать.

    Вот самая банальная задача на которой я понял что такое алгоритм.
    Дан массив данных - твоя задача найти минимальный элемент в нем.

    1. Думаешь в голове какие твои действия?

    Дан массив - значит нужно его перебрать. Как работать с массивами??? Гуглишь или читаешь книгу... оп прочел что для перебора масива используются циклы... тебе нужен цикл for

    Так массив перебирать я умею... как вывести что-то на экран? идешь читаешь гугл или книжку - нашел что печать на экран это printf()

    Вывел на экран весь массив - уже хорошо ты умеешь уже его перечислять и данные выводить...

    Ладно что нужно дальше? надо как-то сравнить элементы. Как? Читаешь про условные операторы если а больше б... if(a > b) {} else {}

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

    Ну и что получается алгоритм
    1 берем массив
    2. сохраняем первое значение в переменную
    3. начинаем его перечислять
    4. сравниваем сохраненное значение с переменной
    если оно меньше то сохраняем это значение в переменную
    5. выводим переменную.

    Ты построил алгоритм и ты знаешь как это реалтзовать в синтаксисе. пишешь программу

    int main()
    {
    int a[256],min,i; // у нас есть массив и переменная
    min=a[0]; // в переменной первое значение массива

    for(i=0;i<sizeof(a);i++) { // начинаем цикл с начала
    if(min > a) min=a; // сравниваем итый элемент массива - если минимальное значение больше его значит обновляем переменную минимального значения
    }
    printf("%d\n",min); // выводим минимальное значение в массиве a

    }

    Вот и все. Главное алгоритм. А зачастую задачи составляются сразу с алгоритмом их решения - дано то дано сё есть формула посчитай по этой формуле...

    А синтаксис языка это формальность которая запоминается по мере написания программ. Я часто обращаюсь к справочникам если что-то забываю...

    Вон тот алгорим который я тебе расписал можно реализовать на любом языке.

    PHP
    $a=array(1,2,3,4,5);
    $min=$a[0];

    for($i=0;$i<count($a);$i++)
    {
    if($min > $a[$i]) $min=$a[$i];
    }
    echo $min."\n";

    JS
    var a=[...............],min;
    min=a[0]
    for(var i=0; i < a.lenght; i++)
    {
    if(min > a )min=a;
    }
    alert(min);

    PASCAL
    program lol;
    type
    arr = Array [1..10] of Integer; { определение массива }
    var a:arr;
    i,min:integer;

    begin
    for i := 1 to 10 do
    begin
    if min > a then begin min:=a end;
    end;

    writeln(min);

    end.

    В общем не важно какой язык, алгоритм есть алгоритм :)
     
    _________________________
    #36 Gar|k, 22 Oct 2012
    Last edited: 22 Oct 2012
    1 person likes this.
  17. c99

    c99 New Member

    Joined:
    15 Aug 2012
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Спасибо тебе, добрый модератор.
    Ты конечно все очень просто и доступно написал, но и задачка линейная, простая, наверное.
    А вот написать решение квадратного уравнения , крестики нолики тут уже нужно логически уметь мыслить. При том, что первое писали ребята еще в сентябре, урое примерно в 10-15. А второе нужно было ещё на той неделе сдать, уже больше половины группы сдало, я как всегда.
     
  18. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Ну и в чем проблема? Экзамены не пересдавал? Я помню 4 раза сдавал один и тот же экзамен - ходил 2 недели ) Мне препод потом сказал ты выучи вот эту страницу и расскажи. Я выучил и рассказал - она методичку перелистнула говорит а это... я эм а это вы не говорили учить )))

    удв. получил в зачетку и рад хех.

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

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

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

    Был у нас один такой в группе - ему блин все лабы вся группа делала - все ему вот тебе методичка выучи дебил 3 страницы вот тебе отчет готовый иди садись сдай лабу - а он --- нууу я не понимаю у меня депресия, пойду домой возьму пивка....
     
    _________________________