Составление программы на языке программирования. Отладка и тестирование программы

Вид материалаДокументы

Содержание


3.5. Арифметические операции, функции, выражения. Арифметический оператор присваивания
Операции над данными
Арифметическое выражение
3.6. Ввод с клавиатуры и вывод на экран
Форматы вывода.
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   21

3.5. Арифметические операции, функции, выражения. Арифметический оператор присваивания


К арифметическим типам данных относятся группы вещественных и целых типов. К ним применимы арифметические операции и операции отношений.

Операции над данными бывают унарными (применимые к одному операнду) и бинарными (применимые к двум операндам). Унарная арифметическая операция одна. Это операция изменения знака. Ее формат:



Бинарные арифметические операции стандартного Паскаля описаны в табл. 3.3. В ней I обозначает целые типы, R — вещественные типы.

Таблица 3.3



К арифметическим величинам могут быть применены стандартные функции Паскаля.


Функция выступает как операнд в выражении. Например, в следующем операторе присваивания



операндами являются три функции: sin, ln, cos. Их запись такая же, как в математике. Аргументы называются фактическими параметрами и являются в общем случае выражениями арифметического типа. Аргументы записываются в круглых скобках. Результат вычисления функции — величина соответствующего типа.

Табл. 3.4 содержит описания математических стандартных функций Турбо Паскаля.

Таблица 3.4



Арифметическое выражение задает порядок выполнения действий над числовыми величинами. Арифметические выражения содержат арифметические операции, функции, операнды, круглые скобки. Одна константа или одна переменная — простейшая форма арифметического выражения.

Например, запишем по правилам Паскаля следующее математическое выражение:



На Паскале это выглядит так:



Для того чтобы правильно записывать арифметические выражения, нужно соблюдать следующие правила:

1. Все символы пишутся в строчку на одном уровне. Проставляются все знаки операций (нельзя пропускать знак умножения).

2. Не допускаются два следующих подряд знака операций (нельзя A+-B; можно А+(-B)).

3. Операции с более высоким приоритетом выполняются раньше операций с меньшим приоритетом. Порядок убывания приоритетов:

• вычисление функции;

• унарная операция смены знака (-);

• *, /, div, mod;

• +, -.

4. Несколько записанных подряд операций одинакового приоритета выполняются последовательно слева направо.

5. Часть выражения, заключенная в скобки, вычисляется в первую очередь. (Например, (A+B) * (C—D) — умножение производится после сложения и вычитания.)

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

Пример. Цифрами сверху указан порядок выполнения операций:



Данное арифметическое выражение соответствует следующей математической формуле:



В Паскале нет операции или стандартной функции возведения числа в произвольную степень. Для вычисления xy рекомендуется поступать следующим образом:

• если у — целое значение, то степень вычисляется через умножение; например, х3 → х ∙ х ∙ х; большие степени следует вычислять умножением в цикле;

• если у — вещественное значение, то используется следующая математическая формула: хy = eyln(x).

На Паскале это будет выглядеть так:



Очевидно, что при вещественном у не допускается нулевое или отрицательное значение х. Для целого у такого ограничения нет.

Например,



На Паскале это будет так:



Выражение имеет целый тип, если в результате его вычисления получается величина целого типа. Выражение имеет вещественный тип, если результатом его вычисления является вещественная величина.

Арифметический оператор присваивания имеет структуру, представленную на рис. 17.



Например:



Порядок выполнения оператора присваивания нами уже рассматривался. Следует обратить особое внимание на следующее правило: типы переменной и выражения должны быть одинаковыми. Исключение составляет случай, когда выражение имеет целый тип, а переменная — вещественный.

3.6. Ввод с клавиатуры и вывод на экран


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

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

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

Read()

где <список ввода> — это последовательность имен переменных, разделенных запятыми. Слово read переводится как читать. (Точнее говоря, Read — это оператор обращения к стандартной процедуре ввода.)

Например,



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

Пример:



Набираем на клавиатуре:



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

Пример:



Набираем на клавиатуре:



Другой вариант оператора ввода с клавиатуры имеет вид:



Здесь слово ReadLn означает read line — читать строку. Этот оператор отличается от Read только тем, что после считывания последнего в списке значения для одного оператора ReadLn данные для следующего оператора будут считываться с начала новой строки. Если в предыдущем примере заменить операторы Read на ReadLn:



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



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



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

Пример:



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

Программист сам должен позаботиться о таком разделении. Пусть, например, I = 1; J = 2, К = 3. Тогда, написав в программе



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

Второй вариант процедуры вывода на экран:



Слово WriteLn — write line — означает писать строку. Его действие отличается от оператора Write тем, что после вывода последнего в списке значения происходит перевод курсора к началу следующей строки. Оператор WriteLn, записанный без параметров, вызывает перевод строки.

Форматы вывода. В списке вывода могут присутствовать указатели форматов вывода (форматы). Формат определяет представление выводимого значения на экране. Он отделяется от соответствующего ему элемента двоеточием. Если указатель формата отсутствует, то машина выводит значение по определенному правилу, предусмотренному по умолчанию.

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

I, Р, Q — целочисленные выражения;

R — выражение вещественного типа;

В — выражение булевского типа;

Ch — символьная величина;

S — строковое выражение;

# — цифра;

* — знак «+» или «—»;

_ — пробел.

Форматы процедуры Write

I — выводится десятичное представление величины I, начиная с позиции расположения курсора:



I:Р— выводится десятичное представление величины I в крайние правые позиции поля шириной Р:



R — в поле шириной 18 символов выводится десятичное представление величины R в формате с плавающей точкой. Если R ≥ 0,0, используется формат _#.##########Е*##. Если R < 0,0, то формат имеет вид _-#.##########Е*##:



R:Р — в крайние правые позиции поля шириной Р символов выводится десятичное представление значения R в нормализованном формате с плавающей точкой. Минимальная длина поля вывода для положительных чисел составляет 7 символов, для отрицательных — 8 символов. После точки выводится по крайней мере одна цифра:



R:P:Q — в крайние правые позиции поля шириной Р символов выводится десятичное представление значения R в формате с фиксированной точкой, причем после десятичной точки выводится Q цифр (0 ≤ Q ≤ 24), представляющих дробную часть числа. Если Q = 0, то ни дробная часть, ни десятичная точка не выводятся. Если Q > 24, то при выводе используется формат с плавающей точкой: