Язык программирования c. Введение в язык программирования C. Компиляторы на динамические языки и платформы

Основы программирования
Азы программирования, основные термины и понятия

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

Урок 3. Первая программа

Выбор языка программирования. Подготовка браузера. Программа «Hello, world!».

Урок 4. Переменные

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

Урок 5. Типы данных

Типы данных. Операции с разными типами данных. Преобразование типов данных.

Урок 6. Алгоритмы и блок-схемы

Алгоритмическое мышление. Визуальные блок-схемы.

Урок 7. Оператор ветвления if

Выбор вариантов в программе. Оператор ветвления if. Игра в загадки.

Урок 8. Логические операции

Комплексные условия выбора. Логические И, ИЛИ. Игра «Злые птицы».

Урок 9. Циклы do, while

Циклы do и while. Игра в русскую рулетку.

Урок 10. Цикл for

Цикл for. Финансовый калькулятор.

Урок 11. Массивы

Большие наборы данных и массивы. Игра в рулетку.

Урок 12. Функции

Функции. Подготовка к написанию игры «Black Jack (21)».

Урок 13. Игра «Black Jack». Часть 1

Написание полноценной игры. Основа – раздача карт и подсчет очков.

Урок 14. Игра «Black Jack». Часть 2

Завершение написания игры. Определение результатов и победителя.

Урок 15. Карьера программиста

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

Введение в Git
Основы работы с Git

В течение 13 роликов мы познакомимся с основами системы контроля версий Git. Выясним, почему она важна в современной разработке и коллективном программировании. Познакомимся с основными понятиями Git: репозиториями, коммитами, ветками и тэгами. Изучим базовые операции: создание и клонирование репозитория, слияние веток, запрос истории изменений и многое другое. Посмотрим, как при помощи Git сдавать домашние задания. Это базовый курс, после него можно приступать к изучению любого языка программирования. Кроме того, вы будете готовы к прохождению собеседования, где несколько вопросов обычно посвящены системе контроля версий.

Урок 1. Введение в системы контроля версий

Что такое система контроля версий?
Виды систем контроля версий
Git и его преимущества
Документация

Урок 2. Работа с командной строкой

Что такое командная строка?
Почему важна командная строка?
Как открыть командную строку?
Полезные команды

Урок 3. Локальная работа с Git-репозиторием

Введение в консольный клиент
Настройка git
Инициализация репозитория
Клонирование репозитория
Графические git-клиенты

Урок 4. Базовые операции

Индексирование
Публикация изменений
Коммиты
Отмена индексирования
Текущий статус

Урок 5. История git-проекта

История изменений
Откат по истории проекта
Авторы изменений: git blame
Игнорирование файлов.gitignore
Сайт gitignore.io
Сохранение папок.keep

Урок 6. Ветки

Управление ветками
Создание и удаление веток
Переключение между ветками
Конфликты способы и их разрешение
git merge

Урок 7. Создание удаленного Git-репозитория

Git-хостинги (GitHub, GitLab, Bitbacket)
Создание собственного bare-git репозитория
Регистрация на GitHub
Публикация изменений в удаленном репозитории

Урок 8. Удаленные ветки

Названия репозиториев
Несколько репозиториев в одном проекте
.git/config
Управление ветками на удаленном репозитории

Урок 9. Версионирование

Способы версионирования
Тэги и их связь с коммитами
Добавление тэга
Удаление тэга
Управление тэга на удаленном репозитории

Урок 10. Слияние и переносы

Сливаем изменения. git merge
Переносим ветки. git rebase
Переносим коммиты. git cherry pick
Сливаем коммит в один. git squash
Хуки
Псевдонимы

Урок 11. Gitflow

Как используется и зачем?
Циклы тестирования
Возможно Blue/green
Релизные ветки
Хотфиксы

Урок 12. SSH

Протокол SSH
Зачем используется?
Создание ключей
Форвардинг
SSH-агент
Копирование файлов по SSH
Windows: Git for Windows
Использование SSH совместно с Git-ом

Урок 13. Сдача домашней работы через Git

Основы баз данных. 20 уроков.
Проектирование БД и запросы SQL

