Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Выражения. Функция форматированного ввода

Функция форматированного ввода

Для ввода данных с клавиатуры ЭВМ в программе используют функцию scanf() – эта функция выполняет чтение кодов, вводимых с клавиатуры, как видимых, так и управляющих кодов. Функция воспринимает коды, преобразует их во внутренний формат и передает программе. Для подключения к программе описаний средств вывода из стандартной библиотеки компилятора используется директива #include <stdio.h>.

Общий вид:

scanf(форматная_строка, &список_аргументов);

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

В отличие от функции printf() аргументами для функции scanf() могут быть только адреса объектов программы, в частном случае – адреса ее переменных. Выражение для получения адреса переменной будет таким: & имя_переменной.

 

Пример [программа pr_2]:

int x;

float y;

scanf(“%d”, &x); /*или scanf(“%d%f”, &x, &y);*/

scanf(“%f”, &y);

 

При наборе входной информации на клавиатуре функция scanf() начинает ввод данных после нажатия клавиши Enter. До этого набираемые на клавиатуре символы помещаются в специально выделенную операционной системой область памяти – в буфер клавиатуры и одновременно отображаются на экране в виде строки ввода. До нажатия клавиши Enter разрешено редактировать данные в строке ввода.

Оператор – это определение действия и логики (порядка) выполнения этих действий в программе. Среди операторов выделяют выполняемые последовательно операторы и управляющие операторы. Каждый оператор языка Си заканчивается и идентифицируется разделителем «;».

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

Порядок выполнения операций определяется рангом (приоритетом) операции и правилами группировки (ассоциативность). Для изменения порядка выполнения операций и их группирования используют разделители (круглые скобки).

В общем случае, унарные операции, условная операция и операции присваивания правоассоциативны, а остальные операции левоассоциативны: выражение x = y = z; означает x = (y = z); выражение x+ y –z; означает (x + y) – z.

 

Пример [программа pr_3]:

#include <stdio.h>

#include <conio.h>

main()

{

int a = 1, b = 2, c = 3;

clrscr();

a += a++ / ++a * 2 + (b-- + c++) % 3 + 1 / 2 * c++;

printf("a=%d b=%d c=%d ", a, b, c);

printf("Press any key... ");

getch();

return 0;

}

Рисунок 4. Приоритет выполнения операция для вычисления выражения

 

Рисунок 5. Блок схема

 

Рисунок 6. Результат выполнения программы

 

 

Лекция № 5

 

Написал Дмитрий
25.11.2008
Стандартное преобразование (приведение) типов При вычислении выражений некоторые операции требуют, чтобы операнды имели соответствующий тип, а если требования к типу не выполнены, принудительно вызывают выполнение нужных преобразований. Та же ситуация возникает при инициализации, когда тип инициализирующего выражения приводит к типу определяемого объекта. Среди преобразования типов в языке Си выделяют: 1. преобразование операндов в арифметических выражениях; 2. преобразование указателей; 3. преобразование ссылок.   Пример:
Неявное приведение типов Явное приведение типов I способ Явное приведение типов II способ  
int x = 5; float y; y = 1/x;   Ответ: y = 0.000000; int x = 5; float y; y = 1.0/x;   Ответ: y = 0.200000; int x = 5; float y; y = (float) 1/ (float) x;   Ответ: y = 0.200000;

 

Так как первой операцией, которая буте выполнена, является деление, а операнды трактуются компилятором как целые, то результат деления будет приведен в целый вид. Таким образом, значение переменной их после присваивания будет равно 0.000000. В данном случае, мы имеем неявное приведение типов, которое выполнится компилятором. Для устранения потери вещественной части числа требуется явно произвести приведение типов или константы, или переменной.

Для явного приведения типов арифметических выражений используются 2 способа преобразования:

1. каноническая операция приведения типов: (float) 2/5, (int) 7.12; может применяться и для типов, имеющих сложные обозначения: (int) x/(2+x);

2. функциональная операция приведения типов (не может применяться для для типов, не имеющих простого имени): int (3.1415), float (2/5);

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

Рисунок 7. Арифметические преобразования типов

На рисунке 7 стрелками отмечены арифметические преобразования, гарантирующие сохранение точности и неизменность численного значения.

Математические функции (библиотека math.h)

Для вычисления сложных математических функций в языке Си существует специальная библиотека –math.h, функции которой приведены в таблице 7.

 

Таблица 7

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

 

№ пп Функция Описание действий
1. double sqrt(x) Возвращает положительное значение квадратного корня
2. double pow(x, y) Возвращает значение x в степени y
3. double log(x) Возвращает значение натурального логарифма
4. double log10(x) Возвращает значение десятичного логарифма
5. double exp(x) Возвращает значение экспоненциальной функции
6. double sin(x) Функция синуса, угол задается в радианах
7. double cos(x) Функция косинуса, угол задается в радианах
8. double tan(x) Функция тангенса, угол задается в радианах
9. double atan(x) Функция арктангенса
10. int abs(x) Возвращает абсолютное значение целого аргумента x
double fabs(x) Возвращает абсолютное значение вещественного аргумента x

 

<== предыдущая лекция | следующая лекция ==>
Функция форматированного вывода | Структура программы на языке Си
Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 370; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.