=== Лекция 1: Введение ===
* Введение
* О курсе
* Структура занятий:
* Вопросы в начале каждой пары (вопросы заранее на pr1@)
* Самостоятельная работа c MOOC
* Об инструментах:
* IDE vs simple tools
* default toolchain
* editor, compiler, linker
* gcc
* git (кратко)
* make
* Модель вычислений в архитектуре Фон-Неймана
* Обзор парадигм/стилей программирования
* Императивный
* Декларативный
* Функциональный
* Исполнение программ. Компиляция и интерпретация.
* О языке C. Процесс компиляции программы.
* Введение в синтаксис. Составные элементы программы. Hello World.
* Справочные материалы:
* **KRC** Керниган, Ритчи. Язык программирования Си
* **KRU** Керниган, Пайк. Программное окружение Unix
* **GIT** С.Чансон. [[https://cloud.github.com/downloads/GArik/progit/progit.ru.pdf|Pro git]]
* Домашнее задание:
* **KRC** главы 1-3. Изучить, подготовить вопросы.
* **GIT** 1.1--1.3, 2.*
=== Лекция 2 ===
* вопросы и ответы
* getchar/putchar, EOF
* sleeps
* отличия С от С++
* K&R 1-3 Обзор, примеры
* RCS, git
* Типы и их представление в памяти
* Начальные сведения об указателях
* Консольный ввод-вывод
== Полезная информация ==
* [[ https://stepik.org/course/Введение-в-архитектуру-ЭВМ-Элементы-операционных-систем-65| Введение в Арх ЭВМ и ОС (Модуль 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