Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика (1 семестр).doc
Скачиваний:
144
Добавлен:
11.06.2015
Размер:
777.73 Кб
Скачать

3.Определение переменных в с. Определение констант. Инициализация переменных.

Константа — это величина, которая при выполнении программы остаётся неизменной.

Переменная — это ячейка памяти для временного хранения данных. Предполагается, что в процессе выполнения программы значения переменных могут изменяться.

Описание и инициализация переменных Прежде чем использовать в программе какую-то переменную, надо дать ей описание, то есть сказать, какое имя имеет переменная и каков её тип. Вначале указывается тип переменной, а затем её имя. Например:

Int k; // это переменная целого типа int

double x; // это переменная вещественного типа удвоенной точности

Если имеется несколько переменных одного типа, то допускается их описание через запятую в одном операторе, например: double a, b, c;

После описания переменной её можно использовать, но возникает вопрос: а какое значение имеет переменная сразу же после её описания? Ответ таков: в программе на языке C или C++ переменная после описания имеет произвольное значение, то есть ей просто выделяется свободный участок памяти и на этом всё заканчивается. В переменной хранится та последовательность двоичных цифр, которая была там до выделения памяти под эту переменную. Такой подход таит определённую опасность: можно по ошибке использовать в выражении переменную, которой не было присвоено ни какое значение: double x, y;

y = 2 * x;

Так как переменная x ни как не была определена, т. е. имела произвольное значение (чаще всего — это очень большое число или наоборот — очень маленькое), то и переменная y получит явно не то значение, на которое рассчитывал пользователь.

Чтобы избежать такой ошибки рекомендуется инициализировать переменные, то есть не просто выделять память под переменные, но и задавать им при этом необходимые значения. Например: double a=3, b=4, c=5;

Инициализация переменных выполняется один раз на этапе компиляции, она не снижает скорость работы программы, но при этом уменьшает риск использования переменной, которая не получила ни какого значения.

4. Ввод и вывод данных. Универсальные функции ввода и ввода.

Функция scanf

Обращение к этой функции имеет вид:

scanf (Управляющая_строка,&Имя1,&Имя2,...,&ИмяN);,

где: 1) Имя1,Имя2,...,ИмяN - это имена переменных, значения которых надо ввести. Смысл символа "&" перед именем будет раскрыт ниже;2) Управляющая_строка - это строка символов, которая задает количество и типы вводимых переменных. Делается это так: в формате указывается символ %, за которым следует буква, определяющая тип вводимой переменной. Сочетание %буква является спецификацией преобразования. При вводе мы будем пользоваться следующими спецификациями: %d - ввести целое число; %c - ввести один символ; %s - ввести строку символов. Спецификации преобразования должны соответствовать количеству и типу вводимых переменных. К счастью, при применении функции scanf() мы ничего не должны знать о смысле символа "&". Необходимо запомнить только два правила. Если нужно ввести некоторое значение и присвоить его переменной одного из основных типов, то перед именем переменной требуется писать символ &. Если требуется ввести значение строковой переменной, то использовать символ & не нужно. Функция scanf() использует некоторые специальные знаки (пробелы, символы табуляции и символ "новая строка") для разбиения входных символов на отдельные поля. Она согласует последовательность спецификаций преобразования с последовательностью полей, опуская упомянутые специальные знаки между ними. При обращении к функции scanf() выполнение программы приостанавливается, и нужно ввести значения для указанных переменных, после чего работа программы продолжается.

Пример 1.

#include<stdio.h>

main ()

{

int a,b,c,d,e;

/* При вводе каждое число должно */

/* отделяться от другого пробелом */

scanf ("\n %d%d%d%d%d",&a,&b,&c,&d,&e);

printf ("\n %d %d %d %d %d",a,b,c,d,e);

}

Управляющая строка может содержать: пробелы ' ', символы табуляции '\t' и перевода

строки '\n', которые просто игнорируются; обычные символы (кроме символа "%"), которые предполагаются совпадающими с очередными (отличными от символов, перечисленных в предыдущем пункте) символами входного потока; спецификации преобразования, состоящие из %, необязательного символа "подавления" присваивания "*", необязательного числа, задающего максимальную ширину поля и символа преобразования. Спецификация преобразования управляет преобразованием очередного входного поля. Результат обычно помещается в переменную, на которую ссылается соответствующий параметр. Однако, если присутствует символ "*", то входное поле просто пропускается, и никакого присваивания не производится. Перечислим основные символы преобразования: d - десятичное число; x - шестнадцатеричное число; o - восьмеричное число; c - символ; s - строка символов. Форматный вывод - функция printf

