КАТЕГОРИИ: Архитектура-(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. преобразование ссылок.
Пример:
Так как первой операцией, которая буте выполнена, является деление, а операнды трактуются компилятором как целые, то результат деления будет приведен в целый вид. Таким образом, значение переменной их после присваивания будет равно 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 Математические функции
Дата добавления: 2014-01-20; Просмотров: 370; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |