Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка программы для работы с процедурным типом↑ ⇐ ПредыдущаяСтр 21 из 21 Содержание книги
Поиск на нашем сайте
Цель работы: формирование знаний и умений по работе с процедурным типом данных. Краткие теоретические сведения Нетипизированные параметры. Параметры процедурного типа Нетипизированные параметры - это группа параметров, перед которыми стоит ключевое слово Var и за которым не следует тип. Фактическими параметрами в операторе вызова процедуры в данном случае могут быть переменные любого типа. Поскольку у нетипизированных параметрах тип отсутствует, то изначально они совместимы с переменными всех типов. Обеспечение совместимости с фактическими параметрами может быть достигнуто двумя способами. Способ 1: внутри процедуры объявляется локальная переменная нужного типа, наложенная на переданный фактический параметр. Для описания такой переменной используется зарезервированное слово Absolute. Пример 1. program Primer1; Var {Обьявление глобальных переменных} x1,x2,y1,y2,z1,z2: real; {процедура возведения в степень} procedure stepen (x,y: real; var s); {x, y – параметры значения} var ss: real absolute s; {s- параметр без типа, ss наложенная на s – локальная переменная типа real} begin ss:=exp(y*ln(x)); end; {конец процедуры stepen} begin {основная программа} writeln(‘Введите значение переменных в последовательности: x1 y1 x2 y2’); readln (x1, y1, x2, y2); {Чтение исходных данных} stepen (x1, y1, z1); {Первый оператор вызова процедуры stepen} stepen(x2, y2, z2); {Второй оператор вызова процедуры stepen} z1:= z2+z1; {Формироваие результата} writeln(z1); {печать результата} end. Способ 2: внутри процедуры вводится нужный тип. Данный тип ставится в соответствие нетипизированному параметру с помощью присваивания типа переменной. Пример 2. В программе функция Sum выдает сумму двух вещественных переменных при N=Ø, и сумму двух одномерных массивов при N<>Ø. program Primer2; var ind: integer; m1,m2: array [1..5] of integer; {описание массивов m1 m2} x1,x2:real; {функция вычисления суммы} function sum(n: integer; var y1,y2): real; Type mas = array [1..MaxInt] of integer; Var i: integer; s: real; begin if n=Ø then sum:= real(y1)+real(y2); else begin s:=Ø; for i:=1 to n do s:= s + mas(y1)[i]+mas(y2)[i]; sum:=s; end; end; {конец функции sum} Begin {основная программа} for ind:= 1 to 5 do real(m1[i], m2[i]); {заполнение массивов данными} writeln(‘Введите 2 вещественных числа: ’) read(x1,x2); writeln(’x1 + x2’, sum(Ø,x1,x2)); {вызов в операторе writeln функции sum-для суммирования вещественных чисел x1 и x2 (n=0)} writeln(’Массивы’, sum (5,m1, m2)); {вызов в операторе writeln функции sum-для суммирования массивов m1 и m2 (n=5<>0)} end. Параметр процедурного типа В Паскале допускается передача в качестве параметра имени других процедур или функций. Например: Type Func = function(x,y:byte):byte; Proc = procedure(var x,e:byte); var P1: Proc; F1: Func; При этом должны совпадать число параметров и соответственно типы параметров. Всем процедуры и функции, имена которых присваиваются процедурным переменным, необходимо компилировать в режиме {$F+}. Описание процедурных типов вводится в разделе Type. Синтаксис описания совпадает с заголовком процедуры, однако имя процедуры в описании опускается. Имена параметров в описании процедурного типа играет чисто иллюстративную роль. Никакого влияния на значение этого описания данные имена не оказывают. Процедурной переменной может быть присвоено значение другой процедурной переменной, имя процедуры или функция. При этом переменная слева и значение в правой части оператора присваивания должны быть совместимы по присваиванию. Для обеспечения такой совместимости процедура, если её нужно присвоить процедурной переменной, должна удовлетворять следующим требованиям: 1. Она должна компилироваться в состоянии {$F+} (в исходном тексте программы перед описанием такой процедуры должна быть размещена директива компилятора {$F+}, а в конце описания {$F-}) 2. Она не должна быть стандартной процедурой или функцией. 3. Она не должна быть вложенной. 4. Она не должна быть процедурой типа inline. 5. Она не должна быть процедурой прерывания (interrupt). Пример 3. Program Primer3; Type Func=function(x,y:anteger):integer; {$F+} Function Add(a,b:integer):integer; Begin Add:=a+b; end; Function Multiplay(a,b:int):int; Begin Multiplay:=a+b; end; Function Div(a,b:int):int; Begin Div:=a/b; end; {$F-} Procedure RAB(n,m:integer;Operation:Func); {Operation-параметр процедурного типа} Var i,j:integer; Begin for i:=1 to n do for j:=1 to m do write(operation (i,j):5); end; Begin {основная программа} RAB(10,10,Add); {вызов процедуры RAB с последним параметром- процедурой Add} RAB(20,10,Multiplay);); {вызов процедуры RAB с последним параметром- процедурой Multiplay} RAB(10,5,Div);); {вызов процедуры RAB с последним параметром- процедурой Div} End. Порядок выполнения работы 1. Изучить теоретические сведения по теме “ Разработка программы для работы с процедурным типом”. 2. Получить у преподавателя индивидуальное задание и разработать программу для работы с процедурными типами данных согласно заданному варианту. 3. Показать работающую программу преподавателю. 4. Ответить на контрольные вопросы. Контрольные вопросы 1. Нетипизированный параметр. Способы присвоения конкретного типа нетипизированному параметру. 2. Назначение процедурной переменной, объявление. 3. Обеспечение совместимости процедуры, если её нужно присвоить процедурной переменной.
Литература 1 Гусева А. И. Учимся программировать: Pascal 7.0. - М.: Бином, 1999. 2 Сурков Д.А., и др. Программирование в среде Borland Pascal для Windows.-Мн.: “Вышэйшая школа”, 1996. 3 Грызлов В.И. и др. Pascal 7.0.- Киев, BHV, 1999. 4 Вирт Н. Алгоритмы и структуры данных –М.: “Мир”, 1989 Содержание Лабораторная работа № 1 Блок-схемы как графическое представление алгоритмов. Основные блоки, используемые в блок- схемах алгоритмов........................... 4 Лабораторная работа №2 Построение блок-схем алгоритмов........................ 9 Лабораторная работа № 3 Вызов интегрированной среды (ИС) языка программирования Паскаль. Структура основного экрана. Изучение меню................................ 15 Лабораторная работа №а 4 Нписание программы на Паскале с использованием операторов ввода-вывода данных................................................................... 24 Лабораторная работа № 5 Написание программы на Паскале...................... 27 с использованием операторов ввода-вывода данных с различными форматами выводимых данных........................................................................................... 27 Лабораторная работа № 6 Написание программы на Паскале с использованием операторов присваивания и безусловного перехода...................................... 30 Лабораторная работа № 7 Написание программы на Паскале с использованием условных операторов и оператора выбора Case............................................................. 34 Лабораторная работа № 8 Написание программы на Паскале с использованием операторов повтора (For, Repeat)................................................................... 39 Лабораторная работа № 9 Написание программы на Паскале...................... 44 с использованием операторов повтора (While)............................................... 44 Лабораторная работа № 10 Написание программы на Паскале для решения задач на ввод-вывод линейных и двумерных массивов................................................. 46 Лабораторная работа № 11 Написание программы на Паскале для решения задач на обработку линейного массива.......................................................................... 53 Лабораторная работа № 12 Написание программы на Паскале для решения задач на обработку двумерного массива....................................................................... 57 Лабораторная работа № 13 Написание программы на Паскале с использованием встроенных функций......................................................................................... 61 Лабораторная работа № 14 Написание программы на Паскале с использованием функций, определенных пользователем.......................................................... 66 Лабораторная работа № 15 Написание программы на Паскале с использованием процедур, определенных пользователем......................................................... 69 Лабораторная работа № 16 Написание программы на Паскале с использованием рекурсии............................................................................................................ 74 Лабораторная работа № 17 Реализация алгоритма бинарного поиска при написании программы на Паскале..................................................................................... 78 Лабораторная работа № 18 Реализация алгоритмов сортировок включением и выбором при написании программы на Паскале............................................................ 82 Лабораторная работа № 19 Реализация алгоритмов обменных сортировок при написании программы на Паскале………………………………………………...85 Лабораторная работа № 20 Реализация алгоритмов внешних сортировок при написании программы на Паскале..................................................................................... 89 Лабораторная работа № 21 Написание программы на языке Паскаль с использованием разработанного собственного модуля............................................................. 91 Лабораторная работа № 22 Изучение наиболее часто употребляемых универсальных процедур и оформление их в виде личной библиотеки программиста......... 97 Лабораторная работа № 23 Написание программы на языке Паскаль с использованием стандартных строковых процедур и функций.............................................. 101 Лабораторная работа № 24 Написание программы на языке Паскаль с использованием строковых переменных................................................................................... 107 Лабораторная работа № 25 Написание программы на языке Паскаль с использованием записей............................................................................................................. 112 Лабораторная работа № 26 Написание программы на языке Паскаль с использованием записей с вариантами...................................................................................... 116 Лабораторная работа № 27 Написание программы на языке Паскаль с использованием множеств.......................................................................................................... 122 Лабораторная работа № 28 Написание программы на языке Паскаль с использованием с использованием файловых переменных........................................................ 128 Лабораторная работа № 29 Разработка программы для работы с типизированным файлом............................................................................................................. 137 Лабораторная работа № 30 Разработка программы для работы с нетипизированным файлом............................................................................................................. 144 Лабораторная работа № 31 Изучение карты памяти. Разработка программы доступа к полям PSP........................................................................................................ 148 Лабораторная работа № 32 Разработка программы использования динамической памяти......................................................................................................................... 151 Лабораторная работа № 33 Разработка программы создания связанного списка 159 Лабораторная работа № 34Разработка программы для работы с процедурным типом......................................................................................................................... 162 Литература…………………………………………………………………………166
|
||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 289; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.72.172 (0.009 с.) |