
- •«Алгоритмические языки и программирование»
- •Часть 1
- •Часть 1. «Язык программирования с» (опорний конспект лекций).
- •Содержание
- •6. Понятие о препроцессоре языка Си 25
- •7. Операторы языка Си и приемы программирования 26
- •1.Правила записи программы на языке Си
- •2.Идентификаторы языка Си
- •3.Понятие о типах данных.
- •3.1.Основные типы данных языка Си
- •3.2.Правила записи констант различных типов
- •3.3.Беззнаковый тип для целых данных
- •3.4.Символьные строки
- •4.Понятие функции
- •4.1.Стандартная функция printf
- •4.2.Стандартная функция scanf
- •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.Операция определения размера данных
- •5.13.Приоритеты операций
- •6.Понятие о препроцессоре языка Си
- •7.Операторы языка Си и приемы программирования
- •7.1.Оператор цикла while
- •7.2.Условный оператор и условная операция
- •7.3.Некоторые приемы программирования
- •7.4.Оператор прерывания цикла
- •7.5.Оператор продолжения цикла
- •7.6.Пример организации простейшего меню
- •7.7.Множественный выбор. Оператор переключения
- •7.8.Оператор цикла do-while.
- •7.9.Перечисления
- •7.10.Пример организации светового меню
- •8.Массивы. Адресная арифметика языка Си
- •8.1.Описание массива
- •8.2.Ввод-вывод массива
- •8.3.Инициализация массива
- •8.4.Программа вычисления длины строки символов
- •8.5.Двумерные массивы (массивы массивов)
- •8.6.Адресная арифметика языка Си
- •8.7.Указатели и одномерные массивы
- •8.8.Указатели и двумерные массивы
- •8.9.Указатели и функции
- •8.10.Оператор typedef
- •9.Дополнительные сведения о функциях
- •9.1.Области видимости и глобальные данные
- •9.2.Время жизни переменных и классы памяти языка Си
- •9.3.Передача аргументов в функцию
- •9.4.Возврат значений из функций
- •10.Работа с динамической памятью
- •10.1.Стандартные функции управления динамической памятью
- •10.2.Пример использования динамической памяти
- •10.3.Особенности работы с двумерными массивами
- •10.3.1.Пересчет индексов вручную
- •10.3.2.Массивы с постоянной длиной строки
- •10.3.3.Общий случай двумерного массива
- •10.4.Особенности работы с массивами большого размера
- •11.Модульное программирование в системе Turbo c
- •11.1.Обеспечение корректной стыковки модулей
- •11.2.Создание библиотек функций
- •12.Некоторые библиотечные функции языка Си
- •12.1.Функции консольного ввода/вывода (уникальны для tc)
- •12.2.Функции обработки строк.
- •12.3.Функции распознавания вида символа
- •12.4.Функции преобразования данных
5.2.Операция присваивания
Операция присваивания выполняет действия по занесению результатов
выражения, стоящего справа от знака присваивания = в область памяти, определяемую выражением, стоящим слева от знака присваивания. Чаще всего слева от знака присваивания стоит простая переменная. При выполнении присваивания происходит преобразование типа результата правого выражения к типу левого операнда.
Результат операции присваивания - значение присвоенной величины.
Поскольку присваивание является операцией, а не оператором, то в одном выражении допускается несколько присваиваний. В этом случае они выполняются справа налево
Пример:
ab = ( c = d+5 ) * 6
Присваивание имеет самый низкий приоритет из всех операций.
5.3.Оператор присваивания
Выражение, оканчивающееся точкой с запятой, является оператором, т.е. наименьшей элементарной частью программы.
Пример:
ab = ( c = d + 5 ) * 6; /* это оператор */
5.4.Использование в выражениях операндов разных типов
При участии в арифметических операциях операндов разных типов, перед выполнением операции осуществляется преобразование типов так, чтобы не было потери точности. Затем осуществляется сама операция.
Типы данных в порядке возрастания точности:
char, short, int, long, float, double.
Пример:
int a, c;
float d, e;
e = d*(c+e); /* c будет преобразовано в float */
a = 'A' + 20; /* 'A' будет преобразовано в int */
5.5.Операции преобразования типов
В некоторых случаях правила преобразования типов не позволяют получить верный результат, например:
int a, b;
float c;
a = 7; b = 14;
c = a/b; /* результат 0 */
Для получения правильного результата можно поступить так
c = a; c = c/b;
А можно применить операцию преобразования типа:
( имя_типа ) выражение
имя_типа - название любого типа, в том числе и заданного программистом.
Для нашего примера применение операции преобразования типа будет выглядеть
c = (float)a / (float)b;
Операция преобразования типа имеет приоритет более высокий, чем арифметическая операция.
5.6.Стандартные математические функции
В любых арифметических выражениях можно использовать стандартные математические функции, которые можно применять к любым числовым операндам.
При использовании этих функций в программу необходимо включить файл <math.h>, т.е. необходимо использовать директиву #include <math.h> . При этом будут определены следующие функции:
sin(x) - синус (аргумент в радианах);
cos(x) - косинус (аргумент в радианах);
tan(x) - тангенс (аргумент в радианах);
asin(x) - арксинус (результат в радианах);
acos(x) - арккосинус (результат в радианах);
atan(x) - арктангенс (результат в радианах);
sinh(x) - гиперболический синус;
cosh(x) - гиперболический косинус;
tanh(x) - гиперболический тангенс;
log10(x) - десятичный логарифм;
pow10(x) - возведение числа 10 в степень x;
log(x) - натуральный логарифм;
exp(x) - экспонента;
sqrt(x) - квадратный корень;
pow(x,y) - возведение x в степень y;
fabs(x) - абсолютная величина для double;
abs(x) - абсолютная величина для int.