Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
теория_информатика.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5.34 Mб
Скачать

17.2.1.4 Строковые константы

Строковая константа в языке C представлена в виде последовательности символов, заключенной в кавычки, например:

"Это строковая константа"

Кавычки не входят в строку, а лишь ограничивают её. Технически строковая константа представляет собой массив символов, и по этому признаку может быть отнесена к разряду сложных объектов языка C.

В конце каждой строковой константы компилятор помещает '\0' (нуль-символ), чтобы программе было возможно определить конец строки. Такое представление означает, что размер строковой константы не ограничен каким-либо пределом, но для определения длины строковой константы её нужно полностью просмотреть.

Поскольку строковая константа состоит из символов, то она имеет тип char. Количество ячеек памяти, необходимое для хранения строковой константы на 1 больше количества символов в ней (1 байт используется для хранения нуль-символа).

Символьная константа 'x' и строка из одного символа "x" - не одно и то же. Символьная константа – это символ, используемый для числового представления буквы x, а строковая константа "x" содержит символ 'x' и нуль-символ '\0' и занимает в памяти 2 байта. Если в программе строковые константы записаны одна за другой через разделители, то при выполнении программы они будут размещаться в последовательных ячейках памяти.

17.2.2 Переменные

Любая переменная в C до ее использования в программе должна быть объявлена, то есть для нее должны быть указаны тип и имя (идентификатор).

Объявление переменных в C осуществляется в форме:

ТипПеременной ИмяПеременной;

Каждую переменную можно снабдить комментарием, поясняющим ее смысл. Например,

int i; // счетчик циклов

Если в программе требуется несколько переменных одного типа, то они могут быть объявлены в одной строке через запятую. Например,

int i, n;

При объявлении переменной ей может быть присвоено начальное значение в форме:

ТипПеременной ИмяПеременной = значение;

Например,

int i=0, k, n, m=1;

float pi=3.1415, y;

char a='a';

17.2.3 Функции

Функция в языке С является подпрограммой, которая может содержаться в основной программе, а может быть создана отдельно (в библиотеке). Каждая функция выполняет в программе определенные действия.

Сигнатура функции определяет правила использования функции. Обычно сигнатура представляет собой описание функции, включающее имя функции, перечень формальных параметров с их типами и тип возвращаемого значения.

Семантика функции определяет способ реализации функции. Обычно представляет собой тело функции.

17.2.3.1 Рекурсивные функции

Функция, которая вызывает сама себя, называется рекурсивной функцией.

Рекурсия - вызов функции из самой функции.

Пример рекурсивной функции – функция вычисления факториала:

#include <stdio.h>

int fact(int num) {

if(num==1)   return(1);

else return(num*fact(num-1));  // рекурсивный вызов

}

int main() {

int a, r;

printf("a= ");

scanf("%d",&a);

r = fact(a);

printf("%d! = %d",a,r);

getchar();getchar();

return(0);

}

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

Математические функции хранятся в стандартной библиотеке math.h. Аргументы большинства математических функций имеют тип double. Возвращаемое значение также имеет тип double. Углы в тригонометрических функциях задаются в радианах.

Основные математические функции стандартной библиотеки представлены в таблице 17.8.

Таблица 17.8 Основные математические функции стандартной библиотеки C

Функция

Описание

int abs(int x)

Модуль целого числа x

double acos(double x)

Арккосинус x

double asin(double x)

Арксинус x

double atan(double x)

Арктангенс x

double cos(double x)

Косинус x

double cosh(double x)

Косинус гиперболический x

double exp(double x)

Экспонента x

double fabs(double x)

Модуль вещественного числа

double fmod(double x, double y)

Остаток от деления x/y

double log(double x)

Натуральный логарифм x

double log10(double x)

Десятичный логарифм x

double pow(double x, double y)

x в степени y

double sin(double x)

Cинус x

double sinh(double x)

Cинус гиперболический x

double sqrt(double x)

Квадратный корень x

double tan(double x)

Тангенс x

double tanh(double x)

Тангенс гиперболический x