Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Решение задач на ЭВМ. Программирование на языке Pascal. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
1 2 3
Pi
значение величины = З,14159265
вещественный
Sqr(X)
квадрат аргумента x – x
2
совпадает с ти-
пом Х
Sqrt(X)
квадратный корень аргумента х – x
вещественный
Операция возведения в степень в Паскале отсутствует. Значение степени АХ = е
(запись на языке программирования), использующее две
ХlnA
дает выражение Exp (X*Ln(A))
встроенные функции Exp и Ln .
Логарифм по любому основанию можно выразить через
натуральный по формуле приведения:
logAY=lnY/lnA
Например:
25= Exp(5* Ln(2))
- 25= - Exp(5* Ln(2)), т.к. Ln(-2) не существует. Функции Int(X) и Frac(X) похожи на математические функции [x] и {x}, обозначающие соответственно целую и дробную части числа,
но совпадают с ними только на множестве неотрицательных чисел. Если аргумент отрицательный, то они просто отбрасывают дробную или целую часть. Например:
[-3,6]= - 4 ; Int(-3,6)= - 3 {-3,6}= 0,2 ; Frac(-3,6)= -0,6
Целочисленные значения можно присваивать вещественным переменным, а присваивание вещественного значения целочислен­ной переменной является ошибкой программирования. Веществен­ные значения в последнем случае преобразовывают в целочислен­ные с помощью одной из предназначенных для этого встроенных функций: Trunk(x) или Round(x). Операции div и mod не могут упо- требляться с вещественными числами.
Универсальность ЭВМ, её способность к целенаправленной пе-
31
реработке различных видов информации и объясняют происходя-
№
п/п
Математическая запись
Запись на Паскале
1
- 0,56
- 0.56
2
28х 28*х
3
2 + е
5
2* Pi+Ехр(5)
4
|x| + 8 + 37
Abs(X)+ Sqrt(8)+Exp(Ln(7)/3)
5
x2 + 1,2
10
Sqr(x)+ Exp(10* Ln(1.2))
6
Sin 36 + Sin 36
Sin(36) + Sin(36 * pi /180)
7
Log29 + Lg 7 + Ln 5
Ln(9)/Ln(2)+ Ln(7)/Ln(10)+Ln(5)
8
0,56*10
4
0.56*Е04
щий рост информационных технологий. Современные компьютеры умеют многое, но по - прежнему их можно использовать как мощ­ные калькуляторы для вычисления арифметических и алгебраиче­ских выражений. При записи на языке программирования любое выражение должно быть записано в одну строчку, а приоритет опе­раций регулируют скобки.
Рассмотрим некоторые примеры записи арифметических вы­ражений (Таблица 4.6).
Таблица 4.6
32
4.3. Структура программы
Заголовок program NAME;
Раздел описаний label;
сonst; type; var; procedure, function;
Блок основных операторов begin
pаздел oператоров
end.
Тело программы состоит из шести разделов, которые должны следовать в строго определенном порядке: раздел меток – label, раздел констант – сonst, раздел типов – type, раздел переменных – var, раздел процедур и функций - procedure, function, раздел опера- торов. Последний из перечисленных разделов является основным разделом программы – именно здесь задаются те действия, которые должны быть выполнены по данной программе.
Раздел меток – label
Любой оператор в программе может быть выделен среди остальных операторов.
Метка – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссы­латься на него. Оператор называют помеченным оператором. Мет­ка располагается непосредственно перед помеченным оператором и отделяется от него двоеточием.
В Паскале в качестве меток используются натуральные числа от 0 до 9999. Например:
45: х:= х+10;
В разделе меток объявляемые метки могут быть перечислены в произвольном порядке независимо от того, в каком порядке эти метки встречаются в разделе операторов, при этом любая метка в разделе операторов может быть указана только один раз.
Например:
33
Label
65, 84, 9;
Раздел констант – сonst
Константа- переменная, которая не изменяется в процессе вы- полнения программы.
В Паскале предусмотрена возможность константе дать опре­деленное имя и использовать его в качестве синонима этой кон­станты.
Например:
Сonst
N= 10; pi= 3.14159265; pin= -pi;
Раздел типов – type
В Паскале существуют стандартные типы, которые описывать не надо (они считаются уже описанными: integer, real, char, boole­an и т.д.).
В Паскале есть возможность создать свой новый тип данных.
Раздел переменных – var
Переменная – это величина способная изменяться в процессе выполнения программы. Каждая переменная, до работы с ней должна быть описана, т.е. указан тип переменной.
Например:
Var
I, j, k: integer;
X, Sum: real;
A, r, h: string;
Попытка в процессе выполнения программы присвоить пере­менной значение иного типа расценивается как ошибка в програм­ме.
Раздел процедур и функций - procedure, function
34
С помощью процедур и функций можно писать хорошо струк­турированные программы. Структурированные программы позво­ляют быстро прослеживать основной алгоритм, они проще в отлад­ке и менее чувствительны к ошибкам программирования.
Процедуры и функции представляют собой самостоятельные фрагменты программы, связанные с основной программой с помо­щью нескольких параметров.
Процедурой называют особым образом оформленный фраг­мент программы, имеющий собственное имя. Упоминание этого имени в тексте программы приводит к активизации процедуры и называется ее вызовом. Сразу после активизации процедуры начи­нают выполняться входящие в нее операторы, после выполнения последнего из них управление возвращается обратно в основную программу и выполняются операторы, стоящие непосредственно за оператором вызова процедуры.
Функции отличаются от процедур тем, что результат ее рабо­ты возвращается в виде значения этой функции, и, следовательно, вызов функции может использоваться наряду с другими операнда­ми в выражениях.
Стандартные процедуры: READ, WRITE, READLN, WRITELN и т.д.
Стандартные функции: ORD, CHR, математические функции и т.д.
Стандартными они называются потому, что созданы одновре­менно с системой Паскаль и являются неотъемлемой ее частью.
Часто программисту приходится разрабатывать свои нестан­дартные процедуры и функции.
Нестандартные процедуры и функции необходимо описывать, чтобы компилятор мог установить связь между операторами вызо­ва и теми действиями, которые предусмотрены в процедуре (функ­ции).
Процедуры и функции помещаются в разделе описаний и внешне выглядят как программа, но вместо заголовка программы фигурирует заголовок процедуры (функции).
Раздел процедур и функций не начинается каким - то специ­альным служебным словом – начало данного раздела легко опреде­ляется по служебным словам procedure or function.
35
Раздел операторов
Раздел операторов состоит из составного оператора, включа­ющего в себя выполняемые операторы, записанные в соответствии с алгоритмом решения задачи. Операторы отделяются друг от дру­га точкой с запятой.
С помощью операторов описываются действия над данными, которые необходимо выполнить для реализации алгоритма реше­ния задачи. По функциональному назначению операторы языка подразделяются на группы: присваивания, ввода-вывода, управле­ния, определения функций и процедур (подпрограмм).
Операторы присваивания вызывают выполнение выражений и присваивание значений имени результата.
Операторы ввода - выводы дают возможность вводить в ос­новную память исходные данные и на устройствах вывода инфор­мации получать результаты вычислений.
Операторы управления организуют управление последова­тельностью выполнения операторов программы.
Операторы определения функций и процедур дают возмож­ность разбивать программу на части, определять и именовать эти части программ.
По своему составу определяются операторы двух типов - про­стые и структурные. Простым считается оператор, который не со­держит в себе других операторов, а структурным – оператор, со­стоящий из одного или нескольких операторов. К простым опера­торам относятся операторы присваивания, перехода и обращения к процедуре.
К структурным операторам относятся операторы условного перехода, выбора, цикла и составной.
Выполнение программы сводится к выполнению раздела опе­раторов, т.е. к выполнению последовательности операторов, за­ключенных в операторные скобки:
begin
оператор 1; oператор 2; ……………
36
оператор N
end.
Составной оператор
Составной оператор – последовательность произвольных
операторов программы, заключаемых в операторные скобки
begin… end.
Составные операторы дают возможность писать программы
по современной технологии структурного программирования (без операторов перехода GOTO).
Допускается произвольная глубина вложения составных
операторов. Весь раздел операторов представляет собой один со­ставной оператор:
begin begin begin begin begin end end end end end.
Оператор ввода
Для ввода данных предназначены операторы:
Read (a1, a2, a3, …, an);
a1, a2, a3, …, an – переменные, которые последовательно при­нимают значения, вводимые с клавиатуры.
Readln (a1, a2, a3, …, an);
a1, a2, a3, …, an - переменные, которые последовательно при­нимают значения, вводимые с клавиатуры и после этого происхо­дит переход на новую строку.
37
Readln;
переход на новую строку.
Оператор вывода
Write (b1, b2, b3, …, bn);
b1, b2, b3, …, bn – на экран выводятся значения переменных, указанных в списке.
Writeln (b1, b2, b3, …, bn);
на экран выводятся значения переменных, указанных в списке и после этого осу осуществляется переход на новую строку.
Writeln; осуществляется переход на новую строку.
Оператор присваивания
В операторе присваивания используется знак присваивания := .
Например, переменной А нужно присвоить значение выраже­ния Cos L+Sin 2*L :
А:= Cos(L)+ Sin(2*L);
Пустой оператор
Не задает никаких действий, кроме определения своего преем­ника. Если пустой оператор фигурирует среди последовательности операторов, отделенных друг от друга “ ; ”, то его преемником яв­ляется следующий по порядку оператор.
Этот оператор полезен для упрощения описания тех или иных вычислительных процессов, где не нужно выполнять никаких дей­ствий.
Контрольные вопросы для самоконтроля при изучении
1. Какова структура программы в Borland Pascal 7.0?
2. Где и как описываются константы, переменные, метки и
типы данных?
38
3. Перечислите основные стандартные функции в Borland
Pascal 7.0?
4. Какова последовательность действий при выполнении опе-
ратора присваивания?
5. Перечислите приоритетность выполнения операций в вы-
ражениях.
6. Процедуры ввода Read и Readln в Borland Pascal 7.0?
7. Процедуры вывода Write и Writeln в Borland Pascal 7.0?
8. Как вывести значения переменных с сопровождением их
именами? Пояснить на примерах форматированный вывод данных на дисплей.
9. Как организовать пропуск одной и более строк при выводе
данных?
10. Как сделать, чтобы окно пользователя оставалось откры-
тым в период ввода данных и до получения окончательного результата?
39
4.4. Линейные алгоритмические конструкции и программирова-
ние алгоритмов линейной структуры
Линейные программы являются наиболее простыми.
В линейной алгоритмической конструкции операторы выпол­няются последовательно друг за другом.
Используются три оператора: оператор ввода, присваивания и вывода информации.
Рассмотрим составление линейной программы на примере од­нократного расчета по математическому выражению.
Пример:
Вычислить площадь треугольника S по формуле Герона:
S=p*(p-a)*(p-b)*(p-c)
Сначала следует составить блок-схему алгоритма решения (Рис.8). При этом нужно помнить следующее:
1. Задавать значения исходных данных до момента их исполь-
зования.
2. В программе предусматривать наличие комментариев для
удобства её чтения.
3. В исходных формулах выделять общий участок и вычис-
лять его отдельно, присвоив идентификатор. Это сокращает время выполнения программы.
Величины a, b, c можно описать в программе как константы, но тогда при необходимости изменения их значений потребуется корректировать раздел описаний.
Если же описать их как переменные, то нужные значения указываются просто при вводе в процессе выполнения программы по запросу ЭВМ. Величину "p" также опишем как переменную.
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]