- •1 Решение задачи. Основные этапы подготовки и решения задач на эвм. Аппаратно-программные средства поддерживающие решение задач.
- •2 Алгоритм, основные свойства. Типовые элементы внутренней структуры алгоритмов с примерами.
- •3 Способы описания алгоритмов. Сравнение различных способов описания.
- •4 Описание алгоритмов с помощью блок схем. Основные блоки и правила их оформления.
- •Окончание
- •Процесс
- •Предопределенный процесс
- •5 Понятие операционной системы. Файлы и каталоги в ms dos.
- •6 Основные команды ms dos.
- •7 Общая характеристика языка Си: происхождение, цели языка, отличительные особенности.
- •8 Составляющие языка Си: алфавит, синтаксис, семантика. Способы формального описания синтаксиса.
- •9 Основные типы данных языка Си.
- •10 Данные целого типа в языке Си. Диапазон значений, операции и функции. Внутреннее представление.
- •11 Данные вещественного типа в языке Си. Диапазон значений, операции и функции. Внутреннее представление.
- •12. Структура программы на языке Си. Лексемы.
- •13. Операции и выражения в языке Си.
- •14. Приоритеты операций в языке Си.
- •15. Элементарный ввод-вывод в языке Си.
- •16. Набор операторов языка Си и области их применения.
- •17. Условный оператор. Проблематика для вложенных условных операторов.
- •18. Оператор цикла while. Область применения, особенности использования.
- •19. Оператор цикла do-while.
- •20. Оператор цикла for.
- •21. Вложенные циклы.
- •22. Оператор switch.
- •23. Одномерные массивы.
- •24. Двумерные массивы.Инициализация массивов.
14. Приоритеты операций в языке Си.
Приоритет операций.
Всем наверно с детства знакома задачка с подковыркой, когда опоненту говорят сколько будет два плюс два умножить на два. Многие забывают что в математике сначала надо умножать, а потом только прибавлять, и потому ответ не 8, а 6.
В языке программирования Си, тоже есть определенны порядок выполнения арифметических операций. Он очень похож на тот, который мы используем в обычной жизни.
Операции в скобках
Функции (типа sqrt, cos и другие)
Умножение, деление, остаток от деления (слева направо, как в обычной жизни)
Сложение вычитание (слева направо, как в обычной жизни)
Для примера рассмотрим следующее выражение записанное на языке Си:
Приоритет арифметических операций
Над каждым действием вы видите каким оно выполняется по счету.
Для изменения порядка выполнения операций используются круглые скобки. Например, если записать:
Листинг 4.10
x = a/b*c;
Компьютер сначала поделит а на b, и потом умножит полученный результат на с. Но, если нам надо посчитать чему равно a деленное на произведение b*c, тогда нужно использовать скобки.
Листинг 4.11
x = a/(b*c);
15. Элементарный ввод-вывод в языке Си.
Функция форматного вывода printf()
Оператор вызова этой функции имеет вид:
printf(форматная_строка, список_вывода)
Список вывода содержит перечисленные через запятую имена выводимых переменных, т. е. показывает, что выводить. В список вывода можно включать не только переменные, но и произвольные выражения (в частном случае константы).
Форматная строка показывает, в каком виде значения переменных будут выведены на экран. В простейшем случае форматная строка - это строковая константа, т. е. она ограничена двойными кавычками. Форматная строка может содержать:
произвольный текст (обычно он поясняет значения выводимых переменных); среди символов этого текста могут быть и управляющие; в несложных программах этого пособия часто будет использоваться управляющий символ '\n' ;
спецификации форматов, показывающие, в каком виде должны выводиться значения переменных; каждая спецификация соответствует одной переменной; спецификации встречаются в форматной строке в том порядке, в каком перечисляются выводимые переменные в списке вывода; каждая спецификация начинается с символа %; спецификация стоит в том месте текста, где должно выводиться значение соответствующей переменной.
Спецификация формата вывода или ввода
В простейшем виде спецификация формата имеет вид:
%ширина_поля.точность спецификатор
Ширина поля - положительное целое число, задающее минимальное количество позиций, занимаемых выводимым значением; если число символов в выводимом значении меньше, чем ширина поля, то выводимое значение дополняется пробелами до минимальной длины; если число символов в выводимом значении больше ширины поля или ширина поля не задана, то печатаются все символы значения (ширина поля игнорируется).
Точность - положительное целое число, указывается в основном для вещественных чисел, означая в этом случае количество выводимых после десятичной точки цифр.
На первых этапах обучения программированию достаточно следующих спецификаторов:
d - для целых значений (типов int, char, unsigned);
f - для вещественных значений (типов float, double);
e - для вещественных значений (типов float, double)с указанием порядка, т. е. в виде:
Другие примеры оператора printf() представлены на рис.1.
Функция форматного ввода scanf()
Оператор вызова этой функции имеет вид:
scanf(форматная_строка, список_ввода)
Список ввода показывает, что выводить. Он содержит перечисленные через запятую адреса вводимых переменных. Почему адреса, а не имена переменных станет понятно после знакомства с функциями Си (часть I I пособия). Записать адрес переменной нетрудно, используя операцию & (см. таблицу 3). В список ввода не могут входить выражения или константы, так как ввод предполагает изменение значения.
Форматная строка - это строковая константа, которая, так же как при выводе, показывает, в каком виде значения переменных будут выглядеть на экране. Форматная строка при вводе содержит только спецификации формата, включать в нее какой либо пояснительный текст бессмысленно. Спецификации формата при вводе записываются так же при выводе, но ширина поля и точность обычно упускаются.
Пример функции scanf:
int i; float a;
printf("Введите i и a\n"); /* вывод приглашения к вводу */
scanf("%d%f", &i, &a);...
Форма ввода :
Введите i и a
В фигурные скобки принято заключать альтернативные фрагменты формы ввода или вывода. В данном примере значения i и a можно располагать на одной строке экрана, разделяя их пробелами, а можно на разных строках, разделяя их нажатием клавиши Enter.
Заметим также, что при вводе строк символов с помощью функции scanf() действуют более сложные правила. Так, в буфер устройства ввода считываются все символы до нажатия Enter, а в вводимую строковую переменную передаются символы до первого пробела. Такой принцип работы scanf() имеет свои преимущества, но они слишком трудны при начальном освоении языка Си. Поэтому для ввода и вывода строк лучше пользоваться функциями gets() и puts().