- •Введение
- •Достоинства и недостатки языка c
- •Типы данных в с
- •Модификаторы
- •Константы
- •Арифметические операции
- •Логические операции
- •Оператор присваивания
- •Организация множественных выражений
- •Комбинированные операции
- •Локальные и глобальные объекты
- •Модификатор extern
- •Статические и динамические объекты
- •Регистровые переменные
- •Описание неизменяемых объектов
- •Указатели
- •Явное преобразование типа
- •Оператор if
- •Операторы циклов Оператор while
- •Оператор do ... While
- •Оператор for
- •Оператор switch (переключатель)
- •Операторы передачи управления
- •Прототипы функций
- •Передача данных в функцию
- •Структуры и определения типов пользователя
- •Битовые поля
- •Объединения
- •Псевдофункция sizeof
- •Основные директивы препроцессора
- •Основные директивы условной компиляции
- •Дополнительные данные по Turbo-c
- •Организация памяти на машинах класса pc. Виды указателей
- •Работа с указателями на функцию
- •Основные регистры общего назначения процессора
- •Модели памяти
- •Использование стека
- •Организация прерываний в программе. Модификатор volatile
- •Порядок передачи данных в функцию. Модификатор pascal
- •Передача данных в программу. Функция main
- •Разбор типовых ошибок и недочетов при программировании
- •Некоторые функции библиотеки Turbo-c
- •Функции работы с оперативной памятью эвм
- •Функции работы с клавиатурой
- •Работа с дисплеем в символьном режиме
- •Работа с дисплеем в графическом режиме
- •Функции работы с дисками
- •Функции работы с временными интервалами и звуком
- •Функции преобразования данных
- •Функции работы со строками
- •Математические функции
- •Функции работы с файлами и каталогами
- •Функции работы со временем и датой
- •Функции процессов
- •Функции работы с портами машины
- •Интерфейс с дос
- •Задачи на практические занятия
- •Литература
- •Оглавление
Функции работы с временными интервалами и звуком
1. Установка или чтение информации таймера. Прототип функции:
long biostime(int cmd, long newtime);
Если cmd=0, то функция возвращает текущее значение таймера, то есть количество тиков с 0 часов 0 минут текущего дня. Количество тиков - 18.2 в секунду (точное значение - 1193180/65536).
Если cmd=1, то newtime задает новое количество тиков с 0 часов 0 минут этого дня.
2. Пауза в программе. Прототипы функций:
void sleep(int seconds);
void delay(unsigned milliseconds);
Первая функция задает паузу в секундах, вторая - в миллисекундах.
3. Выдача звука заданной частоты. Прототип функции:
void sound(unsigned frequency);
void nosound(void);
Первая функция вызывает выдачу непрерывного звукового сигнала заданной частоты, а вторая - прекращение звука.
Пример определения быстродействия процессора:
#include <stdio.h>
#include <bios.h>
#include <math.h>
#include <conio.h>
main()
{
long i,tb,te;
long j=2000000L;
/* быстродействие тригонометрии */
tb=biostime(0,0);
for (i=1; i<=j; i++) sin(0.3);
te=biostime(0,0);
printf("\nМашина вычисляет %10.0f синусов в секунду!\n",j*18.2/(te-tb));
/* умножений ... */
tb=biostime(0,0);
j=40000000L;
for (i=1; i<=j; i++) 0.3*0.5;
te=biostime(0,0);
printf("\nМашина вычисляет %10.0f умножений в секунду!\n",j*18.2/(te-tb));
/* делений ... */
tb=biostime(0,0);
for (i=1; i<=j; i++) 0.3/0.5;
te=biostime(0,0);
printf("\nМашина вычисляет %10.0f делений в секунду!\n",j*18.2/(te-tb));
/* пауза до нажатия клавиши */
getch();
}
Функции преобразования данных
1. Преобразование целого в строку. Прототипы функций:
char *itoa(int value, char *string, int radix);
char *ltoa(long value, char *string, int radix);
char *ultoa(unsigned long value, char *string, int radix);
Эти функции преобразуют значение value в строку string, заканчивающуюся нулем. radix определяет основание (от 2 до 36). Если radix=10, то первым символом строки может быть знак числа “-” для функций itoa, ltoa. Функции возвращают указатель на string.
Пример получения двоичного кода числа:
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int a;
char b[20];
printf(“\nВведите целое число: “);
scanf(“%d”,&a);
itoa(a,b,2);
printf(“Для числа %d двоичный код %s”,a,b);
}
2. Преобразование строки в целое число. Прототип функций:
int atoi(char *nptr);
long atol(char *nptr);
3. Преобразование числа с плавающей точкой в строку. Прототипы функций:
char *fcvt(double value, int, int *decpt, int *sign);
char *ecvt(double value, int ndigit, int *decpt, int *sign);
char *gcvt(double value, int ndigit, char *buf);
Функция ecvt преобразует значение value в нуль-оканчивающуюся строку из ndigit цифр и возвращает указатель на эту строку. Десятичная точка позиционируется относительно начала строки по значению decpt (отрицательное значение относится к знакам слева). Если значение отрицательное, то sign не равно нулю.
fcvt аналогична ecvt, только значение округляется для F-формата Фортрана.
gcvt пытается преобразовать число в формат f, а если не удается, в формат e с порядком при ndigit значащих цифр. Возвращает эта функция указатель на buf.
4. Преобразование строки в число с плавающей точкой. Прототип функции:
double atof(char *nptr);