ЯЗЫК ПАСКАЛЬ

ГЛАВНАЯ

КАРТА САЙТА

ГОСТЕВАЯ КНИГА

ОБРАТНАЯ СВЯЗЬ

Операции

ОПЕРАЦИИ ОТНОШЕНИЯ

(Операция Действие Типы операндов Тип результата )
= Равно Совместимый простой, указатель, множественный строковый или упакованный строковый Булевский
<> Не равно Совместимый простой, указатель, множественный строковый или упакованный строковый Булевский
< Меньше чем Совместимый простой, указатель, множественный строковый или упакованный строковый Булевский
> Больше чем Совместимый простой, указатель, множественный строковый или упакованный строковый Булевский
<= Меньше или равно Совместимый простой, указатель, множественный строковый или упакованный строковый Булевский
>= Больше или равно Совместимый простой, указатель, множественный строковый или упакованный строковый Булевский
=> Надмножество Множества совместимых типов Булевский
<= Подмножество Множества совместимых типов Булевский
in Элемент множества Левый операнд: любой перечислимый t; правый: множество, совместимое с t Булевский


операции

+___сложение
-____вычитание (смена знака)
*____умножение
/ ____деление
(A)DIV(B)___ целая часть А/В
(A)MOD(B)___остаток от А/В
ABC(X)___ абсолютное значение Х
SQR(X)___ Х в квадрате
SUCC(X)___X+1
PRED(X)___Х-1
SIN(X)___ синус
COS(X)___ косинус
ARCTAN(X)___ арктангенс
LN(X)___ логарифм
EXP(X)___ экспонента
SQRT___ корень квадратный
ODD(X)___четность (TRUE) и нечетность (FALSE)
INC(X)___ X:=X+1
INC(X,N)___X:=X+N
DEC(X)___ X:=X-1
DEC(X,N)___X:=X-N
FRAC(X)___ возращение дробной части
INT(X)___ возращение целой части
PI___возращает значение Пи действительного числа
TRUNC(X)___ отсечение дробной части
ROUND(X)___ округление дробной части
ORD(C)___ определяет порядковый номер символа С
CHR(K)___ определяет по порядковому номеру К

ЛОГИЧЕСКИЕ ОПЕРАЦИИ

(Операция Действие Типы операндов Тип результата )
not Отрицание (битовое) Целый Целый
and И (битовое) Целый Целый
or ИЛИ (битовое) Целый Целый
xor Исключающее ИЛИ (битовое) Целый Целый
shl Сдвиг влево Целый Целый
shr Сдвиг вправо Целый Целый

ОПЕРАТОРЫ

1. Как написать алгоритм

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



Пример: Если рабочий день закончился, то можно идти домой, иначе необходимо продолжать работать.



Любой язык должен предоставить возможность повторять команды без многократного их написания.



Пример: Для каждого числа от 1 до 100 делаем:

Находим сумму его делителей.
Печатаем найденную сумму.


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




Записываем алгоритм на русском языке.


Выделяем в полученной записи команды.


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

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



Ввести число А.
Ввести число В.
Вычислить С=(А+В)/2.
Вывести значение С.


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



read(A);

read(B);

C:=(A+B)/2;

write(C);



* Примечание

Буквы A,B,C обозначают переменные величины, то есть величины, чьё значение можно изменять. Записывать имена переменных большими буквами совершенно необязательно. Каждый оператор заканчивается точкой с запятой. Операторы в программе на языке Паскаль не нумеруются и их можно располагать совершенно произвольным образом, компьютер же будет их читать слева направо и сверху вниз.

2. Оператор присваивания

Оператор присваивания в языке Паскаль имеет следующую форму:


Переменная : = Арифметическое или логическое выражение




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


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


Необходимо следить за интервалом значений, в который попадает вычисляемое значение. Это следует из того, что каждый тип имеет вполне определенный интервал значений. Если ваше выражение даст значение за пределами этого интервала, то в ходе работы программы возникнет ошибка, которую компилятор не сможет обнаружить. Например целые числа определены в интервале от -32768 до 32767

3. Условный оператор

Пример. Ввести множество чисел и определить, сколько среди них положительных.


Идея решения следующая: мы заведем переменную, которая будет играть роль счетчика положительных чисел, и каждый раз, когда вводимое число окажется положительным, мы будем значение этого счетчика увеличивать на единицу. А для того, чтобы иметь возможность так делать, нам нужна конструкция, которая позволяла бы выполнять определённую команду только в том случае, если некоторое условие окажется истинным.



Наш алгоритм будет выглядеть следующим образом:



Введем N

s=0

Для всех i от 1 до N делать

Начало

Ввести Число

Если Число > 0 То s=s+1

Конец

Вывести s

При записи программы по данному алгоритму возникнет серьезная проблема. Нам необходимо циклически выполнять две команды: ввод числа и проверка на положительность. Но мы уже знаем, что после слова "DO" можно записывать только одну команду. Выход заключается в введении сложного оператора. Сложный оператор - это группа операторов, записанных между словами "Begin" и "End". Такой оператор воспринимается компьютером как один оператор, и его можно ставить, например, в цикл. С учетом этого наша программа будет записана следующим образом:



read(n);

s:=0;

for i:=1 to n do

begin

read(a);

if a>0 then s:=s+1;

end;

write(s);



Английское слово "if" переводится как слово "если", а оператор: if a>0 then s:=s+1; называется условным оператором. Устройство этого нового оператора таково: после слова "if" записывается условие, а после слова "then" записывается один оператор (можно сложный), который исполняется, если условие оказывается истинным. Условный оператор имеет ещё одну форму:



if условие then оператор else оператор;



В этой форме, если условие истинно, то исполняется оператор, записанный после слова "then", а если условие ложно, то выполняется оператор, записанный после слова "else".



*Примечание:

Те, кто только начал практиковаться в программировании на Паскале, часто допускают грубую ошибку в условном операторе. Рассмотрим пример:



If t=5 then t:=6; else t:=8;



В записанном операторе после t:=6 стоит точка с запятой. Ставят её из тех соображений, что любой оператор в языке Паскаль завершается точкой с запятой. Но завершается так не оператор, а логически законченная конструкция. Здесь на t:=6 конструкция условного перехода ещё не завершена, и точка с запятой здесь не к месту. Ставить её нужно только после операторов, следующих за словом "else". Следовательно, правильная конструкция будет записываться следующим образом:



If t=5 then t:=6 else t:=8;

4. Конструкция CASE

Рассмотрим следующую задачу: Пусть две величины L и U могут принимать только три значения, причем эти величины взаимосвязаны, то есть величина U принимает свои значения в зависимости от того, какое значение принимает величина L. Предположим, что взаимосвязь устанавливается следующим образом: При L=1 U=4; При L=4 U=-5; при L=0 U=11; Предположим далее, что величина L вводится с клавиатуры, а величина U вычисляется в зависимости от введенного L. Запишем каким образом это можно реализовать на языке Паскаль:



program example;

var

U,L:integer;

begin

read(L);

case L of

1: U:=4;

4: U:=-5;

0: U:=11;

end; { Этот end завершает выполнение CASE }

end.

Рассмотрим ещё одну интересную ситуацию. Предположим, что взаимосвязь L с U немного усложнилась. Старые значения связаны так же, как и раньше, но теперь L может принимать любые значения, и, если L принимает значение, отличное от уже описанных, то U=20; Опишем эту ситуацию с помощью конструкции CASE.



program example;

var

U,L:integer;

begin

read(L);

case L of

1: U:=4;

4: U:=-5;

0: U:=11;

else U:=20;

end; { Этот end завершает выполнение CASE }

end.

При исполнении этой конструкции, если L примет значение, отличное от 1, 4, 0, то U примет значение 20. Возможна и такая структура оператора, при которой U будет принимать одно и то же значение при различных L. Приведём пример:



program example;

var

U,L:integer;

begin

read(L);

case L of

1,5,8: U:=4;

4,7: U:=-5;

0,3: U:=11;

else U:=20;

end; { Этот end завершает выполнение CASE }

end.

История языка Типы данных Алфавит Программа Операци и операторы
Циклы Процедуры и функции Сообщения об ошибках Примеры программ Гостевая книга

© МосквичЁв

Hosted by uCoz