Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
met_cv.doc
Скачиваний:
12
Добавлен:
04.06.2015
Размер:
973.31 Кб
Скачать

11. Управление работой программы с клавиатуры.

11.1. Предпочтительные функции для работы с клавиатурой.

В языке Си около десятка функций для работы с клавиатурой, выделим из них две, на наш взгляд, наиболее удачных.

Функция int kbhit(void) из библиоьеки <conio.h> возвращает не нулевое значение, если какая либо клавиша была нажата, слово void в скобках означает отсутствие аргумента.

Функция int bioskey(int cmd) из библиоьеки <.h> возвращает код нажатой клавиши, аргумент cmd определяет порядок работы с буфером клавиатуры, его будем задавать всегда равным нулю. Из-за логики работы с буфером клавиатуры эти две функции, в основном, надо использовать совместно.

11.2. Программа печати кода нажатой клавиши.

#include <bios.h>

#include <stdio.h>

#include <conio.h>

#define ESC 283

Void main()

{ int bios=0;

while(bios != ESC)

if(kbhit() != 0)

{ bios=bioskey(0);

printf(" %d ",bios);

}

}

Программа печатает код нажатой клавиши, если нажать клавишу ESC, то завершает свою работу.

Другой пример управления работой программы с клавиатуры приведен в разделе 13.

12. Создание пользовательских функций.

Пользовательские функции используются для структурирования программ. Без их использования не может быть отлажена любая мало-мальски сложная программа.

12.1. Общие правила написания пользовательских функций.

  1. Тело функции, т.е. последовательность операторов выполняемых функцией, помещается вне main() функции. Это может быть тот же файл, где находится main() функция, или другой файл, объединенный с файлом, содержащим main() функцию, единым проектом.

  2. Тело функции состоит из типа функции (тип возвращаемой переменной) ее имени и типов аргументов в круглых скобках, разделенных запятыми, и далее в фигурных скобках следуют операторы, выполняемые функцией:

Тип функции Имя функции (тип арг1,тип арг2,…,тип аргN)

{ Описание переменных;

Операторы;

}

Если функция ничего не должна возвращать, аналогично при отсутствии аргументов, используется ключевое слово void.К имени функции предъявляются те же требования, что и к имени переменной. Разумеется, нельзя использовать одно и то же имя для переменной и функции.

  1. Если тело функции помещено после основной функции main(), перед main() необходимо поместить ее прототип. Прототип функции совпадает с первой строкой тела функции и завершается точкой с запятой. Прототип используется для проверки правильности вызова функции.

  2. Функцию можно вызвать с любого места main() функции или другой пользовательской функции строкой Имя функции (арг1,арг2,…,аргN);

  3. Возврат значения функции обеспечивается использованием в теле функции ключевого слова return.

12.2. Пример использования пользовательских функций.

Рассмотрим алгоритм численного решения аналитически заданного уравнения. В общем виде такой алгоритм не рассматривается. Рассмотрим случай нахождения одного корня уравнения f(x)=0, предполагая, что интервал, содержащий только этот корень нам известен, функция непрерывна и корень образован не касанием функцией оси x, а ее пересечением. Информация, предположенная известной, обычно, легко извлекается из графика функции. В этом случае можно применить метод интервалов, заключающийся в последовательном делении интервала пополам с определением на каждом шаге под интервала, содержащего корень. Решение о нужном интервале может быть принято по знаку произведения f(xn)f(xt), где xn начало интервала, а xt его середина. Если произведение отрицательно, корень в левом под интервале, если положительно – в правом, если равно нулю, то xt – корень (предполагая, что концы начального интервала не являются корнями).

#include<stdio.h>

#include<math.h>

#include<conio.h>

double f(double x); // Прототипфункции

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]