Базы данных (БД) - это системы хранения и обработки данных, для доступа к которым используется язык SQL (Structured Query Language). Любой современный сайт, игра или настольное приложение нуждаются в хранении данных. На данный момент существует множество различных систем управления базами данных (СУБД), самой популярной является MySQL. “Основы баз данных” - это 20 интенсивных видео-уроков (по 10 минут), где мы вместе пройдём все этапы проектирования БД на примере интернет-магазина с использованием языка запросов SQL. После этого курса вы сможете использовать различные базы данных, такие как MS SQL и Postgre Sql, так как синтаксис языка SQL для них практически не отличается.

Урок 1. Реляционные базы данных

Чем отличается БД от СУБД; какие базы данных называются реляционными; обзор современных СУБД.

Урок 2. Установка СУБД

Установка СУБД MySql и графического приложения Mysql Workbench.

Урок 3. Проектирование базы данных, нормальные формы

Проектирование данных в Excel; нормальные формы; первичный ключ.

Урок 4. SQL-команда CREATE

Создание таблиц в графическом интерфейсе MySql Workbench; команда CREATE; типы данных; работа в консоли.

Урок 5. SQL-команда INSERT

Заполнение таблиц данными с помощью графического интерфейса; команда INSERT; AUTO INCREMENT.

Урок 7. SQL-команды DISTINCT, ORDER BY, LIMIT

Получение и фильтрация данных с помощью SQL-команд DISTINCT и LIMIT; сортировка с помощью команды ORDER BY.

Урок 9. Согласованность данных

Понятие согласованности или консистентности данных.

Урок 10. Внешний ключ

Понятие внешнего ключа и ограничений на значения столбцов; FOREIGN KEY CONSTRAINTS.

Урок 11. Создание таблиц с отношением “многие ко многим”

Добавление корзины в базу данных интернет-магазина.

Урок 12. Составной первичный ключ

Использование составного первичного ключа при проектировании таблицы с отношением “многие ко многим”.

Урок 13. Объединение данных из нескольких таблиц

Получение данных из нескольких взаимосвязанных таблиц; несостоятельность подхода с использованием нескольких SELECT-ов.

Урок 14. Оператор INNER JOIN

Объединение данных из нескольких таблиц с помощью оператора INNER JOIN.

Урок 15. Операторы LEFT JOIN, RIGHT JOIN

Объединение данных из нескольких таблиц с помощью операторов LEFT JOIN и RIGHT JOIN.

Урок 16. Оператор UNION

Объединение результатов нескольких SQL-запросов с помощью оператора UNION.

Урок 17. Агрегирующие функции

Агрегирующие функции COUNT, SUM, MIN, MAX.

Урок 18. Оператор GROUP BY

Группировка выбранного набора строк с использованием оператора GROUP BY.

Урок 19. Индексы

Фильтрация в GROUP BY с использованием HAVING; увеличение скорости выполнения запросов с использованием индексов.

Урок 20. Транзакции

Понятие транзакции; оператор TRANSACTION; требования ACID к транзакционной системе.

Linux. Рабочая станция. 1 месяц.
Практика администрирования ОС Linux на компьютере

GNU/Linux – популярная операционная система, лидирующая на рынке серверного оборудования, используемая также как встраиваемая ОС в промышленном и бытовом оборудовании и даже в качестве десктопного ПО. Компоненты GNU используются и в MAC OS X, не обошлось без влияния GNU/Linux и на Windows. Знакомство с Linux необходимо системному администратору, тестировщику, веб-программисту, специалисту по информационной безопасности, любому разработчику, претендующему на статус middle и выше. Данный курс разбирает базовые основы работы в Linux: основы работы в оболочке Linux, управление пользователями и правами файлов, регулярные выражения и написание скриптов в bash, работа с процессами и управление загрузкой и сервисами в Linux. Понимание основ программирования, систем счисления (двоичная, восьмеричная, шестнадцатеричная системы счисления) и булевой логики

Урок 1. Знакомство и установка

Знакомство с GNU/Linux. Что такое GNU, Linux и UNIX. Виртуализация. Установка Ubuntu в виртуальной машине. Базовые возможности работы в Linux

Урок 2. Работа в графическом и консольном режиме

Консольный и графический режим в Linux; консольные команды; создание и редактирование файлов.

Урок 3. Файлы и права доступа в Linux

Пользователи и права в Linux; работа с файлами; выполнение операций от имени суперпользователя.

Урок 4. Регулярные выражения

Регулярные выражения. Поиск. sed.

Урок 5. Программирование bash

Синтаксис. Команды. Переменные. Управляющие конструкции. Некоторые простые скрипты. Выполнение задач по расписанию с помощью cron

Урок 6. Веб-сервисы

Сетевые возможности Linux. Веб-сервисы. Nginx, Apache2. Let’s encrypt. Сетевой фильтр netfilter и утилита iptables.

Урок 7. Введение в Git

Знакомство с Git.

Урок 8. SOA и введение в Docker

Монолитная и SOA-архитектура приложений. Введение в Docker

Урок 1. Введение

Знакомство с языком, краткая история. Обзор ПО. Базовые понятия языка. Переменные и типы данных

Урок 2. Условия и циклы

Условия. Булева алгебра и двоичные вычисления. Циклы. Управление циклами и оператор switch

Урок 3. Функции, массивы и указатели

Функции. Указатели. Массивы. Многомерные массивы

Урок 4. Строки, структуры и работа с памятью

Строки. Структуры данных. Файловая система. Динамическое выделение памяти

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

Урок 1. Компилируемый язык. Этапы трансляции и сборки программ

  1. Зачем нужен С++.
  2. Средства разработки на С++.
  3. Как работает компилируемый язык.
  4. Этапы трансляции программы.
  5. Как работает сценарий сборки.
  6. Разбор домашнего задания.

Урок 2. Имена в программе. Данные, типы, функции и переменные

  1. Имена, типы и переменные.
  2. Переменная и представление числа.
  3. Вычислимость.
  4. Функция. Понятие и смысл.
  5. Функции и их аргументы.
  6. Простые массивы.
  7. Разбор домашнего задания.

Урок 3. Конструируем алгоритм на языке C++

  1. Блоки. Понятие алгоритма Пространство имен.
  2. Условные операции.
  3. Константный множественный выбор.
  4. Циклическая условная операция while.
  5. Управление итерацией (повторяемостью цикла).
  6. Счетный цикл.
  7. Исключительные ситуации.
  8. Разбор домашнего задания.

Урок 4. Процедурное программирование

  1. Собираем скелет проекта для Qt Creator.
  2. Получаем доступ к файлу с данными.
  3. Хак формата: расшифровка способа хранения данных.
  4. Декодирование формата PNM/PGM.
  5. Побочные преобразования данных: читаем размеры изображения.
  6. Построение выходной гистограммы и вывод данных.
  7. Разбор проекта программы, составленной в процедурном стиле.

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

Урок 1. Введение и знакомство

Урок 2. Сложность алгоритма и простые алгоритмы

Урок 4. Массивы

Урок 5. Сложные сортировки массивов

Урок 6. Стеки, очереди и списки

Урок 7. Динамические структуры данных

Урок 8. Деревья

Урок 9. Графы

Урок 10. Хеш-таблицы

Урок 11. Введение в криптографию

Объектно-ориентированное программирование. 1 месяц.
Погружение в ООП

Курс знакомит слушателей с лучшими техниками программирования на языке С++. Будут освещены основные положения эффективного применения объектно-ориентированного программирования для написания программ, а также типовые аспекты работы библиотеки потокового ввода/вывода. Во время обучения студенты напишут полноценную игру, используя полученные знания. Курс рассчитан на начинающих программистов С++, прошедших уровень 1 - процедурное программирование.

Урок 1. Именованные состояния

Экспорт имен. Перегрузка имен функций (глобальная).
Хранение функций в состоянии. Доступность пространства имен состояния. Ключевые слова public и private. Вводим понятие объекта. Вводим понятие класса. Начальное хранимое состояние.

Урок 2. Наследование

Управление доступом к базовому классу. Конструкторы и наследование. Создание многоуровневой иерархии классов. Указатели на производные классы. Простое и множественное наследование.

Урок 3. Виртуальные функции и полиморфизм

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

Урок 4. Отношения между объектами в С++

