Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Решение задач на ЭВМ. Программирование на языке Pascal. Учебное пособие
.pdf
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 + 37
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, boolean и т.д.).
В Паскале есть возможность создать свой новый тип данных.
Раздел переменных – 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
