Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Текущее системное время Mon Jan 01 16:13:51 1996



Как видите, программа использует функции time и ctime. В случае функции ctime программа передает адрес переменной system_time, используя оператор адреса, описанный в уроке 10. Для использования этих функций вам просто следует включить заголовочный файл time.h в начало вашего исходного файла.

Подобным образом следующая программа SQRT.CPP использует функцию sqrt для возврата квадратного корня нескольких значений. Прототип функции sqrt находится в заголовочном файле math.h:

#include < iostream.h>
#include < math.h> // Содержит прототип sqrt

void main(void)

{
cout < < «квадратный корень 100.0 равен » < < sqrt(100.0) < < endl;
cout < < «Квадратный корень 10.0 равен » < < sqrt (10.0) < < endl;
cout < < «квадратный корень 5.0 равен » < < sqrt(5.0) < < endl;
}

Наконец, программа SYSCALL.CPP использует функцию system, прототип которой определяется в заголовочном файле stdlib.h. Функция systemобеспечивает легкий способ выполнения вашей программой команды операционной системы, такой как «DIR», или другой программы:

#include < stdlib.h>

void main(void)

{
system(«DIR»);
}

В этом случае программа использует функцию system для вызова команды MS-DOS DIR. Выберите время для эксперимента с этой программой, запуская другие команды или даже одну из программ, созданных вами ранее при изучении этой книги.

ИЗУЧЕНИЕ ФУНКЦИЙ БИБЛИОТЕКИ ЭТАПА ВЫПОЛНЕНИЯ

Ваш компилятор C++ обеспечивает сотни функций библиотеки этапа выполнения. Документация, поставляемая с вашим компилятором, должна содержать полное описание всех функций библиотеки этапа выполнения. Если вы просмотрите эту документацию, то найдете, что функции обычно используют простые прототипы. Например, для функции sqrt вы могли бы найти следующий прототип:

double sqrt(double);

В данном случае прототип функции сообщает вам, что функция возвращает значение типа double и ожидает параметр тоже типа double.Аналогично этому можно найти следующий прототип для функции time:

time_t time (time_t *);

И опять прототип сообщает вам, что функция возвращает значение типаtime_t (этот тип определен в заголовочном файле time.h). Функция ожидает, что ее параметр должен быть указателем на переменную типаtime_t. По мере чтения документации о функциях библиотеки этапа выполнения вы очень много узнаете о самих функциях и о C++, при этом обращайте внимание на прототипы функций.

Другой путь изучения библиотечных функций вашего компилятора состоит в просмотре заголовочных файлов, содержащихся в подкаталоге INCLUDE. Выделите время, например, для того, чтобы сейчас распечатать заголовочные файлы math.h, time.h и stdlib.h, которые вы использовали в программах этого урока.

Использование функций API

В дополнение к стандартной библиотеке этапа выполнения многие компиляторы обеспечивают функции API или интерфейс прикладных программ. Например, если вы программируете в среде Windows, то вам потребуются функции графического API, телефонного API (TAPI), API для мультимедиа и т. д. Прежде чем создавать свои собственные функции, убедитесь, что вы не нашли таких функций в API, предоставляемом вашим компилятором.

ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ

Библиотека этапа выполнения C++ предоставляет мощный набор функций, которые вы можете использовать в ваших программах. Не жалейте времени, чтобы изучить документацию по библиотеке этапа выполнения, поставляемой с вашим компилятором. Выясните смысл функций, имеющихся в библиотеке этапа выполнения. Преимущество этих функций состоит в том, что вы избавляетесь от значительного объема программирования. В уроке 12 вы научитесь обращаться с локальными переменными и областью видимости (участок вашей программы, где известно имя переменной). Прежде чем перейти к уроку 12, убедитесь, что вы освоили следующие основные концепции:

1. Библиотека этапа выполнения представляет собой набор функций, обеспечиваемых компилятором для ваших программ.

