визначення

визначення

Елементи даних, які будуть використовуватися в програмі мови користувача, повинні бути визначені перед тим, як їх можна буде використовувати. Існує три типи визначень:

  • Визначення констант
  • Визначення змінних
  • Визначення функцій

Область визначення константи або змінної сягає від рядка, в якому воно було визначено, до кінця поточного блоку або до кінця програми мови користувача, якщо визначення з’явилося поза будь-яким блоком.

Область визначення функції охоплює фігурну дужку (}) тіла функції до кінця програми мови користувача.

Визначення констант

Константи визначаються за допомогою ключового слова enum, як у

enum { a, b, c };

який визначав би три константи a, b і c, надаючи їм значення 0, 1 і 2 відповідно.

Константи також можна ініціалізувати певними значеннями, наприклад

enum { a, b = 5, c };

де a буде 0, b буде 5 і c буде 6.

Визначення змінних

Загальний синтаксис визначення змінної такий

[numeric] type identifier [= initializer][, ...];

де тип — один із типів даних або об’єктів, ідентифікатор — ім’я змінної, а ініціалізатор — необов’язкове початкове значення.

Кілька визначень змінних одного типу розділяються комами (,).

Якщо за ідентифікатором стоїть пара квадратних дужок ([ ]), це визначає масив змінних заданого типу. Розмір масиву автоматично регулюється під час виконання.

Додаткове ключове слово numeric можна використовувати з масивами рядків, щоб сортувати їх алфавітно-цифровим способом за допомогою функції sort() .

За замовчуванням (якщо ініціалізатор відсутній), змінні даних встановлюються на 0 (або "", у випадку рядка), а змінні об'єкта є "недійсними".

Приклади

int i; визначає змінну int з іменем i
рядок s = "Привіт"; визначає рядкову змінну з назвою s та ініціалізує її значенням "Hello"
дійсні a, b = 1,0, c; визначає три дійсні змінні з іменами a, b і c, ініціалізуючи b значенням 1,0
int n[] = { 1, 2, 3 }; визначає масив int, ініціалізуючи перші три елементи значеннями 1, 2 і 3
імена числових рядків[]; визначає масив рядків, який можна сортувати буквено-цифровим способом
UL_WIRE w; визначає об'єкт UL_WIRE під назвою w
Не можна отримати прямий доступ до елементів масиву типів об’єктів:
сигнали UL_SIGNAL [];
UL_SIGNAL s = сигнали[0];
printf("%s", s.name);

Визначення функцій

Ви можете написати власні функції мови користувача та викликати їх так само, як і вбудовані функції. Загальний синтаксис визначення функції такий

 type identifier ( parameters )
{ statements }

де тип — це один із типів даних або об’єктів, ідентифікатор — це ім’я функції, параметри — це список визначень параметрів, розділених комами, а оператори — це послідовність операторів. Функції, які не повертають значення, мають тип void.

Функція має бути визначена перед тим, як її можна буде викликати, і виклики функцій не можуть бути рекурсивними (функція не може викликати сама себе).

Оператори в тілі функції можуть змінювати значення параметрів, але це не матиме жодного впливу на аргументи виклику функції.

Виконання функції може бути припинено оператором return. Без будь-якого оператора return тіло функції виконується, поки не буде закрита дужка (}).

Виклик функції exit() припинить роботу всієї програми мови користувача.

Спеціальна функція main()

Якщо ваша програма мовою користувача містить функцію під назвою main() , ця функція буде явно викликана як основна функція, а її значення, що повертається, буде значенням, яке повертає програма.

Аргументи командного рядка доступні для програми через глобальні вбудовані змінні argc і argv .

приклад
 int CountDots ( string s )
{
  int dots = 0 ;
  for ( int i = 0 ; s [ i ]; ++ i )
      if ( s [ i ] == '.' )
         ++ dots ;
  return dots ;
}
string dotted = "This.has.dots..." ; output ( "test" ) { printf ( "Number of dots: %d
" ,
                 CountDots ( dotted ));
  }

Орігінал сторінки: Definitions