Технические дисциплины - Информатика

1.Общая характеристика языка Паскаль

Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан американским ученым Никласом Виртом в 1971г. в качестве языка для обучения программированию. Базой при разработке явился язык Алгол.

Достоинства языка Паскаль:
1) относительная простота (т.к. разрабатывался с целью обучения программированию);
2) идеология языка Паскаль близка к современным методикам и технологиям программирования, в частности, к структурному программированию и нисходящему проектированию (метод пошаговой детализации) программ. Паскаль может использоваться для записи программы на различных уровнях ее детализации, не прибегая к помощи схем алгоритмов;
3) гибкие возможности в отношении используемых структур данных;
4) высокая эффективность программ;
5) наличие средств повышения надежности программ, включающих контроль правильности использования данных различных типов и программных элементов на этапах трансляции, редактирования и выполнения.

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

Грамматическое описание любого языка программирования включает в себя:

1. алфавит – набор основных символов языка, используемых при записи текста программы;
2. синтаксис – правила построения фраз языка;
3. семантику – смысловое значение фраз языка.

 

2.Основные элементы языка Паскаль

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

Язык Турбо Паскаль состоит приблизительно из 80 зарезервированных слов и специальных символов. Алфавит языка составляют буквы латинского алфавита, цифры, а также специальные символы, такие, например, как +, -, _. Специальными символами языка являются и некоторые пары символов. Как уже отмечалось, зарезервированные слова в языке Паскаль могут применяться только по своему прямому назначению, то есть в качестве имен операторов, названий операций и т. д. В табл. 1.1 приведен алфавитный список зарезервированных слов. В большинстве случаев овладение даже небольшой частью этого «словаря» достаточно для начала успешной работы по программированию на Паскале.

Таблица 1.1. Зарезервированные слова языка Паскаль

absolute

and

array

assembler

begin

break

case

const

constructor

continue

destructor

div

do

dpwnto

else

end

external

far

file

for

function

goto

if

implementation

in

inline

interface

interrupt

label

mod

near

nil

not

object

of

or

packed

private

procedure

program

public

record

repeat

set

shl

shr

string

then

to

type

unit

until

uses

var

virtual

while

with

xor

 

 

В дальнейшем мы разберем применение приведенных в данной таблице зарезервированных слов, а сейчас лишь кратко поясним смысл некоторых из них, наиболее часто используемых в программах на Паскале. Заголовки, то есть первые операторы программ и библиотечных модулей — это program и unit. Для описания переменных, констант и составных частей программы — подпрограмм-процедур и подпрограмм-функций — используются зарезервированные слова var, const, procedure, function. Операторы описания типов переменных, задаваемых пользователем, — это type, array, string, record...end, file of... . Слова, используемые для программирования составных операторов, а также начинающие и оканчивающие последовательность исполняемых операторов программы, — begin и end. Операторами, управляющими ходом выполнения программы (они так и называются — управляющие операторы), являются if-then...else, for...to...do, repeat...until, case...of...end, for...downto...do, while...do. В библиотечных модулях используются зарезервированные слова implementation, interface. Зарезервированные слова для обозначения арифметических и логических операций — div, mod, shl, shr, and, or, not и некоторые другие. В программах, написанных с использованием методов объектно-ориентированного программирования, применяются зарезервированные слова object, constructor, destructor, public и virtual.

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

Таблица 1.2. Одиночные и двойные специальные символы языка Паскаль

:=

Присваивание переменной (слева от символа) значения выражения (справа от символа)

;

Разделитель операторов в программе

( )

Скобки для арифметических и логических выражений

:

Разделитель в описаниях переменных и формате операторов вывода

..

Многоточие для списков

+,-,*,/

Бинарные операции (не только арифметические!)

=

Логическое равенство, элемент описания констант и типов

<>

Логическое неравенство

<=

Отношения «меньше чем» и «больше чем»

>=

Отношения «меньше или равно» и «больше или равно»

.

Конец программы или модуля, а также десятичная точка в константах вещественного типа

'

Ограничители константы строкового типа

{}

(* *)

Пары скобок для комментариев

,

Разделитель элементов списка

[ ]

Скобки для ссылки на элемент массива или указания диапазона значений индекса


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

 

3.Структура программы на языке Турбо Паскаль

 

Program P1; {заголовок, название программы} {±}

Uses………;{подключение внешних модулей с расширением *.tpu}{±}

Const……...; {описание констант} {±}

Type………; {задание типов} {±}

Var………..; {раздел объявления переменных}{±}

Function F1 ….; {описание функций} {±}

Procedure Pr1 ….; {описание процедур} {±}

 

Begin{начало основной программы} {+}

….. {тело основной программы} {±}

End. {конец основной программы} {+}.

 

 

4.Технология программирования

Включает пять технологических операций (этапов):

    1. Постановка задачи.
    2. Математическое описание.
    3. Алгоритм – структограмма.
    4. Написание текста программы.
    5. Отладка, получение результатов.

5.В ходе отладки программы приходится сталкиваться с тремя видами ошибок:
1. Синтаксические ошибки - текст программы не отвечает требованиям языка Паскаль. Такие ошибки выявляются сразу при попытке компиляции и запуска программы.
2. Ошибки периода выполнения программы (RUNTIME ERROR) – ошибки, возникающие при выполнении программы, когда текст программы формально записан правильно, но при выполнении программы в результате неблагоприятного стечения обстоятельств возникает ошибочная ситуация и компьютер не может продолжить работу (например, в случае деления на ноль).
3. Ошибки в алгоритме (семантические ошибки) - программа работает без сбоев, но результаты получаются неверные.

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

Перечислим ошибки, наиболее часто допускаемые начинающими программистами, и разъясним сообщения Турбо-Паскаля, выдаваемые им при выявлении этих ошибок в процессе компиляции текста программы:

Identifier expected - в этом месте программы должен находиться идентификатор (имя программного объекта). Возможно, программист пытался использовать в качестве идентификатора слово, зарезервированное Паскалем для других целей.
Unknown identifier - идентификатор (имя переменной, константы. процедуры и т.п.) не был упомянут в разделе описаний программы.
Duplicate identifier - попытка дважды описать один и тот же идентификатор.
Syntax error - синтаксическая ошибка, например строка символов не была заключена в кавычки.
Line too long - компилятор не может обрабатывать текст программы со строками длиннее 126 символов. Скорее всего, программист забыл поставить апостроф, закрывающий текстовую строку, записываемую в переменную или выводимую на экран.
Type identifier expended - не указан тип идентификатора.
Variable identifier expended - на этом месте в программе должна стоять переменная.
Error in type - объявление типа данных не может начинаться с этого символа.
Type mismath -

  1. ·  тип переменной, стоящей слева от знака присваивания, тличается от значения выражения, стоящего справа;
  2. ·  при обращении к процедуре типы формального и фактического параметров не совпадают;
  3. ·  переменная данного типа не может служить индексом массива.
    Begin expected - нужен begin.
    End expected - нужен end.
    Integer expression expected - требуется выражение типа integer.
    Boolean expression expected - требуется выражение типа boolean.
    Do expected - пропущено слово "Do".
    Of expected - пропущено слово "of".
    Then expected - пропущено слово "then".
    To expected - пропущено слово "to".
    String variable expected - требуется строковая переменная.
    Error in expression - данный символ не может участвовать в выражении таким образом.
    Division by zero - деление на ноль.
    Constant and case types do not math - тип меток и тип селектора в операторе CASE не соответствуют друг другу.
    Label not within current block - оператор GOTO не может ссылаться на метку, находящуюся вне текущего модуля.
    Label already defined - такая метка уже есть.
    Floating point overflow operation - величина вещественного числа вышла за пределы диапазона, допускаемого Паскалем (обычно при делении на ноль).
    Invalid procedure or function reference - неправильный вызов подпрограммы.

6.Понятие типа данных в Турбо Паскаль

Для обработки ЭВМ данные представляются в виде величин и их совокупностей. С понятием величины связаны такая важная характеристика, как ее тип.

Тип определяет:

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

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

