Директивы препроцессора начинаются на # и служат для предварительного преобразования исходного текста программы перед компиляцией. Производятся текстовые преобразования без анализа синтаксиса языка.
Так строка вида (include – англ. включить)
#include "filename" - поиск в текущем каталоге, затем в каталогах указанных компилятору
#include <filename> - поиск в указанных компилятору каталогах, ! но не в текущем каталоге,
заменяется полным содержимым файла с именем filename. (Кавычки обязательны). Допускается вложенность конструкций #include.
В начале программ на языке С Вы встречаете строчку:
#include <stdio.h>
Препроцессор вместо этой строки вставит текст из файла stdio.h . Текст вставляется в начало программы (to thehead of the program), поэтому подобные файлы имеют расширение .h и называются заголовочными (head). Увеличенный текст программы попадет на Компиляцию.
Строки вида (define англ. определить )
#define NO 0
#define YES 1
-приведут к замене (макроподстановке) по всему тексту (кроме текстовых строк) имен YES и NO на 1 и 0. Так вводятся в Си именованные константы
Программа Dc_5.c считает слова в тексте, определяя слова по их началу. Когда слово начинается, то происходит переход от пробела к букве (цифре). Это изменение (переход от пробела к букве) и отслеживается.
6) программа Dc_6.c
Вводится макроопределение print
#define print(str, var) printf("%s = %.0f \n", str, var);
Макроопределение имеет вид функции с аргументами , но это – «макрос» с аргументами.. Там, где в тексте встречается обращение f(STROKA, VARIAB) ; произойдет текстовая замена по шаблону определенному директивой #defineи получится выражение
printf("%s = %.0f \n", STROKA, VARIAB);
Именно это выражение и попадет на компиляцию.
7) программа Dc_7.c
Создается новый тип данных – date. Объекты типа date являются не переменными не массивами, а структурами.
В структуре могут храниться разнородные данные ( разного типа)
structdate date - это название нового типа данных
{
intmonth; - члены (элементы, поля) структуры
intday;
intyear;
char * name;
}; при определении нового типа должна быть ;
structdatedate1, *date_point; - создание объекта типа date (выделение под него памяти) в C,
создание указателя для такого типа
date1.day=5; так можно напрямую обратиться к члену структуры
date_point = &date1; указатель можно направить на определенный объект
(*date_point).year = 1938; так можно обратиться к члену структуры через указатель
8) программа Dc_8.c
Си допускает рекурсивное определение функции – функции, содержащей обращение к самой себе.
Задача демонстрирует это на примере подсчета факториала числа.
Факториал числа вводится как
N! = 1 * 2 * … * N
Или факториал числа вводят, используя его свойство: N! = (N – 1)! * N
Именно это и позволяет определить факториал рекурсивно:
1 , N = 1
(N – 1)! * N , N > 1
При написании рекурсивной функции следует быть внимательным, чтобы функция всегда заканчивала работу.
Для этого следует смотреть, чтобы в функции был бы параметр, который
Задание (учебное):
Требуется решить задачу 2300.
Требуется решить задачу 2301. – прочитайте файл «Задание С3»
Задание (проверочное):
Требуется решить несколько задач.
Эти задания – последовательные шаги простейшей реализации алгоритма «Быстрой сортировки». – задачи, 2302, 2303, 2304
В начале хорошо Отладьте свои решения, а затем отправьте
исходные файлы решений сетевой тестирующей системе.
Что необходимо знать:
1. Ввод со стандартного устройства в С
2. Ввод из файла в С
3. Вывод в файл в С
4. Функция kbhit( )
5. Расширенные коды ASCII – клавиатуры
6. Структура
7. Рекурсия
Вопросы для «продвинутых»
- Что в Лабораторной работе написано не правильно?
- Что в Лабораторной работе написано плохо?
- Что в Лабораторной работе пропущено и следует добавить?
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.