- •Язык программирования Си
- •7. Понятие о препроцессоре языка Си 29
- •8. Операторы языка Си и приемы программирования 30
- •9. Массивы. Адресная арифметика языка Си 51
- •Правила записи программы на языке Си
- •Правила формального описания синтаксиса языка программирования
- •Идентификаторы языка Си
- •Понятие о типах данных.
- •Системы счисления. Представление данных в эвм.
- •Основные типы данных языка Си
- •Правила записи констант различных типов
- •Беззнаковый тип для целых данных
- •Символьные строки
- •Понятие функции
- •Стандартная функция printf
- •Стандартная функция scanf
- •Операции и выражения
- •Простейшие арифметические операции
- •Операция присваивания
- •Оператор-выражение
- •Использование в выражениях операндов разных типов
- •Операции преобразования типов
- •Стандартные математические функции
- •Простейшие функции, определяемые программистом
- •Дополнительные арифметические операции
- •Дополнительные операции присваивания
- •Битовые операции
- •Операции отношения
- •Логические операции
- •Операция определения размера данных
- •Приоритеты операций
- •Понятие о препроцессоре языка Си
- •Операторы языка Си и приемы программирования
- •Оператор цикла while
- •Условный оператор и условная операция
- •1) Короткие операторы:
- •2) Группы коротких операторов:
- •3) Длинные группы операторов:
- •Запись алгоритмов с помощью диаграмм Несси - Шнейдермана (структограмм )
- •Некоторые приемы программирования
- •Оператор прерывания цикла
- •Оператор продолжения цикла
- •Пример организации простейшего меню
- •Множественный выбор. Оператор переключения
- •Оператор цикла do-while.
- •Перечисления. Работа с клавиатурой ibm pc
- •Пример организации светового меню
- •Массивы. Адресная арифметика языка Си
- •Описание массива
- •Ввод-вывод массива
- •Инициализация массива
- •Программа вычисления длины строки символов
- •Двумерные массивы (массивы массивов)
- •Адресная арифметика языка Си
- •Указатели и одномерные массивы
- •Указатели и двумерные массивы
- •Указатели и функции
- •Оператор typedef
- •Дополнительные описания указателей для ibm pc
- •Непосредственная работа с экранной памятью
- •Дополнительные сведения о функциях
- •Области видимости и глобальные данные
- •Время жизни переменных и классы памяти языка Си
- •Передача аргументов в функцию
- •Возврат значений из функций
- •Работа с динамической памятью
- •Стандартные функции управления динамической памятью
- •Пример использования динамической памяти
- •Особенности работы с двумерными массивами
- •Пересчет индексов вручную
- •Массивы с постоянной длиной строки
- •Общий случай двумерного массива
- •Особенности работы с массивами большого размера
- •Модульное программирование в системе Turbo c
- •Обеспечение корректной стыковки модулей
- •Создание библиотек функций
- •Некоторые библиотечные функции языка Си
- •Функции консольного ввода/вывода (уникальны для tc)
- •Функции обработки строк.
- •Функции распознавания вида символа
- •Функции преобразования данных
- •Структуры языка c.
- •Описание структуры
- •1 Способ
- •2 Способ
- •Трактовка имени структуры.
- •Доступ к элементу структуры.
- •Инициализация структур.
- •Структуры и функции.
- •Поля бит в структурах.
- •Объединения.
- •Дополнительные сведения о препроцессоре языка c.
- •Условное выражение.
- •Приоритеты и направления операций.
- •Динамические данные.
- •Линейные списки.
- •Организация данных в виде стека.
- •Организация данных в виде очереди.
- •Организация данных в виде деревьев.
- •Библиотека ввода-вывода языка c.
- •Открытие потока.
- •Закрытие потока.
- •Предопределенные указатели потоков.
- •Функции ввода-вывода.
Стандартная функция printf
Функция предназначена для вывода информации на стандартное устройство вывода (stdout), которым обычно является экран дисплея.
БНФ:
"printf" "(" формат { "," аргумент } ")"
Формат - это адрес строки символов, которая выводится в стандартное устройство вывода.
В строке символов могут присутствовать спецификации преобразования данных, каждой из которой должен соответствовать аргумент. Если имеются спецификации преобразования, то вместо них выводятся значения соответствующих аргументов. Для аргументов различных типов необходимо использовать соответствующие спецификации преобразования:
%d - для вывода целых чисел;
%c - для вывода образа символа, соответствующий аргумент должен содержать код символа;
%f - для вывода вещественного числа в виде целой и дробной части;
%e - для вывода вещественного числа в виде мантиссы и порядка;
%g - для вывода вещественного числа в виде %f или %e в зависимости от значения числа;
%u - для вывода беззнакового целого числа в десятичной системе счисления;
%o - для вывода беззнакового целого числа в восмеричной системе счисления;
%x - для вывода беззнакового целого числа в шестнадцатеричной системе счисления;
%s - для вывода на экран символьной строки, соответствующий аргумент должен быть адресом строки (т.е. именем символьного массива или строковой константой).
Для дополнительного управления преобразованием данных используются модификаторы преобразования. Они записываются между символом % и спецификацией преобразования.
БНФ:
модификатор = ["-"] {цифра1} [ "." {цифра2} ][l]
Примерыспецификаций преобразований с модификаторами:
%-20.6lf , %6d, %8.4f
Если присутствует "минус", то данные выравниваются по левой колонке поля, отведенного для вывода числа. Ширина этого поля определяется числом, составленным из цифр поля <цифра1>. Для вещественных чисел можно дополнительно задавать число знаков после запятой с помощью числа, составленного из цифр <цифра2>. Буква l в конце модификатора обозначает преобразование для длинных типов данных, т.е. long, unsigned long и double.
Функция printf возвращает число успешно выведенных байт информации.
Пример:
double a=-78.98;
int c=24;
printf("a=%8.4lf,c=%6d",a,c);
На экране:
a=-78.9800,с= 24
Стандартная функция scanf
Функция предназначена для ввода информации со стандартного устройства ввода (stdin), которым обычно является клавиатура.
БНФ:
"scanf" "(" формат { "," аргумент } ")"
Пример:
scanf( "%d", &n );
Перед именем аргумента функции подставляется знак &, который делает переменную n доступной для изменения. Строго говоря, операция & означает получение адреса объекта данных, т.е. мы сообщаем функции scanf информацию о том, где находится ячейка, в которую необходимо занести данные. При использовании функции scanf совместно с данными типа int, long, float, double, перед именем переменной всегда должен стоять знак &. При использовании функции для ввода символьной строки знак & не нужен, т.к. имя массива символов и так означает адрес.
Например:
char name[41];
scanf( "%s", name );
Функцию scanf рекомендуется использовать без лишних символов в формате, иначе может возникнуть непредсказуемая ситуация.
В формате должны быть только спецификации преобразования без всяких пробелов и других символов. Это связано с тем, что возможности функции scanf на самом деле значительно шире, чем описано в этом параграфе.
Функция scanf возвращает число успешно прочитанных элементов данных. Это свойство можно использовать для проверки правильности ввода.
Функцию scanf нужно использовать совместно с printf для вывода подсказки.
Например:
printf( "Введите ваше имя ");
scanf("%s", name );