КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Процедуры и функции
Работа с файлами. Как уже говорилось выше в пособии рассматривается работа только с текстовыми файлами. Для организации текстового файла прежде всего необходимо в разделе описаний объявить соответствующую файловую переменную оператором: VAR имя файловой переменной: TEXT; Далее в программе надо осуществить связывание файловой переменной с именем файла на диске процедурой ASSIGN: ASSIGN (имя файловой переменной, имя файла на диске); Далее файл необходимо открыть одной из следующих процедур: REWRITE(имя файловой переменной); RESET(имя файловой переменной); APPEND(имя файловой переменной); Процедура REWRITE открывает файл для чтения из него данных, RESET – для записи данных в файл, APPEND для дозаписи данных в файл. Для обработки текстовых файлов используются процедура READ, READLN и WRITE, WRITELN, обеспечивающие соответственно чтение и запись величин в текстовый файл. Общий формат этих процедур при работе с текстовым файлом: READ(имя файловой переменной; переменная1, переменная2,…переменнаяN); WRITE(имя файловой переменной; переменная1, переменная2,…переменнаяN); Процедура READ обеспечивает ввод данных общим потоком из одной строки, а READLN приводит к обязательному переходу к следующей строке текстового файла. Все вышесказанное в равной мере относится и к операциям записи с помощью процедур WRITE и WRITELN. После работы с файлом его необходимо закрыть командой: CLOSE(имя файловой переменной); В Паскале для обработки признака конце файла используется логическая функция EOF, аргументом которой является имя файловой переменной и которая принимает значение истина тогда, когда достигнут конец файла. Созданный файл с данными можно открыть в какой-либо программе, например в Excel, и работать там с ним. Пример 14. Программа расчета функции y=sin(2x)/x и вывода значений х и y в файл REZULT.DAT на диске D: и на экран монитора. PROGRAM RASCHET; USES CRT; VAR I:INTEGER; Y,X:REAL; FF:TEXT; BEGIN {установка связи файловой переменной FF с дисковым именем файла REZULT.DAT} ASSIGN(FF,'D:\REZULT.DAT'); {открытие файла для записи в него данных} REWRITE(FF); CLRSCR; X:=0.3; FOR I:=1 TO 20 DO BEGIN Y:=SIN(2*X)/X; {вывод результатов в файл} WRITELN(FF,' ',X:4:2,Y:8:3); {вывод результатов на экран} WRITE(' ',X:4:2,' ',Y:6:2); X:=X+0.05; END; {закрытие файла} CLOSE (FF); END. Подпрограммой называется именованная логически законченная группа операторов языка программирования, которую можно вызвать по имени для выполнения любое количество раз из различных мест программы. В Паскале для организации подпрограмм используются процедуры и функции. Процедура – это независимая поименованная часть программы, предназначенная для выполнения определенных действий. Она состоит из заголовка и тела. Процедуру вызывается оператором вызова процедуры (см. Простые операторы), после выполнения процедуры, программы продолжает работу с оператора, следующего непосредственно за оператором вызова процедуры. Имя процедуры не может входит в выражения в качестве операнда. Функция аналогична процедуре, но она передает в точку вызова скалярное значение (результат своей работы) и имя функции может входит в выражение как операнд. Процедуры и функции могут быть встроенными (или стандартными), т.е. являющимися частью языка, и пользовательскими, т.е. организованные самим программистом. Наиболее часто используемые арифметические встроенные функции: ABS(X) – вычисление абсолютной величины Х; ARСTAN(X) – вычисление угла, тангенс которого равен Х, значение угла представляется в радианах; COS(X) – вычисление косинуса Х, параметр задает значение угла в радианах; SIN(X) - вычисление косинуса Х, параметр задает значение угла в радианах; EXP(X) – вычисления значения еХ; INT(X) – вычисление целой части Х; LN(X) – вычисление натурального логарифма Х; SQR(X) – возведение значения Х в квадрат; SQRT(X) – извлечение квадратного корня из Х; PI – функция возвращает значение числа p; RANDOM(N) – генерирует значение случайного числа в диапазоне от 0 до N, тип результата целочисленный; RANDOM – генерирует значение случайного числа в диапазоне от 0 до 0,99, тип результата вещественный. При необходимости вычисления других тригонометрических функций пользуются формулами: tg(x)=sin(x)/cos(x); ctg(x)=cos(x)/sin(x); lg(x)»0,43429ln(x); ; ; . В Паскале нет функции возведения в степень, поэтому для вычисления ZX необходимо записать EXP(X*LN(Z)), причем число Z должно быть больше нуля. Встроенные процедуры ввода-вывода (WRITE, WRITELN, READ, READLN) были рассмотрены ранее. Функция, определенная пользователем, состоит из заголовка и тела функции и имеет формат: FUNCTION имя функции[(формальные параметры)]: тип результата; Разделы описаний BEGIN Раздел операторов END; Тип результата – тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре аналогичный программе. В разделе операторов должен находится по крайней мере один оператор, присваивающий идентификатору функции значение. Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам, указанным в заголовке функции, и иметь тот же тип. Формат обращения к функции: имя функции [(фактические параметры)]; Процедуры пользователя. Описание такой процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова PROCEDURE, имени процедуры и необязательного заключенного в круглые скобки списка формальных параметров с указанием типа каждого параметра. Имя процедуры – идентификатор, уникальный в пределах программы, тело процедуры – локальный блок по структуре аналогичный программе на Паскале. Формат записи процедуры: PROCEDURE имя процедуры [(формальные параметры)]; Разделы описаний BEGIN Раздел операторов END; Для обращения к процедуре используется оператор вызова процедуры: имя процедуры [(фактические параметры)]; Список фактических параметров заключается в круглые скобки, параметры отделяются друг от друга запятыми. Список параметров может отсутствовать, если процедуре не передается никаких значений. Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке описания процедуры устанавливается взаимно-однозначное соответствие: количество и тип формальных параметров равны количеству и типу фактических параметров. Если процедура возвращает в программу какие-либо значения, то соответствующие переменные должны быть описаны в разделе описаний переменных. [10, 11] Пример 15. Программы нахождения факториала: а) с использованием функции. PROGRAM FAKT1; USES CRT; VAR N,M,F1,F2: integer; FUNCTION F(K: integer): integer; VAR FAKT,I: integer; BEGIN FAKT:=1 FOR I:=1 TO K DO FAKT:=FAKT*I; F:=FAKT; END; BEGIN {основная программа} CLRSCR; READ (N,M); F1:=F(N); F2:=F(M); {обращение к функции} WRITELN(‘ ‘,N:3,’!=’,F1:7); WRITELN(‘ ‘,N:3,’!=’,F2:7); END. б) с использованием рекурсивной функции. PROGRAM FAKT3; USES CRT; VAR N: integer; FUNTION FACT(I: integer):longint; BEGIN IF I=1 THEN FACT:=1 ELSE FACT:=I*FACT(I-1) END; BEGIN {основная программа} CLRSCR; READ (N); F1:=FACT(N); {обращение к функции} WRITELN(‘ ‘,N:3,’!=’,F1:7); END. в) с использованием процедуры. PROGRAM FAKT2; USES CRT; VAR N,M: integer; PROCEDURE F(K: integer); VAR FAKT,I: integer; BEGIN FAKT:=1 FOR I:=1 TO K DO FAKT:=FAKT*I; WRITELN(‘ ‘,K:3,’!=’,FAKT:7); END; BEGIN {основная программа} CLRSCR; READ (N,M); F(N); F(M); {обращение к процедуре} END.
Дата добавления: 2014-10-31; Просмотров: 573; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |