Основы программирования на c: Основы программирования на C. Задачи. — Stepik

Содержание

Основы программирования: C++

Основы программирования: C++

Кувшинов Д.Р.

2017–2018

Цель курса — ознакомить студентов с технологиями программирования с учётом профессиональной специализации и заложить базовые навыки, позволяющие разрабатывать программное обеспечение (ПО). В процессе требуется освоить базовую часть языка C++ в качестве основного языка программирования. Язык C++ выбран по двум причинам: дидактической и практической.

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

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

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

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

Замечание

. В тексте используются различные символы Юникода, например, ℝ для обозначения множества действительных чисел или символ ≡ для обозначения тождества. При неудачном стечении обстоятельств (отсутствии в системе шрифтов с широкой поддержкой Юникода) ряд символов может не отображаться, в этом случае рекомендуется установить такой шрифт (например см. список).


Знаком ⌛ помечены планируемые разделы, не включенные в текущую версию.

Теоретическая часть

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

Онлайн-справочник (на английском, русский вариант в основном получен машинным переводом).

Онлайн-компиляторы: IdeOne, C++ Shell, WandBox, Godbolt.

Блог “ISO C++” (на английском).

Лабораторные работы

Задания для выполнения на лабораторных занятиях.

Самостоятельные работы

Задания для самостоятельного выполнения.

Компьютер — идеальный бюрократ.

Главное правило: работать начинать надо сразу, сдавать всё в установленный срок.

Предусмотрено два типа работ: лабораторные и самостоятельные (7 в осеннем семестре и 6 в весеннем семестре).

Правила оценивания лабораторных работ

  1. Каждая работа (результат выполнения одного варианта задания) оценивается независимо от остальных работ. Работа выполняется и представляется преподавателю на лабораторном занятии.
  2. Оценка за каждую работу выставляется в диапазоне от 1 (“присутствовал на занятии”) до 4 (“работа выполнена”) баллов.
  3. Финальный результат вычисляется как сумма результатов по всем работам. Максимальное значение этой суммы составляет 28 баллов.

Правила оценивания самостоятельных работ

  1. Каждая работа (результат выполнения одного варианта задания) оценивается независимо от остальных работ. Работа может выполняться как на занятиях, так и дома, однако для получения оценки её необходимо представить лично.
  2. Оценка выставляется в процентах от “идеального выполнения” и вычисляется как произведение трёх величин (коэффициентов): полноты, качества и срока исполнения (см. ниже).
  3. Для каждой работы в течение семестра назначается свой крайний срок сдачи.
  4. Коэффициент срока исполнения выбирается из четырёх возможных значений:
    • 1.0 в случае исполнения работы в срок,
    • 0.84 — менее двух недель сверх срока,
    • 0.67 — менее трёх недель сверх срока,
    • 0.5 — три и более недель сверх срока.
  5. Полнота оценивается в диапазоне [0, 1] как степень соответствия предъявляемым в формулировке задания требованиям.
  6. Качество оценивается в диапазоне [0.5, 2] с точки зрения качества предъявленного исходного кода (в частности, оценка может быть понижена за слишком неряшливое оформление и использование бессмысленных названий), эффективности используемых алгоритмов, разумности выбранных программных решений.
  7. Финальный результат вычисляется как сумма произведений “процентных” оценок работ за семестр на их фиксированные “стоимости” в баллах (указаны в начале описания каждой самостоятельной работы).

Итоговый результат за семестр

  1. Итоговый результат за семестр вычисляется как сумма баллов за лабораторные работы, самостоятельные работы и работу на практических занятиях (по 2 балла за выполнение одного задания у доски).
  2. Для допуска к экзамену необходимо набрать 40 баллов или выше.
  3. При получении более 100 баллов в БРС выставляется 100 баллов, а остаток делится на два и переносится в следующий семестр.

Аттестация в середине семестра

Для получения аттестации требуется набрать 24 балла.

C и C++

  • С.Прата. Язык программирования C++. Лекции и упражнения. 6-е изд. — М.: Вильямс, 2012. — 1244с.
  • Б.Эккель. Философия C++. Введение в стандартный C++. 2-е изд. — СПб.: Питер, 2004. — 572с.
  • Б.Керниган, Д.Ритчи. Язык программирования Си. 3-е изд., испр. — СПб.: «Невский Диалект», 2001. — 352с.
  • С.Прата. Язык программирования C. Лекции и упражнения. 5-е изд. — М.: Вильямс, 2006. — 960с.
  • Б.Страуструп. Программирование. Принципы и практика использования C++. 2-е изд. — М.: Вильямс, 2016. — 1328с.
  • А.Степанов, П.Мак-Джоунс. Начала программирования. — М.: Вильямс, 2011. — 272с.
  • Д.Роуз, А.А.Степанов. От математики к обобщенному программированию. — М.: ДМК Пресс, 2015. — 264с.

Теоретические основы

Алгоритмы

  • Н.Вирт. Алгоритмы и структуры данных. — М.: Мир, 1989. — 360с.
  • Дж.Макконнелл. Основы современных алгоритмов. 2-е изд. — М.: Техносфера, 2004. — 368с.

Архитектура компьютера

  • Ч.Петцольд. Код. — М.: Русская Редакция, 2001. — 512с.
  • Э.Таненбаум, Т.Остин. Архитектура компьютера. 6-е изд. — СПб.: Питер, 2013. — 816с.
  • Д.Харрис, С.Харрис. Цифровая схемотехника и архитектура компьютера. 2-е изд. — русск. перев. при поддержке Imagination Technologies (электронное издание), 2015. — 1662с.

C и C++ II

  • Б.Страуструп. Язык программирования C++, специальное издание. — М.: Бином-Пресс, 2011. — 1136с.
  • B.Stroustrup. The C++ Programming Language. 4th ed. — Addison-Wesley, 2013.
  • М.Уилсон. C++: практический подход к решению проблем программирования. — М.: КУДИЦ-ОБРАЗ, 2006. — 736с.
  • Б. Эккель, Ч.Эллисон. Философия C++. Практическое программирование. — СПб.: Питер, 2004. — 608с.
  • С.Мейерс. Эффективное использование C++. 3-е изд. — Питер, ДМК Пресс, 2006. — 300с.
  • С.Мейерс. Наиболее эффективное использование C++. — М.: ДМК Пресс, 2000. — 304с.
  • С.Мейерс. Эффективное использование STL. — СПб.: Питер, 2003. — 224с.
  • С.Мейерс. Эффективный и современный C++. 42 рекомендации по использованию C++11 и C++14. — М.: Вильямс, 2015. — 304с.
  • Н.Джосаттис. Стандартная библиотека C++: Справочное руководство. — М.: Вильямс, 2014. — 1136с.
  • Г.Саттер. Решение сложных задач на C++. — М.: Вильямс, 2008. — 400с.
  • Г.Саттер. Новые сложные задачи на C++. — М.: Вильямс, 2005. — 272с.
  • А.Александреску. Современное проектирование на C++. — М.: Вильямс, 2008. — 336с.
  • Э.Уильямс. Параллельное программирование на С++ в действии: практика разработки многопоточных программ. — М.: ДМК Пресс, 2014. — 672с.

Алгоритмы II

  • Р.Седжвик. Алгоритмы на C++. — М.: Вильямс, 2016. — 1056с.
  • А.Ахо, Дж.Хопкрофт, Дж.Ульман. Структуры данных и алгоритмы. — М.: Вильямс, 2003. — 384с.
  • Т.Кормен, Ч.Лейзерсон, Р.Ривест, К.Штайн. Алгоритмы: построение и анализ. 3-е изд. — М.: Вильямс, 2013. — 1324с.
  • Д.Кнут. Искусство программирования. 3-е изд. Тома 1–4. — М.: Вильямс, 2007.
  • Р.Миллер, Л.Боксер. Последовательные и параллельные алгоритмы. — М.: БИНОМ, 2006. — 406с.
  • Н.Вирт. Построение компиляторов. 2-е изд. — ДМК Пресс, 2014. — 192с.
  • А.Ахо, М.Лам, Р.Сети, Дж.Ульман. Компиляторы: принципы, технологии и инструментарий. 2-е изд. — М.: Вильямс, 2008. — 1184с.

Разработка ПО

  • Ф.Брукс. Мифический человеко-месяц или Как создаются программные системы. — СПб.: Символ-Плюс, 2010. — 304с.
  • Р.Мартин. Быстрая разработка программ: принципы, примеры, практика. — М.: Вильямс, 2004. — 752с.
  • Р.Мартин. Чистый код: создание, анализ и рефакторинг. — СПб.: Питер, 2010. — 464с.
  • Г.Буч. Объектно-ориентированный анализ и проектирование. 3-е изд. — М.: Вильямс, 2008. — 720с.
  • Э.Гамма, Р.Хелм, Р.Джонсон, Д.Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. — СПб.: Питер, 2012. — 368с.
  • С.Макконнелл. Совершенный код. 2-е изд. — М.: Русская Редакция, 2010. — 896с.
  • R.Nystrom. Game Programming Patterns.

HTML-файлы сгенерированы с помощью системы Pandoc.

Дата последнего обновления: 2018.09.13 (v1-r324).

Кувшинов Д.Р. © 2015

НОУ ИНТУИТ | Основы программирования на языке C

Форма обучения:

дистанционная

Стоимость самостоятельного обучения:

бесплатно

Доступ:

свободный

Документ об окончании:

Уровень:

Для всех

Длительность:

13:11:00

Студентов:

18758

Выпускников:

3301

Качество курса:

4.07 | 3.55

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

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

ISBN: 978-5-9556-0057-4

Теги: bell laboratories, reference manual, автоматические переменные, алгоритмы, библиотеки, внешняя статическая переменная, драйверы, интерпретация переменных, класс памяти, компиляторы, компоненты, потоки, префиксные операции, проверяемое выражение, программирование, процедуры, редакторы, символическое имя, стандарты, трансляторы, указатели, элементы, эскейп-последовательность

Дополнительные курсы

 

2 часа 30 минут

Общее знакомство
Происхождение языка Си. Достоинства языка Си. Будущее языка Си. Использование языка Си. Использование текстового редактора для подготовки программ. Исходные и выполняемые файлы. Примеры простой программы. Пример простой программы на языке Си. Структура простой программы.

Операции
Основные операции. Дополнительные операции. Перечень операций языка Си.

Операторы
Выражения. Простейшие выражения. Операторы. Составные операторы.

Преобразование типов
Эквивалентность типов. Преобразование типов. Неявное преобразование типа. Арифметические преобразования. Явные преобразования типов. Синтаксис типов.

Выбор вариантов
Выбор вариантов. Оператор if. Расширение оператора if. Операции отношения. Логические операции. Операция условия: ?:. Множественный выбор.

Функции
Создание и использование функций. Аргументы функции. Возвращение значений. Локальные переменные. Нахождение адресов. Указатели, первое знакомство. Функции с переменным количеством аргументов.

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

Препроцессор языка Си
Общие сведения. Символические константы: #define. Использование аргументов с #define. Макроопределение или функция? Включение файла #include. Условная компиляция.

Массивы и указатели
Указатели и массивы. Массивы. Указатели. Динамические объекты. Создание динамических объектов. Доступ к динамическим объектам. Строки — дополнительные сведения о связи между указателями и массивами. Инициализация массивов и классы памяти. Функции. Операции с указателями.

Символьные строки и функции над ними
Строковые константы. Массивы символьных строк и их инициализация. Массив и указатель: различия. Указатели и строки. Ввод-вывод строк. Обработка строк.

Структуры
Определение структурных переменных. Доступ к компонентам структуры. Поля битов в структурах. Объединения. Перечисления. Переменные структуры. Указатели структуры. Массив структур. Переименования типов.

Библиотека языка Си и файлы ввода-вывода
Библиотека языка Си содержит множество функций и макроопределений. Библиотеки меняются от системы к системе, но есть ядро функций (стандартная библиотека). Распределение памяти.

Функции в примерах
Функция получения случайных чисел. Поиск узлов из простых чисел. Матрица инцидентности. Структуры данных. Работа с файлами. Все операции со стеком. Примеры из графики, все преобразования трехмерного пространства.

Изучение языка программирования Си

Где общаются разработчики: русскоязычные чаты программистов

Сделали подборку чатов программистов в Slack, Telegram и Gitter.

Как компилятор преобразует код на C в Assembler?

Видео, в котором подробно разбирается преобразование программы на языке C в машинный код.

Для чего хорош Си?

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

Должен ли «настоящий» программист знать язык Си — отвечают эксперты

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