Иерархия типов в языке Паскаль такая:

  • Простые
    • Порядковые
      • Целые
      • Логические
      • Символьные
      • Перечисляемые
      • Интервальные
    • Вещественные
  • Структуированные
    • Массивы
    • Строки
    • Множества
    • Записи
    • Файлы
  • Указатели

 

назад содержание вперед


Простые типы данных

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

Идентификатор

Длина (байт)

Диапазон значений

Операции

Целые типы

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,9x10-39 - 1,7x1038

+, -, /, *,
>=, <=, =, <>, <, >

single

4

1,5x10-45 - 3,4x1038

+, -, /, *,
>=, <=, =, <>, <, >

double

8

5x10-324 - 1,7x10308

+, -, /, *,
>=, <=, =, <>, <, >

extended

10

3,4x10-4932 - 1,1x104932

+, -, /, *,
>=, <=, =, <>, <, >

Логический тип

boolean

1

true, false

Not, And, Or, Xor,
>=, <=, =, <>, <, >

Символьный тип

char

1

все символы кода ASCII

+,
>=, <=, =, <>, <, >

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

 

Дополнительные сведения о типах данных..

Порядковые типы, выделяемые из группы простых типов, характеризуются следующими свойствами:

  • все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество;
  • к любому порядковому типу может быть применена стандартная функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
  • к любому порядковому типу могут быть применены стандартные функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
  • к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа.

В языке Паскаль введены понятия эквивалентности и совместимости типов. Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется одно из двух условий:

  • Т1 и Т2 представляют собой одно и то же имя типа;
  • тип Т2 описан с использованием типа Т1 с помощью равенства или последовательности равенств. Например:
·         type
·           T1 = Integer;
·           T2 = T1;
·           T3 = T2;

Менее строгие ограничения накладываются на совместимость типов. Так, типы являются совместимыми, если:

  • они эквивалентны;
  • являются оба либо целыми, либо действительными;
  • один тип - интервальный, другой - его базовый;
  • оба интервальные с общим базовым;
  • один тип - строковый, другой - символьный.

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

Имя_Типа(переменная или значение)

Напрмер, Integer('Z') представляет собой значение кода символа 'Z' в двухбайтном представлении целого числа, а Byte(534) даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения старший байт будет отброшен.

 

7.Вопрос. ДАННЫЕ И ИНФОРМАЦИЯ. КОНЦЕПЦИЯ ДАННЫХ. ПОНЯТИЕ СТРУКТУР ДАННЫХ. ИЕРАРХИИ СТРУКТУР ДАННЫХ

Под данными будем понимать представление фактов, идей, знании в формализованном виде, пригодном для обработки в некотором процессе. Информация — смысл, который приписывается данным посредством принятых соглашений. Обрабатываемые в программах данные фигурируют в качестве значений различных програм         мных объектов. Данные, которые зафиксированы и не могут быть изменены в процессе выполнения программы, являются значениями программных объектов, именуемых константами, остальные данные — значениями объектов, называемых переменными.

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

В отношении структур данных существуют следующие особенности

1)  всякое данное считается входящим в ту или иную структуру, самостоятельное данное рассматривается как простейшая, или тривиальная, структура;

2) элементом, или компонентой, структуры данных может быть не только тривиальная, но и нетривиальная структура, т. e. структуры данных обладают иерархическим характером;

3)  в некоторые классы структур могут объединяться данные разных типов.

Как следует из пп. 1) — 3), понятие «значения» трактуется достаточно широко — это вся совокупность значений, образующих структуру. Понятие «тип значения» также понимается широко: это и количество компонент в структуре, и тип каждой из них, и способ их объединения в структуру.

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

Вопрос.КОНЦЕПЦИЯ    ДЕЙСТВИЯ

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

Рассмотрим классификацию операторов языка):

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

 

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

 

Рисунок 1

Простые (скалярные) типы данных

К скалярным (scalar - простые) типам данных относят типы данных таких величин, значения которых не содержат составных частей.

Все простые данные имеют два характерных свойства: неделимость и упорядоченность их значений.

