Параметры процедуры - это входные и выходные переменные, посредством которых основная программа обменивается данными с Процедурой. Различают входные и выходные параметры.
Входные параметры – это переменные, в которые передаются значения переменных или констант основной программы в Процедуру, и не предназначены для возврата.
Procedure printkvadr (i:integer);
Var x :real;
Begin
X:= i*i;
writeln('квадрат числа ', x:5:2);
end;
Выходные параметры– это переменные (не константы), которые передаются основной программой в Процедуру, но их измененные в Процедуре значения, будут возвращены основной программе. При объявлении таких параметров указывается служебное слово Var.
Procedure kub (var x,у :real);
Var x :real;
Begin
y:= x*x*x;
writeln('куб числа ', y:5:2);
end;
Пример:
{Процедура вычисления факториала}
Procedure fakt(n:integer; Var rez:integer);
Var i:integer;
Begin
rez:=1;
For i:=1 to n do
Begin
rez:=rez*i;
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.
|
Function < имя Функции >( список переменных:< тип > ): < тип >;
|
…< описание внутр.переменных >
Begin
< тело функции >
< имя функции >:=<значение>;
end;
Вызов функции в основной программе может быть осуществлен в правой части оператора присваивания, либо в операторе вывода.
Работа со строками
Строковые переменные
Данные символьного типа позволяют представлять в программах тексты и производить над ними некоторые операции, например, исправлять орфографические ошибки, вставлять и удалять отдельные буквы и слова. Кроме того, они дают возможность обрабатывать различные ведомости, документы, справочники.
Строка (символьная/литерная константа) – это последовательность любых символов из кодовой таблицы персонального компьютера (в том числе и пробелов). При использовании в выражениях строка заключается в апострофы.
'summa' 'Строка' 'Монета достоинством в 2 рубля'
Количество символов в строке может меняться от 1 до 255.
Для определения данных строкового типа используется идентификатор string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если значение не указывается, то оно равно 255 символов.
Var
St: string[20]; - максимальная длина 20 символов
s1: string – максимальная длина 255 символов
Во избежание ошибок ввода рекомендуется задавать строковые константы отдельным оператором Readln('...') в отдельной строке.
К отдельным символам строки можно обращаться как к элементам массива следующим образом:
|
< переменная >[< №символа >]
Kis:=’Мурка’;
writeln(Kis[3],); {На экране будет напечатана третья буква «p »}
Действия со строковыми переменными
Над строковыми переменными можно выполнить следующие операции:
· Присваивание
· Сравнение
· Сложение
· Преобразование в число и обратно
· Обработка
Присваивание
Kot:=’Барсик’;
st:=’Иванов Константин Петрович’;
Stroka:=’Информатика наука современная’;
Readln(st); строка будет введена с клавиатуры
Сравнение
Обычно сравниваются строки одинаковой длины. В противном случае большей считается строка большей длины
If kisa=kot... If kisa>kot2.. If kisa<kot1.. | Например, если Kisa:=’Мурка’; Kot1:=’Тузик’; Kot2:=’Барсик’; тоKot2 > Kisa(по количеству символов) и Kot1 < Kisa(по коду 1-го символа) Примечание. При совпадении первых символов рассматриваются вторые, третьи и.т.д |
Сложение
Для обозначения действия сложения используются знаки +, & или функция Concat
Kisa:=’Мурка’;
Kot1:=’Тузик’;
Kot2:=’Барсик’;
Gruppa:= Kisa + 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. Исправленное.
Тираж – по требованию.