ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.07.2019
Просмотров: 200
Скачиваний: 3
Федеральное агентство связи
Федеральное государственное бюджетное образовательное
учреждение высшего образования
Поволжский государственный университет
телекоммуникаций и информатики
Кафедра Информационных систем и технологий
Лабораторная работа №4
По дисциплине «Инструментальные средства информационных систем»
Тема: «Арифметические операции и подпрограммы в языке FreePascal»
Руководитель доцент к. т. н.
__________________ Никитин К.А.
Самара 2018
-
Цель работы
Изучение арифметический операций в языке FreePascal.
Получение практических навыков создания программ с функциями и процедурами.
-
Задание на выполнение работы
5.1. Вычислить значения переменных в соответствии с вариантами задания. Вывести значения вводимых исходных данных и результаты, сопровождая их вывод именами выводимых переменных.
5.2. Повторить задание 1 выполняя расчёт выражения в подпрограмме – процедуре.
№ |
Расчетные формулы |
Данные |
5 |
|
a = 16.5 b = 3.4 x = 0.61 |
5.1.
program prg_2_1; //название программы
uses SysUtils; //подключение модуля, содержащего функции разного назначения
label 10; //метка
var a,b,x,s,g: real; //блок описания переменных
proba:integer;
begin //начало исполняемой части программы
10: writeln('Введите a, b, x'); //вывод на экран. Данные метки
readln(a, b, x); //считывание введенного с клавиатуры
//writeln;
writeln('Вы ввели');
writeln('a= ',a:8:3,' b= ',b:8:3,' x= ',x:8:3);
//writeln;
writeln('Введите 1, если правильно');
readln(proba);
if proba<>1 then //условный оператор if . <> не равно
begin
//writeln;
goto 10; //переход к метке
end;
//writeln;
s:=sqr(x)*x*(sqr((sin(sqr(x+b)))/(cos(sqr(x+b)))))+(a/(sqrt(x+b)));
g:=(b*sqr(x)-a)/(exp(a*x)-1);
writeln('Результат');
writeln('s=',s:8:3,' g=',g:8:3);
readln;
end. //конец программы
5.2. program prg_2_2; //название программы
label 10; //метка
var //блок описания переменных
a,b,x,s,g: real;
proba:integer;
procedure f1(k,m,n:real; var rez1:real); //определение процедуры
begin //начало исполняемой части программы
rez1:=power(n,3)*(sqr(tan(sqr(n+m))))+(k/(sqrt(n+m)));
end;
procedure f2(o,p,r:real; var rez2:real);
begin
rez2:=(p*sqr(r)-o)/(exp(o*r)-1);
end;
begin
10: writeln('Введите a, b, x'); //вывод на экран. Данные метки
readln(a,b,x); //считывание введенного с клавиатуры
writeln;
writeln('Вы ввели');
writeln('a= ',a:8:3,' b= ',b:8:3,' x= ',x:8:3);
writeln;
writeln('Введите 1, если правильно');
readln(proba);
if proba<>1 then //условный оператор if . <> не равно
begin
writeln;
goto 10; //переход к метке
end;
writeln;
f1(a,b,x, s); //вызов процедуры
f2(a,b,x,g);
writeln('Результат');
writeln('s=',s:8:3,' g=',g:8:3);
readln;
end.
Контрольные вопросы
4.1. Алфавит языка FreePascal.
Программа формируется из предложений, состоящих из лексем и разделителей, которые в свою очередь формируются из конечного набора литер, образующих алфавит языка Pascal. Этот язык состоит из букв латинского алфавита (прописных – А, В, С, D ... X, Y, Z, строчных – а, b, с ... x, у, z), арабских цифр (0, 1, 2, 3,4, 5, 6, 7,8,9) и специальных символов.
4.2. Операции и идентификаторы в языке FreePascal.
Стандартные идентификаторы используются для обозначения определенных разработчиками языка функций, констант. Например: sqrt, abs и др.
Идентификаторы пользователя применяют для обозначения имён программ, переменных, констант и других объектов, определенных в программе. Имя может состоять из любого количества букв или цифр (максимальная длина – 127 символов), но должно начинаться с буквы или символа подчёркивание.
В таблице приведены основные математические операции Турбо Паскаль.
Символ операции |
Название операции |
Пример |
* |
умножение |
2*3 (результат: 6) |
/ |
деление |
30/2 (результат: 1.5E+01) |
+ |
сложение |
2+3 (результат: 5) |
- |
вычитание |
5-3 (результат: 2) |
div |
целочисленное деление |
5 div 2 (результат: 2) |
mod |
остаток от деления |
5 mod 2 (результат: 1) |
Логические операции
-
NOT - логическое отрицание ("НЕ")
-
AND - логическое умножение ("И")
-
OR - логическое сложение ("ИЛИ")
-
XOR - логическое "Исключающее ИЛИ"
Операции отношения
-
> - больше
-
< - меньше
-
= - равно
-
<> - не равно
-
>= - больше или равно
-
<= - меньше или равно
4.3. Типы данных.
-
Тип данных integer может содержать целые числа от -32768 до 32767. Это знаковый диапазон, который может быть сохранён в 16-битном слове. Для обратной совместимости 32-битный знаковый integer является longint и может содержать гораздо больший диапазон значений.
-
Тип данных real имеет диапазон от 3.4x10-38 до 3.4x1038, в дополнение к такому же диапазону в отрицательной области. Вещественные значения хранятся внутри компьютера сходно с научной нотацией - с мантиссой и экспонентой, с некоторыми усложнениями.
-
Тип данных char содержит символы. Стандартный Pascal использует 8-битные символы, а не 16-битные.
-
WideChar - это двухбайтный символ и может содержать юникодный символ.
-
PChar определён как указатель на тип Char, но позволяет дополнительные операции. переменная типа PChar является указателем, который указывает на массив типа Char, завершающийся нулевым символом (#0). Free Pascal поддерживает инициализацию типизированных констант PChar, или прямое присваивание.
-
String, последовательность символов с необязательным указанием размера.
-
Предопределённый тип ShortString определён как строка длиной 255.
-
AnsiString - строки, которые не имеют ограничения по длине. Это строки с подсчётом ссылок и гарантированно завершающиеся нулевым символом. Внутренне ansistring рассматривается как указатель: реальное содержимое строки хранится в куче, в которой выделяется столько памяти, сколько необходимо для хранения содержимого строки.
-
Тип Widestring используется для представления строк юникодных символов.
-
Тип данных boolean может иметь только два значения: TRUE (истина) и FALSE (ложь).
4.4. Структура программы консольного приложения.
В языке программирования Паскаль программа состоит из заголовка, раздела описаний и исполняемой части. Служебные слова Pascal, обозначающие начало определенного блока программы, выделены жирным белым шрифтом.
Program – блок описания заголовка программы.
Uses –вспомогательные готовые программы, собранные в библиотеки (модули). Модули объявляются в этом блоке.
Label – блок описания меток, содержит их имена перечисленные через запятую. Метки используются для организации переходов в программе. Если метки не нужны, блок отсутствует.
Const – блок описания простых и типизированных констант. Может отсутствовать если константы в программе не предусмотрены.
Type - блок описания типов данных используемых в программе. Может отсутствовать, если новые типы не вводятся.
Var - блок описания переменных с указанием их типа. Может встречаться в программе несколько раз для организации глобальных и локальных переменных
Определение процедур и функций – специально оформленные вспомогательные алгоритмы в виде подпрограмм.
Begin - end. – служебные слова, обрамляющие тело основной программы, где находятся исполняемые операторы. Т.о. Begin начинает исполняемую часть программы, а end. (точка в конце обязательна) – ее завершает.
4.5. Где описываются константы, переменные, метки и типы данных?
Const – блок описания простых и типизированных констант.
Var - блок описания переменных с указанием их типа.
Label – блок описания меток, содержит их имена перечисленные через запятую.
4.6. Стандартные функции.
Арифметические функции
Арифметические функции можно использовать только с величинами целого и вещественного типа.
Функция |
Назначение |
Тип результата |
abs (x) |
абсолютное значение аргумента |
совпадает с типом аргумента |
sqr (x) |
квадрат аргумента |
совпадает с типом аргумента |
sqrt (x) |
квадратный корень аргумента |
вещественный |
cos (x) |
косинус аргумента |
вещественный |
sin (x) |
синус аргумента |
вещественный |
arctan (x) |
арктангенс аргумента |
вещественный |
exp (x) |
ex |
вещественный |
ln (x) |
натуральный логарифм |
вещественный |
int (x) |
целая часть числа |
вещественный |
frac (x) |
дробная часть числа |
вещественный |
Функции преобразования типов
Эти функции предназначены для преобразования типов величин, например, символа в целое число, вещественного числа в целое и т.д.
ord (x) |
- возвращает порядковый номер аргумента и, таким образом, преобразует величину порядкового типа в величину целого типа. |
round (x) |
- округляет вещественное число до ближайшего целого. |
trunc (x) |
- выдает целую часть вещественного числа, отбрасывая дробную. |
Функции для величин порядкового типа
odd (x) |
- проверяет аргумент на нечетность. Аргумент функции величина типа longint, результат true, если аргумент нечетный, false – если четный. |
pred (x) |
- определяет предыдущее значение величины x. |
succ (x) |
- определяет последующее значение величины x. |
ord (x) |
- возвращает порядковый номер величины x. |
4.7. Инструкция присваивания.
Присваивание записывается как M := N, означающее, что значение N переходит к M.
4.8. Пустая и составная инструкция.
Пустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях:
1. Для использования символа ; после последнего оператора в блоке.
2. Для пометки места, следующего за последним оператором в блоке.
Составной оператор — конструкция языка программирования, состоящая из нескольких команд (операторов) языка программирования, но участвующая в программе в качестве единого оператора.
4.9. Процедуры ввода read и readln.
Процедуры Read и ReadLn выполняют чтение информации из устройства ввода.
4.10. Процедуры вывода write и writeln.
Процедуры Write и WriteLn выполняют вывод информации в устройство стандартного вывода. В консольных приложениях этим устройством может быть консоль (то есть экран), в графических приложениях - файл на диске.
Эти процедуры выполняют одно и то же действие. Отличие между ними только одно: процедура WriteLn после завершения вывода выполняет перевод строки.
4.11. Последовательность действий при выполнении оператора присваивания.
При выполнении оператора присваивания происходит замена текущего значения переменной, стоящей слева от знака присваивания, новым значением, полученным в результате вычисления выражения. Например, после выполнения оператора k : = k+1;
текущее значение переменной k увеличится на 1.
4.12. Приоритетность выполнения операций в выражениях.
Операции одного приоритетного уровня выполняются слева направо. Порядок операций можно изменить, воспользовавшись круглыми скобками. Значения функций вычисляются раньше, чем выполняются другие операции. Приоритетные уровни операций следующие (по убыванию приоритета):
-
Одноместные (унарные) операции: +, -, not.
-
Мультипликационные операции: *, /, div, mod, and.
-
Аддитивные операции: +, -, or, xor.
-
Операции отношения: <, <=, >, >=, =, <>.
4.13. Как организовать пропуск одной, двух строк при выводе? WriteLn
4.14. Что такое подпрограмма? Ее назначение.
Подпрограмма - это отдельная функционально независимая часть программы.
Подпрограммы решают три важные задачи:
-
избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;
-
улучшают структуру программы, облегчая ее понимание;
-
повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификациях программы.
4.15. Правила объявления процедур в программе.
Формат описания процедуры имеет вид:
procedure имя процедуры (формальные параметры);
раздел описаний процедуры
begin
исполняемая часть процедуры
end;
4.16. Правила объявления функций в программе.
Формат описания функции:
function имя функции (формальные параметры):тип результата;
раздел описаний функции
begin
исполняемая часть функции
end;
4.17. Правила обращения к процедуре в программе.
Процедура вызывается по имени (со списком фактических параметров) в строке кода программы.
имя процедуры(список фактических параметров);
4.18. Правила обращения к функции в программе.
Функция вызывается по имени (со списком фактических параметров) в выражениях
имя функции:=результат;
4.19. Формальные и фактические параметры.
Формальные параметры – данные, с которыми работает подпрограмма (ПП). Это внутренние данные для ПП. Они перечисляются в заголовке ПП и связаны с фактическими параметрами.
Фактические параметры – данные, передаваемые в ПП и возвращаемые из нее. Это внешние для ПП данные, с которыми имеет дело вызывающая часть программы
4.20. Передача параметров в процедуру с помощью параметров-значений.
При первом способе (передача по значению) значения фактических параметров копируются в соответствующие формальные параметры. При изменении этих значений в ходе выполнения процедуры (функции) исходные данные (фактические параметры) измениться не могут. Поэтому таким способом передают данные только из вызывающего блока в подпрограмму (т.е. входные параметры). При этом в качестве фактических параметров можно использовать и константы, и переменные, и выражения.
4.21. Передача параметров в процедуру с помощью параметров-переменных. Использование слова var.
В подпрограмму могут передаваться параметры-значения, параметры-переменные (со словом var, это адреса с возможностью чтения/записи).
4.22. Передача параметров в процедуру с помощью параметров-констант. Использование слова const.
Параметры-константы (со словом const, это адреса с возможностью только чтения).
4.23. Использование слова out.
параметры-выходные (со словом out, это адреса с возможностью только записи).