Видеокурс для изучения языка Си с нуля

Курс подробно объясняет основы языка Си, включая функции, структуры, массивы, циклы, арифметические, логические операции и операции сравнения.

Фичи Rust, которых не хватает в C

Федерико Мена-Кинтеро, один из основателей GNOME, рассказывает, какие у языка C есть недостатки, что плохого в языке C относительно Rust, и объясняет, почему считает C очень и очень примитивным языком для современного ПО.

Макросы в Си: как, когда и зачем?

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

Интересные проекты: математическая C-библиотека для разработки видеоигр

Проект MATHC — коллекция объектов для разработки 2D- и 3D- игр.

Интересные проекты: рендеринг изображений ASCII-символами

Однофайловая библиотека C/C++, которая позволяет преобразовывать изображение или видеокадр в печатные символы ASCII в режиме реального времени.

Интересные проекты: облачная файловая система pingfs

Где мои данные? Не могу сказать. Но они существуют? Надеюсь. Обзор «по-настоящему облачной» файловой системы pingfs.

Статический анализ кода: обзор инструмента OCLint

OCLint — это инструмент для статического анализа кода, написанного на С, С++ и Objective-C.

Курс «Углубленное программирование на C/С++»

Русскоязычный курс проекта «Технопарк Mail.Ru Group», посвященный продвинутым аспектам программирования на языках C/C++. Курс записан в 2014 году, лектор — Алексей Петров.

Курс «Основы программирования встраиваемых систем»

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

«Шелл» на С: пишем командную оболочку для Unix

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

Проект не для начинающих: пишем свой текстовый редактор с поиском и подсветкой синтаксиса на C

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

Графический интерфейс для GDB: обзор инструмента gdbgui

Современный браузерный интерфейс GDB (отладчик GNU) для языков C, C++, Go и Rust. Можно добавлять контрольные точки, просматривать трассировку стека и многое другое. Для этого нужно просто запустить gdbgui из терминала, и в браузере откроется новая…

Компилятор Си в одну инструкцию: обзор инструмента M/o/Vfuscator

M/o/Vfuscator компилирует программы в инструкции mov, и только в них. Инструмент ориентирован на язык Си и архитектуру процессора x86, но адаптивен и легко настраивается под другие языки и архитектуры.

Книги по языку Си для начинающих и не только

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

Зачем и как эффективно учить язык программирования Си: исчерпывающая подборка ресурсов для освоения

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

Лучшие проекты, в которых стоит поучаствовать, чтобы примкнуть к Open Source движению и развить свои навыки. Часть третья. C, C++

Если вы интересуетесь жизнью Open Source сообщества и хотите к нему присоединиться, то эта серия подборок (которую мы продолжаем пополнять) придётся вам как нельзя кстати, ведь в ней собраны лучшие проекты…

Разбираемся в сложных объявлениях Си

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

9 интересных трюков на Си, с которыми вы раньше не сталкивались

В этой статье мы рассмотрим несколько редких приёмов языка Си. О некоторых из них я раньше не слышал, и вы, скорее всего, тоже. Если ваш преподаватель или коллега хвастаются знанием…

Руководство по созданию ядра для x86-системы. Часть 2. Система ввода / вывода

Рассказывает Arjun Sreedharan  В прошлой статье я писал о том, как создать простейшее x86-ядро, использующее GRUB, работающее в защищённом режиме и выводящее на экран строку. В этот раз мы подключим к ядру драйвер…

Два способа использования одноэлементных структур в Cи с пользой

В структурах языка Си очень много странностей, но, по большей части, они предсказуемы, полезны и понятны. Для тех, кто не знаком с Cи: структуры представляют собой наборы данных. Примером их…

Руководство по созданию ядра для x86-системы. Часть 1. Просто ядро

Рассказывает Arjun Sreedharan  Давайте напишем простое ядро, которое можно загрузить при помощи бутлоадера GRUB x86-системы. Это ядро будет отображать сообщение на экране и ждать. 

Совершенно правдивая история о настоящем программисте, никогда не изучавшем Си

Рассказывает Уилл Шипли Мой юный друг Сэм – настоящий гений от программирования. Сэм знает Си! Впрочем, нужно сразу сделать пояснение: он еще не дипломированный специалист.

О пользе статического анализатора кода при написании программ

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

На чём пишут в NASA?

Вопрос: в NASA пишут на Python’е? 

Советы по языку программирования Си: 10 полезных приемов

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

Основы Just In Time компиляции, используемой в динамических языках, на примере программы на C

Я был сильно вдохновлен, когда узнал о динамической компиляции (JIT — Just In Time) из различных виртуальных машин Ruby и JavaScript. Я мог бы рассказать вам все о том, как…

Важность C при обучении программированию

Рассказывает Афзал Ахмед Зишан Введение Программирование — процесс создания разработчиком софта, который бы запускался на компьютере и решал конечное количество проблем. Люди занимались программированием с тех пор, как были изобретены…

Хитрости с битовыми операциями на примере языка Си

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

бесплатный online-курс обучения основам программирования на Си.

  • с чего начать обучение программированию?
  • какой язык изучать первым?
  • какие книги читать?

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

Основные характеристики курса:

Доступно

все объяснения на понятном языке.

Наглядно

поясняющие примеры, видео, картинки, анимации.

Бесплатно

все уроки доступны бесплатно.

Практика

много практических задач разного уровня сложности. Задачи проверяются автоматически.

Помощь

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

Карта курса

Чего здесь точно не будет:

  • оконных приложений
  • ООП и классов
  • С++
  • способов стать программистом за 1 час, 2 дня, 3 недели и пр.

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

Как проходит обучение:

  • Изучаете теорию
  • Решаете много практических задач
  • Решаете ещё практические задачи
  • Изучаете дополнительные материалы по теме урока
  • Решаете исследовательские задачи

Когда можно начать?

Да хоть прямо сейчас!

Начать обучение

Подпишитесь, чтобы не пропустить обновления!

Поддержите проект рублём.

учебник и практический курс для начинающих:

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

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

В свое время (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).

Курс программирования C++. Уровень 1

Курс Основы программирования на C++. Уровень 1 рассчитан на участников,  не знакомых с программированием, и является введением в программирование, алгоритмизацию и структуры данных. 

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

В курсе участники познакомятся с такими инструментами разработчика, как:
  • Integrated Development Environment — система программных средств, используемая программистами для разработки программного обеспечения.
  • Code review (gerrit) — система рецензирования кода. Cистематическая проверка исходного кода программы с целью обнаружения и исправления ошибок, которые остались незамеченными в начальной фазе разработки.
  • Unit testing (Google mock) — модульное тестирование. Тестирование отдельного модуля программы с целью проверки ее работоспособности.
  • Системы контроля версий (Git) — система позволяющая хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.
  • Сборка проекта (GNU make) — утилита использующая информацию о зависимостях файлов друг от друга и правил их удовлетворения, для формирования исполняемой программы

Так же в курс входит полностью весь язык Си:

  • Возможности языка.
  • Выражения.
  • Операторы.
  • Массивы.
  • Указатели.
  • Функции.
  • Структуры данных.
  • Препроцессор.

Данный курс затрагивает такие темы, как основные структуры данных:

  • Вектор.
  • Список.
  • Стек.
  • Очередь.
  • Дерево.

А так же, основы работы с ними:

  • Сложность алгоритмов.
  • Алгоритмы сортировки.
  • Алгоритмы поиска.

Курс заканчивается введением в С++.

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

Практика:

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

Очень приветствуются ваши  реальные задачи, которые необходимо решить. Приносите, будем разбирать на курсе вместе!:)

Курсовой проект:

Начиная примерно с середины курса участники будут работать над курсовыми проектами, сдача которых является обязательным условием для получения сертификата.

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

Примерные темы проектов: 

  • Мини игра в стиле «Pacman» — графическая библиотека (OpenGl, WinAPI, Borland…).
  • Детектор движения в видео потоке — библиотека работы с видео потоком (Gstreamer…)
  • Плеер — библиотека работы со звуком (vlc, alsa…)
  • База данных — библиотека работы с базами данных (sqlite…)
  • Шифрователь — библитеки шифрования (openssh…)
  • Умный дом — библиотеки работы с контроллерами (stm…)
  • Бот для игры

Курс «Основы программирования на языке C#»

АктуальностьИдёт набор
Стоимость20 000 руб
Продолжительность72 часа
Группаот 8 до 10 человек
Начало занятийПо мере формирования группы