Рассмотрим пример. В промышленности для измерения высоких температур широко используются термопары из соединений различных сплавов. С них снимают напряжение, являющееся функцией температуры, но значение напряжения существенно нелинейно и его приходится линеаризировать. Напряжение преобразуется в цифровой код с помощью АЦП, то есть входное значение является целой величиной.

У разных термопар характеристики различаются очень сильно. Рассмотрим термопару, позволяющую измерять температуру до 1500 градусов. Допустим, ее график как принятый с 12-разрядного АЦП код от температуры (212 = 4096 отсчетов) выглядит в соответствии с рис. 4.1.

Рис. 4.1. Зависимость кода, принятого с АЦП, от температуры, измеряемой термопарой

Кривая заменяется отрезками прямых с координатами и углами наклона, которые определяются заранее. В зависимости от диапазона кода, принятого с АЦП, используются данные соответствующей прямой.

Хотя обычно данные читаются в цикле из файла, но в данной программе для простоты осуществляется ввод одной точки с клавиатуры.

Program Linear;

Var n:word;

t:real;

Begin

WriteLn ('Введите значение кода');

Read(n);

Case n of

0..950: t:=n*0.43;

951..1500: t:=400+n*0.85;

1501..2100: t:=600+n*0.38;

2101..3100: t:=1100+n*0.79;

3101..4095: t:=1250+n*0.53

end;

WriteLn ('Значение температуры =',t:8:2)

end.

Последний оператор With для обслуживания записей рассматривается при описании соответствующей структуры данных.

Контрольные вопросы

1.  Поясните понятие «выражение».

2.  Какая операция обладает высшим приоритетом?

НЕ нашли? Не то? Что вы ищете?

3.  Какие операции обладают вторым после высшего приоритетом?

4.  Какие операции обладают третьим после высшего приоритетом?

5.  Какие операции обладают четвертым после высшего приоритетом?

6.  Какие операции обладают низшим приоритетом?

7.  С какой целью часть выражения заключается в круглые скобки?

8.  Как записываются аргументы у стандартных (и нестандартных) функций?

9.  Каков общий вид оператора присваивания?

10.  Для чего предназначен оператор присваивания?

11.  Какое исключение допускается по совпадению типов имени и выражения в операторе присваивания?

12.  Каков общий вид операторов ввода?

13.  Чем отличается оператор Read от ReadLn?

14.  Каков общий вид операторов вывода?

15.  Чем отличается оператор Write от WriteLn?

16.  Чем отличается список параметров ввода от списка параметров вывода?

17.  Что происходит с выполнением программы, когда встречается оператор Read или ReadLn?

18.  Что содержит список параметров ввода?

19.  Что содержит список параметров вывода?

20.  Как можно отформатировать вывод для любого типа данных

21.  Как можно отформатировать вывод для вещественного типа данных

22.  Каков общий вид составного оператора?

23.  Где используется составной оператор?

24.  Как выглядит пустой оператор?

25.  В каких случаях применяется пустой оператор?

26.  Как выглядит безусловный оператор перехода?

27.  Почему не рекомендуется использовать оператор безусловного перехода?

28.  В какие области программы запрещены переходы?

29.  Каков общий вид полной формы условного оператора?

30.  Как работает условный оператор в полной форме записи?

31.  Каков общий вид сокращенной формы условного оператора?

32.  Что произойдет, если при использовании сокращенной формы условного оператора логическое выражение примет ложное значение?

33.  В каких случаях используют оператор цикла FOR?

34.  Какова общая форма записи оператора цикла FOR?

35.  Что является параметром цикла в операторе FOR?

36.  Как происходит изменение параметра цикла в операторе FOR?

37.  Что является начальным и конечным значениями параметра цикла в операторе FOR?

38.  Могут ли изменятся параметр цикла, начальное или конечное его значения внутри цикла в операторе FOR?

39.  Каково минимальное количество выполнений оператора внутри цикла FOR?

40.  Какова общая форма записи оператора цикла WHILE?

41.  При каком условии будет выполняться внутренний оператор в операторе цикла WHILE?

42.  Что необходимо предпринять, чтобы внутри цикла WHILE выполнялось несколько операторов?

43.  При наличии параметра цикла, как он должен изменяться в операторе WHILE?

44.  Каково минимальное количество выполнений оператора внутри цикла WHILE?

45.  Какова общая форма записи оператора цикла REPEAT?

46.  Что необходимо предпринять, чтобы внутри цикла REPEAT выполнялось несколько операторов?

47.  При каком условии будет выполняться внутренний оператор в операторе цикла REPEAT?

48.  При наличии параметра цикла, как он должен изменяться в операторе REPEAT?

49.  Каково минимальное количество выполнений оператора внутри цикла REPEAT?

50.  В каком случае используется оператор выбора CASE?

51.  Какова общая форма записи оператора выбора CASE?

52.  Какая часть оператора выбора CASE добавлена в Турбо-Паскале?

53.  Что такое «константы выбора» в операторе CASE?

54.  Каким образом работает оператор выбора CASE?

55.  Каково должно быть соответствие между выражением и константами выбора в операторе CASE?

Глава 5. Процедурное программирование

§5.1. Функции

Язык Паскаль включает понятие подпрограмм-функций и подпрограмм-процедур.

Представление программы как совокупности или иерархии относительно обособленных фрагментов со строго определенными интерфейсами способствует большей читаемости и простоте составления и отладки программы. Понятие подпрограммы как обособленной именованной части программы со своим собственным локальным контекстом имен является в большинстве языков программирования основным средством структурирования программ.

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

Стандартные подпрограммы-функции уже приводились при описании выражений, но пользователь может составлять подпрограммы и самостоятельно, помещая их в раздел описаний.

Структура программы практически повторяет структуру всей Паскаль-программы, что подчеркивает регулярный характер языка. Структура подпрограммы-функции следующая.

Function <имя>[(<список формальных параметров>)]:<тип>;

[<описания>;]

<операторы>

End;

Здесь <имя> – имя функции, по которому происходит обращение к ней при вычислении выражения, с ним связан результат вычислений. Имя функции должно встречаться хотя бы один раз в разделе операторов функции слева в операторе присваивания, то есть результат функции должен быть определен.

<тип> – тип результата, соответствующего имени функции. Специфика функции заключается в том, что после обращения к ней должен быть определен результат, который участвует в выражении и связан с именем функции.

<список формальных параметров> может отсутствовать. Формальным параметрам, в отличие от фактических, не соответствуют никакие значения, – они лишь ставят в соответствие фактические значения и порядок вычислений по подпрограмме, то есть в этом списке должны быть только имена. Каждый параметр, заданный в заголовке, считается локальным в данной подпрограмме так же, как и переменные, описанные в блоке этой подпрограммы.

Допускается три способа задания формальных параметров подпрограммы (в заголовке в круглых скобках). Они могут быть определены следующим образом.

Параметры – значения

Это наиболее распространенный и самый простой способ передачи параметров, который имеет следующий вид:

<имя1>, <имя2>, …, <имяn>:<имя типа>

Здесь параметр считается локальной переменной в пределах подпрограммы, по нему передается значение данных, то есть он является входным. Изменение этого значения не приводит к изменениям в вызывающем модуле, поэтому здесь фактическим параметром является выражение и как частный случай – константа или переменная. Имя типа должно быть простым или описанным в разделе TYPE во внешнем модуле, поэтому следующая запись неверна:

Function Z(A:array[1..20] of real):real;

Пример: функция вычисления суммы квадратов.

Function SumSqr(x, y:real):real;

Begin

SumSqr:=x*x+y*y

End;

Параметры – переменные

Параметры, иначе называемые передаваемыми по ссылке, имеют следующий вид.

Var <имя1>, <имя2>, …, <имяn>:<имя типа>;

По этому параметру передается адрес данных, то есть он является как входным, так и выходным. Изменение этого значения вызывает изменение фактического параметра, поэтому фактическим параметром может быть только переменная.

Так как при использовании функций выходным значением является значение самой функции, то этот тип параметров наиболее часто используется в процедурах.

Бестиповые параметры

Кроме двух обычных способов передачи параметров в подпрограммы при их вызове Турбо-Паскаль допускает третий способ передачи, при котором тип параметра не фиксируется. В стандартном Паскале этот тип параметра отсутствует, но там параметрами могут быть функции и процедуры (здесь наблюдается несовместимость с Турбо-Паскалем). Описание параметра имеет следующий вид.

Var <имя1>, …

Так как тип формального параметра не задан, то, строго говоря, он не совместим ни с какой другой переменной, то есть не может входить ни в какие конструкции. Поэтому единственным способом использования таких параметров является определение их типа в теле подпрограммы. Этого можно добиться, применив к ним операцию приведения типа или описав в подпрограмме локальную переменную определенного типа с совмещением ее в памяти с нетипизированным параметром (в этом курсе не рассматриваются).

Обращение к функциям пользователя происходит в выражениях, точно так же, как к стандартным функциям: указанием имени и фактических параметров. Пример использования описанной ранее функции вычисления суммы квадратов:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством