10 класс, 2006-2007 учебный год

Второе полугодие

24.05.2007, Двадцать девятое занятие

Последнее штатное занятие в году. Принимал задания.

10.05.2007, Двадцать восьмое занятие

Спросил «А нет ли вопросов?», разъяснил про два оставшихся занятия и стал принимать программы.

26.04.2007, Двадцать седьмое занятие

Спросил «А нет ли вопросов?», разъяснил все непонятное и взялся принимать программы. Домашнего задания не задал.

19.04.2007, Двадцать шестое занятие

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

Рассказал про ключевое слово «static» в трех его ипостасях:

И рассказал про то, что все глобальные объекты, которые не экспортируются наружу в качестве интерфейса, должны скрываться посредством «static».

12.04.2007, Двадцать пятое занятие

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

Рассказал про битовые операции AND, OR, XOR, NOT и битовые сдвиги вправо и влево. Научились выделять конкретный бит из байта, а также устанавливать этот бит в 1 или 0 и инвертировать.

05.04.2007, Двадцать четвертое занятие

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

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

22.03.2007, Двадцать третье занятие

Рассказал про односвязные списки двух примерах:

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

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

15.03.2007, Двадцать второе занятие

Рассказал про структуры, типовую застройку и жильцов по-умолчанию. В-основном, конечно, про структуры: объявление самого типа данных, объявления переменных типа «структура», присваивание, взятие адреса, операторы «.» и «->», действие оператора sizeof.

01.03.2007, Двадцать первое занятие

Продолжил (и даже почти закончил) рассказывать про файловый ввод/вывод: изучили функции fprintf/fscanf, fgetc/fputc, fgets/fputs и feof. Рассказал про константу EOF и про то, почему fgetc возвращает int, а не char.

22.02.2007, Двадцатое занятие

Рассказывал про файловый ввод/вывод: описатель FILE*, функции fopen()/fclose() и fseek()/ftell().

Еще рассказал про аргументы командной строки: int argc и char* argv[]. Упомянул, что при объявлении многомерного массива в качестве параметра функции старшая размерность может быть опущена.

15.02.2007, Девятнадцатое занятие

Повторил (кратенько, минут на 40) то, что рассказывал Роман Игоревич. Добавил некоторые слова про графы и гамильтоновы циклы. Принимал задание прямо на уроке, поскольку уроков было всего четыре. Но дополнительные занятия тоже были.

Ничего не задал. Совсем! Старею...

08.02.2007, Восемнадцатое занятие

Не поверите — опять уезжал. Роман Игоревич наставлял учащихся уже в который раз. Был продолжен рассказ про рекурсивные функции на примере задач про обход доски конем и расстановки N ферзей.

01.02.2007, Семнадцатое занятие

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

25.01.2007, Шестнадцатое занятие

Был в CERN, поэтому вместо меня учил Роман Игоревич. Он рассказал про арифметику указателей, функции malloc и free, тип «void*» и его специфику и напоследок немного поглумился, показывая конструкции типа «(*(*x())[])()».

18.01.2007, Пятнадцатое занятие

Учились в школе. Рассказывал про указатели, оператор разименования, передачу значений по значению и по указателю. Показал, как реализуется функция swap.

Первое полугодие

21.12.2006, Четырнадцатое занятие

Ничего не рассказывал — принимал задание. Долго принимал. Часов до шести. Никто не ушел обделенным, но некоторые, возможно, ушли обиженными.

14.12.2006, Тринадцатое занятие

Рассказал про алгоритм Евклида поиска наибольшего общего делителя пары чисел. Школьники даже доказывали правильность формул алгоритма, а я — его конечность. После этого рассказывал про функции: прототипы, объявление тел и вызов этих самых функций. Ещё рассказал про аргументы функций, передачу параметров по значению и о том, что делает компилятор, если функцию вызывают, а прототипа ещё не подвезли. Принимал задачи ровно до трех часов, поэтому многие сдать не успели.

07.12.2006, Двенадцатое занятие

Рассказывал про ASCII-таблицу и ASCIIZ-строки. Демонстрировал функции strlen(), strcpy() и strncpy(): (надеюсь) обучил использованию strncpy() вместо strcpy(). Рассказал про спецификатор формата «%s» для printf() и scanf(). Вовремя вспомнил, что про прототипы функций я ещё не рассказывал, хотя на доске их уже вовсю рисовал: уже хотел упомянуть уши, в которые влетает и вылетает. Немного подумав, решил, что так даже лучше: «Repetitio est mater studiorum». Упоминал про русские кодировки, иероглифы и Unicode. И принимал, принимал, принимал задачи… Как говорится, «наш бар работает до последнего человека».

30.11.2006, Одинадцатое занятие

Рассказал про операторы break и continue и конструкцию switch. Немного поговорили про то, обязателен ли break при использовании switch. Принимал домашнее задание на уроках, дополнительных занятиях и ещё 47 минут сверх всяких норм. Надеюсь, обиженым ни ушел никто.

23.11.2006, Десятое занятие

Обсуждали организацию (статического) одномерного массива с точки зрения оперативной памяти. Рассказал про многомерные массивы и про общую формулу для смещения заданного элемента относительно начала массива. Также обучающимся досталось знаний про размерность объектов: они теперь в курсе, что график функции на двумерном листе бумачи чаще всего имеет единичную размерность.

16.11.2006, Девятое занятие

Рассказывал про модификатор «const», глобальные и локальные переменные и директиву препроцессора «#define». Также поведал про одномерные массивы, индексы, оператор «[]» и способы инициализации массива при его объявлении. Упомянул про адрес i-го элемента массива: &(arr[i]).

09.11.2006, Восьмое занятие

Не болел, но меня опять заменял Роман Игоревич. Он рассказывал про оператор взятия адреса объекта «&», немножко про тип данных «указатель на объект», про тип «char» и про функцию scanf(). Я в это время бегал вокруг отделочника, который пытался заделать пластиковую дверь на балконе: закончил бегать около десяти вечера, в результате чего не успел даже на родительское собрание. Итог: все равно дует. Будем разбираться.

26.10.2006, Седьмое занятие

Объяснял про циклы for и while. Кое-кому досталось объяснений про комплексные числа. Особо настойчивые получили объяснения про «goto» и «break». Всем досталось объяснений про экспоненту, ряд Тейлора и остаточный член. Считаю большим педагогическим достижением, что при рассказе из всех групп заснул только один человек. Это успех!

12.10.2006, Шестое занятие

Объяснял про условия, логические операторы «И» и «ИЛИ», оператор отрицания «НЕ» и конструкцию «if»—«else if»—«else».

05.10.2006, Пятое занятие

Пытался болеть, но, как говаривал Марк Твен, «слухи о моей смерти сильно преувеличены». Вместо меня преподавал Роман Игоревич: объяснял «Hello, world!», рассказывал про переменные и их типы, а также про арифметические операции, автоматическое приведение типов и функцию printf.

28.09.2006, Четвертое занятие

Показал классу «Hello, world!», бегло объяснил про printf. Учились работать в редакторе GNU Nano и компилировать программы.

21.09.2006, Третье занятие

Урок был, но что там рассказывалось — не помню. Пора лечить склероз. Вспоминаю только что про компьютеры рассказывал. Или не про них? Или не было урока? Неясно…

14.09.2006, Второе занятие

Писали первый тест на внимательность. Продолжал объяснять про устройство компьютера.

07.09.2006, Первое занятие

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