ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Основні типи даних. Модифікація основних типів. Ідентифікатори. Змінні.

Загрузка...

Основні типи даних. Модифікація основних типів. Ідентифікатори. Змінні.

Існує 5 елементарних типів даних: символ(char), ціле число (int), число з плаваючою комою(float), число з плаваючою комою подвійної точності(double) і змінна, яка не має значення(void). Всі інші типи даних у мові С створюються на основі цих елементарних типів. Розмір змінних і діапазон їх значення залежить від типа процесора і компілятора. Але у всіх випадках розмір символу рівний 1 байт. Розмір цілочислової змінної зазвичай рівний довжині машинного слова, прийнятої в конкретній ОС.

Точне представлення чисел із плаваючою комою залежить від їх конкретної реалізації. Значення змінної типу char використовується для представлення символів, передбачених в системі кодування ASCII.

Діапазон зміни змінних типу float іdoubleзалежить від способу представлення чисел з плаваючою комою.Наприклда, char 8 біт, мінімальний діапазон від -128 до 127,

unsignedchar 8 біт, мінімальний діапазон від 0 до 255

int16 або 32біт, мінімальний діапазон від -32768 до 32767

float32 біт, шість значущих цифр

double64 біт, 10 значущих цифр

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

Модифікація основних типів

Окрім типу void, основні типи даних можуть мати різні модифікації, які використовуються для більш точних настройок.

Цілочислові типи можна модифікувати з допомогою ключових слів signed, unsigned, long, short. Символьні типи можна уточнювати за допомогою: signedіunsigned. Типdoubleможна модифікувати ключовим словом long.

Застосування модифікатора signedдопускається, але являється зайвим, оскільки по замовчуванню всі цілі числа мають знак. Даний модифікатор слід використовувати для типу char в тих реалізаціях мови С, де цей тип немає знаку за замовчуванням.

Різниця між цілими числами, що мають і не мають знак, полягає в інтерпретації біта старшого розряду. Якщо в програмі визначено ціле число зі знаком, то компілятор генерує код, в якому старший біт відповідає за знак. Якщо старший біт 0, то число позитивне, якщо 1 – від`ємне.

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

Ідентифікатори

У мові С/С++ імена змінних, функцій, міток і інших об’єктів, визначені користувачем, називаються ідентифікаторами. Ідентифікатори можуть складатися із одного або декількох символів. Перший символ ідентифікатора повинен бути буквою або символом підкреслення, а наступний повинен бути буквами, цифрами або символом підкреслення. Наприклад, Count, test23,h_p.

Довжина ідентифікатора може бути довільна. Однак не всі символи, що утворюють ідентифікатор, вважаються значущими. Якщо ідентифікатор використовується в процесі редагування зовнішніх зв’язків, то значущими вважаються перші шість його символів. Ці ідентифікатори називаються зовнішніми іменами. Коли ідентифікатор не використовується у процесі редагування зовнішніх зв’язків, то значущими вважаються 31 перший символ. Такі ідентифікатори називаються внутрішніми іменами. Символи, які набрані верхнім і нижнім регістром вважаються різними. Наприклад, count, Count іCOUNT – це різні ідентифікатори.

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

Змінні

Змінна представляє собою ім`я ячейкипам`яті, яку можна використовувати для зберігання модифікованих значень. Всі змінні повинні бути оголошені до свого використання. Оголошення: тип список_змінних; де слово тип один з допустимих типів даних, включаючи модифікатори, а список_зміннихможе складатися із одного чи декількох ідентифікаторів, розділених комою.

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

Змінні оголошені всередині функції називаються локальними.Локальні змінні можна використовувати тільки в операторах, розташованих в середині блоку, де вони оголошені. Локальні змінні не видимі за межами її блоку. Приклад:


void f1(void)

{ int x; x=10;}

void f2(void)

{ int x; x=-911;}


Змінна х оголошена два рази. Проте змінна х з функ. f1()немає ніякого відношення до змінної х оголошеної в f2(). Кожна із цих змінних існує лише в середині блоку, де вона була оголошена.

Формальні параметри.Якщо функ. має аргументи, то необхідно оголосити змінні які будуть приймати ці значення. Саме такі змінні називаються формальними параметрами.У середині функ. вони нічим не відрізняються від локальних змінних.

intis_in(char *s, char c)

{ while(*s)if(*s==c) return 1; else s++; return 0; }

Функ. іs_in()має два параметри: sі с. Функ. повертає 1, якщо символ с являється частиною рядка s, в іншому випадку функ. повертає 0.

Тип формальних параметрів задається при їх оголошенні. Форма. Пар. Можна використовувати в довільних конструкціях і виразах.

Глобальні змінні- доступні із будь-якої частини програми і можуть бути використані де завгодно. Вони зберігають своє значення протягом всього виконання програми. Ці змінні можна використовувати в будь-якому виразі, незалежно від того в якому блоці вони знаходяться. Глобальні змінні зберігаються в спеціально відведеному місці. Проте, якщо можна обійтися без їх використання, то слід глоб. Зм. Не використовувати, оскільки вони займають пам'ять на протязі виконання всієї програми, навіть коли вони вже не потрібні.
2. Функції користувача

Функ.кор.- це поіменована група команд, яка оголошена у файлі заголовків(або в основній програмі) та описана у модулі( в основній програмі). До функ. Можна звертатись з будь-якого місця програми, необхідну кількість разів.

1.Оголошення функ.кор. Кожну функ.кор. перед першим викликом необхідно оголосити. Функ.кор. оголошується так:

<тип_функції>< назва_функції> (<список_формальних_параметрів>)

де тип_функції – тип даного, який функ. Повертає в основну програму. Тип функ. можна не зазначати. За замовчуванням функ. Повертає у програму дане цілого типу int. Функ., що не повертає у програму жодного результату, оголошують з типом void.

Для функ. , яка не залежить від жодних параметрів, у круглих дужках записують службове слово void. Назву функ. Надає користувач за правилом створення ідентифікаторів. У списку формальних параметрів через кому записують змінні, зазначаючи їх тип(для кожної змінної окремо!). Імена змінних можна опускати. Якщо функ. Не набуває жодних значень, то список формальних параметрів може бути відсутній(круглі дужки опускати не можна). Приклад: float S(int k, float c); - функ. S типу float, залежить від 2 змінних типів int і float.

doublel(void); - функ. l типу double не залежить від жодних параметрів.

Під час оголошення можна одразу надавати параметрам певних значень. Такі значення наз. значеннями за замовчуванням.Значення таких параметрів у програмі можна змінювати. Приклад:floatS(intk, floatc=2.5);

2.Опис функ.кор. має наступний вигляд:

<тип_функції>< назва_функції> (<список_формальних_параметрів>)

{<тіло_функ.>;

return(<назва_змінної_1>);

}

У тілі функ. записують команди, які задають дію функ.. Результат виконання повертається в основну програму за допомогою змінної_1 командою return.

Приклад:

float s(int k, float c)

{

float s=k*c;

return(s);

}

3. Виклик функ.кор. До функ.кор. звертаються з основної програми (main())або з іншої функ.. Виклик: < назва_функції> (<список_фактичних_параметрів>)

Список факт.парам. може містити сталі, змінні, посилання, вказівники, вирази. Приклад: float dob(int a, float b)

{

float d=a*b;

return(d);

}

До функ. можна звернутися dob(2,3);

4. Посилання До даних можна звертатися за допомогою імені або посилання – слугує для надання ще одного імені даному. Посилання утв. так:

<тип_даного>&<назва_посилання>=<назва_змінної>;

Наприклад, float&cina=suma;

У цьому випадку посилання на cina і suma вказують на одну і ту саму адресу в пам`яті комп’ютера.Для посилання не резервується додаткова оперативна пам`ять.

Переадресовувати посилання у програмі не можна. Посилання завжди вказує на одну і ту саму адресу в оперативній памяті.

5.Область видимості функ. Правило, яке визначає область видимості, встановлює, чи бачить одна частина програми другу частину коду і чи може до неї звертатися. Кожна функ. представляє собою окремий блок операторів. Код функ. являється закритим і недоступним для будь-яких операторів, розташованих в інших функціях, крім оператора виклику.


Вкладені оператори if

Оператор, який знаходиться всередині іншого оператора if або else. У вкладеному умовному операторі розділ else завжди пов'язаний з найближчим оператором if, які перебувають з ним в одному блоці і не пов'язаним з іншим оператором else. Розглянемо приклад.

if (i>)

{ if (j) оператор1 ;

if {к) оператор2; / * даний if * /

else операторЗ; / * пов'язаний з даним оператором else * /

} else оператор 4; / * пов'язаний з оператором if (i) * /

Тернарна альтернатива

Замість операторів if-else можна використовувати тернарний оператор "?". Загальний вигляд замінних операторів if-else виглядає наступним чином.

if {умова}вираз; else вираз .

Оператор "?" називається тернарним, бо має три операнда. Загальний вигляд такий:

Вираз 1? Вираз 2: Вираз З

Виконання: спочатку обчислюється Вираз1. Якщо воно є істинним, обчислюється Вираз2, і його значення стає значенням всього тернарного оператора. Якщо Вираз1 є хибним, обчислюють ВиразЗ, і результатом виконання тернарного оператора вважається саме його значення. Розглянемо приклад. х = 10; у = х> 9? 100: 200; /// У даному випадку змінної у присвоюється значення 100. Якби змінна х була менше 9, то змінна у отримала б значення 200

Замість виразів в тернарному операторі можна використовувати виклики функцій. Якщо в операторі "?" Зустрічається ім'я функції, вона викликається, а її результат використовується замість значення відповідного виразу. Це означає, що, використовуючи виклики функцій в якості операндів тернарного оператора, можна виконати одну або кілька функцій відразу.

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

switch (вираз)

case константа 1:

послідовність операторів break; case Константа2 \

послідовність операторів break; case константаЗ:

послідовність операторів break;

default:

послідовність операторів }

Значенням виразу має бути символ або ціле число. Значення виразу послідовно порівнюється з константами, зазначеними в операторах case. Якщо виявляється збіг, виконується послідовність операторів, пов'язаних з даним оператором case, поки не зустрінеться оператор break або не буде досягнутий кінець оператора switch. Якщо значення виразу не збігається ні з однією з констант, виконується оператор default. Цей розділ оператора switch є необов'язковим. Якщо він не передбачений, при відсутності збігань не буде виконаний жоден оператор. Оператор break відноситься до групи операторів переходу. Його можна використовувати як в операторі switch, так і в циклах. Коли досягається оператор break, програма виконує перехід до оператора, наступного за оператором switch.

Слід знати три важливих властивості оператора switch.

• Оператор switch відрізняється від оператора if тим, що значення його виразу порівнюється виключно з константами, в той час як в операторі if можна виконувати які завгодно порівняння або обчислювати будь-які логічні вирази.

• Дві константи в різних розділах case не можуть мати однакових значень, за винятком випадку, коли один оператор switch вкладений в інший.

• Якщо в операторі switch використовуються символьні константи, вони автоматично перетворюються в цілочисельні.

Вкладені оператори switch

Оператори switch можуть бути вкладені один в одного. Навіть якщо константи розділів case зовнішнього і внутрішнього операторів switch збігаються, проблеми не виникають. Наприклад, наведений нижче фрагмент програми є цілком прийнятним.

switch (х) {case 1:

switch (у) {case 0: printf ("Ділення на нуль.Чп");

break; case 1: process (х, у);}

break; case 2:


Типи даних: масиви, рядки.

Масив – це сукупність змінних, які мають однаковий тип і обєднюються під одним імям. Масиви можуть бути одновимірними і багатовимірними. Найбільш поширеним масивом є рядок, який закінчується нульовим байтом.

Оголошення одновимірного масиву: тип імя_змінної[розмір];

Тип – оголошує базовий тип масиву, його елементів; розмір – визначає, скільки елементів є в масиві.

Доступ до елемента масиву: імя_масиву [індекс елемента];

Індекс першого елемента будь-якого масиву – 0.

Розмір одновимірного масиву в байтах обчислюється за формулою:

кількість_байтів=sizeof(базовий_тип)*кількість_елементів.

Створення вказівника на масив:

int sample[10];

int *p;

int sample[10];

p=sample;

Рядки, які закінчуються нульовим байтом. Оголошуючи масив символів, потрібно зарезервувати одну комірку для нульового байту, тобто вказати розмір на одиницю більший.

char str[11];

Функції для роботи з рядками:

strcpy(s1,s2) – копіює рядок s1 в рядок s2

strcat(s1,s2) – переписує рядок s2 в кінець рядка s1

strlen(s1) – обчислює довжину рядка s1

strcmp(s1,s2) – повертає 0, якщо s1 і s2 співпадають, негативне значення, якщо s1< s2, і позитивне, якщо s1> s2

strchr(s1,ch) – повертає вказівник на позицію першого входження символу ch у рядок s1

strstr(s1,s2) – повертає вказівник на позицію першого входження рядка s2 в рядок s1

Оголошення двохвимірного масиву:

тип імя_масиву[кількість_рядків][кількість_стовпців]

Двохвимірний масив зберігається вигляді матриці.

Розмір двохвимірного масиву в байтах обчислюється за формулою:

кількість_байтів=sizeof(базовий_тип)*кількість_рядків*кількість_стовпців.

Масиви рядків. Максимальне значення лівого індексу – кількість рядків, правого індексу – максимальна довжина кожного рядка. В кінці кожного рядка – нульовий байт \0.

Ініціалізація масивів:

тип_масиву імя_масиву[розмір1]…[розмірN]={список_значень}

Список_значень представляє собою список констант, розділених комами.

Приклади:

int i[5]={1,2,3,4,5};

char named[12]=”Я люблю С++”;

char str[2]={‘A’,’b’,’\0’);

int sqrs[3][2]={

1, 1,

2, 4,

3, 9};

Або, використовуючи спосіб субагрегатного групування:

int sqrs[3][2]={

{1, 1},

{2, 4},

{3, 9}};

Безрозмірний масив: char mas[];


5. Оператори циклу та їх використання.

У мові C/C + +, як і у всіх інших сучасних мовах програмуванняня, оператора циклу призначені для виконання повторюваних інструкцій. Ця умова може бути як заданою раніше (у циклі for), так і змінюватись під час виконання циклу (в операторах while і do-while).

Цикл for

Загальний вигляд оператора for такий.

for (ініціалізація; умова;збільшити)

Цикл for має багато варіантів. Однак найбільш загальна форма цього оператора працює таким чином. Спочатку виконується ініціалізація (initialization) - оператор присвоювання, який задає початкове значення лічильника циклу. Потім перевіряється умова (condition), що представляє собою умовний вираз. Цикл виконується до тих пір, поки значення цього виразу залишається істинним. Збільшити (increment) змінює значення лічильника циклу при черговому його виконанні. Ці розділи оператора відокремлюються один від одного крапкою з комою. Як тільки умова циклу стане хибною, програма припинить його виконання і перейде до наступного оператора.

Приклад оператора for виводить на екран числа від 1 до 20;

for (int i=1; i<=20; i++) {дія}

Цікава особливість циклу for полягає в тому, що його розділи можна пропускати. Кожен з його розділів є необов'язковим.

Приклад нескінченного циклу: for ( ; ; ) {дія}

Цикл while

Оператор циклу while має наступний синтаксис:

while (умова) оператор

Тут оператор може бути порожнім, окремим оператором або блоком операторів. Умова може задаватися будь-яким виразом. Умова циклу вважається істинним, якщо значення цього виразу не дорівнює нулю. Як тільки умова циклу стає хибною, програма передає управління оператору, що стоїть відразу після оператора while.

int i = 0;

while(i<20){
дії
i++ }

Цикл do while

На відміну від операторів for і while, які перевіряють умова на початку циклу, оператор do-while робить це в кінці. Іншими словами, цикл do-while виконується принаймні один раз. Загальний вид оператора do-while такий, do {оператор;

} Whilе (умова)

Якщо тіло циклу складається лише з одного оператора, фігурні дужки не обов'язкові, хоча вони роблять цей цикл зрозуміліше (програмісту, але не компілятору). Цикл do-while повторюється до тих пір, поки умова не стане хибною.

Приклад оператора, який до заданого масиву чисел додає число 5;

i=0;
do{
mas[i] = mas[i]+5;

i++;
}while(i<5);

Оператор break

Оператор break застосовується у двох ситуаціях. По-перше, він використовується для припинення виконання розділу case всередині оператора switch. По-друге, з допомогою оператора break можна негайно вийти з циклу незалежно від того, якою є умови істинними чи хибними.

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

Оператор continue

Оператор continue нагадує оператор break. Вони різняться тим, що оператор break припиняє виконання всього циклу, а оператор continue - лише його діючу ітерацію, викликаючи перехід до наступної ітерації і пропускаючи всі залишені оператори в тілі циклу. У циклі for оператор continue викликає перевірку умови і приріст лічильника циклу. У циклах while і do-while оператор continue передає управління операторам, що входять в умову циклу.


Відкриття файлу

Функція fopen () відкриває потік і пов'язує з цим потоком певний файл. Потім вона повертає покажчик цього файлу. Найчастіше (а також в частині цієї глави) під файлом мається на увазі дисковий файл. Прототип функції fopen () такий:

FILE * fopen (constchar * имя_файла, constchar * режим);

де имя_файла - це покажчик на рядок символів, що представляє собою припустиме ім'я файлу, в яке також може входити специфікація шляху до цього файлу. Рядок, на яку вказує режим, визначає, яким чином файл буде відкритий. У табл.1 показано, які значення рядка режим є допустимими. Рядки, подібні "r + b" можуть бути представлені і у вигляді "rb +".

Таблица1: Допустимые значения режим

R - Відкрити текстовий файл для читання

w - Створити текстовий файл для запису

a - Додати в кінець текстового файлу

rb- Відкрити двійковий файл для читання

wb- Створити двійковий файл для запису

ab- Додати в кінець двійкового файлу

r + - Відкрити текстовий файл для читання / запису

w + - Створити текстовий файл для читання / запису

a + - Додати в кінець текстового файлу або створити текстовий файл для читання / запису

r + b - Відкрити двійковий файл для читання / запису

w + b - Створити двійковий файл для читання / запису

a + b - Додати в кінець двійкового файлу або створити двійковий файл для читання / запису

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

У наступному коді функція fopen () використовується для відкриття файлу на ім'я TEST для запису.

FILE * fp;

fp = fopen ("test", "w");

Хоча попередній код технічно правильний, але його зазвичай пишуть трохи по-іншому:

FILE * fp;

if ((fp = fopen ("test", "w")) == NULL) {

printf ("Помилка при відкритті файлу. \ n");

exit (1);

}

Цей метод допомагає при відкритті файлу виявити будь-яку помилку, наприклад, захист від запису або повний диск, причому виявити ще до того, як програма спробує в цей файл небудь записати. Взагалі кажучи, завжди потрібно спочатку отримати підтвердження, що функція - fopen () виконалася успішно, і лише потім виконувати з файлом інші операції.

Хоча назва більшості файлових режимів пояснює їх зміст, проте не завадить зробити деякі доповнення. Якщо спробувати відкрити файл лише для читання, а він не існує, то робота fopen () завершиться відмовою. А якщо спробувати відкрити файл у режимі дозапису, а сам цей файл не існує, то він просто буде створений. Більше того, якщо файл відкритий в режимі дозапису, то все нові дані, які записуються в нього, будуть додаватися в кінець файлу. Вміст, яке зберігалося в ньому до відкриття (якщо тільки воно було), змінено не буде. Далі, якщо файл відкривають для запису, але з'ясовується, що він не існує, то він буде створений. А якщо він існує, то вміст, яке зберігалося в ньому до відкриття, буде втрачено, причому буде створений новий файл. Різниця між режимами r + і w + полягає в тому, що якщо файл не існує, то в режимі відкриття r + він створений не буде, а в режимі w + все відбудеться навпаки: файл буде створений! Більше того, якщо файл вже існує, то відкриття його в режимі w + призведе до втрати його вмісту, а в режимі r + воно залишиться недоторканим.

З таблиці. 1 видно, що файл можна відкрити або в одному з текстових, або в одному з двійкових режимів. У більшості реалізацій в текстових режимах кожна комбінація кодів повернення каретки (ASCII 13) і кінця рядка (ASCII 10) перетвориться при введенні в символ нового рядка. При виведенні ж відбувається зворотний процес: символи нового рядка перетворюються в комбінацію кодів повернення каретки (ASCII 13) і кінця рядка (ASCII 10). У двійкових режимах такі перетворення не виконуються.

Максимальне число одночасно відкритих файлів визначається FOPEN_MAX. Це значення не менше 8, але чому воно точно дорівнює - це має бути написано в документації по компілятору.

Закриття файлу

Функція fclose () закриває потік, який був відкритий за допомогою виклику fopen (). Функція fclose () записує у файл всі дані, які ще залишалися в дисковому буфері, і проводить, так би мовити, офіційне закриття файлу на рівні операційної системи. Відмова при закритті потоку тягне всілякі неприємності, включаючи втрату даних, зіпсовані файли і можливі періодичні помилки в програмі. Функція fclose () також звільняє блок управління файлом, пов'язаний з цим потоком, даючи можливість використовувати цей блок знову. Так як кількість одночасно відкритих файлів обмежена, то, можливо, доведеться закривати один файл, перш ніж відкривати інший. Прототип функції fclose () такий:

intfclose (FILE * уф);

де уф - покажчик файлу, повернений в результаті виклику fopen (). Повернення нуля означає успішну операцію закриття. У разі ж помилки повертається EOF. Щоб точно дізнатися, в чому причина цієї помилки, можна використовувати стандартну функцію ferror () (про яку незабаром піде мова). Зазвичай відмова при виконанні fclose () відбувається тільки тоді, коли диск був передчасно видалений (стертий) з дисковода або на диску не залишилося вільного місця.


Клас

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

Об'єкт

Окремий екземпляр класу. Сукупність значень атрибутів окремого об'єкту називається станом.

Успадкування

В деяких випадках, клас може мати «підкласи», спеціалізовані версії класу. Підкласи успадковують атрибути та поведінку своїх батьківських класів, і можуть вводити свої власні.

Поліморфізм

Поліморфізм означає залежність поведінки від класу, в якому ця поведінка викликається, тобто, два або більше класів можуть реагувати по різному на однакові повідомлення.


Основні типи даних. Модифікація основних типів. Ідентифікатори. Змінні.

Існує 5 елементарних типів даних: символ(char), ціле число (int), число з плаваючою комою(float), число з плаваючою комою подвійної точності(double) і змінна, яка не має значення(void). Всі інші типи даних у мові С створюються на основі цих елементарних типів. Розмір змінних і діапазон їх значення залежить від типа процесора і компілятора. Але у всіх випадках розмір символу рівний 1 байт. Розмір цілочислової змінної зазвичай рівний довжині машинного слова, прийнятої в конкретній ОС.

Точне представлення чисел із плаваючою комою залежить від їх конкретної реалізації. Значення змінної типу char використовується для представлення символів, передбачених в системі кодування ASCII.

Діапазон зміни змінних типу float іdoubleзалежить від способу представлення чисел з плаваючою комою.Наприклда, char 8 біт, мінімальний діапазон від -128 до 127,

unsignedchar 8 біт, мінімальний діапазон від 0 до 255

int16 або 32біт, мінімальний діапазон від -32768 до 32767

float32 біт, шість значущих цифр

double64 біт, 10 значущих цифр

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

Модифікація основних типів

Окрім типу void, основні типи даних можуть мати різні модифікації, які використовуються для більш точних настройок.

Цілочислові типи можна модифікувати з допомогою ключових слів signed, unsigned, long, short. Символьні типи можна уточнювати за допомогою: signedіunsigned. Типdoubleможна модифікувати ключовим словом long.

Застосування модифікатора signedдопускається, але являється зайвим, оскільки по замовчуванню всі цілі числа мають знак. Даний модифікатор слід використовувати для типу char в тих реалізаціях мови С, де цей тип немає знаку за замовчуванням.

Різниця між цілими числами, що мають і не мають знак, полягає в інтерпретації біта старшого розряду. Якщо в програмі визначено ціле число зі знаком, то компілятор генерує код, в якому старший біт відповідає за знак. Якщо старший біт 0, то число позитивне, якщо 1 – від`ємне.

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

Ідентифікатори

У мові С/С++ імена змінних, функцій, міток і інших об’єктів, визначені користувачем, називаються ідентифікаторами. Ідентифікатори можуть складатися із одного або декількох символів. Перший символ ідентифікатора повинен бути буквою або символом підкреслення, а наступний повинен бути буквами, цифрами або символом підкреслення. Наприклад, Count, test23,h_p.

Довжина ідентифікатора може бути довільна. Однак не всі символи, що утворюють ідентифікатор, вважаються значущими. Якщо ідентифікатор використовується в процесі редагування зовнішніх зв’язків, то значущими вважаються перші шість його символів. Ці ідентифікатори називаються зовнішніми іменами. Коли ідентифікатор не використовується у процесі редагування зовнішніх зв’язків, то значущими вважаються 31 перший символ. Такі ідентифікатори називаються внутрішніми іменами. Символи, які набрані верхнім і нижнім регістром вважаються різними. Наприклад, count, Count іCOUNT – це різні ідентифікатори.

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

Змінні

Змінна представляє собою ім`я ячейкипам`яті, яку можна використовувати для зберігання модифікованих значень. Всі змінні повинні бути оголошені до свого використання. Оголошення: тип список_змінних; де слово тип один з допустимих типів даних, включаючи модифікатори, а список_зміннихможе складатися із одного чи декількох ідентифікаторів, розділених комою.

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

Змінні оголошені всередині функції називаються локальними.Локальні змінні можна використовувати тільки в операторах, розташованих в середині блоку, де вони оголошені. Локальні змінні не видимі за межами її блоку. Приклад:


void f1(void)

{ int x; x=10;}

void f2(void)

{ int x; x=-911;}


Змінна х оголошена два рази. Проте змінна х з функ. f1()немає ніякого відношення до змінної х оголошеної в f2(). Кожна із цих змінних існує лише в середині блоку, де вона була оголошена.

Формальні параметри.Якщо функ. має аргументи, то необхідно оголосити змінні які будуть приймати ці значення. Саме такі змінні називаються формальними параметрами.У середині функ. вони нічим не відрізняються від локальних змінних.

intis_in(char *s, char c)

{ while(*s)if(*s==c) return 1; else s++; return 0; }

Функ. іs_in()має два параметри: sі с. Функ. повертає 1, якщо символ с являється частиною рядка s, в іншому випадку функ. повертає 0.

Тип формальних параметрів задається при їх оголошенні. Форма. Пар. Можна використовувати в довільних конструкціях і виразах.

Глобальні змінні- доступні із будь-якої частини програми і можуть бути використані де завгодно. Вони зберігають своє значення протягом всього виконання програми. Ці змінні можна використовувати в будь-якому виразі, незалежно від того в якому блоці вони знаходяться. Глобальні змінні зберігаються в спеціально відведеному місці. Проте, якщо можна обійтися без їх використання, то слід глоб. Зм. Не використовувати, оскільки вони займають пам'ять на протязі виконання всієї програми, навіть коли вони вже не потрібні.
2. Функції користувача

Функ.кор.- це поіменована група команд, яка оголошена у файлі заголовків(або в основній програмі) та описана у модулі( в основній програмі). До функ. Можна звертатись з будь-якого місця програми, необхідну кількість разів.

1.Оголошення функ.кор. Кожну функ.кор. перед першим викликом необхідно оголосити. Функ.кор. оголошується так:

<тип_функції>< назва_функції> (<список_формальних_параметрів>)

де тип_функції – тип даного, який функ. Повертає в основну програму. Тип функ. можна не зазначати. За замовчуванням функ. Повертає у програму дане цілого типу int. Функ., що не повертає у програму жодного результату, оголошують з типом void.

Для функ. , яка не залежить від жодних параметрів, у круглих дужках записують службове слово void. Назву функ. Надає користувач за правилом створення ідентифікаторів. У списку формальних параметрів через кому записують змінні, зазначаючи їх тип(для кожної змінної окремо!). Імена змінних можна опускати. Якщо функ. Не набуває жодних значень, то список формальних параметрів може бути відсутній(круглі дужки опускати не можна). Приклад: float S(int k, float c); - функ. S типу float, залежить від 2 змінних типів int і float.

doublel(void); - функ. l типу double не залежить від жодних параметрів.

Під час оголошення можна одразу надавати параметрам певних значень. Такі значення наз. значеннями за замовчуванням.Значення таких параметрів у програмі можна змінювати. Приклад:floatS(intk, floatc=2.5);

2.Опис функ.кор. має наступний вигляд:

<тип_функції>< назва_функції> (<список_формальних_параметрів>)

{<тіло_функ.>;

return(<назва_змінної_1>);

}

У тілі функ. записують команди, які задають дію функ.. Результат виконання повертається в основну програму за допомогою змінної_1 командою return.

Приклад:

float s(int k, float c)

{

float s=k*c;

return(s);

}

3. Виклик функ.кор. До функ.кор. звертаються з основної програми (main())або з іншої функ.. Виклик: < назва_функції> (<список_фактичних_параметрів>)

Список факт.парам. може містити сталі, змінні, посилання, вказівники, вирази. Приклад: float dob(int a, float b)

{

float d=a*b;

return(d);

}

До функ. можна звернутися dob(2,3);

4. Посилання До даних можна звертатися за допомогою імені або посилання – слугує для надання ще одного імені даному. Посилання утв. так:

<тип_даного>&<назва_посилання>=<назва_змінної>;

Наприклад, float&cina=suma;

У цьому випадку посилання на cina і suma вказують на одну і ту саму адресу в пам`яті комп’ютера.Для посилання не резервується додаткова оперативна пам`ять.

Переадресовувати посилання у програмі не можна. Посилання завжди вказує на одну і ту саму адресу в оперативній памяті.

5.Область видимості функ. Правило, яке визначає область видимості, встановлює, чи бачить одна частина програми другу частину коду і чи може до неї звертатися. Кожна функ. представляє собою окремий блок операторів. Код функ. являється закритим і недоступним для будь-яких операторів, розташованих в інших функціях, крім оператора виклику.


Загрузка...

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти