Лекционные/семинарские материалы
по курсу
Работа на ЭВМ и программрование
Староверов Владимир Михайлович
МГУ им.М.В.Ломоносова. Мех-мат ф-т. 3 поток.

Приглашение на конференцию Zoom; пароль 111111 (для проведения лекций/семинаров в online-формате в случае проблем с корпоративным мех-матовским zoom) В случае проблем не стесняйтесь и звоните по телефону/пишите в WhatsApp +7-916-118-78-10 /на почту .
Пожалуйста, в случае сдачи задач по почте пишите В ТЕМЕ письма номер группы, фамилию, номера задачи по порядку сдачи и по списку. Мне тяжело ориентироваться в сотнях писем!!!
Пожалуйста, вкладывайте в каждое письмо текущий вариант сдаваемой задачи. Мне тяжело ориентироваться в сотнях писем!!!

Установочные файлы для gcc под Windows и FAR (32- и 64-битные версии), в которых необходимо компилировать присылаемые программы.
Давайте компилировать программы с ключами, максимально приближающими уровень замечаний/ошибок к уровню замечаний/ошибок в дисплейном классе.
Командные файлы для компиляции на gcc на C и на C++ для Windows (*.bat) и для Linux (без расширения) можно найти по ссылке. Весьма желательно при компиляции программ добавлять ключ -O2 (максимальная оптимизация). При использовании этого ключа часть кода программы выполняется на этапе компиляции, что иногда помогает отловить в программе некоторые ошибки.
Для Linux не забудьте после копирования командного файла дать ему права на выполнение: chmod a+x wgcc.
Некоторые антивирусы (например, Касперский) блокируют запуск файлов, скаченных из интернета, не выдавая никаких предупреждений. В этом случае уберите блокировку в свойствах файла.


Все вопросы можно задавать по адресу staroverovvl@yandex.ru

Пересдачи. Предварительно, очередная пересдача Работы на ЭВМ для 1 курса состоится 21.02 в 16.45 в ауд. 445, 446. Для 2 курса - 22.02 (третий и четвертый семестры) и 29.02 (третий семестр) в 16.45 в ауд. 445, 446.

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

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

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

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


Правила сдачи задач в моей группе:
Семинарские занятия сводятся к сдаче задач + окололекционные занятия в мигающую пару, на которой я буду рассказывать язык С/C++ и вещи, связанные с решением задач. Далее будет выложен график сдачи задач. Задачи 1-6 можно сдавать по почте, но только если Вы их сдаете в рамках установленных сроков. После установленных сроков задачи можно сдавать только на семинарах лично семинаристу (мне, например). При этом семинарист имеет право задавать любые вопросы по задаче и давать некоторые дополнения к задаче в качестве штрафа за несданную вовремя задачу. Задачи 7-9 можно сдавать только на семинарах.
Задачи можно сдавать только по порядку. Т.е. нельзя пытаться сдать задачу до того, как сдана предыдущая задача. Пожалуйста, не присылайте мне более одной задачи, иначе легко запутаться.
Предполагается, что сдача зачета сводится к сдаче всех задач, заданных в семестре + сдача некоторого единого (автоматизированного) зачета для всего курса. Если Вы не успеваете сдать требуемое количество задач в семестре, то на официальном зачете придется решать задачи, аналогичные семестровым задачам, чтобы закрыть семестровые задачи. Единый зачет сдается одновременно для всего курса и сводится к решению некой типовой задачи за ограниченное время.
При сдаче задач у преподавателей создается база данных по всем сданным задачам и происходит сравнение сдаваемой задачи с уже сданными задачами. Попытка сдачи уже сданной кем-то другим задачи карается жесткими административными санкциями.


Семинары 1 курс

Краткая инструкция для первокурсников по установке нужных программ и написанию первой программы.
Записи отдельных семинаров 2-го семестра за 2022г. 2023/2024гг. Если кому интересно, то можно посмотреть записи старых Семинаров 1-го курса 2021/2022 годов (темы и видео).
Семинары 1-го курса 2023/2024гг.
Установочные файлы для gcc и FAR (32- и 64-битные версии), необходимые для работы первокурсников.
Проверка утечек памяти для программ на языке С. Для проверок утечек памяти следует при сборке программы добавить к списку файлов malloc.c. Работает для выложенного gcc и для последней версии компилятора Microsoft.
Примеры программ и правила оформления задач для первого курса
Короткое описание работы со строками в языке С. Примеры.
Задача #1 для первого курса мех-мат ф-та по курсу "Работа на ЭВМ и программирование" (второй семестр).
Задача #2 для первого курса мех-мат ф-та по курсу "Работа на ЭВМ и программирование" (второй семестр).
Задача #3 для первого курса мех-мат ф-та по курсу "Работа на ЭВМ и программирование" (второй семестр).

Задачи 4, 5, 6 = задачи на Python. Формулировки брать из задач на последовательности с первого семестра.
Задача #7 для первого курса мех-мат ф-та по курсу "Работа на ЭВМ и программирование" на простые структуры/классы (второй семестр).
Задача #8 для первого курса мех-мат ф-та по курсу "Работа на ЭВМ и программирование" на сложные структуры/классы (второй семестр).
Работа со структурами/классами. Видео.

Список примеров дополнительных задач на работу с BMP. Если кто-то придумает свою адекватную задачу, то с удовольствием рассмотрю ее для добавления в этот список.

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


 

Семинары 2 курс

Основные темы четвертого семестра. Язык С++: наследование, фабрики, использование STL и OpenMP. Python: работа с BMP.
В конце каждого месяца (февраль, март, апрель) предполагаются контрольные работы, которые будут учитываться при постановке зачета.
К студентам, не сдавшим свои задачи в срок будут применяться санкции (сдача задач только на семинарах, выдача дополнительных задач).

Проверка утечек памяти для программ на языке С++. Для проверок утечек памяти следует при сборке программы добавить к списку файлов malloc.cpp. Работает только для выложенного gcc! При компиляции нельзя задавать ключи оптимизации. Если требуется узнать, в каком месте отведена неочищенная память, то в cpp-файлы программы надо добавить include-файл из архива.
Для упрощения жизни при создании больших программ под g++ можно 
перенести программу из-под g++ в среду Microsoft Visual Studio под Windows с возможностью отслеживания утечек памяти.
Записи отдельных старых и новых семинаров 4-го семестра + отдельные старые лекции.
Задача #1 для второго курса мех-мат ф-та по курсу "Работа на ЭВМ и программирование" (четвертый семестр).
Контрольная работа на наследование (ровно на одну пару; будет учитываться на зачете).
Задача #2 для второго курса: все то же самое, но с использованием фабрик и STL (для структур данных и циклов).
Задача #3 для второго курса: все то же самое, что и в первой задаче, + групповые операции с векторами (например, сумма n векторов) + перед циклами используются инструкции OpenMP + сравнить время работы.
Контрольная работа на OpenMP (ровно на одну пару; будет учитываться на зачете).
Задача #4 для второго курса: простая задача на работу с BMP для Python.. Напоминаю необходимость составления отчета в LaTeX; видео с кратким описанием LaTeX есть в записях семинаров.
Задача #5 для второго курса: сложная задача на работу с BMP для Python. Задачу следует выбирать из списка оставшихся задач, поэтому перед началом работы номер задачи надо согласовать со мной!
Контрольная работа по работе с BMP-файлами в Python (ровно на одну пару; будет учитываться на зачете).
Пример #1 для четвертого семестра. Виртуальные функции для простых классов. Чисто виртуальная функция в базовом классе + оператор сложения для базового класса.
Пример #2 для четвертого семестра. Виртуальные функции для простых классов с фабриками. Чисто виртуальная функция в базовом классе + фабрики + оператор сложения для базового класса.
Пример #3 для четвертого семестра. Виртуальные функции для сложных классов. Чисто виртуальная функция в базовом классе + оператор сложения для базового класса.

Пример вычисления времени выполнения куска программы (работает в новом Microsoft C++ и в g++).
Несколько слов об интерполяции функций нескольких переменных.
Краткая инструкция по созданию векторных графических файлов в EPS-формате.
Примерный план сдачи задач для второго курса (четвертый семестр)

Таблица с отметками сданных задач.

Задачи 1-3 можно сдавать по почте только в случае, если Вы укладываетесь в сроки, определенные данным планом. Если Вы не уложились в эти сроки, то сдавать задачи надо лично семинаристу на семинарах. Задачи 4-6 можно сдавать только на семинарах. При этом семинарист имеет право задавать любые вопросы по задачам и вносить дополнения в задачи в качестве штрафа на просроченную сдачу задач.
Задачи можно сдавать только по порядку. Т.е. нельзя присылать задачу до того, как сдана предыдущая задача.
При сдаче задач у преподавателей создается база данных по всем сданным задачам и происходит сравнение сдаваемой задачи с уже сданными задачами. Попытка сдачи уже сданной кем-то другим задачи карается жесткими административными санкциями.


 

Пособие по программированию в libX11
Краткое описание простейших программ, демонстрирующих программирование под XWindow
Пример1
Пример2
Пример3
Пример4
Пример5
Пример6
Пример7
Пример8
Пример9


Лекции на мех-мат ф-те

Реальные темы, обсуждаемые в курсе "Работа на ЭВМ и программирование" на мех-мат ф-те + некоторые семинары и критерии выставления оценки на экзамене. Внимание! Видео нормально смотрятся в браузерах Chrome, Edge, Internet Explorer. Видео не смотрятся в браузерах Safari, Mozilla Firefox. Все претензии к производителям этих браузеров. В мобильной версии браузера Mozilla Firefox после долгого нажатия на видео можно выбрать другой плеер и видео можно будет смотреть. Сравнить лекции этого года с предыдущими (и примерно понять, что нас ожидает) можно по ссылке. Также доступны темы лекций за 2020, 2021, 2022 гг.
Лекции по курсу "Работа в ОС UNIX" (ну очень старые...)
Лекции по курсу Работа на ЭВМ и программирование" . Увы лекции весьма устарели морально. Текущие лекции могут существенно отличаться от этого текста. Но пересечения весьма велики и текст может оказаться весьма полезен.
Вопросы/ответы.
Текст программ сортировки, написанных на лекциях.
Дополнения к курсу "Работа на ЭВМ и программирование." Некоторые темы из данного текста войдут в основной курс.
Краткая справка по Python для работы с последовательностями, массивами и BMP-файлами.
Предельный минимум по OpenMP для первого и второго курсов.
Примеры программ, написанные на лекциях в 2018г. Сортировки, реализации вектора, реализации стека, реализация очереди, реализация приоритетной очереди, реализции L2-списков.
По просьбе студентов выкладываю примеры программ, написанных на лециях (сентябрь 2015г.). Аккуратно написанная программа (под VisualStudio) поиска максимума последовательности целых чисел: основная функция , решающая задачу, include-файл с описанием основной функции и функция main. Картинка одного большого файла с функциями сортировки и с несколькими функциями main(). Наброски некоторых реализаций стека. Наброски реализаций L1- и L2- списков, а также списка с массивом узлов, задающим список свободного места.
По просьбе студентов выкладываю примеры программ , написанных на лециях (ноябрь 2016г.).