Функция вывод на терминал - Printf
Функция включена в библиотеку stdio.h (стандартный ввод / вывод) и используется в С и в консольных приложениях С++ и обычно имеет вид: int printf («<управляющая строка>«,<список выводимых значений>); Управляющая строка содержит набор спецификаций (шаблонов редактирования), управляющих и информационных символов, который выводятся без изменения). Спецификация начинается с символа % и имеет вид: % [<флаг>] [<ширина>] [.<точность>] <символ формата> <флаг> - задает порядок вывода данных: минус - выравнивание строковых данных по левому краю поля; плюс - вывести знак значения: плюс или минус; пусто - для неотрицательных значений вместо знака вывести пробелы. <ширина> - минимальный размер поля вывода; <точность> - задает число: цифр для целочисленных данных; цифр после десятичной точки для вещественных данных; символов для строковых данных; <символ формата> - задает тип выводимого данного: с (один символ), s (строка символов); d/u (десятичное целое со знаком/без знака); f/e/g (вещественное число в обычной/экспоненциальной/смешанной форме); % (процент), n, p (указатели). Пример: printf(«\n Возраст Володи -%d. Его доход %.2f рублей.», age, income); Функция ввод с клавиатуры - Scanf Функция включена в библиотеку stdio.h и используется в С и в консольных приложениях С++ и обычно имеет вид: int scanf («<управляющая строка>«,<список адресов переменных ввода>); Каждой вводимой переменной в строке функции scanf должна соответствовать спецификация ввода. Перед именами переменных следует поставить символ &.(«взятие адреса»). Спецификация начинается с символа % и имеет вид: % [*] [<ширина>] [h|l|L] <символ формата> ‑ пропустить вводимое значение.
<ширина> ‑ максимально вводимое число символов (ширина поля ввода). h|l|L ‑ тип модификации символа формата по умолчанию: h (short int), l (long int или double), L (long double). <символ формата> - задает тип вводимого данного: d, i (int); D, I (long); e, E, f,g, G (float); u (unsigned int); U (unsigned long); s (строка); c (char); n, p (указатели). Пример: float weight; /* вес */ int height; /* рост */ printf («Введите ваш вес и рост «); scanf («%f %d «, &weight, &height); Функция Main в консольных приложениях Каждый исполняемый файл консольного приложения должен содержать функцию main (главная). Если функция main имеет параметры, то эти параметры выбираются из строки вызова, и их значениями являются строки символов. В этом случае заголовок main и вся функция имеет вид: int main (int argc, char **argv) { /* тело функции */ } В заголовке функции указываются два аргумента: аrgc - число передаваемых в командной строке вызова аргументов + 1; argv - массив строк со значениями аргументов в командной строке. Строка, определяемая argv[0], содержит имя самой программы. Все значения передаются в виде символьных строк. Если значение аргумента в командной строке содержит пробелы, то оно заключается в кавычки. Количество аргументов может быть выражено переменным числом. Функции Процесс разработки приложения предполагает расчленение сложной задачи на функции. Обычно функции задаются после основной функции. Функции могут иметь несколько параметров и возвращают значение скалярного типа, типа void (отсутствие возвращаемого значения) или указатель. Возвращаемое значение формируется оператором return (п.6.2.10.2). При вызове функции значения аргументов, задаваемые на входе, должны соответствовать числу и типу параметров в описании функции. С++ поддерживает прототипы (объявления) функций. Пример функции cube, вычисляющей куб числа: Int main(int argc,char **argv) // основная функция { double cube(double x); // объявление функции cube
printf(«\n2 в кубе=%.0f «,cube(2.0));/*вывод куба числа 2*/getch();return 0;} double cube(double x) { return x * x * x; } // тело функции cube Изменение значения аргумента в функции производится путем передачи его адреса (например, в виде & <имя переменной> (п. 6.3)). Пример передачи адреса аргумента: int main(int argc, char **argv) // основная функция { void vvod(char *s, int *v); // объявление функции адресом аргумента int *v int vozrast; vvod(«Введите возраст сотрудника»,&vozrast);// вызов функции printf(«\n %d»,vozrast); getch(); } // конец основной функции void vvod(char *s, int *v) {printf («\n %s»,s); scanf(«%d»,v);}// функция ввода Перегруженные функции задают семейство одноименных функций с различными типами параметров. Компилятор автоматически выберет нужную функцию по типам аргументов. Пример функций add сложения вещественных и целых чисел: void __fastcall TForm1::Button1Click(TObject *Sender) // основная функция {float add(float x,float y);Label1->Caption=add(1.2,2.4);//вещественные числа int add (int x, int y); Label2->Caption=add(1,5); // целые числа } float add (float x, float y) {return x+y;} // функция сложения вешественных int add (int x, int y) {return x+y;} // функция сложения целых чисел Для таких функций лучше использовать шаблоны функций (п. 6.6.4). Классы памяти Каждая переменная и функция, описанная в программе, принадлежат к какому-либо классу памяти. Класс памяти переменной определяет время ее существования и область видимости. Класс памяти для переменной задается либо по расположению ее описания, либо при помощи специального спецификатора класса памяти, помещаемого перед обычным описанием. Класс памяти для функции всегда external, если только перед описанием функции не стоит спецификатор static. Все переменные можно отнести к одному из следующих классов памяти: automatic (автоматическая, локальная), register (регистровая), extern (внешняя), static (статическая).
Автоматические переменные Автоматические переменные можно описывать явно, используя спецификатор класса памяти auto. По умолчанию принимается, что всякая переменная, описанная внутри функции (локальная переменная) или внутри блока (группа команд, заключенная в фигурные скобки) и не имеющая явного указания на класс памяти, относится к классу памяти для автоматических переменных. Поле видимости автоматической переменной начинается от точки ее описания и заканчивается в конце блока, в котором переменная описана. Доступ к таким переменным из внешнего блока невозможен.
Память для автоматических переменных отводится динамически во время выполнения программы при входе в блок, в котором описана переменная. При выходе из блока память, отведенная под все его автоматические переменные, автоматически освобождается. Доступ к автоматической переменной возможен только из блока, где переменная описана, так как до момента входа в блок переменная вообще не существует.
6.2.8.2. Регистровые переменные Спецификатор памяти register может использоваться только для автоматических переменных или для формальных параметров функции. Такой спецификатор указывает компилятору на то, что пользователь желает разместить переменную не в оперативной памяти, а на одном из быстродействующих регистров компьютера. Рекомендуется спецификацию register использовать для переменных, доступ к которым в функции выполняется часто. Полученный в результате код будет выполняться быстрее.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|