2. Для использования функции из библиотеки этапа выполнения вы должны указать ее прототип.

3. Большинство компиляторов C++ предоставляют заголовочные файлы, которые содержат корректные прототипы для каждой библиотечной функции.

4. В дополнение к библиотеке этапа выполнения многие компиляторы C++ предоставляют функции API (интерфейс прикладных программ) для выполнения определенных задач, например программирования графики или мультимедиа.

Как вы уже знаете, функции позволяют разделить программу на небольшие легко управляемые части. Все функции, используемые вами до настоящего момента, были совершенно просты. Как только вашим функциям потребуется выполнить более сложную работу, они должны будут использовать переменные для реализации своих задач. Переменные, объявляемые внутри функции, называются локальными переменными. Их значения и даже сам факт, что локальные переменные существуют, известны только данной функции, Другими словами, если вы объявляете локальную переменную с именем salary в функции payroll, то другие функции не имеют доступа к значению переменной salary. Фактически, другие функции не имеют никакого представления о том, что переменнаяsalary существует. Этот урок рассматривает область видимости переменной, или участок внутри вашей программы, в котором переменная известна. К концу этого урока вы освоите следующие основные концепции:

• Вы объявляете локальные переменные внутри функции точно так же, как и внутри main: указывая тип и имя переменной.

• Имена переменных, используемых внутри функций, должны быть уникальными только по отношению к данной функции.

• Область видимости переменной определяет участок программы, где переменная известна и доступна.

• Глобальные переменные в отличие от локальных переменных известны на протяжении всей программы и доступны внутри всех функций.

• Оператор глобальной области видимости C++ (:: ) позволяет вам управлять областью видимости переменной.

Объявление локальных переменных внутри функции достаточно просто. Фактически вы уже это делали каждый раз, когда объявляли переменные внутри main.

ОБЪЯВЛЕНИЕ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ

Локальная переменная представляет собой переменную, определенную внутри функции. Такая переменная называется локальной, потому что ее известность ограничена данной функцией. Вы объявляете локальные переменные в начале функции после открывающей фигурной скобки:

void some_function(void)

{
int count;
float result;
}

Следующая программа USEBEEPS.CPP использует функцию sound_speaker, которая заставляет играть встроенный компьютерный динамик столько раз, сколько указано параметром beeps. Внутри функции so und_speaker локальная переменная counter хранит количество звуков, издаваемых динамиком:

#include < iostream.h>

void sound_beeps(int beeps)

{
for (int counter = 1; counter < = beeps; counter++) cout < < ‘\a’;
}

void main(void)

{
sound_beeps(2);
sound_beeps(3);
}

Как видите, функция sound_beeps объявляет переменную counter сразу же после открывающей фигурной скобки. Поскольку counter определяется внутри функции sound_beeps, эта переменная является локальной по отношению к sound_beeps, и это означает, что только sound_beeps знает об этой переменной и может к ней обращаться.

О конфликте имен

При объявлении локальных переменных внутри функции очень вероятно, что имя локальной переменной, объявляемой вами в одной функции, будет таким же, как и имя переменной, используемой в другой функции. Как уже упоминалось, локальные переменные известны только в текущей функции. Таким образом, если две функции используют одно и то же имя для своих локальных переменных, это не приводит к конфликту. C++ трактует имя каждой переменной как локальное по отношению к соответствующей функции. Следующая программа LCLNAME.CPP использует функцию add_values для сложения двух целочисленных значений. Эта функция присваивает свой результат локальной переменнойvalue. Однако в main один из параметров, передаваемых в функцию, также носит имя value. Тем не менее, поскольку C++ трактует обе переменные как локальные для соответствующих функций, их имена не конфликтуют:

#include < iostream.h>

int add_values(int a, int b)
{
int value;
value =a + b;
return(value);
}

void main (void)

