- •Министерство образования Российской федерации новосибирский государственный технический университет
- •Часть 1
- •Работа подготовлена на кафедре
- •Последовательность этапов решения задач при нисходящем проектировании
- •Семь основных элементов программирования.
- •Другие функции вывода: puts() и putchar()
- •Типы данных
- •Использование gets() и getch() для ввода
- •Условные операторы
- •Операции сравнения
- •Логические операции
- •Операторы присваивания
- •Оператор запятая
- •Лабораторная работа № 1 условные операторы. Операторы цикла.
- •Цель работы
- •Общие положения Оператор if
- •Циклические конструкции в программах
- •3. Пример программной реализации
- •4. Варианты заданий
- •5. Контрольные вопросы.
- •Лабораторная работа № 2 массивы целых чисел. Символьные массивы.
- •1. Цель работы.
- •2. Общие положения.
- •3. Примеры программных реализаций
- •Пример 3. Введенное натуральное число записать в виде строки.
- •4. Варианты заданий
- •5. Контрольные вопросы
- •Лабораторная работа № 3 методы сортировки.
- •Цель работы
- •Общие положения
- •Сортировка простыми включениями.
- •Сортировка простым выбором.
- •Сортировка простым обменом.
- •Пример программной реализации
- •Варианты заданий.
- •Лабораторная работа № 4
- •Способы передачи параметров
- •Функция main()
- •Области действия функций. Определения и объявления
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 5 функции. Массивы указателей.
- •Цель работы
- •Общие положения
- •Примеры программных реализаций
- •Варианты заданий
- •Контрольные вопросы
Логические операции
Имеется также три логические операции: И (&&), ИЛИ (||) и НЕ(!).Логические операции работают с логическими значениями (истина или ложь) и позволяют составлять логические выражения.
- Эти логические операторы всегда дают в результате значение либо 0 (ложь), либо 1 (истина).
- Логические операторы && и !! известны как операторы типа "short circuit". Выполнение операторов такого типа прекращается, как только становится ясно, будет ли результат иметь значение истина или ложь. Предположим, что вы имеете выражение вида:
exp1 && exp2
Если exp1 - ложь, значит и все выражение ложь. Таким образом, exp2 никогда не будет вычисляться. Аналогично, если мы имеем выражение вида
exp1 !! exp2
то exp2 никогда не будет вычисляться, если exp1 верно.
Дополнительные сведения о выражениях
Прежде чем перейти к обсуждению операторов цикла, мы дадим некоторые комментарии к использованию выражений. Такие выражения, как (b == 0.0) и (a <= q*r) довольно привлекательны по своей красоте. Однако Си допускает написание более сложных и запутанных конструкций, чем эти.
Операторы присваивания
Любой оператор присваивания, заключенный в круглые скобки, является выражением с определенным значением, которое получается в результате этого присваивания.
Например, выражение (sum = 5+3) имеет значение 8, поэтому выражение ((sum = 5+3) <= 10) будет всегда иметь значение "истина" (т.к. 8 <= 10). Следующий пример:
if ((ch=getch()) = = 'q')
puts("До свидания! Программа завершена \n");
else
puts("Продолжаем работу! \n");
Как работает эта конструкция? Если в программе используется выражение ((ch=getch()) = = 'q'), то она, дойдя до него, останавливается и переходит в состояние ожидания ввода символа с клавиатуры. После того, как вы введете символ, осуществляется присваивание введенного символа переменной ch и выполняется сравнение введенного символа с символом 'q'. Если введенный символ равен 'q', то на экран будет выведено сообщение "До свидания! Программа завершена", в противном случае будет выведено сообщение "Продолжаем работу!".
Оператор запятая
Вы можете использовать оператор запятая (,) для организации множественных выражений, расположенных внутри круглых скобок. Выражение внутри скобок вычисляется слева направо, и все выражение принимает значение, которое было вычислено последним. Например, если oldch и ch имеют тип char, то выражение (oldch = ch, ch = getch()) присваивает переменной oldch значение ch, затем считывает символ, вводимый с клавиатуры, и запоминает его в ch. Результатом всего выражения, в итоге, будет значение введенного с клавиатуры символа. Приведем еще один пример:
ch='a';
if((oldch = ch, ch = 'b') == 'a')
puts("Это символ 'a'\n");
else
puts("Это символ 'b'\n");
Как вы считаете, какое сообщение будет выведено на экран вашего дисплея в результате выполнения приведенной выше программы?