Лекция 1: Введение

Введение

О курсе

Структура занятий:

Вопросы в начале каждой пары (вопросы заранее на pr1@)

Самостоятельная работа c MOOC

Об инструментах:

IDE vs simple tools

default toolchain

editor, compiler, linker

gcc

git (кратко)

make

Модель вычислений в архитектуре Фон-Неймана

Обзор парадигм/стилей программирования

Императивный

Декларативный

Функциональный

Исполнение программ. Компиляция и интерпретация.

О языке C. Процесс компиляции программы.

Введение в синтаксис. Составные элементы программы. Hello World.

Справочные материалы:

KRC Керниган, Ритчи. Язык программирования Си

KRU Керниган, Пайк. Программное окружение Unix

GIT С.Чансон. Pro git

Домашнее задание:

KRC главы 1-3. Изучить, подготовить вопросы.

GIT 1.1–1.3, 2.*

Лекция 2

вопросы и ответы

getchar/putchar, EOF

sleeps

отличия С от С++

K&R 1-3 Обзор, примеры

RCS, git

Типы и их представление в памяти

Начальные сведения об указателях

Консольный ввод-вывод

Полезная информация

Введение в Арх ЭВМ и ОС (Модуль 1.2 Бинарные числа и логические операции) – Для доступа требуется войти под свои аккаунтом Stepik

Лекция 3

Практические задачи ввода вывода

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

Ввод форматированных данных через scanf, используя несколько параметров разного типа в сроке. Например «%s %d %x». Обратить внимание на вводы строк: адрес первого элемента массива, адрес строки.

Пример на обработку возвращаемых значений printf/scanf

Демонстрация ввода массива (из файла с помощью перенаправления). Вычисление значения по всем элементам, например суммы

Строки как массивы символов с нулевым символом на конце

Ввод строк. Использование fgets вместо потенциально опасных для строк gets и scanf

Построение диалоговой системы (Цикл: приглашение системы и вопрос → ввод пользователем ответов → интерпретация ответа)

Демонстрация последствий использования gets (модификация других переменных вследствие переполнения буфера)

Примеры на печать и чтение из/в строки (функции sscanf, sprintf)

Интерпретация кодов символов. Например программа считывает из стандартного потока бинарный набор байт и печатает его побайтно в виде 16-ричных кодов. Затем в виде целых беззнаковых short. Бинарным потоком может являться сам исподняемый файл, т.е. ./a.out <./a.out Также для справки см. hexdump -C

Тема 4.

Исполнение программ. Компиляция и интерпретация.

Обзор парадигм/стилей программирования

Императивный

Декларативный

Функциональный

Массивы

Функции и рекурсия

Снова про указатели

Лекция 5

Отправка решений на pr1@ ( тема письма «Фамилия Имя, группа, решение 01» )

Результаты прохождения stepik

Анонс дополнительных занятий

Передача параметров/возврат значений более детально

Сравнение чисел с плавающей точкой с определенной точностью.

Лекция 6

Стек

Динамическая память

Передача указателей в функцию

Операции со строками

Лекция 7

опрос

экзамены

доп занятия

контрольная

объединения

рекурсия и циклы

Примеры с лекции

https://github.com/moevm/pr1-samples/blob/master/2016-11-03-20-58.18/main.cpp

Лекция 8

Объединения и массивы

Понятие файла

Примеры с лекции

https://github.com/moevm/pr1-samples/blob/master/2016-11-03-20-34.11/main.cpp