Целочисленные типы данных

Тип

Диапазон

Требуемая память (байт)

byte

0..255

1

shortint

-128..127

1

integer

-32768..32767

2

word

0..65535

2

longint

-2147483648..2147483647

4

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

Вещественные типы данных

Тип

Диапазон

Мантисса

Требуемая память (байт)

real

2.9*10E – 39..1.7*10E38

11-12

6

single

1.5*10E – 45..3.4*10E38

7-8

4

double

5.0*10E – 324..1.7*10E308

15-16

8

extended

1.9*10E – 4951..1.1*10E4932

19-20

10

comp

-2E+63+1..2E+63-1

10-20

8

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

Вещественные значения могут изображаться в форме с фиксированной точкой, например 7.32, 456.721 или 0.015, а также в форме с плавающей точкой, т.е. парой чисел вида <мантисса>Е<порядок> (7.32Е+00, 4.56721Е+02, 1.5Е-02).

Литерный (символьный) тип

Литерный (символьный) тип char определяется множеством значений кодовой таблицы ПЭВМ.

Каждому символу приписывается целое число в диапазоне от 0 до 255. Для размещения в памяти переменной литерного типа требуется один байт.

Булевский тип

Булевским типом называют тип данных, представляемый двумя значениями true (истина) и false (ложь). Он широко применяется в логических выражениях и выражениях отношения. Для размещения в памяти переменной булевского типа требуется 1 байт.

Пользовательские типы

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

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

Интервальный тип (диапазон)

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

Обе константы должны принадлежать одному из стандартных типов (тип real недопустим). Значение первой константы должно быть значительно меньше значения второй.

Например: 1..12 (номер месяца может принимать значения от 1 до 12) или ‘а’..’я’ (буквы русского алфавита – от а до я)

Перечисляемый тип

Перечисляемый тип (enumerated type) – тип данных, заданных списком принадлежащих ему значений.

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

Перечисляемый тип ограничен больше чем интервальный, он задается перечислением своих значений.

Например, в виде строковых констант: color=(red, blue, green, black). В приведенном примере создается новый (нестандартный) тип данных color. Переменные этого типа могут принимать всего 4 значения: red, blue, green, black. Такая возможность создания новых пользовательских типов данных имеется в языке Turbo Pascal.

 

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

Integer - целый тип, представляет собой подмножество множества целых чисел, определяемое конкретной реализацией. Во внутреннем представлении он занимает 2 байта, диапазон возможных значений - от -32768 до +32767, данные представляются точно.

Char - символьный тип, представляет собой набор символов, определяемый конкретной реализацией. Во внутреннем представлении он занимает 1 байт, множество значений этого типа фиксировано и упорядочено. Все символы считаются перенумерованными, начиная с нуля. Такой набор символов определен в каждой вычислительной сисеме. Он необходим, по крайней мере, для связи системы с внешним миром.
Константой символьного типа является один из допустимых символов, взятый в апострофы. Если апостроф сам является символом, то  апостроф, являющийся значением константы, записывается дважды, например   ‘7’ ,  ‘+’ , ‘F’ , ‘’’’ , ‘j’ , ‘?’ .

Boolean - логический тип, определяет диапазон логических значений, который содержит два элемента False (ложь) и True (истина). Во внутреннем представлении он занимает 1 байт.

Перечисляемый тип - задается перечислением тех значений, которые он может получать. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например:
Type  colors = (red, white, blue, black);

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

Пример:    Type month = 1 ..12;
lat = ’a’ .. ’z’;

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

 

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

В зависимости от типа значения выражения можно разделить на три вида:

  • численные (арифметические);
  • логические;
  • символьные.

Рассмотри правила построения выражений каждого из этих видов.

Численные (арифметические) выражения

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

+

сложение (унарный плюс)

-

вычитание (унарный минус)

*

умножение

/

деление

div

целочисленное деление

mod

остаток от целочисленного деления

Операция возведения в степень в языке не предусмотрена.

В сложных выражениях порядок выполнения операций определяется правилами приоритета:

I-й (высший) приоритет

унарные минус и плюс

