Смекни!
smekni.com

Первоначальные сведения о программировании на языке Pascal (стр. 1 из 2)

Работа с величинами. Ввод-вывод. Выражения. Линейные алгоритмы

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

Итак, с понятием величины связаны следующие характеристики (атрибуты):

имя — это ее обозначение и место в памяти;

тип — множество допустимых значений и множество применимых операций к ней;

значение — динамическая характеристика, может меняться многократно в ходе исполнения алгоритма. Во время выполнения алгоритма в каждый конкретный момент величина имеет какое-то значение или не определена.

Постоянной называется величина, значение которой не изменяется в процессе исполнения алгоритма, а остается одним и тем же, указанным в тексте алгоритма. Переменной называется величина, значение которой меняется в процессе исполнения алгоритма.

Тип выражения определяется типами входящих в него величин, а также выполняемыми операциями. В языке Pascal тип величины задают заранее, т.к. все переменные, используемые в программе, должны быть объявлены в разделе описания с указанием их типа.

Различают переменные следующих простых типов: целые (Integer, Byte, ShortInt, Word, LongInt), вещественные (Real, Comp, Double, Single, Extended), логический (Boolean), символьный (Char), перечисляемый, диапазонный.

Вообще, иерархия типов в языке Pascal следующая:

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

Описание переменной: имя переменной (идентификатор) : тип;

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

Var D, C, N : Integer;

LogPer : Boolean;

A, B : Real;

K : Char;

Тип переменной определяет диапазон допустимых значений, принимаемых величинами этого типа; набор операций, допустимых над данной величиной и объем памяти, отводимой под эту переменную.

Каждый тип имеет свой идентификатор.

Идентификатор Длина, байт Диапазон (множество) значений Операции
Целые типы
integer 2 –32768..32767 +, –, /, *, Div, Mod, >=, <=, =, <>, <, >
byte 1 0..255 +, –, /, *, Div, Mod, >=, <=, =, <>, <, >
word 2 0..65535 +, –, /, *, Div, Mod, >=, <=, =, <>, <, >
shortint 1 –128..127 +, –, /, *, Div, Mod, >=, <=, =, <>, <, >
longint 4 –2147483648..2147483647 +, –, /, *, Div, Mod, >=, <=, =, <>, <, >
Вещественные типы
real 6 2,9Ч10–39 — 1,7Ч1038 +, –, /, *, >=, <=, =, <>, <, >
single 4 1,5Ч10–45 — 3,4Ч1038 +, –, /, *, >=, <=, =, <>, <, >
double 8 5Ч10–324 — 1,7Ч10308 +, –, /, *, >=, <=, =, <>, <, >
extended 10 3,4Ч10–4932 — 1,1Ч104932 +, –, /, *, >=, <=, =, <>, <, >
Логический тип
Boolean 1 true, false Not, And, Or, Xor, >=, <=, =, <>, <, >
Символьный тип
char 1 все символы кода ASCII +, >=, <=, =, <>, <, >

Обмен информацией с ЭВМ предполагает использование определенных средств ввода-вывода. В ЭВМ основным средством ввода является клавиатура, вывода — дисплея.

Процедура, которая в режиме диалога с клавиатуры присваивает значение для переменной величины, называется процедурой ввода.

В языке Pascal эта команда выглядит следующим образом:

Read(список переменных);

Например,

Var

A : Real; B : Integer; C : Char;

Begin

Read(A, B, C)

End.

Читается: “Ввести вещественную А, целую В и символьную С”.

Как только в программе встречается вызов процедуры Read, ЭВМ приостанавливает выполнение этой программы и ждет, пока пользователь введет с клавиатуры соответствующие значения, которые по очереди будут присваиваться переменным, перечисленным в списке ввода. Значения вводимых данных одновременно отображаются на экране дисплея. После нажатия клавиши enter, когда все переменные примут свои значения из входного набора данных, определенного пользователем, выполнение программы продолжается с оператора, следующего за Read.

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

Примеры ввода данных с помощью процедуры ReadLn:

ReadLn(A, B, C);

ReadLn(X);

ReadLn(LogPer);

Процедура, которая выводит содержимое переменных на экран, называется процедурой вывода на экран.

В Pascal эта команда выглядит следующим образом

Write (список констант и/или переменных, разделенных запятой)

Например Write ('Выходное значение: ', C).

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

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

Примеры вывода данных:

Write(A, B, C);

WriteLn('Корнем уравнения является ', X);

WriteLn(LogPer);

Для управления размещением выводимых значений процедуры Write и WriteLn используются с форматами. Под форматом данных понимается расположение и порядок кодирования отдельных полей элементов данных.

Процедура вывода с форматом для целого типа имеет вид:

WriteLn(A : N, B : M, C : L);

Здесь N, M, L — выражения целого типа, задающие ширину поля вывода значений.

При выводе вещественных значений оператор Write(R) без указания формата выводит вещественное R в поле шириной 18 символов в форме с плавающей запятой в нормализованном виде. Для десятичного представления значения R применяется оператор с форматами вида WriteLn(R : N : M). В десятичной записи числа R выводится M (0 Ј M Ј 24) знаков после запятой, всего выводится N знаков.

Примеры:

WriteLn(N : 4);

WriteLn(K : 10 : 5, S : 7 : 3);

Общая структура программы на Pascal такова:

Program имя программы; {заголовок}

Const Константа1 = значение; {объявление констант} {раздел описаний}

Константа2 = значение;

...

КонстантаN = значение;

Type ...; {объявление типов}

Var СписокПеременных1 : Тип; {описание переменных}

СписокПеременных2 : Тип;

...

СписокПеременныхN : Тип;

Label СписокМеток;

Function ...

Procedure ...

Begin

{разделоператоров}

End.

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

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

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

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

X := (Y + Z) / (2 + Z * 10) - 1/3;

LogPer := (A > B) And (C <= D);

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

Операнд 1 Операнд 2 Результат
Integer Integer Integer
Integer Real Real
Real Integer Real
Real Real Real

Для операции деления тип результата в зависимости от типа операнда будет таким:

Операнд 1 Операнд 2 Результат
Integer Integer Real
Integer Real Real
Real Integer Real
Real Real Real

В Pascal есть операции целочисленного деления и нахождения остатка от деления. При выполнении целочисленного деления (операция DIV) остаток от деления отбрасывается.

Например, 15 div 3 = 5; 18 div 5 = 3; 123 div 10 = 12, 7 div 10 = 0.

С помощью операции MOD можно найти остаток от деления одного целого числа на другое.

Например, 15 mod 3 = 0; 18 mod 5 = 3; 123 mod 10 = 3, 7 mod 10 = 7.

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

Порядок действий при вычислении значения выражения:

1) вычисляются значения в скобках;

2) вычисляются значения функций;

3) выполняется унарные операции (унарный минус — смена знака);

4) выполняются операции умножения и деления (в том числе целочисленного деления и нахождения остатка от деления);

5) выполняются операции сложения и вычитания.

Встроенные математические функции языка Pascal

Математическая запись Запись на Pascal Назначение
cos x cos(x) Косинус x радиан
sin x sin(x) Синус x радиан
ex exp(x) Значение e в степени x
[x] trunc(x) Целая часть числа x
|x| abs(x) Модуль числа x
x2 sqr(x) Квадрат числа x
sqrt(x) Квадратный корень из x
{x} frac(x) Дробная часть x
arctg x arctan(x) Арктангенс числа x
ln x ln(x) Натуральный логарифм x
p Pi Число p

Возведение в степень (кроме возведения в квадрат и возведения в степень числа e) отсутствует. Для возведения в произвольную степень можно воспользоваться очевидным равенством: xy=ey ln x. Для возведения числа в натуральную степень можно написать собственную функцию. Например,