{
int value = 1001;
int other value = 2002;
cout < < value < < » + » < < other_value < < » = » < < add_values(value, other_value) < < endl;
}

О локальных переменных

Локальные переменные представляют собой переменные, объявляемые внутри функции. Имя и значение локальной переменной известны только функции, внутри которой переменная объявлена. Вы должны объявлять локальные переменные в начале вашей функции сразу же после первой открывающей фигурной скобки. Имена, назначаемые локальным переменным, должны быть уникальными только для функции, внутри которой эти переменные определены. При объявлении локальной переменной внутри функции ее можно инициализировать с помощью оператора присваивания.

ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ

Как вы уже знаете, локальная переменная объявляется и известна только в определенной функции. В дополнение к локальным переменным C++ позволяет вашим программам объявлять глобальные переменные, которые известны на протяжении всей программы (глобально для всех функций). Чтобы объявить глобальную переменную, следует просто поместить объявление переменной в начало вашей программы вне какой-либо функции:

int some_global_variable; —> Объявление глобальной переменной

void main(void)

{
// Здесь должны быть операторы программы
}

Следующая программа GLOBAL. CPP использует глобальную переменную именем number. Каждая функция в программе может использовать (или изменять) значение глобальной переменной. В данном случае каждая функция выводит текущее значение этой переменной, а затем увеличивает это значение на единицу:

#include < iostream.h>

int number = 1001;

void first_change(void)

(
cout < < «значение number в first_cbange » < < number < < endl;
number++;
}

void second_change(void)

{
cout < < «значение number в second_change » < < number < < endl;
number++;
}

void main(void)

{
cout < < «значение number в main » < < number < < endl;
number++;
first_change ();
second_change();
}

Как правило, следует избегать использования в ваших программах глобальных переменных. Поскольку любая функция может изменить значение глобальной переменной, сложно отследить все функции, которые потенциально могли бы изменить данную переменную. Вместо этого вашим программам следует объявлять переменную внутри main и затем передавать ее (как параметр) в функции, которым она нужна. (Помните, что в данной ситуации в стек помещается временная копия этой переменной; оригинал не изменяется.)


Поделиться:



Популярное:

  1. B2 (базовый уровень, время – 4 мин)
  2. G дара 50-й Генный Ключ видит совершенно новую реальность социального взаимодействия людей, «в настоящее время находящуюся на самой ранней стадии проявления в мире.
  3. IX. Определите грамматическое время и залог всех глаголов в последнем абзаце.
  4. Анализ состояния рынка чёрного чая, в т.ч. особенности конъюнктуры Российского рынка в настоящее время.
  5. АНГЛИЙСКАЯ ДРАМА ВО ВРЕМЯ И ПОСЛЕ ШЕКСПИРА, ДО ЗАКРЫТИЯ ТЕАТРОВ
  6. Благодеяния Святителя Николая земле Русской в борьбе ее с первыми своими врагами и во время Батыева нашествия
  7. Бывало так, что мы видели молодой месяц, потом ещё один (, и за всё это время) в домах посланника Аллаха, да благословит его Аллах и да приветствует, не пекли хлеба».
  8. В каком из перечисленных случаев в светлое время суток требуется включение ближнего света фар для обозначения транспортного средства?
  9. В настоящее время в республике реализуются
  10. В настоящее время традиционная модель семьи разбивается, уже в раннем возрасте дети получают сексуальный опыт, половина всех браков в развивающихся странах заканчиваются разводами.
  11. В роли командира СВСК рассчитать время и оценить обстановку, сложившуюся на территории АПО в результате ЧС
  12. В это время к Валенту прибыли послы готов для переговоров о мире. Фактически Фритхигерн переговорами стремился выиграть время для того, чтобы вызванная им конница успела прибыть к началу боя.


Последнее изменение этой страницы: 2016-05-30; Просмотров: 552; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.029 с.)
Главная | Случайная страница | Обратная связь