Программирование арифметических выражений

Цель работы – научиться составлять программы на языке Паскаль, содержащие операторы ввода-вывода и вычисления значений арифметических выражений.

Теоретическая часть

Любая паскаль-программа состоит из заголовка программы и тела програм-мы. Заголовок начинается со служебного слова program, за которым указывается имя программы. Например:

program formul;

Именем может служить любая конечная последовательность букв и цифр,на-чинающаяся обязательно с буквы. Под буквой в этом определении понимается любая из букв латинского алфавита. Большие и малые буквы не различаются и могут употребляться программистом по своему усмотрению, например, для того, чтобы придать тексту прог-раммы большую выразительность. В Паскале имеется ряд зарезервированных (служеб-ных) слов, употребление которых определяется правилами языка. Их нельзя использовать каким-либо другим образом, в том числе, в качестве имен.

Список служебных слов:

and end nil shr

asm file not string

array for object then

begin function of to

case goto or type

const if packed unit

constructor implementation procedure until

destructor in program uses

div inline record var

do interface repeat while

downto label set with

else mod shl xor

Тело программы состоит из двух основных разделов: раздела объявлений и описаний и раздела операторов. Объявления и описания необходимы для того, чтобы ввести в употребление используемые в программе объекты и дать им индивидуальные имена. Раздел операторов задает те действия, которые должны быть выполнены по данной программе. Он начинается служебным словом begin,за которым следует последователь-ность операторов, отделенных друг от друга точкой с запятой, и заканчивается служебным словом end, после которого обязательно ставиться точка.

В настоящей работе рассмотрим построение простейшей паскаль-програм-мы,использующей константы и переменные стандартных типов integer(целый) и real(ве-щественный),операторы ввода, присваивания и вывода.

Стандартные типы данных integer и real связаны с двумя формами представления чисел в языке Турбо-Паскаль: целыми и вещественными. Целые числа в программе запи-сываются в общепринятом виде: без дробной части, со знаком или без него. Например:105, -54,0,-2000.Вещественные значения можно записывать или в форме с фиксированной точкой,например:0.0023,-12.04,+1.0,1500.7, или в форме с плавающей точкой в виде 23Е-4, -0.1204Е2,0.1Е+1,150.07Е1.

Над целочисленными значениями, результатом которых также является целое число, в Турбо-Паскале определены следующие операции: + (сложение), - (вычитание), *(умножение), div (целочисленное деление),mod(взятие остатка).В качестве результата операции div принимается целая часть частного от деления двух целых чисел, а операции mod-остаток от деления. Например, 9 div 4 =2; 9 mod 4=1.

Над данными вещественного типа определены четыре обычные арифметические операции, результат которых также является вещественным: +(сложение),-(вычитание), *(умножение), / (деление).Результат будет вещественным и в том случае, если один из аргументов в первых трех операциях будет целого типа. При выполнении деления результат имеет вещественный тип и в том случае, когда оба аргумента целые.

В Турбо-Паскале имеются стандартные функции, которые всегда дают вещест-венный результат при вещественном или целом аргументе:

sin(x) – синус,

cos(x)-косинус,

arctan(x)-арктангенс,

ln(x)-натуральный логарифм(по основанию e),

exp(x)-экспонента(e в степени x),

sqrt(x)-квадратный корень из x,

pi- число

Еще две стандартные функции:

abs(x)-абсолютная величина переменной x,

sqr(x)-квадрат значения переменной x

при целом аргументе дают результат целого типа, а при вещественном- вещественного.

Числа в программе являются значениями констант, переменных или функций. Все используемые константы и переменные должны быть описаны в разделе описаний прог-раммы.

Описание констант начинается со служебного слова const,после которого, используя разделитель «;», перечисляются имена констант и их значения в следующем виде:

имя константы = значение константы;

Тип константы,integer или real, соответствует типу принимаемого ею значения и, следова-тельно, определяется формой представления правой части в ее описании. Например, описание

const n=5; k=-43; a=1.65; b=-6E3;

Позволяет использовать в программе четыре константы: две целого типа n,k и две вещественного типа a,b. Значения констант сохраняются в течении всего времени работы программы.

В отличие от констант переменные могут изменять свои значения. Описание переменных начинается со служебного слова var, за которым следует одна или несколько разделенных точкой с запятой конструкций вида:

список имен переменных:= тип переменной;

Здесь список имен переменных - имена переменных, разделенные запятой, тип переменной – в данном случае real или integer.

Пример описания переменных:

var x1, x2,u,v: real;

J, f1, t: integer;

Числа, константы, переменные, обращения к функциям с помощью знаков арифметичес-ких операций и скобок образуют арифметические выражения. Вычисленное значение, как правило, необходимо запомнить для последующего использования. Это может быть выполнено с помощью оператора присваивания, который определяется следующей схемой:

переменная:= выражение;

где символ := обозначает операцию присваивания. Выполнение оператора присваивания сводится к вычислению значения выражения и последующего присвоения этого значения переменной, стоящей слева.

Рассмотрим подробнее правила записи арифметических выражений и выполнения соответствующих операторов присваивания. Переменная, стоящая в левой части оператора, должна иметь тип integer или real. Если переменная имеет тип real,то арифметическое выражение может определять значение как типа real,так и типа integer. В последнем случае получаемое целочисленное значение автоматически преобразуется в вещественное значение типа real. Если же переменная в левой части имеет тип integer,то арифметическое выражение должно определять значение этого же типа.

Введенные ранее арифметические операции разделяются на две категории: мультипликативные *, /, div, mod; аддитивные +, -. Операции в каждой из этих категорий имеют одинаковый ранг(старшинство), но мультипликативные операции имеют более высокий ранг, чем аддитивные, то есть выполняются в первую очередь. Операции одного и того же ранга, если они встречаются в выражении подряд, выполняются в порядке их следования слева направо. Указанный порядок выполнения операций можно изменить с помощью круглых скобок. Части выражения, заключенные в круглые скобки, вычисляются независимо от других операций.

