![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Надання значення змінній-показівникуСодержание книги
Поиск на нашем сайте
Надання показівнику значення іншого показівника. За допомогою спеціальної процедури, що зв'язує з динамічною змінною область пам'яті у heap-області. NEW(var p:pointer); За допомогою безпосереднього надання показівнику припустимого значення адреси: 1) Використання оператора @ @ - унарний оператор, що повертає адресу статичної змінної, процедури чи функції, сумісну з типом NIL (тобто з любим типом показівника): a) використання для змінної - повертає адресу цієї змінної у вигляді <сегмент>:<зміщення> @<ідентифікатор змінної> <показівник> b) використання для процедури дозволяє отримати точку входу - адресу, з якої починається її виконання. Використовується для надання керування відповідній процедурі чи функції @<ідентифікатор процедури, функції> <показівник на точку входу> 2) addr(x):pointer; x - будь-яка змінна чи ідентифікатор процедури/функції. Результат - показівник на x, сумісний із всіма типами показівників. 3) ptr(<сегмент>,<зміщення>:word):pointer; функція перетворює надану у вигляді <сегмент>:<зміщення> адресу у показівник 4) seg(x):word ofs(x):word x - ідентифікатор змінної, процедури чи функції. Ці функції повертають: seg - адресу сегменту об'єкту x ofs - адресу зміщення об'єкту x 5) dseg:word; - функція повертає адресу сегменту даних (вміст регістру ds) cseg:word; - адресу сегменту коду (регістр cs) sseg:word; - адресу сегменту стеку (регістр ss). Надання показівнику значення NIL розриває зв'язок між змінною та показівником, але не знищує самої змінної у динамічній пам'яті. Місце, яке вона займає, залишається зарезервованим і не може бути використано іншими динамічними змінними. DISPOSE(var p:pointer); процедура знищує динамічну змінну, на яку посилається показівник p, та повертає пам'ять, що вона займала, до динамічної нерозподіленої пам'яті. Значення показівника р стає невизначеним. Слідкувати за звільненням динамічних змінних слід самостійно. Утворювати та визволяти динамічні змінні можна також за допомогою іншої пари процедур: getmem ~ freemem Але якщо у процедурах NEW - DISPOSE об'єм пам'яті, що виділяється під динамічну змінну, визначається базовим типом показівника, то у процедурах getmem и freemem він визначається безпосередньо, за допомогою додаткового параметра. getmem(var p:pointer;size:word); утворює динамічну змінну розміром size
freemem(var p:pointer,size:word); звільнює динамічну змінну розміром size. Параметр size повинен дорівнювати відповідному параметру у процедурі getmem. Блочне визволення пам'яті Існують дві зв'язані між собою процедури, одна з яких фіксує поточний стан динамічної пам'яті (наприклад, перед викликом блоку процедури або функції), а інша відновлює цей стан (наприклад, після його виконання, звільнюючи всі динамічні змінні, які за цей час були утворені). mark(var p:pointer); записує поточний стан heap-області у змінну p (фактично записується heaptr) release(var p:pointer); повертає динамічну область до попереднього стану через показівник p (тобто heapptr надається значення p) Процедура release(heaporg); звільняє всю динамічно розподілену пам'ять. Таким чином, існує декілька засобів утворення та знищення динамічної змінної: NEW/DISPOSE NEW/MARK/RELEASE GETMEM/FREEMEM.
Опис та використання підпрограм. Реалізація базових алгоритмічних структур процедурною мовою програмування. Опис процедур та функцій процедурною мовою програмування. Реалізація рекурсивних алгоритмів процедурною мовою програмування. Модульне програмування та його реалізація в системах процедурного програмування. Базові структури алгоритмів (керуючі структури) – це способи керування процесами обробки даних. Комбінуючи керуючі структури, можна складати програми для розв’язання різноманітних задач. Виділяють три базові алгоритмічні конструкції: лінійні алгоритми (послідовне виконання); умова розгалуження; цикли. Лінійна структура (наступність) передбачає, що тіло алгоритму являє собою послідовність команд, виконуваних одна за іншою поспіль. Умова (розгалуження) – це вид керуючої структури, що передбачає можливість вибору з кількох варіантів, для кожного з яких, залежно від визначеної умови, виконується різна послідовність команд. Цикл – це вид керуючої структури, що дозволяє багаторазово повторити задану послідовність команд. Розгалуження. У мові Паскаль алгоритм із розгалуженням реалізований за допомогою умовного оператора if або case. Загальний вигляд умовного оператора if. if <вираз> then <оператор 1> або <серія 1> else <оператор 2> або <серія2> де <вираз> - будь-який вираз логічного типу (що виробляє в результаті True або False); <оператор 1> і <оператор 2> - оператори мови Паскаль, <серія 1> і <серія 1> - набір операторів мови Паскль.Якщо вираз набуде значення True, то виконується <оператор (серія) 1>, в іншому разі - <оператор (серія) 2>.
Мовою блок-схем ця команда записується у наступному вигляді: Друга або скорочена форма команди розгалуження: if < умова > then begin <серія>; end; Мовою блок-схем вона записується так: У повній формі команди умовного переходу виконується <серія 1>, якщо умова істинна, і <серія 2>, якщо вона хибна. В скороченій формі - серія виконується тільки у випадку, якщо умова істинна, у протилежному випадку команда розгалуження закінчується і виконується наступний за нею оператор. Оператор служить для вибору одного з помічених варіантів дії (операторів), залежно від значення "параметра". Оператор має вигляд: Case "параметр" "список помічених операторів" Else "оператор" End; Тут "параметр" - вираз або змінна порядкового типу. З "списку помічених операторів" виконується оператор з міткою, що включає значення "параметра", інакше оператор після слова Else. Конструкція Else "оператор" може бути відсутній. Нагадаємо, що "оператор" може мати вигляд: Begin "оператори" end; Приклад операторів для визначення порядку цілого числа N від 0 до 999: case N 0..9: writeln('однозначне'); 10..99: writeln('двухначне'); 100..999: writeln('трьохзначне') else writeln('Число "N" не входить у вказаний діапазон') end; Цикли 1. Безумовний цикл Якщо заздалегідь відома кількість повторень циклу, то можна скористатися циклом із покроковою зміною аргументу. Його перевагою є стислість і простота запису. Циклічні програми з покроковою зміною аргументу мовою Паскаль реалізовані за допомогою оператора циклу for: for <лічильник циклу>: = <вираз 1> to <вираз 2> do <тіло циклу> де <лічильник циклу> - змінна будь-якого типу, <вираз 1> і <вираз 2> - вирази такого самого типу; <тіло циклу> - будь-яка послідовність операторів, що повторюється доти, доки <лічильник циклу> не набере значення <вираз 2>. <Лічильник циклу> збільшується на 1 після кожного виконання циклу. Для його зменшення на 1 зарезервоване слово to змінене на слово downto. 2. Цикл-поки (з передумовою) До нього входять як базові такі структури: блок перевірки умови Р і блок S, що називається тілом циклу. Блок перевірки умови розташований раніше тіла циклу і керує роботою циклу. Оскільки тіло циклу S розташоване після перевірки умови Р, то може статися, що за певних умов блок S не буде виконано жодного разу.
while <вираз> do <оператор> де <вираз> - будь-який вираз логічного типу (що виробляє в результаті True або False); <оператор> - оператор (складений оператор) мови Паскаль. Якщо вираз набуде значення True, то виконується <оператор>, в іншому разі виконання циклу завершується. 3. Цикл-до (з постумовою) Характеризується тим, що перевірка умови Р стоїть після тіла циклу. Під час роботи циклу з постумовою тіло циклу S виконується принаймі один раз і буде виконуватися доти, доки не справдиться умова Р. Справдження умови Р в цьому випадку – умова закінчення циклу. Циклічні програми з постумовою мовою Паскаль реалізовані за допомогою оператора циклу repeat:
<тіло циклу> until де <тіло циклу> - будь-яка послідовність операторів, що повторюється доти, доки <вираз> не набере значення True.
|
|||||||
Последнее изменение этой страницы: 2016-09-13; просмотров: 243; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.23.92.85 (0.01 с.) |