Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Тема- Організація обміну даними між процедурами та функціями

Работа добавлена на сайт samzan.net:


Лабораторна робота 5 (2 год)

модуль 1

Тема: Організація обміну даними між процедурами та  функціями.

Мета: Формування навичок роботи з процедурами і  функціями

Література:

  1.  Архангельский А.Я. Язык Pascal и основы программирования в Delphi
  2.  Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов.– М.: Мир, 1979.– 536 с.
  3.  Культин Н.Б. Turbo Pascal в задачах и примерах
  4.  М.С.Львов, О.В. Співаковський. Основи алгоритмізації та програмування.  
  5.  Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0
  6.  Меженный О.А. Turbo Pascal
  7.  Немцова Т.И., Голова С.Ю., Абрамова И.В. Программирование на языке высокого уровня. программирование на языке Object Pascal
  8.  Окулов С.М. Основы программирования.– М.: ЮНИМЕДИАСТАЙЛ, 2002.– 424 с.
  9.  Павловская Т.А. Паскаль. Программирование на языке высокого уровня
  10.  Пильщиков В.Н. Сборник упражнений по языку Паскаль. Москва, Наука, 1989 г., 160 с.

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

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

 

Оператор процедури має вигляд:

< им’я > або < им’я > (< список фактичних параметрів >)

 

Приклад операторів процедури:

 

Picture

 Power(( a + b )/2, 3, degree, root )

 Integral ( 0, P/2, 1E-6, SUMMA)

Зверніть увагу на відповідність між заголовком процедури і оператором процедури. Між списками формальних і фактичних параметрів встановлено взаємно-однозначна відповідність, певну їх місцями в списках. Це відповідність ілюструється наступним прикладом:

Приклад. Розглянемо заголовок процедури і оператор цієї процедури:

Procedure Integral ( a, b, eps: real; var s: real );

      Integral ( -Pi/2, Pi/2, 1E-6, summa );

 

Відповідність:

            

Формальний параметр              Фактичний параметр

                

Значение  a                            Выражение   - Pi/2

Значение  b                            Выражение   Pi/2

Значение  eps                         Данное    1E-6

Переменная   s   Переменная   Summa

Як було зазначено вище, параметри бувають 2-х видів: параметри-значення та параметри-змінні. Якщо перед описом параметрів ніякого службового слова ні, мова йде про параметри-значеннях. Перед описом параметрів-змінних ставиться службове слово Var. При зверненні до процедури (в процесі виконання оператора процедури) формальним параметрам-значенням присвоюються значення відповідних фактичних параметрів, а замість імен формальних параметрів-змінних підставляються відповідні фактичні параметри-імена змінних, а потім виповнюється підпрограма, описана процедурою.
Якщо х1, х2 ,..., хn - фактичні параметри-змінні, відповідні формальним параметрам-змінним v1, ... , Vn, то x1, x2, ..., xn повинні бути різними. Фактичними параметрами-значеннями можуть бути вирази або дані відповідних типів.
Розглянемо приклад:

Приклад. Програма обчислює координати точки (x0, y0) при послідовних поворотах і паралельних перенесення системи координат.

Program Coordinates;

  Const Pi = 3.141592;

      Var Alfa, Beta : Real;

            x0, y0, x1, y1, x2, y2 : Real;

            x, y : Real;

 Procedure Rotate(x, y, Fi: Real; var u, v: Real );

            var    cosFi, sinFi : Real; { локальные переменные }

       begin

         Fi := Fi*Pi/180 ;

         cosFi := Cos(Fi); sinFi := Sin(Fi);

         { параметры x, y защищены от глобальных переменных x, y }

          u := x * cosFi - y * sinFi ;

          v := x * sinFi + y * cosFi

        end ;

 

Procedure Move(x, y, a, b : Real; var u, v: Real);

      begin

         u := x + a ; v := y + b

        end;

   

begin

       Read (x0, y0);  Read (Alfa);  

       Rotate(x0, f0, alfa, x, y);

       Read (x1, y1);     

    Move(x, y, x1, y1, x, y);

       Read (Beta);       

    Rotate(x, y, Beta, x, y);

       Read ( x2, y2 );  

       Move(x, y, x2, y2, x, y);

       Writeln (‘================================’);

       Writeln (‘абсцисса точки : ‘, х);

       Writeln (‘ордината точки : ‘, y);

   end.

Параметри-значення використовуються для передачі даних у процедуру. Це означає, що для параметра-значення на час виконання процедури резервується пам'ять, розмір якої визначений типом параметра і яка заповнюється при виклику процедури. Таким чином, використання параметрів-значень при передачі даних великого об'єму може призвести до невиправданих витрат часу процесора й адресовані пам'яті.
Нехай, наприклад, мінлива A типу Sequence - масив з 1000 дійсних чисел і Procedure MaxMin (X: Sequence; var Max, Min: Real) - пошук максимального і мінімального елементів масиву X. Тоді при зверненні до процедури MaxMin за допомогою оператора MaxMin (A, Sup, Inf) компілятор виділить пам'ять (6 - 10 байт на кожен елемент масиву - всього 6000 - 10000 байт) і здійснить 1000 циклів пересилання чисел з A в X. Якщо ж параметр X визначити як параметр-змінну: Procedure MaxMin (var X: Sequence; var Max, Min: Real) ні пам'яті, ні пересилань не знадобиться.

Параметри константи. 

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

Вихідні параметри. 

Ці параметри (out parameters), подібно параметрам змінним, також передаються по посиланню. Разом з тим початкове значення вихідного параметра ігнорується, так як він призначений тільки для повернення результату. Наприклад, 
procedure GetInfo (out Info: SomeRecordType);

Задачі для самостійного розв’язування

  1.  Скласти програму, що за поданими a і b міняє їх значення на квадратний корінь відповідно іншого числа без використання додаткової змінної. Розв’язати задачу, використовуючи процедури та функції. Результат округлити до тисячних.
  2.  Баба-Яга записалася на курси водіїв літаючих апаратів. Але справи в неї були кепські, бо вона ніяк не могла запам'ятати, яким чином визначається тривалість польоту, якщо відомі швидкість і відстань. Довелося їй звернутися по допомогу до Хлопчика-Мізинчика, який швиденько написав їй шпаргалку, куди Бабі-Язі треба було лише підставити свої значення. Як виглядала послідовність дій у цій шпаргалці і як нею користувалася Баба- Яга? Очевидно, що шпаргалку Хлопчика-Мізинчика можна оформити як допоміжний алгоритм. Параметрами, що передаються в цей алгоритм, будуть швидкість літаючого апарату та відстань, яку необхідно подолати, а вихідним параметром - шукана тривалість польоту. Скласти програму, яка б знаходила тривалість польоту за заданими швидкістю та відстанню. Результат виконання програми округлити до сотих.
  3.  У Білосніжки наближався день народження, і її вирішили привітати друзі. Перш за все це були гноми, далі зібралися звірята, а потім і пташки прилетіли. Кожен з гостей приніс квіти, кількість яких зберігається у відповідному масиві: а1, а2, ... an - квіти гномів, b1, b2, … bm - квіти звірят та c1, c2, …, ck - квіти пташок. Скласти програму, яка б визначала, хто з гостей (gnomes, animals, birds) приніс найбільшу кількість квітів та серед кого з гостей опинився найщедріший гість?
  4.  Скласти програму, яка б із тексту S вилучала вказаний символ х і обчислювала кількість вилучень. Розв’язати задачу за допомогою процедур та функцій.
  5.  Дано рядок. Скласти програму, яка знаходить слова, що мають подвоєння букв. Розв’язати задачу за допомогою процедур або функцій.
  6.  Дано натуральні числа k, l, m, дійсні числа x1,...,xk, y1,...,yl, z1,...,zm. Отримати 
    Результат виконання програми округлити до тисячних.
  7.  Дано натуральні числа l, m. Отримати . Результат виконання програми округлити до тисячних.


Оператор

процедуры

Имя

процедури

(

)

Фактичний

параметр

,

  1.  



1. Северодвинска хочу рассказать Вам о случившимся в данном образовательном учреждении
2. Курсовая работа- Корпоративная стратегия
3. Окончательная отделка изделия
4. Экология Опасности, угрожающие всей планете
5. Лекция 18 Проблемы эффективности рекламы Проблема исследования эффективности рекламы одна из
6.  ВВЕДЕНИЕ 2 ПОНЯТИЕ И ПРИЗНАКИ СОУЧАСТИЯ В ПРЕСТУПЛЕНИИ 2
7. Лабораторная работа 2
8. Лабораторная работа 31
9. Харбы Копи Пронизывающего ВетраИзмененияБонусы премиумаБонусы премиума в ЗБТверсии не являются финальны
10. Тема Економічний зміст страхування
11. Рефератпо ПолитологииВнешняя политика государства Студент- гр
12. человекознания [1]
13. Тема 8 Обеспечение безопасности корпоративных информационных систем
14. Молодая наука ~ 2014 1618 апреля 2014 года г
15. Техніко-економічне обґрунтування водогосподарських комплексів
16.  Что Вы ожидаете от Петербургского экономического форума Считаете ли Вы что он может повлиять на решение а
17. Тема- Институты власти и нормативные регуляторы в первобытном обществе
18. на тему- Альтернативная гидроэнергетика Выполнила студентка группы 13БЖК1 А
19. Вариант 1010 Выполнил- ст
20. хотя соответствующие знания накапливались в течение веков.html