II-й приоритет

* и  /

III-й приоритет

+ и  -

Для изменения порядка выполнения операций используют круглые скобки ( ).

Тип значения выражения зависит типов операндов и от выпоняемой операции.

  • Если все операнды целочисленные, то операции сложения, вычитания, умножения, целочисленного деления дают значение выражения также целочисленного типа. Операция деления "/" дает вещественный результат! Если в выражение присутствуют целочисленные операнды, имеющие различные типы (например, Byte и Integer), то значение выражения будет иметь тип с наибольшим диапазоном (в данном случае Integer).
  • Если среди операндов хоть один имеет вещественный тип, то значение выражения будет также вещественным.

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

Вызов функции

Тип аргумента

Тип результата

Назначение

Abs(x)

целый
вещественный

целый вещественный

Абсолютное значение x

Pi

-

вещественный

Ззначение числа ПИ

Sin(x)

целый
вещественный

вещественный

Синус x радиан

Cos(x)

целый
вещественный

вещественный

Косинус x радиан

ArcTan(x)

целый
вещественный

вещественный

Арктангенс x радиан

Sqrt(x)

целый
вещественный

вещественный

Квадратный корень из x>=0

Sqr(x)

целый
вещественный

целый вещественный

Ззначение квадрата x

Exp(x)

целый
вещественный

вещественный

Значение e в степени x

Ln(x)

целый
вещественный

вещественный

Натуральный логарифм x, x>0

Trunc(x)

целый 
вещественный

LongInt

Целую часть значения x

Frac(x)

целый 
вещественный

вещественный

Дробную часть значения x

Int(x)

целый 
вещественный

вещественный

Целую часть значения x

Round(x)

целый 
вещественный

LongInt

Округляет x до ближайшего целого

Random

-

вещественный

Случайное число от 0 до 1

Random(X)

Word

Word

Случайное число от 0 до Х

Odd(x)

целый

логический

Проверяет нечетность значения x

 

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

x+5        (a+b)/n      a+b/n       sin(x)*sqr(x)

1/(1+abs(sin(x)))    Trunc((max-min)/dx)

23.05*(x-0.01)-sqrt(x+1)

Логические выражения

Условное выражение - совокупность переменных и констант простых типов, объединеных знаками операций сравнения. Результат вычисления условного выражение - одно из двух логических значений типа Boolean: True (истина) или False (ложь).

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

<

меньше

>

больше

<=

меньше или равно

>=

больше или равно

=

равно

<>

не равно

Типы операндов должны быть совместимыми по присваиванию.

Примеры условных выражений (условий):

x<2     ch='Y'    a+b<>0    sin(x)>=0.5

Важно: При сравнении вещественных чисел следует помнить, что в следствие неточности их представления в памяти компьютера (в виду неизбежности округления) стоит избегать попыток определения строгого равенства двух вещественных значений. Есть шанс, что равенство окажется ложным, даже если на самом деле это не так. Например, выражение x = (2.23*x/2.23) формально является истинным, но из-за ошибок округления в вещественном типе может оказаться ложным.

Логическое выражение - это совокупность переменных и констант логического типа, а также условных выражений, объединенных знаками логических операций. Операндами логических операций могут выступать другие логические выражения. Результат вычисления логического выражение, как и в случае условных выражений, - одно из двух логических значений типа Boolean: True (истина) или False (ложь).

В Паскале предусмотрены четыре логические операции:

Приоритет

Операция

Название

I-й

NOT

логическое отрицание

II-й

AND

логическое умножение

III-й

OR

логическое сложение

III-й

XOR

логическое исключающее сложение

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

L1

L2

not L1

L1 and L2

L1 or L2

L1 xor L2

False

False

True

False

False

False

False

True

True

False

True

True

True

False

False

False

True

True

True

True

False

True

True

False

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

(x>=0)and(x<=10)     (ch='y')or(ch='Y')    (x=5)or(y=1)

(x+1>0)and(x+1<10) or (y>0)and(y<2)

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

 

Символьные выражения

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

Оператор присваивания придает переменной конкретное значение, например: x:=2; y:=5.
Присваивание заполняет участок памяти, отведенный для переменной, новым значением, одновременно уничтожая старое. Поскольку задача любой программы - получить в определенном месте памяти нужное значение, редкая программа обходится без оператора присваивания.

Присваивать можно значение другой переменной или результат вычисления арифметического выражения.
a:=b; a:=b+c; x:=y+2-z.

Общая схема оператора присваивания такова: имя := выражение

2. Оператор ввода данных.

Мало программ обходятся без ввода данных и совсем нет таких, которые не выводят полученные результаты.
Ввод данных с клавиатуры дисплея выполняется оператором READ (список переменных), где список переменных - последовательность имен переменных, разделенных запятыми.

При выполнении оператора READ программа останавливается и ждет, пока информация не будет введена с клавиатуры. Вводимая информация разделяется пробелами или нажатием клавиши "Enter". Заканчивают ввод всегда клавишей Enter.

Дополнительный оператор ввода - READLN (список переменных).
После ввода данных происходит переход на следующую строку.

3. Оператор вывода данных.

Вывод данных на экран дисплея выполняется оператором WRITE (список печати)
Элементами списка могут быть: переменные, числа, выражения, текст, заключенный ' ', элементы списка отделяются друг от друга запятой.

Оператор WRITELN отличается от WRITE тем, что после вывода всех значений переводит курсор в начало следующей строки.

Примеры.

  1. WRITE('Ответ=', Y)
  2. WRITE('Ответ=', 2*3.14/(1.34+56.3))

    В операторе вывода можно задать формат вывода.
    WRITE(X:N:M)
    x- переменная вещественного типа
    n- выражения целого типа, характеризующие ширину поля вывода
    m-число будет выводиться с m знаками после запятой

    Примеры.
  3. WRITE('A=', A:2, 'B=',B:3,'C=',C:1)
  4. WRITELN(A, B); WRITE(C)
  5. WRITELN(A<B:7)
  6. WRITE(Y:5:3, X:7:2)]

 

1. УСЛОВНЫЙ ОПЕРАТОР
 
      Условный оператор позволяет проверить некоторые условия и в
зависимости от результата проверки выполнить то или иное действие.
Условный оператор - это средство ветвления вычислительного процесса.
      Базовая структура алгоритма типа развилки, имеет два вида: полная и
неполная.
   Вид
                Блок-схема                 Общий вид оператора:
развилки
 
Полная
   +                     -                IF <P> THEN <S1> ELSE <S2>;
            P                         где IF (если) THEN (то) ELSE (иначе) –
  S1                     S2               служебные слова языка Паскаль; Р –
                                          некоторое логическое условие; S1,
                                          S2 – любые операторы языка.
 
                а)
Не полная
    +                    -                     IF <P> THEN <S1>;
            P
 
  S1
 
 
                б)
  +      P           -                         IF < P > THEN <S1>;
                                      где P – некоторое логическое условие
                     S1                   (отрицание     условия   P   или
                                          противоположное условию P);
 
 
      Развилка может иметь вложенную структуру, любой степени
вложенности. Любой из операторов S1 или S2 может быть условным, причём
не обязательно в нём будет присутствовать часть ELSE <S…>. Подобная
неоднозначность решается следующим образом: любая встретившаяся часть
 
                                                                           4
 
 
ELSE соответствует ближайшему к ней «сверху» части THEN условного
оператора.
       При необходимости выполнить в условном операторе несколько
операторов их заключают в операторные скобки BEGIN - END, в противном
случае в условном операторе выполняется только первый после ключевого
слова THEN или ELSE оператор.
 
                2. ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА
 
       В программе можно осуществить переход на помеченный оператор
(не зависимо от какого либо условия), прервав последовательное выполнение
программы. Для этого служит простой оператор безусловного перехода.
       Общий вид оператора: GOTO <метка>;
       Метка назначается пользователем и представляет собой целое число
без знака, содержащее не более четырёх цифр или обычный идентификатор и
отделяется от оператора двоеточием.
       Например: GOTO 120;
                   GOTO 250;
       Используемые в программе метки должны быть описаны в разделе
описания меток. Для приведённого примера раздел меток выглядит так:
LABEL 120, 250;
       Язык ПАСКАЛЬ является структурированным, поэтому особой
необходимости в операторе безусловного перехода нет. Использовать его
следует в редких случаях, например, для выхода к концу программы или
процедуры в случае неправильного задания данных или выхода из цикла.
Неправильное использование оператора GOTO усложняет программу за счёт
многократных переходов вперёд или назад по программе, затрудняет её
чтение, отладку и проверку на правильность.
 
 
 
. ОПЕРАТОР ВАРИАНТА
 
        Условный оператор позволяет при выполнении программы выбирать
  одно из двух возможных действий. Если же необходимо сделать много
 
                                                                                6
 
 
    взаимоисключающих проверок, то удобнее воспользоваться оператором
    выбора варианта.
          Общий вид оператора варианта:
          CASE <ключ выбора> OF
                <список меток>: <оператор(ы)>;
                     …
                <список меток>: <оператор(ы)>;
          ELSE <оператор(ы)>
          END;
 
           Ключ выбора (селектор) представляет собой выражение скалярного
    типа (но не вещественного). Выполнение оператора варианта начинается с
    вычисления значения ключа выбора. Затем для использования выбирается
    оператор, одна из меток которого совпадает с полученным значением. После
    выполнения этого оператора (он может быть простым или составным)
    управление передаётся на оператор, следующий за оператором варианта.
    Если же значение ключа выбора не совпало ни с одной из меток, управление
    передаётся оператору, стоящему за словом Else. Часть Else может
    отсутствовать.
 
 
 

Составной оператор

Назначение:

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

Формат:

{   <Оператор1>
    <Оператор2>
    . . .
   <ОператорN>
}

Аргументы

<Оператор>

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

Пример:

if(x + y < z)
{   x = x + 3;
    y = y - 3;
}

 

3. Операторы повторений

Цикл с предопределенным числом повторений.

For <переменная цикла>:=<начальное значение> To(DownTo) <конечное значение> Do <блок операторов>

Переменная должна быть целого или перечислимого типа. При исполнении цикла переменная цикла изменяется от начального до конечного значения с шагом 1. Если стоит to, то переменная увеличивается, если downto – уменьшается.

Условия выполнения цикла проверяются перед выполнением блока операторов. Если условие не выполнено, цикл For не выполняется. Следующая программа подсчитывает сумму чисел от 1 до введенного:

Program Summa;
Var
I, N, S: Integer;
Begin
Write('N = ');
Readln(N);
S:=0;
For I:=1 To N Do
S:=S + I;
Writeln ('Cумма = ', S)
End.

Условный цикл с проверкой условия перед исполнением блока операторов.

While <условие> Do <блок операторов>

Блок операторов будет исполняться, пока условие имеет значение true. Необходимо, чтобы значение условия имело возможность изменения при исполнении блока операторов, иначе исполнение цикла не закончится никогда (в DOS это приведет к зависанию компыютера). Если условие зарание ложно, блок операторов не исполнится ни разу.

Найдем машинное "эпсилон" для переменной типа Real:
Program Epsilondetect;
Var
Epsilon: Real;
Begin
Epsilon:=1;
While Epsilon + 1 > 1 Do
Epsilon: = Epsilon/2;
Writeln ('Эпсилон = ', Epsilon);
End.

Условный цикл с проверкой после выполнения блока операторов.

Repeat <тело цикла> Until <условие>

Блок операторов независимо от значения условия будет выполнен хотябы один раз. Цикл заканчивается, если после очередного исполнения блока операторов условие имеет значение true.

Пример: программа запрашивает ввод одного символа и выводит его ASCII - код, пока не будет введен пустой символ:

Program Code;
Const
Cr = 13;
Var
Ch:Char;
Begin
Repeat
Readln (Ch);
Writeln (Ch,' = ', Ord (Ch));
Until Ord (Ch) = Cr
End.

 

 

 

 

 

 

 

Добавить комментарий


Защитный код
Обновить