AVR123:Глава 5 1

Материал из roboforum.ru Wiki
Версия от 21:26, 27 сентября 2009; Nekolex (обсуждение | вклад) (Новая страница: «Категория:Avr123 Вернуться на главную ==Язык Си - дополнительная литература== Очен…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Вернуться на главную

Язык Си - дополнительная литература

Очень доступно о Си рассказано здесь:

Андрей Богатырев. Руководство полного идиота по программированию на языке Си

обязательно используйте его при работе! и заглядывайте в него.


Статья "Си без Си" уважаемого и очень опытного микроконтроллерщика - ник: Bill

h--p://www.caxapa.ru/story/bill_1.html

Вот её первый абзац - цитата:

" Использование алгоритмических языков высокого уровня (ЯВУ) и, в частности, Си для программирования микроконтроллеров, несомненно, дает ряд преимуществ по сравнению с языком ассемблера. Основными из них являются:

  • высокая скорость разработки программ;
  • легкость отладки разрабатываемых программ;
  • независимость программного кода от типа контроллера и, соответственно, более или менее простой перенос программ на разные платформы;
  • простота сопровождения программ;

Исходные тексты на языке Си имеют сравнительно небольшие размеры, сами программы, как правило, хорошо структурированы и понятны. "

Не надо учить книжки наизусть!

Скачайте чтобы иметь их "под рукой".

Повторю

Отличное руководство по Си для AVR это HELP в компиляторе CodeVisionAVR

Читайте его и ищите в нем интересующее вас по ключевым словам

ОГЛАВЛЕНИЕ

1.ОПИСАНИЕ ЯЗЫКА СИ

1.1. ЭЛЕМЕНТЫ ЯЗЫКА СИ

1.1.1. Используемые символы

1.1.2. Константы

1.1.3. Идентификатор

1.1.4. Ключевые слова

1.1.5. Использование комментариев в тексте программы

1.2. ТИПЫ ДАННЫХ И ИХ ОБ ЯВЛЕНИЕ

1.2.1 Категории типов данных

1.2.2. Целый тип данных

1.2.3. Данные плавающего типа

1.2.4. Указатели

1.2.5. Переменные перечислимого типа

1.2.6. Массивы

1.2.7. Структуры

1.2.8. Объединения (смеси)

1.2.9. Поля битов

1.2.10. Переменные с изменяемой структурой

1.2.11. Определение объектов и типов

1.2.12. Инициализация данных

1.3. ВЫРАЖЕНИЯ И ПРИСВАИВАНИЯ

1.3.1. Операнды и операции

1.3.2. Преобразования при вычислении выражений

1.3.3. Операции отрицания и дополнения

1.3.4. Операции разадресации и адреса

1.3.5. Операция sizeof

1.3.6. Мультипликативные операции

1.3.7. Аддитивные операции

1.3.8. Операции сдвига

1.3.9. Поразрядные операции

1.3.10. Логические операции

Внимание!
Я обнаружил ошибку в разделе 1.3.10

правильно вот так: Операция логического И вырабатывает значение 1 если оба операнда имеют НЕ нулевые значения.



1.3.11. Операция последовательного вычисления

1.3.12. Условная операция

1.3.13. Операции увеличения и уменьшения

1.3.14. Простое присваивание

1.3.15. Составное присваивание

1.3.16. Приоритеты операций и порядок вычислений

1.3.17. Побочные эффекты

1.3.18. Преобразование типов

1.4. ОПЕРАТОРЫ

1.4.1. Оператор выражение

1.4.2. Пустой оператор

1.4.3. Составной оператор

1.4.4. Оператор if

1.4.5. Оператор switch

1.4.6. Оператор break

1.4.7. Оператор for

1.4.8. Оператор while

1.4.9. Оператор do while

1.4.10. Оператор continue

1.4.11. Оператор return

1.4.12. Оператор goto

1.5. ФУНКЦИИ

1.5.1. Определение и вызов функций

1.5.2. Вызов функции с переменным числом параметров

1.5.3. Передача параметров функции main

1.6. СТРУКТУРА ПРОГРАММЫ И КЛАССЫ ПАМЯТИ

1.6.1. Исходные файлы и объявление переменных

1.6.2. Объявления функций

1.6.3. Время жизни и область видимости программных объектов

1.6.4. Инициализация глобальных и локальных переменных

1.7. УКАЗАТЕЛИ И АДРЕСНАЯ АРИФМЕТИКА

1.7.1. Методы доступа к элементам массивов

1.7.2. Указатели на многомерные массивы

1.7.3. Операции с указателями

1.7.4. Массивы указателей

1.7.5. Динамическое размещение массивов

1.8. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА

1.8.1. Директива #include

1.8.2. Директива #define

1.8.3. Директива #undef

2. ОРГАНИЗАЦИЯ СПИСКОВ И ИХ ОБРАБОТКА

2.1. ЛИНЕЙНЫЕ СПИСКИ

2.1.1. Методы организации и хранения линейных списков

2.1.2. Операции со списками при последовательном хранении

2.1.3. Операции со списками при связном хранении

2.1.4. Организация двусвязных списков

2.1.5. Стеки и очереди

2.1.6. Сжатое и индексное хранение линейных списков

2.2. СОРТИРОВКА И СЛИЯНИЕ СПИСКОВ

2.2.1. Пузырьковая сортировка

2.2.2. Сортировка вставкой

2.2.3. Сортировка посредством выбора

2.2.4. Слияние списков

2.2.5. Сортировка списков путем слияния

2.2.6. Быстрая и распределяющая сортировки

2.3. ПОИСК И ВЫБОР В ЛИНЕЙНЫХ СПИСКАХ

2.3.1. Последовательный поиск

2.3.2. Бинарный поиск

2.3.3. М-блочный поиск

2.3.4. Методы вычисления адреса

2.3.5. Выбор в линейных списках

2.4. РЕКУРСИЯ

Чтение по порядку глав

Вообще сайт СитФорум по программированию ПК рулит!


Оглавление

Предисловие

Предисловие к первому изданию

Введение

Список ошибок, допущенных в книгеhr

Глава 1. Обзор языка

1.1 Начнем, пожалуй

1.2 Переменные и арифметические выражения

1.3 Инструкция for

1.4 Именованные константы

1.5 Ввод-вывод символов

1.5.1 Копирование файла

1.5.2 Подсчет символов

1.5.3 Подсчет строк

1.5.4 Подсчет слов

1.6 Массивы

1.7 Функции

1.8 Аргументы. Вызов по значению

1.9 Символьные массивы

1.10 Внешние переменные и область видимости

Глава 2. Типы, операторы и выражения

2.1 Имена переменных

2.2 Типы и размеры данных

2.3 Константы

2.4 Объявления

2.5 Арифметические операторы

2.6 Операторы отношения и логические операторы

2.7 Преобразования типов

2.8 Операторы инкремента и декремента

2.9 Побитовые операторы

2.10 Операторы и выражения присваивания

2.11 Условные выражения

2.12 Приоритет и очередность вычислений

Глава 3. Управление

3.1 Инструкции и блоки

3.2 Конструкция if-else

3.3 Конструкцияn else-if

3.4 Переключатель switch

3.5 Циклы while и

3.6 Цикл do-while

3.7 Инструкции break и continue

3.8 Инструкция goto и метки

Глава 4. Функции и структура программы

4.1 Основные сведения о функциях

4.2 Функции, возвращающие нецелые значения

4.3 Внешние переменные

4.4 Области видимости

4.5 Заголовочные файлы

4.6 Статические переменные

4.7 Регистровые переменные

4.8 Блочная структура

4.9 Инициализация

4.10 Рекурсия

4.11 Препроцессор языка Си

4.11.1 Включение файла

4.11.2 Макроподстановка

4.11.3 Условная компиляция

Глава 5. Указатели и массивы

5.1 Указатели и адреса

5.2 Указатели и аргументы функций

5.3 Указатели и массивы

5.4 Адресная арифметика

5.5 Символьные указатели функции

5.6 Массивы указателей, указатели на указатели

5.7 Многомерные массивы

5.8 Инициализация массивов указателей

5.9 Указатели против многомерных массивов

5.10 Аргументы командной строки

5.11 Указатели на функции

5.12 Сложные объявления

Глава 6. Структуры

6.1 Основные сведения о структурах

6.2 Структуры и функции

6.3 Массивы структур

6.4 Указатели на структуры

6.5 Структуры со ссылками на себя

6.6 Просмотр таблиц

6.7 Средство typedef

6.8 Объединения

6.9 Битовые поля

Глава 7. Ввод и вывод

7.1 Стандартный ввод-вывод

7.2 Форматный вывод (printf)

7.3 Списки аргументов переменной длины

7.4 Форматный ввод (scanf)

7.5 Доступ к файлам

7.6 Управление ошибками (stderr и exit)

7.7 Ввод-вывод строк

7.8 Другие библиотечные функции

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

7.8.2 Анализ класса символов и преобразование символов

7.8.3 Функция ungetc

7.8.4 Исполнение команд операционной системы

7.8.5 Управление памятью

7.8.6 Математические функции

7.8.7 Генератор случайных чисел

Глава 8. Интерфейс с системой UNIX

8.1 Дескрипторы файлов

8.2 Нижний уровень ввода-вывода (read и write)

8.3 Системные вызовы open, creat, close, unlink

8.4 Произвольный доступ (lseek)

8.5 Пример. Реализация функций fopen и getc

8.6 Пример. Печать каталогов

8.7 Пример. Распределитель памяти

Приложение A. Справочное руководство

A1. Введение

A2. Соглашения о лексике

A2.1. Лексемы (tokens)

A2.2. Комментарий

A2.3. Идентификаторы

A2.4. Ключевые слова

A2.5. Константы

A2.5.1. Целые константы

A2.5.2. Символьные константы

А2.5.3. Константы с плавающей точкой

A2.5.4. Константы-перечисления

A2.6. Строковые литералы

A3. Нотация синтаксиса

A4. Что обозначают идентификаторы

A4.1. Класс памяти

A4.2. Базовые типы

A4.3. Производные типы

A4.4. Квалификаторы типов

A5. Объекты и Lvalues

A6. Преобразования

A6.1. Целочисленное повышение

A6.2. Целочисленные преобразования

A6.3. Целые и числа с плавающей точкой

A6.4. Типы с плавающей точкой

А6.5. Арифметические преобразования

A6.6. Указатели и целые

A6.7. Тип void

А6.8. Указатели на void

A7. Выражения

A7.1. Генерация указателя

A7.2. Первичные выражения

A7.3. Постфиксные выражения

A7.3.1. Обращение к элементам массива

A7.3.2. Вызов функции

A7.3.3. Обращение к структурам

A7.3.4. Постфиксные операторы инкремента и декремента

А7.4. Унарные операторы

А7.4.1. Префиксные операторы инкремента и

A7.4.2. Оператор получения адреса

A7.4.3. Оператор косвенного доступа

A7.4.4. Оператор унарный плюс

A7.4.5. Оператор унарный минус

A7.4.6. Оператор побитового отрицания

A7.4.7. Оператор логического отрицания

A7.4.8. Оператор определения размера sizeof

A7.5. Оператор приведения типа

A7.6. Мультипликативные операторы

A7.7. Аддитивные операторы

A7.8. Операторы сдвига

A7.9. Операторы отношения

A7.10. Операторы равенства

A7.11. Оператор побитового И

A7.12. Оператор побитового исключающего ИЛИ

A7.13. Оператор побитового ИЛИ

A7.14. Оператор логического И

A7.15. Оператор логического ИЛИ

А7.16. Условный оператор

A7.17. Выражения присваивания

A7.18. Оператор запятая

A7.19. Константные выражения

A8. Объявления

A8.1. Спецификаторы класса памяти

А8.2. Спецификаторы типа

A8.3. Объявления структур и объединений

A8.4. Перечисления

А8.5. Объявители

A8.6. Что означают объявители

A8.6.1. Объявители указателей

А8.6.2. Объявители массивов

А8.6.3. Объявители функций

A8.7. Инициализация

A8.8. Имена типов

А8.9. Объявление

A8.10. Эквивалентность типов

A9. Инструкции

A9.1. Помеченные инструкции

A9.2. Инструкция-выражение

A9.3. Составная инструкция

A9.4. Инструкции выбора

A9.5. Циклические инструкции

A9.6. Инструкции перехода

А10. Внешние объявления

A10.1. Определение функции

A10.2. Внешние объявления

A11. Область видимости и связи

A11.1. Лексическая область видимости

A11.2. Связи

A12. Препроцессирование

A12.1. Трехзнаковые последовательности

A12.2. Склеивание строк

А12.3. Макроопределение и макрорасширение

A12.4. Включение файла

A12.5. Условная компиляция

A12.6. Нумерация строк

A12.7. Генерация сообщения об ошибке

A12.8. Прагма

A12.9. Пустая директива

A12.10. Заранее определенные имена

A13. Грамматика

Приложение B. Стандартная библиотека

B1. Ввод-вывод: stdio.

B1.1. Операции над файлами

B1.2. Форматный вывод

B1.3. Форматный ввод

B1.4. Функции ввода-вывода символов

B1.5. Функции прямого ввода-вывода

B1.6. Функции позиционирования файла

B1.7. Функции обработки ошибок

B2. Проверки класса символа: ctype.

B3. Функции, оперирующие со строками: string.

B4. Математические функции: math.

B5. Функции общего назначения: stdlib.

B6. Диагностика: assert.

B7. Списки аргументов переменной длины: stdarg.

B8. Дальние переходы: setjmp.

B9. Сигналы: signal.

B10. Функции даты и времени: time.

B11. Зависящие от реализации пределы: limits.и float.

Приложение С. Перечень измененийhr

Предметный указатель - язык Си