![](/user_photo/2706_HbeT2.jpg)
- •Предисловие
- •Библиографический список
- •Контрольные вопросы
- •Библиографический список
- •Тема 2 Переменные и базовые типы данных языка с
- •Контрольные вопросы
- •Библиографический список
- •Тема3 Организация циклов в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 4 Принятие решений. Условные операторы в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 5 Числовые массивы в языке программирования с
- •Тип имя_массива[размер];
- •Тип имя_массива[размер1] [размер2];
- •Тип имя_массива[размер1] [размер2] [размерN];
- •Контрольные вопросы
- •Библиографический список
- •Тема 6 Символьные массивы в языке с. Работа со строками
- •Тип имя_массива[размер];
- •Тип имя_массива[размер1] [размер2];
- •Тип имя_массива[размер1] [размер2] [размерN];
- •Контрольные вопросы
- •Библиографический список
- •Тема 7 Указатели в языке программирования с
- •Int *ptr; // объявили указатель на целую переменную
- •Контрольные вопросы
- •Библиографический список
- •Тема 8 Указатели и массивы в языке с
- •Int data[7]; // обычный массив
- •Int *pd[7]; // массив указателей
- •Контрольные вопросы
- •Библиографический список
- •Тема 9 Динамическое распределение памяти в языке с
- •If (!ptr) // условие логического отрицания
- •If (!ptr) // условие логического отрицания
- •Контрольные вопросы
- •Библиографический список
- •Тема 10 Функции Общие сведения о функциях языка с
- •Fun(тип имя_перем1, тип имя_перем2, , тип имя_перем n)
- •Контрольные вопросы
- •Библиографический список
- •Тема 11 Указатели и функции в языке программирования с
- •Тип_возвращаемый_функцией(*имя_указателя_на_функцию)(аргументы);
- •Контрольные вопросы
- •Библиографический список
- •Тема 12 Файловый ввод/вывод в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 13 Структуры – производные типы данных языка с
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Int age; // возраст
- •Контрольные вопросы
- •Библиографический список
- •Тема 14 Объединения и перечислимые типы в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 15 Структуры и функции языка с
- •Контрольные вопросы
- •Библиографический список
- •Тема 16 Операции с разрядами (битами) в языке с
- •Контрольные вопросы
- •Библиографический список
- •Тема 17 Программы, состоящие из нескольких файлов, на языке с
- •Спецификатор extern
- •Спецификатор static
- •Спецификатор register
- •Спецификатор auto
- •Контрольные вопросы
- •Библиографический список
- •Тема 18 Рекурсивные алгоритмы и функции
- •Переместить (a, b);
- •Контрольные вопросы
- •Библиографический список
- •Тема 19 Препроцессор языка с
- •Директива #define
- •Директива #error
- •Директива #include
- •Директивы условной компиляции
- •2_ Я_последовательность операторов программного кода
- •3_ Я_последовательность операторов программного кода
- •Директива #line
- •Директива#pragma
- •Предопределенные символические константы
- •Макрос подтвержденияassert
- •Контрольные вопросы
- •Библиографический список
- •Тема 20 Программы на языке с при использовании статически подключаемой библиотеки
- •Контрольные вопросы
- •Библиографический список
- •Тема 21 Использование аргументов командной строки в с
- •Контрольные вопросы
- •Контрольная работа № 2 Покупки в супермаркете
- •Приложение Управление конфигурациями проекта в Visual Studio 2010
Контрольные вопросы
Когда следует применять рекурсивные алгоритмы?
Какие методы и приемы устранения «хвостовой» рекурсии Вам известны?
Какие проблемы могут возникать при реализации рекурсивных алгоритмов на электронных вычислительных машинах?
В чем отличие глубины рекурсии от рекурсивного вызова?
В каких задачах в программировании применение рекурсии оправдано?
Библиографический список
Картавов С. А. Математические термины : справ.-библиогр. слов. / С. А. Картавов. – Киев : Выща шк., 1988. – 295 с.
Сэджвик Р. Фундаментальные алгоритмы на С++. Анализ / Структуры данных / Сортировка / Поиск : пер. с англ. / Роберт Сэджвик. – Киев : ДиаСофт, 2001. – 688 с.
Новицкая Ю. В. Основы логического и функционального программирования : учеб. пособие / Ю. В. Новицкая. – Новосибирск : Изд-во НГТУ, 2006. – 60 с.
Дейтел Х. М. Как программировать на С : пер. с англ. / Х. М. Дейтел, П. Дж. Дейтел. – 4-е изд. – М. : Бином-Пресс, 2006. – 912 с.
Хэзфилд Р. Искусство программирования на С. Фундаментальные алгоритмы, структуры данных и примеры приложений. Энциклопедия программиста : пер. с англ. / Ричард Хэзвилд, Лоуренс Кирби. – Киев : ДиаСофт, 2001. – 736 с.
Подбельский В. В. Программирование на языке Си : учеб. пособие / В. В. Подбельский, С. С. Фомин. – 2-е изд., доп. – М. : Финансы и статистика, 2007. – 600 с.
Прата С. Язык программирования С. Лекции и упражнения : пер. с англ. / С. Прата. – 5-е изд. – М. : Вильямс, 2006. – 960 с.
Шилдт Г. Полный справочник по С : пер. с англ. / Г. Шилдт. – 4-е изд. – М. : Вильямс, 2007. – 704 с.
Порублев И. Н. Алгоритмы и программы. Решение олимпиадных задач / И. Н. Порублев, А. Б. Ставровский. – М. : Вильямс, 2007. – 480 с.
Мейер Б. Методы программирования : в 2-х т. : пер. с франц. / Б. Мейер, К. Бодуэн. – М. : Мир, 1982. – Т. 2. – 368 с.
Вирт Н. Алгоритмы и структуры данных : пер. с англ. / Н. Вирт. – М. : Мир, 1989. – 360 с.
Хусаинов Б. С. Структуры и алгоритмы данных. Примеры на языке Си : Учеб. Пособие / Б. С. Хусаинов. – М. : Финансы и статистика, 2004. – 464 с.
С/С++. Архив программ /А. Фридман, Л. Кландер, М. Михаэлис, Х. Шильдт. – М. : БИНОМ, 2001. – 640 с.
Ахо А. В. Структуры данных и алгоритмы : учеб. пособие : пер. с англ. / А. В. Ахо, Д. Хопкрофт, Д. Д. Ульман. – М. : Вильямс, 2000. – 384 с.
Тема 19 Препроцессор языка с
Рассматриваются практически важные свойства препроцессора языка Си примеры типовых препроцессорных директив и конструкций.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Препроцессор (англ.preprocessor) – программа, выполняющая предварительную обработку входных данных для другой программы [1]. Препроцессор языка программированияСпросматривает программу до компилятора и заменяет в ней определенные сочетания символов (символические аббревиатуры) на соответствующие директивы. Он отыскивает и подключает к программе необходимые файлы и может изменить условия компиляции [1]. Препроцессор имеет тот же смысл, что и буферный процессор.
Препроцессор языка Свыполняет макроподстановку, условную компиляцию и включение именованных файлов. Строки, начинающиеся со знака# (перед которыми разрешены символы пустого пространства), задают препроцессору инструкции-директивы. Их синтаксис не зависит от остальной части языка, они могут фигурировать где угодно и оказывать влияние (независимо от области действия) вплоть до конца единицы трансляции. Границы строк принимаются во внимание: каждая строка анализируется отдельно (но есть возможность и сцеплять их). Лексемами для препроцессора являются все лексемы языка и последовательность символов, задающие имена файлов. Кроме того, любой символ, не определенный каким-либо другим способом, также воспринимается как лексема [2]. Влияние символов пустого пространства, отличающихся от пробелов и горизонтальных табуляций, внутри строк препроцессора не определено.
В предыдущих темах уже встречались строки с начальным символом #:#includeи#define. Первая директива (инструкция) использовалась для подключения заголовочных файлов, главным образом из библиотеки языкаС, а вторая – для подстановки символов или чисел в определенные места программного кода.
Имеются следующие директивы препроцессора:
#define |
#endif |
#ifdef |
#line |
#elif |
#error |
#ifndef |
#pragma |
#else |
#if |
#include |
#undef |
Каждая директива препроцессора должна занимать отдельную строку. Например, строка
#include <stdio.h> #include <stdlib.h> |
рассматривается как недопустимая [3].