Основное программирование / алгоритмические [закрытые] понятия

Я пробовал практически все, но моя проблема оказалась остатками предыдущей сборки cocoapods. Для меня это было:

  1. rm -Rf Pods; pod install
  2. Удалить исходные данные (окно / проекты ... выберите цель) нажмите кнопку «Удалить»)
  3. Восстановить
17
задан Mike Hordecki 30 April 2012 в 08:56
поделиться

23 ответа

Делают забаву программирования!

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

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

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

С точки зрения фактических тем для осмотра, которые являются связанным программированием/алгоритмом я предложил бы как группа, делающая попытку некоторых из этих проблем программирования в этой краткой информации соревнования по программированию" проблемы Программирования ": Amazon Link

Они начинают с довольно основными проблемами программирования и медленно прогрессируют в проблемы, которые требуют различных Структур данных как:

  • Стеки
  • Очереди
  • Словари
  • Деревья
  • И т.д.

большинство проблем дано в C++.

В конечном счете они прогрессируют в более усовершенствованные проблемы, включающие График Пересекающиеся и популярные алгоритмы Графика ( Dijkstra , и т.д.), проблемы Combinatrics, и т.д. Каждой проблемой является забава и данный в маленькой "истории" как формат. Предупредите, хотя, некоторые из них очень тверды!

Редактирование: Пицца и Содовая никогда не причиняют ни одному боль когда дело доходит до того, чтобы заставлять людей собраться для Ваших встреч клуба. Наш клуб ACM имеет пиццу каждая встреча (один раз в месяц). Даже при том, что большинство из нас все еще обнаружилось бы, это - хороший ледокол. Специально для новых клубов или участников.

12
ответ дан 30 November 2019 в 13:22
поделиться

Вы парни могли разработать проект TinyPIM от" Библиотека Стандарта C++ с нуля " и затем, когда это работает, начинаете разрабатывать свои собственные расширения.

0
ответ дан 30 November 2019 в 13:22
поделиться

Я видел несколько различных способов взять это:

1) Основные стандартные блоки программирования. Что такое условные операторы, например, переключатель и если/еще? Что такое операторы повторения, например, для и циклы с условием продолжения? Как мы комбинируем их, чтобы заставить программу быть последовательностью шагов, которые мы хотим? Вы могли взять что-то в качестве легкого как сложение счета в бакалейной лавке или температур преобразования или расстояний от метрики до империала или наоборот. Что такое типы основной переменной как строка, целое число, или дважды? Также в здесь Вы могли иметь булеву алгебру для передовой идеи или возможно преподавать, как сделать арифметику в основе 2 или 16, который некоторые люди могут найти легким, и другие находят трудно.

2) Алгоритмически, что такое подобные стандартные блоки. Сортировка является довольно простой темой, которая может быть широко обсуждена и проанализирована, чтобы попытаться выяснить, как сделать это быстрее, чем просто свопинг элементов, которые кажутся неисправными, если Вы изучаете Bubblesort, который является самым глупым способом сделать.

3) Компиляция и элементы во время выполнения. Что такое стек вызовов? Что такое "куча"? Как память обрабатывается для запущения программы, например, частей кода и частей данных? Как мы открываем и управляем файлами? Что компилирует и связывается? Что такое make-файлы? Часть этого проста, но это может также быть открытие глаза только, чтобы видеть, как вещи работают, который может быть тем, что клуб покрывает большую часть времени.

Эти следующие 2 несколько более сложны, но могли быть забавой:

4) Обсуждают различные идеи позади алгоритмов, таких как: 1) Разделите и завоюйте, 2) Динамическое программирование, 3) Грубая сила, 4) Создание структуры данных, 5) Сокращение проблемы к подобной, уже решенной, например, Числа Фибоначчи, является классической рекурсивной проблемой дать начинающим программистам и 6) Идея быть, "жадная", как в создании изменяет пример, если Вы были в стране где наименования монеты где a, b, и c. Вы могли также войти в некоторые примеры теории графов как минимальное связующее дерево веса, если Вы хотите что-то несколько экзотическое, или коммивояжеров для чего-то, что может быть легко описать только боль для решения.

5) Математические функции. Как Вы программировали бы факториал, который является продуктом всех чисел от 1 до n? Как Вы вычислили бы суммы различного Арифметического или Геометрического Ряда? Или вычислите количество Комбинаций или Перестановки r элементов от ряда n? Учитывая ряд точек, приблизьте многочлен, который отвечает этому требованию, например, в 2-мерной плоскости, названной X и Y, которых Вы могли дать 2 точкам и сделать, чтобы люди выяснили то, что является наклоном и прерыванием y, если Вы уже решили пар линейных уравнений.

6) Списки, которые могут быть реализованы с помощью связанных списков и массивов. Который лучше для различных случаев? Как Вы реализуете основные функции те, которые вставляют, удаляют, находят, и вид?

7) Структуры Абстрактных данных. Что такое стеки и очереди? Как Вы создаете и тестируете классы?

8) Указатели. Это просто приводит к огромным суммам тем как то, как к allocate/de-allocate памяти, что такое утечка памяти?

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

0
ответ дан 30 November 2019 в 13:22
поделиться

Хэнк: Большой О ??? Вы хотите сказать начинающим программистам, что их код имеет O (n ^ 2), а ваш - n log n ??

0
ответ дан 30 November 2019 в 13:22
поделиться

Что касается предпочтительного языка - поздравлений - Вы найдете, что C++ очень богат тем, чтобы заставлять Вас думать о математических ярлыках и миллионах способов заставить Ваш код работать еще лучше (или реализовать необычные шаблоны).

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

Элегантность прибыла после при изучении шаблонов и реальных алгоритмов.

0
ответ дан 30 November 2019 в 13:22
поделиться

Пусть ваш клуб научится программировать на любом языке, обучая его принципам построения программного обеспечения. Вместо того, чтобы покупать дюжину лицензий для Visual Studio, попросите студентов использовать компиляторы, создавать системы, исходные файлы, объекты и библиотеки, чтобы превратить свой код на C в программы. Я чувствую, что это действительно начало и на самом деле дает этим детям возможность понять, как создавать программное обеспечение на любой платформе, без костылей, на которые любят полагаться многие учебные заведения.

0
ответ дан 30 November 2019 в 13:22
поделиться

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

, Когда обучающие новички в тяжелой шаблоном среде, обычно запуститься с "вот, простая программа C. Мы обсудим то, что все это дерьмо наверху файла на потом, но на данный момент, концентрат на строках между 'международным основным (пустота)' и оператором 'возврата', который является, где вся полезная работа выполняется".

, Как только Вы проходите ту точку, фундаментальные понятия для покрытия включают структуры основных данных (массивы, связанные списки, деревья и словари), и основные алгоритмы (сортировка, поиск, и т.д.).

0
ответ дан 30 November 2019 в 13:22
поделиться

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

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

0
ответ дан 30 November 2019 в 13:22
поделиться

Спасибо за Ваши ответы!

И как Вы преподавали бы им фактическое решение задач?

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

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

0
ответ дан 30 November 2019 в 13:22
поделиться

Псевдокод должен быть самым первым.

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

0
ответ дан 30 November 2019 в 13:22
поделиться

В дополнение к ответам на этот вопрос , существуют определенные важные темы для покрытия. Вот пример того, как Вы могли структурировать уроки.

Первый Урок: Терминология и Синтаксис

Терминология для покрытия: переменная, оператор, цикл (повторение), метод, зарезервированное слово, тип данных, класс

Синтаксис для покрытия: присвоение, операция, if/then/else, для цикла, цикла с условием продолжения, выбора, ввод/вывод

115-секундный Урок: Конструкция Основного алгоритма

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

Третий Урок: Более усовершенствованные Темы Алгоритма

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

Заключительный Урок: Проект

Группы Делает проект, что группы могут заняться выполнением.

Они не должны быть единственными дневными уроками. Можно распространить темы через несколько дней.

0
ответ дан 30 November 2019 в 13:22
поделиться

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

Существует отличная книга «Как не программировать на C ++», с которой можно начать.

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

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

0
ответ дан 30 November 2019 в 13:22
поделиться

начните с простым "привет мировую" программу. Это представляет основные принципы, такие как переменные, пишущий в поток и процесс выполнения программы.

Тогда добавляют сложность оттуда (связанные списки, файл io, получая ввод данных пользователем, и т.д.).

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

0
ответ дан 30 November 2019 в 13:22
поделиться

Начните, заставив их понять проблему как, например, сортировка. Это является очень простым, и они должны быть в состоянии иметь отношение довольно быстро. Как только они видят, что проблема затем дарит им инструменты/решение для решения его.

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

0
ответ дан 30 November 2019 в 13:22
поделиться

Содержание в Deitel& программирование на C++ Deitel является достойным введением, и упражнения, предложенные в конце каждой главы, являются хорошими модельными задачами.

В основном, Вы говорите о: - управляющие структуры - функции - массивы - указатели и строки

Вы могли бы хотеть добиться введения в STL ("хорошо, теперь, когда мы сделали его, твердым путем... вот является более простая опция")

0
ответ дан 30 November 2019 в 13:22
поделиться
  1. Объясняют историю "Яичницы - глазуньи". Спросите слуховое, что они сделали бы для создания себя яичницей - глазуньей. Заставьте их отметить шаг, о котором они думают. Вероятно, Вы получите меньше чем 5 алгоритмов шагов. Тогда объясните их, сколько шагов должно быть записано, если мы хотим учить компьютер жарить яйца. Что-то как:
1) Go to the Fridge 
2) Open the fridge door 
3) Search for eggs 
4) If there are no eggs - go to the shop to buy eggs ( this is another function ;) ) 
5) If there are eggs - calculate how many do you need to fry 
6) Close the fridge door 
7) e.t.c. :)
  1. Запускаются с основ C - семантика синтаксиса e.t.c, и параллельно с этим объясняет очень простые алгоритмы как пузырьковая сортировка.
  2. После того, как слуховое знакомо со структурным программированием (это могло занять несколько недель или месяцев, завися, как часто Вы делаете уроки), можно совершенствоваться к C++ и ООП.
1
ответ дан 30 November 2019 в 13:22
поделиться

Кто-то упомянул выше, "сделайте забава программирования". Интересно сегодня, что люди не учатся ради изучения. Большинство людей хочет мгновенное удовлетворение .

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

  • Сделали, чтобы они сделали программу, которая предполагает число между 0 и 100.
  • Сделали, чтобы они заставили пиратский флаг клонироваться... Я сделал это в основном:-(

, Делают бумажные инструкции.

1
ответ дан 30 November 2019 в 13:22
поделиться

Ну, это клуб программирования, так что это должно быть весело! Так что я бы сразу сказал окунуться в опыт. Начните с объяснения, что такое метод main (), затем попросите студентов написать программу Hello World. Постепенно улучшайте программу hello world, чтобы она имела функции и выводила пользовательский ввод.

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

1
ответ дан 30 November 2019 в 13:22
поделиться

Поздравления!

я думаю, что Вы добираетесь ПУТЬ перед собой в принуждении определенного языка и работе над определенными темами и программой.. Это кажется, что Вы (и некоторые респонденты) путаете "уведомление клубу программирования" с "продвижением класса программирования". Они - совсем другие вещи.

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

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

Как в стороне, я рассмотрел бы "агностическую языком" ориентацию для клуба. Поощрите детей исследовать различные языки и платформы.

Удача и большая работа!

2
ответ дан 30 November 2019 в 13:22
поделиться

Я бы попытался работать с подмножеством C, а не пытаться начинать с OO. Это может быть введено после того, как они поймут некоторые основы.

2
ответ дан 30 November 2019 в 13:22
поделиться

Связанные списки - классический вопрос об интервью, и на серьезном основании.

2
ответ дан 30 November 2019 в 13:22
поделиться

Разбиение на части

Для меня уникальным в программировании является необходимость разбивать задачи на достаточно маленькие шаги для компьютера . Это зависит от языка, но тот факт, что вам, возможно, придется написать «цикл for», чтобы просто сосчитать до 100, требует привыкания.

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

filterItemsByCriteria();

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

(Примечание. : Я не знаю C ++, так что это всего лишь общий пример)

filterItemsByCritera() {
  makeCriteriaList();
  lookAtItems();
  removeNonMatchingItems();
}

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

Это похоже на игру, в которую играют дети, когда они продолжают спрашивать «почему?» после всего, что вы говорите, за исключением того, что вы должны продолжать спрашивать «как?»

3
ответ дан 30 November 2019 в 13:22
поделиться

IMO, Большой-O является одним из более важных понятий для начала программистов для изучения.

0
ответ дан 30 November 2019 в 13:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: