АППОИ_4 Структури даних.ppt
- Количество слайдов: 23
Структури даних 1. 2. 3. 1 Оголошення даних Області визначення Тривалість життя
Змінні та константи Змінні й константи в мовах програмування це іменовані області пам'яті для зберігання даних, з якими працює програма. Розходження між змінними й константами (як можна здогадатися з назв) полягає в тому, що значення змінної може змінюватися під час виконання програми, значення константи залишається незмінним. Перш ніж використати змінну або константу в програмі, її потрібно оголосити. Для оголошення використовується оператор оголошення (declaration statement). В оголошенні обов'язково потрібно вказувати ім'я змінної або константи. Крім того, в оголошенні можуть бути зазначені: l тип даних (Data Type); l права доступу до змінної або константи (Accessibility); l область видимості (Scope) - тільки для змінних; l період існування або час життя (Lifetime); l рівень (Level). 2
Імена змінних 3 За допомогою імені здійснюється прив’язка змінних до їх розміщення в оперативній пам’яті комп’ютера. Вимоги до імен: l ім’я змінної повинно розпочинатися тільки з букви; l в імені змінної можна використовувати довільну комбінацію букв, цифр і символів підкреслення (_); l ім’я змінної повинно бути унікальним в межах зони її видимості; l довжина імені змінної не повинна перевищувати 255 символів; l заборонено використовувати для імен ключові слова VB. NET.
Імена змінних - традиції При призначенні імені ви повинні враховувати дві суперечливі вимоги. З одного боку воно повинно бути достатньо інформативним для полегшення роботи з програмою, а з іншого боку – найкоротшим, щоб прискорити введення тексту програми. VB ігнорує в іменах різницю між заглавними й прописними літерами (Summa I s. Umm. A однакові імена). Часто програмісти використовують для імен змінних спеціальні префікси, в яких закодований тип цих змінних (угорський запис). Тип змінної Пояснення Приклад String s Текстовий s. First. Name Integer n Ціле число n. Count. El Double 4 Префікс d Подвійн. точності з плав. точкою d. Vaga. Avto Boolean B Логічний тип b. Taxable
Типи змінних У зв’язку з тим, що VB. NET входить до складу VS. NET і програми можуть взаємодіяти на рівні даних з іншими програмами, які написані на інших мовах то бажано знати і використовувати стандартні типи змінних (сумісні з CLR - common language runtime) Тип і CLR-тип є синонімами і у програмі можна використовувати будь який. Таблиця цілочислових типів змінних Тип CLR-тип Значення, що зберігається Пам’ять Діапазон Byte System. Byte Ціле число без знака 1 байт 1… 255 Short System. Int 16 Ціле число зі знаком 2 байта -32768. . +32767 Integer System. Int 32 Ціле число 4 байта -2 147 483 648… 2147 483 647 5 Long System. Int 64 Ціле число 8 байт 9 223 372 036 854 775 808
Типи змінних Для з’ясування діапазону числових даних різних типів є можливість скористатися загальними методами Max. Value та Min. Value, які асоційовані з типом та повертають допустимі границі чисел: Console. Write. Line(Integer. Max. Value) : Console. Write. Line(Integer. Min. Value) Тип Значення, що зберігається Пам’ять Single System. Single Десяткове з плаваючою точкою 4 байта Double System. Double Десяткове з плаваючою точкою 8 байт Decimal System. Decimal Десяткове з плаваючою точкою 12 байт Boolean System. Boolean Логічне значення (True / False) 2 байта Date 6 CLR-тип System. Date. Time Дата і/або час 8 байт Char System. Char Являє собою один символ Unicode 2 байта String System. String Текстова змінна Залежить від ОС
Оголошення змінних Оголошення змінної вказує програмі про те, що буде використовуватись саме ця змінна визначеного типу. Для оголошення використовуються оператори: Dim, Private, Static, Public. Приклади оголошення змінних: Dim i As Integer оголошено змінну і цілого типу Dim i As Integer = 1 оголошено змінну і та проініціалізовано 1 Dim i, j, k As Integer оголошено змінні I, j, k Private s. Name. Ware As String оголошено текстову змінну Static s. Beg As String = “Початок” Public n. Elem As Integer 7
Створення, ініціалізація і знищення змінних Приклад процедури: Private Sub But 1() Dim n. B As Integer n. B = 5 End Sub l l l 8 Змінна, що оголошена всередині процедури не існує у той час коли процедура не виконується. Вона створюється у момент, коли процедура починає виконуватись – фактично під змінну відводиться пам’ять. Якщо змінна не проініціалізована то в ній відсутні значення. Поки процедура працює, змінна живе і теж працює. Коли VB. Net виходить із процедури, змінна знищується – звільняється пам’ять де зберігалася ця змінна.
Зона видимості змінних Змінна, яка оголошена всередині процедури не видима зовні, у тому числі й з інших процедур. Змінна, яка оголошена поза процедурами видима із усіх процедур модуля. Змінні із однаковими іменами, які оголошені у різних процедурах, є різними змінними. Створення різних зон видимості для різних змінних є способом підвищення надійності великих програм і зменшення ймовірності некоректного використання змінних. 9
Приклад з помилкою 10 Module 1 Dim Y As Integer Sub Main() Y=2*2 P() Console. Writeln({0}, Y) End Sub Private Sub P() Y=3*3 Console. Writeln({0}, Y) End Sub End Module Тут буде виведено результат: 9 9 Приклад безглуздої програми у якій не використовуються такзвані локальні змінні. Якщо різні процедури написані різними програмістами, то для використання змінних які оголошені зовні процедур потрібно узгоджувати їх використання. Звичайно, що коли програміст знає, що його дані ніде окрім його процедури не потрібні, то він оголошує відповідні змінні всередині процедури і не хвилюється, що такі імена є в інших місцях модуля.
Зона видимості - блок 11 Блок це оператори програми, які у програмі розташовані та виконуються послідовно (наприклад тіло циклу у циклічних програмах або багаторядковий умовний оператор If). VB. Net дозволяє оголошувати змінні в середині блоку. Це означає, що змінна має актуальність тільки у межах цього блоку. Заборонено одночасно оголошувати змінну на початку процедури (тобто у головному блоці оголошень) і у середині процедури.
Зона видимості змінних Щоб оголосити змінну до якої є доступ з будь-якої частини програми слід у розділі загальних оголошень головного модуля оголосити змінну оператором Pubic (це так звана модульна або глобальна змінна): Public s. User. Name As String Найчастіше у програмі використовуються змінні, які мають сенс тільки у рамках поточної процедури або форми. Вони мають назву локальних змінних, а для їх оголошення використовують оператори оголошення Dim або Private. Головним є те, що оголошення локальних змінних відбувається на початку тієї процедури у якій і будуть використовуватись ці змінні. 12
Зона видимості змінних 13 Тип зони видимості залежить від того, у якому місці програми розташований оператор оголошення змінної. Якщо змінна оголошена в розділі загальних оголошень модуля форми або програми, то вона буде доступна для усіх процедур даної форми або програми. Такі змінні називають локальними змінними форми або модуля. Якщо змінна оголошена усередині процедури, вона може використовуватися тільки всередині цієї процедури. Тому таку змінну називають локальною змінною процедури.
Зона видимості змінних Намагайтесь, де це можливо, використовувати тільки локальні змінні. Не слід зберігати у загальнодоступних змінних інформацію, яка ніде окрім поточного модуля не використовується у програмі. Інша причина, яка підтверджує, що завжди слід використовувати тільки локальні змінні це здоровий глузд. Якщо оголосити змінні з ключовим словом Public то вони будуть доступні для усіх модулів і форм. А тепер уявіть, що програміст буде користуватися цими змінними як локальними – значення змінних будуть втрачені у якій-небудь процедурі і знайти місце втрати буде не просто. 14
Статичні змінні Інколи потрібно знати значення деякої змінної, що вона набула в результаті попереднього виконання процедури при черговому виконанні тієї ж процедури. Можна для цього скористатися глобальною змінною. Інша можливість – оголосити статичну змінну. Static n. Count As Integer Статична змінна це звичайна локальна змінна, з однією відмінністю: її значення не знищується після виходу з процедури і доживає до наступного виклику. Відмінність від глобальної змінної – статична змінна видима тільки для своєї процедури, а для інших процедур цієї змінної немає. 15
Використання констант це один з можливих варіантів використання оперативної пам’яті комп’ютера. Константа інтерпретується у програмі особливим чином. Після того, як константа оголошена, її значення змінити уже неможливо. Константи можна вважати звичайними змінними, із яких можна тільки зчитувати інформацію. Константи часто використовують замість числових значень, щоб спростити сприйняття програми. Крім того, їх легше запам’ятати ніж ті числа що їм відповідають. Зазвичай константи оголошуються на самому початку модуля і потім використовуються у цьому модулі. 16 Public Const Prog. Title = “Назва додатку” Public Const Prog. Version = “ 2. 15” Public Const n. PI = 3. 14159
Массиви у VB. NET Масив - це деякий набір змінних з одним ім'ям. Елементи цього набору розрізняються по номерах. Масив зручно використовувати для роботи з однотипними змінними. Звертання до конкретних елементів масиву відбувається по номеру елемента (або по номерах - їх може бути декілька). Імена масивів створюються за тими ж правилами, що й імена змінних. Оголошення масивів: Dim A(4) As Integer Dim B(2, 2) As Integer Елементи масиву A - це A(0), A(1), A(2) і A(3), масиву B - B(0, 0), B(0, 1), B(1, 0) і B(1, 1). Звертання до елементів масиву відбувається як і до звичайних змінних: A(2) = 72 B(1, 0) = -12 В VB. NET нумерація елементів масиву починається з нуля. 17
Массиви у VB. NET Можна задавати значення елементів масиву відразу при його оголошенні: Dim A() As Integer = {2, -7, 2, 5} Dim B(, ) As Integer = {{3, 2}, {5, -7}} 18 Зверніть увагу, що тут ми не можемо вказувати в круглих дужках розміри масиву (якщо вкажемо, це буде синтаксичною помилкою). Також помітьте, що для двовимірного масиву ми написали в круглих дужках кому (саме вона й показує, що масив двовимірний). Вихід за межі масиву в VB. NET викликає помилку часу виконання.
Массиви у VB. NET Для визначення верхньої границі масиву можна скористатися методом UBound. Приклад його використання: Dim A(4) As Integer Dim B(2, 3) As Integer Console. Write. Line(UBound(A)) Console. Write. Line(UBound(B, 1)) Console. Write. Line(UBound(B, 2)) 19 Зазначений фрагмент виведе на екран 4, 2 і 3. Як перший параметр ми повинні вказувати ім'я масиву, у якості другого (необов'язкового) - номер виміру (нумерація починається з одиниці). Якщо другий параметр опустити, то для нього підставиться значення за замовчуванням - 1.
Массиви у VB. NET Масиви можуть бути не тільки числові, але й текстові, типу Date, та будь-які. Dim s. Name As String Dim d. Temper As Date У мовах програмування (у VB. Net також) є можливість використовувати багатовимірні масиви. Dim A(10) As Integer Dim A(5, 5) As Integer Dim A(3, 3, 2) As Integer Dim A(4, 3, 2, 1) As Integer 20 Одновимірний масив 11 елементів Двовимірний масив 36 елементів Трьохвимірний масив 48 елементів Чотирьохвимірний масив 120 елементів
Динамічні массиви у VB. NET 21 Усі масиви у VB. NET динамічні. Тобто під час роботи програми їх можна переоголошувати з новим розміром за допомогою команд Re. Dim (з втратою поточного вмісту) і Re. Dim Preserve (із збереженням поточного вмісту). Наприклад: Dim x() As Single ‘ оголосили масив х Re. Dim x(20) ‘ змінили розмір 21 елемент Re. Dim Preserve x(50) ' 21 елемент _ збережено у масиві
Динамічні массиви у VB. NET 22 Dim A() As Integer ‘ оголосили одновимірн. масив без визнач. кількості елементів Dim i As Integer Re. Dim A(3) ‘ Зміна розміру масиву A(0) = 4 : A(1) = -4 : A(2) = 11 Console. Write. Line("Розмір масиву: {0}", UBound(A)) Console. Write. Line("Елементи масиву: ") For i = 0 To UBound(A) - 1 Console. Write. Line(A(i)) Next i 'Зміна розміру масиву зі збереженням даних Re. Dim Preserve A(5) A(3) = -8 : A(4) = 100 Console. Write. Line("Розмір масиву: {0}", UBound(A)) Console. Write. Line("Елементи масиву: ") For i = 0 To UBound(A) - 1 Console. Write. Line(A(i)) Next
Масиви як об’єкти Масив це об’єкт класу Array простору імен System. Тому можуть бути корисними деякі властивості і методи масивів. Sub Main() Dim A() As Integer = {8, 6, 5, 9, 2, 5, 7} Dim F(, ) As Integer = {{1, 2, 3, 4}, {2, 3, 4, 5}, {6, 5, 4, 3}, {4, 3, 2, 1}} Console. Writeline(A. Length) ‘ 7 число елементів масива А Console. Writeline(F. Length) ‘ 16 число елементів масива F Console. Writeline(F. Get. Upper. Bound(0)) ‘ 3 кількість рядків (макс. індекс першого виміру) Console. Writeline(F. Get. Upper. Bound(1)) ‘ 3 кількість рядків (макс. індекс другого виміру) Array. Reverse(A) ‘ Усі елементи масива А змінюють порядок на зворотній Array. Sort(A) ‘ Усі елементи масиву сортуються за зростанням {2, 5, 5, 6, 7, 8, 9} Array. Clear(A, 3, 2) ‘ Обнуляються 2 елемента, починаючи з індексу 3 {2, 5, 5, 0, 0, 8, 9} End Sub 23