Композиция, агрегация, ассоциация, зависимость. Контейнерные классы. Операторы приведения типа. Примеры программ на С++

Урок 5. Совместное использование функций и методов

Перегрузка операторов. Шаблоны функций и классов. Явная и частичная специализация шаблонов. Примеры простых программ

Урок 6. Потоки ввода-вывода

Иерархия потоковых классов. Операции ввода-вывода для стандартных типов. Организация ввода-вывода для пользовательских типов. Работа с файлами и буферами в памяти. Средства форматирование вывода, манипуляторы

Урок 7. Поддержка модульности. Написание игры Blackjack

Единицы компиляции. Разделение на файлы заголовков и реализации. Директивы препроцессора, макросы и условная компиляция. Написание игры Blackjack

Урок 8. Механизм исключительных ситуаций

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

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

Урок 1. Основы управления памятью

Урок 2. Управление типизацией. Система типов

Урок 3. Препроцессинг. Условная компиляция

Разработка программ с графическим интерфейсом на С++. 1 месяц.
Qt Framework

Урок 1. Qt Creator: основы

Что такое Qt? Краткий обзор возможностей (help, qtdemo, linguist, uic и т.д.). Установка библиотеки и среды разработки QT. Настройка Qt Creator для работы (выбор компилятора, дебагера, каталога и т.д.). Создание и запуск первого приложения (Hello world!). Виджеты. Различные виды полей вывода текста. Кнопки и индикаторы.
Обработка сигналов от виджетов.

Урок 2. Модульность в Qt

Основные модули Qt. Иерархия классов. Принцип модульности. Разделение движка и интерфейса. Концепция "модель - представление". Список, дерево, таблица и методы их вывода. Защита полей вывода. Документация по модулям и классам Qt. QMake и системы автосборки проектов. Система компиляции и подключения модулей.pro file

Урок 3. Работа с данными в Qt.

Контейнерные классы. Итераторы. Последовательные контейнеры. Ассоциативные контейнеры. Работа со строками. Чтение, вывод на экран и сохранение изображений. Работа с файлами и каталогами. Потоки ввода/вывода. Базовые методы открытия файла QFile, QFileDialog. Ресурсы программы.

Урок 4. Взаимодействие объектов в Qt

Объектная модель Qt. Управление памятью. Иерархия объектов. Сигналы и слоты. Соединение и разъединение объектов. MOC - метаобъектный компилятор. Принцип цикла обработки событий. Обработка событий. События мыши, клавиатуры. Фильтры событий. Поддержка разных языков. Локализация программы. Динамическая смена языка (QLinguist). Обращение к командной строке из программы

Урок 5. Разработка графического интерфейса в Qt

Класс QWidget. Виды виджетов. Иерархия виджетов. Подключение OpenGl и других сторонних библиотек вывода. Разработка форм в Qt Designer. Использование форм в проектах. Компоновка виджетов. Политика изменения размера. Соединение сигналов со слотами. Фокус ввода. Таблицы стилей. Цветовая палитра. Создание собственных виджетов.

Урок 6. Разработка оконного интерфейса в Qt

Однодокументный и многодокументный интерфейс. Дочерние и родительские экраны. Подклассы (QDialog and ets). Главное окно. Панели инструментов. Строка состояния. Создание меню. Выпадающее меню. Контекстное меню. Диалоговые окна. Открытие, сохранение и вывод на печать документов.

Урок 7. Работа с графикой и текстом в Qt

Контекст рисования QPainter. Системы координат. Точка, линия, прямоугольник, полигон. Перья, кисти. Цветовые модели. Градиенты. Graphics View Framework. Сцена и представление. Текст с элементами форматирования. Шрифты. Работа с html разметкой. Вывод и сохранение. WebEngine. Реализация простого веб-браузера.

Урок 8. Таймеры, процессы и потоки в Qt

Дата и время. События таймера. Процессы. Запуск, работа и остановка. Потоки. Многопоточность. Обмен сигналами, событиями. Синхронизация. Мьютексы

Урок 9. Технология Qt Quick

Язык QML. Элементы пользовательского интерфейса. Управление размещением элементов. Элементы графики. Работа с изображениями и шрифтами. Работа с мышкой, клавиатурой и тачпадом. Реализация анимации. Использование QML в проекте

Урок 10. Дополнительные инструменты разработки и средства сборки Qt

Тестирование программ. Типы ошибок. QDebug. Пошаговая отладка. Контрольные точки. Окна переменных и цепочки вызова. Модульное тестирование. Тестирование графического интерфейса. Виды сборок проекта (отладка, вывод, профилирование). Qt Creator и системы контроля версий. Git. Поиск взаимосвязанных библиотек. Как отправить приложение заказчику (без исходников), чтобы оно точно у него запустилось

Урок 11. Работа с базами данных (БД) в Qt

Краткие сведения о СУБД SQLite. Основные операции при работе с БД. Инструменты Qt для работы с SQLite. Реализация работы с БД через концепцию "модель - представление". Сборка и подключение других библиотек баз данных (Postgresql/mysql/ets)

Урок 12. Работа с сетью в Qt

Высокоуровневые и низкоуровневые сетевые протоколы. Соединение через сокеты. Модель "клиент-сервер". Управление доступом к сети. Подключение к базам данных на сервере

Во время стажировки вы будете разрабатывать OpenSource текстовый редактор типа Emacs на C++ с плагинами. Вы получите навыки командной работы, работы с git и tasktracker, а также познакомитесь с методологиями Agile-разработки, SCRUM, КАНБАН.

Урок 2. Введение в гибкие методологии. Таск-трекеры

Методологии Scrum и Kanban. Как брать задачи. Польза инициативности и ответственности. Таск-трекеры в стиле Kanban. Постановка целей SMART. Технические задания. Пользовательские истории. Сценарии использования.

Урок 3. Agile-разработка. Scrum и Kanban

Ценности гибкой методологии. Scrum (подробно). Kanban. Ошибки внедрения. Культ карго. Микроменеджмент. Зачем нужна прозрачность и как ее обеспечить. Scrum-чат.

Урок 4. Риски и сроки

Риски планирования и управления. Дедлайны и их ценность. Тайм-менеджмент.

Урок 5. Мотивация

Пирамида Маслоу. Три уровня мотивации. Как себя мотивировать? Мотивация по Лебедеву. Притча о собаке. Дисциплина.

Урок 6. Проблемы и решения

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

Урок 7. Наставничество

Управление командами. Почему важно наставничество. Насколько часто приходится программисту быть ментором. Навыки руководства. Делегирование. Цели по SMART. Умение учиться.

Урок 8. Качество продукта

Сырой продукт. Качественный продукт. Быстрый рабочий прототип. Качественный код. Баланс. Отказ от части функционала. Функциональное тестирование. Черный и белый ящик. Eat your own dog’s food.

Урок 9. Написание резюме

Soft skills. Hard skills. Работа над резюме.

Урок 10. Подготовка к собеседованию

Собеседование с HR-менеджером и будущим руководителем.

Урок 11. Карьера в IT-компании. Перспективы

В какие компании стоит устраиваться. Развитие специалиста. Junior, Middle, Senior, Team Lead, CTO. Менеджмент.

Урок 12. Подведение итогов

Обзор достигнутого. Напутствия.

Как стать программистом. 13 уроков.
Пошаговая инструкция по поиску работы

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

Урок 1. Профессия “Программист”

Особенности профессии; часто задаваемые вопросы; востребованность на рынке труда.

Урок 2. Профориентация

Стану ли я успешным программистом? Факторы успеха.

Урок 3. Начинаем составлять резюме

Самое важное - первое впечатление; как назвать должность.

Урок 4. Выбор языка программирования: веб-разработка

Обзор языков для разработки сайтов: HTML, CSS, JavaScript, PHP, Python, Ruby, C#, Java; правильный выбор.

Урок 5. Мобильная разработка. Универсальные языки программирования

Обзор языков: Java, Objective-C, Swift; C#, C++, Python: правильный выбор.

Урок 6. Правила эффективного резюме

Список технологий; портфолио; дипломы и сертификаты; личностные качества. Взгляд технического специалиста и HR.

Урок 7. Поиск работы: что, где, когда

Работа мечты, психологические аспекты; техника запроса.

Урок 8. Собеседование и испытательный срок

