- •Мiнiстерство аграрної політики україни миколаївський державний аграрний університет методичні вказівки
- •Миколаїв –2003
- •Введение
- •1. Понятие переменной
- •2. Арифметические операции
- •3. Логические операции
- •4. Основные операторы (ключевые слова)
- •4.1 Арифметические операторы.
- •4.2 Оператор условия if.
- •4.3. Оператор цикла for.
- •4.4. Оператор безусловного перехода goto.
- •4.5. Оператор цикла while.
- •If(условие)
- •4.6. Ключевые слова break и continue.
- •5. Основные правила составления программ.
- •5.1. Подключение необходимых библиотек языка Си.
- •5.2. Ключевое слово main().
- •Void main ()
- •5.3. Описание переменных.
- •5.4. Реализация основных математических функции в языке Си.
- •6. Массивы
- •6.1. Описание массивов.
- •6.2. Конструкция #define для объявления размерности массивов.
- •Void main()
- •6.3. Инициализация массивов при объявлении.
- •7. Функция printf().
- •7.1. Вывод на экран заданного текста.
- •7.2. Вывод на экран значений переменных.
- •8. Примеры программ.
- •8.1. Печать координат вектора превышающих заданный порог.
- •8.2. Умножение двух прямоугольных матриц.
- •Void main()
- •8.3. Разложение числа на простые множители.
- •Void main()
- •8.4. Решение физической задачи.
- •Void main()
- •9. Работа с компилятором языка си
- •9.1. Подготовка к запуску компилятора.
- •9.2. Набор текста программы и его редактирование.
- •9.3. Компиляция и отладка программы.
- •9.4. Запуск программы на исполнение.
- •10. Ввод информации в программу с экрана
- •10.1. Функция scanf().
- •Int day, year;
- •10.2. Примеры программ, использующих ввод данных с экрана. Ввод вектора с экрана.
- •Void main()
- •Ввод даты с экрана.
- •Void main()
- •Доработка программы решения физической задачи из раздела 8.4.
- •Void main()
- •11. Управление работой программы с клавиатуры.
- •11.1. Предпочтительные функции для работы с клавиатурой.
- •11.2. Программа печати кода нажатой клавиши.
- •Void main()
- •12. Создание пользовательских функций.
- •12.1. Общие правила написания пользовательских функций.
- •12.2. Пример использования пользовательских функций.
- •Void main()
- •13. Представление о графических функциях языка с.
- •13.1. Подготовка графического режима.
- •Initgraph(&graphdriver, &graphmode," ");
- •13.2. Наиболее употребляемые графические функции.
- •13.3. Примеры программ использующих графический режим. Разноцветные концентрические кольца.
- •Void main()
- •Initgraph(&graphdriver,&graphmode," ");
- •Управления движением курсора.
- •Void cursor(int dh,int iocur,int jocur,int incur,int jncur);
- •Void main()
- •Initgraph(&graphdriver,&graphmode," ");
- •Void cursor(int dh, int iocur,int jocur,int incur,int jncur)
- •14. Упражнения для самостоятельной работы.
- •15. Задачи для самостоятельного составления программ
- •15.1. Не сложные задачи.
- •15.2. Задачи средней сложности.
- •15.3. Задачи повышенной сложности.
- •16. Разбиение материала на модули
- •Список литературы
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. Общие правила написания пользовательских функций.
Тело функции, т.е. последовательность операторов выполняемых функцией, помещается вне main() функции. Это может быть тот же файл, где находится main() функция, или другой файл, объединенный с файлом, содержащим main() функцию, единым проектом.
Тело функции состоит из типа функции (тип возвращаемой переменной) ее имени и типов аргументов в круглых скобках, разделенных запятыми, и далее в фигурных скобках следуют операторы, выполняемые функцией:
Тип функции Имя функции (тип арг1,тип арг2,…,тип аргN)
{ Описание переменных;
Операторы;
}
Если функция ничего не должна возвращать, аналогично при отсутствии аргументов, используется ключевое слово void.К имени функции предъявляются те же требования, что и к имени переменной. Разумеется, нельзя использовать одно и то же имя для переменной и функции.
Если тело функции помещено после основной функции main(), перед main() необходимо поместить ее прототип. Прототип функции совпадает с первой строкой тела функции и завершается точкой с запятой. Прототип используется для проверки правильности вызова функции.
Функцию можно вызвать с любого места main() функции или другой пользовательской функции строкой Имя функции (арг1,арг2,…,аргN);
Возврат значения функции обеспечивается использованием в теле функции ключевого слова 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); // Прототипфункции