![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функция ввода одиночного символа getch()Содержание книги Похожие статьи вашей тематики
Поиск на нашем сайте
Функции 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; просмотров: 895; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.185.28 (0.011 с.) |