Две функции: printf для вывода и scanf для ввода (следующий раздел) позволяют преобразовывать численные величины в символьное представлeние и обратно. Они также позволяют генерировать и интерпретировать форматные строки. Мы уже всюду в предыдущих главах неформально использовали функцию printf; здесь приводится более полное и точное описание. Функция printf(control, arg1, arg2, ...)преобразует, определяет формат и печатает свои аргументы в стандартный вывод под управлением строки control. Управляющая строка содержит два типа объектов: обычные символы, которые просто копируются в выходной поток, и спецификации преобразований, каждая из которых вызывает преобразование и печать очередного аргумента printf. Каждая спецификация преобразования начинается с символа % и заканчивается символом преобразования. Между % и символом преобразования могут находиться:

- знак минус, который указывает о выравнивании преобразован ного аргумента по левому краю его поля. Строка цифр, задающая минимальную ширину поля. Преобразо ванное число будет напечатано в поле по крайней мере этой ширины, а если необходимо, то и в более широком. Если преjбразованный аргумент имеет меньше символов, чем указанная ширина поля, то он будет дополнен слева (или справа, если было указано выравнивание по левому краю)заполняющими символами до этой ширины. Заполняющим символом обычно является пробел, а если ширина поля указывается с лидирующим нулем, то этим символом будет нуль (лидирующий нуль в данном случае не означает восьмеричной ширины поля). Точка, которая отделяет ширину поля от следующей строки цифр. Строка цифр (точность), которая указывает максимальное число символов строки, которые должны быть напечатаны, или число печатаемых справа от десятичной точки цифр для переменных типа float или double. Модификатор длины l, который указывает, что соответствую щий элемент данных имеет тип long, а не int. Ниже приводятся символы преобразования и их смысл: d - аргумент преобразуется к десятичному виду. o - Аргумент преобразуется в беззнаковую восьмеричную форму (без лидирующего нуля). x - Аргумент преобразуется в беззнаковую шестнадцатеричную форму (без лидирующих 0x). u - Аргумент преобразуется в беззнаковую десятичную форму. c - Аргумент рассматривается как отдельный символ. s - Аргумент является строкой: символы строки печатаются до тех пор, пока не будет достигнут нулевой символ или не бу дет напечатано количество символов, указанное в специфика ции точности. e - Аргумент, рассматриваемый как переменная типа float или double, преобразуется в десятичную форму в виде [-]m.nnnnnne[+-]xx, где длина строки из n определяется указанной точностью. Точность по умолчанию равна 6. f - Аргумент, рассматриваемый как переменная типа float или double, преобразуется в десятичную форму в виде [-]mmm.nnnnn, где длина строки из n определяется указанной точностью. Точность по умолчанию равна 6. отметим, что эта точность не определяет количество печатаемых в формате f значащих цифр. g - Используется или формат Если идущий за % символ не является символом преобразования, то печатается сам этот символ; следовательно,символ % можно напечатать, указав %%. Большинство из форматных преобразований очевидно и было проиллюстрировано в предыдущих главах. Единственным исключением является то, как точность взаимодействует со строками. Следующая таблица демонстрирует влияние задания различных спецификаций на печать "hello, world" (12 символов). Мы поместили двоеточия вокруг каждого поля для того, чтобы вы могли видеть его протяженность. Предостережение: printf использует свой первый аргумент для определения числа последующих аргументов и их типов. Если количество аргументов окажется недостаточным или они будут иметь несоответственные типы, то возникнет путаница и вы получите бессмысленные результаты. Cin- это объект входного потока пространства имен std:std::cin >> x;В данном коде программыиспользуется оператор cin, операция взятия из потока >>чтобы получить от пользователя введенное им значение. Объектstd::cin забирает вводимую пользователем информацию из стандартного потока ввода, который обычно является клавиатура. Функция Cin достаточно интелектуальна, чтобы понять, какая информация введена с клавиатуры. Ведь мы можем ввести целое число, а также можем ввести дробное, сивмольное или текст.Cout - это объект выходного потока пространства имен std::. Это необъявленный идентификатор. Его не нужно объявлять. Его нужно только подключать к программе при помощи слова include: #include <iostream> std::cout <<"Выходной поток";В данном коде программы используется оператор cout, операция поместить в поток<<, чтобы вывести на экран пользователю определенную информацию. В данном случае на экран выведится Выходной поток. Cout достаточно умный, чтобы определить, что нужно вывести на экран, то есть это будет переменная дробного числа или целого или символьного.