Блог им. eReSКак стать хорошим программистом?

Моя специальность — программист. Профессия сложная и интересная. Первая проблема, которая встала передо мной — как можно из синтаксических команд слепить что-то полезное? Легко выучить синтаксис языка, сложнее научиться писать программы. Это все равно что научить человека писать и ждать что он начнет создавать стихи и романы. Поиск в интернете не принес сначала своих плодов, но я набрел на один IRC канал, где и нашел помощь. Меня ткнули носом в один ресурс, о котором я и хочу вам рассказать: Project Euler
На нем множество задач, которые помогают развивать логику и математические навыки. Именно с этого сайта я и начинал свой путь…
Вот решена мною первая задача на С++:
Условие: Если выписать все натуральные числа меньше 10, кратные 3 или 5, то получим 3, 5, 6 и 9. Сумма этих чисел — 23. Найдите сумму всех чисел меньше 1000 кратных 3 или 5.

#include <iostream>
using namespace std;

int main()
{
  int amount = 0;  // сума чисел кратных 3 и 5

  for (int i=0; i<1000; i++)
  {
    if (!(i%3) || !(i%5))
    {
        amount += i;
    }
  }

  cout << "Сума чисел: " << amount << endl;
}

Из особенностей этого ресурса можно отметить:
— неважно на каком языке вы учитесь программировать
— не важно сколько на это понадобиться время
— не обязательно делать задачи подряд
— возможность проверить результат на сайте
— хорошая рейтинговая система по званиям, по странам и по языкам
— возможность после решения посмотреть на реализации других людей на многих языках
— имеется перевод всех заданий на русский: жать сюда

Желательно не только найти правильный ответ, но и написать так программу, чтоб она находила как можно быстрее. Моя первая задача считается за 0.002 секунды. Заодно и научитесь оптимизировать свои программы :)
  • +6
  • eReS
  • 31 октября 2010, 16:02

Комментарии (11)

Хех. Эйлер. У меня там пока 63 задачи решено (достаточно свободного времени только летом бывает).

Ещё могу Диофант посоветовать (там некоторые задачи можно и с помощью ПК решить, но больше всё-таки логикой (которая часто тоже немаловажна в написание программ) ).

ЗЫ:
И нет, я не lisp'er.
спасибо за ресурс :)
  • avatar
  • the
  • 31 октября 2010, 20:18
  • #
  • 1
о! помню я его где-то видел, но забыл в закладки добавить и адрес забыл, спасибо за напоминание.

for (int i=0; i<10000; i++)

там же до тысячи, а не до десяти тысяч.
спасибо :) исправил
млин грамотеи, 21 век на дворе век компьютерщиков
проверку орфографии не включить
Сумма пишется с двумя м
прежде чем стать хорошим программистом — начните уважать родной язык
Уважаемый, для зануд у нас есть кнопка «Редавтировать», используйте ее. Кстати, не для всех, кто пишет/читает/комментирует что-либо на OL, русский язык — родной.
Сам зануда.
Научись писать Редактировать, потом будешь батю учить трахаться.
Русский мне не родной язык, я его учил с 1 по 3 клас только
«Сума чисел:» — на украинском
  • avatar
  • SPU
  • 09 ноября 2010, 01:10
  • #
  • 1
Кстати, на счет хороших программистов. Эта задача решается без всяких циклов. Сумма арифметической прогрессии для 3 плюс сумма арифметической прогрессии для 5 минус сумма арифметической прогрессии для 15. Итого: три деления для вычисления числа элементов в прогрессиях и еще три деления и три умножения для вычисления самих сумм (сложения и вычитания я опускаю). А если учесть, что верхняя граница диапазона чисел не есть параметр в программе, то можно сразу написать ответ :)
Спасибо :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.