Записи
семинаров 1 курса зимой/весной 2022г
1 Семестр
02.09.21
Введение.
Работа со связкой Far +
gcc.
Компиляция, сборка, запуск программы. Все, необходимое для написания программы,
ввода двух чисел и вывода их на экран:
#include
<stdio.h>
#include
<stdlib.h>
#include
<math.h>
int main(void)
{int a,b,c;
printf("a="); scanf("%d",&a);
printf("b="); scanf("%d",&b);
c=a+b;
printf("%d+%d=c=%d\n",a,b,c);
return
0;
}
Пожелания
к следующему разу :
-
установить у себя Far и
gcc (с моего сайта),
-
прочитать/прослушать информацию для первокурсников с сайта (в частности, как
создать командный файл wgcc),
-
создать, скомпилировать, создать и запустить простой пример программы на языке
С.
21.09.21
Массивы.
Работа с массивами фиксированного размера и размера, задаваемого в некоторой
переменной. Стек и куча. Понятие системного стека Операции со стеком.
Ввод
массива из файла, в котором размер массива задан явно, с отведением под него
памяти. Видео.
23.09.21
Циклы.
Оператор switch и случаи оправданности его
использования. Использование break, continue,
goto.
Логические операции и, или, не.
Немного про использование точки с запятой. Операторы ++. Видео.
30.09.21
Макроопределения.
Оператор #define. Использование IN и OUT. Неявные преобразования типов.
Все базовые типы. Что можно и что нельзя помещать в include-файлы. Видео.
05.10.21
Массивы
и указатели. Отличия. Символьные переменные. Строки. Строковые константы. Видео.
07.10.21
Время
жизни и область видимости переменных. Глобальные и локальные переменные в языке
C.
Пример функции определения простоты целого числа. Видео.
14.10.21
Обоснование
запрета на массивы (в виде локальных автоматических переменных), размер которых
задается в виде переменной. Процесс выполнения программы. Простейший вариант
цикла выполнения программы. Видео.
19.10.21
Работа с
массивами. Модельная задача на работу с массивами. Реализация ввода массива,
заданного в одном из двух возможных форматов, из файла. Видео.
22.10.21
Работа с
простыми двумерными массивами. Вычисление детерминанта матрицы из целых чисел. Видео.
28.10.21
Кеш-память. Представление целых чисел в
ЭВМ (Little/Big-endian, дополнительный код). Видео.
02.11.21
Работа с
битовыми операциями. Подходы к решению пары принципиальных задач. Видео.
11.11.21
Сортировки.
Сортировки пузырьком и слиянием с рекурсией. Теоремы о времени работы и
пространственной сложности. Разница математического и программистского подходов
к теоремам о пространственной сложности алгоритмов. Видео.
30.11.21
Вещественные
числа с плавающей точкой (примитивный подход). Точность представления
вещественных чисел с плавающей точкой. Как правильно интерпретировать равенство
вещественных чисел? Основные элементарные концепции вычислительной
геометрии. Видео.
2 Семестр
12.02.2022.
Четыре вида двумерных массивов. Видео1 и Видео2.
19.02.2022.
Функции создания двумерного массива, красивой распечатки двумерного
массива (несколько слов про строки), удаления из
двумерного массива строки и столбца. Видео.
26.02.2022.
Общие правила оформления программ. Потоки ввода/вывода и дескрипторы
файлов. Перенаправление ввода/вывода. Видео.
Работа со строками. Пример. Видео.
05.03.2022.
Запятая в роли разделители и оператора. О правилах хорошего тона в
программировании (работа с табуляциями в текстовых редакторах,
отведение/очистка памяти, использование size_t, использование goto). Ввод/вывод long long int в компиляторе gcc. Сравнение строк,
совместимое со сравнением текстового представления чисел. Видео.
12.03.2022.
Работа со строками. Разбор строки с помощью sscanf() Видео.
Реализация аналога fgets() для ввода строк неограниченной длины. Видео.
19.03.2022.
Ввод криволинейных массивов и работа с ними. Видео.
26.03.2022.
Разбор отдельных задач. Windows: назначение расширению
выполняемой программы (assoc/ftype). Начало работы в Python.
Python. Модель памяти. Типы
переменных. Считывание данных из файла. Исключения. Видео1. Видео2.
16.04.2022.
Работа со структурами. Примеры: работа с вектором целых чисел, работа со
структурой, описывающей студента.
07.05.2022.
Двунаправленные списки. Определение. Ссылочная реализация.