«Основы программирования на языке С++»

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

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

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

Ученику мысленно следует предсказать, предвидеть результаты работы. Наступает фаза или экспериментального опровержения, или экспериментального подтверждения. Т.е. деятельность при разработке программ характеризуется контролируемостью, обоснованностью и целенаправленностью. Оценка своих действий – непременный атрибут программирования. На каждом шаге ученик имеет возможность осознать, насколько правильно принятое решение, насколько верен ход рассуждений, все ли факты учтены при принятии решения и т.д. Деятельность при программировании можно назвать направленной на получение желаемого результата. Она не просто активна, она сверхактивна, и мы видим возможность реализации концепции развивающего обучения в полном объеме.

Задачи курса:

Обучающие:

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

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

- научить распознавать необходимость применения той или иной алгоритмической конструкции при решении задач;

- научить организовывать данные для эффективной алгоритмической обработки;

- научить разрабатывать алгоритмы и реализовывать их на языке программирования;

- научить осуществлять отладку и тестирование программы.

Развивающие:

- формировать новый тип мышления – операционный, который направлен на выбор оптимальных решений;

- предоставление возможности узнать новое в области компьютерного программирования;

- формирование представления о роли компьютерного программирования в развитии общества, изменении содержания и характера деятельности человека.

Воспитательные:

- повышение общекультурного уровня обучающихся;

 

- выделение и раскрытие роли информационных технологий и компьютеров в развитии современного общества;

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

- формирование эмоционально-ценностного отношения к миру, к себе;

- воспитание трудолюбия, инициативности и настойчивости в преодолении трудностей.

Учебная программа разработана для разновозрастных групп от 13 до 18 лет (7 – 11 класс).

Общий объём времени обучения, включая теоретические, практические занятия и контрольную работу составляет 68 академических часов. Обучение осуществляется в течение одного учебного года.

Педагоги

Иванов Александр Алексеевич

Содержание программы

1. Содержание изучаемого курса

Раздел 1. Основы C++ ( 24 часа)

Тема 1. Повторение изученного материала. Техника безопасности.

 

Тема 2. Локальная область видимости

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

 

Тема 3. Ключевые слова и идентификатор

Список всех ключевых слов в C++ (включая C++17). Два специальных идентификатора: override и final. Идентификаторы. Польза комментариев в коде

 

Тема 4. Операторы

Литералы. Унарные операторы. Бинарные операторы. Тернарные операторы

 

Тема 5. Базовое форматирование кода

Основные рекомендации. Разрыв/перевод строки. Исключения читабельность и логичность кода.

 

Тема 6. Предварительное объявление и прототип функции

Предыстория. Прототипы функций и предварительное объявление. Предварительно объявили, но не определили. Объявление vs. Определение

 

Тема 7. Многофайловые программы

Добавление файлов к проекту в Visual Studio 2017. Добавление файлов к проекту в Code::Blocks. Добавление файлов к проекту в GCC/G++. Пример многофайловой программы.

 

Тема 8. Заголовочные файлы. Директивы препроцессора

Заголовочные файлы из стандартных библиотек C++. Пишем свои собственные заголовочные файлы. Угловые скобки (<>) vs. Двойные кавычки («"). Почему iostream пишется без окончания.h? Можно ли записывать определения в заголовочных файлах? Директива #include. Директива #define. Макросы-объекты с substitution_text. Макросы-объекты без substitution_text. Условная компиляция. Область видимости директивы #define. Советы.

 

Тема 9. Header guards. Конфликт имён и std namespace

Проблема дублирования определений. Header guards. #pragma once. Оператор разрешения области видимости. std namespace. Пример конфликта имён.

 

Тема 10. Разработка ваших первых программ

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

 

Тема 11. Отладка программ: степпинг и точки останова. Отладка программ: стек вызовов и отслеживание переменных

Типы ошибок. Отладчик. Степпинг. Команда «Шаг с заходом». Команда «Шаг с обходом». Команда «Шаг с выходом». Команда «Выполнить до текущей позиции». Команда «Продолжить». Точки останова. Отслеживание переменных. Окно просмотра. Стек вызовов.

 

Тема 12. Итоговый тест

 

Раздел 2. Переменные и основные типы данных в C++ (14 часов)

Тема 13 Размер типов данных и оператор sizeof Тип данных void

Адреса и переменные. Фундаментальные типы данных в С++. Определение переменных. Инициализация переменных. uniform инициализация. Присваивание переменных. Определение нескольких переменных. Где определять переменные? Использование Типа данных void.

 

Тема 14. Целочисленные типы данных Фиксированный размер целочисленных типов

Целочисленные типы данных. Определение целочисленных переменных. Диапазоны значений и знак целочисленных типов данных. Что используется по умолчанию: signed или unsigned? Переполнение. Примеры переполнения. Деление целочисленных переменных.

 

Тема 15. Типы данных с плавающей точкой

Типы данных с плавающей точкой. Экспоненциальная запись. Конвертация чисел в экспоненциальную запись. Точность и диапазон типов с плавающей точкой. Ошибки округления. nan и inf.

 

Тема 16. Логический тип данных

Переменные логического типа данных. Использование логического типа данных в ветвлениях if. Возвращаемые значения логического типа данных.

 

Тема 17. Символьный тип данных

Тип данных char. Вывод символов. Оператор static_cast. Ввод символов. Размер, диапазон и знак типа сhar. Управляющие символы. Что использовать: ‘\n’ или std::endl? Другие символьные типы: wchar_t, char16_t и char32_t. В чём разница между одинарными и двойными кавычками при использовании с символами?

 

Тема 18. Литералы и магические числа. const, constexpr и символьные константы

Литеральные константы. Литералы в восьмеричной и шестнадцатеричной системах счисления. Бинарные литералы и разделитель цифр в C++14. Магические числа. Что с ними не так? Константы. Время компиляции и время выполнения. Спецификатор constexpr. Имена констант. Символьные константы. Использование символьных констант в программе.

 

Тема 19. Итоговый тест

 

Раздел 4. Операторы в C++ (12 часов)

Тема 20 Приоритет операций и правила ассоциативности

Правила ассоциативности. Таблица приоритета и ассоциативности операций

 

Тема 21. Арифметические операторы

Унарные арифметические операторы. Бинарные арифметические операторы. Деление целых чисел и чисел типа с плавающей точкой. Использование static_cast в операциях деления. Деление с остатком. Отрицательные числа в операциях деления до C++11. Арифметические операторы присваивания. Где оператор возведения в степень

 

Тема 22. Инкремент, декремент и побочные эффекты. Sizeof, запятая и условный тернарный оператор

Инкремент, декремент, префиксы и побочные эффекты. Оператор sizeof. Оператор запятая. Условный тернарный оператор

 

Тема 23. Операторы сравнения

6 операторов сравнения. Сравнение чисел с плавающей точкой. Поиск алгоритмов для нужной ситуации.

 

Тема 24. Логические операторы: И, ИЛИ, НЕ

Логический оператор НЕ. Логический оператор ИЛИ. Логический оператор И. Короткий цикл вычислений. Использование операторов И/ИЛИ. Законы Де Моргана.

 

Тема 25. Конвертация чисел из двоичной системы в десятичную и наоборот

Представление чисел в двоичной системе. Конвертация чисел из двоичной системы в десятичную. Способ № 1: Конвертация чисел из десятичной системы в двоичную. Способ № 2: Конвертация чисел из десятичной системы в двоичную. Сложение двоичных чисел. Числа signed и метод «two’s complement». Почему важен тип данных?

 

Тема 26. Итоговый тест

Раздел 4. Циклы в С++

Тема 27. Операторы управления потоком выполнения программ

Знакомство с операторами.

 

Тема 28. Операторы условного ветвления if/else

Знакомство с операторам if/else, условия использования.

 

Тема 29. Оператор switch

Знакомство с операторам switch, условия использования, эффективное использование.

 

Тема 30. Оператор goto

Знакомство с операторам goto, условия использования, эффективное использование.

 

Тема 31. Цикл while

Знакомство с циклом while, условия использования, эффективное использование.

 

Тема 32. Цикл do while

Знакомство с циклом do while, условия использования, эффективное использование.

 

Тема 33. Цикл for

Знакомство с циклом for, условия использования, эффективное использование.

 

Тема 34. Операторы break и continue

Знакомство с оператором break и continue, условия использования, эффективное использование.

 

Тема 35. Итоговый тест.

 

Цели программы

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

Результат программы

В результате освоения курса обучающийся должен:

знать:

- этапы решения задачи на компьютере;

- типы данных;

- базовые конструкции изучаемого языка С++;

- принципы структурного и модульного программирования средствами языка С++;

- концепции объектно-ориентированного программирования средствами языка С++;

уметь:

- работать в среде программирования;

- реализовывать построенные алгоритмы в виде программ на конкретном языке программирования;

- работать с файловой системой операционных систем;

- осуществлять отладку и тестирование программы;

- использовать ресурсы языка для программирования графического интерфейса пользователя;

- использовать приобретенные знания и умения в практической деятельности и повседневной жизни для:

- эффективной организации индивидуального информационного пространства;

- автоматизации коммуникационной деятельности;

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

 

Материально-техническая база

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