Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функция ввода одиночного символа getch()↑ ⇐ ПредыдущаяСтр 6 из 6 Содержание книги Похожие статьи вашей тематики
Поиск на нашем сайте
Функции scanf() и cscanf() требуют аккуратного ввода данных с клавиатуры, незначительная ошибка при вводе информации приводит к сбоям в работе программ. В добротных программах используется посимвольный ввод данных с помощью функции getch(), определяемую в той же библиотеке <conio.h>. Эта функция имеет два варианта применения: а) для остановки программы до нажатия произвольной клавиши, например, перед ее завершением. В этом случае листинг программы может быть таким { … getch(); /* Ожидание ввода произвольной клавиши */ } б) получение кода ASCII нажатой клавиши. Для получения кода клавиши необходимо объявить целую переменную и присвоить результат исполнения функции getch() этой переменной. При этом синтаксис использования функции может быть следующим: { int i; … i=getch(); /* Ожидание нажатия клавиши и присвоение ее кода символа переменной i */ … } Пример 3.3 Написать программу, принимающую символ с клавиатуры и выдающую его код на экран Листинг 3.3 /* программа вывода на экран кода нажатой клавиши */ #include <conio.h> void main() { int kod; /* объявление переменной */ clrscr(); /* очистка экрана */ cprintf(“Нажмите клавишу: ”); /* вывод сообщения */ kod=getch(); /* ввод клавиши */ cprintf(“\nКод клавиши: %d\n”); /* вывод кода клавиши */ getch(); /* ожидание нажатия произвольной клавиши */ } 3.6. Задание для самостоятельной работы 3.6.1. Записать отдельные строки программы, используя функции форматированного ввода-вывода: а) вывод на экран двух переменных типа символ, целой переменной в восьмеричном формате и переменной типа длинное целое (идентификаторы выбрать самостоятельно); б) вывод на экран значения переменных типа строка (массив символов) family, name, gruppa в следующем виде (после символов … должны идти значения указанных переменных): Фамилия: … Имя: … Группа: … в) вывести на экран две вещественные переменные в заданном формате: 10 позиций общая ширина поля переменной, 3 позиции – точность; г) ввод двух переменных типа беззнаковое целое first и second; д) ввод целой переменной x в шестнадцатеричном формате, вещественной переменной y и вещественной переменной двойной точности z; е) выполнить ввод вещественных переменных power, moment и velocity, используя функции ввода-вывода в следующем формате (после символов … должен идти ввод указанных переменных): Параметры двигателя: мощность двигателя – … момент двигателя – … скорость двигателя – …
3.6.2. Записать отдельные строки программы, используя только функции консольного ввода-вывода: а) очистить экран и далее вывести в центре экрана значения двух целых переменных б) вывести значения четырех вещественных переменных a, b, c и d в следующем виде (ширина поля каждой переменной – 8 позиций, точность – 0 позиций): a= … b=… c=… d=… в) выполнить предыдущий пример, но совмещенный с вводом значений этих переменных. 3.6.3. Написать программу: выполняется очистка экрана, вводится вещественное число, на экран выводится корень из введенного числа (функция корня находится в математической библиотеке и вызывается так: y=sqrt(x);). Вывод корня выполнить в следующем формате – выравнивание по левому краю, общая ширина поля – 10 позиций, точность – 2 символа после десятичной точки. 3.6.4. Составить программу, в которой: выполняется очистка экрана, рисуется на экране изображение окна, внутри окна выполняется ввод трех параметров двигателя (см. задачу 3.6.1,е).
ОСНОВНЫЕ ОПЕРАЦИИ ЯЗЫКА Операции языка Си В языке существует большое количество операций (операторов). С помощью операций языка выполняются вычисления, сравнения, присваивания, а также ряд специфических задач. Наиболее часто используемые приведены в табл. 4.1. При выполнении операторов учитываются следующие особенности их исполнения: а) каждой операции соответствует определенное количество операндов: – унарные операции, имеющие только один операнд, например, операция взятия адреса переменной x запишется так: &x, а операция инкрементирования переменной i: i++; – бинарные операции, имеющие два операнда, например, простейшие арифметические операции сложения, вычитания и т.д.: a+b или 4*x; – единственная трехоперандная операция в языке – операция выполнения условия <операнд1>? <операнд2>: <операнд3>. б) некоторые операции могут работать только с определенными типами данных, например, побитовые операции применяются только к целым типам данных; в) в сложных выражениях, содержащих ряд операций, исполнение большинства операций выполняется слева направо, за исключением, унарных операций и операций присваивания. Если необходимо задать строго определенный порядок исполнения выражения можно использовать круглые скобки; г) в сложных выражениях последовательность исполнения операций определяется их приоритетом (см. крайнюю правую колонку в табл. 4.1, где 1 – наибольший приоритет исполнения операции). Таблица 4.1.
Продолжение таблицы 4.1.
Арифметические операции Операции сложения, вычитания, умножения и деления можно использовать ко всем типам данных. Если операнды одного типа, то результат будет того же типа. Например, вычисляя выражение 12/5, так как операнды целые числа, то в результате получим целое число 2 (округление не выполняется). С другой стороны, если рассчитывается выражение 12./5, результатом будет вещественное число 2.4. Операция деление по модулю используется при необходимости вычисления остатка от деления целых чисел, например, при вычислении выражения 17%3, результатом будет целое число 2. Операции присваивания Эти операторы имеют наименьший приоритет при вычислении выражений, т.е. выполняются в последнюю очередь (за исключением оператора запятая). В языке Си знак равенства означает выполнение операции присваивания. Например, выражение x=10+3*4; означает, что вначале вычисляется выражение слева от знака равенства и затем результат присваивается переменной x. Поэтому выражения x=x+2; приобретают при программировании строго определенный смысл: вначале вычисляется выражение справа от знака равенства (к старому значению переменной x прибавляется число 2) и затем полученный результат присваивается переменной x. Оператор присваивания выполняется справа налево. В языке Си возможно использования выражений с несколькими операторами присваивания, например, допустимо использовать следующее выражение с=b=5*(a=5*45); Оно выполняется в следующем порядке: вычисляется значение 5*45, результат присваивается переменной ‘а’, затем эта переменная умножается на 5 и результат присваивается переменной ‘b’, и далее присваивается переменной ‘c’. Помимо традиционной операции присваивания в языке Си существуют дополнительные операции: +=, –=, *= и т.п. Например, операции слева и справа в приведенной ниже таблице идентичны
Достоинства этих операции – они выполняются быстрее, чем операции с обычным присваиванием. Пример 4.1 Пример использования арифметических операций и операций присваивания: Листинг 4.1 #include <stdio.h> void main() { int a=25,b=3,с,d; float x=25.,y=3,z; c=a/b; d=a%b; printf(“Деление целых чисел: %d\nОстаток: %d\n”,c,d); z=x/y; printf(“Деление вещественных чисел: %d %d\n”,c,d); a=a+10; y=y*3; printf(“Традиционная форма операции присваивания: %d %f\n”,a,y); a+=10; y*=3; printf(“Присваивание со сложение и умножением: %d %f”,a,y); }
Результат выполнения программы: Деление целых чисел: 8 остаток: 1 Деление вещественных чисел: 8.333333 Традиционная форма операции присваивания: 35 9.000000 Присваивание со сложение/умножением: 45 27.000000 Операции отношения Эти операции позволяют сравнивать друг с другом данные, например: x>0 y<=x z!=27 g==’\n’ Значения переменных после выполнения операции сравнения не изменяется, каждое выражения проверяется – истинно оно или ложно. В языке Си истинному значению выражения с операцией отношения соответствует единичный результат, ложному – нулевой. Например, выражение y=x>5; определяет значение переменной ‘у’ равным единице для ‘x’ равным 25 и равным нулю для ‘х’ равным –5. Согласно табл. 4.1. наибольшим приоритетом обладает операции ‘<’ и ‘>’, наименьшими равенство и неравенство. Поэтому, например, выражение (x>5 == y<10) будет выполняться в следующем порядке: – сравнение y<10; – сравнение x>5; – сравнение на равенство. Логические операции В языке Си отсутствуют данные типа булева переменная, но существуют логические операции, в которых можно использовать данные типа символ или целое в любой модификации. При этом подразумевается, что нулевое значение выражения соответствует значению «FALSE» (ложь), а любое другое – значению «TRUE» (истина). Эти операции: логическое умножение && (операция И), сложение || (операция ИЛИ) и отрицание! (операция НЕ). Результат выполнения этих операций для различных значений целых переменных a и b приведен в табл. 4.2. Таблица 4.2.
Следует отметить, что «истинным» значением переменной считается не только ее положительное значение, но и отрицательное. Если выражение при выполнении логической операции является «истиной», то результату присваивается значение единица, в противном случае – нулевое значение. Пример 4.2 Листинг 4.2 #include <stdio.h> void main() { int x=5,y=-3; printf(“x&&y x||y!x!y x>3 y>0\n”); printf(“%3d %3d %3d %3d %3d %3d”,x&&y,x||y,!x,!y,x>3,y>-10); }
Результатом исполнения программы будут строки на экране x&&y x||y!x!y x>3 y>0 1 1 0 0 1 0 Согласно табл. 4.1. наибольшим приоритетом среди логических операций обладает операция НЕ. Поэтому, например, оператор z=a&&b||!c&&d; будет выполняться в следующем порядке: – операция НЕ переменной c; – операция И операндов a и b; – операция И операндов (!c) и d; – операция ИЛИ операндов (a&&b) и (!c&&d). Логические операции можно использовать и для реализации сложных неравенств. Например, для составления условия 10<x<20 в языке Си необходимо записать логическое выражение (x>10 && x<20), а математическое выражение x<10Èx>20 можно представить в виде (x<10 || x>20). Битовые операции Эти операции позволяют выполнять проверку и изменение отдельных битов в данных целого и символьного типов. Их нельзя использовать для вещественных чисел. Действие битовых операций идентично логическим, но они выполняются над каждым битом данных. Каждая из битовых операций служит определенным целям. Например, операция & (И) полезна для проверки единичных значений отдельных битов числа, а также для установки определенных битов в «0». Операция | (ИЛИ) полезна для установки в «1» битов. Операция ^ (Исключающее ИЛИ) используется для проверки несовпадения битов. Операции сдвига << и >> позволяют сдвинуть все биты числа влево/вправо на заданное количество разрядов. Недостающие значения битов дополняются нулями, информация в исчезающих битах теряется. Примеры использования битовых операций приведены в табл. 4.3. Все переменные a, b, z этой таблицы типа unsigned char. Язык Си не умеет работать с данными в двоичном формате, но для упрощения понимания работы каждое число представлено в двоичном формате (например, для первой строки a=20210=110010102, b=15510=100110112). Таблица 4.3.
Следует отметить, что результатом исполнения битовой операции в отличии от логических операций будет число типа символ или целое, а не логические «0» или «1». Так, например, исполнение выражений b=a&&8 и b=a&8 при различных значениях переменной а даст такой результат:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 883; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.217.100 (0.01 с.) |