Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Програмування допоміжних алгоритмів

Тип Реферат
Предмет Астрономия
Просмотров
951
Размер файла
19 б
Поделиться

Ознакомительный фрагмент работы:

Програмування допоміжних алгоритмів

Тема. Програмування допоміжних алгоритмів

1. Процедури-оператори.

Раніше були розглянути стандартні процедури та функції, які надавали досить широкий набір функціональних залежностей. Разом з тип мова ПАСКАЛЬ дозволяє користувачеві створювати власні допоміжні алгоритми. Розрізняють два види алгоритмів: процедури-оператори (далі просто процедури) та процедури-функції (далі просто функції). Вони дозволяють включати в основний програмний блок додаткові блоки команд. Процедура активізується за допомогою оператора процедури. Функція активізується при обчисленні виразу, що містить виклик цієї функції.

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

Розглянемо оголошення процедури.

Процедура складається з таких частин:

· заголовка процедури;

· розділу описів процедури;

· операторної частини (тіла) процедури.

Заголовок процедури починається службовим словом procedure, після якого вказується ім’я процедури й описується список формальних параметрів (якщо він є присутнім). Формальні параметри задають вихідні дані для процедури та змінні для результатів її роботи.

ПРИКЛАД:

procedure print(x:string);

procedure paint;

Розділ описів процедури містить опис об’єктів, які будуть використовуватись лише даною процедурою. Такі об’єкти називаються локальними для даної процедури. Їх використання поза межами процедури неможливе і приведе до появи повідомлення про помилку. Використання локальних змінних не є обов’язковим. Можна обійтись глобальними змінними, які описані в основній програмі. Однак використання локальних змінних робить і процедуру, і основну програму більш зрозумілими.

Блок операторів задає дії, які повинна виконати процедура.

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

ПРИКЛАД. Розглянемо опис процедури для обчислення добутку перших k натуральних чисел (k!).

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

procedure fakt(k: integer; var p: integer);

{в заголовку процедури міститься два параметри: перший – k – є параметром-значенням і являє вихідні дані; другий – p –являє собою результат і оголошений як параметр-змінна}

var

i: integer;

{ локальна змінна i буде використовуватись як параметр циклу }

begin

{ тіло процедури задає дії }

p:=1;

for i:=1 to k do p:=p*i;

end;

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

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

Оголошення, що випереджає, і визначальне оголошення складають повне оголошення процедури. Вважається, що процедура задана в оголошенні, що випереджає.

ПРИКЛАД оголошення, що випереджає:

procedure first(k: integer; var p: integer): forward;
{випереджальне оголошення}

procedure second(var n: integer; var s:real);

{дана процедура використовує процедуру first,тіло якої буде задано далі}

begin

...

first(n,m); { виклик процедури, що ще не оголошена }

...

end;

procedure first;

begin

second(k,p); {виклик процедури, тіло якої описано вище}

end;

2. Процедури-функції.

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

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

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

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

ПРИКЛАД: розглянемо опис функції для обчислення добутку перших k натуральних чисел (k!).

function fact(k: integer) : integer;

{ в заголовку процедури міститься параметр k – він є параметром-значенням і являє собою вихідні дані; сама функція оголошена також цілочисельною }

var

i: integer;

{ локальна змінна i буде використовуватись як параметр циклу }

p:integer; { ця змінна потрібна для обчислення

результату в циклі }

begin {тіло процедури задає дії }

p:=1;

for i:=1 to k do p:=p*i;

facf:=p; {ім’я fact не могло використовуватись в циклі, тому що це суперечить правилам виклику функції}

end;

Як і процедури, функції можуть бути оголошені як forward.

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

Існує три види параметрів: значення, змінна і нетипізована змінна. Вони характеризуються таким чином:

· група параметрів без попереднього ключового слова var і з наступним за нею типом є списком параметрів-значень;

· група параметрів з попереднім ключовим словом var і наступним за нею типом є списком параметрів-змінних;

· група параметрів з попереднім їй ключовим словом var і без наступного за нею типу є списком нетипізованих параметрів-змінних.

ПРИКЛАДИ:

procedure example(x:integer; var a,b:real; var s,t)

В даному випадку параметр x є параметром-значенням, a та b є параметрами-змінними, а змінні s іt є не типізованими параметрами-змінними.

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

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

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

ПРИКЛАД:

Нехай оголошена процедура sum(x,y:integer; var z:integer)

Нехай виклик процедури має вигляд sum(a,b,c). В такому випадку будуть створені нові змінні x та y, які одержать значення змінних a та b відповідно. А замість змінної z буде підставлена змінна c.

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

Фактичний параметр, що відповідає параметру-змінній, може бути лише змінною. Усередині процедури або функції будь-яке посилання на формальний параметр-змінну дає доступ до самого фактичного параметра. Тип фактичного параметра повинний бути тотожний типу формального параметра-змінної (можна обминути це обмеження через нетипізованіпараметри-змінні). Якщо типом формального параметра є тип String, то задається атрибут довжини, рівний 255, і фактичний параметр-змінна повинний мати рядковий тип з атрибутом довжини, рівним 255.

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

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

Усередині процедури або функції нетипізованийпараметр-змінна не має типу, тобто він не сумісний зі змінними всіхінших типів, якщо йому не присвоєний визначений тип за допомогою приведення типу змінної.

ПРИКЛАД: використання нетипізованих параметрів-змінних:

program example;

const n=10;

type massiv=array[1..n] of integer;

var x:massiv;

function sum(var a:array of integer):integer;

{Параметр а оголошений як нетипізований масив}

var s,i,k,m:integer;

begin

{Змінні k та m визначають верхню та нижню межу індексів масиву}

end;

begin

end.

Узагальнення по темі.

Мова ПАСКАЛЬ дозволяє користувачеві створювати власні допоміжні алгоритми. Розрізняють два види алгоритмів: процедури-оператори (далі просто процедури) та процедури-функції (далі просто функції). Вони дозволяють включати в основний програмний блок додаткові блоки команд. Процедура активізується за допомогою оператора процедури. Функція активізується при обчисленні виразу, що містить виклик цієї функції.

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

Оголошення допоміжного алгоритму складається з таких частин:

· заголовка ;

· розділу описів ;

· операторної частини (тіла) .

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

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

Фактичними параметрами називаються ті параметри, які вказуються при викликові допоміжного алгоритму.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

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

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

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

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно