Параметры процедуры — это входные и выходные переменные, посредством которых основная программа обменивается данными с Процедурой. Различают входные и выходные параметры.
Входные параметры – это переменные, в которые передаются значения переменных или констант основной программы в Процедуру, и не предназначены для возврата.
Procedure printkvadr (i:integer);
Var x :real;
Begin
writeln(‘квадрат числа ‘, x:5:2);
end;
Выходные параметры– это переменные (не константы), которые передаются основной программой в Процедуру, но их измененные в Процедуре значения, будут возвращены основной программе. При объявлении таких параметров указывается служебное слово Var.
Procedure kub (var x,у :real);
Var x :real;
Begin
writeln(‘куб числа ‘, y:5:2);
end;
Procedure fakt(n:integer; Var rez:integer);
Var i:integer;
Begin
For i:=1 to n do
Begin
end;
writeln (‘Факториал ‘,n:2, ‘!=’,rez)
end;
Биполярный транзистор. Основные параметры, схемы включения и мн.др.
. Fakt(1,f1); Fakt(3,f3); Fakt(5,f5); Fakt(7,f7); | Данный фрагмент программы из 4-х строк позволяет вычислить значения факториалов простых чисел первого десятка. После завершения процедуры fakt в основной программе переменные f1, f3, f5, f7 будут равны факториалу их индекса. |
Функции
Основное отличие Функции от Процедуры состоит в том, что функция возвращает результат в основную программу и затем присваивается в качестве значения какой-либо переменной.
Кроме того, функции обычно используются для более мелких локальных задач. Например, вычисление наименьшего из двух чисел, вычисление значения сложной математической функции и др.
y:=funMin(a,b); — вызов функции funMin
Структура Функции полностью аналогична структуре Процедуры и располагается перед «главным» оператором BEGIN.
Begin
end;
Вызов функции в основной программе может быть осуществлен в правой части оператора присваивания, либо в операторе вывода.
Работа со строками
Строковые переменные
Данные символьного типа позволяют представлять в программах тексты и производить над ними некоторые операции, например, исправлять орфографические ошибки, вставлять и удалять отдельные буквы и слова. Кроме того, они дают возможность обрабатывать различные ведомости, документы, справочники.
Строка (символьная/литерная константа) – это последовательность любых символов из кодовой таблицы персонального компьютера (в том числе и пробелов). При использовании в выражениях строка заключается в апострофы.
‘summa’ ‘Строка’ ‘Монета достоинством в 2 рубля’
Количество символов в строке может меняться от 1 до 255.
Для определения данных строкового типа используется идентификатор string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если значение не указывается, то оно равно 255 символов.
Var
St: string[20]; — максимальная длина 20 символов
Как Рассчитать Основные Параметры Описательной Статистики (Программа Statistica 7.0)
s1: string – максимальная длина 255 символов
Во избежание ошибок ввода рекомендуется задавать строковые константы отдельным оператором Readln(‘. ‘) в отдельной строке.
К отдельным символам строки можно обращаться как к элементам массива следующим образом:
Kis:=’Мурка’;
Действия со строковыми переменными
Над строковыми переменными можно выполнить следующие операции:
· Преобразование в число и обратно
Присваивание
Kot:=’Барсик’;
st:=’Иванов Константин Петрович’;
Stroka:=’Информатика наука современная’;
Readln(st); строка будет введена с клавиатуры
Сравнение
Обычно сравниваются строки одинаковой длины. В противном случае большей считается строка большей длины
If kisa=kot. If kisa>kot2.. If kisa | Например, если Kisa:=’Мурка’; Kot1:=’Тузик’; Kot2:=’Барсик’; тоKot2 > Kisa(по количеству символов) и Kot1 < Kisa(по коду 1-го символа) Примечание. При совпадении первых символов рассматриваются вторые, третьи и.т.д |
Сложение
Для обозначения действия сложения используются знаки +,
Kot1:=’Тузик’;
Kot2:=’Барсик’;
Gruppa:= Kisa + Kot1 + Kot2;
или Gruppa:= Concat( Kisa,Kot1,Kot2);
переменная Gruppa будет иметь значение «МуркаТузикБарсик ». При необходимости между словами вставляют дополнительные символы Пробел, «подчерк », «плюс », «запятая » что делает восприятие более удобным.
Gruppa:= Kisa + ‘, ‘+ Kot1 + ‘, ‘+ Kot2;
Результат: «Мурка, Тузик, Барсик»
8.2.4 Преобразование строка ↔число
Для решения отдельных задач удобно преобразовать число в строку, содержащую цифры, аналогичные имеющимся в числе, и наоборот.
Число ‑2,75 | Строка ‘12924’ ‘‑2,75’ |
Str (X,Str) – преобразует число в его строковое представление;
Val (Str,X,Code) – преобразует строковое выражение в число, если это невозможно, то в Code выдается номер символа с которого преобразование невозможно
Обработка строк
Стандартные процедуры и функции обработки строк приведены в табл.3. Они позволяют выполнить:
· поиск, вставку, удаление заданных номерами символов или группу последовательно расположенных символов — подстроку,
· удаление начальных и конечных пробелов
Примечание. Если команда является процедурой, то ее применяют без оператора присваивания
Insert (gruppa, ‘Васька’,17); это процедура.
Нет оператора Присваивания.
Результат «МуркаТузикБарсикВаська»
St:= Copy (gruppa,10,4) это функция.
Есть опрератор Присваивания. Результат «Барс»
Рекомендации
1. Пишите программы так, чтобы их можно было понять не только Вам, а и иным людям. Для этого:
· Предоставляйте переменным такие имена, которые отвечают названию именованной величины.
· Каждый оператор старайтесь писать с новой строки.
· Делайте отступы перед вложенными операторами.
· Не ленитесь вставлять комментарии
2. Не забывайте сохранять программу после корректировки кода.
3. При модификации программы сохраните старую версию с прежнем именем, а новую – с другим, новым логическим именем файла.
4. При анализе входных данных постарайтесь выделить особые случай и аномалии.
Например, при решении простой задачи «Найти периметр треугольника по трем сторонам» необходимо учесть не только неотрицательность вводимых значений длин сторон, но и варианты
· «Наибольшая сторона равна сумме двух других» – особый случай
· «Наибольшая сторона меньше суммы двух других» – аномалия.
5. Помните, что для того, чтобы научиться решать задачи по программированию, нужно их решать. , т.е. программировать и отлаживать!
Удачи и терпения!
Список используемой литературы
1. Язык программирования ТурбоПаскаль (под ред.Павленка И.А.), СПЛ, 2005г.
2. Шаньгин В.Ф., Поддубная Л.М. Программирование на языке ПАСКАЛЬ. – М.: Высш.шк., 1991 – 143с.
3. Гусева А.И. Учимся программировать: Pascal70. – М.: «Диалог-МИФИ», 1998. – 272с.
4. Зубов В.С. Программирование на языке ТURBO PASCAL. – М.: «Филинъ», 1997. – 320с.
5. Вирт Н., Йенсен К.. PASCAL. Руководство для пользователя и описание языка /Пер. с англ. – М.: Финансы и статистика,1992, ‑ 152с.
6. Пильщиков В.Н. Сборник упражнений по языку Паскаль: Учеб. Пособие для вузов. – М.: Наука, 1989. ‑160с.
7. https://sunschool.math.rsu.ru, https://it.mmcs.rsu.ru Ресурсы разработчиков среды PascalABC
PascalABC. Часть I.Основные конструкции. СПЛ, 2007г
Составитель: Кашеварова В.А.
Апробация: Иванова Н.Ю., Ермоловский С.А.
Издание 2. Исправленное.
Источник: poisk-ru.ru
Основные типы параметров подпрограмм
Подпрограммы могут быть с параметрами и без параметров, т.е. список параметров может отсутствовать. В подпрограммах без параметров можно использовать как глобальные, так и локальные объекты.
Параметры подпрограмм позволяют при каждой активации (вызове) процедуры или функции работать с объектами (значениями, переменными, процедурами и функциями), заданными в точке активации, т.е. при вызове. В подпрограммах с параметрами в список параметров включают объекты вызываемой программы, которые при разных вызовах подпрограммы будут разными. Например, в списке параметров обязательно должно быть имя массива, если при вызове подпрограммы для обработки передается то массив А, то массив В. Если при всех вызовах внутренней подпрограммы имена обрабатываемых ею данных и имена результатов одинаковы, т.е. подпрограмма вызывается для одних и тех же фактических параметров, то целесообразно рассмотреть возможность использования подпрограммы без параметров, с использованием глобальных переменных.
Все формальные параметры должны быть определены в списке формальных параметров заголовка подпрограммы под своими именами, известными в блоке процедуры или функции, а также определен тип параметров.
PROCEDURE MNMX (A: REAL; M: ITEGER; VAR MN, MX: REAL);
FUNCTION FACT (B: MYTYPE; N: INTEGER): INTEGER;
MYTYPE — тип параметра, определенный пользователем.
MN, MX – параметры-переменные. A, B, M, N – параметры-значения.
При вызове подпрограммы фактические параметры должны быть в той же последовательности, что и соответствующие им формальные.
В Паскале различают следующие формальные параметры: параметры-значения, параметры-переменные, параметры-константы, бестиповые параметры, параметры-массивы, строки открытого типа, процедурные параметры.
Параметры-значения передаются основной программой в вызываемую подпрограмму через стек в виде их копий. Поэтому фактический параметр подпрограммой измениться не может.
При передаче в подпрограмму из основной программы параметров-переменных фактически через стек передаются их адреса в порядке, объявленном в заголовке подпрограммы. Поэтому подпрограмма имеет доступ к этим параметрам и может их изменить.
Следовательно, входные параметры подпрограммы могут быть как параметрами-значениями, так и параметрами-переменными. Выходные же — только параметрами-переменными.
Нецелесообразно использовать в качестве параметров-значений массивы больших размеров, так как это приведет к существенным дополнительным затратам ОП и времени на их копирование из ОП вызывающей программы в ОП стека для вызванной подпрограммы при многократных обращениях к этой подпрограмме.
В версии 7.0 могут быть использованы параметры-константы, которые в подпрограммах не изменяются. Их объявление осуществляется по форме:
PROCEDURE P (CONST Par: WORD);
Если в теле процедуры появится оператор:
то это вызовет диагностическое сообщение об ошибке. В качестве параметров-констант можно использовать параметры любого типа, простые и сложные.
В Паскале можно использовать параметры-переменные и параметры-константы без указания типа. В этом случае фактическим параметром может быть переменная любого типа, являющаяся глобальным объектом – ответственность за правильность использования параметра возлагается на программиста:
FUNCTION EQUAL (VAR PARAM1, PARAM2; LEN: WORD);
Параметр без типа перед его использованием в подпрограмме необходимо снабдить определенным типом в основной программе. Для формальных параметров PARAM1, PARAM2 в качестве фактических параметров можно использовать любые переменные простого типа, массивы записи и пр.
В качестве открытых параметров-переменных в языке Паскаль могут использоваться массивы и строки. Открытые массивы – это параметры-массивы подпрограмм, размер которых не указывается в списке формальных параметров заголовка подпрограммы:
FUNCTION SUM (VAR A: ARRAY OF BYTE): BYTE;
Ключевое слово VAR в объявлении параметра открытого типа обязательно.
Фактическим параметром открытого массива может быть массив любого размера. Тип элементов фактического массива должен совпадать с типом массива – формального параметра. В качестве открытых массивов могут использоваться только одномерные массивы. Внутри подпрограмм границы переданного массива могут определяться с помощью функций LOW (low (x) возвращает минимальное значение порядкового типа) и HIGH (high (x) возвращает максимальное значение порядкового типа). При этом результат вызова функции LOW всегда даст 0. А результат вызова функции HIGH – верхнее значение индекса при нумерации его элементов от 0.
Открытые строки аналогичны открытым массивам. Для их использования после объявления имени программы необходимо включить директиву . Формальные параметры объявляются в виде string. В качестве фактических параметров при этом можно использовать строки любой длины. Внутри подпрограммы строка-параметр всегда трактуется по максимуму, т.е. как строка на 255 символов.
В подпрограммах в качестве параметров можно использовать параметры-подпрограммы, т.е. параметры-процедуры и параметры-функции. Таким образом можно организовать подпрограмму, которая будет в процессе выполнения вызывать другую подпрограмму, но не уточняя, какую именно.
Поскольку при описании списка формальных параметров в Паскале требуется указание идентификатора типа для каждого параметра, вводится процедурный тип. Процедурный тип описывает класс процедур или функций, имеющих однотипные заголовки. Определение процедурного типа аналогично заголовку подпрограммы, но при этом имя подпрограммы не задается. Например:
TYPE PROC1 = PROCEDURE (A, B, C,: REAL; VAR D: REAL);
PROC2 = PROCEDURE (VAR A, B, C,: REAL);
FUNC1 = FUNCTION (S: STRING): REAL;
FUNC2 = FUNCTION: STRING;
В данном примере PROC1, PROC2, PROC3, FUNC1, FUNC2 — имена типов процедурных параметров, идентификаторы.
Использование подпрограмм, в которых в качестве формальных параметров применяются процедурные типы и в качестве фактических – имена подпрограмм, требует директивы компилятора или опции компилятора OPTIONS / COMPILE / FORCE FAR CALLS – дальний вызов подпрограмм.
Источник: studopedia.su
Консольные приложения и параметры программы
Процедура Read предназначена для ввода информации в программу, точнее, в переменные. Процедура работает следующим образом:
read(Переменная1, Переменная2, …, ПеременнаяN);
То есть, в качестве параметров мы указываем одну или несколько разделенных запятыми переменных. Когда программа доходит до этого места, то ожидает от пользователя ввода данных. Пользователь должен ввести данные такого же типа, как у соответствующих переменных. Если переменных несколько, то соответствующие значения нужно вводить, разделяя их пробелами. Например, если есть переменная целого типа i , и вещественная переменная r , то при выполнении инструкции
read(i, r);
произойдет вот что: программа приостановит свою работу, ожидая от пользователя ввода данных. Пользователь должен ввести целое и вещественное числа, разделенные пробелом, и нажать . Например, пользователь ввел:
12 3.45
Как только он нажмет , в переменную i попадет число 12, а в r — число 3,45. Если пользователь введет некорректные данные, не соответствующие типу переменной, то возникает ошибка и программа аварийно завершает работу.
Пользователь может ввести больше данных, чем указано переменных в процедуре read . В этом случае, оставшиеся данные будут обработаны следующей процедурой read . Например, пользователь ввел:
1 23 456
и нажал . Эти данные могут быть обработаны следующими инструкциями:
read(a, b); read(c);
Процедура Readln работает также. Отличие заключается в том, что если пользователь ввел больше данных, то readln не передает лишние данные в следующую инструкцию readln , а попросту обрубает их. То есть, если изменить предыдущий пример:
readln(a, b); read(c);
то в a и b попадут числа 1 и 23, после чего программа будет ожидать следующих данных, а число 456 потеряется.
Если указать read или readln без параметров, например, так:
readln();
то программа просто перейдет в режим ожидания , пока пользователь не введет . В конце консольных приложений всегда желательно указывать такую пустую readln , иначе программа просто мигнет и выключится, не дав пользователю увидеть результаты работы. Или можно как-то иначе обеспечить работу программы до тех пор, пока пользователь сам не захочет ее закрыть.
Например, иногда программисты выводят сообщение типа «Продолжить работу программы? 0-нет, 1-да». Если пользователь введет 0, то программа завершится, а если 1, то продолжит работу. Какой способ использовать — дело ваше.
Чтобы пользователь понимал, чего от него хочет программа , перед каждой инструкцией read или readln следует с помощью write или writeln выводить поясняющий текст.
Вернемся к нашей программе, и немного изменим код (между begin и end. ):
begin write(‘Введите первое целое число: ‘); readln(a); write(‘Введите второе целое число: ‘); readln(b); writeln(‘Результат:’); writeln(‘Переменная a = ‘, a, ‘; переменная b = ‘, b); readln(); end.
Теперь программа выводит запрос » Введите первое число: «, и замирает, ожидая от пользователя ввода данных. После того, как он введет число и нажмет , программа таким же образом запросит второе число. Затем она выведет результат, и будет ожидать, пока пользователь не нажмет :
Рис. 21.4. Результат работы программы
Параметры консольного приложения
Нередко системные консольные программы вызываются с какими-то параметрами. Например, в Windows можно нажать «Пуск -> Выполнить» и указать следующую команду:
ping 127.0.0.1 -t
В результате будет запущена консольная утилита ping.exe , которая делает трассировку ( обмен данными ) с указанным IP-адресом. Таким образом, проверяют, есть ли связь с данным адресом. В примере программа запускается с двумя параметрами. Первым параметром является IP- адрес 127.0.0.1 — это адрес локальной машины, обращаясь к 127.0.0.1, вы обращаетесь к своему же компьютеру. Вторым параметром является
Этот параметр указывает утилите, что не следует завершать обмен данными , пока пользователь сам не прервет работу программы. Если не указать -t , программа сделает 4 попытки отправить данные, после чего завершит свою работу. С параметром -t программа будет работать, пока пользователь не нажмет .
Возможно, когда-нибудь и нам потребуется создать программу (не обязательно консольную), умеющую принимать и обрабатывать параметры. Для обработки параметров используются две функции: ParamCount и ParamStr .
ParamCount возвращает количество параметров, переданных в программу.
ParamStr(i) возвращает параметр под индексом i — индексация начинается с 1. Например, вывести на экран первый и последний параметры можно так:
ShowMessage(‘Первый параметр: ‘ + ParamStr(1); ShowMessage(Последний параметр: ‘ + ParamStr(ParamCount);
Однако имейте в виду, что в любой программе, консольной или обычной, даже запущенной совсем без всяких параметров, доступен и «нулевой» параметр ParamStr(0) — в нем всегда находятся адрес и имя файла программы.
Чтобы закрепить материал, давайте снова изменим нашу программу, получая и обрабатывая параметры. Мы сделаем так, что её можно будет использовать без параметров, тогда пользователь будет вводить числа прямо в программе. Можно будет загрузить программу с одним параметром, тогда это значение попадет в переменную a , а число для b пользователю придется вводить вручную. И, наконец, программу можно будет загружать с множеством параметров, при этом первые два попадут в a и b , остальные будут проигнорированы. Не забывайте, что тип данных должен соответствовать переменным, то есть один параметр , или первых два параметра должны быть обязательно целыми числами. Иначе программа даже не запустится, а просто выведет сообщение об ошибке .
Имейте в виду, что все параметры, даже числа, вводятся в виде текста, так что для работы с целыми числами нам придется использовать функции IntToStr и StrToInt . А обе эти функции описаны в модуле SYSUTILS , который нам придется подключить в разделе uses . Вот полный листинг программы :
program project1; uses cthreads, Classes, SysUtils < you can add units after this >; var a, b: integer; begin //если параметров вообще нет: if ParamCount = 0 then begin write(‘Введите первое целое число: ‘); readln(a); write(‘Введите второе целое число: ‘); readln(b); end //если только один параметр: else if ParamCount = 1 then begin a:= StrToInt(ParamStr(1)); write(‘Введите целое число: ‘); readln(b); end //если параметров больше одного: else begin a:= StrToInt(ParamStr(1)); b:= StrToInt(ParamStr(2)); end; //теперь вывод результатов: writeln(‘Всего параметров: ‘ + IntToStr(ParamCount)); writeln(‘Запущена программа: ‘ + ParamStr(0)); writeln(‘Переменная a = ‘, a, ‘; переменная b = ‘, b); readln(); end.
Обратите внимание, после модуля Classes мы указали модуль SysUtils . Далее, мы обеспечили ввод данных в a и b в случаях, если параметров вообще нет, если есть только один параметр , и если параметров больше, чем один. В конце мы выводим общее количество указанных параметров, нулевой параметр с указанием адреса и файла программы, и затем указываем значения переменных. В заключение указываем пустой readln , чтобы программа не закрылась, пока не захочет пользователь .
Сохраните проект и запустите его. Он загрузится без параметров, вам придется ввести оба числа вручную. Введите числа, полюбуйтесь на результат и закройте программу. Теперь загрузим ее с параметрами. Для этого нажмите «Пуск -> Выполнить», нажмите кнопку «Обзор», найдите и откройте наш проект, допишите после его имени один или два параметра, например, так:
Рис. 21.5. Указание параметров программы
Как видите, в качестве параметров я указал два числа: 12 и 24. Программа не станет запрашивать у меня данные, а сразу выведет результат:
Рис. 21.6. Результат работы программы
Поэкспериментируйте с программой, вызывая с различным количеством параметров.
Как уже говорилось, функции ParamCount и ParamStr можно использовать в любой программе, не обязательно консольной.
Источник: intuit.ru