Собеседования для программистов: как себя вести, что говорить, к чему прислушиваться; испытательный срок и правила его прохождения.

Урок 9. Фриланс: первые шаги

Обзор площадок для фриланса; особенности регистрации; оформление аккаунта; как выделяться среди большинства исполнителей.

Урок 10. Фриланс: начало работы и поиск заказов

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

Урок 11. Фриланс: выполнение заказа и оплата

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

Урок 12. Специальности в сфере IT

Как проходит разработка в крупных компаниях? Кто такие аналитики, дизайнеры, тестировщики, архитекторы, projectmanager-ы, team-lead-ы и пр.

Урок 13. Карьерная лестница в сфере IT

Как выглядит карьерная лестница в сфере IT? В каких специальностях проще начинать свой путь? Какие есть перспективы развития?

Курс, разработанный совместно с школой EnglishDom, поможет освоить ключевые англоязычные темы, актуальные для начинающих IT-специалистов. Максимум практики и фокус на IT-лексику. На 10 уроках разбирается составление CV, технических заданий и деловых писем, собеседования и переговоры, международное общение при продвижении своего проекта. В живых диалогах на английском студенты закрепят фразы, которые пригодятся в работе разработчикам и тестировщикам, маркетологам и дизайнерам.

Урок 10. Start up

Рассказываем о своем проекте и представляем команду на английском.

C - это достаточно "древний" язык программирования, он сформировался в начале 70-х. Не смотря на это, C - живой язык в том смысле, что он активно применяется в настоящее время. Он был придуман, использовался и используется для написания существенных частей программного кода Unix-подобных операционных систем. Также на нем пишут утилиты, компиляторы и реже прикладные программы. Поэтому C называют системным языком программирования.

Его живучесть можно объяснить тем, что принципы работы операционных систем относительно универсальны, они не подвержены тому прогрессу и разнообразию, которые можно наблюдать в среде десктопного и мобильного ПО, Web-приложений. C не является языком достаточно высокого уровня, он ближе к архитектуре компьютера. В результате программы на C получаются компактными и быстрыми.

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

Подходит ли C для первого знакомства с программированием? Если вы не обучаетесь в вузе по специальности, связанной с IT, то нет. C предполагает понимание организации и принципов работы аппаратного обеспечения, в частности – памяти. Здесь многое делается с помощью указателей, они играют ключевую роль; эта тема достаточно сложная для понимания и обычно не изучается в школе.

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

Среды и компиляторы для программирования на C

Если вы пользуетесь одним из дистрибутивов GNU/Linux, вам подойдет любой текстовый редактор с подсветкой синтаксиса, также понадобятся GCC и терминал.

Существуют редакторы для программистов, включающие различные дополнения, в том числе терминал, просмотр каталогов и др. Например, Geany или Atom.

C – компилируемый язык программирования. В GNU/Linux для получения исполняемых файлов используется GCC – набор компиляторов, включающий в том числе компилятор для C. Чтобы из исходного файла (обычно таким файлам дают расширение *.с) получить исполняемый, надо выполнить в терминале команду примерно следующего вида:

gcc -o hello hello.c

Где gcc - команда, запускающая программу, выполняющую компиляцию и иные действия; -o – ключ, сообщающий, что мы вручную указываем имя исполняемого файла; hello – имя получаемого исполняемого файла; hello.c – имя файла с исходным кодом. Имя исполняемого файла можно не указывать:

gcc hello.c

В этом случае исполняемый файл будет иметь имя по умолчанию a.out.

Для Windows существует свой набор компиляторов – MinGW. Его можно использовать самостоятельно, однако он входит в состав простой среды разработки Dev-C++ , которая может оказаться хорошим выбором для обучения программированию на языках C и С++.

При сохранении выбирайте тип файла "C source files (*.c)". Компиляция и запуск программы выполняется при нажатии клавиши F9. После исполнения программа сразу закрывается и результат невозможно увидеть. Чтобы этого не происходило, прописывают две дополнительные строки: #include и getch(). (Возможно это не актуально для более новой версии Dev-C++.)

"Hello World" в GNU/Linux:

#include \n " ) ; }

"Hello World" в Windows:

#include #include int main () { printf ("Hello World\n " ) ; getch () ; }

С другой стороны, существует большое количество кроссплатформенных сред разработки. Например, Eclipse + модуль CDT, KDevelop, CLion. Последняя платна, выпускается компанией JetBrains – лидером в разработке IDE, однако имеет 30-ти дневный триальный период, чего может быть достаточно для обучения. CLion удобнее других IDE.

"Hello World" на C

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

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

По умолчанию функция main() возвращает тип данных int, поэтому можно не указывать тип возвращаемых данных. Однако компилятор в этом случае выносит предупреждение.

Функция printf() предназначена для вывода данных. Ее назначение аналогично процедуре write() языка Pascal и функции print() в Python. Функция printf() после вывода не выполняет переход на новую строку. Поэтому для перехода используется специальный символ, который обозначается комбинацией \n. Законченные выражения на языке C разделяются точкой с запятой.

В языке C функции ввода-вывода не являются частью языка. Например, в Python нам не надо импортировать никакой модуль, чтобы пользоваться функциями print() и input(). В C же мы не можем просто вызвать функцию printf(), т.к. в самом C ее просто нет. Эту функцию, а также ряд других, можно подключить с помощью заголовочного файла stdio.h. Именно для этого в начале программы прописана строка #include . Include с английского переводится как "включить", а stdio есть сокращение от "стандартный ввод-вывод (input-output)".

В заголовочных файлах (они оканчиваются на *.h) обычно содержаться объявления тех или иных функций. Объявление - это просто описание функции: какие параметры она принимает и что возвращает. Сам код функции (определение) находится не в заголовочном файле, а в библиотеках (других файлах), которые могут быть уже скомпилированы и расположены в системных каталогах. Перед компиляцией программы запускается препроцессор языка C. Помимо прочего он включает в начало файла программы содержимое указанных в ней заголовочных файлов.

Практическая работа

Закомментируйте 1 первую строчку кода программы HelloWorld. Попробуйте скомпилировать программу. Удалось ли получить исполняемый файл? Какое предупреждение выдал компилятор?

1 // - однострочный комментарий на языке C; /* … */ - многострочный комментарий на языке C.

Изучение основ и тонкостей языка программирования C++. Учебник с практическими заданиями и тестами. Хотите научиться программировать? Тогда Вы по адресу - здесь бесплатное обучение программированию. Неважно, имеете ли Вы опыт или нет, эти уроки по программированию помогут Вам начать создавать, компилировать и отлаживать программы на языке C++ в разных средах разработки: Visual Studio, Code::Blocks, Xcode или Eclipse.

Множество примеров и подробных разъяснений. Отлично подойдут как для новичков (чайников), так и для более продвинутых. Объясняется всё с нуля и до самых деталей. Эти уроки (200+) дадут Вам хорошую базу/фундамент в понимании программирования не только на С++, но и в других языках программирования. И это абсолютно бесплатно!

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

За репост +20 к карме и моя благодарность!

Глава №0. Введение. Начало работы

Глава №1. Основы C++

Глава №2. Переменные и основные типы данных в C++

Глава №3. Операторы в C++

Глава №4. Область видимости и другие типы переменных в C++

Глава №5. Порядок выполнения кода в программе. Циклы, ветвления в C++

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

  • Существует три основных типа циклов: FOR, WHILE и DO...WHILE.
  • Применяйте цикл FOR. Это самый популярный и полезный из циклов. Он продолжает выполнять заданную функцию, пока установленные в FOR условия не будут выполнены. Циклы FOR требуют указания трех условий: инициализируемой переменной, условия, которое должно быть выполнено, и способа обновления значения переменной. Если вам не нужны все три этих условия, вам необходимо оставить пробел с точкой с запятой на их месте, в таком случае цикл будет вечным.

    #include int main () { int y ; for ( y = 0 ; y < 15 ; y ++ ){ printf ( "%d \n " , y ); } getchar (); }

    • В вышеуказанной программе начальное значение переменной y равно нулю, а цикл продолжается до тех пор, пока значение переменной остается меньшим, чем 15. Каждый раз, когда на экран выводится новое значение y , оно увеличивается на единицу и цикл повторяется. Как только переменная y окажется равной 15, цикл завершится.
  • Применяйте цикл WHILE. Циклы WHILE проще, чем циклы FOR. В них задается только одно условие и цикл работает до тех пор, пока это условие выполняется. Здесь у вас нет необходимости инициализировать или обновлять переменную, но это можно сделать в основной части кода самого цикла.

    #include int main () { int y ; while ( y <= 15 ){ printf ( "%d \n " , y ); y ++ ; } getchar (); }

    • Команда y++ добавляет единицу к значению переменной y при каждом выполнении цикла. Как только переменная y становится равной 16 (обратите внимание, что цикл должен выполняться до тех пор, пока переменная меньше или равна 15), цикл прекращается.
  • Применяйте цикл DO. ..WHILE . Данный цикл очень полезен в тех случаях, когда операции цикла необходимо провести, по крайней мере, один раз. В циклах FOR и WHILE условие проверяется в самом начале, то есть при получении ложного результата задаваемая условием операция пропускается и не осуществляется. Цикл DO...WHILE проверяет выполнение условий в самом конце, что позволяет выполнить действия цикла минимум один раз.

    #include int main () { int y ; y = 5 ; do { printf ("Цикл работает! \n " ); } while ( y != 5 ); getchar (); }

    • Данный цикл отобразит предусмотренное сообщение, несмотря на то, что проверка условия окажется ложной. Переменная y задана равной пяти, а цикл должен повторяться в том случае, когда переменная не равна пяти, поэтому происходит выход из цикла. Сообщение отражается на экране один раз, так как условие проверяется только в самом конце.
    • Условие WHILE в цикле DO...WHILE следует заканчивать точкой с запятой. Это единственный цикл, который требует наличия в конце точки с запятой.
  • Язык программирования C++

    Последнее обновление: 28.08.2017

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

    Своими корнями он уходит в язык Си, который был разработан в 1969-1973 годах в компании Bell Labs программистом Деннисом Ритчи (Dennis Ritchie). В начале 1980-х годов датский программист Бьерн Страуструп (Bjarne Stroustrup), который в то время работал в компании Bell Labs, разработал С++ как расширение к языку Си. Фактически вначале C++ просто дополнял язык Си некоторыми возможностями объектно-ориентированного программирования. И поэтому сам Страуструп вначале называл его как "C with classes" ("Си с классами").

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

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

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

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

    Основные этапы развития

    В 1979-80 годах Бьерн Страуструп разработал расширение к языку Си - "Си с классами". В 1983 язык был переименован в С++.

    В 1985 году была выпущена первая коммерческая версия языка С++, а также первое издание книги "Языка программирования C++", которая представляла первое описание этого языка при отсутствии официального стандарта.

    В 1989 была выпущена новая версия языка C++ 2.0, которая включала ряд новых возможностей. После этого язык развивался относительно медленно вплоть до 2011 года. Но при этом в 1998 году была предпринята первая попытка по стандартизации языка организацией ISO (International Organiztion for Standartization). Первый стандарт получил название ISO/IEC 14882:1998 или сокращенно С++98. В дальнейшем в 2003 была издана новая версия стандарта C++03.

    В 2011 году был издан новый стандарт C++11, который содержал множество добавлений и обогащал язык С++ большим числом новых функциональных возможностей. После этого в 2014 году было выпущено небольшое добавление к стандарту, известное также как C++14. И еще один ключевой релиз языка намечен на 2017.

    Компиляторы и среды разработки

    Для разработки программ на С++ необходим компилятор - он транслирует исходный код на языке С++ в исполняемый файл, который затем можно запускать. Но в настоящий момент есть очень много различных компиляторов. Они могут отличаться по различным аспектам, в частности, по реализации стандартов. Базовый список компиляторов для С++ можно посмотреть в википедии . Рекомендуется для разработки выбирать те компиляторы, которые развиваются и реализуют все последние стандарты. Так, на протяжении всего руководства преимущественно будет использоваться свободно распространяемый компилятор g++ , разработанный в рамках проекта GNU.

    Также для создания программ можно использовать интегрированные среды разработки IDE, такие как Visual Studio, Netbeans, Eclipse, Qt и т.д.