Приведем несколько примеров:

Математическая запись Запись на Турбо Паскале

(a+b)/(a-b)

sqrt(abs(a-b))

a0+a1*x+a2*sqr(x)+a3*x*sqr(x)

В языке Паскаль отсутствует операция возведения в степень. Поэтому ее приходится выполнять, используя различные приемы. Так, если показатель степени не слишком большое натуральное число, можно комбинировать умножение и функцию sqr. Например, вычисление a5 запишется в виде sqr(sqr(a))*a

В более общем случае, когда в выражении ab- показатель, и – вещественное число, можно использовать логарифмическое тождество: ab=eb*ln(a)и имеющиеся в языке Паскаль стандартные функции expи ln. При этом следует помнить, что логарифмическая функция определена только для положительных аргументов. Например, арифметическое выражение на языке Паскаль можно записать следующим образом:

exp(1/3*ln(sqr(a))).

И, наконец, осталось познакомиться с правилами записи операторов ввода и вывода, с помощью которых паскаль – программа общается с пользователем.

Ввод данных – это передача информации от внешних устройств в оперативную память. Вводятся, как правило, исходные данные решаемой задачи.

Вывод данных – это передача данных из оперативной памяти на внешние носители (печать, дисплей, магнитные устройства и. т. д.). Результаты решения любой задачи должны быть выведены.

Основными устройствами ввода-ввода персонального компьютера являются клавиатура и дисплей (экран монитора). Именно через эти устройства, главным образом, осуществляется диалог между человеком и ПК.

Процедура ввода с клавиатуры имеет следующий формат:

read(<список ввода>)

Здесь <список ввода> − это последовательность имен переменных, разделенных запятыми, а read (читать) – оператор обращения к стандартной процедуре ввода. Например:

read(a, b, c, d)

При выполнении этого оператора работа компьютера прерывается, после чего пользователь набирает на клавиатуре значения переменных a, b, c, d, отделяя их друг от друга пробелами. При этом вводимые значения высвечиваются на экране. В конце набора нажимают клавишу <Enter>. Ввод значений должен выполняться в строгом соответсвии с синтаксисом языка Паскаль. Например, при выполнении ввода в программе

var T: real;

J: integer;

K: char;

begin

read (T, J, K);

на клавиатуре следует набирать

253.98 100 G[Enter]

Если в программе имеется несколько операторов read, то данные для них вводятся потоком, т.е. после считывания значений переменных для одного оператора read данные для следующего оператора до окончания строки считываются из той же строки на экране, что и для предыдущего затем происходит переход на следующую строку. Например, при выполнении ввода в программе

var A, B: integer;

C, D: real;

begin

read (A, B);

read (C, D);

на клавиатуре следует набирать

18758 34 [Enter] 2.62E-02 1.54E+01 [Enter].

Оператор ввода с клавиатуры также может иметь вид

readln(<список ввода>)

Здесь readln (от readline) – считать строку. В отличие от оператора read после считывания последнего в списке значений для одного оператора readln данные для следующего оператора readln будут считываться с начала новой строки. Если в предыдущем примере заменить оператора read и readln, т. е. записать

readln (A, B);

readln (C, D);

ввод значений будет происходить из двух строк:

18758 34 [Enter]

2. 62E−02 1.54E+01 [Enter]

Оператор ввода на экран (обращение к стандартной процедуре вывода) имеет следующий формат:

write(<список вывода>)

Здесь элементами списка вывода могут быть выражения различных типов (в частности, константы и переменные), например:

write(234); {Выводится целая константа}

write(A, B– 2); {Выводится результат вычисления выражении}

write(X, Summa, Arg1, Arg2); {Выводятся значения переменных}

При выводе на экран нескольких чисел в строку они не отделяются друг от друга пробелами, об этом должен позаботиться программист. Пусть, например,

I= 1; J= 2; K= 3. Тогда при выполнении оператора

write(I, ′ ′, J,′ ′,K);

на экране получим следующую строку: 1 2 3. Причем после вывода последнего символа курсор останется в той же строке, и следующий ввод на экран будет начинаться с этой позиции курсора.

Процедура вывода на экране также может иметь вид:

writeln(<список вывода>)

Здесь writeln(от writeline) – записать строку. Действие этого оператора отличается от write тем, что после вывода последнего в списке значении происходит перевод курсора в начало следующей строки. Оператор writeln, записанный без параметров, выполняет перевод строки.

Пример.

Дана формула для вычисления значения выражения следующего вида:

Написать программу вычисления значения выражения.

Будем полагать, что x- переменная, значение которой вводится с клавиатуры, а a,b- константы, имеющие значения a=1,b=15.

Приведем текст программы:

program formula;

var x,y,a,b: real;

const a=1;b=15;

begin

writeln(‘x=’);

readln(x);

y:=(a+20*b)/sqr(x)*x*ln(2*x)-1/sqr(a-1);

writeln(‘y=’:10,y);

end.

Контрольные вопросы.

1.Использование и описание констант.

2.Использование и описание переменных.

3.Назначение оператора присваивания и правила записи арифметического выражения.

4.Правила записи операторов ввода и вывода.

Задания

Составить программу вычисления функции у для нескольких значений x при некоторых постоянных значениях a и b.

1.. 2.
3. 4.
5. 6.
7. 8.
9. 10.
11. 12.
13. 14.
15. 16.
17. 18.
19. 20.
21. 22.
23. 24.
25. 26.
27. 28.
29. 30.

Лабораторная работа №2.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: