Программирование с нуля

Внимание! Данный сайт не обновляется. Новая версия: shatalov.su

Создание игр C++/DirectX

Последние уроки:
Инициализация Direct2D
Скачивание, установка и регистрация Visual C++ 2010 Express Edition
Создание сайтов. Как сделать сайт
IDE, компиляторы, интерпретаторы, компоновщики, отладчики. Visual Studio 2010
Как поменять кодировку (encoding) в текстовом редакторе?
Языки программирования
Устройство компьютера
Основы HTML — синтаксис языка, теги (tags)
HTML-документы. Основы HTML5
Арканоид v0.2. Часть вторая


Последние записи в блоге:
Учебник по C++ — вторая редакция
Muse — The 2nd Law
Мнения по поводу изменений на shatalov.su
Репетитор мирового уровня
Миллион!!!
Грустная статистика
Нужен фрилансер?
Free-lance, кхм…
Маразм крепчал…
Порядок на сайте


Пояснения

Дата последнего редактирования: 3 января

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

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

Создание игр шаг за шагом

Для создания современной игры требуется усвоить огромное количество информации из самых разных областей знаний. Уроки представленные в разделах данного сайта очень тесно между собой связаны. Для того чтобы понять материал из одного раздела, нужно изучить часть уроков других разделов.

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

Когда я начинал писать уроки, у меня вообще не было опыта написания каких-либо текстов. Многие уроки получились не совсем такими, какими они должны быть. Поэтому и сами уроки, и их очерёдность в разделе Создание игр шаг за шагом будут меняться. Для любого урока предполагается что вы уже усвоили материал из предыдущих. И наоборот, в текущем уроке не будет использоваться информация из следующих.

На сайте постоянно появляется новый материал. Над уроками работаю я один, и пишу их в свободное от работы время. Если вам кажется, что уроков мало, то знайте, что в феврале 2009г. на сайте была всего лишь одна ссылка на текст программы hello world. Все новые уроки сначала появляются в рассылке. На сайт они попадают месяца через полтора. Часть выпусков рассылки вообще не будет опубликована на сайте.

Программы по созданию игр и создание игр без программирования

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

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

Использование игровых движков при создании игр

На страницах сайта (сначала в рассылке) будет рассмотрено создание не слишком функционального игрового движка. Этого вполне достаточно для понимания работы современных движков.

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

Как сделать игру с помощью программирования. C++ и DirectX.

Ну а теперь мы подходим к самому важному — созданию игр с программированием. Зная язык программирования C++ (или какой-нибудь другой) можно создать игру любой сложности. Единственное ограничение: время/деньги/усилия, которые вы готовы вложить в создаваемую игру.

На мой взгляд, при изучении программирования игр нужно осваивать материал от простого к сложному. Собственно, именно этот принцип я и пытаюсь воплотить в своих уроках. Уроки по созданию игр разделены на этапы. На данный момент почти закончен второй этап. На первом этапе рассматривается язык программирования C++. На втором этапе идёт изучение базовых возможностей библиотеки DirectX. Между основными уроками этапов встречаются дополнительные: по математике, алгоритмам, структурам данных и др. Многие уроки можно пропускать или изучать поверхностно при первом прочтении. Информация из некоторых уроков не связана с созданием игр, но её усвоение позволяет лучше понять другие уроки.

Создание браузерных и флеш игр

В последние годы мы стали свидетелями решительной победы web-технологий над всеми другими. Причина этого — в их простоте. В последнее время появились даже трёхмерные проекты на флеше.

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

К вопросу о создании MMORPG и убийц Сталкера, GTA 4, World of Warcraft

В последнее время появилась мода на создание популярных игр, над которыми работали крупные компании: Fallout 3, GTA 4, S.T.A.L.K.E.R., World of Warcraft и многие другие. Если вы хотите сделать что-нибудь подобное, мой ответ — два года. Два года (при должном старании) вам понадобится только на то, чтобы получить все необходимые знания. После этого можно будет приступить к разработке убийцы GTA 4. И то, вам не удастся сделать игру такого масштаба без достаточного финансирования.

Уроки по созданию игры

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

На мой взгляд, в уроках получилось достичь простоты изложения материала и одновременно его глубины. Каждая тема разбирается очень подробно. Некоторые уроки (особенно ранние) всё ещё нуждаются в переписывании (надеюсь, у меня получится их исправить в ближайшем будущем), но всё-таки уроки составляют довольно цельный курс для начинающих по C++/DirectX (на данный момент).


По всем вопросам и пожеланием обращайтесь на e-mail: roman@shatalov.su
С уважением, Роман Шаталов


Роман Шаталов 2009-2012

Программирование стало в 21 веке одной из самых престижных и востребованных профессий, поэтому неудивительно, что Интернет забит вопросами «как программировать?» под завязку. Сегодня существуют различные книги, видеокурсы по программированию и другие способы быстро и относительно недорого научиться писать программы и приложения.

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

Самый лучший способ обучения

Программирование с нуля, как и любое другое дело, которого вы никогда ранее не касались, будет сперва казаться непонятным и трудным. Существует стереотип о программистах, что они «пишут 2 строчки кода и получают за это тысячи долларов». Действительно, если специалист смог уместить функционал сложной программы в несколько строчек — он заслуживает такой оплаты.

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

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

Программа не растёт вместе со своим создателем, не образуется тот самый фундамент, на котором строятся знания. Поэтому видео из разряда «как стать программистом с нуля за 5 дней» могут научить писать простенький код, но что-то большее они не способны предложить. Поэтому закономерным выводом становится необходимость развития собственного проекта/программы для того, чтобы поэтапно проработать все вопросы возникающие при обучении программированию с нуля.

Ваш собственный проект: плюсы, плюсы и один маленький минус

Как известно, лучший способ научить кого-то плавать — скинуть с лодки посреди озера. В стрессовой ситуации тело быстрее поймёт, что ему делать, чтобы выжить. То же самое касается и программирования: как только вы выйдете за пределы «зоны комфорта» — рамок, установленных образовательной программой, и определённой последовательности действий — вы гораздо лучше поймёте, как программировать на выбранном вами языке. Хоть метафора не на 100% верна, но достаточно точно показывает, как стать программистом с нуля самостоятельно.

Вам придётся понять саму суть языка и принципы программирования, чтобы написать простенькую программу — результат гораздо лучший, чем если бы вы сделали всё по инструкции. Возможно, на написание уйдёт больше времени, но и пользы для навыка программирования будет гораздо больше!

Так почему нужен именно собственный проект, чтобы узнать, как стать айтишником с нуля? На это есть целый ряд причин:

  • самостоятельно придуманная задача сделает программирование с нуля легче, лишит вас «костылей» и заставит двигаться вне каких-либо рамок. Так вы лучше поймёте язык или даже сможете найти нестандартное решение возникшей проблемы;
  • «набивание шишек» сделает вас психически устойчивей к трудностям. Вы поймёте, что неудача — это повод начать сначала, а не забрасывать основы программирования, учебник и все наработки «за шкаф»;
  • программа будет расти с вами и совершенствоваться вместе с навыком программирования. Скоро вы увидите, какие совершили ошибки в начале, сможете исправить их с учётом новых знаний. Работа над ошибками — один из лучших способов постичь программирование с нуля, но он очень редко предлагается в видеокурсах;
  • у вас будет цель — написать программу с определённым функционалом, а не абстрактное обучение программированию с нуля в качестве конечной точки процесса. Недостаток мотивации часто служит причиной прекращения занятий программированием. Собственный проект же, который уже частично работает, как вы хотели, остановит вас от необдуманных действий;
  • это будет отличным портфолио. Даже если вы самоучка, изучавший программирование с нуля по книгам и роликам с Ютуба, при наличии собственной программы, написанной не «по инструкции», работодатель внимательней к вам присмотрится. В программировании весьма важно нестандартное мышление и умение находить оригинальные решения, поэтому ваше резюме будет выгодно выглядеть даже на фоне программиста с образованием в престижном ВУЗе;
  • вы сможете найти команду для реализации задумки. Когда есть конкретная цель, будет легче найти тех, кто так же, как и вы хочет узнать, как стать программистом с нуля, и совместно с ними реализовывать свой проект. Вместе веселей, плюс сложные моменты можно будет разобрать в процессе «мозгового штурма»;
  • если идея стоящая, то она вполне может стать стартапом.

Разумеется, есть и другие преимущества, перечислять можно очень долго. Ну а минус, обещанный в подзаголовке, очень прост: это будет очень трудно.

Так откуда же взять знания?

У вас наверняка возник вопрос: «Свой проект — это хорошо, но откуда взять знания, если у меня за плечами только введение в программирование?».

Есть два способа:

  • самостоятельно дойти до всего. Это очень сложно, порой будет хотеться бросить всё и забыть как страшный сон. Времени на самостоятельное обучение уйдёт очень много, зато вы сможете по праву гордиться собой;
  • записаться на курсы и спрашивать непонятные моменты у опытного преподавателя. Так вы совместите приятное с полезным: поиск нужной информации не будет занимать сутки, но вы всё так же останетесь предоставлены себе и сможете писать свою программу, а не «создавать гомункула по учебнику».

В качестве примера таких курсов, где преподаватели не стремятся насадить своё мнение, а учат мыслить по-программистски, можно привести «Курс молодого бойца». Уже на первом бесплатном занятии вы сможете почерпнуть много полезного и задать возникшие вопросы опытному программисту.

Язык программирования Си

практический курс

Что это такое?

В свое время (1991-1992 года), выбрав язык Си в качестве основного языка программирования для математических классов, автор столкнулся с проблемой отсутствия нормальных учебников, которые можно было бы рекомендовать школьникам. Это вынудило его написать свой конспект лекций, который можно было бы назвать «Практический курс программирования на Си» — в него вошли те сведения, которые действительно требовались автору на практике. Многолетний опыт преподавания показал, что конспект действительно востребован и широко используется как школьниками, так и выпускниками.

В качестве среды разработки используется бесплатно распространяемая оболочка Dev-C++ с открытым исходным кодом, включающая компилятор GCC.

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

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

Лицензионное соглашение

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

Без письменного согласия автора ЗАПРЕЩАЕТСЯ:

  1. 1) публикация материалов в любой форме, в том числе размещение материалов на других Web-сайтах;
  2. 2) распространение неполных или измененных материалов;
  3. 3) включение материалов в сборники на любых носителях информации;
  4. 4) получение коммерческой выгоды от продажи или другого использования материалов.

Скачивание материалов означает, что вы приняли условия этого лицензионного соглашения.

Скачать

Конспект распространяется свободно в формате PDF. Для просмотра требуется бесплатный просмотрщик Acrobat Reader. Конспект курса условно разбит на 4 части:

  1. Введение в программирование на языке Си (860 Кб)29.03.2014
    Изучение основных конструкций языка и приемов написания программ.
  2. Xранение и обработка данных (792 Кб)21.11.2013
    Язык Си: массивы, матрицы, структуры, символьные строки, структуры, рекурсия.
  3. Разработка программ на языке Си (937 Кб)01.03.2014
    Приемы проектирования программ, структурное программирование, целочисленные алгоритмы, численные методы, моделирование.
  4. Динамические структуры данных в языке Си (666 Кб)11.06.2009
    Списки, стеки, деревья, графы.

Презентации

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

Методика

В программе предусмотрено изучение языка Си в 7-11 классах:

7 класс

Часть I представляет собой расширенный конспект курса 7 класса. Введение в язык Си строится на базе алгоритмической подготовки, которую дети получили в 6 классе, работая с исполнителями.

Основная задача — познакомить учащихся с основными конструкциями языка Си: циклами, условными операторами, процедурами. Весьма успешно проходит изучение разделов, связанных с графикой, анимацией.

8 класс

Программа включает следующие разделы (в скобках указана часть конспекта): Массивы (II), Работа с файлами (II), Символьные строки (II), Вращение объектов (III), Моделирование (III). Особое внимание уделяется изучению алгоритмов работы с массивами, в том числе поиска, сортировки и т.п. Дается понятие об эффективности вычислительных методов.

9 класс

Основное внимание уделяется изучению методов разработки программ на языке Си. Учащиеся выполняют индивидуальное задание, в ходе которого учатся строить графики на экране, знакомятся с преобразованиями систем координат, изучают методы решения уравнений, знакомятся с численными методами, учатся правильно оформлять программы (разделы 1-2 части III). Одно из заданий посвящено использованию метода Монте-Карло для вычисления площади сложной фигуры. Из новых разделов изучаются также Матрицы (II), Массивы символьных строк (II). Вводится понятие указателей и изучаются простейшие операции с ними.

10 класс

Изучения языка Си выходит на более серьезный уровень. Основные темы — Управление памятью (II), Рекурсия (II), Структуры (II). Предусмотрено изучение языка Паскаль в качестве второго языка программирования. С этого момента алгоритмы на теоретических занятиях записываются поочередно на двух языках.

11 класс

Изучаются не столько особенности языков, сколько алгоритмы. Основные разделы — Численные методы (III), Моделирование (III), Динамические структуры данных (IV).

Можно ли стать программистом, не зная математики

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

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

Разумеется, речь идёт о математике старших классов средней школы и высшей математике. Если здесь вы “плаваете”, то программистом стать вам это не помешает.

Ну а математику начальных классов, вы, конечно, должны знать.

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

Например, захотите изучить сложные алгоритмы.

Или будете создавать какие-нибудь сложные вычислительные системы.

Для большинства же программистов математика не так уж и нужна.

Давайте посмотрим, какие наиболее популярные профессии программистов сегодня в России:

  1. Программист 1С
  2. Веб-программист (JavaScript, PHP и т.п.)
  3. Программист баз данных (это вопрос спорный, но я могу и поспорить)))

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

Ну и даже если математика вам потребуется, то изучить её можно позже. Ведь главное — это стать программистом. И начать этот путь можно

ЗДЕСЬ

P.S. Вообще говоря, математика не помешает никому. Если у вас есть время и возможность, то следует её изучить. Ну а если пока нет, то сделайте это при первой же возможности. А какие-то вещи можно освоить в процессе изучения программирования.

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

.

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *