В программировании одна из наиболее часто встречающихся задач невычислительного

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

Подготовка к установке

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

Если вы все еще боретесь с первоначальной настройкой. То ознакомьтесь с нашей страницей по настройке компилятора и среды разработки (Code::Blocks and MINGW) который проведет вас через настройку компилятора с большим количеством скриншотов и доведет вас до точки фактического запуска программы.

Мышление Как у Программиста

Вы видели рекламу Совхоза, где автомоечная компания возвращает клиентам машины с мыльной пеной на машине? Компания моет машину, но не ополаскивает. Это идеальная метафора для компьютерных программ. Компьютеры, как и та автомоечная компания, очень и очень буквальны. Они делают в точности и только то, что вы им говорите; они не понимают скрытых намерений. Уровень требуемой детализации может быть пугающим поначалу. Потому что он требует продумывания каждого отдельного шага процесса. Чтобы убедиться. Что ни один шаг не пропущен.

Это может сделать программирование на первый взгляд трудной задачей. Но не отчаивайтесь. Не все должно быть указано-только то, что не то, что компьютер уже может сделать. Файлы заголовков и библиотеки, входящие в состав компилятора (например, файл заголовка iostream. Который позволяет взаимодействовать с пользователем). Предоставляют множество ранее существовавших функций. Вы можете использовать такие веб-сайты. Как http://www.cppreference.com или наша собственная ссылка на функцию чтобы найти информацию об этих уже существующих библиотеках функциональности. Используя их, вы можете сосредоточиться на точном указании только того. Что уникально в вашей программе. И даже когда вы сделаете это, вы начнете видеть шаблоны, которые могут быть превращены в функции. Которые обернут кучу шагов в одну функцию. Которую вы можете вызвать отовсюду. Вдруг сложные проблемы начнут казаться простыми. В этом разница между:

Шаг вперед десять футов Переместите руку к стене Двигайте рукой вправо, пока не наткнетесь на препятствие ... Нажмите вверх на углубление 

и

Идти к двери Найти выключатель света Включите свет 

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

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

Сообщения об ошибках компилятора

Это может показаться мелочью. Но поскольку большинство новичков не знакомы со строгостью формата программы (синтаксиса), новички. Как правило. Сталкиваются с большим количеством жалоб. Генерируемых компилятором. Ошибки компилятора, как известно, загадочны и многословны, и ни в коем случае не были написаны с учетом новичков.

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

Наконец-то, есть надежда! В конечном итоге вы получите действительно очень хорошо понять, что на самом деле означает компилятор. Там будет несколько сообщений об ошибках, которые сегодня кажутся совершенно загадочными, даже если вы знаете. В чем была настоящая проблема. И через несколько месяцев вы будете знать это. Как старый (хотя и сбитый с толку) друг. Я на самом деле написал больше об этом в прошлом; если вам нужна более подробная помощь. Ознакомьтесь с моей статьей о расшифровке ошибок компилятора и компоновщика.

Отладка

Отладка-это критический навык, но большинство людей не рождаются с таким мастерством. Отладка сложна по нескольким причинам; во-первых, она вызывает разочарование. Вы просто написали кучу кода, и он не работает, хотя вы уверены, что он должен работать. Черт! Во-вторых, это может быть утомительно; отладка часто требует больших усилий, чтобы сузить проблему. И пока у вас нет некоторой практики. Может быть трудно эффективно сузить ее. Один тип проблем-ошибки сегментации, являются особенно хорошим примером этого-многие программисты пытаются сузить проблему. Добавляя в инструкции print. Чтобы показать. Как далеко программа заходит до сбоя. Даже если отладчик может сказать им. Где именно произошла проблема. Что на самом деле приводит к последней проблеме-отладчики-это еще один запутанный. Трудный в настройке инструмент, такой же. Как и компилятор. Если все, что вы хотите, чтобы ваша программа работала, последнее, что вы хотите сделать. Это настроить ДРУГОЙ инструмент. Чтобы узнать, почему.

Чтобы узнать больше о методах отладки, ознакомьтесь с этой статьей о стратегиях отладки.

Разработка программы

Когда вы только начинаете программировать, дизайн-это настоящая проблема. Знание того. Как думать о программировании, — это одна часть, но другая часть-это знание того. Как составлять программы таким образом. Чтобы их было легко модифицировать позже. Такие идеи, как комментирование кодаинкапсуляция и скрытие данныхнаследование— на самом деле это ничего не значит. Когда ты не испытываешь боли от того. Что у тебя их нет. Проблема в том. Что разработка программ-это все о том. Чтобы сделать вещи проще для вашего будущего Плохой дизайн делает вашу программу негибкой к будущим изменениям или невозможной для понимания после того. Как вы ее написали. Часто плохой дизайн раскрывает слишком много деталей того. Как что-то реализовано. Так что каждая часть программы должна знать все детали друг друга.

Одним из замечательных примеров является написание игры в шашки. Вам нужен какой-то способ представлять совет директоров-так что вы выбираете один. Глобальный массив фиксированного размера : int checkers_board[8][8]. Все ваши обращения к доске проходят непосредственно через массив: checkers_board[x][y] = ….; Есть ли что-то неправильное в этом подходе? Еще бы. Обратите внимание что я написал все ваши обращения к плате проходят непосредственно через массив. Доска-это концептуальная сущность, то, о чем вы заботитесь. Массив, оказывается, в данный конкретный момент, как вы реализуете плату. Опять же, две вещи: вещь, которую вы представляете, и то. Как вы ее представляете. Делая все доступы к плате использовать массив напрямую. Вы запутываете две концепции. Что произойдет. Когда вы решите изменить способ представления совета директоров? У вас ужасно много кода для изменения. Но каково же решение?

Если вы создадите функцию. Которая выполняет типы основных операций, которые вы выполняете на шахматной доске (возможно. Метод get_piece_on_square() и метод set_piece_to_square ()). Каждый доступ к доске может проходить через этот интерфейс. Если вы измените реализацию. Интерфейс останется прежним. Именно это люди имеют в виду, когда говорят о Многие аспекты проектирования программ, такие как наследование. Позволяют скрыть детали реализации (массив) конкретного интерфейса или концепции (плата).

А теперь иди ешь свой шпинат! 🙂

Хороший способ узнать больше об этих проблемах-это прочитать о программном дизайне и стиле.

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

Еще один способ сделать вашу программу более легко модифицируемой в будущем — это четко прокомментировать ее.

cprogramming.com по электронной почтеили после @alexallain в Twitter.


5 Способов, Которыми Вы можете научиться программированию Быстрее

Распространенные ошибки программ-И Как их Решить

Как не Заблудиться При написании программ. Или Сила инкрементного развития

Как думать о программировании. Руководство для начинающих