42639

ДОСЛІДЖЕННЯ ВКАЗІВНИХ ТИПІВ ДАНИХ

Лабораторная работа

Информатика, кибернетика и программирование

Значення змінної покажчика може бути присвоєно іншому покажчикові якщо їх типи є ідентичними. Покажчикові може бути присвоєно пусте значення null яке вказує на абстрактний неіснуючий об’єкт. Розіменування дозволяє отримати доступ до значення об’єкту на якій вказує покажчик. Розмір значення змінної залежить від її типу.

Украинкский

2013-10-30

71.5 KB

7 чел.

Лабораторна робота №4.

ДОСЛІДЖЕННЯ ВКАЗІВНИХ ТИПІВ ДАНИХ

Теоретичні відомості

Програмні об’єкти розташовуються у пам’яті комп’ютера. Пам’ять комп’ютеру складається з діапазону комірок, які мають унікальні адреси, що складають адресний простір. Будь-яка комірка пам’яті, що адресується, може, як правило, зберігати один байт (8 біт) інформації. Програмні об’єкти можуть займати одну або більше комірок. Адреса першої комірки об’єкта є його адресою.

Існує спеціальний тип для зберігання адрес – вказівний. Змінна-покажчик може бути типізованою або нетипізованою. Типізований покажчик може містити тільки адресу об’єкта відповідного типу. Нетипізований покажчик можу адресувати об’єкт будь-якого типу.  

Значення змінної покажчика може бути присвоєно іншому покажчикові, якщо їх типи є ідентичними. Зміст нетипізованого покажчика може бути присвоєно будь-якому покажчику. Покажчикові може бути присвоєно «пусте» значення (null), яке вказує на абстрактний неіснуючий об’єкт.

Наприклад:

Паскаль:

ipA : ^integer; \\ опис типізованого покажчика ipA

rpB : ^real;  \\ опис типізованого покажчика rpB

pC : Pointer;  \\ опис нетипізованого покажчика pC

Сі:

int *ipA;

float *fpB;

void *pC;

Існують дві основні операції роботи з покажчиками: взяття адреси та розіменування. Адреса програмного об’єкта може бути отримана за допомогою спеціальної операції – взяття адреси. Адресу об’єкта певного типу може бути присвоєно тільки покажчику того ж типу або нетипизованому покажчику. Розіменування дозволяє отримати доступ до значення об’єкту, на якій вказує покажчик. Розіменування підтримується тільки для типізованих покажчиків.  

Розмір значення змінної залежить від її типу. Для визначення розміру певного значення змінної чи розміру будь-якого значення певного типу в мовах програмування існує спеціальна базова операція sizeof.

Наприклад:

Паскаль:

ipA := @iCount;  \\ взяття адреси цілої змінної iCount

rpB := @rR;    \\ взяття адреси дійсної змінної rR 

pC := nil;   \\ ініціалізація покажчика pC нулем

\\ розіменування ipA та збереження отриманого значення у цілій змінній iK

iK := ipA^;

\\ встановлення значення, на яке посилається ipA, рівним значенню iK

ipA^ := iK;

iSize := sizeof (integer); \\ визначення розміру значень типу integer

iSize := sizeof (iK);  \\ визначення розміру значення iK

Сі:

ipA = & iCount;

fpB = &fR;

pC = null;

iK = * ipA;

* ipA = iK;

iSize = sizeof (int);

iSize = sizeof (iK);

Використання нетипізованих вказівних змінних

Таблиця 6

pointer

void*

не можна

не можна

розіменувати

розіменувати

U = v

U = &v

можна

можна

p := @U

v = &U

p := U

v = U

p := p

v = v

new p

v = new size

U := p;

U := @p

Примітка. U – типізована вказівна змінна; p, v - нетипізовані вказівні змінні.

Завдання

Написати програми на мовах Паскаль та Сі, які складаються з наступних дій:

  1.  Опису змінних напередвизначених типів, які наведені у варіанті (табл.7).
  2.  Опису вказівних змінних відповідних типів (табл.7).
  3.  Опису нетипізованої вказівної змінної.
  4.  Ініціювання вказівних змінних адресами змінних, що описанні в п.1 даного завдання.
  5.  Ініціювання змінних, що описанні в п.1 даного завдання, значеннями з варіанта, використовуючи операцію розіменування вказівних змінних.
  6.  Визначення розміру всіх змінних вашої програми.
  7.  Ініціювання нетипізованої вказівної змінної адресами типізованих вказівних змінних.
  8.  Опису посилання (тільки в мові Сі).

Таблиця 7

№ варіанта

Word

unsigned short

Integer

int

Real

float

Double

double

п

с

п

с

п

с

п

с

1

120

-4986

234.9877775

3.4e-55

2

52

886

-414.5435

12.4e35

3

177

-189

84.353535

-2.6e13

4

87

11239

-532.98987

3.9e-41

5

1400

-386

4.4525

-7.3e23

6

6692

1226

-896.333333

6.9e-86

7

10

-528

654.9962

-4.5e25

8

380

265

-21.5437711

99.9e-220

9

612

-805

14.4328

-30.22e100

10

45671

167

-3.9412

-6.8e-6

11

27

-4852

135.7907

7.4e66

12

503

98

-247.11113

5.8e-336

13

9040

-267

0.007642

-1.11e99

14

43

5124

-8976.04

3.5e-4

15

524

-61

25.7295

-0.53e-707


 

А также другие работы, которые могут Вас заинтересовать

54636. Історія в літературі рідного краю. (Зустріч із письменницею Ольгою Хало) 70 KB
  Мета: через призму ліри О.Хало познайомити учнів з історією рідного краю; виховувати почуття патріотизму, поваги до історичної минувшини лубенської землі. Обладнання: виставка творів О.Хало, ілюстрації до її творів, проектор, магнітофон.
54637. Олимпийские игры 41.5 KB
  Если у названного животного длинный хвост игроки поднимают правую руку и машут ею если же хвоста нет или он короткий игроки хлопают. Лошадь длинный коза короткий корова длинный лиса длинный заяц короткий овца короткий тигр длинный медведь короткий свинья короткий осёл длинный белка длинный.
54638. Урок – путешествие на Олимп 43 KB
  Трагедия с греческого переводиться как Афинский район Керамик дал название Пантикапей это современная Эгейское море назвали в честь царя Во время Марафонской битвы греки сражались с Правление Перикла называют золотым Сколько подвигов совершил Геракл Кого не допускали на Афинское собрание...
54639. Формирование компетентности продуктивной творческой деятельности у учащихся по информатике путем решения олимпиадных задач 155.99 KB
  Программа решения данной задачи в среде TurboPscl может быть такой: Vr mnzsxmxmin: integer; begin z:=0; writeln‘Введи количество конфет одной разновидности и количество конфет другой’; redlnmn; if n m then begin mx:=n; min:=m end else begin mx:=m; min:=n end; for x:=1 to mx do begin if mx mod x=0 then begin s:=mx div x; if min mod s=0 then if s 1 then begin writeln‘Коробок с одинаковым набором конфет может быть:’; writelns’ штук’; z:=1 end; end; end; if z=0 then writeln‘Конфеты можно поместить только в одну коробку’; redln...
54640. Ми – майбутні олімпійці 49 KB
  Ведучий: Добрий день любі друзі шановні вболівальники. Ведучий: А зараз я вам представляю учасників сьогоднішнього свята Ведучий: Прошу команд привітати одна одну. Ведучий: Отже команди увага старт Ведучий: Оголошуємо перший конкурс. Ведучий:.
54641. Гурток з історії «Олімп» 217.5 KB
  З одного боку такий склад стимулює діяльність учнів які лише починають вивчати предмет бо старшокласники демонструють вже сформовані за роки навчання вміння навики допомагають молодшим учням з іншого боку можуть виникати проблеми пов’язані з часом бо у старшокласників закінчуються заняття значно раніше ніж в учнів 56 класів. Планування історичного гуртка Олімп Тема заняття Блок 1 1. Організаційне заняття 2. Підсумкове заняття...
54642. Вперед олімпійці. Позакласний захід 51 KB
  Розвивати руховий апарат, фізичні вміння учнів. Впроваджувати елементи класичної аеробіки в систему фізичного виховання. Сприяти розвитку уваги, дисциплінованості, кмітливості. Виховувати у учнів любов до фізичної культури та свідоме ставлення до здорового способу життя.
54643. Единый Всеукраинский Олимпийский урок 227.5 KB
  1 ведущая: 28 веков над землёй пронеслись И теперь до сих пор Слышен стук колесниц Праздник спорта живёт И огонь не погас Олимпийские игры Славит Пегас 2 ведущий: В живописной долине Средь статуй Богов Собирались атлеты Элитных кругов И спортивная песня От века до века Захватила и скифа и тавра и грека Греческий танец исполняют учащиеся 1011классов 1 ведущая: Но до...
54644. Розв'язування вправ та задач на додавання, віднімання та множення натуральних чисел 185.5 KB
  Цього разу щоб отримати підказку вам необхідно розвязати таке завдання на картці. Молодці Отримуйте свою відгадку Катерина Серебрянська художня гімнастика 1996 рік літня олімпіада Лілія Підкопаєва спортивна гімнастика 1996 рік літня олімпіада Рустам Шарипов спортивна гімнастика 1996 рік літня олімпіада Хто же наступний Візьміть аркуш який лежить у кожного на парті. Розв'язання: 28  45 1260 114 448  25 1374 11200 12574 Відповідь: 12574 Тимур Таймазов – важка атлетика 1996 рік літня олімпіада Розв’яжемо...